Imported Upstream version 7.86.0 23/285823/1 upstream/7.86.0
authorSeonah Moon <seonah1.moon@samsung.com>
Wed, 21 Dec 2022 01:55:45 +0000 (10:55 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Wed, 21 Dec 2022 01:56:12 +0000 (10:56 +0900)
Change-Id: I69742b17b658f837c72674c476b7a93c6965b2dc

2181 files changed:
CHANGES
CMake/CMakeConfigurableFile.in
CMake/CurlSymbolHiding.cmake
CMake/CurlTests.c
CMake/FindBearSSL.cmake
CMake/FindBrotli.cmake
CMake/FindCARES.cmake
CMake/FindGSS.cmake
CMake/FindLibPSL.cmake [new file with mode: 0644]
CMake/FindLibSSH2.cmake
CMake/FindMSH3.cmake [new file with mode: 0644]
CMake/FindMbedTLS.cmake
CMake/FindNGHTTP2.cmake
CMake/FindNGHTTP3.cmake
CMake/FindNGTCP2.cmake
CMake/FindNSS.cmake
CMake/FindQUICHE.cmake
CMake/FindWolfSSL.cmake
CMake/FindZstd.cmake
CMake/Macros.cmake
CMake/OtherTests.cmake
CMake/Platforms/WindowsCache.cmake
CMake/Utilities.cmake
CMake/cmake_uninstall.cmake.in
CMake/curl-config.cmake.in
CMakeLists.txt
COPYING
MacOSX-Framework
Makefile
Makefile.am
Makefile.in
README
RELEASE-NOTES
acinclude.m4
aclocal.m4
buildconf
buildconf.bat
config.guess
config.sub
configure
configure.ac
curl-config.in
docs/ALTSVC.md
docs/BINDINGS.md
docs/BUFREF.md
docs/BUG-BOUNTY.md
docs/BUGS.md
docs/CHECKSRC.md
docs/CIPHERS.md
docs/CMakeLists.txt
docs/CODE_REVIEW.md
docs/CODE_STYLE.md
docs/CONTRIBUTE.md
docs/CURL-DISABLE.md
docs/DEPRECATE.md
docs/DYNBUF.md
docs/EXPERIMENTAL.md
docs/FAQ
docs/FEATURES.md
docs/GOVERNANCE.md
docs/HELP-US.md
docs/HISTORY.md
docs/HSTS.md
docs/HTTP-COOKIES.md
docs/HTTP2.md
docs/HTTP3.md
docs/HYPER.md
docs/INSTALL.md
docs/INTERNALS.md
docs/KNOWN_BUGS
docs/MAIL-ETIQUETTE
docs/Makefile.am
docs/Makefile.in
docs/NEW-PROTOCOL.md
docs/PARALLEL-TRANSFERS.md
docs/RELEASE-PROCEDURE.md
docs/ROADMAP.md
docs/RUSTLS.md
docs/SECURITY-PROCESS.md
docs/SSL-PROBLEMS.md
docs/SSLCERTS.md
docs/THANKS
docs/TODO
docs/TheArtOfHttpScripting.md
docs/URL-SYNTAX.md
docs/VERSIONS.md
docs/WEBSOCKET.md [new file with mode: 0644]
docs/cmdline-opts/CMakeLists.txt
docs/cmdline-opts/MANPAGE.md
docs/cmdline-opts/Makefile.am
docs/cmdline-opts/Makefile.in
docs/cmdline-opts/Makefile.inc
docs/cmdline-opts/abstract-unix-socket.d
docs/cmdline-opts/alt-svc.d
docs/cmdline-opts/anyauth.d
docs/cmdline-opts/append.d
docs/cmdline-opts/aws-sigv4.d
docs/cmdline-opts/basic.d
docs/cmdline-opts/cacert.d
docs/cmdline-opts/capath.d
docs/cmdline-opts/cert-status.d
docs/cmdline-opts/cert-type.d
docs/cmdline-opts/cert.d
docs/cmdline-opts/ciphers.d
docs/cmdline-opts/compressed-ssh.d
docs/cmdline-opts/compressed.d
docs/cmdline-opts/config.d
docs/cmdline-opts/connect-timeout.d
docs/cmdline-opts/connect-to.d
docs/cmdline-opts/continue-at.d
docs/cmdline-opts/cookie-jar.d
docs/cmdline-opts/cookie.d
docs/cmdline-opts/create-dirs.d
docs/cmdline-opts/create-file-mode.d
docs/cmdline-opts/crlf.d
docs/cmdline-opts/crlfile.d
docs/cmdline-opts/curves.d
docs/cmdline-opts/data-ascii.d
docs/cmdline-opts/data-binary.d
docs/cmdline-opts/data-raw.d
docs/cmdline-opts/data-urlencode.d
docs/cmdline-opts/data.d
docs/cmdline-opts/delegation.d
docs/cmdline-opts/digest.d
docs/cmdline-opts/disable-eprt.d
docs/cmdline-opts/disable-epsv.d
docs/cmdline-opts/disable.d
docs/cmdline-opts/disallow-username-in-url.d
docs/cmdline-opts/dns-interface.d
docs/cmdline-opts/dns-ipv4-addr.d
docs/cmdline-opts/dns-ipv6-addr.d
docs/cmdline-opts/dns-servers.d
docs/cmdline-opts/doh-cert-status.d
docs/cmdline-opts/doh-insecure.d
docs/cmdline-opts/doh-url.d
docs/cmdline-opts/dump-header.d
docs/cmdline-opts/egd-file.d
docs/cmdline-opts/engine.d
docs/cmdline-opts/etag-compare.d
docs/cmdline-opts/etag-save.d
docs/cmdline-opts/expect100-timeout.d
docs/cmdline-opts/fail-early.d
docs/cmdline-opts/fail-with-body.d
docs/cmdline-opts/fail.d
docs/cmdline-opts/false-start.d
docs/cmdline-opts/form-escape.d
docs/cmdline-opts/form-string.d
docs/cmdline-opts/form.d
docs/cmdline-opts/ftp-account.d
docs/cmdline-opts/ftp-alternative-to-user.d
docs/cmdline-opts/ftp-create-dirs.d
docs/cmdline-opts/ftp-method.d
docs/cmdline-opts/ftp-pasv.d
docs/cmdline-opts/ftp-port.d
docs/cmdline-opts/ftp-pret.d
docs/cmdline-opts/ftp-skip-pasv-ip.d
docs/cmdline-opts/ftp-ssl-ccc-mode.d
docs/cmdline-opts/ftp-ssl-ccc.d
docs/cmdline-opts/ftp-ssl-control.d
docs/cmdline-opts/gen.pl
docs/cmdline-opts/get.d
docs/cmdline-opts/globoff.d
docs/cmdline-opts/happy-eyeballs-timeout-ms.d
docs/cmdline-opts/haproxy-protocol.d
docs/cmdline-opts/head.d
docs/cmdline-opts/header.d
docs/cmdline-opts/help.d
docs/cmdline-opts/hostpubmd5.d
docs/cmdline-opts/hostpubsha256.d
docs/cmdline-opts/hsts.d
docs/cmdline-opts/http0.9.d
docs/cmdline-opts/http1.0.d
docs/cmdline-opts/http1.1.d
docs/cmdline-opts/http2-prior-knowledge.d
docs/cmdline-opts/http2.d
docs/cmdline-opts/http3.d
docs/cmdline-opts/ignore-content-length.d
docs/cmdline-opts/include.d
docs/cmdline-opts/insecure.d
docs/cmdline-opts/interface.d
docs/cmdline-opts/ipv4.d
docs/cmdline-opts/ipv6.d
docs/cmdline-opts/json.d [new file with mode: 0644]
docs/cmdline-opts/junk-session-cookies.d
docs/cmdline-opts/keepalive-time.d
docs/cmdline-opts/key-type.d
docs/cmdline-opts/key.d
docs/cmdline-opts/krb.d
docs/cmdline-opts/libcurl.d
docs/cmdline-opts/limit-rate.d
docs/cmdline-opts/list-only.d
docs/cmdline-opts/local-port.d
docs/cmdline-opts/location-trusted.d
docs/cmdline-opts/location.d
docs/cmdline-opts/login-options.d
docs/cmdline-opts/mail-auth.d
docs/cmdline-opts/mail-from.d
docs/cmdline-opts/mail-rcpt-allowfails.d
docs/cmdline-opts/mail-rcpt.d
docs/cmdline-opts/manual.d
docs/cmdline-opts/max-filesize.d
docs/cmdline-opts/max-redirs.d
docs/cmdline-opts/max-time.d
docs/cmdline-opts/metalink.d
docs/cmdline-opts/negotiate.d
docs/cmdline-opts/netrc-file.d
docs/cmdline-opts/netrc-optional.d
docs/cmdline-opts/netrc.d
docs/cmdline-opts/next.d
docs/cmdline-opts/no-alpn.d
docs/cmdline-opts/no-buffer.d
docs/cmdline-opts/no-clobber.d [new file with mode: 0644]
docs/cmdline-opts/no-keepalive.d
docs/cmdline-opts/no-npn.d
docs/cmdline-opts/no-progress-meter.d
docs/cmdline-opts/no-sessionid.d
docs/cmdline-opts/noproxy.d
docs/cmdline-opts/ntlm-wb.d
docs/cmdline-opts/ntlm.d
docs/cmdline-opts/oauth2-bearer.d
docs/cmdline-opts/output-dir.d
docs/cmdline-opts/output.d
docs/cmdline-opts/page-footer
docs/cmdline-opts/page-header
docs/cmdline-opts/parallel-immediate.d
docs/cmdline-opts/parallel-max.d
docs/cmdline-opts/parallel.d
docs/cmdline-opts/pass.d
docs/cmdline-opts/path-as-is.d
docs/cmdline-opts/pinnedpubkey.d
docs/cmdline-opts/post301.d
docs/cmdline-opts/post302.d
docs/cmdline-opts/post303.d
docs/cmdline-opts/preproxy.d
docs/cmdline-opts/progress-bar.d
docs/cmdline-opts/proto-default.d
docs/cmdline-opts/proto-redir.d
docs/cmdline-opts/proto.d
docs/cmdline-opts/proxy-anyauth.d
docs/cmdline-opts/proxy-basic.d
docs/cmdline-opts/proxy-cacert.d
docs/cmdline-opts/proxy-capath.d
docs/cmdline-opts/proxy-cert-type.d
docs/cmdline-opts/proxy-cert.d
docs/cmdline-opts/proxy-ciphers.d
docs/cmdline-opts/proxy-crlfile.d
docs/cmdline-opts/proxy-digest.d
docs/cmdline-opts/proxy-header.d
docs/cmdline-opts/proxy-insecure.d
docs/cmdline-opts/proxy-key-type.d
docs/cmdline-opts/proxy-key.d
docs/cmdline-opts/proxy-negotiate.d
docs/cmdline-opts/proxy-ntlm.d
docs/cmdline-opts/proxy-pass.d
docs/cmdline-opts/proxy-pinnedpubkey.d
docs/cmdline-opts/proxy-service-name.d
docs/cmdline-opts/proxy-ssl-allow-beast.d
docs/cmdline-opts/proxy-ssl-auto-client-cert.d
docs/cmdline-opts/proxy-tls13-ciphers.d
docs/cmdline-opts/proxy-tlsauthtype.d
docs/cmdline-opts/proxy-tlspassword.d
docs/cmdline-opts/proxy-tlsuser.d
docs/cmdline-opts/proxy-tlsv1.d
docs/cmdline-opts/proxy-user.d
docs/cmdline-opts/proxy.d
docs/cmdline-opts/proxy1.0.d
docs/cmdline-opts/proxytunnel.d
docs/cmdline-opts/pubkey.d
docs/cmdline-opts/quote.d
docs/cmdline-opts/random-file.d
docs/cmdline-opts/range.d
docs/cmdline-opts/rate.d [new file with mode: 0644]
docs/cmdline-opts/raw.d
docs/cmdline-opts/referer.d
docs/cmdline-opts/remote-header-name.d
docs/cmdline-opts/remote-name-all.d
docs/cmdline-opts/remote-name.d
docs/cmdline-opts/remote-time.d
docs/cmdline-opts/remove-on-error.d [new file with mode: 0644]
docs/cmdline-opts/request-target.d
docs/cmdline-opts/request.d
docs/cmdline-opts/resolve.d
docs/cmdline-opts/retry-all-errors.d
docs/cmdline-opts/retry-connrefused.d
docs/cmdline-opts/retry-delay.d
docs/cmdline-opts/retry-max-time.d
docs/cmdline-opts/retry.d
docs/cmdline-opts/sasl-authzid.d
docs/cmdline-opts/sasl-ir.d
docs/cmdline-opts/service-name.d
docs/cmdline-opts/show-error.d
docs/cmdline-opts/silent.d
docs/cmdline-opts/socks4.d
docs/cmdline-opts/socks4a.d
docs/cmdline-opts/socks5-basic.d
docs/cmdline-opts/socks5-gssapi-nec.d
docs/cmdline-opts/socks5-gssapi-service.d
docs/cmdline-opts/socks5-gssapi.d
docs/cmdline-opts/socks5-hostname.d
docs/cmdline-opts/socks5.d
docs/cmdline-opts/speed-limit.d
docs/cmdline-opts/speed-time.d
docs/cmdline-opts/ssl-allow-beast.d
docs/cmdline-opts/ssl-auto-client-cert.d
docs/cmdline-opts/ssl-no-revoke.d
docs/cmdline-opts/ssl-reqd.d
docs/cmdline-opts/ssl-revoke-best-effort.d
docs/cmdline-opts/ssl.d
docs/cmdline-opts/sslv2.d
docs/cmdline-opts/sslv3.d
docs/cmdline-opts/stderr.d
docs/cmdline-opts/styled-output.d
docs/cmdline-opts/suppress-connect-headers.d
docs/cmdline-opts/tcp-fastopen.d
docs/cmdline-opts/tcp-nodelay.d
docs/cmdline-opts/telnet-option.d
docs/cmdline-opts/tftp-blksize.d
docs/cmdline-opts/tftp-no-options.d
docs/cmdline-opts/time-cond.d
docs/cmdline-opts/tls-max.d
docs/cmdline-opts/tls13-ciphers.d
docs/cmdline-opts/tlsauthtype.d
docs/cmdline-opts/tlspassword.d
docs/cmdline-opts/tlsuser.d
docs/cmdline-opts/tlsv1.0.d
docs/cmdline-opts/tlsv1.1.d
docs/cmdline-opts/tlsv1.2.d
docs/cmdline-opts/tlsv1.3.d
docs/cmdline-opts/tlsv1.d
docs/cmdline-opts/tr-encoding.d
docs/cmdline-opts/trace-ascii.d
docs/cmdline-opts/trace-time.d
docs/cmdline-opts/trace.d
docs/cmdline-opts/unix-socket.d
docs/cmdline-opts/upload-file.d
docs/cmdline-opts/url.d
docs/cmdline-opts/use-ascii.d
docs/cmdline-opts/user-agent.d
docs/cmdline-opts/user.d
docs/cmdline-opts/verbose.d
docs/cmdline-opts/version.d
docs/cmdline-opts/write-out.d
docs/cmdline-opts/xattr.d
docs/curl-config.1
docs/curl.1
docs/examples/10-at-a-time.c
docs/examples/Makefile.am
docs/examples/Makefile.example
docs/examples/Makefile.in
docs/examples/Makefile.inc
docs/examples/Makefile.m32
docs/examples/Makefile.netware [deleted file]
docs/examples/README.md
docs/examples/altsvc.c
docs/examples/anyauthput.c
docs/examples/cacertinmem.c
docs/examples/certinfo.c
docs/examples/chkspeed.c
docs/examples/cookie_interface.c
docs/examples/crawler.c
docs/examples/curlgtk.c
docs/examples/curlx.c [deleted file]
docs/examples/debug.c
docs/examples/ephiperfifo.c
docs/examples/evhiperfifo.c
docs/examples/externalsocket.c
docs/examples/fileupload.c
docs/examples/fopen.c [deleted file]
docs/examples/ftp-wildcard.c
docs/examples/ftpget.c
docs/examples/ftpgetinfo.c
docs/examples/ftpgetresp.c
docs/examples/ftpsget.c
docs/examples/ftpupload.c
docs/examples/ftpuploadfrommem.c
docs/examples/ftpuploadresume.c
docs/examples/getinfo.c
docs/examples/getinmemory.c
docs/examples/getredirect.c
docs/examples/getreferrer.c
docs/examples/ghiper.c
docs/examples/headerapi.c [new file with mode: 0644]
docs/examples/hiperfifo.c
docs/examples/href_extractor.c
docs/examples/htmltidy.c
docs/examples/htmltitle.cpp
docs/examples/http-post.c
docs/examples/http2-download.c
docs/examples/http2-pushinmemory.c
docs/examples/http2-serverpush.c
docs/examples/http2-upload.c
docs/examples/http3-present.c
docs/examples/http3.c
docs/examples/httpcustomheader.c
docs/examples/httpput-postfields.c
docs/examples/httpput.c
docs/examples/https.c
docs/examples/imap-append.c
docs/examples/imap-authzid.c
docs/examples/imap-copy.c
docs/examples/imap-create.c
docs/examples/imap-delete.c
docs/examples/imap-examine.c
docs/examples/imap-fetch.c
docs/examples/imap-list.c
docs/examples/imap-lsub.c
docs/examples/imap-multi.c
docs/examples/imap-noop.c
docs/examples/imap-search.c
docs/examples/imap-ssl.c
docs/examples/imap-store.c
docs/examples/imap-tls.c
docs/examples/makefile.dj
docs/examples/multi-app.c
docs/examples/multi-debugcallback.c
docs/examples/multi-double.c
docs/examples/multi-event.c
docs/examples/multi-formadd.c
docs/examples/multi-legacy.c
docs/examples/multi-post.c
docs/examples/multi-single.c
docs/examples/multi-uv.c
docs/examples/multithread.c
docs/examples/opensslthreadlock.c
docs/examples/parseurl.c
docs/examples/persistent.c
docs/examples/pop3-authzid.c
docs/examples/pop3-dele.c
docs/examples/pop3-list.c
docs/examples/pop3-multi.c
docs/examples/pop3-noop.c
docs/examples/pop3-retr.c
docs/examples/pop3-ssl.c
docs/examples/pop3-stat.c
docs/examples/pop3-tls.c
docs/examples/pop3-top.c
docs/examples/pop3-uidl.c
docs/examples/post-callback.c
docs/examples/postinmemory.c
docs/examples/postit2-formadd.c
docs/examples/postit2.c
docs/examples/progressfunc.c
docs/examples/resolve.c
docs/examples/rtsp.c [deleted file]
docs/examples/sampleconv.c [deleted file]
docs/examples/sendrecv.c
docs/examples/sepheaders.c
docs/examples/sessioninfo.c
docs/examples/sftpget.c
docs/examples/sftpuploadresume.c
docs/examples/shared-connection-cache.c
docs/examples/simple.c
docs/examples/simplepost.c
docs/examples/simplessl.c
docs/examples/smooth-gtk-thread.c
docs/examples/smtp-authzid.c
docs/examples/smtp-expn.c
docs/examples/smtp-mail.c
docs/examples/smtp-mime.c
docs/examples/smtp-multi.c
docs/examples/smtp-ssl.c
docs/examples/smtp-tls.c
docs/examples/smtp-vrfy.c
docs/examples/sslbackend.c
docs/examples/synctime.c
docs/examples/threaded-ssl.c
docs/examples/url2file.c
docs/examples/urlapi.c
docs/examples/usercertinmem.c
docs/examples/version-check.pl
docs/examples/xmlstream.c
docs/libcurl/ABI.md
docs/libcurl/CMakeLists.txt
docs/libcurl/Makefile.am
docs/libcurl/Makefile.in
docs/libcurl/Makefile.inc
docs/libcurl/curl_easy_cleanup.3
docs/libcurl/curl_easy_duphandle.3
docs/libcurl/curl_easy_escape.3
docs/libcurl/curl_easy_getinfo.3
docs/libcurl/curl_easy_header.3 [new file with mode: 0644]
docs/libcurl/curl_easy_init.3
docs/libcurl/curl_easy_nextheader.3 [new file with mode: 0644]
docs/libcurl/curl_easy_option_by_id.3
docs/libcurl/curl_easy_option_by_name.3
docs/libcurl/curl_easy_option_next.3
docs/libcurl/curl_easy_pause.3
docs/libcurl/curl_easy_perform.3
docs/libcurl/curl_easy_recv.3
docs/libcurl/curl_easy_reset.3
docs/libcurl/curl_easy_send.3
docs/libcurl/curl_easy_setopt.3
docs/libcurl/curl_easy_strerror.3
docs/libcurl/curl_easy_unescape.3
docs/libcurl/curl_easy_upkeep.3
docs/libcurl/curl_escape.3
docs/libcurl/curl_formadd.3
docs/libcurl/curl_formfree.3
docs/libcurl/curl_formget.3
docs/libcurl/curl_free.3
docs/libcurl/curl_getdate.3
docs/libcurl/curl_getenv.3
docs/libcurl/curl_global_cleanup.3
docs/libcurl/curl_global_init.3
docs/libcurl/curl_global_init_mem.3
docs/libcurl/curl_global_sslset.3
docs/libcurl/curl_mime_addpart.3
docs/libcurl/curl_mime_data.3
docs/libcurl/curl_mime_data_cb.3
docs/libcurl/curl_mime_encoder.3
docs/libcurl/curl_mime_filedata.3
docs/libcurl/curl_mime_filename.3
docs/libcurl/curl_mime_free.3
docs/libcurl/curl_mime_headers.3
docs/libcurl/curl_mime_init.3
docs/libcurl/curl_mime_name.3
docs/libcurl/curl_mime_subparts.3
docs/libcurl/curl_mime_type.3
docs/libcurl/curl_mprintf.3
docs/libcurl/curl_multi_add_handle.3
docs/libcurl/curl_multi_assign.3
docs/libcurl/curl_multi_cleanup.3
docs/libcurl/curl_multi_fdset.3
docs/libcurl/curl_multi_info_read.3
docs/libcurl/curl_multi_init.3
docs/libcurl/curl_multi_perform.3
docs/libcurl/curl_multi_poll.3
docs/libcurl/curl_multi_remove_handle.3
docs/libcurl/curl_multi_setopt.3
docs/libcurl/curl_multi_socket.3
docs/libcurl/curl_multi_socket_action.3
docs/libcurl/curl_multi_strerror.3
docs/libcurl/curl_multi_timeout.3
docs/libcurl/curl_multi_wait.3
docs/libcurl/curl_multi_wakeup.3
docs/libcurl/curl_share_cleanup.3
docs/libcurl/curl_share_init.3
docs/libcurl/curl_share_setopt.3
docs/libcurl/curl_share_strerror.3
docs/libcurl/curl_slist_append.3
docs/libcurl/curl_slist_free_all.3
docs/libcurl/curl_strequal.3
docs/libcurl/curl_unescape.3
docs/libcurl/curl_url.3
docs/libcurl/curl_url_cleanup.3
docs/libcurl/curl_url_dup.3
docs/libcurl/curl_url_get.3
docs/libcurl/curl_url_set.3
docs/libcurl/curl_url_strerror.3
docs/libcurl/curl_version.3
docs/libcurl/curl_version_info.3
docs/libcurl/curl_ws_meta.3 [new file with mode: 0644]
docs/libcurl/curl_ws_recv.3 [new file with mode: 0644]
docs/libcurl/curl_ws_send.3 [new file with mode: 0644]
docs/libcurl/libcurl-easy.3
docs/libcurl/libcurl-env.3
docs/libcurl/libcurl-errors.3
docs/libcurl/libcurl-multi.3
docs/libcurl/libcurl-security.3
docs/libcurl/libcurl-share.3
docs/libcurl/libcurl-symbols.3
docs/libcurl/libcurl-thread.3
docs/libcurl/libcurl-tutorial.3
docs/libcurl/libcurl-url.3
docs/libcurl/libcurl.3
docs/libcurl/libcurl.m4
docs/libcurl/mksymbolsmanpage.pl
docs/libcurl/opts/CMakeLists.txt
docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
docs/libcurl/opts/CURLINFO_CAINFO.3 [new file with mode: 0644]
docs/libcurl/opts/CURLINFO_CAPATH.3 [new file with mode: 0644]
docs/libcurl/opts/CURLINFO_CERTINFO.3
docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
docs/libcurl/opts/CURLINFO_COOKIELIST.3
docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3
docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
docs/libcurl/opts/CURLINFO_FILETIME.3
docs/libcurl/opts/CURLINFO_FILETIME_T.3
docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
docs/libcurl/opts/CURLINFO_LASTSOCKET.3
docs/libcurl/opts/CURLINFO_LOCAL_IP.3
docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
docs/libcurl/opts/CURLINFO_OS_ERRNO.3
docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
docs/libcurl/opts/CURLINFO_PRIVATE.3
docs/libcurl/opts/CURLINFO_PROTOCOL.3
docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
docs/libcurl/opts/CURLINFO_PROXY_ERROR.3
docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
docs/libcurl/opts/CURLINFO_REFERER.3
docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
docs/libcurl/opts/CURLINFO_RETRY_AFTER.3
docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
docs/libcurl/opts/CURLINFO_SCHEME.3
docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
docs/libcurl/opts/CURLINFO_TLS_SESSION.3
docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3
docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
docs/libcurl/opts/CURLMOPT_PIPELINING.3
docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
docs/libcurl/opts/CURLMOPT_PUSHDATA.3
docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
docs/libcurl/opts/CURLMOPT_TIMERDATA.3
docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
docs/libcurl/opts/CURLOPT_ALTSVC.3
docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3
docs/libcurl/opts/CURLOPT_APPEND.3
docs/libcurl/opts/CURLOPT_AUTOREFERER.3
docs/libcurl/opts/CURLOPT_AWS_SIGV4.3
docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
docs/libcurl/opts/CURLOPT_CAINFO.3
docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3
docs/libcurl/opts/CURLOPT_CAPATH.3
docs/libcurl/opts/CURLOPT_CERTINFO.3
docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
docs/libcurl/opts/CURLOPT_CONNECT_TO.3
docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
docs/libcurl/opts/CURLOPT_COOKIE.3
docs/libcurl/opts/CURLOPT_COOKIEFILE.3
docs/libcurl/opts/CURLOPT_COOKIEJAR.3
docs/libcurl/opts/CURLOPT_COOKIELIST.3
docs/libcurl/opts/CURLOPT_COOKIESESSION.3
docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
docs/libcurl/opts/CURLOPT_CRLF.3
docs/libcurl/opts/CURLOPT_CRLFILE.3
docs/libcurl/opts/CURLOPT_CURLU.3
docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
docs/libcurl/opts/CURLOPT_DEBUGDATA.3
docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3
docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3
docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3
docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3
docs/libcurl/opts/CURLOPT_DOH_URL.3
docs/libcurl/opts/CURLOPT_EGDSOCKET.3
docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_FAILONERROR.3
docs/libcurl/opts/CURLOPT_FILETIME.3
docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
docs/libcurl/opts/CURLOPT_FTPPORT.3
docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 [deleted file]
docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
docs/libcurl/opts/CURLOPT_HEADER.3
docs/libcurl/opts/CURLOPT_HEADERDATA.3
docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
docs/libcurl/opts/CURLOPT_HEADEROPT.3
docs/libcurl/opts/CURLOPT_HSTS.3
docs/libcurl/opts/CURLOPT_HSTSREADDATA.3
docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3
docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3
docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3
docs/libcurl/opts/CURLOPT_HSTS_CTRL.3
docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3
docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
docs/libcurl/opts/CURLOPT_HTTPAUTH.3
docs/libcurl/opts/CURLOPT_HTTPGET.3
docs/libcurl/opts/CURLOPT_HTTPHEADER.3
docs/libcurl/opts/CURLOPT_HTTPPOST.3
docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
docs/libcurl/opts/CURLOPT_INFILESIZE.3
docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
docs/libcurl/opts/CURLOPT_INTERFACE.3
docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
docs/libcurl/opts/CURLOPT_IOCTLDATA.3
docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
docs/libcurl/opts/CURLOPT_IPRESOLVE.3
docs/libcurl/opts/CURLOPT_ISSUERCERT.3
docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3
docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
docs/libcurl/opts/CURLOPT_KEYPASSWD.3
docs/libcurl/opts/CURLOPT_KRBLEVEL.3
docs/libcurl/opts/CURLOPT_LOCALPORT.3
docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
docs/libcurl/opts/CURLOPT_MAIL_FROM.3
docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3
docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3
docs/libcurl/opts/CURLOPT_MAXREDIRS.3
docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
docs/libcurl/opts/CURLOPT_MIMEPOST.3
docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3
docs/libcurl/opts/CURLOPT_NETRC.3
docs/libcurl/opts/CURLOPT_NETRC_FILE.3
docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
docs/libcurl/opts/CURLOPT_NOBODY.3
docs/libcurl/opts/CURLOPT_NOPROGRESS.3
docs/libcurl/opts/CURLOPT_NOPROXY.3
docs/libcurl/opts/CURLOPT_NOSIGNAL.3
docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
docs/libcurl/opts/CURLOPT_PASSWORD.3
docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
docs/libcurl/opts/CURLOPT_PIPEWAIT.3
docs/libcurl/opts/CURLOPT_PORT.3
docs/libcurl/opts/CURLOPT_POST.3
docs/libcurl/opts/CURLOPT_POSTFIELDS.3
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
docs/libcurl/opts/CURLOPT_POSTQUOTE.3
docs/libcurl/opts/CURLOPT_POSTREDIR.3
docs/libcurl/opts/CURLOPT_PREQUOTE.3
docs/libcurl/opts/CURLOPT_PREREQDATA.3
docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3
docs/libcurl/opts/CURLOPT_PRE_PROXY.3
docs/libcurl/opts/CURLOPT_PRIVATE.3
docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
docs/libcurl/opts/CURLOPT_PROTOCOLS.3
docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_PROXY.3
docs/libcurl/opts/CURLOPT_PROXYAUTH.3
docs/libcurl/opts/CURLOPT_PROXYHEADER.3
docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
docs/libcurl/opts/CURLOPT_PROXYPORT.3
docs/libcurl/opts/CURLOPT_PROXYTYPE.3
docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3
docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3
docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3
docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3
docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3
docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3
docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
docs/libcurl/opts/CURLOPT_PUT.3
docs/libcurl/opts/CURLOPT_QUOTE.3
docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
docs/libcurl/opts/CURLOPT_RANGE.3
docs/libcurl/opts/CURLOPT_READDATA.3
docs/libcurl/opts/CURLOPT_READFUNCTION.3
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_REFERER.3
docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
docs/libcurl/opts/CURLOPT_RESOLVE.3
docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
docs/libcurl/opts/CURLOPT_RESUME_FROM.3
docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3
docs/libcurl/opts/CURLOPT_SASL_IR.3
docs/libcurl/opts/CURLOPT_SEEKDATA.3
docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
docs/libcurl/opts/CURLOPT_SHARE.3
docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3
docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
docs/libcurl/opts/CURLOPT_SSLCERT.3
docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3
docs/libcurl/opts/CURLOPT_SSLENGINE.3
docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
docs/libcurl/opts/CURLOPT_SSLKEY.3
docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3
docs/libcurl/opts/CURLOPT_SSLVERSION.3
docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3
docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
docs/libcurl/opts/CURLOPT_STDERR.3
docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
docs/libcurl/opts/CURLOPT_TIMECONDITION.3
docs/libcurl/opts/CURLOPT_TIMEOUT.3
docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
docs/libcurl/opts/CURLOPT_TIMEVALUE.3
docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3
docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
docs/libcurl/opts/CURLOPT_TRAILERDATA.3
docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3
docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3
docs/libcurl/opts/CURLOPT_UPLOAD.3
docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3
docs/libcurl/opts/CURLOPT_URL.3
docs/libcurl/opts/CURLOPT_USERAGENT.3
docs/libcurl/opts/CURLOPT_USERNAME.3
docs/libcurl/opts/CURLOPT_USERPWD.3
docs/libcurl/opts/CURLOPT_USE_SSL.3
docs/libcurl/opts/CURLOPT_VERBOSE.3
docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
docs/libcurl/opts/CURLOPT_WRITEDATA.3
docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 [new file with mode: 0644]
docs/libcurl/opts/CURLOPT_XFERINFODATA.3
docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3
docs/libcurl/opts/CURLSHOPT_SHARE.3
docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3
docs/libcurl/opts/CURLSHOPT_UNSHARE.3
docs/libcurl/opts/CURLSHOPT_USERDATA.3
docs/libcurl/opts/Makefile.am
docs/libcurl/opts/Makefile.in
docs/libcurl/opts/Makefile.inc
docs/libcurl/symbols-in-versions
docs/libcurl/symbols.pl
docs/mk-ca-bundle.1
docs/options-in-versions
include/Makefile.am
include/Makefile.in
include/README.md
include/curl/Makefile.am
include/curl/Makefile.in
include/curl/curl.h
include/curl/curlver.h
include/curl/easy.h
include/curl/header.h [new file with mode: 0644]
include/curl/mprintf.h
include/curl/multi.h
include/curl/options.h
include/curl/stdcheaders.h
include/curl/system.h
include/curl/typecheck-gcc.h
include/curl/urlapi.h
include/curl/websockets.h [new file with mode: 0644]
lib/CMakeLists.txt
lib/Makefile.am
lib/Makefile.in
lib/Makefile.inc
lib/Makefile.m32
lib/Makefile.netware [deleted file]
lib/Makefile.vxworks [deleted file]
lib/altsvc.c
lib/altsvc.h
lib/amigaos.c
lib/amigaos.h
lib/arpa_telnet.h
lib/asyn-ares.c
lib/asyn-thread.c
lib/asyn.h
lib/base64.c
lib/bufref.c
lib/bufref.h
lib/c-hyper.c
lib/c-hyper.h
lib/checksrc.pl [deleted file]
lib/config-amigaos.h
lib/config-dos.h
lib/config-mac.h
lib/config-os400.h
lib/config-plan9.h
lib/config-riscos.h
lib/config-tpf.h [deleted file]
lib/config-vxworks.h [deleted file]
lib/config-win32.h
lib/config-win32ce.h
lib/conncache.c
lib/conncache.h
lib/connect.c
lib/connect.h
lib/content_encoding.c
lib/content_encoding.h
lib/cookie.c
lib/cookie.h
lib/curl_addrinfo.c
lib/curl_addrinfo.h
lib/curl_base64.h
lib/curl_config.h.cmake
lib/curl_config.h.in
lib/curl_ctype.c [deleted file]
lib/curl_ctype.h
lib/curl_des.c
lib/curl_des.h
lib/curl_endian.c
lib/curl_endian.h
lib/curl_fnmatch.c
lib/curl_fnmatch.h
lib/curl_get_line.c
lib/curl_get_line.h
lib/curl_gethostname.c
lib/curl_gethostname.h
lib/curl_gssapi.c
lib/curl_gssapi.h
lib/curl_hmac.h
lib/curl_krb5.h
lib/curl_ldap.h
lib/curl_md4.h
lib/curl_md5.h
lib/curl_memory.h
lib/curl_memrchr.c
lib/curl_memrchr.h
lib/curl_multibyte.c
lib/curl_multibyte.h
lib/curl_ntlm_core.c
lib/curl_ntlm_core.h
lib/curl_ntlm_wb.c
lib/curl_ntlm_wb.h
lib/curl_path.c
lib/curl_path.h
lib/curl_printf.h
lib/curl_range.c
lib/curl_range.h
lib/curl_rtmp.c
lib/curl_rtmp.h
lib/curl_sasl.c
lib/curl_sasl.h
lib/curl_setup.h
lib/curl_setup_once.h
lib/curl_sha256.h
lib/curl_sspi.c
lib/curl_sspi.h
lib/curl_threads.c
lib/curl_threads.h
lib/curlx.h
lib/dict.c
lib/dict.h
lib/doh.c
lib/doh.h
lib/dotdot.c [deleted file]
lib/dotdot.h [deleted file]
lib/dynbuf.c
lib/dynbuf.h
lib/easy.c
lib/easy_lock.h [new file with mode: 0644]
lib/easygetopt.c
lib/easyif.h
lib/easyoptions.c
lib/easyoptions.h
lib/escape.c
lib/escape.h
lib/file.c
lib/file.h
lib/fileinfo.c
lib/fileinfo.h
lib/firefox-db2pem.sh [deleted file]
lib/fopen.c [new file with mode: 0644]
lib/fopen.h [new file with mode: 0644]
lib/formdata.c
lib/formdata.h
lib/ftp.c
lib/ftp.h
lib/ftplistparser.c
lib/ftplistparser.h
lib/functypes.h [new file with mode: 0644]
lib/getenv.c
lib/getinfo.c
lib/getinfo.h
lib/gopher.c
lib/gopher.h
lib/h2h3.c [new file with mode: 0644]
lib/h2h3.h [new file with mode: 0644]
lib/hash.c
lib/hash.h
lib/headers.c [new file with mode: 0644]
lib/headers.h [new file with mode: 0644]
lib/hmac.c
lib/hostasyn.c
lib/hostcheck.c [deleted file]
lib/hostcheck.h [deleted file]
lib/hostip.c
lib/hostip.h
lib/hostip4.c
lib/hostip6.c
lib/hostsyn.c
lib/hsts.c
lib/hsts.h
lib/http.c
lib/http.h
lib/http2.c
lib/http2.h
lib/http_aws_sigv4.c
lib/http_aws_sigv4.h
lib/http_chunks.c
lib/http_chunks.h
lib/http_digest.c
lib/http_digest.h
lib/http_negotiate.c
lib/http_negotiate.h
lib/http_ntlm.c
lib/http_ntlm.h
lib/http_proxy.c
lib/http_proxy.h
lib/idn_win32.c
lib/if2ip.c
lib/if2ip.h
lib/imap.c
lib/imap.h
lib/inet_ntop.c
lib/inet_ntop.h
lib/inet_pton.c
lib/inet_pton.h
lib/krb5.c
lib/ldap.c
lib/libcurl.plist
lib/libcurl.plist.in [new file with mode: 0644]
lib/libcurl.rc
lib/llist.c
lib/llist.h
lib/makefile.amiga
lib/makefile.dj
lib/md4.c
lib/md5.c
lib/memdebug.c
lib/memdebug.h
lib/mime.c
lib/mime.h
lib/mk-ca-bundle.pl [deleted file]
lib/mk-ca-bundle.vbs [deleted file]
lib/mprintf.c
lib/mqtt.c
lib/mqtt.h
lib/multi.c
lib/multihandle.h
lib/multiif.h
lib/netrc.c
lib/netrc.h
lib/non-ascii.c [deleted file]
lib/non-ascii.h [deleted file]
lib/nonblock.c
lib/nonblock.h
lib/noproxy.c [new file with mode: 0644]
lib/noproxy.h [new file with mode: 0644]
lib/nwlib.c [deleted file]
lib/nwos.c [deleted file]
lib/openldap.c
lib/parsedate.c
lib/parsedate.h
lib/pingpong.c
lib/pingpong.h
lib/pop3.c
lib/pop3.h
lib/progress.c
lib/progress.h
lib/psl.c
lib/psl.h
lib/quic.h
lib/rand.c
lib/rand.h
lib/rename.c
lib/rename.h
lib/rtsp.c
lib/rtsp.h
lib/select.c
lib/select.h
lib/sendf.c
lib/sendf.h
lib/setopt.c
lib/setopt.h
lib/setup-os400.h
lib/setup-vms.h
lib/setup-win32.h
lib/sha256.c
lib/share.c
lib/share.h
lib/sigpipe.h
lib/slist.c
lib/slist.h
lib/smb.c
lib/smb.h
lib/smtp.c
lib/smtp.h
lib/sockaddr.h
lib/socketpair.c
lib/socketpair.h
lib/socks.c
lib/socks.h
lib/socks_gssapi.c
lib/socks_sspi.c
lib/speedcheck.c
lib/speedcheck.h
lib/splay.c
lib/splay.h
lib/strcase.c
lib/strcase.h
lib/strdup.c
lib/strdup.h
lib/strerror.c
lib/strerror.h
lib/strtok.c
lib/strtok.h
lib/strtoofft.c
lib/strtoofft.h
lib/system_win32.c
lib/system_win32.h
lib/telnet.c
lib/telnet.h
lib/tftp.c
lib/tftp.h
lib/timediff.c [new file with mode: 0644]
lib/timediff.h [new file with mode: 0644]
lib/timeval.c
lib/timeval.h
lib/transfer.c
lib/transfer.h
lib/url.c
lib/url.h
lib/urlapi-int.h
lib/urlapi.c
lib/urldata.h
lib/vauth/cleartext.c
lib/vauth/cram.c
lib/vauth/digest.c
lib/vauth/digest.h
lib/vauth/digest_sspi.c
lib/vauth/gsasl.c
lib/vauth/krb5_gssapi.c
lib/vauth/krb5_sspi.c
lib/vauth/ntlm.c
lib/vauth/ntlm.h
lib/vauth/ntlm_sspi.c
lib/vauth/oauth2.c
lib/vauth/spnego_gssapi.c
lib/vauth/spnego_sspi.c
lib/vauth/vauth.c
lib/vauth/vauth.h
lib/version.c
lib/version_win32.c
lib/version_win32.h
lib/vquic/msh3.c [new file with mode: 0644]
lib/vquic/msh3.h [new file with mode: 0644]
lib/vquic/ngtcp2.c
lib/vquic/ngtcp2.h
lib/vquic/quiche.c
lib/vquic/quiche.h
lib/vquic/vquic.c
lib/vquic/vquic.h
lib/vssh/libssh.c
lib/vssh/libssh2.c
lib/vssh/ssh.h
lib/vssh/wolfssh.c
lib/vtls/bearssl.c
lib/vtls/bearssl.h
lib/vtls/gskit.c
lib/vtls/gskit.h
lib/vtls/gtls.c
lib/vtls/gtls.h
lib/vtls/hostcheck.c [new file with mode: 0644]
lib/vtls/hostcheck.h [new file with mode: 0644]
lib/vtls/keylog.c
lib/vtls/keylog.h
lib/vtls/mbedtls.c
lib/vtls/mbedtls.h
lib/vtls/mbedtls_threadlock.c
lib/vtls/mbedtls_threadlock.h
lib/vtls/mesalink.c [deleted file]
lib/vtls/mesalink.h [deleted file]
lib/vtls/nss.c
lib/vtls/nssg.h
lib/vtls/openssl.c
lib/vtls/openssl.h
lib/vtls/rustls.c
lib/vtls/rustls.h
lib/vtls/schannel.c
lib/vtls/schannel.h
lib/vtls/schannel_verify.c
lib/vtls/sectransp.c
lib/vtls/sectransp.h
lib/vtls/vtls.c
lib/vtls/vtls.h
lib/vtls/wolfssl.c
lib/vtls/wolfssl.h
lib/vtls/x509asn1.c [new file with mode: 0644]
lib/vtls/x509asn1.h [new file with mode: 0644]
lib/warnless.c
lib/warnless.h
lib/wildcard.c
lib/wildcard.h
lib/ws.c [new file with mode: 0644]
lib/ws.h [new file with mode: 0644]
lib/x509asn1.c [deleted file]
lib/x509asn1.h [deleted file]
libcurl.pc.in
ltmain.sh
m4/ax_compile_check_sizeof.m4 [deleted file]
m4/curl-amissl.m4
m4/curl-bearssl.m4
m4/curl-compilers.m4
m4/curl-confopts.m4
m4/curl-functions.m4
m4/curl-gnutls.m4
m4/curl-mbedtls.m4
m4/curl-mesalink.m4 [deleted file]
m4/curl-nss.m4
m4/curl-openssl.m4
m4/curl-override.m4
m4/curl-reentrant.m4
m4/curl-rustls.m4
m4/curl-schannel.m4
m4/curl-sectransp.m4
m4/curl-sysconfig.m4
m4/curl-wolfssl.m4
m4/libtool.m4
m4/ltoptions.m4
m4/ltsugar.m4
m4/ltversion.m4
m4/lt~obsolete.m4
m4/xc-am-iface.m4
m4/xc-cc-check.m4
m4/xc-lt-iface.m4
m4/xc-translit.m4
m4/xc-val-flgs.m4
m4/zz40-xc-ovr.m4
m4/zz50-xc-ovr.m4
m4/zz60-xc-ovr.m4
maketgz
packages/Android/Android.mk
packages/DOS/README
packages/DOS/common.dj
packages/Makefile.am
packages/Makefile.in
packages/OS400/README.OS400
packages/OS400/ccsidcurl.c
packages/OS400/ccsidcurl.h
packages/OS400/chkstrings.c
packages/OS400/curl.inc.in
packages/OS400/initscript.sh
packages/OS400/make-include.sh
packages/OS400/make-lib.sh
packages/OS400/make-src.sh
packages/OS400/make-tests.sh
packages/OS400/makefile.sh
packages/OS400/os400sys.c
packages/OS400/os400sys.h
packages/TPF/curl.mak [deleted file]
packages/TPF/maketpf.env_curl [deleted file]
packages/TPF/maketpf.env_curllib [deleted file]
packages/vms/Makefile.am
packages/vms/Makefile.in
packages/vms/backup_gnv_curl_src.com
packages/vms/build_curl-config_script.com
packages/vms/build_gnv_curl.com
packages/vms/build_gnv_curl_pcsi_desc.com
packages/vms/build_gnv_curl_pcsi_text.com
packages/vms/build_gnv_curl_release_notes.com
packages/vms/build_libcurl_pc.com
packages/vms/clean_gnv_curl.com
packages/vms/compare_curl_source.com
packages/vms/config_h.com
packages/vms/curl_crtl_init.c
packages/vms/curl_gnv_build_steps.txt
packages/vms/curl_startup.com
packages/vms/curlmsg.h
packages/vms/curlmsg.msg
packages/vms/curlmsg_vms.h
packages/vms/generate_config_vms_h_curl.com
packages/vms/generate_vax_transfer.com
packages/vms/gnv_conftest.c_first
packages/vms/gnv_curl_configure.sh
packages/vms/gnv_libcurl_symbols.opt
packages/vms/gnv_link_curl.com
packages/vms/make_gnv_curl_install.sh
packages/vms/make_pcsi_curl_kit_name.com
packages/vms/pcsi_gnv_curl_file_list.txt
packages/vms/pcsi_product_gnv_curl.com
packages/vms/report_openssl_version.c
packages/vms/setup_gnv_curl_build.com
packages/vms/stage_curl_install.com
packages/vms/vms_eco_level.h
plan9/include/mkfile
plan9/lib/mkfile
plan9/lib/mkfile.inc
plan9/mkfile
plan9/mkfile.proto
plan9/src/mkfile
plan9/src/mkfile.inc
projects/README [deleted file]
projects/README.md [new file with mode: 0644]
projects/Windows/VC10/lib/libcurl.vcxproj
projects/Windows/VC10/src/curl.vcxproj
projects/Windows/VC11/lib/libcurl.vcxproj
projects/Windows/VC11/src/curl.vcxproj
projects/Windows/VC12/lib/libcurl.vcxproj
projects/Windows/VC12/src/curl.vcxproj
projects/Windows/VC14.10/curl-all.sln [new file with mode: 0644]
projects/Windows/VC14.10/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC14.10/lib/libcurl.vcxproj [new file with mode: 0644]
projects/Windows/VC14.10/lib/libcurl.vcxproj.filters [new file with mode: 0644]
projects/Windows/VC14.10/src/curl.sln [new file with mode: 0644]
projects/Windows/VC14.10/src/curl.vcxproj [new file with mode: 0644]
projects/Windows/VC14.10/src/curl.vcxproj.filters [new file with mode: 0644]
projects/Windows/VC14.30/curl-all.sln [new file with mode: 0644]
projects/Windows/VC14.30/lib/libcurl.sln [new file with mode: 0644]
projects/Windows/VC14.30/lib/libcurl.vcxproj [new file with mode: 0644]
projects/Windows/VC14.30/lib/libcurl.vcxproj.filters [new file with mode: 0644]
projects/Windows/VC14.30/src/curl.sln [new file with mode: 0644]
projects/Windows/VC14.30/src/curl.vcxproj [new file with mode: 0644]
projects/Windows/VC14.30/src/curl.vcxproj.filters [new file with mode: 0644]
projects/Windows/VC14/lib/libcurl.vcxproj
projects/Windows/VC14/src/curl.vcxproj
projects/Windows/VC15/curl-all.sln [deleted file]
projects/Windows/VC15/lib/libcurl.sln [deleted file]
projects/Windows/VC15/lib/libcurl.vcxproj [deleted file]
projects/Windows/VC15/lib/libcurl.vcxproj.filters [deleted file]
projects/Windows/VC15/src/curl.sln [deleted file]
projects/Windows/VC15/src/curl.vcxproj [deleted file]
projects/Windows/VC15/src/curl.vcxproj.filters [deleted file]
projects/Windows/VC6/curl-all.dsw [deleted file]
projects/Windows/VC6/lib/libcurl.dsp [deleted file]
projects/Windows/VC6/lib/libcurl.dsw [deleted file]
projects/Windows/VC6/src/curl.dsp [deleted file]
projects/Windows/VC6/src/curl.dsw [deleted file]
projects/Windows/VC7.1/curl-all.sln [deleted file]
projects/Windows/VC7.1/lib/libcurl.sln [deleted file]
projects/Windows/VC7.1/lib/libcurl.vcproj [deleted file]
projects/Windows/VC7.1/src/curl.sln [deleted file]
projects/Windows/VC7.1/src/curl.vcproj [deleted file]
projects/Windows/VC7/curl-all.sln [deleted file]
projects/Windows/VC7/lib/libcurl.sln [deleted file]
projects/Windows/VC7/lib/libcurl.vcproj [deleted file]
projects/Windows/VC7/src/curl.sln [deleted file]
projects/Windows/VC7/src/curl.vcproj [deleted file]
projects/Windows/VC8/curl-all.sln [deleted file]
projects/Windows/VC8/lib/libcurl.sln [deleted file]
projects/Windows/VC8/lib/libcurl.vcproj [deleted file]
projects/Windows/VC8/src/curl.sln [deleted file]
projects/Windows/VC8/src/curl.vcproj [deleted file]
projects/Windows/VC9/curl-all.sln [deleted file]
projects/Windows/VC9/lib/libcurl.sln [deleted file]
projects/Windows/VC9/lib/libcurl.vcproj [deleted file]
projects/Windows/VC9/src/curl.sln [deleted file]
projects/Windows/VC9/src/curl.vcproj [deleted file]
projects/build-openssl.bat
projects/build-wolfssl.bat
projects/checksrc.bat
projects/generate.bat
projects/wolfssl_options.h
scripts/Makefile.am
scripts/Makefile.in
scripts/checksrc.pl [new file with mode: 0755]
scripts/completion.pl
scripts/coverage.sh
scripts/firefox-db2pem.sh [new file with mode: 0755]
scripts/mk-ca-bundle.pl [new file with mode: 0755]
scripts/updatemanpages.pl
src/CMakeLists.txt
src/Makefile.am
src/Makefile.in
src/Makefile.inc
src/Makefile.m32
src/Makefile.netware [deleted file]
src/curl.rc
src/macos/MACINSTALL.TXT [deleted file]
src/macos/curl.mcp.xml.sit.hqx [deleted file]
src/macos/src/curl_GUSIConfig.cpp [deleted file]
src/macos/src/macos_main.cpp [deleted file]
src/makefile.amiga
src/makefile.dj
src/mkhelp.pl
src/slist_wc.c
src/slist_wc.h
src/tool_binmode.c
src/tool_binmode.h
src/tool_bname.c
src/tool_bname.h
src/tool_cb_dbg.c
src/tool_cb_dbg.h
src/tool_cb_hdr.c
src/tool_cb_hdr.h
src/tool_cb_prg.c
src/tool_cb_prg.h
src/tool_cb_rea.c
src/tool_cb_rea.h
src/tool_cb_see.c
src/tool_cb_see.h
src/tool_cb_wrt.c
src/tool_cb_wrt.h
src/tool_cfgable.c
src/tool_cfgable.h
src/tool_convert.c [deleted file]
src/tool_convert.h [deleted file]
src/tool_dirhie.c
src/tool_dirhie.h
src/tool_doswin.c
src/tool_doswin.h
src/tool_easysrc.c
src/tool_easysrc.h
src/tool_filetime.c
src/tool_filetime.h
src/tool_findfile.c
src/tool_findfile.h
src/tool_formparse.c
src/tool_formparse.h
src/tool_getparam.c
src/tool_getparam.h
src/tool_getpass.c
src/tool_getpass.h
src/tool_help.c
src/tool_help.h
src/tool_helpers.c
src/tool_helpers.h
src/tool_hugehelp.c
src/tool_hugehelp.h
src/tool_libinfo.c
src/tool_libinfo.h
src/tool_listhelp.c
src/tool_main.c
src/tool_main.h
src/tool_msgs.c
src/tool_msgs.h
src/tool_operate.c
src/tool_operate.h
src/tool_operhlp.c
src/tool_operhlp.h
src/tool_panykey.c
src/tool_panykey.h
src/tool_paramhlp.c
src/tool_paramhlp.h
src/tool_parsecfg.c
src/tool_parsecfg.h
src/tool_progress.c
src/tool_progress.h
src/tool_sdecls.h
src/tool_setopt.c
src/tool_setopt.h
src/tool_setup.h
src/tool_sleep.c
src/tool_sleep.h
src/tool_strdup.c
src/tool_strdup.h
src/tool_urlglob.c
src/tool_urlglob.h
src/tool_util.c
src/tool_util.h
src/tool_version.h
src/tool_vms.c
src/tool_vms.h
src/tool_writeout.c
src/tool_writeout.h
src/tool_writeout_json.c
src/tool_writeout_json.h
src/tool_xattr.c
src/tool_xattr.h
tests/CMakeLists.txt
tests/FILEFORMAT.md
tests/Makefile.am
tests/Makefile.in
tests/README.md
tests/appveyor.pm
tests/azure.pm
tests/badsymbols.pl
tests/certs/Makefile.am
tests/certs/Makefile.in
tests/certs/scripts/Makefile.am
tests/certs/scripts/Makefile.in
tests/certs/scripts/genroot.sh
tests/certs/scripts/genserv.sh
tests/data/CMakeLists.txt
tests/data/DISABLED
tests/data/Makefile.am
tests/data/Makefile.in
tests/data/Makefile.inc
tests/data/test1001
tests/data/test1002
tests/data/test1004
tests/data/test1008
tests/data/test1021
tests/data/test1034
tests/data/test1035
tests/data/test1048
tests/data/test1053
tests/data/test1064
tests/data/test1065
tests/data/test1095
tests/data/test1105
tests/data/test1115
tests/data/test1116
tests/data/test1117
tests/data/test1133
tests/data/test1135
tests/data/test1158
tests/data/test1185
tests/data/test1186
tests/data/test1187
tests/data/test1189
tests/data/test1210
tests/data/test1212
tests/data/test1215
tests/data/test1235
tests/data/test1238
tests/data/test1248
tests/data/test1249
tests/data/test1252
tests/data/test1274 [new file with mode: 0644]
tests/data/test1275 [new file with mode: 0644]
tests/data/test1293
tests/data/test1308
tests/data/test1315
tests/data/test1322
tests/data/test133
tests/data/test1400
tests/data/test1401
tests/data/test1402
tests/data/test1403
tests/data/test1404
tests/data/test1405
tests/data/test1406
tests/data/test1407
tests/data/test1420
tests/data/test1459
tests/data/test1461
tests/data/test1465
tests/data/test1467 [new file with mode: 0644]
tests/data/test1468 [new file with mode: 0644]
tests/data/test150
tests/data/test1501
tests/data/test1523
tests/data/test1538
tests/data/test1540
tests/data/test1543 [new file with mode: 0644]
tests/data/test155
tests/data/test1553
tests/data/test1561
tests/data/test158
tests/data/test1590
tests/data/test1597 [new file with mode: 0644]
tests/data/test1614 [new file with mode: 0644]
tests/data/test163
tests/data/test1635 [new file with mode: 0644]
tests/data/test166
tests/data/test1670 [new file with mode: 0644]
tests/data/test1671 [new file with mode: 0644]
tests/data/test1680 [new file with mode: 0644]
tests/data/test1681 [new file with mode: 0644]
tests/data/test1682 [new file with mode: 0644]
tests/data/test1683 [new file with mode: 0644]
tests/data/test169
tests/data/test170
tests/data/test1700
tests/data/test1701
tests/data/test1702
tests/data/test173
tests/data/test174
tests/data/test175
tests/data/test177
tests/data/test18
tests/data/test1800
tests/data/test186
tests/data/test1919 [new file with mode: 0644]
tests/data/test1933
tests/data/test1934
tests/data/test1935
tests/data/test1936
tests/data/test1937
tests/data/test1938
tests/data/test1940 [new file with mode: 0644]
tests/data/test1941 [new file with mode: 0644]
tests/data/test1942 [new file with mode: 0644]
tests/data/test1943 [new file with mode: 0644]
tests/data/test1944 [new file with mode: 0644]
tests/data/test1945 [new file with mode: 0644]
tests/data/test1946 [new file with mode: 0644]
tests/data/test1947 [new file with mode: 0644]
tests/data/test1948 [new file with mode: 0644]
tests/data/test1955 [new file with mode: 0644]
tests/data/test2025
tests/data/test2028
tests/data/test2029
tests/data/test2030
tests/data/test2031
tests/data/test2032
tests/data/test2058
tests/data/test2059
tests/data/test2060
tests/data/test2073
tests/data/test2081
tests/data/test209
tests/data/test21
tests/data/test213
tests/data/test2300 [new file with mode: 0644]
tests/data/test2301 [new file with mode: 0644]
tests/data/test2302 [new file with mode: 0644]
tests/data/test2303 [new file with mode: 0644]
tests/data/test239
tests/data/test243
tests/data/test245
tests/data/test246
tests/data/test258
tests/data/test259
tests/data/test262
tests/data/test265
tests/data/test266
tests/data/test267
tests/data/test277
tests/data/test3021
tests/data/test3022
tests/data/test3026 [new file with mode: 0644]
tests/data/test3027 [new file with mode: 0644]
tests/data/test304
tests/data/test31
tests/data/test356
tests/data/test358
tests/data/test359
tests/data/test368
tests/data/test372 [new file with mode: 0644]
tests/data/test373 [new file with mode: 0644]
tests/data/test374 [new file with mode: 0644]
tests/data/test375 [new file with mode: 0644]
tests/data/test376 [new file with mode: 0644]
tests/data/test378 [new file with mode: 0644]
tests/data/test379 [new file with mode: 0644]
tests/data/test380 [new file with mode: 0644]
tests/data/test381 [new file with mode: 0644]
tests/data/test383 [new file with mode: 0644]
tests/data/test384 [new file with mode: 0644]
tests/data/test385 [new file with mode: 0644]
tests/data/test386 [new file with mode: 0644]
tests/data/test387 [new file with mode: 0644]
tests/data/test388 [new file with mode: 0644]
tests/data/test389 [new file with mode: 0644]
tests/data/test39
tests/data/test390 [new file with mode: 0644]
tests/data/test391 [new file with mode: 0644]
tests/data/test398 [new file with mode: 0644]
tests/data/test399 [new file with mode: 0644]
tests/data/test41
tests/data/test411 [new file with mode: 0644]
tests/data/test412 [new file with mode: 0644]
tests/data/test413 [new file with mode: 0644]
tests/data/test414 [new file with mode: 0644]
tests/data/test415 [new file with mode: 0644]
tests/data/test435
tests/data/test436 [new file with mode: 0644]
tests/data/test44
tests/data/test440 [new file with mode: 0644]
tests/data/test441 [new file with mode: 0644]
tests/data/test442 [new file with mode: 0644]
tests/data/test443 [new file with mode: 0644]
tests/data/test444 [new file with mode: 0644]
tests/data/test445 [new file with mode: 0644]
tests/data/test493
tests/data/test495 [new file with mode: 0644]
tests/data/test496 [new file with mode: 0644]
tests/data/test511
tests/data/test516
tests/data/test547
tests/data/test548
tests/data/test554
tests/data/test555
tests/data/test58
tests/data/test584
tests/data/test587
tests/data/test589
tests/data/test590
tests/data/test643
tests/data/test644 [new file with mode: 0644]
tests/data/test645
tests/data/test646
tests/data/test647
tests/data/test648
tests/data/test649
tests/data/test650
tests/data/test651
tests/data/test652
tests/data/test653
tests/data/test654
tests/data/test666
tests/data/test667
tests/data/test668
tests/data/test669
tests/data/test67
tests/data/test670
tests/data/test671
tests/data/test672
tests/data/test673
tests/data/test675
tests/data/test679 [new file with mode: 0644]
tests/data/test68
tests/data/test680 [new file with mode: 0644]
tests/data/test681 [new file with mode: 0644]
tests/data/test682 [new file with mode: 0644]
tests/data/test683 [new file with mode: 0644]
tests/data/test684 [new file with mode: 0644]
tests/data/test685 [new file with mode: 0644]
tests/data/test69
tests/data/test700
tests/data/test701
tests/data/test702
tests/data/test706
tests/data/test707
tests/data/test708
tests/data/test709
tests/data/test71
tests/data/test710
tests/data/test711
tests/data/test712
tests/data/test713
tests/data/test714
tests/data/test715
tests/data/test718
tests/data/test8
tests/data/test81
tests/data/test822
tests/data/test827
tests/data/test852
tests/data/test855
tests/data/test868
tests/data/test873
tests/data/test89
tests/data/test898 [new file with mode: 0644]
tests/data/test9
tests/data/test90
tests/data/test906
tests/data/test91
tests/data/test921
tests/data/test926
tests/data/test957
tests/data/test958
tests/data/test961
tests/data/test963
tests/data/test972
tests/data/test973 [new file with mode: 0644]
tests/data/test974 [new file with mode: 0644]
tests/data/test975 [new file with mode: 0644]
tests/data/test976 [new file with mode: 0644]
tests/data/test977 [new file with mode: 0644]
tests/dictserver.py
tests/directories.pm
tests/disable-scan.pl
tests/error-codes.pl
tests/extern-scan.pl
tests/ftp.pm
tests/ftpserver.pl
tests/getpart.pm
tests/http2-server.pl
tests/httpserver.pl
tests/libtest/CMakeLists.txt
tests/libtest/Makefile.am
tests/libtest/Makefile.in
tests/libtest/Makefile.inc
tests/libtest/chkdecimalpoint.c
tests/libtest/chkhostname.c
tests/libtest/first.c
tests/libtest/lib1156.c
tests/libtest/lib1500.c
tests/libtest/lib1501.c
tests/libtest/lib1502.c
tests/libtest/lib1506.c
tests/libtest/lib1507.c
tests/libtest/lib1508.c
tests/libtest/lib1509.c
tests/libtest/lib1510.c
tests/libtest/lib1511.c
tests/libtest/lib1512.c
tests/libtest/lib1513.c
tests/libtest/lib1514.c
tests/libtest/lib1515.c
tests/libtest/lib1517.c
tests/libtest/lib1518.c
tests/libtest/lib1520.c
tests/libtest/lib1522.c
tests/libtest/lib1523.c
tests/libtest/lib1525.c
tests/libtest/lib1526.c
tests/libtest/lib1527.c
tests/libtest/lib1528.c
tests/libtest/lib1529.c
tests/libtest/lib1530.c
tests/libtest/lib1531.c
tests/libtest/lib1532.c
tests/libtest/lib1533.c
tests/libtest/lib1534.c
tests/libtest/lib1535.c
tests/libtest/lib1536.c
tests/libtest/lib1537.c
tests/libtest/lib1538.c
tests/libtest/lib1540.c
tests/libtest/lib1542.c
tests/libtest/lib1550.c
tests/libtest/lib1551.c
tests/libtest/lib1552.c
tests/libtest/lib1553.c
tests/libtest/lib1554.c
tests/libtest/lib1555.c
tests/libtest/lib1556.c
tests/libtest/lib1557.c
tests/libtest/lib1558.c
tests/libtest/lib1559.c
tests/libtest/lib1560.c
tests/libtest/lib1564.c
tests/libtest/lib1565.c
tests/libtest/lib1567.c
tests/libtest/lib1568.c
tests/libtest/lib1569.c
tests/libtest/lib1591.c
tests/libtest/lib1592.c
tests/libtest/lib1593.c
tests/libtest/lib1594.c
tests/libtest/lib1597.c [new file with mode: 0644]
tests/libtest/lib1905.c
tests/libtest/lib1906.c
tests/libtest/lib1907.c
tests/libtest/lib1908.c
tests/libtest/lib1910.c
tests/libtest/lib1911.c
tests/libtest/lib1912.c
tests/libtest/lib1913.c
tests/libtest/lib1915.c
tests/libtest/lib1916.c
tests/libtest/lib1918.c
tests/libtest/lib1919.c [new file with mode: 0644]
tests/libtest/lib1933.c
tests/libtest/lib1934.c
tests/libtest/lib1935.c
tests/libtest/lib1936.c
tests/libtest/lib1937.c
tests/libtest/lib1938.c
tests/libtest/lib1939.c
tests/libtest/lib1940.c [new file with mode: 0644]
tests/libtest/lib1945.c [new file with mode: 0644]
tests/libtest/lib1947.c [new file with mode: 0644]
tests/libtest/lib1948.c [new file with mode: 0644]
tests/libtest/lib1955.c [new file with mode: 0644]
tests/libtest/lib2301.c [new file with mode: 0644]
tests/libtest/lib2302.c [new file with mode: 0644]
tests/libtest/lib3010.c
tests/libtest/lib3025.c
tests/libtest/lib3026.c [new file with mode: 0644]
tests/libtest/lib3027.c [new file with mode: 0644]
tests/libtest/lib500.c
tests/libtest/lib501.c
tests/libtest/lib502.c
tests/libtest/lib503.c
tests/libtest/lib504.c
tests/libtest/lib505.c
tests/libtest/lib506.c
tests/libtest/lib507.c
tests/libtest/lib508.c
tests/libtest/lib509.c
tests/libtest/lib510.c
tests/libtest/lib511.c
tests/libtest/lib512.c
tests/libtest/lib513.c
tests/libtest/lib514.c
tests/libtest/lib515.c
tests/libtest/lib516.c
tests/libtest/lib517.c
tests/libtest/lib518.c
tests/libtest/lib519.c
tests/libtest/lib520.c
tests/libtest/lib521.c
tests/libtest/lib523.c
tests/libtest/lib524.c
tests/libtest/lib525.c
tests/libtest/lib526.c
tests/libtest/lib530.c
tests/libtest/lib533.c
tests/libtest/lib537.c
tests/libtest/lib539.c
tests/libtest/lib540.c
tests/libtest/lib541.c
tests/libtest/lib542.c
tests/libtest/lib543.c
tests/libtest/lib544.c
tests/libtest/lib547.c
tests/libtest/lib549.c
tests/libtest/lib552.c
tests/libtest/lib553.c
tests/libtest/lib554.c
tests/libtest/lib555.c
tests/libtest/lib556.c
tests/libtest/lib557.c
tests/libtest/lib558.c
tests/libtest/lib559.c
tests/libtest/lib560.c
tests/libtest/lib562.c
tests/libtest/lib564.c
tests/libtest/lib566.c
tests/libtest/lib567.c
tests/libtest/lib568.c
tests/libtest/lib569.c
tests/libtest/lib570.c
tests/libtest/lib571.c
tests/libtest/lib572.c
tests/libtest/lib573.c
tests/libtest/lib574.c
tests/libtest/lib575.c
tests/libtest/lib576.c
tests/libtest/lib578.c
tests/libtest/lib579.c
tests/libtest/lib582.c
tests/libtest/lib583.c
tests/libtest/lib586.c
tests/libtest/lib589.c
tests/libtest/lib590.c
tests/libtest/lib591.c
tests/libtest/lib597.c
tests/libtest/lib598.c
tests/libtest/lib599.c
tests/libtest/lib643.c
tests/libtest/lib650.c
tests/libtest/lib651.c
tests/libtest/lib652.c
tests/libtest/lib653.c
tests/libtest/lib654.c
tests/libtest/lib655.c
tests/libtest/lib658.c
tests/libtest/lib659.c
tests/libtest/lib661.c
tests/libtest/lib666.c
tests/libtest/lib667.c
tests/libtest/lib668.c
tests/libtest/lib670.c
tests/libtest/lib674.c
tests/libtest/lib676.c
tests/libtest/lib677.c
tests/libtest/lib678.c
tests/libtest/libauthretry.c
tests/libtest/libntlmconnect.c
tests/libtest/libprereq.c
tests/libtest/mk-lib1521.pl
tests/libtest/notexists.pl
tests/libtest/sethostname.c
tests/libtest/sethostname.h
tests/libtest/stub_gssapi.c
tests/libtest/stub_gssapi.h
tests/libtest/test.h
tests/libtest/test1013.pl
tests/libtest/test1022.pl
tests/libtest/test307.pl
tests/libtest/test610.pl
tests/libtest/test613.pl
tests/libtest/testtrace.c
tests/libtest/testtrace.h
tests/libtest/testutil.c
tests/libtest/testutil.h
tests/manpage-scan.pl
tests/manpage-syntax.pl
tests/markdown-uppercase.pl [new file with mode: 0644]
tests/mem-include-scan.pl
tests/memanalyze.pl
tests/negtelnetserver.py
tests/nroff-scan.pl
tests/options-scan.pl
tests/pathhelp.pm
tests/rtspserver.pl
tests/runtests.1
tests/runtests.pl
tests/secureserver.pl
tests/server/CMakeLists.txt
tests/server/Makefile.am
tests/server/Makefile.in
tests/server/Makefile.inc
tests/server/base64.pl
tests/server/disabled.c
tests/server/fake_ntlm.c
tests/server/getpart.c
tests/server/getpart.h
tests/server/mqttd.c
tests/server/resolve.c
tests/server/rtspd.c
tests/server/server_setup.h
tests/server/server_sockaddr.h
tests/server/sockfilt.c
tests/server/socksd.c
tests/server/sws.c
tests/server/testpart.c
tests/server/tftp.h
tests/server/tftpd.c
tests/server/util.c
tests/server/util.h
tests/serverhelp.pm
tests/smbserver.py
tests/sshhelp.pm
tests/sshserver.pl
tests/symbol-scan.pl
tests/testcurl.1
tests/testcurl.pl
tests/tftpserver.pl
tests/unit/CMakeLists.txt
tests/unit/Makefile.am
tests/unit/Makefile.in
tests/unit/Makefile.inc
tests/unit/README.md
tests/unit/curlcheck.h
tests/unit/unit1300.c
tests/unit/unit1301.c
tests/unit/unit1302.c
tests/unit/unit1303.c
tests/unit/unit1304.c
tests/unit/unit1305.c
tests/unit/unit1307.c
tests/unit/unit1308.c
tests/unit/unit1309.c
tests/unit/unit1323.c
tests/unit/unit1330.c
tests/unit/unit1394.c
tests/unit/unit1395.c
tests/unit/unit1396.c
tests/unit/unit1397.c
tests/unit/unit1398.c
tests/unit/unit1399.c
tests/unit/unit1600.c
tests/unit/unit1601.c
tests/unit/unit1602.c
tests/unit/unit1603.c
tests/unit/unit1604.c
tests/unit/unit1605.c
tests/unit/unit1606.c
tests/unit/unit1607.c
tests/unit/unit1608.c
tests/unit/unit1609.c
tests/unit/unit1610.c
tests/unit/unit1611.c
tests/unit/unit1612.c
tests/unit/unit1614.c [new file with mode: 0644]
tests/unit/unit1620.c
tests/unit/unit1621.c
tests/unit/unit1650.c
tests/unit/unit1651.c
tests/unit/unit1652.c
tests/unit/unit1653.c
tests/unit/unit1654.c
tests/unit/unit1655.c
tests/unit/unit1660.c
tests/unit/unit1661.c
tests/util.py
tests/valgrind.pm
tests/version-scan.pl
winbuild/Makefile.vc
winbuild/MakefileBuild.vc
winbuild/README.md
winbuild/gen_resp_file.bat

diff --git a/CHANGES b/CHANGES
index 692f78f2bb6f3f958dd8335efa90331b878318f8..d48ababb4fa4cd6f392f5370fd2e2daa124319d2 100644 (file)
--- a/CHANGES
+++ b/CHANGES
 
                                   Changelog
 
-Version 7.81.0 (5 Jan 2022)
+Version 7.86.0 (26 Oct 2022)
 
-Daniel Stenberg (5 Jan 2022)
-- RELEASE-NOTES: synced
-  
-  curl 7.81.0 release
+Daniel Stenberg (26 Oct 2022)
+- RELEASE: synced
 
-- THANKS: add names from 7.81.0 release
+  The 7.86.0 release
 
-- curl_multi_init.3: fix the copyright year range
+- THANKS: added from the 7.86.0 release
 
-- test719-721: require "proxy" feature present to run
-  
-  Bug: https://github.com/curl/curl/pull/8223#issuecomment-1005188696
-  Reported-by: Marc Hörsken
-  
-  Closes #8226
+Viktor Szakats (25 Oct 2022)
+- noproxy: include netinet/in.h for htonl()
 
-- test719: require ipv6 support to run
-  
-  Follow-up to effd2bd7ba2a5fd244
-  Reported-by: Marc Hörsken
-  Bug: https://github.com/curl/curl/pull/8217#issuecomment-1004681145
-  
-  Closes #8223
-
-- test719-721: verify SOCKS details
-  
-  Using the new verify/socks details
-
-- runtests: add verify/socks check
-  
-  If used, this data is compared with the data in log/socksd-request.log
-  which the socksd server logs.
-  
-  Added to FILEFORMAT.md
-
-- server/socksd: log atyp + address in a separate log
-  
-  To allow the test suite to verify that the right data arrived
-
-- socks5: use appropriate ATYP for numerical IP address host names
-  
-  When not resolving the address locallly (known as socks5h).
-  
-  Add test 719 and 720 to verify.
-  
-  Reported-by: Peter Piekarski
-  Fixes #8216
-  Closes #8217
-
-Jay Satiro (3 Jan 2022)
-- curl_multi_init.3: fix EXAMPLE formatting
-
-Daniel Stenberg (3 Jan 2022)
-- RELEASE-NOTES: synced
+  Solve the Amiga build warning by including `netinet/in.h`.
 
-- libtest: avoid "assignment within conditional expression"
-  
-  In lib530, lib540 and lib582
-  
-  Closes #8218
-
-- ftp: disable warning 4706 in MSVC
-  
-  Follow-up to 21248e052d
-  
-  Disabling "assignment within conditional expression" for MSVC needs to
-  be done before the function starts, for it to take effect.
-  
-  Closes #8218
-
-- tool_operate: warn if too many output arguments were found
-  
-  More output instructions than URLs is likely a user error.
-  
-  Add test case 371 to verify
-  
-  Closes #8210
-
-- .github/workflows/mbedtls.yml: bump to mbedtls 3.1.0
-  
-  Closes #8215
-
-- zuul: remove the mbedtls jobs
-  
-  Now running as github workflows
-  
-  Closes #8215
-
-- github/workflows: add mbedtls and mbedtls-clang
-  
-  Closes #8215
-
-- [Valentin Richter brought this change]
-
-  mbedtls: fix private member designations for v3.1.0
-  
-  "As a last resort, you can access the field foo of a structure bar by
-  writing bar.MBEDTLS_PRIVATE(foo). Note that you do so at your own risk,
-  since such code is likely to break in a future minor version of Mbed
-  TLS." -
-  https://github.com/ARMmbed/mbedtls/blob/f2d1199edc5834df4297f247f213e614f7782d1d/docs/3.0-migration-guide.md
-  
-  That future minor version is v3.1.0. I set the >= to == for the version
-  checks because v3.1.0 is a release, and I am not sure when the private
-  designation was reverted after v3.0.0.
-  
-  Closes #8214
-
-- [Valentin Richter brought this change]
-
-  cmake: prevent dev warning due to mismatched arg
-  
-  -- curl version=[7.81.0-DEV]
-  CMake Warning (dev) at /usr/share/cmake-3.22.1/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
-    The package name passed to `find_package_handle_standard_args` (MBEDTLS)
-    does not match the name of the calling package (MbedTLS).  This can lead to
-    problems in calling code that expects `find_package` result variables
-    (e.g., `_FOUND`) to follow a certain pattern.
-  Call Stack (most recent call first):
-    deps/curl/CMake/FindMbedTLS.cmake:31 (find_package_handle_standard_args)
-    deps/curl/CMakeLists.txt:473 (find_package)
-  This warning is for project developers.  Use -Wno-dev to suppress it.
-  
-  Closes #8207
-
-- urlapi: if possible, shorten given numerical IPv6 addresses
-  
-  Extended test 1560 to verify
-  
-  Closes #8206
+  `krb5.c` and `socketpair.c` are using `htonl()` too. This header is
+  already included in those sources.
 
-- [Michał Antoniak brought this change]
+  Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309
 
-  url: reduce ssl backend count for CURL_DISABLE_PROXY builds
-  
-  Closes #8212
-
-- KNOWN_BUGS: "Trying local ports fails on Windows"
-  
-  Reported-by: gclinch on github
-  Closes #8112
-
-- misc: update copyright year range
-
-- zuul: remove the wolfssl even more
-  
-  Follow-up to 1914465cf180d32b3d
-
-- examples/multi-single.c: remove WAITMS()
-  
-  As it isn't used.
-  
-  Reported-by: Melroy van den Berg
-  Fixes #8200
-  Closes #8201
-
-- gtls: add gnutls include for the session type
-  
-  Follow-up to 8fbd6feddfa5 to make it build more universally
-
-- m4/curl-compilers: tell clang -Wno-pointer-bool-conversion
-  
-  To hush compiler warnings we don't care for: error: address of function
-  'X' will always evaluate to 'true'
-  
-  Fixes #8197
-  Closes #8198
-
-- http_proxy: don't close the socket (too early)
-  
-  ... and double-check in the OpenSSL shutdown that the socket is actually
-  still there before it is used.
-  
-  Fixes #8193
-  Closes #8195
-  
-  Reported-by: Leszek Kubik
-
-- ngtcp2: verify the server certificate for the gnutls case
-  
-  Closes #8178
-
-- ngtcp2: verify the server cert on connect (quictls)
-  
-  Make ngtcp2+quictls correctly acknowledge `CURLOPT_SSL_VERIFYPEER` and
-  `CURLOPT_SSL_VERIFYHOST`.
-  
-  The name check now uses a function from lib/vtls/openssl.c which will
-  need attention for when TLS is not done by OpenSSL or is disabled while
-  QUIC is enabled.
-  
-  Possibly the servercert() function in openssl.c should be adjusted to be
-  able to use for both regular TLS and QUIC.
-  
-  Ref: #8173
-  Closes #8178
-
-- zuul: remove the wolfssl build
-
-- github workflow: add wolfssl
-  
-  Closes #8196
-
-- [Nicolas Sterchele brought this change]
-
-  zuul: fix quiche build pointing to wrong Cargo
-  
-  Fixes #8184
-  Closes #8189
-
-- checksrc: detect more kinds of NULL comparisons we avoid
-  
-  Co-authored-by: Jay Satiro
-  Closes #8180
+  Reviewed-by: Daniel Stenberg
+  Closes #9787
 
-- RELEASE-NOTES: synced
+Marc Hoersken (24 Oct 2022)
+- CI: fix AppVeyor status failing for starting jobs
 
-- mesalink: remove the BACKEND define kludge
-  
-  Closes #8183
+Daniel Stenberg (24 Oct 2022)
+- test445: verifies the protocols-over-http-proxy flaw and fix
 
-- schannel: remove the BACKEND define kludge
-  
-  Closes #8182
+- http_proxy: restore the protocol pointer on error
 
-- gtls: check return code for gnutls_alpn_set_protocols
-  
-  Closes #8181
+  Reported-by: Trail of Bits
 
-- [Stefan Huber brought this change]
+  Closes #9790
 
-  README: label the link to the support document
-  
-  Closes #8185
+- multi: remove duplicate include of connect.h
 
-- docs/HTTP3: describe how to setup a h3 reverse-proxy for testing
-  
-  Assisted-by: Matt Holt
-  
-  Closes #8177
+  Reported-by: Martin Strunz
+  Fixes #9794
+  Closes #9795
 
-- libcurl-multi.3: "SOCKS proxy handshakes" are not blocking
-  
-  Since 4a4b63daaa0
+Daniel Gustafsson (24 Oct 2022)
+- idn: fix typo in test description
 
-- [Vladimir Panteleev brought this change]
+  s/enabked/enabled/i
 
-  tests: Add test for CURLOPT_HTTP200ALIASES
+Daniel Stenberg (24 Oct 2022)
+- url: use IDN decoded names for HSTS checks
 
-- [Vladimir Panteleev brought this change]
+  Reported-by: Hiroki Kurosawa
 
-  http: Fix CURLOPT_HTTP200ALIASES
-  
-  The httpcode < 100 check was also triggered when none of the fields were
-  parsed, thus making the if(!nc) block unreachable.
-  
-  Closes #8171
+  Closes #9791
 
-- RELEASE-NOTES: synced
+- unit1614: fix disabled-proxy build
 
-- language: "email"
-  
-  Missed three occurrences.
-  
-  Follow-up to 7a92f86
-
-- nss:set_cipher don't clobber the cipher list
-  
-  The string is set by the user and needs to remain intact for proper
-  connection reuse etc.
-  
-  Reported-by: Eric Musser
-  Fixes #8160
-  Closes #8161
-
-- misc: s/e-mail/email
-  
-  Consistency is king. Following the lead in everything curl.
-  
-  Closes #8159
-
-- [Tobias Nießen brought this change]
-
-  docs: fix typo in OpenSSL 3 build instructions
-  
-  Closes #8162
-
-- linkcheck.yml: add CI job that checks markdown links
-  
-  Closes #8158
-
-- RELEASE-PROCEDURE.md: remove ICAL link and old release dates
-
-- BINDINGS.md: "markdown-link-check-disable"
-  
-  It feels a bit unfortunate to litter an ugly tag for this functionality,
-  but if we get link scans of all markdown files, this might be worth the
-  price.
-
-- docs: fix dead links, remove ECH.md
-
-Jay Satiro (16 Dec 2021)
-- openssl: define HAVE_OPENSSL_VERSION for OpenSSL 1.1.0+
-  
-  Prior to this change OpenSSL_version was only detected in configure
-  builds. For other builds the old version parsing code was used which
-  would result in incorrect versioning for OpenSSL 3:
-  
-  Before:
-  
-  curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.0a zlib/1.2.11
-  WinIDN libssh2/1.9.0
-  
-  After:
-  
-  curl 7.80.0 (i386-pc-win32) libcurl/7.80.0 OpenSSL/3.0.1 zlib/1.2.11
-  WinIDN libssh2/1.9.0
-  
-  Reported-by: lllaffer@users.noreply.github.com
-  
-  Fixes https://github.com/curl/curl/issues/8154
-  Closes https://github.com/curl/curl/pull/8155
-
-Daniel Stenberg (16 Dec 2021)
-- [James Fuller brought this change]
-
-  docs: add known bugs list to HTTP3.md
-  
-  Closes #8156
-
-Dan Fandrich (15 Dec 2021)
-- BINDINGS: add one from Everything curl and update a link
-
-- libcurl-security.3: mention address and URL mitigations
-  
-  The new CURLOPT_PREREQFUNCTION callback is another way to sanitize
-  addresses.
-  Using the curl_url API is a way to mitigate against attacks relying on
-  URL parsing differences.
-
-Daniel Stenberg (15 Dec 2021)
-- RELEASE-NOTES: synced
+  Follow-up to 1e9a538e05c01
 
-- x509asn1: return early on errors
-  
-  Overhaul to make sure functions that detect errors bail out early with
-  error rather than trying to continue and risk hiding the problem.
-  
-  Closes #8147
+  Closes #9792
 
-- [Patrick Monnerat brought this change]
+Daniel Gustafsson (24 Oct 2022)
+- cookies: optimize control character check
 
-  openldap: several minor improvements
-  
-  - Early check proper LDAP URL syntax. Reject URLs with a userinfo part.
-  - Use dynamic memory for ldap_init_fd() URL rather than a
-    stack-allocated buffer.
-  - Never chase referrals: supporting it would require additional parallel
-    connections and alternate authentication credentials.
-  - Do not wait 1 microsecond while polling/reading query response data.
-  - Store last received server code for retrieval with CURLINFO_RESPONSE_CODE.
-  
-  Closes #8140
+  When checking for invalid octets the strcspn() call will return the
+  position of the first found invalid char or the first NULL byte.
+  This means that we can check the indicated position in the search-
+  string saving a strlen() call.
 
-- [Michał Antoniak brought this change]
+  Closes: #9736
+  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
 
-  misc: remove unused doh flags when CURL_DISABLE_DOH is defined
-  
-  Closes #8148
-
-- mbedtls: fix CURLOPT_SSLCERT_BLOB
-  
-  The memory passed to mbedTLS for this needs to be null terminated.
-  
-  Reported-by: Florian Van Heghe
-  Closes #8146
-
-- asyn-ares: ares_getaddrinfo needs no happy eyeballs timer
-  
-  Closes #8142
-
-- mailmap: add Yongkang Huang
-  
-  From #8141
-
-- [Yongkang Huang brought this change]
-
-  check ssl_config when re-use proxy connection
-
-- mbedtls: do a separate malloc for ca_info_blob
-  
-  Since the mbedTLS API requires the data to the null terminated.
-  
-  Follow-up to 456c53730d21b1fad0c7f72c1817
-  
-  Fixes #8139
-  Closes #8145
-
-Marc Hoersken (14 Dec 2021)
-- CI: build examples for additional code verification
-  
-  Some CIs already build them, let's do it on more of them.
-  
-  Reviewed-by: Daniel Stenberg
-  
-  Follow up to #7690 and 77311f420a541a0de5b3014e0e40ff8b4205d4af
-  Replaces #7591
-  Closes #7922
-
-- docs/examples: workaround broken -Wno-pedantic-ms-format
-  
-  Avoid CURL_FORMAT_CURL_OFF_T by using unsigned long instead.
-  Improve size_t to long conversion in imap-append.c example.
-  
-  Ref: https://github.com/curl/curl/issues/6079
-  Ref: https://github.com/curl/curl/pull/6082
-  Assisted-by: Jay Satiro
-  Reviewed-by: Daniel Stenberg
-  
-  Preparation of #7922
+Daniel Stenberg (24 Oct 2022)
+- netrc: replace fgets with Curl_get_line
 
-- tests/data/test302[12]: fix MSYS2 path conversion of hostpubsha256
-  
-  Ref: https://www.msys2.org/wiki/Porting/#filesystem-namespaces
-  
-  Reviewed-by: Marcel Raad
-  Reviewed-by: Jay Satiro
-  
-  Fixes #8084
-  Closes #8138
+  Make the parser only accept complete lines and avoid problems with
+  overly long lines.
 
-Daniel Stenberg (13 Dec 2021)
-- [Patrick Monnerat brought this change]
+  Reported-by: Hiroki Kurosawa
 
-  openldap: simplify ldif generation code
-  
-  and take care of zero-length values, avoiding conversion to base64
-  and/or trailing spaces.
-  
-  Closes #8136
+  Closes #9789
 
-- example/progressfunc: remove code for old libcurls
-  
-  7.61.0 is over three years old now, remove all #ifdefs for handling
-  ancient libcurl versions so that the example gets easier to read and
-  understand
-  
-  Closes #8137
+- RELEASE-NOTES: add "Planned upcoming removals include"
 
-- [x2018 brought this change]
+  URL: https://curl.se/mail/archive-2022-10/0001.html
 
-  sha256/md5: return errors when init fails
-  
-  Closes #8133
+  Suggested-by: Dan Fandrich
 
-- TODO: 13.3 Defeat TLS fingerprinting
-  
-  Closes #8119
+Viktor Szakats (23 Oct 2022)
+- ci: bump to gcc-11 for macos
 
-- RELEASE-NOTES: synced
+  Ref: https://github.blog/changelog/2022-10-03-github-actions-jobs-running-on-macos-latest-are-now-running-on-macos-12/
+  Ref: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
 
-- [Patrick Monnerat brought this change]
+  Reviewed-by: Max Dymond
+  Closes #9785
 
-  openldap: process search query response messages one by one
-  
-  Upon receiving large result sets, this reduces memory consumption and
-  allows starting to output results while the transfer is still in
-  progress.
-  
-  Closes #8101
-
-- hash: lazy-alloc the table in Curl_hash_add()
-  
-  This makes Curl_hash_init() infallible which saves error paths.
-  
-  Closes #8132
-
-- multi: cleanup the socket hash when destroying it
-  
-  Since each socket hash entry may themselves have a hash table in them,
-  the destroying of the socket hash needs to make sure all the subhashes
-  are also correctly destroyed to avoid leaking memory.
-  
-  Fixes #8129
-  Closes #8131
-
-- test1156: fixup the stdout check for Windows
-  
-  It is not text mode.
-  
-  Follow-up to 6f73e68d182
-  
-  Closes #8134
-
-- test1528: enable for hyper
-  
-  Closes #8128
-
-- test1527: enable for hyper
-  
-  Closes #8128
-
-- test1526: enable for hyper
-  
-  Closes #8128
-
-- test1525: slightly tweaked for hyper
-  
-  Closes #8128
-
-- test1156: enable for hyper
-  
-  Minor reorg of the lib1156 code and it works fine for hyper.
-  
-  Closes #8127
-
-- test661: enable for hyper
-  
-  Closes #8126
-
-- docs: fix proselint nits
-  
-  - remove a lot of exclamation marks
-  - use consistent spaces (1, not 2)
-  - use better words at some places
-  
-  Closes #8123
-
-- [RekGRpth brought this change]
-
-  BINDINGS.md: add cURL client for PostgreSQL
-  
-  Closes #8125
-
-- [RekGRpth brought this change]
-
-  CURLSHOPT_USERDATA.3: fix copy-paste mistake
-  
-  Closes #8124
-
-- docs: fix minor nroff format nits
-  
-  Repairs test 1140
-  
-  Follow-up to 436cdf82041
-
-- docs/URL-SYNTAX.md: space is not fine in a given URL
-
-- curl_multi_perform/socket_action.3: clarify what errors mean
-  
-  An error returned from one of these funtions mean that ALL still ongoing
-  transfers are to be considered failed.
-  
-  Ref: #8114
-  Closes #8120
-
-- libcurl-errors.3: add CURLM_ABORTED_BY_CALLBACK
-  
-  Follow-up to #8089 (2b3dd01)
-  
-  Closes #8116
-
-- hash: add asserts to help detect bad usage
-  
-  For example trying to add entries after the hash has been "cleaned up"
-  
-  Closes #8115
-
-- lib530: abort on curl_multi errors
-  
-  This makes torture tests run more proper.
-  
-  Also add an assert to trap situations where it would end up with no
-  sockets to wait for.
-  
-  Closes #8121
-
-- FAQ: we never pronounced it "see URL", we say "kurl"
+- Makefile.m32: reintroduce CROSSPREFIX and -W -Wall [ci skip]
 
-- RELEASE-NOTES: synced
+  - Reintroduce `CROSSPREFIX`:
 
-- CURLOPT_RESOLVE.3: minor polish
-  
-  Minor rephrasing for some explanations.
-  
-  Put the format strings in stand-alone lines with .nf/.fi to be easier to spot.
-  
-  Move "added in" to AVAILABILITY
-  
-  Closed #8110
-
-- test1556: adjust for hyper
-  
-  Closes #8105
-
-- test1554: adjust for hyper
-  
-  Closes #8104
-
-- retry-all-errors.d: make the example complete
-  
-  ... as it needs --retry too to work
-
-- TODO: 5.7 Require HTTP version X or higher
-  
-  Closes #7980
-
-- CURLOPT_STDERR.3: does not work with libcurl as a win32 DLL
-  
-  This is the exact same limitation already documented for
-  CURLOPT_WRITEDATA but should be clarified here. It also has a different
-  work-around.
-  
-  Reported-by: Stephane Pellegrino
-  Bug: https://github.com/curl/curl/issues/8102
-  Closes #8103
-
-- multi: handle errors returned from socket/timer callbacks
-  
-  The callbacks were partially documented to support this. Now the
-  behavior is documented and returning error from either of these
-  callbacks will effectively kill all currently ongoing transfers.
-  
-  Added test 530 to verify
-  
-  Reported-by: Marcelo Juchem
-  Fixes #8083
-  Closes #8089
-
-- http2:set_transfer_url() return early on OOM
-  
-  If curl_url() returns NULL this should return early to avoid mistakes -
-  even if right now the subsequent function invokes are all OK.
-  
-  Coverity (wrongly) pointed out this as a NULL deref.
-  
-  Closes #8100
-
-- tool_parsecfg: use correct free() call to free memory
-  
-  Detected by Coverity. CID 1494642.
-  Follow-up from 2be1aa619bca
-  
-  Closes #8099
-
-- tool_operate: fix potential memory-leak
-  
-  A 'CURLU *' would leak if url_proto() is called with no URL.
-  
-  Detected by Coverity. CID 1494643.
-  Follow-up to 18270893abdb19
-  Closes #8098
+    If set, we add it to the `CC` and `AR` values, and to the _default_
+    value of `RC`, which is `windres`. This allows to control each of
+    these individidually, while also allowing to simplify configuration
+    via `CROSSPREFIX`.
 
-- [Patrick Monnerat brought this change]
+    This variable worked differently earlier. Hopefully this new solution
+    hits a better compromise in usefulness/complexity/flexibility.
 
-  openldap: implement STARTTLS
-  
-  As this introduces use of CURLOPT_USE_SSL option for LDAP, also check
-  this option in ldap.c as it is not supported by this backend.
-  
-  Closes #8065
+    Follow-up to: aa970c4c08775afcd0c2853be89b0a6f02582d50
 
-- [Jun Tseng brought this change]
+  - Enable warnings again:
 
-  curl_easy_unescape.3: call curl_easy_cleanup in example
-  
-  Closes #8097
+    This time with an option to override it via `CFLAGS`. Warnings are
+    also enabled by default in CMake, `makefile.dj` and `makefile.amiga`
+    builds (not in autotools though).
 
-- [Jun Tseng brought this change]
+    Follow-up to 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3
 
-  curl_easy_escape.3: call curl_easy_cleanup in example
-  
-  Closes #8097
+  Closes #9784
 
-- tool_listhelp: sync
-  
-  Follow-up to 172068b76f
+- noproxy: silence unused variable warnings with no ipv6
 
-- [Damien Walsh brought this change]
+  Follow-up to 36474f1050c7f4117e3c8de6cc9217cfebfc717d
 
-  request.d: refer to 'method' rather than 'command'
-  
-  Closes #8094
+  Reviewed-by: Daniel Stenberg
+  Closes #9782
 
-- RELEASE-NOTES: synced
+Daniel Stenberg (22 Oct 2022)
+- test644: verify --xattr (with redirect)
 
-- writeout: fix %{http_version} for HTTP/3
-  
-  Output "3" properly when HTTP/3 was used.
-  
-  Reported-by: Bernat Mut
-  Fixes #8072
-  Closes #8092
-
-- urlapi: accept port number zero
-  
-  This is a regression since 7.62.0 (fb30ac5a2d).
-  
-  Updated test 1560 accordingly
-  
-  Reported-by: Brad Fitzpatrick
-  Fixes #8090
-  Closes #8091
-
-- [Mark Dodgson brought this change]
-
-  lift: ignore is a deprecated config option, use ignoreRules
-  
-  Closes #8082
-
-- [Alessandro Ghedini brought this change]
-
-  HTTP3: update quiche build instructions
-  
-  The repo repo was re-organized a bit, so the build instructions need to
-  be updated.
-  
-  Closes #8076
-
-- CURLMOPT_TIMERFUNCTION.3: call it expire time, not interval
-  
-  Since we say it is a non-repating timer
-
-- [Florian Van Heghe brought this change]
-
-  mbedTLS: include NULL byte in blob data length for CURLOPT_CAINFO_BLOB
-  
-  Fixes #8079
-  Closes #8081
-
-Jay Satiro (2 Dec 2021)
-- [Wyatt O'Day brought this change]
+- tool_xattr: save the original URL, not the final redirected one
 
-  version_win32: Check build number and platform id
-  
-  Prior to this change the build number was not checked during version
-  comparison, and the platform id was supposed to be checked but wasn't.
-  
-  Checking the build number is required for enabling "evergreen"
-  Windows 10/11 features (like TLS 1.3).
-  
-  Ref: https://github.com/curl/curl/pull/7784
-  
-  Closes https://github.com/curl/curl/pull/7824
-  Closes https://github.com/curl/curl/pull/7867
-
-- libssh2: fix error message for sha256 mismatch
-  
-  - On mismatch error show sha256 fingerprint in base64 format.
-  
-  Prior to this change the fingerprint was mistakenly printed in binary.
-
-Daniel Stenberg (1 Dec 2021)
-- [x2018 brought this change]
-
-  openssl: check the return value of BIO_new()
-  
-  Closes #8078
-
-Dan Fandrich (30 Nov 2021)
-- docs: Update the Reducing Size section
-  
-  Add many more options that can reduce the size of the binary that were
-  added since the last update. Update the sample minimal binary size for
-  version 7.80.0.
-
-- tests: Add some missing keywords to tests
-  
-  These are needed to skip some tests when configure options have disabled
-  certain features.
-
-Daniel Stenberg (30 Nov 2021)
-- [Florian Van Heghe brought this change]
-
-  mbedTLS: add support for CURLOPT_CAINFO_BLOB
-  
-  Closes #8071
+  Adjusted test 1621 accordingly.
 
-- [Glenn Strauss brought this change]
+  Reported-by: Viktor Szakats
+  Fixes #9766
+  Closes #9768
 
-  digest: compute user:realm:pass digest w/o userhash
-  
-  https://datatracker.ietf.org/doc/html/rfc7616#section-3.4.4
-    ... the client MUST calculate a hash of the username after
-        any other hash calculation ...
-  
-  Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
-  Closes #8066
+- docs: make sure libcurl opts examples pass in long arguments
 
-- config.d: update documentation to match the path search
-  
-  Assisted-by: Jay Satiro
+  Reported-by: Sergey
+  Fixes #9779
+  Closes #9780
 
-- tool_findfile: search for a file in the homedir
-  
-  The homedir() function is now renamed into findfile() and iterates over
-  all the environment variables trying to access the file in question
-  until it finds it. Last resort is then getpwuid() if
-  available. Previously it would first try to find a home directory and if
-  that was set, insist on checking only that directory for the file. This
-  now returns the full file name it finds.
-  
-  The Windows specific checks are now done differently too and in this
-  order:
-  
-  1 - %USERPROFILE%
-  2 - %APPDATA%
-  3 - %USERPROFILE%\\Application Data
-  
-  The windows order is modified to match how the Windows 10 ssh tool works
-  when it searches for .ssh/known_hosts.
-  
-  Reported-by: jeffrson on github
-  Co-authored-by: Jay Satiro
-  Fixes #8033
-  Closes #8035
-
-- docs: consistent manpage SYNOPSIS
-  
-  Make all libcurl related options use .nf (no fill) for the SYNOPSIS
-  section - for consistent look. roffit then renders that section using
-  <pre> (monospace font) in html for the website.
-  
-  Extended manpage-syntax (test 1173) with a basic check for it.
-  
-  Closes #8062
+Marc Hoersken (21 Oct 2022)
+- CI: fix AppVeyor job links only working for most recent build
 
-- RELEASE-NOTES: synced
+  Ref: https://github.com/curl/curl/pull/9768#issuecomment-1286675916
+  Reported-by: Daniel Stenberg
 
-- [Patrick Monnerat brought this change]
+  Follow up to #9769
+
+Viktor Szakats (21 Oct 2022)
+- noproxy: fix builds without AF_INET6
+
+  Regression from 1e9a538e05c0107c54ef81d9de7cd0b27cd13309
 
-  openldap: handle connect phase with a state machine
-  
-  Closes #8054
-
-- docs: address proselint nits
-  
-  - avoid exclamation marks
-  - use consistent number of spaces after periods: one
-  - avoid clichés
-  - avoid using 'very'
-  
-  Closes #8060
-
-- [Bruno Baguette brought this change]
-
-  FAQ: typo fix : "yout" ➤ "your"
-  
-  Closes #8059
-
-- [Bruno Baguette brought this change]
-
-  docs/INSTALL.md: typo fix : added missing "get" verb
-  
-  Closes #8058
-
-- insecure.d: detail its use for SFTP and SCP as well
-  
-  Closes #8056
-
-Viktor Szakats (25 Nov 2021)
-- Makefile.m32: rename -winssl option to -schannel and tidy up
-  
-  - accept `-schannel` as an alternative to `CFG` option `-winssl`
-    (latter still accepted, but deprecated)
-  - rename internal variable `WINSSL` to `SCHANNEL`
-  - make the `CFG` option evaluation shorter, without repeating the option
-    name
-  
-  Reviewed-by: Marcel Raad
   Reviewed-by: Daniel Stenberg
-  Closes #8053
-
-Daniel Stenberg (25 Nov 2021)
-- KNOWN_BUGS: 5.6 make distclean loops forever
-  
-  Reported-by: David Bohman
-  Closes #7716
-
-- KNOWN_BUGS: add one, remove one
-  
-  - 5.10 SMB tests fail with Python 2
-  
-  Just use python 3.
-  
-  + 5.10 curl hangs on SMB upload over stdin
-  
-  Closes #7896
-
-- urlapi: provide more detailed return codes
-  
-  Previously, the return code CURLUE_MALFORMED_INPUT was used for almost
-  30 different URL format violations. This made it hard for users to
-  understand why a particular URL was not acceptable. Since the API cannot
-  point out a specific position within the URL for the problem, this now
-  instead introduces a number of additional and more fine-grained error
-  codes to allow the API to return more exactly in what "part" or section
-  of the URL a problem was detected.
-  
-  Also bug-fixes curl_url_get() with CURLUPART_ZONEID, which previously
-  returned CURLUE_OK even if no zoneid existed.
-  
-  Test cases in 1560 have been adjusted and extended. Tests 1538 and 1559
-  have been updated.
-  
-  Updated libcurl-errors.3 and curl_url_strerror() accordingly.
-  
-  Closes #8049
-
-- urlapi: make Curl_is_absolute_url always use MAX_SCHEME_LEN
-  
-  Instad of having all callers pass in the maximum length, always use
-  it. The passed in length is instead used only as the length of the
-  target buffer for to storing the scheme name in, if used.
-  
-  Added the scheme max length restriction to the curl_url_set.3 man page.
-  
-  Follow-up to 45bcb2eaa78c79
-  
-  Closes #8047
 
-- [Jay Satiro brought this change]
+  Closes #9778
 
-  cmake: warn on use of the now deprecated symbols
-  
-  Follow-up to 9108da2c26d
-  
-  Closes #8052
-
-- [Kevin Burke brought this change]
-
-  tests/CI.md: add more information on CI environments
-  
-  Fixes #8012
-  Closes #8022
-
-- cmake: private identifiers use CURL_ instead of CMAKE_ prefix
-  
-  Since the 'CMAKE_' prefix is reserved for cmake's own private use.
-  Ref: https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html
-  
-  Reported-by: Boris Rasin
-  Fixes #7988
-  Closes #8044
-
-- urlapi: reject short file URLs
-  
-  file URLs that are 6 bytes or shorter are not complete. Return
-  CURLUE_MALFORMED_INPUT for those. Extended test 1560 to verify.
-  
-  Triggered by #8041
-  Closes #8042
-
-- curl: improve error message for --head with -J
-  
-  ... it now focuses on the "output of headers" combined with the
-  --remote-header-name option, as that is actually the problem. Both
-  --head and --include can output headers.
-  
-  Reported-by: nimaje on github
-  Fixes #7987
-  Closes #8045
+Daniel Stenberg (21 Oct 2022)
+- noproxy: support proxies specified using cidr notation
 
-- RELEASE-NOTES: synced
+  For both IPv4 and IPv6 addresses. Now also checks IPv6 addresses "correctly"
+  and not with string comparisons.
 
-- [Stefan Eissing brought this change]
+  Split out the noproxy checks and functionality into noproxy.c
 
-  urlapi: cleanup scheme parsing
-  
-  Makea Curl_is_absolute_url() always leave a defined 'buf' and avoids
-  copying on urls that do not start with a scheme.
-  
-  Closes #8043
-
-- tool_operate: only set SSH related libcurl options for SSH URLs
-  
-  For example, this avoids trying to find and set the known_hosts file (or
-  warn for its absence) if SFTP or SCP are not used.
-  
-  Closes #8040
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  rustls: remove comment about checking handshaking
-  
-  The comment is incorrect in two ways:
-   - It says the check needs to be last, but the check is actually first.
-   - is_handshaking actually starts out true.
-  
-  Closes #8038
-
-Marcel Raad (20 Nov 2021)
-- openssl: use non-deprecated API to read key parameters
-  
-  With OpenSSL 3.0, the parameters are read directly from the `EVP_PKEY`
-  using `EVP_PKEY_get_bn_param`.
-  
-  Closes https://github.com/curl/curl/pull/7893
-
-- openssl: reduce code duplication
-  
-  `BN_print`'s `BIGNUM` parameter has been `const` since OpenSSL 0.9.4.
-  
-  Closes https://github.com/curl/curl/pull/7893
-
-- openssl: remove `RSA_METHOD_FLAG_NO_CHECK` handling if unavailable
-  
-  The flag has been deprecated without replacement in OpenSSL 3.0.
-  
-  Closes https://github.com/curl/curl/pull/7893
-
-- openssl: remove usage of deprecated `SSL_get_peer_certificate`
-  
-  The function name was changed to `SSL_get1_peer_certificate` in OpenSSL
-  3.0.
-  
-  Closes https://github.com/curl/curl/pull/7893
-
-Daniel Stenberg (19 Nov 2021)
-- page-footer: fix typo
-  
-  Closes #8036
-
-- http: enable haproxy support for hyper backend
-  
-  This is done by having native code do the haproxy header output before
-  hyper issues its request. The little downside with this approach is that
-  we need the entire Curl_buffer_send() function built, which is otherwise
-  not used for hyper builds.
-  
-  If hyper ends up getting native support for the haproxy protocols we can
-  backpedal on this.
-  
-  Enables test 1455 and 1456
-  
-  Closes #8034
-
-- [Bernhard Walle brought this change]
-
-  configure: fix runtime-lib detection on macOS
-  
-  With a non-standard installation of openssl we get this error:
-  
-      checking run-time libs availability... failed
-      configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz
-  
-  There's already code to set LD_LIBRARY_PATH on Linux, so set
-  DYLD_LIBRARY_PATH equivalent on macOS.
-  
-  Closes #8028
+  Added unit test 1614 to verify checking functions.
 
-- [Don J Olmstead brought this change]
+  Reported-by: Mathieu Carbonneaux
 
-  cmake: don't set _USRDLL on a static Windows build
-  
-  Closes #8030
-
-- page-footer: document more environment variables
-  
-  ... that curl might use.
-  
-  Closes #8027
-
-- netrc.d: edit the .netrc example to look nicer
-  
-  Works nicely thanks to d1828b470f43d
-  
-  Closes #8025
-
-- tftp: mark protocol as not possible to do over CONNECT
-  
-  ... and make connect_init() refusing trying to tunnel protocols marked
-  as not working. Avoids a double-free.
-  
-  Reported-by: Even Rouault
-  Fixes #8018
-  Closes #8020
-
-- docs/cmdline-opts: do not say "protocols: all"
-  
-  Remove the lines saying "protocols: all". It makes the output in the
-  manpage look funny, and the expectation is probably by default that if
-  not anything is mentioned about protocols the option apply to them all.
-  
-  Closes #8021
-
-- curl.1: require "see also" for every documented option
-  
-  gen.pl now generates a warning if the "See Also" field is not filled in for a
-  command line option
-  
-  All command line options now provide one or more related options. 167
-  "See alsos" added!
-  
-  Closes #8019
-
-- insecure.d: expand and clarify
-  
-  Closes #8017
-
-- gen.pl: improve example output format
-  
-  Treat consecutive lines that start with a space to be "examples". They
-  are output enclosed by .nf and .fi
-  
-  Updated form.d to use this new fanciness
-  
-  Closes #8016
-
-- Revert "form-escape.d: double the back-slashes for proper man page output"
-  
-  This reverts commit a2d8eac04a4eb1d5a98cf24b4e5cec5cec565d27.
-  
-  silly me, it was intended to be one backslash!
-
-- form-escape.d: double the back-slashes for proper man page output
-
-- page-footer: add a mention of how to report bugs to the man page
+  Fixes #9773
+  Fixes #5745
+  Closes #9775
 
-- RELEASE-NOTES: synced
-  
-  and bump to 7.81.0-DEV
+- urlapi: remove two variable assigns
 
-- [Patrick Monnerat brought this change]
+  To please scan-build:
 
-  mime: use percent-escaping for multipart form field and file names
-  
-  Until now, form field and file names where escaped using the
-  backslash-escaping algorithm defined for multipart mails. This commit
-  replaces this with the percent-escaping method for URLs.
-  
-  As this may introduce incompatibilities with server-side applications, a
-  new libcurl option CURLOPT_MIME_OPTIONS with bitmask
-  CURLMIMEOPT_FORMESCAPE is introduced to revert to legacy use of
-  backslash-escaping. This is controlled by new cli tool option
-  --form-escape.
-  
-  New tests and documentation are provided for this feature.
-  
-  Reported by: Ryan Sleevi
-  Fixes #7789
-  Closes #7805
-
-- [Kevin Burke brought this change]
-
-  zuul.d: update rustls-ffi to version 0.8.2
-  
-  This version fixes errors with ALPN negotiation in rustls, which is
-  necessary for HTTP/2 support. For more information see the rustls-ffi
-  changelog.
-  
-  Closes #8013
-
-- configure: better diagnostics if hyper is built wrong
-  
-  If hyper is indeed present in the specified directory but couldn't be
-  used to find the correct symbol, then offer a different error message to
-  better help the user understand the issue.
-  
-  Suggested-by: Jacob Hoffman-Andrews
-  Fixes #8001
-  Closes #8005
-
-- test1939: require proxy support to run
-  
-  Follow-up to f0b7099a10d1a
-  
-  Closes #8011
-
-- test302[12]: run only with the libssh2 backend
-  
-  ... as the others don't support --hostpubsha256
-  
-  Reported-by: Paul Howarth
-  Fixes #8009
-  Closes #8010
-
-- runtests: make the SSH library a testable feature
-  
-  libssh2, libssh and wolfssh
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  rustls: read of zero bytes might be okay
-  
-  When we're reading out plaintext from rustls' internal buffers, we might
-  get a read of zero bytes (meaning a clean TCP close, including
-  close_notify). However, we shouldn't return immediately when that
-  happens, since we may have already copied out some plaintext bytes.
-  Break out of the loop when we get a read of zero bytes, and figure out
-  which path we're dealing with.
-  
-  Acked-by: Kevin Burke
-  
-  Closes #8003
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  rustls: remove incorrect EOF check
-  
-  The update to rustls-ffi 0.8.0 changed handling of EOF and close_notify.
-  From the CHANGELOG:
-  
-  > Handling of unclean close and the close_notify TLS alert. Mirroring
-  > upstream changes, a rustls_connection now tracks TCP closed state like
-  > so: rustls_connection_read_tls considers a 0-length read from its
-  > callback to mean "TCP stream was closed by peer."  If that happens
-  > before the peer sent close_notify, rustls_connection_read will return
-  > RUSTLS_RESULT_UNEXPECTED_EOF once the available plaintext bytes are
-  > exhausted. This is useful to protect against truncation attacks. Note:
-  > some TLS implementations don't send close_notify. If you are already
-  > getting length information from your protocol (e.g. Content-Length in
-  > HTTP) you may choose to ignore UNEXPECTED_EOF so long as the number of
-  > plaintext bytes was as expected.
-  
-  That means we don't need to check for unclean EOF in `cr_recv()`,
-  because `process_new_packets()` will give us an error if appropriate.
-  
-  Closes #8003
-
-- lib1939: make it endure torture tests
-  
-  Follow-up to f0b7099a10d1a
-  
-  Closes #8007
-
-- azure: make the "w/o HTTP/SMTP/IMAP" build disable SSL proper
-  
-  The configure line would previously depend on a configure mistake using
-  --without-openssl that is fixed and now this configure line needs
-  adjusting to use --without-ssl.
-  
-  Follow-up to b589696f0312d
-  
-  Closes #8006
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  configure: add -lm to configure for rustls build.
-  
-  Note: The list of libraries that rustc tells us we need to include is
-  longer, but also includes some more platform-specific libraries that I
-  am not sure how to effectively incorporate. Adding just -lm seems to
-  solve an immediate problem, so I'm adding just that.
-  
-  Closes #8002
-
-- curl_share_setopt.3: refer to CURLSHOPT_USERDATA(3) properly
-
-- curl_share_setopt.3: split out options into their own manpages
-  
-  CURLSHOPT_LOCKFUNC.3
-  CURLSHOPT_SHARE.3
-  CURLSHOPT_UNLOCKFUNC.3
-  CURLSHOPT_UNSHARE.3
-  CURLSHOPT_USERDATA.3
-  
-  Closes #7998
-
-- http_proxy: make Curl_connect_done() work for proxy disabled builds
-  
-  ... by making it an empty macro then.
-  
-  Follow-up to f0b7099a10d1a
-  Reported-by: Vincent Grande
-  Fixes #7995
-  Closes #7996
-
-- Curl_connect_done: handle being called twice
-  
-  Follow-up to f0b7099a10d1a7c
-  
-  When torture testing 1021, it turns out the Curl_connect_done function
-  might be called twice and that previously then wrongly cleared the HTTP
-  pointer in the second invoke.
-  
-  Closes #7999
-
-- [Stan Hu brought this change]
-
-  configure: don't enable TLS when --without-* flags are used
-  
-  Previously specifying `--without-gnutls` would unexpectedly attempt to
-  compile with GnuTLS, effectively interpreting this as
-  `--with-gnutls`. This caused a significant amount of confusion when
-  `libcurl` was built with SSL disabled since GnuTLS wasn't present.
-  
-  68d89f24 dropped the `--without-*` options from the configure help, but
-  `AC_ARG_WITH` still defines these flags automatically. As
-  https://www.gnu.org/software/autoconf/manual/autoconf-2.60/html_node/External-Software.html
-  describes, the `action-if-given` is called when the user specifies
-  `--with-*` or `--without-*` options.
-  
-  To prevent this confusion, we make the `--without` flag do the right
-  thing by ignoring the value if it set to "no".
-  
-  Closes #7994
-
-- [Rikard Falkeborn brought this change]
-
-  docs/checksrc: Add documentation for STRERROR
-  
-  Closes #7991
-
-- vtls/rustls: adapt to the updated rustls_version proto
-  
-  Closes #7956
-
-- [Kevin Burke brought this change]
-
-  vtls/rustls: handle RUSTLS_RESULT_PLAINTEXT_EMPTY
-  
-  Previously we'd return CURLE_READ_ERROR if we received this, instead
-  of triggering the error handling logic that's present in the next if
-  block down.
-  
-  After this change, curl requests to https://go.googlesource.com using
-  HTTP/2 complete successfully.
-  
-  Fixes #7949
-  Closes #7948
-
-- [Kevin Burke brought this change]
-
-  zuul: update build environment for rustls-ffi 0.8.0
-
-- [Kevin Burke brought this change]
-
-  vtls/rustls: update to compile with rustls-ffi v0.8.0
-  
-  Some method names, as well as the generated library name, were changed
-  in a recent refactoring.
-  
-  Further, change the default configuration instructions to check for
-  Hyper in either "target/debug" or "target/release" - the latter
-  contains an optimized build configuration.
-  
-  Fixes #7947
-  Closes #7948
+  urlapi.c:1163:9: warning: Value stored to 'qlen' is never read
+          qlen = Curl_dyn_len(&enc);
+          ^      ~~~~~~~~~~~~~~~~~~
+  urlapi.c:1164:9: warning: Value stored to 'query' is never read
+          query = u->query = Curl_dyn_ptr(&enc);
+          ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- RELEASE-NOTES: synced
-  
-  and bump the version to 7.80.1
-
-- multi: shut down CONNECT in Curl_detach_connnection
-  
-  ... to prevent a lingering pointer that would lead to a double-free.
-  
-  Added test 1939 to verify.
-  
-  Reported-by: Stephen M. Coakley
-  Fixes #7982
-  Closes #7986
-
-- curl_easy_cleanup.3: remove from multi handle first
-  
-  Easy handles that are used by the multi interface should be removed from
-  the multi handle before they are cleaned up.
-  
-  Reported-by: Stephen M. Coakley
-  Ref: #7982
-  Closes #7983
-
-- url.c: fix the SIGPIPE comment for Curl_close
-  
-  Closes #7984
-
-Version 7.80.0 (10 Nov 2021)
-
-Daniel Stenberg (10 Nov 2021)
-- RELEASE-NOTES: synced
-  
-  for curl 7.80.0
+  Follow-up to 7d6cf06f571d57
 
-- THANKS: add contributors from the 7.80.0 cycle
+  Closes #9777
 
-- [Tatsuhiro Tsujikawa brought this change]
+- [Jeremy Maitin-Shepard brought this change]
 
-  ngtcp2: advertise h3 as well as h3-29
-  
-  Advertise h3 as well as h3-29 since some servers out there require h3
-  for QUIC v1.
-  
-  Closes #7979
+  cmake: improve usability of CMake build as a sub-project
 
-- [Tatsuhiro Tsujikawa brought this change]
+  - Renames `uninstall` -> `curl_uninstall`
+  - Ensures all export rules are guarded by CURL_ENABLE_EXPORT_TARGET
 
-  ngtcp2: use QUIC v1 consistently
-  
-  Since we switched to v1 quic_transport_parameters codepoint in #7960
-  with quictls, lets use QUIC v1 consistently.
-  
-  Closes #7979
+  Closes #9638
 
-- [Tatsuhiro Tsujikawa brought this change]
+- [Don J Olmstead brought this change]
 
-  ngtcp2: compile with the latest nghttp3
-  
-  Closes #7978
-
-Marc Hoersken (9 Nov 2021)
-- tests: add Schannel-specific tests and disable unsupported ones
-  
-  Adds Schannel variants of SSLpinning tests that include the option
-  --ssl-revoke-best-effort to ignore certificate revocation check
-  failures which is required due to our custom test CA certificate.
-  
-  Disable the original variants if the Schannel backend is enabled.
-  
-  Also skip all IDN tests which are broken while using an msys shell.
-  
-  This is a step to simplify test exclusions for Windows and MinGW.
-  
-  Reviewed-by: Jay Satiro
-  Reviewed-by: Marcel Raad
-  Reviewed-by: Daniel Stenberg
-  Closes #7968
-
-Daniel Stenberg (8 Nov 2021)
-- docs: NAME fixes in easy option man pages
-  
-  Closes #7975
-
-- [Roger Young brought this change]
-
-  ftp: make the MKD retry to retry once per directory
-  
-  Reported-by: Roger Young
-  Fixes #7967
-  Closes #7976
-
-- tool_operate: reorder code to avoid compiler warning
-  
-  tool_operate.c(889) : warning C4701: potentially uninitialized local
-  variable 'per' use
-  
-  Follow-up to cc71d352651a0d95
-  Reported-by: Marc Hörsken
-  Bug: https://github.com/curl/curl/pull/7922#issuecomment-963042676
-  Closes #7971
-
-- curl_easy_perform.3: add a para about recv and send data
-  
-  Reported-by: Godwin Stewart
-  Fixes #7973
-  Closes #7974
-
-- tool_operate: fclose stream only if fopened
-  
-  Fixes torture test failures
-  Follow-up to cc71d352651
-  
-  Closes #7972
-
-- libcurl-easy.3: language polish
-
-- limit-rate.d: this is average over several seconds
-  
-  Closes #7970
-
-- docs: reduce/avoid English contractions
-  
-  You're => You are
-  Hasn't => Has not
-  Doesn't => Does not
-  Don't => Do not
-  You'll => You will
-  etc
-  
-  Closes #7930
-
-- tool_operate: fix torture leaks with etags
-  
-  Spotted by torture testing 343 344 345 347.
-  
-  Follow-up from cc71d352651a0
-  Pointed-out-by: Dan Fandrich
-  
-  Closes #7969
-
-- [Amaury Denoyelle brought this change]
-
-  ngtcp2: support latest QUIC TLS RFC9001
-  
-  QUIC Transport Parameters Extension has been changed between draft-29
-  and latest RFC9001. Most notably, its identifier has been updated from
-  0xffa5 to 0x0039. The version is selected through the QUIC TLS library
-  via the legacy codepoint.
-  
-  Disable the usage of legacy codepoint in curl to switch to latest
-  RFC9001. This is required to be able to keep up with latest QUIC
-  implementations.
-  
-  Acked-by: Tatsuhiro Tsujikawa
-  Closes #7960
-
-- test1173: make manpage-syntax.pl spot \n errors in examples
-
-- man pages: fix backslash-n in examples
-  
-  ... to be proper backslash-backslash-n sequences to render nicely in man
-  and on website.
-  
-  Follow-up to 24155569d8a
-  Reported-by: Sergey Markelov
-  
-  Fixes https://github.com/curl/curl-www/issues/163
-  Closes #7962
-
-- scripts/release-notes.pl: use out of repo links verbatim in refs
-
-- tool_operate: a failed etag save now only fails that transfer
-  
-  When failing to create the output file for saving an etag, only fail
-  that particular single transfer and allow others to follow.
-  
-  In a serial transfer setup, if no transfer at all is done due to them
-  all being skipped because of this error, curl will output an error
-  message and return exit code 26.
-  
-  Added test 369 and 370 to verify.
-  
-  Reported-by: Earnestly on github
-  Ref: #7942
-  Closes #7945
-
-- [Kevin Burke brought this change]
-
-  .github: retry macos "brew install" command on failure
-  
-  Previously we saw errors attempting to run "brew install", see
-  https://github.com/curl/curl/runs/4095721123?check_suite_focus=true for
-  an example, since this command is idempotent, it is safe to run again.
-  
-  Closes #7955
-
-- CURLOPT_ALTSVC_CTRL.3: mention conn reuse is preferred
-  
-  Ref: https://github.com/curl/curl/discussions/7954
-  
-  Closes #7957
+  easy_lock: check for HAVE_STDATOMIC_H as well
+
+  The check for `HAVE_STDATOMIC_H` looks to see if the `stdatomic.h`
+  header is present.
+
+  Closes #9755
 
 - RELEASE-NOTES: synced
 
-- zuul: pin the quiche build to use an older cmake-rs
-  
-  The latest cmake-rs assumes cmake's --parallel works. That was added in
-  cmake 3.12, but a lot of our CI builds run on Ubuntu Bionic which only
-  has cmake 3.10.
-  
-  Fixes #7927
-  Closes #7952
+- [Brad Harder brought this change]
 
-- [Marc Hoersken brought this change]
+  CURLMOPT_PIPELINING.3: dedup manpage xref
 
-  Revert "src/tool_filetime: disable -Wformat on mingw for this file"
-  
-  This reverts commit 7c88fe375b15c44d77bccc9ab733b8069d228e6f.
-  
-  Follow up to #6535 as the pragma is obsolete with warnf
-  
-  Closes #7941
-
-Jay Satiro (2 Nov 2021)
-- schannel: fix memory leak due to failed SSL connection
-  
-  - Call schannel_shutdown if the SSL connection fails.
-  
-  Prior to this change schannel_shutdown (which shuts down the SSL
-  connection as well as memory cleanup) was not called when the SSL
-  connection failed (eg due to failed handshake).
-  
-  Co-authored-by: Gisle Vanem
-  
-  Fixes https://github.com/curl/curl/issues/7877
-  Closes https://github.com/curl/curl/pull/7878
-
-Daniel Stenberg (2 Nov 2021)
-- Curl_updateconninfo: store addresses for QUIC connections too
-  
-  So that CURLINFO_PRIMARY_IP etc work for HTTP/3 like for other HTTP
-  versions.
-  
-  Reported-by: Jerome Mao
-  Fixes #7939
-  Closes #7944
-
-- [Sergio Durigan Junior brought this change]
-
-  curl.1: fix typos in the manpage
-  
-  s/transfering/transferring/
-  s/transfered/transferred/
-  
-  Signed-off-by: Sergio Durigan Junior <sergiodj@sergiodj.net>
-  Closes #7937
-
-Marc Hoersken (1 Nov 2021)
-- tests/smbserver.py: fix compatibility with impacket 0.9.23+
-  
-  impacket now performs sanity checks if the requested and to
-  be served file path actually is inside the real share path.
-  
-  Ref: https://github.com/SecureAuthCorp/impacket/pull/1066
-  
-  Fixes #7924
-  Closes #7935
-
-Daniel Stenberg (1 Nov 2021)
-- docs: reduce use of "very"
-  
-  "Very" should be avoided in most texts. If intensifiers are needed, try
-  find better words instead.
-  
-  Closes #7936
+  Closes #9776
 
-- [Tatsuhiro Tsujikawa brought this change]
+Marc Hoersken (20 Oct 2022)
+- CI: report AppVeyor build status for each job
 
-  ngtcp2: specify the missing required callback functions
-  
-  Closes #7929
-
-- CURLOPT_[PROXY]_SSL_CIPHER_LIST.3: bold instead of quote
-  
-  Bold the example ciphers instead of using single quotes, which then also
-  avoids the problem of how to use single quotes when first in a line.
-  
-  Also rephrased the pages a little.
-  
-  Reported-by: Sergio Durigan Junior
-  Ref: #7928
-  Closes #7934
-
-- gen.pl: replace leading single quotes with \(aq
-  
-  ... and allow single quotes to be used "normally" in the .d files.
-  
-  Makes the output curl.1 use better nroff.
-  
-  Reported-by: Sergio Durigan Junior
-  Ref: #7928
-  Closes #7933
-
-Marc Hoersken (1 Nov 2021)
-- tests: kill some test servers afterwards to avoid locked logfiles
-  
-  Reviewed-by: Daniel Stenberg
-  Closes #7925
-
-Daniel Stenberg (1 Nov 2021)
-- smooth-gtk-thread.c: enhance the mutex lock use
-  
-  Reported-by: ryancaicse on github
-  Fixes #7926
-  Closes #7931
-
-Marc Hoersken (31 Oct 2021)
-- CI/runtests.pl: restore -u flag, but remove it from CI runs
-  
-  This makes it possible to use -u again for local testing,
-  but removes the flag from CI config files and make targets.
-  
-  Reviewed-by: Daniel Stenberg
-  
-  Partially reverts #7841
-  Closes #7921
+  Also give each job on AppVeyor CI a human-readable name.
+
+  This aims to make job and therefore build failures more visible.
+
+  Reviewed-by: Marcel Raad
+  Closes #9769
 
-Daniel Stenberg (29 Oct 2021)
-- [Jonathan Cardoso Machado brought this change]
+Viktor Szakats (20 Oct 2022)
+- amiga: set SIZEOF_CURL_OFF_T=8 by default [ci skip]
 
-  CURLOPT_HSTSWRITEFUNCTION.3: using CURLOPT_HSTS_CTRL is required
-  
-  Closes #7923
+  Reviewed-by: Daniel Stenberg
 
-- [Axel Morawietz brought this change]
+  Closes #9771
 
-  imap: display quota information
-  
-  Show response to "GETQUOTAROOT INBOX" command.
-  
-  Closes #6973
+- connect: fix builds without AF_INET6
 
-- RELEASE-NOTES: synced
+  Regression from 2b309560c1e5d6ed5c0e542e6fdffa968b0521c9
 
-- [Boris Rasin brought this change]
-
-  cmake: fix error getting LOCATION property on non-imported target
-  
-  Closes #7885
-
-- [x2018 brought this change]
-
-  url: check the return value of curl_url()
-  
-  Closes #7917
-
-- [Roy Li brought this change]
-
-  configure.ac: replace krb5-config with pkg-config
-  
-  The rationale is that custom *-config tools don't work well when
-  cross-compiling or using sysroots (such as when using Yocto project) and
-  require custom fixing for each of them; pkg-config on the other hand
-  works similarly everywhere.
-  
-  Signed-off-by: Roy Li <rongqing.li@windriver.com>
-  Signed-off-by: Alexander Kanavin <alex@linutronix.de>
-  
-  Closes #7916
-
-- test1160: edited to work with hyper
-  
-  Closes #7912
-
-- data/DISABLED: enable tests that now work with hyper
-  
-  Closes #7911
-
-- test559: add 'HTTP' in keywords
-  
-  Makes it run fine with hyper
-  
-  Closes #7911
-
-- test552: updated to work with hyper
-  
-  Closes #7911
-
-Marc Hoersken (27 Oct 2021)
-- github: fix incomplete permission to label PRs for Hacktoberfest
-  
-  Unfortunately the GitHub API requires a token with write permission
-  for both issues and pull-requests to edit labels on even just PRs.
-  
-  Follow up to #7897
-
-Daniel Stenberg (27 Oct 2021)
-- opt-manpages: use 'Added in' instead of 'Since'
-  
-  Closes #7913
-
-Marc Hoersken (27 Oct 2021)
-- github: fix missing permission to label PRs for Hacktoberfest
-  
-  Follow up to #7897
-  
-  Test references to see if permissions are now sufficient:
-  
-  Closes #7832
-  Closes #7897
-
-- CI: more use of test-ci make target and verbose output
-  
-  Replace test-nonflaky with test-ci and enable verbose output
-  in all remaining CIs except Zuul which is customized a lot.
-  
   Reviewed-by: Daniel Stenberg
   Reviewed-by: Jay Satiro
-  
-  Follow up to #7785
-  Closes #7832
-
-- github: add support for Hacktoberfest using labels
-  
-  Automatically add hacktoberfest-accepted label to PRs opened between
-  September 30th and November 1st once a commit with a close reference
-  to it is pushed onto the master branch.
-  
-  With this workflow we can participate in Hacktoberfest while not
-  relying on GitHub to identify PRs as merged due to our rebasing.
-  
-  Requires hacktoberfest-accepted labels to exist for PRs on the
-  participating repository. Also requires hacktoberfest topic on
-  the participating repository to avoid applying to forked repos.
-  
-  Reviewed-by: Daniel Stenberg
-  
-  Fixes #7865
-  Closes #7897
 
-Daniel Stenberg (27 Oct 2021)
-- http: reject HTTP response codes < 100
-  
-  ... which then also includes negative ones as test 1430 uses.
-  
-  This makes native + hyper backend act identically on this and therefore
-  test 1430 can now be enabled when building with hyper. Adjust test 1431
-  as well.
-  
-  Closes #7909
+  Closes #9770
 
-- [Kerem Kat brought this change]
+Daniel Stenberg (20 Oct 2022)
+- test1105: adjust <data> to work with a hyper build
 
-  docs: fix typo in CURLOPT_TRAILERFUNCTION example
-  
-  Closes #7910
+  Closes #9767
 
-- docs/HYPER: remove some remaining issues, add HTTP/0.9 limitation
+- urlapi: fix parsing URL without slash with CURLU_URLENCODE
 
-- configure: when hyper is selected, deselect nghttp2
-  
-  Closes #7908
+  When CURLU_URLENCODE is set, the parser would mistreat the path
+  component if the URL was specified without a slash like in
+  http://local.test:80?-123
 
-- [Patrick Monnerat brought this change]
+  Extended test 1560 to reproduce and verify the fix.
 
-  sendf: accept zero-length data in Curl_client_write()
-  
-  Historically, Curl_client_write() used a length value of 0 as a marker
-  for a null-terminated data string. This feature has been removed in
-  commit f4b85d2. To detect leftover uses of the feature, a DEBUGASSERT
-  statement rejecting a length with value 0 was introduced, effectively
-  precluding use of this function with zero-length data.
-  
-  The current commit removes the DEBUGASSERT and makes the function to
-  return immediately if length is 0.
-  
-  A direct effect is to fix trying to output a zero-length distinguished
-  name in openldap.
-  
-  Another DEBUGASSERT statement is also rephrased for better readability.
-  
-  Closes #7898
-
-- hyper: disable test 1294 since hyper doesn't allow such crazy headers
-  
-  Closes #7905
-
-- c-hyper: make CURLOPT_SUPPRESS_CONNECT_HEADERS work
-  
-  Verified by the enabled test 1288
-  
-  Closes #7905
-
-- test1287: make work on hyper
-  
-  Closes #7905
-
-- test1266/1267: disabled on hyper: no HTTP/0.9 support
-  
-  Closes #7905
-
-Viktor Szakats (25 Oct 2021)
-- Makefile.m32: fix to not require OpenSSL with -libssh2 or -rtmp options
-  
-  Previously, -libssh2/-rtmp options assumed that OpenSSL is also enabled
-  (and then failed with an error when not finding expected OpenSSL headers),
-  but this isn't necessarly true, e.g. when building both libssh2 and curl
-  against Schannel. This patch makes sure to only enable the OpenSSL backend
-  with -libssh2/-rtmp, when there was no SSL option explicitly selected.
-  
-  - Re-implement the logic as a single block of script.
-  - Also fix an indentation while there.
-  
-  Assisted-by: Jay Satiro
-  
-  Closes #7895
-
-Daniel Stenberg (25 Oct 2021)
-- docs: consistent use of "Added in"
-  
-  Make them all say "Added in [version]" without using 'curl' or 'libcurl'
-  in that phrase.
-
-- man pages: require all to use the same section header order
-  
-  This is the same order we already enforce among the options' man pages:
-  consistency is good. Add lots of previously missing examples.
-  
-  Adjust the manpage-syntax script for this purpose, used in test 1173.
-  
-  Closes #7904
-
-- [David Hu brought this change]
-
-  docs/HTTP3: improve build instructions
-  
-  1. If writing to a system path if the command is not prefixed with
-  `sudo` it will cause a permission denied error
-  
-  2. The patched OpenSSL branch has been updated to `openssl-3.0.0+quic`
-  to match upstream OpenSSL version.
-  
-  3. We should not disable GnuTLS docs.
-  
-  Updated some commands about `make install`
-  
-  Closes #7842
-
-- [Ricardo Martins brought this change]
-
-  CMake: restore support for SecureTransport on iOS
-  
-  Restore support for building curl for iOS with SecureTransport enabled.
-  
-  Closes #7501
-
-- tests: enable more tests with hyper
-  
-  Adjusted 1144, 1164 and 1176.
-  
-  Closes #7900
-
-- docs: provide "RETURN VALUE" section for more func manpages
-  
-  Three were missing, one used a non-standard name for the header.
-  
-  Closes #7902
-
-Jay Satiro (25 Oct 2021)
-- curl_multi_socket_action.3: add a "RETURN VALUE" section
-  
-  .. because it may not be immediately clear to the user what
-  curl_multi_socket_action returns.
-  
-  Ref: https://curl.se/mail/lib-2021-10/0035.html
-  
-  Closes https://github.com/curl/curl/pull/7901
-
-Daniel Stenberg (24 Oct 2021)
-- RELEASE-NOTES: synced
+  Reported-by: Trail of Bits
 
-- [Samuel Henrique brought this change]
+  Closes #9763
 
-  tests: use python3 in test 1451
-  
-  This is a continuation of commit ec91b5a69000bea0794bbb3 in which
-  changing this test was missed.  There are no other python2 leftovers
-  now.
-  
-  Based on a Debian patch originally written by Alessandro Ghedini
-  <ghedo@debian.org>
-  
-  Closes #7899
-
-- [Eddie Lumpkin brought this change]
-
-  lib: fixing comment spelling typos in lib files
-  
-  Closes #7894
-  Signed-off-by: ewlumpkin <ewlumpkin@gmail.com>
-
-- openssl: if verifypeer is not requested, skip the CA loading
-  
-  It was previously done mostly to show a match/non-match in the verbose
-  output even when verification was not asked for. This change skips the
-  loading of the CA certs unless verifypeer is set to save memory and CPU.
-  
-  Closes #7892
-
-- curl-confopts.m4:  remove --enable/disable-hidden-symbols
-  
-  These configure options have been saying "deprecated" since 9e24b9c7af
-  (April 2012). It was about time we remove them.
-  
-  Closes #7891
-
-- c-hyper: don't abort CONNECT responses early when auth-in-progress
-  
-  ... and make sure to stop ignoring the body once the CONNECT is done.
-  
-  This should make test 206 work proper again and not be flaky.
-  
-  Closes #7889
-
-- hyper: does not support disabling CURLOPT_HTTP_TRANSFER_DECODING
-  
-  Simply because hyper doesn't have this ability. Mentioned in docs now.
-  
-  Skip test 326 then
-  
-  Closes #7889
-
-- test262: don't attempt with hyper
-  
-  This test verifies that curl works with binary zeroes in HTTP response
-  headers and hyper refuses such. They're not kosher http.
-  
-  Closes #7889
-
-- c-hyper: make test 217 run
-  
-  Closes #7889
-
-- DISABLED: enable test 209+213 for hyper
-  
-  Follow-up to 823d3ab855c
-  
-  Closes #7889
-
-- test207: accept a different error code for hyper
-  
-  It returns HYPERE_UNEXPECTED_EOF for this case which we convert to the
-  somewhat generic CURLE_RECV_ERROR.
-  
-  Closes #7889
-
-- [Érico Nogueira brought this change]
-
-  INSTALL: update symbol hiding option
-  
-  --enable-hidden-symbols was deprecated in
-  9e24b9c7afbcb81120af4cf3f6cdee49a06d8224.
-  
-  Closes #7890
-
-- http_proxy: multiple CONNECT with hyper done better
-  
-  Enabled test 206
-  
-  Closes #7888
-
-- hyper: pass the CONNECT line to the debug callback
-  
-  Closes #7887
-
-- mailmap: Malik Idrees Hasan Khan
-
-Jay Satiro (21 Oct 2021)
-- [Malik Idrees Hasan Khan brought this change]
-
-  build: fix typos
-  
-  Closes https://github.com/curl/curl/pull/7886
-
-- URL-SYNTAX: add IMAP UID SEARCH example
-  
-  - Explain the difference between IMAP search via URL (which returns
-    message sequence numbers) and IMAP search via custom request (which
-    can return UID numbers if prefixed with UID, eg "UID SEARCH ...").
-  
-  Bug: https://github.com/curl/curl/issues/7626
-  Reported-by: orycho@users.noreply.github.com
-  
-  Ref: https://github.com/curl/curl/issues/2789
-  
-  Closes https://github.com/curl/curl/pull/7881
-
-Daniel Stenberg (20 Oct 2021)
-- manpage: adjust the asterisk in some SYNOPSIS sections
-  
-  Closes #7884
-
-- curl_multi_perform.3: polish wording
-  
-   - simplify the example by using curl_multi_poll
-  
-   - mention curl_multi_add_handle in the text
-  
-   - cut out the description of pre-7.20.0 return code behavior - that version
-     is now more than eleven years old and is basically no longer out there
-  
-   - adjust the "typical usage" to mention curl_multi_poll
-  
-  Closes #7883
-
-- docs/THANKS: removed on request
-
-- FAQ: polish the explanation of libcurl
-
-- curl_easy_perform.3: minor wording tweak
-
-- [Erik Stenlund brought this change]
-
-  mime: mention CURL_DISABLE_MIME in comment
-  
-  CURL_DISABLE_MIME is not mentioned in the comment describing the if else
-  preprocessor directive.
-  
-  Closes #7882
-
-- tls: remove newline from three infof() calls
-  
-  Follow-up to e7416cf
-  
-  Reported-by: billionai on github
-  Fixes #7879
-  Closes #7880
+Marc Hoersken (19 Oct 2022)
+- tests: avoid CreateThread if _beginthreadex is available
 
-- RELEASE-NOTES: synced
+  CreateThread is not threadsafe if mixed with CRT calls.
+  _beginthreadex on the other hand can be mixed with CRT.
 
-- curl_gssapi: fix build warnings by removing const
-  
-  Follow-up to 20e980f85b0ea6
-  
-  In #7875 these inits were modified but I get two warnings that these new
-  typecasts are necessary for.
-  
-  Closes #7876
-
-- [Bo Anderson brought this change]
-
-  curl_gssapi: fix link error on macOS Monterey
-  
-  Fixes #7657
-  Closes #7875
-
-- test1185: verify checksrc
-  
-  Closes #7866
-
-- checksrc: improve the SPACESEMICOLON error message
-  
-  and adjust the MULTISPACE one to use plural
-  
-  Closes #7866
-
-- url: set "k->size" -1 at start of request
-  
-  The size of the transfer is unknown at that point.
-  
-  Fixes #7871
-  Closes #7872
-
-Daniel Gustafsson (18 Oct 2021)
-- doh: remove experimental code for DoH with GET
-  
-  The code for sending DoH requests with GET was never enabled in a way
-  such that it could be used or tested. As there haven't been requests
-  for this feature, and since it at this is effectively dead, remove it
-  and favor reimplementing the feature in case anyone is interested.
-  
-  Closes #7870
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Reviewed-by: Marcel Raad
+  Closes #9705
 
-Daniel Stenberg (18 Oct 2021)
-- cirrus: remove FreeBSD 11.4 from the matrix
-  
-  It has reached End-Of-Life and causes some LDAP CI issues.
-  
-  Closes #7869
-
-- cirrus: switch to openldap24-client
-  
-  ... as it seems openldap-client doesn't exist anymore.
-  
-  Reported-by: Jay Satiro
-  Fixes #7868
-  Closes #7869
-
-- checksrc: ignore preprocessor lines
-  
-  In order to check the actual code better, checksrc now ignores
-  everything that look like preprocessor instructions. It also means
-  that code in macros are now longer checked.
-  
-  Note that some rules then still don't need to be followed when code is
-  exactly below a cpp instruction.
-  
-  Removes two checksrc exceptions we needed previously because of
-  preprocessor lines being checked.
-  
-  Reported-by: Marcel Raad
-  Fixes #7863
-  Closes #7864
-
-- urlapi: skip a strlen(), pass in zero
-  
-  ... to let curl_easy_escape() itself do the strlen. This avoids a (false
-  positive) Coverity warning and it avoids us having to store the strlen()
-  return value in an int variable.
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7862
+Jay Satiro (19 Oct 2022)
+- [Joel Depooter brought this change]
 
-- misc: update copyright years
+  schannel: Don't reset recv/send function pointers on renegotiation
 
-- examples/htmltidy: correct wrong printf() use
-  
-  ... and update the includes to match how current htmltidy wants them
-  used.
-  
-  Reported-by: Stathis Kapnidis
-  Fixes #7860
-  Closes #7861
-
-Jay Satiro (15 Oct 2021)
-- http: set content length earlier
-  
-  - Make content length (ie download size) accessible to the user in the
-    header callback, but only after all headers have been processed (ie
-    only in the final call to the header callback).
-  
-  Background:
-  
-  For a long time the content length could be retrieved in the header
-  callback via CURLINFO_CONTENT_LENGTH_DOWNLOAD_T as soon as it was parsed
-  by curl.
-  
-  Changes were made in 8a16e54 (precedes 7.79.0) to ignore content length
-  if any transfer encoding is used. A side effect of that was that
-  content length was not set by libcurl until after the header callback
-  was called the final time, because until all headers are processed it
-  cannot be determined if content length is valid.
-  
-  This change keeps the same intention --all headers must be processed--
-  but now the content length is available before the final call to the
-  header function that indicates all headers have been processed (ie
-  a blank header).
-  
-  Bug: https://github.com/curl/curl/commit/8a16e54#r57374914
-  Reported-by: sergio-nsk@users.noreply.github.com
-  
-  Co-authored-by: Daniel Stenberg
-  
-  Fixes https://github.com/curl/curl/issues/7804
-  Closes https://github.com/curl/curl/pull/7803
+  These function pointers will have been set when the initial TLS
+  handshake was completed. If they are unchanged, there is no need to set
+  them again. If they have been changed, as is the case with HTTP/2, we
+  don't want to override that change. That would result in the
+  http22_recv/send functions being completely bypassed.
 
-Daniel Stenberg (15 Oct 2021)
-- [Abhinav Singh brought this change]
+  Prior to this change a connection that uses Schannel with HTTP/2 would
+  fail on renegotiation with error "Received HTTP/0.9 when not allowed".
 
-  aws-sigv4: make signature work when post data is binary
-  
-  User sets the post fields size for binary data.  Hence, we should not be
-  using strlen on it.
-  
-  Added test 1937 and 1938 to verify.
-  
-  Closes #7844
+  Fixes https://github.com/curl/curl/issues/9451
+  Closes https://github.com/curl/curl/pull/9756
 
-- [a1346054 brought this change]
+Viktor Szakats (18 Oct 2022)
+- hostip: guard PF_INET6 use
 
-  MacOSX-Framework: remove redundant ';'
-  
-  Closes #7859
+  Some platforms (e.g. Amiga OS) do not have `PF_INET6`. Adjust the code
+  for these.
 
-- RELEASE-NOTES: synced
+  ```
+  hostip.c: In function 'fetch_addr':
+  hostip.c:308:12: error: 'PF_INET6' undeclared (first use in this function)
+         pf = PF_INET6;
+              ^~~~~~~~
+  ```
 
-- openssl: with OpenSSL 1.1.0+ a failed RAND_status means goaway
-  
-  One reason we know it can fail is if a provider is used that doesn't do
-  a proper job or is wrongly configured.
-  
-  Reported-by: Michael Baentsch
-  Fixes #7840
-  Closes #7856
-
-Marcel Raad (14 Oct 2021)
-- [Ryan Mast brought this change]
-
-  cmake: add CURL_ENABLE_SSL option and make CMAKE_USE_* SSL backend options depend on it
-  
-  Closes https://github.com/curl/curl/pull/7822
-
-Daniel Stenberg (14 Oct 2021)
-- http: remove assert that breaks hyper
-  
-  Reported-by: Jay Satiro
-  Fixes #7852
-  Closes #7855
-
-- http_proxy: fix one more result assign for hyper
-  
-  and remove the bad assert again, since it was run even with no error!
-  
-  Closes #7854
-
-Jay Satiro (14 Oct 2021)
-- sws: fix memory leak on exit
-  
-  - Free the allocated http request struct on cleanup.
-  
-  Prior to this change if sws was built with leak sanitizer it would
-  report a memory leak error during testing.
-  
-  Closes https://github.com/curl/curl/pull/7849
-
-Daniel Stenberg (14 Oct 2021)
-- c-hyper: make Curl_http propagate errors better
-  
-  Pass on better return codes when errors occur within Curl_http instead
-  of insisting that CURLE_OUT_OF_MEMORY is the only possible one.
-  
-  Pointed-out-by: Jay Satiro
-  Closes #7851
-
-- http_proxy: make hyper CONNECT() return the correct error code
-  
-  For every 'goto error', make sure the result variable holds the error
-  code for what went wrong.
-  
-  Reported-by: Rafał Mikrut
-  Fixes #7825
-  Closes #7846
-
-- docs/Makefile.am: repair 'make html'
-  
-  by removing index.html which isn't around anymore
-  
-  Closes #7853
-
-- [Борис Верховский brought this change]
-
-  curl: correct grammar in generated libcurl code
-  
-  Closes #7802
-
-- tests: disable test 2043
-  
-  It uses revoked.badssl.com which now is expired and therefor this now
-  permafails. We should not use external sites for tests, this test should
-  be converted to use our own infra.
-  
-  Closes #7845
-
-- runtests: split out ignored tests
-  
-  Report ignore tests separately from the actual fails.
-  
-  Don't exit non-zero if test servers couldn't get killed.
-  
-  Assisted-by: Jay Satiro
-  
-  Fixes #7818
-  Closes #7841
-
-- http2: make getsock not wait for write if there's no remote window
-  
-  While uploading, check for remote window availability in the getsock
-  function so that we don't wait for a writable socket if no data can be
-  sent.
-  
-  Reported-by: Steini2000 on github
-  Fixes #7821
-  Closes #7839
-
-- test368: verify dash is appended for "-r [num]"
-  
-  Follow-up to 8758a26f8878
-
-- [Борис Верховский brought this change]
-
-  curl: actually append "-" to --range without number only
-  
-  Closes #7837
+  Regression from 1902e8fc511078fb5e26fc2b907b4cce77e1240d
 
-- RELEASE-NOTES: synced
+  Reviewed-by: Daniel Stenberg
 
-- urlapi: URL decode percent-encoded host names
-  
-  The host name is stored decoded and can be encoded when used to extract
-  the full URL. By default when extracting the URL, the host name will not
-  be URL encoded to work as similar as possible as before. When not URL
-  encoding the host name, the '%' character will however still be encoded.
-  
-  Getting the URL with the CURLU_URLENCODE flag set will percent encode
-  the host name part.
-  
-  As a bonus, setting the host name part with curl_url_set() no longer
-  accepts a name that contains space, CR or LF.
-  
-  Test 1560 has been extended to verify percent encodings.
-  
-  Reported-by: Noam Moshe
-  Reported-by: Sharon Brizinov
-  Reported-by: Raul Onitza-Klugman
-  Reported-by: Kirill Efimov
-  Fixes #7830
-  Closes #7834
-
-Marc Hoersken (8 Oct 2021)
-- CI/makefiles: introduce dedicated test target
-  
-  Make it easy to use the same set of test flags
-  throughout all current and future CI builds.
-  
-  Reviewed-by: Jay Satiro
-  
-  Follow up to #7690
-  Closes #7785
-
-Daniel Stenberg (8 Oct 2021)
-- maketgz: redirect updatemanpages.pl output to /dev/null
-
-- CURLOPT_HTTPHEADER.3: add descripion for specific headers
-  
-  Settting Host: or Transfer-Encoding: chunked actually have special
-  meanings to libcurl. This change tries to document them
-  
-  Closes #7829
-
-- c-hyper: use hyper_request_set_uri_parts to make h2 better
-  
-  and make sure to not send Host: over h2.
-  
-  Fixes #7679
-  Reported-by: David Cook
-  Closes #7827
-
-- [Michael Afanasiev brought this change]
-
-  curl-openssl.m4: modify library order for openssl linking
-  
-  lcrypto may depend on lz, and configure corrently fails with when
-  statically linking as the order is "-lz -lcrypto". This commit switches
-  the order to "-lcrypto -lz".
-  
-  Closes #7826
-
-Marcel Raad (7 Oct 2021)
-- sha256: use high-level EVP interface for OpenSSL
-  
-  Available since OpenSSL 0.9.7. The low-level SHA256 interface is
-  deprecated in OpenSSL v3, and its usage was discouraged even before.
-  
-  Closes https://github.com/curl/curl/pull/7808
-
-- curl_ntlm_core: use OpenSSL only if DES is available
-  
-  This selects another SSL backend then if available, or otherwise at
-  least gives a meaningful error message.
-  
-  Closes https://github.com/curl/curl/pull/7808
-
-- md5: fix compilation with OpenSSL 3.0 API
-  
-  Only use OpenSSL's MD5 code if it's available.
-  
-  Also fix wolfSSL build with `NO_MD5`, in which case neither the
-  wolfSSL/OpenSSL implementation nor the fallback implementation was
-  used.
-  
-  Closes https://github.com/curl/curl/pull/7808
-
-Daniel Stenberg (7 Oct 2021)
-- print_category: printf %*s needs an int argument
-  
-  ... not a size_t!
-  
-  Detected by Coverity: CID 1492331.
-  Closes #7823
-
-Jay Satiro (7 Oct 2021)
-- version_win32: use actual version instead of manifested version
-  
-  - Use RtlVerifyVersionInfo instead of VerifyVersionInfo, when possible.
-  
-  Later versions of Windows have normal version functions that compare and
-  return versions based on the way the application is manifested, instead
-  of the actual version of Windows the application is running on. We
-  prefer the actual version of Windows so we'll now call the Rtl variant
-  of version functions (RtlVerifyVersionInfo) which does a proper
-  comparison of the actual version.
-  
-  Reported-by: Wyatt O'Day
-  
-  Ref: https://github.com/curl/curl/pull/7727
-  
-  Fixes https://github.com/curl/curl/issues/7742
-  Closes https://github.com/curl/curl/pull/7810
-
-Daniel Stenberg (6 Oct 2021)
-- RELEASE-NOTES: synced
+  Closes #9760
 
-- http: fix Basic auth with empty name field in URL
-  
-  Add test 367 to verify.
-  
-  Reported-by: Rick Lane
-  Fixes #7819
-  Closes #7820
-
-- [Jeffrey Tolar brought this change]
-
-  CURLOPT_MAXLIFETIME_CONN: maximum allowed lifetime for conn reuse
-  
-  ... and close connections that are too old instead of reusing them.
-  
-  By default, this behavior is disabled.
-  
-  Bug: https://curl.se/mail/lib-2021-09/0058.html
-  Closes #7751
-
-Daniel Gustafsson (6 Oct 2021)
-- docs/examples: add missing binaries to gitignore
-  
-  Commit f65d7889b added getreferrer, and commit ae8e11ed5 multi-legacy,
-  both of which missed adding .gitignore clauses for the built binaries.
-  
-  Closes #7817
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+- amiga: do not hardcode openssl/zlib into the os config [ci skip]
 
-Daniel Stenberg (5 Oct 2021)
-- [Josip Medved brought this change]
+  Enable them in `lib/makefile.amiga` and `src/makefile.amiga` instead.
 
-  HTTP3: fix the HTTP/3 Explained book link
-  
-  Closes #7813
+  This allows builds without openssl and/or zlib. E.g. with the
+  <https://github.com/bebbo/amiga-gcc> cross-compiler.
 
-- [Lucas Holt brought this change]
+  Reviewed-by: Daniel Stenberg
 
-  misc: fix a few issues on MidnightBSD
-  
-  Closes #7812
+  Closes #9762
 
-Daniel Gustafsson (4 Oct 2021)
-- [8U61ife brought this change]
+- amigaos: add missing curl header [ci skip]
 
-  tool_main: fix typo in comment
-  
-  Closes: #7811
-  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+  Without it, `CURLcode` and `CURLE_*` are undefined. `lib/hostip.h` and
+  conditional local code need them.
 
-Daniel Stenberg (4 Oct 2021)
-- [Ryan Mast brought this change]
+  Reviewed-by: Daniel Stenberg
 
-  BINDINGS: URL updates
-  
-  For cpr, BBHTTP, Eiffel, Harbour, Haskell, Mono, and Rust
-  
-  Closes #7809
+  Closes #9761
 
-- scripts/delta: hide a git error message we don't care about
-  
-  fatal: path 'src/tool_listhelp.c' exists on disk, but not in [tag]
+Daniel Stenberg (18 Oct 2022)
+- cmdline/docs: add a required 'multi' keyword for each option
 
-- [Patrick Monnerat brought this change]
+  The keyword specifies how option works when specified multiple times:
 
-  sasl: binary messages
-  
-  Capabilities of sasl module are extended to exchange messages in binary
-  as an alternative to base64.
-  
-  If http authentication flags have been set, those are used as sasl
-  default preferred mechanisms.
-  
-  Closes #6930
+   - single: the last provided value replaces the earlier ones
+   - append: it supports being provided multiple times
+   - boolean: on/off values
+   - mutex: flag-like option that disable anoter flag
 
-- [Hayden Roche brought this change]
+  The 'gen.pl' script then outputs the proper and unified language for
+  each option's multi-use behavior in the generated man page.
 
-  wolfssl: use for SHA256, MD4, MD5, and setting DES odd parity
-  
-  Prior to this commit, OpenSSL could be used for all these functions, but
-  not wolfSSL. This commit makes it so wolfSSL will be used if USE_WOLFSSL
-  is defined.
-  
-  Closes #7806
+  The multi: header is requires in each .d file and will cause build error
+  if missing or set to an unknown value.
 
-- scripts/delta: count command line options in the new file
-  
-  ... which makes the shown delta number wrong until next release.
+  Closes #9759
 
-- RELEASE-NOTES: synced
+- CURLOPT_AUTOREFERER.3: highlight the privacy leak risk
 
-- print_category: print help descriptions aligned
-  
-  Adjust the description position to make an aligned column when doing
-  help listings, which is more pleasing to the eye.
-  
-  Suggested-by: Gisle Vanem
-  Closes #7792
-
-- lib/mk-ca-bundle.pl: skip certs passed Not Valid After date
-  
-  With this change applied, the now expired 'DST Root CA X3' cert will no
-  longer be included in the output.
-  
-  Details: https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/
-  
-  Closes #7801
-
-- tool_listhelp: easier to generate with gen.pl
-  
-  tool_listhelp.c is now a separate file with only the command line --help
-  output, exactly as generated by gen.pl. This makes it easier to generate
-  updates according to what's in the docs/cmdline-opts docs.
-  
-    cd $srcroot/docs/cmdline-opts
-    ./gen.pl listhelp *.d > $srcroot/src/tool_listhelp.c
-  
-  With a configure build, this also works:
-  
-    make -C src listhelp
-  
-  Closes #7787
-
-- [Anthony Hu brought this change]
-
-  wolfssl: allow setting of groups/curves
-  
-  In particular, the quantum safe KEM and hybrid curves if wolfSSL is
-  built to support them.
-  
-  Closes #7728
-
-- [Jan Mazur brought this change]
-
-  connnect: use sysaddr_un fron sys/un.h or custom-defined for windows
-  
-  Closes #7737
-
-Jay Satiro (30 Sep 2021)
-- [Rikard Falkeborn brought this change]
-
-  hostip: Move allocation to clarify there is no memleak
-  
-  By just glancing at the code, it looks like there is a memleak if the
-  call to Curl_inet_pton() fails. Looking closer, it is clear that the
-  call to Curl_inet_pton() can not fail, so the code will never leak
-  memory. However, we can make this obvious by moving the allocation
-  after the if-statement.
-  
-  Closes https://github.com/curl/curl/pull/7796
-
-Daniel Stenberg (30 Sep 2021)
-- gen.pl: make the output date format work better
-  
-  Follow-up to 15910dfd143dd
-  
-  The previous strftime format used didn't work correctly on Windows, so
-  change to %B %d %Y which today looks like "September 29 2021".
-  
-  Reported-by: Gisle Vanem
-  Bug: #7782
-  Closes #7793
-
-- typecheck-gcc.h: add CURLOPT_PREREQDATA awareness
-  
-  Follow-up to a517378de58358a
-  
-  To make test 1912 happy again
-  
-  Closes #7799
-
-Marcel Raad (29 Sep 2021)
-- configure: remove `HAVE_WINSOCK_H` definition
-  
-  It's not used anymore.
-  
-  Closes https://github.com/curl/curl/pull/7795
-
-- CMake: remove `HAVE_WINSOCK_H` definition
-  
-  It's not used anymore.
-  
-  Closes https://github.com/curl/curl/pull/7795
-
-- config: remove `HAVE_WINSOCK_H` definition
-  
-  It's not used anymore.
-  
-  Closes https://github.com/curl/curl/pull/7795
-
-- lib: remove `HAVE_WINSOCK_H` usage
-  
-  WinSock v1 is not supported anymore. Exclusively use `HAVE_WINSOCK2_H`
-  instead.
-  
-  Closes https://github.com/curl/curl/pull/7795
-
-Daniel Stenberg (29 Sep 2021)
-- easyoptions: add the two new PRE* options
-  
-  Follow-up to a517378de58358a
-  
-  Also fix optiontable.pl to do the correct remainder on the entry.
-  
-  Reported-by: Gisle Vanem
-  Bug: https://github.com/curl/curl/commit/a517378de58358a85b7cfe9efecb56051268f629#commitcomment-57224830
-  Closes #7791
-
-- Revert "build: remove checks for WinSock 1"
-  
-  Due to CI issues
-  
-  This reverts commit c2ea04f92b00b6271627cb218647527b5a50f2fc.
-  
-  Closes #7790
-
-Daniel Gustafsson (29 Sep 2021)
-- lib: avoid fallthrough cases in switch statements
-  
-  Commit b5a434f7f0ee4d64857f8592eced5b9007d83620 inhibits the warning
-  on implicit fallthrough cases, since the current coding of indicating
-  fallthrough with comments is falling out of fashion with new compilers.
-  This attempts to make the issue smaller by rewriting fallthroughs to no
-  longer fallthrough, via either breaking the cases or turning switch
-  statements into if statements.
-  
-    lib/content_encoding.c: the fallthrough codepath is simply copied
-      into the case as it's a single line.
-    lib/http_ntlm.c: the fallthrough case skips a state in the state-
-      machine and fast-forwards to NTLMSTATE_LAST. Do this before the
-      switch statement instead to set up the states that we actually
-      want.
-    lib/http_proxy.c: the fallthrough is just falling into exiting the
-      switch statement which can be done easily enough in the case.
-    lib/mime.c: switch statement rewritten as if statement.
-    lib/pop3.c: the fallthrough case skips to the next state in the
-      statemachine, do this explicitly instead.
-    lib/urlapi.c: switch statement rewritten as if statement.
-    lib/vssh/wolfssh.c: the fallthrough cases fast-forwards the state
-      machine, do this by running another iteration of the switch
-      statement instead.
-    lib/vtls/gtls.c: switch statement rewritten as if statement.
-    lib/vtls/nss.c: the fallthrough codepath is simply copied into the
-      case as it's a single line. Also twiddle a comment to not be
-      inside a non-brace if statement.
-  
-  Closes: #7322
-  See-also: #7295
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Closes #9757
 
-Marcel Raad (28 Sep 2021)
-- config-win32ce: enable WinSock 2
-  
-  WinSock 2.2 is supported by Windows CE .NET 4.1 (from 2002, out of
-  support since 2013).
-  
-  Ref: https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms899586(v=msdn.10)
-  
-  Closes https://github.com/curl/curl/pull/7778
-
-- externalsocket: use WinSock 2.2
-  
-  That's the only version we support.
-  
-  Closes https://github.com/curl/curl/pull/7778
-
-- build: remove checks for WinSock 1
-  
-  It's not supported anymore.
-  
-  Closes https://github.com/curl/curl/pull/7778
-
-Daniel Stenberg (28 Sep 2021)
-- scripts/copyright: .muse is .lift now
-  
-  And update 5 files with old copyright year range
-
-- cmdline-opts: made the 'Added:' field mandatory
-  
-  Since "too old" versions are no longer included in the generated man
-  page, this field is now mandatory so that it won't be forgotten and then
-  not included in the documentation.
-  
-  Closes #7786
-
-- curl.1: remove mentions of really old version changes
-  
-  To make the man page more readable, this change removes all references
-  to changes in support/versions etc that happened before 7.30.0 from the
-  curl.1 output file. 7.30.0 was released on Apr 12 2013. This particular
-  limit is a bit arbitrary but was fairly easy to grep for.
-  
-  It is handled like this: the 'Added' keyword is only used in output if
-  it refers to 7.30.0 or later. All occurances of "(Added in $VERSION)" in
-  description will be stripped out if the mentioned $VERSION is from
-  before 7.30.0. It is therefore important that the "Added in..."
-  references are always written exactly like that - and on a single line,
-  not split over two.
-  
-  This change removes about 80 version number references from curl.1, down
-  to 138 from 218.
-  
-  Closes #7786
+- mprintf: reject two kinds of precision for the same argument
 
-- RELEASE-NOTES: synced
+  An input like "%.*1$.9999d" would first use the precision taken as an
+  argument *and* then the precision specified in the string, which is
+  confusing and wrong. pass1 will now instead return error on this double
+  use.
 
-- tool_cb_prg: make resumed upload progress bar show better
-  
-  This is a regression that was *probably* injected in the larger progress
-  bar overhaul in 2018.
-  
-  Reported-by: beslick5 on github
-  Fixes #7760
-  Closes #7777
-
-- gen.pl: insert the current date and version in generated man page
-  
-  Reported-by: Gisle Vanem
-  Ref: #7780
-  Closes #7782
-
-- NTLM: use DES_set_key_unchecked with OpenSSL
-  
-  ... as the previously used function DES_set_key() will in some cases
-  reject using a key that it deems "weak" which will cause curl to
-  continue using the unitialized buffer content as key instead.
-  
-  Assisted-by: Harry Sintonen
-  Fixes #7779
-  Closes #7781
-
-Marc Hoersken (27 Sep 2021)
-- CI: align make and test flags in various config files
-  
-  1. Use Makefile target to run tests in autotools builds on AppVeyor.
-  2. Disable testing of SCP protocol on native Windows environments.
-  3. Remove redundant parameters -a -p from target test-nonflaky.
-  4. Don't use -vc parameter which is reserved for debugging.
-  
-  Replaces #7591
-  Closes #7690
-
-Daniel Stenberg (27 Sep 2021)
-- mailmap: unify Max!
-
-- [Max Dymond brought this change]
-
-  CURLOPT_PREREQFUNCTION: add new callback
-  
-  Triggered before a request is made but after a connection is set up
-  
-  Changes:
-  
-  - callback: Update docs and callback for pre-request callback
-  - Add documentation for CURLOPT_PREREQDATA and CURLOPT_PREREQFUNCTION,
-  - Add redirect test and callback failure test
-  - Note that the function may be called multiple times on a redirection
-  - Disable new 2086 test due to Windows weirdness
-  
-  Closes #7477
-
-- KNOWN_BUGS: HTTP/2 connections through HTTPS proxy frequently stall
-  
-  Closes #6936
-
-- TODO: make configure use --cache-file more and better
-  
-  Closes #7753
+  Adjusted unit test 1398 to verify
 
-- [Sergey Markelov brought this change]
+  Reported-by: Peter Goodman
 
-  urlapi: support UNC paths in file: URLs on Windows
-  
-  - file://host.name/path/file.txt is a valid UNC path
-    \\host.name\path\files.txt to a non-local file transformed into URI
-    (RFC 8089 Appendix E.3)
-  
-  - UNC paths on other OSs must be smb: URLs
-  
-  Closes #7366
-
-- [Gleb Ivanovsky brought this change]
-
-  urlapi: add curl_url_strerror()
-  
-  Add curl_url_strerror() to convert CURLUcode into readable string and
-  facilitate easier troubleshooting in programs using URL API.
-  Extend CURLUcode with CURLU_LAST for iteration in unit tests.
-  Update man pages with a mention of new function.
-  Update example code and tests with new functionality where it fits.
-  
-  Closes #7605
+  Closes #9754
 
-- RELEASE-NOTES: synced
+- ftp: remove redundant if
 
-- [Mats Lindestam brought this change]
-
-  libssh2: add SHA256 fingerprint support
-  
-  Added support for SHA256 fingerprint in command line curl and in
-  libcurl.
-  
-  Closes #7646
-
-- libcurl.rc: switch out the copyright symbol for plain ASCII
-  
-  Reported-by: Vitaly Varyvdin
-  Assisted-by: Viktor Szakats
-  Fixes #7765
-  Closes #7776
-
-- [Jun-ya Kato brought this change]
-
-  ngtcp2: fix QUIC transport parameter version
-  
-  fix inappropriate version setting for QUIC transport parameters.
-  this patch keeps curl with ngtcp2 uses QUIC draft version (h3-29).
-  
-  Closes #7771
-
-- examples/imap-append: fix end-of-data check
-  
-  Reported-by: Alexander Chuykov
-  Fixes #7774
-  Closes #7775
-
-Michael Kaufmann (24 Sep 2021)
-- vtls: Fix a memory leak if an SSL session cannot be added to the cache
-  
-  On connection shutdown, a new TLS session ticket may arrive after the
-  SSL session cache has already been destructed. In this case, the new
-  SSL session cannot be added to the SSL session cache.
-  
-  The callers of Curl_ssl_addsessionid() need to know whether the SSL
-  session has been added to the cache. If it has not been added, the
-  reference counter of the SSL session must not be incremented, or memory
-  used by the SSL session must be freed. This is now possible with the new
-  output parameter "added" of Curl_ssl_addsessionid().
-  
-  Fixes #7683
-  Closes #7752
-
-Daniel Stenberg (24 Sep 2021)
-- [Momoka Yamamoto brought this change]
-
-  HTTP3.md: use 'autoreconf -fi' instead of buildconf
-  
-  buildconf is not used since #5853
-  
-  Closes #7746
-
-- GIT-INFO: rephrase to adapt to s/buildconf/autoreconf
-
-- [h1zzz brought this change]
-
-  llist: remove redundant code, branch will not be executed
-  
-  Closes #7770
-
-- [tlahn brought this change]
-
-  HTTP-COOKIES.md: remove duplicate 'each'
-  
-  Closes #7772
-
-Jay Satiro (24 Sep 2021)
-- [Joel Depooter brought this change]
+  Reported-by: Trail of Bits
 
-  libssh2: Get the version at runtime if possible
-  
-  Previously this code used a compile time constant, meaning that libcurl
-  always reported the libssh2 version that libcurl was built with. This
-  could differ from the libssh2 version actually being used. The new code
-  uses the CURL_LIBSSH2_VERSION macro, which is defined in ssh.h. The
-  macro calls the libssh2_version function if it is available, otherwise
-  it falls back to the compile time version.
-  
-  Closes https://github.com/curl/curl/pull/7768
+  Closes #9753
 
-- [Joel Depooter brought this change]
+- tool_operate: more transfer cleanup after parallel transfer fail
 
-  schannel: fix typo
-  
-  Closes https://github.com/curl/curl/pull/7769
-
-Daniel Stenberg (23 Sep 2021)
-- cmake: with OpenSSL, define OPENSSL_SUPPRESS_DEPRECATED
-  
-  To avoid the "... is deprecated" warnings brought by OpenSSL v3.
-  (We need to address the underlying code at some point of course.)
-  
-  Assisted-by: Jakub Zakrzewski
-  Closes #7767
-
-- curl-openssl: pass argument to sed single-quoted
-  
-  ... instead of using an escaped double-quote. This is an attempt to make
-  this work better with ksh that otherwise would insist on a double
-  escape!
-  
-  Reported-by: Randall S. Becker
-  Fixes #7758
-  Closes #7764
+  In some circumstances when doing parallel transfers, the
+  single_transfer_cleanup() would not be called and then 'inglob' could
+  leak.
 
-- RELEASE-NOTES: synced
-  
-  Bumped curlver to 7.80.0-dev
+  Test 496 verifies
 
-- [a1346054 brought this change]
+  Reported-by: Trail of Bits
+  Closes #9749
 
-  misc: fix typos in docs and comments
-  
-  No user facing output from curl/libcurl is changed by this, just
-  comments.
-  
-  Closes #7747
+- mqtt: spell out CONNECT in comments
 
-- [Thomas M. DuBuisson brought this change]
+  Instead of calling it 'CONN' in several comments, use the full and
+  correct protocol packet name.
 
-  ci: update Lift config to match requirements of curl build
-  
-  Also renamed Muse -> Lift, the new tool name.
-  
-  Closes #7761
+  Suggested by Trail of Bits
 
-- [Rikard Falkeborn brought this change]
+  Closes #9751
 
-  cleanup: constify unmodified static structs
-  
-  Constify a number of static structs that are never modified. Make them
-  const to show this.
-  
-  Closes #7759
+- CURLOPT_POSTFIELDS.3: refer to CURLOPT_MIMEPOST
 
-Version 7.79.1 (22 Sep 2021)
+  Not the deprecated CURLOPT_HTTPPOST option.
 
-Daniel Stenberg (22 Sep 2021)
-- RELEASE-NOTES: synced
-  
-  curl 7.79.1 release
-
-- THANKS: added names from the 7.79.1 release
-
-- test897: verify delivery of IMAP post-body header content
-  
-  The "content" is delivered as "body" by curl, but the envelope continues
-  after the body and the rest of it should be delivered as header.
-  
-  The IMAP server can now get 'POSTFETCH' set to include more data to
-  include after the body and test 897 is done to verify that such "extra"
-  header data is in fact delivered by curl as header.
-  
-  Ref: #7284 but fails to reproduce the issue
-  
-  Closes #7748
-
-- KNOWN_BUGS: connection migration doesn't work
-  
-  Closes #7695
+  Also added two see-alsos.
+
+  Reported-by: Trail of Bits
+  Closes #9752
 
 - RELEASE-NOTES: synced
 
-- http: fix the broken >3 digit response code detection
-  
-  When the "reason phrase" in the HTTP status line starts with a digit,
-  that was treated as the forth response code digit and curl would claim
-  the response to be non-compliant.
-  
-  Added test 1466 to verify this case.
-  
-  Regression brought by 5dc594e44f73b17
-  Reported-by: Glenn de boer
-  Fixes #7738
-  Closes #7739
-
-Jay Satiro (17 Sep 2021)
-- strerror: use sys_errlist instead of strerror on Windows
-  
-  - Change Curl_strerror to use sys_errlist[errnum] instead of strerror to
-    retrieve the error message on Windows.
-  
-  Windows' strerror writes to a static buffer and is not thread-safe.
-  
-  Follow-up to 2f0bb86 which removed most instances of strerror in favor
-  of calling Curl_strerror (which calls strerror_r for other platforms).
-  
-  Ref: https://github.com/curl/curl/pull/7685
-  Ref: https://github.com/curl/curl/commit/2f0bb86
-  
-  Closes https://github.com/curl/curl/pull/7735
-
-Daniel Stenberg (16 Sep 2021)
-- dist: provide lib/.checksrc in the tarball
-  
-  So that debug builds work (checksrc really)
-  
-  Reported-by: Marcel Raad
-  Reported-by: tawmoto on github
-  Fixes #7733
-  Closes #7734
-
-- TODO: Improve documentation about fork safety
-  
-  Closes #6968
-
-- hsts: CURLSTS_FAIL from hsts read callback should fail transfer
-  
-  ... and have CURLE_ABORTED_BY_CALLBACK returned.
-  
-  Extended test 1915 to verify.
-  
-  Reported-by: Jonathan Cardoso
-  Fixes #7726
-  Closes #7729
-
-- test1184: disable
-  
-  The test should be fine and it works for me repeated when run manually,
-  but clearly it causes CI failures and it needs more research.
-  
-  Reported-by: RiderALT on github
-  Fixes #7725
-  Closes #7732
-
-- Curl_http2_setup: don't change connection data on repeat invokes
-  
-  Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved
-  transfer oriented inits to before the check but also erroneously moved a
-  few connection oriented ones, which causes problems.
-  
-  Reported-by: Evangelos Foutras
-  Fixes #7730
-  Closes #7731
+Jay Satiro (17 Oct 2022)
+- ngtcp2: Fix build errors due to changes in ngtcp2 library
 
-- RELEASE-NOTES: synced
-  
-  and bump to 7.79.1
-
-Kamil Dudka (16 Sep 2021)
-- tests/sshserver.pl: make it work with openssh-8.7p1
-  
-  ... by not using options with no argument where an argument is required:
-  
-  === Start of file tests/log/ssh_server.log
-  curl_sshd_config line 6: no argument after keyword "DenyGroups"
-  curl_sshd_config line 7: no argument after keyword "AllowGroups"
-  curl_sshd_config line 10: Deprecated option AuthorizedKeysFile2
-  curl_sshd_config line 29: Deprecated option KeyRegenerationInterval
-  curl_sshd_config line 39: Deprecated option RhostsRSAAuthentication
-  curl_sshd_config line 40: Deprecated option RSAAuthentication
-  curl_sshd_config line 41: Deprecated option ServerKeyBits
-  curl_sshd_config line 45: Deprecated option UseLogin
-  curl_sshd_config line 56: no argument after keyword "AcceptEnv"
-  curl_sshd_config: terminating, 3 bad configuration options
-  === End of file tests/log/ssh_server.log
-  
-  === Start of file log/sftp_server.log
-  curl_sftp_config line 33: Unsupported option "rhostsrsaauthentication"
-  curl_sftp_config line 34: Unsupported option "rsaauthentication"
-  curl_sftp_config line 52: no argument after keyword "sendenv"
-  curl_sftp_config: terminating, 1 bad configuration options
-  Connection closed.
-  Connection closed
-  === End of file log/sftp_server.log
-  
-  Closes #7724
-
-Daniel Stenberg (15 Sep 2021)
-- hsts: handle unlimited expiry
-  
-  When setting a blank expire string, meaning unlimited, curl would pass
-  TIME_T_MAX to getime_r() when creating the output, while on 64 bit
-  systems such a large value cannot be convetered to a tm struct making
-  curl to exit the loop with an error instead. It can't be converted
-  because the year it would represent doesn't fit in the 'int tm_year'
-  field!
-  
-  Starting now, unlimited expiry is instead handled differently by using a
-  human readable expiry date spelled out as "unlimited" instead of trying
-  to use a distant actual date.
-  
-  Test 1660 and 1915 have been updated to help verify this change.
-  
-  Reported-by: Jonathan Cardoso
-  Fixes #7720
-  Closes #7721
-
-- curl_multi_fdset: make FD_SET() not operate on sockets out of range
-  
-  The VALID_SOCK() macro was made to only check for FD_SETSIZE if curl was
-  built to use select(), even though the curl_multi_fdset() function
-  always and unconditionally uses FD_SET and needs the check.
-  
-  Reported-by: 0xee on github
-  Fixes #7718
-  Closes #7719
-
-- FAQ: add GOPHERS + curl works on data, not files
-
-Version 7.79.0 (14 Sep 2021)
-
-Daniel Stenberg (14 Sep 2021)
-- RELEASE-NOTES: synced
-  
-  For the 7.79.0 release
-
-- THANKS: add contributors from 7.79.0 release cycle
-
-- FAQ: add two dev related questions
-  
-    8.1 Why does curl use C89?
-    8.2 Will curl be rewritten?
-  
-  Spell-checked-by: Paul Johnson
-  Closes #7715
-
-- zuul.d/jobs: disable three tests for *-openssl-disable-proxy
-  
-  ... as they mysteriously seem to permfail without being related to
-  proxy.
-  
-  Closes #7714
+  ngtcp2/ngtcp2@b0d86f60 changed:
 
-- [Patrick Monnerat brought this change]
+  - ngtcp2_conn_get_max_udp_payload_size =>
+    ngtcp2_conn_get_max_tx_udp_payload_size
 
-  ftp,imap,pop3,smtp: reject STARTTLS server response pipelining
-  
-  If a server pipelines future responses within the STARTTLS response, the
-  former are preserved in the pingpong cache across TLS negotiation and
-  used as responses to the encrypted commands.
-  
-  This fix detects pipelined STARTTLS responses and rejects them with an
-  error.
-  
-  CVE-2021-22947
-  
-  Bug: https://curl.se/docs/CVE-2021-22947.html
+  - ngtcp2_conn_get_path_max_udp_payload_size =>
+    ngtcp2_conn_get_path_max_tx_udp_payload_size
 
-- [Patrick Monnerat brought this change]
+  ngtcp2/ngtcp2@ec59b873 changed:
 
-  ftp,imap,pop3: do not ignore --ssl-reqd
-  
-  In imap and pop3, check if TLS is required even when capabilities
-  request has failed.
-  
-  In ftp, ignore preauthentication (230 status of server greeting) if TLS
-  is required.
-  
-  Bug: https://curl.se/docs/CVE-2021-22946.html
-  
-  CVE-2021-22946
-
-- [z2_ on hackerone brought this change]
-
-  mqtt: clear the leftovers pointer when sending succeeds
-  
-  CVE-2021-22945
-  
-  Bug: https://curl.se/docs/CVE-2021-22945.html
-
-- zuul: bump the rustls job to use v0.7.2
-  
-  ... and add -lm when using a rust library.
-  
-  Closes #7701
-
-- RELEASE-PROCEDURE: add release dates from now to 8.0.0 in 2023
-
-- SECURITY-PROCESS: tweak a little to match current practices
-  
-  Closes #7713
-
-- http_proxy: fix the User-Agent inclusion in CONNECT
-  
-  It should not refer to the uagent string that is allocated and created
-  for the end server http request, as that pointer may be cleared on
-  subsequent CONNECT requests.
-  
-  Added test case 1184 to verify.
-  
-  Reported-by: T200proX7 on github
-  Fixes #7705
-  Closes #7707
-
-- Curl_hsts_loadcb: don't attempt to load if hsts wasn't inited
-  
-  Reported-by: Jonathan Cardoso
-  Fixes #7710
-  Closes #7711
+  - 'early_data_rejected' member added to ng_callbacks.
 
-- [Tatsuhiro Tsujikawa brought this change]
+  Assisted-by: Daniel Stenberg
+  Reported-by: jurisuk@users.noreply.github.com
 
-  ngtcp2: fix build with ngtcp2 and nghttp3
-  
-  ngtcp2_conn_client_new and nghttp3_conn_client_new are now macros.
-  Check the wrapped functions instead.
-  
-  ngtcp2_stream_close callback now takes flags parameter.
-  
-  Closes #7709
-
-- write-out.d: clarify size_download/upload
-  
-  They show the number of "body" bytes transfered.
-  Fixes #7702
-  Closes #7706
-
-- http2: Curl_http2_setup needs to init stream data in all invokes
-  
-  Thus function was written to avoid doing multiple connection data
-  initializations, which is fine, but since it also initiates stream
-  related data it is crucial that it doesn't skip those even if called
-  again for the same connection. Solved by moving the stream
-  initializations before the "doing-it-again" check.
-  
-  Reported-by: Inho Oh
-  Fixes #7630
-  Closes #7692
-
-- url: fix compiler warning in no-verbose builds
-  
-  Follow-up from 2f0bb864c12
-  
-  Closes #7700
-
-- non-ascii: fix build errors from strerror fix
-  
-  Follow-up to 2f0bb864c12
-  
-  Closes #7697
-
-- parse_args: redo the warnings for --remote-header-name combos
-  
-  ... to avoid the memory leak risk pointed out by scan-build.
-  
-  Follow-up from 7a3e981781d6c18a
-  
-  Closes #7698
-
-- ngtcp2: adapt to new size defintions upstream
-  
-  Reviewed-by: Tatsuhiro Tsujikawa
-  Closes #7699
-
-- rustls: add strerror.h include
-  
-  Follow-up to 2f0bb864c12
-
-- docs: the security list is reached at security at curl.se now
-  
-  Also update the FAQ section a bit to encourage users to rather submit
-  security issues on hackerone than sending email.
-  
-  Closes #7689
-
-Marc Hoersken (9 Sep 2021)
-- runtests: add option -u to error on server unexpectedly alive
-  
-  Let's try to actually handle the server unexpectedly alive
-  case by first making them visible on CI builds as failures.
-  
-  This is needed to detect issues with killing of the test
-  servers completely including nested process chains with
-  multiple PIDs per test server (including bash and perl).
-  
-  On Windows/cygwin platforms this is especially helpful with
-  debugging PID mixups due to cygwin using its own PID space.
-  
-  Reviewed-by: Daniel Stenberg
-  Closes #7180
-
-Daniel Stenberg (9 Sep 2021)
-- opts docs: unify phrasing in NAME header
-  
-  - avoid writing "set ..." or "enable/disable ..." or "specify ..."
-    *All* options for curl_easy_setopt() are about setting or enabling
-    things and most of the existing options didn't use that way of
-    description.
-  
-  - start with lowercase letter, unless abbreviation. For consistency.
-  
-  - Some additional touch-ups
-  
-  Closes #7688
-
-- strerror.h: remove the #include from files not using it
-
-- lib: don't use strerror()
-  
-  We have and provide Curl_strerror() internally for a reason: strerror()
-  is not necessarily thread-safe so we should always try to avoid it.
-  
-  Extended checksrc to warn for this, but feature the check disabled by
-  default and only enable it in lib/
-  
-  Closes #7685
-
-Daniel Gustafsson (8 Sep 2021)
-- cirrus: Add FreeBSD 13.0 job and disable sanitizer build
-  
-  As alluded to the in the now removed comment, a 13.0 image became
-  available and is now ready to be used.
-  
-  The sanitizer builds were running on the 12.1 image which since has
-  been removed from the config, leaving the builds not running at all.
-  When enabled it turns out that they don't actually work due to very
-  long timeouts in executing the tests, so keep the disabled for now
-  but a bit more controlled.
-  
-  Closes #7592
-
-Daniel Stenberg (8 Sep 2021)
-- copyrights: update copyright year ranges
+  Fixes https://github.com/curl/curl/issues/9747
+  Closes https://github.com/curl/curl/pull/9748
 
-- RELEASE-NOTES: synced
+Daniel Stenberg (16 Oct 2022)
+- curl_path: return error if given a NULL homedir
 
-- INTERNALS: c-ares has a new home: c-ares.org
+  Closes #9740
 
-- docs: remove experimental mentions from HSTS and MQTT
-  
-  Reported-by: Jonathan Cardoso
-  Bug: https://github.com/curl/curl/pull/6700#issuecomment-913792863
-  Closes #7681
+- libssh: if sftp_init fails, don't get the sftp error code
 
-- [Cao ZhenXiang brought this change]
+  This flow extracted the wrong code (sftp code instead of ssh code), and
+  the code is sometimes (erroneously) returned as zero anyway, so skip
+  getting it and set a generic error.
 
-  curl: add warning for incompatible parameters usage
-  
-  --continue-at - and --remote-header-name are known incompatible parameters
-  
-  Closes #7674
+  Reported-by: David McLaughlin
+  Fixes #9737
+  Closes #9740
 
-- [git-bruh brought this change]
+- mqtt: return error for too long topic
 
-  examples/*hiperfifo.c: fix calloc arguments to match function proto
-  
-  Closes #7678
+  Closes #9744
 
-- INTERNALS: bump c-ares requirement to 1.16.0
-  
-  Since ba904db0705c93 we use ares_getaddrinfo, added in c-ares 1.16.0
+- [Rickard Hallerbäck brought this change]
 
-- curl: stop retry if Retry-After: is longer than allowed
-  
-  If Retry-After: specifies a period that is longer than what fits within
-  --retry-max-time, then stop retrying immediately.
-  
-  Added test 366 to verify.
-  
-  Reported-by: Kari Pahula
-  Fixes #7675
-  Closes #7676
+  tool_paramhlp: make the max argument a 'double'
 
-- [Michał Antoniak brought this change]
+  To fix compiler warnings "Implicit conversion from 'long' to 'double'
+  may lose precision"
 
-  mbedtls: avoid using a large buffer on the stack
-  
-  Use dynamic memory allocation for the buffer used in checking "pinned
-  public key". The PUB_DER_MAX_BYTES parameter with default settings is
-  set to a value greater than 2kB.
-  
-  Co-authored-by: Daniel Stenberg
-  Closes #7586
-
-- configure: make --disable-hsts work
-  
-  The AC_ARG_ENABLE() macro itself uses a variable called
-  'enable_[option]', so when our script also used a variable with that
-  name for the purpose of storing what the user wants, it also
-  accidentally made it impossible to switch off the feature with
-  --disable-hsts. Fix this by renaming our variable.
-  
-  Reported-by: Michał Antoniak
-  Fixes #7669
-  Closes #7672
+  Closes #9700
 
-Jay Satiro (5 Sep 2021)
-- config.d: note that curlrc is used even when --config
-  
-  Bug: https://github.com/curl/curl/pull/7666#issuecomment-912214751
-  Reported-by: Viktor Szakats
-  
-  Closes https://github.com/curl/curl/pull/7667
+Marc Hoersken (15 Oct 2022)
+- [Philip Heiduck brought this change]
 
-Daniel Stenberg (4 Sep 2021)
-- RELEASE-NOTES: synced
+  cirrus-ci: add more macOS builds with m1 based on x86_64 builds
 
-- test1173: check references to libcurl options
-  
-  ... that they refer to actual existing libcurl options.
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7656
-
-- CURLOPT_UNIX_SOCKET_PATH.3: remove nginx reference, add see also
-  
-  Closes #7656
-
-- opt-docs: verify man page sections + order
-  
-  In every libcurl option man page there are now 8 mandatory sections that
-  must use the right name in the correct order and test 1173 verifies
-  this. Only 14 man pages needed adjustments.
-  
-  The sections and the order is as follows:
-  
-   - NAME
-   - SYNOPSIS
-   - DESCRIPTION
-   - PROTOCOLS
-   - EXAMPLE
-   - AVAILABILITY
-   - RETURN VALUE
-   - SEE ALSO
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7656
-
-- opt-docs: make sure all man pages have examples
-  
-  Extended manpage-syntax.pl (run by test 1173) to check that every man
-  page for a libcurl option has an EXAMPLE section that is more than two
-  lines. Then fixed all errors it found and added examples.
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7656
-
-- get.d: provide more useful examples
-  
-  Closes #7668
-
-- page-header: add GOPHERS, simplify wording in the 1st para
-  
-  Closes #7665
-
-- connect: get local port + ip also when reusing connections
-  
-  Regression. In d6a37c23a3c (7.75.0) we removed the duplicated storage
-  (connection + easy handle), so this info needs be extracted again even
-  for re-used connections.
-  
-  Add test 435 to verify
-  
-  Reported-by: Max Dymond
-  Fixes #7660
-  Closes #7662
-
-Marcel Raad (2 Sep 2021)
-- multi: fix compiler warning with `CURL_DISABLE_WAKEUP`
-  
-  `use_wakeup` is unused in this case.
-  
-  Closes https://github.com/curl/curl/pull/7661
-
-Daniel Stenberg (1 Sep 2021)
-- tests: adjust the tftpd output to work with hyper mode
-  
-  By making them look less like http headers, the hyper mode "tweak"
-  doesn't interfere.
-  
-  Enable test 2002 and 2003 in hyper builds (and 1280 which is unrelated
-  but should be enabled).
-  
-  Closes #7658
-
-Daniel Gustafsson (1 Sep 2021)
-- [Gisle Vanem brought this change]
+  Also refactor macOS builds to use task matrix.
 
-  openssl: annotate SSL3_MT_SUPPLEMENTAL_DATA
-  
-  This adds support for the previously unhandled supplemental data which
-  in -v output was printed like:
-  
-      TLSv1.2 (IN), TLS header, Unknown (23):
-  
-  These will now be printed with proper annotation:
-  
-      TLSv1.2 (OUT), TLS header, Supplemental data (23):
-  
-  Closes #7652
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Assisted-by: Marc Hörsken
+  Closes #9565
 
-Daniel Stenberg (1 Sep 2021)
-- curl.1: provide examples for each option
-  
-  The file format for each option now features a "Example:" header that
-  can provide one or more examples that get rendered appropriately in the
-  output. All options MUST have at least one example or gen.pl complains
-  at build-time.
-  
-  This fix also does a few other minor format and consistency cleanups.
-  
-  Closes #7654
-
-- progress: make trspeed avoid floats
-  
-  and compiler warnings for data conversions.
-  
-  Reported-by: Michał Antoniak
-  Fixes #7645
-  Closes #7653
+Viktor Szakats (14 Oct 2022)
+- cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on Windows
 
-- test365: verify response with chunked AND Content-Length headers
+  `lib/config-win32.h` enables this configuration option unconditionally.
+  Make it apply to CMake builds as well.
 
-- http: ignore content-length if any transfer-encoding is used
-  
-  Fixes #7643
-  Closes #7649
+  While here, delete a broken check for
+  `HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID` from `CMakeLists.txt`. This came with
+  the initial commit [1], but did not include the actual verification code
+  inside `CMake/CurlTests.c`, so it always failed. A later commit [2]
+  added a second test, for non-Windows platforms.
 
-- RELEASE-NOTES: synced
+  Enabling this flag causes test 1056 to fail with CMake builds, as they
+  do with autotools builds. Let's apply the same solution and ignore the
+  results here as well.
 
-- Revert "http2: skip immediate parsing of payload following protocol switch"
-  
-  This reverts commit 455a63c66f188598275e87d32de2c4e8e26b80cb.
-  
-  Reported-by: Tk Xiong
-  Fixes #7633
-  Closes #7648
-
-- KNOWN_BUGS: HTTP/3 doesn't support client certs
-  
-  Closes #7625
-
-- mailing lists: move from cool.haxx.se to lists.haxx.se
-
-- http_proxy: only wait for writable socket while sending request
-  
-  Otherwise it would wait socket writability even after the entire CONNECT
-  request has sent and make curl basically busy-loop while waiting for a
-  response to come back.
-  
-  The previous fix attempt in #7484 (c27a70a591a4) was inadequate.
-  
-  Reported-by: zloi-user on github
-  Reported-by: Oleguer Llopart
-  Fixes #7589
-  Closes #7647
-
-- http: disallow >3-digit response codes
-  
-  Make the built-in HTTP parser behave similar to hyper and reject any
-  HTTP response using more than 3 digits for the response code.
-  
-  Updated test 1432 accordingly.
-  Enabled test 1432 in the hyper builds.
-  
-  Closes #7641
+  [1] 4c5307b45655ba75ab066564afdc0c111a8b9291
+  [2] aec7c5a87c8482b6ddffa352d7d220698652262e
 
-- [Tatsuhiro Tsujikawa brought this change]
+  Reviewed-by: Daniel Stenberg
+  Assisted-by: Marcel Raad
 
-  ngtcp2: stop buffering crypto data
-  
-  Stop buffering crypto data because libngtcp2 now buffers submitted
-  crypto data.
-  
-  Closes #7637
-
-- test1280: CRLFify the response to please hyper
-  
-  Closes #7639
-
-- tests: enable test 1129 for hyper builds
-  
-  Closes #7638
-
-- curl: better error message when -O fails to get a good name
-  
-  Due to how this currently works internally, it needs a working initial
-  file name to store contents in, so it may still fail even with -J is
-  used (and thus accepting a name from content-disposition:) if the file
-  name part of the URL isn't "good enough".
-  
-  Fixes #7628
-  Closes #7635
-
-- curl_easy_setopt: tweak the string copy wording
-  
-  Reported-by: Yaobin Wen
-  Fixes #7632
-  Closes #7634
+  Closes #9726
 
-- RELEASE-NOTES: synced
+- cmake: set HAVE_GETADDRINFO_THREADSAFE on Windows
 
-- [Don J Olmstead brought this change]
+  autotools enables this configuration option unconditionally for Windows
+  [^1]. Do the same in CMake.
 
-  cmake: sync CURL_DISABLE options
-  
-  Adds the full listing of CURL_DISABLE options to the CMake build. Moves
-  all option code, except for CURL_DISABLE_OPENSSL_AUTO_LOA_CONFIG which
-  resides near OpenSSL configuration, to the same block of code. Also
-  sorts the options here and in the cmake config header.
-  
-  Additionally sorted the CURL-DISABLE listing and fixed the
-  CURL_DISABLE_POP3 option.
-  
-  Closes #7624
-
-Jay Satiro (25 Aug 2021)
-- KNOWN_BUGS: FTPS upload data loss with TLS 1.3
-  
-  Bug: https://github.com/curl/curl/issues/6149
-  Reported-by: Bylon2@users.noreply.github.com
-  
-  Closes https://github.com/curl/curl/pull/7623
-
-Daniel Stenberg (24 Aug 2021)
-- cmake: avoid poll() on macOS
-  
-  ... like we do in configure builds. Since poll() on macOS is not
-  reliable enough.
-  
-  Reported-by: marc-groundctl
-  Fixes #7595
-  Closes #7619
-
-- c-hyper: handle HTTP/1.1 => HTTP/1.0 downgrade on reused connection
-  
-  Enable test 1074
-  
-  Closes #7617
-
-- c-hyper: deal with Expect: 100-continue combined with POSTFIELDS
-  
-  Enable test 1130 and 1131
-  
-  Closes #7616
-
-- [a1346054 brought this change]
-
-  tests: be explicit about using 'python3' instead of 'python'
-  
-  This fixes running tests in virtualenvs (or on distros) that no longer
-  have a symlink from python to python2 or python3.
-  
-  Closes #7602
-
-- [a1346054 brought this change]
-
-  scripts: invoke interpreters through /usr/bin/env
-  
-  Closes #7602
-
-- DISABLED: enable 11 more tests for hyper builds
-  
-  Closes #7612
-
-- setopt: enable CURLOPT_IGNORE_CONTENT_LENGTH for hyper
-  
-  Since this option is also used for FTP, it needs to work to set for
-  applications even if hyper doesn't support it for HTTP. Verified by test
-  1137.
-  
-  Updated docs to specify that the option doesn't work for HTTP when using
-  the hyper backend.
-  
-  Closes #7614
-
-- test1138: remove trailing space to make work with hyper
-  
-  Closes #7613
-
-- libcurl-errors.3: clarify two CURLUcode errors
-  
-  CURLUE_BAD_HANDLE and CURLUE_BAD_PARTPOINTER should be for "bad" or
-  wrong pointers in a generic sense, not just for NULL pointers.
-  
-  Reviewed-by: Jay Satiro
-  
-  Ref: #7605
-  Closes #7611
-
-Jay Satiro (23 Aug 2021)
-- symbols-in-versions: fix CURLSSLBACKEND_QSOSSL last used version
-  
-  ... and also change the 'Removed' column name to 'Last' since that
-  column is for the last version to contain the symbol.
-  
-  Closes https://github.com/curl/curl/pull/7609
-
-Daniel Stenberg (23 Aug 2021)
-- urlapi.c:seturl: assert URL instead of using if-check
-  
-  There's no code flow possible where this can happen. The assert makes
-  sure it also won't be introduced undetected in the future.
-  
-  Closes #7610
-
-- curl-openssl.m4: show correct output for OpenSSL v3
-  
-  Using 3.0.0 versions configure should now show this:
-  
-  checking for OpenSSL headers version... 3.0.0 - 0x300
-  checking for OpenSSL library version... 3.0.0
-  checking for OpenSSL headers and library versions matching... yes
-  
-  This output doesn't actually change what configure generates but is only
-  "cosmetic".
-  
-  Reported-by: Randall S. Becker
-  Fixes #7606
-  Closes #7608
-
-Jay Satiro (22 Aug 2021)
-- mksymbolsmanpage.pl: Fix showing symbol's last used version
-  
-  Prior to this change the symbol's deprecated version was erroneously
-  shown as its last used version.
-  
-  Bug: https://github.com/curl/curl/commit/4e53b94#commitcomment-55239509
-  Reported-by: i-ky@users.noreply.github.com
-
-Daniel Stenberg (21 Aug 2021)
-- mksymbolsmanpage.pl: match symbols case insenitively
-  
-  Follow-up to 4e53b9430c750 which made this bug show.
-  
-  Reported-by: i-ky
-  Bug: https://github.com/curl/curl/commit/4e53b9430c7504de8984796e2a2091ec16f27136#commitcomment-55239253
-  Closes #7607
-
-- asyn-ares: call ares_freeaddrinfo() to clean up addrinfo results
-  
-  As this leaks memory otherwise
-  
-  Follow-up to ba904db0705c931
-  
-  Closes #7599
-
-- [Ehren Bendler brought this change]
-
-  wolfssl: clean up wolfcrypt error queue
-  
-  If wolfSSL is built in certain ways (OPENSSL_EXTRA or Debug), the error
-  queue gets added on to for each session and never freed. Fix it by
-  calling ERR_clear_error() like in vtls/openssl when needed. This func is
-  a no-op in wolfcrypt if the error queue is not enabled.
-  
-  Closes #7594
-
-- man pages: remove trailing whitespaces
-  
-  Extended test 1173 (via the manpage-syntax.pl script) to detect and warn
-  for them.
-  
-  Ref: #7602
-  Reported-by: a1346054 on github
-  Closes #7604
-
-- mailmap: add Gleb Ivanovsky
-
-- config.d: escape the backslash properly
-  
-  Closes #7603
+  The above will make this work for all reasonably recent environments.
+  The logic present in `lib/config-win32.h` [^2] has the following
+  exceptions which we did not cover in this CMake update:
 
-- [Don J Olmstead brought this change]
+  - Builds targeting Windows 2000 and earlier
+  - MS Visual C++ 5.0 (1997) and earlier
 
-  curl_setup.h: sync values for HTTP_ONLY
-  
-  The values for HTTP_ONLY differed between CMakeLists.txt and
-  curl_setup.h. Sync them and sort the values in curl_setup.h to make it
-  easier to spot differences.
-  
-  Closes #7601
-
-Jay Satiro (21 Aug 2021)
-- configure: set classic mingw minimum OS version to XP
-  
-  - If the user has not specified a minimum OS version (via WINVER or
-    _WIN32_WINNT macros) then set it to Windows XP.
-  
-  Prior to this change classic MinGW defaulted the minimum OS version
-  to Windows NT 4.0 which is way too old. At least Windows XP is needed
-  for getaddrinfo (which resolves hostnames to IPv6 addresses).
-  
-  Ref: https://github.com/curl/curl/issues/7483#issuecomment-891597034
-  
-  Closes https://github.com/curl/curl/pull/7581
-
-- schannel: Work around typo in classic mingw macro
-  
-  - Define ALG_CLASS_DHASH (the typo from the include) to ALG_CLASS_HASH.
-  
-  Prior to this change there was an incomplete fix to ignore the
-  CALG_TLS1PRF macro on those versions of MinGW where it uses the
-  ALG_CLASS_DHASH typoed macro.
-  
-  Ref: 48cf45c
-  Ref: https://osdn.net/projects/mingw/ticket/38391
-  Ref: https://github.com/curl/curl/issues/2924
-  
-  Closes https://github.com/curl/curl/pull/7580
-
-Daniel Stenberg (20 Aug 2021)
-- RELEASE-NOTES: synced
+  Also make sure to disable this feature when `HAVE_GETADDRINFO` isn't
+  set, to avoid a broken build. We might want to handle that in the C
+  sources in a future commit.
 
-- http_proxy: fix user-agent and custom headers for CONNECT with hyper
-  
-  Enable test 287
-  
-  Closes #7598
-
-- c-hyper: initial support for "dumping" 1xx HTTP responses
-  
-  With the use hyper_request_on_informational()
-  
-  Enable test 155 and 158
-  
-  Closes #7597
-
-Marc Hoersken (18 Aug 2021)
-- tests/*server.pl: flush output before executing subprocess
-  
-  Also avoid shell processes staying around by using exec.
-  This is necessary to avoid output data being buffering
-  inside the process chain of Perl, Bash/Shell and our
-  test server binaries. On non-Windows systems the exec
-  will also make the subprocess replace the intermediate
-  shell, but on Windows it will at least bind the processes
-  together since there is no real fork or exec available.
-  
-  See: https://cygwin.com/cygwin-ug-net/highlights.html
-  and: https://docs.microsoft.com/cpp/c-runtime-library/exec-wexec-functions
-  Ref: https://github.com/curl/curl/pull/7530#issuecomment-900949010
-  
-  Reviewed-by: Daniel Stenberg
-  Reviewed-by: Jay Satiro
-  Closes #7530
-
-- CI: use GitHub Container Registry instead of Docker Hub
-  
-  Avoid limits on Docker Hub and improve image pull/download speed.
-  
-  Closes #7587
-
-Daniel Stenberg (18 Aug 2021)
-- openssl: when creating a new context, there cannot be an old one
-  
-  Remove the previous handling that would call SSL_CTX_free(), and instead
-  add an assert that halts a debug build if there ever is a context
-  already set at this point.
-  
-  Closes #7585
-
-Jay Satiro (18 Aug 2021)
-- KNOWN_BUGS: Renegotiate from server may cause hang for OpenSSL backend
-  
-  Closes https://github.com/curl/curl/issues/6785
-
-Viktor Szakats (17 Aug 2021)
-- docs/BINDINGS: URL update
-
-Marc Hoersken (17 Aug 2021)
-- tests/server/*.c: align handling of portfile argument and file
-  
-  1. Call the internal variable portname (like pidname) everywhere.
-  2. Have a variable wroteportfile (like wrotepidfile) everywhere.
-  3. Make sure the file is cleaned up on exit (like pidfile).
-  4. Add parameter --portfile to usage outputs everywhere.
-  
-  Reviewed-by: Daniel Stenberg
-  
-  Replaces #7523
-  Closes #7574
-
-Daniel Gustafsson (17 Aug 2021)
-- KNOWN_BUGS: Fix a number of typos in KNOWN_BUGS
-  
-  Fixes a set of typos found in section 11.3.
-
-Daniel Stenberg (17 Aug 2021)
-- getparameter: fix the --local-port number parser
-  
-  It could previously get tricked into parsing the uninitialized stack
-  based buffer.
-  
-  Reported-by: Brian Carpenter
-  Closes #7582
-
-- KNOWN_BUGS: Can't use Secure Transport with Crypto Token Kit
-  
-  Closes #7048
-
-- [Jan Verbeek brought this change]
-
-  curl: add warning for ignored data after quoted form parameter
-  
-  In an argument like `-F 'x=@/etc/hostname;filename="foo"abc'` the `abc`
-  is ignored. This adds a warning if the ignored data isn't all
-  whitespace.
-  
-  Closes #7394
-
-Jay Satiro (17 Aug 2021)
-- codeql: fix error "Resource not accessible by integration"
-  
-  - Enable codeql writing security-events.
-  
-  GitHub set the default permissions to read, apparently since earlier
-  this year.
-  
-  Ref: https://github.com/github/codeql-action/issues/464
-  Ref: https://github.blog/changelog/2021-04-20-github-actions-control-permissions-for-github_token/
-  
-  Fixes https://github.com/curl/curl/issues/7575
-  Closes https://github.com/curl/curl/pull/7576
-
-- tool_operate: Fix --fail-early with parallel transfers
-  
-  - Abort via progress callback to fail early during parallel transfers.
-  
-  When a critical error occurs during a transfer (eg --fail-early
-  constraint) then other running transfers will be aborted via progress
-  callback and finish with error CURLE_ABORTED_BY_CALLBACK (42). In this
-  case, the callback error does not become the most recent error and a
-  custom error message is used for those transfers:
-  
-  curld --fail --fail-early --parallel
-  https://httpbin.org/status/404 https://httpbin.org/delay/10
-  
-  curl: (22) The requested URL returned error: 404
-  curl: (42) Transfer aborted due to critical error in another transfer
-  
-  > echo %ERRORLEVEL%
-  22
-  
-  Fixes https://github.com/curl/curl/issues/6939
-  Closes https://github.com/curl/curl/pull/6984
-
-Daniel Stenberg (17 Aug 2021)
-- [Sergey Markelov brought this change]
+  [^1]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/m4/curl-functions.m4#L2067-L2070
 
-  sectransp: support CURLINFO_CERTINFO
-  
-  Fixes #4130
-  Closes #7372
+  [^2]: https://github.com/curl/curl/blob/68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6/lib/config-win32.h#L511-L528
 
-- ngtcp2: remove the acked_crypto_offset struct field init
-  
-  ... as it is gone from the API upstream.
-  
-  Closes #7578
+  Closes #9727
 
-- misc: update incorrect copyright year ranges
-  
-  Closes #7577
+- cmake: sync HAVE_SIGNAL detection with autotools
 
-- KNOWN_BUGS: HTTP/3 quiche upload large file fails
-  
-  Closes #7532
+  `HAVE_SIGNAL` means the availability of the `signal()` function in
+  autotools, while in CMake it meant the availability of that function
+  _and_ the symbol `SIGALRM`.
 
-- KNOWN_BUGS: CMake build with MIT Kerberos does not work
-  
-  Closes #6904
+  The latter is not available on Windows, but the function is, which means
+  on Windows, autotools did define `HAVE_SIGNAL`, but CMake did not,
+  introducing a slight difference into the binaries.
 
-- TODO: add asynch getaddrinfo support
-  
-  Closes #6746
+  This patch syncs CMake behaviour with autotools to look for the function
+  only.
 
-- RELEASE-NOTES: synced
+  The logic came with the initial commit adding CMake support to curl, so
+  the commit history doesn't reveal the reason behind it. In any case,
+  it's best to check the existence of `SIGALRM` directly in the source
+  before use. For now, curl builds fine with `HAVE_SIGNAL` enabled and
+  `SIGALRM` missing.
 
-- [Artur Sinila brought this change]
+  Follow-up to 68fa9bf3f5d7b4fcbb57619f70cb4aabb79a51f6
 
-  http2: revert call the handle-closed function correctly on closed stream
-  
-  Reverts 252790c5335a221
-  
-  Assisted-by: Gergely Nagy
-  Fixes #7400
-  Closes #7525
+  Closes #9725
 
-- [Patrick Monnerat brought this change]
+- cmake: delete duplicate HAVE_GETADDRINFO test
 
-  auth: do not append zero-terminator to authorisation id in kerberos
-  
-  RFC4752 Section 3.1 states "The authorization identity is not terminated
-  with a zero-valued (%x00) octet". Although a comment in code said it may
-  be needed anyway, nothing confirms it. In addition, servers may consider
-  it as part of the identity, causing a failure.
-  
-  Closes #7008
+  A custom `HAVE_GETADDRINFO` check came with the initial CMake commit
+  [1]. A later commit [2] added a standard check for it as well. The
+  standard check run before the custom one, so CMake ignored the latter.
 
-- [Patrick Monnerat brought this change]
+  The custom check was also non-portable, so this patch deletes it in
+  favor of the standard check.
 
-  auth: use sasl authzid option in kerberos
-  
-  ... instead of deriving it from active ticket.
-  Closes #7008
+  [1] 4c5307b45655ba75ab066564afdc0c111a8b9291
+  [2] aec7c5a87c8482b6ddffa352d7d220698652262e
 
-- [Patrick Monnerat brought this change]
+  Closes #9731
 
-  auth: we do not support a security layer after kerberos authentication
-  
-  Closes #7008
+Daniel Stenberg (14 Oct 2022)
+- tool_formparse: unroll the NULL_CHECK and CONST_FREE macros
 
-- [Patrick Monnerat brought this change]
+  To make the code read more obvious
 
-  auth: properly handle byte order in kerberos security message
-  
-  Closes #7008
+  Assisted-by: Jay Satiro
 
-- [z2_ brought this change]
+  Closes #9710
 
-  x509asn1: fix heap over-read when parsing x509 certificates
-  
-  Assisted-by: Patrick Monnerat
-  Closes #7536
+- [Christopher Sauer brought this change]
 
-- KNOWN_BUGS: Disconnects don't do verbose
-  
-  Closes #6995
+  docs/INSTALL: update Android Instructions for newer NDKs
 
-- mailmap: fixup Michał Antoniak
+  Closes #9732
 
-- [Michał Antoniak brought this change]
+- markdown-uppercase: ignore quoted sections
 
-  build: fix compiler warnings
-  
-  For when CURL_DISABLE_VERBOSE_STRINGS and DEBUGBUILD flags are both
-  active.
-  
-  - socks.c : warning C4100: 'lineno': unreferenced formal parameter
-    (co-authored by Daniel Stenberg)
-  
-  - mbedtls.c: warning C4189: 'port': local variable is initialized but
-    not referenced
-  
-  - schannel.c: warning C4189: 'hostname': local variable is initialized
-    but not referenced
-  
-  Cloes #7528
-
-- [Gleb Ivanovsky brought this change]
-
-  CODE_STYLE-md: fix bold font style
-  
-  Markdown gets confused with abundance of asterisks, so use underscores
-  instead.
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7569
+  Sections within the markdown ~~~ or ``` are now ignored.
 
-- [Gleb Ivanovsky brought this change]
+  Closes #9733
 
-  CODE_STYLE-md: add missing comma
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7570
-
-- [Daniel Gustafsson brought this change]
-
-  examples/ephiperfifo.c: simplify signal handler
-  
-  The signal handler registered for SIGINT is only handling SIGINT
-  so there isn't much need for inspecting the signo.  While there,
-  rename the handler to be more specific.
-  
-  g_should_exit should really be of sig_atomic_t type, but relying
-  on autoconf in the examples seems like a bad idea so keep that
-  for now.
-  
-  Reviewed-by: Daniel Stenberg
-  Closes #7310
+- RELEASE-NOTES: synced
 
-- c-hyper: initial step for 100-continue support
-  
-  Enabled test 154
-  
-  Closes #7568
+- test8: update as cookies no longer can have "embedded" TABs in content
 
-- [Ikko Ashimine brought this change]
+- test1105: extend to verify TAB in name/content discarding cookies
 
-  vtls: fix typo in schannel_verify.c
-  
-  occurence -> occurrence
-  
-  Closes #7566
+- cookie: reject cookie names or content with TAB characters
 
-- [Emil Engler brought this change]
+  TABs in name and content seem allowed by RFC 6265: "the algorithm strips
+  leading and trailing whitespace from the cookie name and value (but
+  maintains internal whitespace)"
 
-  curl_url_get.3: clarify about path and query
-  
-  The current man-page lacks some details regarding the obtained path and
-  query.
-  
-  Closes #7563
-
-- c-hyper: fix header value passed to debug callback
-  
-  Closes #7567
-
-Viktor Szakats (12 Aug 2021)
-- cleanup: URL updates
-  
-  - replace broken URL with the one it was most probably pointing to
-    when added (lib/tftp.c)
-  - replace broken URL with archive.org link (lib/curl_ntlm_wb.c)
-  - delete unnecessary protocol designator from archive.org URL
-    (docs/BINDINGS.md)
-  
-  Closes #7562
-
-Daniel Stenberg (12 Aug 2021)
-- [April King brought this change]
-
-  DEPRECATE.md: linkify curl-library mailing list
-  
-  Closes #7561
-
-- [Barry Pollard brought this change]
-
-  output.d: add method to suppress response bodies
-  
-  Closes #7560
-
-- TODO: remove 'c-ares deviates on http://1346569778'
-  
-  Fixed since 56a037cc0ad1b2 (7.77.0)
-
-- [Colin O'Dell brought this change]
-
-  BINDINGS.md: update links to use https where available
-  
-  Closes #7558
-
-- asyn-ares.c: move all version number checks to the top
-  
-  ... and use #ifdef [feature] in the code as per our guidelines.
-
-- ares: use ares_getaddrinfo()
-  
-  ares_getaddrinfo() is the getaddrinfo() cloned provided by c-ares, introduced
-  in version 1.16.0.
-  
-  With older c-ares versions, curl invokes ares_gethostbyname() twice - once for
-  IPv4 and once for IPv6 to resolve both addresses, and then combines the
-  returned results.
-  
-  Reported-by: jjandesmet
-  Fixes #7364
-  Closes #7552
+  Cookies with TABs in the names are rejected by Firefox and Chrome.
 
-- [Tatsuhiro Tsujikawa brought this change]
+  TABs in content are stripped out by Firefox, while Chrome discards the
+  whole cookie.
 
-  ngtcp2: utilize crypto API functions to simplify
-  
-  Closes #7551
+  TABs in cookies also cause issues in saved netscape cookie files.
 
-- [megatronking brought this change]
+  Reported-by: Trail of Bits
 
-  ngtcp2: reset the oustanding send buffer again when drained
-  
-  Closes #7538
+  URL: https://curl.se/mail/lib-2022-10/0032.html
+  URL: https://github.com/httpwg/http-extensions/issues/2262
 
-Michael Kaufmann (10 Aug 2021)
-- progress: fix a compile warning on some systems
-  
-  lib/progress.c:380:40: warning: conversion to 'long double' from
-  'curl_off_t {aka long long int}' may alter its value [-Wconversion]
-  
-  Closes #7549
+  Closes #9659
 
-Daniel Stenberg (10 Aug 2021)
-- RELEASE-NOTES: synced
+- curl/add_parallel_transfers: better error handling
 
-- http: consider cookies over localhost to be secure
-  
-  Updated test31.
-  Added test 392 to verify secure cookies used for http://localhost
-  
-  Reviewed-by: Daniel Gustafsson
-  Fixes #6733
-  Closes #7263
-
-- TODO: erase secrets from heap/stack after use
-  
-  Closes #7268
-
-Jay Satiro (10 Aug 2021)
-- hostip: Make Curl_ipv6works function independent of getaddrinfo
-  
-  - Do not assume IPv6 is not working when getaddrinfo is not present.
-  
-  The check to see if IPv6 actually works is now independent of whether
-  there is any resolver that can potentially resolve a hostname to IPv6.
-  
-  Prior to this change if getaddrinfo() was not found at compile time then
-  Curl_ipv6works() would be defined as a macro that returns FALSE.
-  
-  When getaddrinfo is not found then libcurl is built with CURLRES_IPV4
-  defined instead of CURLRES_IPV6, meaning that it cannot do IPv6 lookups
-  in the traditional way. With this commit if libcurl is built with IPv6
-  support (ENABLE_IPV6) but without getaddrinfo (CURLRES_IPV6), and the
-  IPv6 stack is actually working, then it is possible for libcurl to
-  resolve IPv6 addresses by using DoH.
-  
-  Ref: https://github.com/curl/curl/issues/7483#issuecomment-890765378
-  
-  Closes https://github.com/curl/curl/pull/7529
-
-- test1565: fix windows build errors
-  
-  - Use our wait_ms() instead of sleep() since Windows doesn't have the
-    latter.
-  
-  - Use a separate variable to keep track of whether the pthread_t thread
-    id is valid.
-  
-  On Windows pthread_t is not an integer type. pthread offers no macro for
-  invalid pthread_t thread id, so validity is kept track of separately.
-  
-  Closes https://github.com/curl/curl/pull/7527
-
-- [Jeremy Falcon brought this change]
-
-  winbuild/README.md: clarify GEN_PDB option
-  
-  - Document that GEN_PDB option creates an external database.
-  
-  Ref: https://github.com/curl/curl/issues/7502
-
-Daniel Stenberg (9 Aug 2021)
-- [Tatsuhiro Tsujikawa brought this change]
+  1 - consider the transfer handled at once when in the function, to avoid
+      the same list entry to get added more than once in rare error
+      situations
 
-  ngtcp2: replace deprecated functions with nghttp3_conn_shutdown_stream_read
-  
-  Closes #7546
+  2 - set the ERRORBUFFER for the handle first after it has been added
+      successfully
 
-- [Tatsuhiro Tsujikawa brought this change]
+  Reported-by: Trail of Bits
 
-  ngtcp2: rework the return value handling of ngtcp2_conn_writev_stream
-  
-  Rework the return value handling of ngtcp2_conn_writev_stream and treat
-  NGTCP2_ERR_STREAM_SHUT_WR separately.
-  
-  Closes #7546
+  Closes #9729
 
-- configure: error out if both ngtcp2 and quiche are specified
-  
-  Reported-by: Vincent Grande
-  See #7539
-  Closes #7545
+- netrc: remove the two 'changed' arguments
 
-- [Jeff Mears brought this change]
+  As no user of these functions used the returned content.
 
-  easy: use a custom implementation of wcsdup on Windows
-  
-  ... so that malloc/free overrides from curl_global_init are used for
-  wcsdup correctly.
-  
-  Closes #7540
+- test495: verify URL encoded user name + netrc-optional
 
-- zuul: add an mbedtls3 CI job
-  
-  Closes #7544
+  Reproduced issue #9709
 
-- [Benau brought this change]
+- netrc: use the URL-decoded user
 
-  mbedTLS: initial 3.0.0 support
-  
-  Closes #7428
+  When the user name is provided in the URL it is URL encoded there, but
+  when used for authentication the encoded version should be used.
 
-- RELEASE-NOTES: synced
+  Regression introduced after 7.83.0
 
-- configure.ac: revert bad nghttp2 library detection improvements
-  
-  This reverts commit b4b34db65f9f8, 673753344c5f and 29c7cf79e8b.
-  
-  The logic is now back to assuming that the nghttp2 lib is called nghttp2 and
-  nothing else.
-  
-  Reported-by: Rui Pinheiro
-  Reported-by: Alex Crichton
-  Fixes #7514
-  Closes #7515
-
-- happy-eyeballs-timeout-ms.d: polish the wording
-  
-  Reported-by: Josh Soref
-  Fixes #7433
-  Closes #7542
-
-- [modbw brought this change]
-
-  mbedtls_threadlock: fix unused variable warning
-  
-  Closes #7393
+  Reported-by: Jonas Haag
+  Fixes #9709
+  Closes #9715
 
-- [Tatsuhiro Tsujikawa brought this change]
+- [Shaun Mirani brought this change]
 
-  ngtcp2: compile with the latest ngtcp2 and nghttp3
-  
-  Closes #7541
+  url: allow non-HTTPS HSTS-matching for debug builds
 
-Marc Hoersken (31 Jul 2021)
-- CI/cirrus: reduce compile time with increased parallism
-  
-  Cirrus CI VMs have 2 CPUs, let's use them also for Windows builds.
-  
-  Reviewed-by: Daniel Stenberg
-  Closes #7505
-
-Daniel Stenberg (30 Jul 2021)
-- [Bin Lan brought this change]
-
-  tool/tests: fix potential year 2038 issues
-  
-  The length of 'long' in a 32-bit system is 32 bits, which cannot be used
-  to save timestamps after 2038. Most operating systems have extended
-  time_t to 64 bits.
-  
-  Remove the castings to long.
-  
-  Closes #7466
-
-- compressed.d: it's a request, not an order
-  
-  Clarified
-  
-  Reported-by: Dan Jacobson
-  Reviewed-by: Daniel Gustafsson
-  Fixes #7516
-  Closes #7517
-
-- [Bernhard M. Wiedemann brought this change]
-
-  tests: make three tests pass until 2037
-  
-  after 2038 something in test1915 fails on 32-bit OSes
-  
-  Closes #7512
-
-Daniel Gustafsson (30 Jul 2021)
-- connect: remove superfluous conditional
-  
-  Commit dbd16c3e2 cleaned up the logic for traversing the addrinfos,
-  but the move left a conditional on ai which no longer is needed as
-  the while loop reevaluation will cover it.
-  
-  Closes #7511
-  Reviewed-by: Carlo Marcelo Arenas Belón
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Closes #9728
 
-Daniel Stenberg (29 Jul 2021)
-- RELEASE-NOTES: synced
-  
-  and bump curlver to 7.79.0 for next release
-
-Marc Hoersken (29 Jul 2021)
-- tests/*server.py: remove pidfile on server termination
-  
-  Avoid pidfile leaking/laying around after server already exited.
-  
-  Reviewed-by: Daniel Stenberg
-  Closes #7506
-
-Daniel Gustafsson (27 Jul 2021)
-- tool_main: fix typo in comment
-  
-  The referred to library is NSPR, so fix the switched around characters.
-
-Daniel Stenberg (28 Jul 2021)
-- [Aleksandr Krotov brought this change]
-
-  bearssl: support CURLOPT_CAINFO_BLOB
-  
-  Closes #7468
-
-- curl.1: mention "global" flags
-  
-  Mention options that are "global". A global command line option is one
-  that doesn't get reset at --next uses and therefore don't need to be
-  used again.
-  
-  Reported-by: Josh Soref
-  
-  Fixes #7457
-  Closes #7510
-
-- CURLOPT_DOH_URL.3: CURLOPT_OPENSOCKETFUNCTION is not inherited
-  
-  Reported-by: Daniel Woelfel
-  Fixes #7441
-  Closes #7509
-
-- KNOWN_BUGS: add more HTTP/3 problems
-  
-  Closes #7351
-  Closes #7339
-  Closes #7125
-
-Marc Hoersken (27 Jul 2021)
-- CI/azure: reduce compile time with increased parallism
-  
-  Azure Pipelines CI VMs have 2 CPUs, let's use them.
-  
-  Closes #7489
-
-Jay Satiro (27 Jul 2021)
-- [Josh Soref brought this change]
-
-  docs: fix grammar
-  
-  Fixes https://github.com/curl/curl/issues/7444
-  Fixes https://github.com/curl/curl/issues/7451
-  Fixes https://github.com/curl/curl/issues/7465
-  Closes https://github.com/curl/curl/pull/7495
-
-- mail-rcpt.d: fix grammar
-  
-  Remove confusing sentence that says to specify an e-mail address for
-  mail transfer, since that's implied.
-  
-  Reported-by: Josh Soref
-  
-  Fixes https://github.com/curl/curl/issues/7452
-  Closes https://github.com/curl/curl/pull/7495
-
-Daniel Stenberg (27 Jul 2021)
-- c-hyper: remove the hyper_executor_poll() loop from Curl_http
-  
-  1. it's superfluous
-  2. it didn't work identically to the Curl_hyper_stream one which could
-     cause problems like #7486
-  
-  Pointed-out-by: David Cook
-  Closes #7499
-
-- curl-openssl.m4: check lib64 for the pkg-config file
-  
-  OpenSSL recently started putting the libs in $prefix/lib64 on 'make
-  install', so we check that directory for pkg-config data if the 'lib'
-  check fails.
-  
-  Closes #7503
-
-- CURLOPT_SSL_CTX_*.3: tidy up the example
-  
-  Use the proper code style. Don't store return codes that aren't read.
-  Copy the same example into CURLOPT_SSL_CTX_FUNCTION.3 as well.
-  
-  Closes #7500
-
-- example/cookie_interface: fix scan-build printf warning
-  
-  Follow-up to 4b79c4fb565
-  
-  Fixes #7497
-  Closes #7498
-
-- [Josh Soref brought this change]
-
-  limit-rate.d: clarify base unit
-  
-  Fixes #7439
-  Closes #7494
-
-- [Carlo Marcelo Arenas Belón brought this change]
-
-  examples/cookie_interface: avoid printfing time_t directly
-  
-  time_t representation is undefined and varies on bitsize and signedness,
-  and as of C11 could be even non integer.
-  
-  instead of casting to unsigned long (which would truncate in systems
-  with a 32bit long after 2106) use difftime to get the elapsed time as a
-  double and print that (without decimals) instead.
-  
-  alternatively a cast to curl_off_t and its corresponding print
-  formatting could have been used (at least in POSIX) but portability and
-  curl agnostic code was prioritized.
-  
-  Closes #7490
-
-Marc Hoersken (25 Jul 2021)
-- tests/servers: remove obsolete pid variable
-  
-  Variable is not used since pidfile handling moved to util.[ch]
-  
-  Reviewed-by: Jay Satiro
-  Closes #7482
-
-- tests/servers: use our platform-aware pid for server verification
-  
-  The pid used for server verification is later stored as pid2 in
-  the hash of running test servers and therefore used for shutdown.
-  
-  The pid used for shutdown must be the platform-aware (Win32) pid
-  to avoid leaking test servers while running them using Cygwin/msys.
-  
-  Reviewed-by: Jay Satiro
-  Closes #7481
+- test1275: remove the check of stderr
 
-- tests/runtests.pl: cleanup copy&paste mistakes and unused code
-  
-  Reviewed-by: Jay Satiro
-  Part of #7481
+  To avoid the mysterious test failures on Windows, instead rely on the
+  error code returned on failure.
 
-Daniel Stenberg (25 Jul 2021)
-- RELEASE-NOTES: synced
-  
-  bumped to 7.78.1 for next release
-
-- http_proxy: clear 'sending' when the outgoing request is sent
-  
-  ... so that Curl_connect_getsock() will know how to wait for the socket
-  to become readable and not writable after the entire CONNECT request has
-  been issued.
-  
-  Regression added in 7.77.0
-  
-  Reported-by: zloi-user on github
-  Assisted-by: Jay Satiro
-  Fixes #7155
-  Closes #7484
-
-Jay Satiro (25 Jul 2021)
-- [Josh Soref brought this change]
-
-  openssl: fix grammar
-  
-  Closes https://github.com/curl/curl/pull/7480
-
-- configure.ac: tweak nghttp2 library name fix again
-  
-  - Change extraction to handle multiple library names returned by
-    pkg-config (eg a possible scenario with pkg-config --static).
-  
-  Ref: https://github.com/curl/curl/pull/7472
-  
-  Closes https://github.com/curl/curl/pull/7485
-
-Dan Fandrich (23 Jul 2021)
-- Get rid of the unused HAVE_SIG_ATOMIC_T et. al.
-  
-  It was added in 2006 but I see no evidence it was ever used.
-
-Jay Satiro (23 Jul 2021)
-- docs: change max-filesize caveat again
-  
-  - Add protocols field to max-filesize.d.
-  
-  - Revert wording on unknown file size caveat and do not discuss specific
-    protocols in that section.
-  
-  Partial revert of ecf0225. All max-filesize options now have the list of
-  protocols and it's clearer just to have that list without discussing
-  specific protocols in the caveat.
-  
-  Reported-by: Josh Soref
-  
-  Ref: https://github.com/curl/curl/issues/7453#issuecomment-884128762
-
-Daniel Stenberg (22 Jul 2021)
-- [Christian Weisgerber brought this change]
+  Fixes #9716
+  Closes #9723
 
-  configure: tweak nghttp2 library name fix
-  
-  commit 29c7cf79e8b44cf (shipped in 7.78.0) introduced a problem by
-  assuming that LIB_H2 does not have any leading whitespace.  At least
-  OpenBSD's native pkg-config can produce such whitespace, though:
-  
-      $ pkg-config --libs-only-l libnghttp2
-       -lnghttp2
-  
-  As a result, the configure check for libnghttp2 will erroneously fail.
-  
-  Bug: https://curl.se/mail/lib-2021-07/0050.html
-  Closes #7472
-
-- [Bastian Krause brought this change]
-
-  docs/MQTT: update state of username/password support
-  
-  PR #7243 implemented username/password support for MQTT, so let's drop
-  these items from the caveats.
-  
-  Signed-off-by: Bastian Krause <bst@pengutronix.de>
-  
-  Closes #7474
-
-- [Oleg Pudeyev brought this change]
-
-  CURLMOPT_TIMERFUNCTION.3: remove misplaced "time"
-  
-  Closes #7470
-
-Version 7.78.0 (21 Jul 2021)
-
-Daniel Stenberg (21 Jul 2021)
-- RELEASE-NOTES: synced
-  
-  curl 7.78.0 release
+Viktor Szakats (13 Oct 2022)
+- lib: set more flags in config-win32.h
 
-- winbuild/MakefileBuild.vc: bump copyright year
+  The goal is to add any flag that affect the created binary, to get in
+  sync with the ones built with CMake and autotools.
 
-Jay Satiro (21 Jul 2021)
-- docs: mention max-filesize options also apply to MQTT transfers
-  
-  Also make it clearer that the caveat 'if the file size is unknown it
-  the option will have no effect' may apply to protocols other than FTP
-  and HTTP.
-  
-  Reported-by: Josh Soref
-  
-  Fixes https://github.com/curl/curl/issues/7453
+  I took these flags from curl-for-win [0], where they've been tested with
+  mingw-w64 and proven to work well.
 
-- [Josh Soref brought this change]
+  This patch brings them to curl as follows:
 
-  docs/cmdline: fix grammar and typos
+  - Enable unconditionally those force-enabled via
+    `CMake/WindowsCache.cmake`:
 
-- [Josh Soref brought this change]
+    - `HAVE_SETJMP_H`
+    - `HAVE_STRING_H`
+    - `HAVE_SIGNAL` (CMake equivalent is `HAVE_SIGNAL_FUNC`)
 
-  dump-header.d: Drop suggestion to use for cookie storage
-  
-  Since --cookie-jar is the preferred way to store cookies, no longer
-  suggest using --dump-header to do so.
-  
-  Co-authored-by: Daniel Stenberg
-  
-  Closes https://github.com/curl/curl/issues/7414
-
-- [Josh Soref brought this change]
-
-  doc/cmdline: fix grammar and typos
-  
-  Closes https://github.com/curl/curl/pull/7454
-  Closes https://github.com/curl/curl/pull/7455
-  Closes https://github.com/curl/curl/pull/7456
-  Closes https://github.com/curl/curl/pull/7459
-  Closes https://github.com/curl/curl/pull/7460
-  Closes https://github.com/curl/curl/pull/7461
-  Closes https://github.com/curl/curl/pull/7462
-  Closes https://github.com/curl/curl/pull/7463
-
-Daniel Stenberg (20 Jul 2021)
-- vtls: fix connection reuse checks for issuer cert and case sensitivity
-  
-  CVE-2021-22924
-  
-  Reported-by: Harry Sintonen
-  Bug: https://curl.se/docs/CVE-2021-22924.html
-
-- sectransp: check for client certs by name first, then file
-  
-  CVE-2021-22926
-  
-  Bug: https://curl.se/docs/CVE-2021-22926.html
-  
-  Assisted-by: Daniel Gustafsson
-  Reported-by: Harry Sintonen
+  - Expand existing guards with mingw-w64:
 
-- telnet: fix option parser to not send uninitialized contents
-  
-  CVS-2021-22925
-  
-  Reported-by: Red Hat Product Security
-  Bug: https://curl.se/docs/CVE-2021-22925.html
-
-Jay Satiro (20 Jul 2021)
-- connect: fix wrong format specifier in connect error string
-  
-  0842175 (not in any release) used the wrong format specifier (long int)
-  for timediff_t. On an OS such as Windows libcurl's timediff_t (usually
-  64-bit) is bigger than long int (32-bit). In 32-bit Windows builds the
-  upper 32-bits of the timediff_t were erroneously then used by the next
-  format specifier. Usually since the timeout isn't larger than 32-bits
-  this would result in null as a pointer to the string with the reason for
-  the connection failing. On other OSes or maybe other compilers it could
-  probably result in garbage values (ie crash on deref).
-  
-  Before:
-  Failed to connect to localhost port 12345 after 1201 ms: (nil)
-  
-  After:
-  Failed to connect to localhost port 12345 after 1203 ms: Connection refused
-  
-  Closes https://github.com/curl/curl/pull/7449
-
-- winbuild: support alternate nghttp2 static lib name
-  
-  - Support both nghttp2.lib and nghttp2_static.lib for static nghttp2.
-  
-  nghttp2 briefly changed its static lib name to nghttp2_static, but then
-  made the _static suffix optional.
-  
-  Ref: https://github.com/nghttp2/nghttp2/pull/1394
-  Ref: https://github.com/nghttp2/nghttp2/pull/1418
-  Ref: https://github.com/nghttp2/nghttp2/issues/1466
-  
-  Reported-by: Pierre Yager
-  
-  Fixes https://github.com/curl/curl/issues/7446
-  Closes https://github.com/curl/curl/pull/7447
-
-- [Josh Soref brought this change]
-
-  docs/cmdline: fix grammar and typos
-  
-  Closes https://github.com/curl/curl/pull/7432
-  Closes https://github.com/curl/curl/pull/7436
-  Closes https://github.com/curl/curl/pull/7438
-  Closes https://github.com/curl/curl/pull/7440
-  Closes https://github.com/curl/curl/pull/7445
-
-- [Josh Soref brought this change]
-
-  delegation.d: mention what happens when used multiple times
-  
-  Closes https://github.com/curl/curl/pull/7408
-
-- [Josh Soref brought this change]
-
-  create-file-mode.d: mention what happens when used multiple times
-  
-  Closes https://github.com/curl/curl/pull/7407
-
-- [Josh Soref brought this change]
-
-  config.d: split comments and option-per line
-  
-  Closes https://github.com/curl/curl/pull/7405
-
-Daniel Stenberg (19 Jul 2021)
-- misc: copyright year range updates
-
-- mailmap: add Tobias and Timur
-
-Daniel Gustafsson (18 Jul 2021)
-- [Josh Soref brought this change]
-
-  docs: spell out directories instead of dirs in create-dirs
-  
-  Write out directories rather than using the dirs abbrevation. Also
-  use plural form consistently, even if the code in the end might just
-  create a single directory.
-  
-  Closes #7406
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
-  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+    - `HAVE_STDBOOL_H`
+    - `HAVE_BOOL_T`
 
-- [Tobias Nyholm brought this change]
+  - Enable Win32 API functions for Windows Vista and later:
 
-  docs: correct spelling errors and a broken link
-  
-  Update grammar and spelling in docs and source code comments.
-  
-  Closes: #7427
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+    - `HAVE_INET_NTOP`
+    - `HAVE_INET_PTON`
 
-Marc Hoersken (18 Jul 2021)
-- CI/cirrus: install impacket from PyPI instead of FreeBSD packages
-  
-  Availability of impacket as FreeBSD package is too flaky.
-  
-  Stick to legacy version of cryptography which still
-  supports OpenSSL version 1.0.2 due to FreeBSD 11.
-  
-  Reviewed-by: Daniel Stenberg
-  
-  Closes #7418
+  - Set sizes, if not already set:
 
-Daniel Stenberg (18 Jul 2021)
-- [Josh Soref brought this change]
+    - `SIZEOF_OFF_T = 8`
+    - `_FILE_OFFSET_BITS = 64` when `USE_WIN32_LARGE_FILES` is set,
+      and using mingw-w64.
 
-  docs/cmdline: mention what happens when used multiple times
-  
-  For --dns-ipv4-addr, --dns-ipv6-addr and --dns-servers
-  
-  Closes #7410
-  Closes #7411
-  Closes #7412
+  - Add the remaining for mingw-w64 only. Feel free to expand as desired:
 
-- [Michał Antoniak brought this change]
+    - `HAVE_LIBGEN_H`
+    - `HAVE_FTRUNCATE`
+    - `HAVE_BASENAME`
+    - `HAVE_STRTOK_R`
 
-  lib: fix compiler warnings with CURL_DISABLE_NETRC
-  
-  warning C4189: 'netrc_user_changed': local variable is initialized but
-  not referenced
-  
-  warning C4189: 'netrc_passwd_changed': local variable is initialized but
-  not referenced
-  
-  Closes #7423
-
-- disable-epsv.d: remove duplicate "(FTP)"
-  
-  ... since the tooling adds that to the output based on the "Protocols:"
-  tag.
-
-- [Max Zettlmeißl brought this change]
-
-  docs: make the documentation for --etag-save match the program behaviour
-  
-  When using curl with the option `--etag-save` I expected it to save the
-  ETag without its surrounding quotes, as stated by the documentation in
-  the repository and by the generated man pages.
-  
-  My first endeavour was to fix the program, but while investigating the
-  history of the relevant parts, I discovered that curl once saved the
-  ETag without the quotes.  This was undone by Daniel Stenberg in commit
-  `98c94596f5928840177b6bd3c7b0f0dd03a431af`, therefore I decided that in
-  this case the documentation should be adjusted to match the behaviour of
-  curl.
-  
-  The changed save behaviour also made parts of the `--etag-compare`
-  documentation wrong or superfluous, so I adjusted those accordingly.
-  
-  Closes #7429
-
-- [Josh Soref brought this change]
-
-  write-out.d: add missing periods
-  
-  Closes #7404
-
-- [Josie Huddleston brought this change]
-
-  easy: during upkeep, attach Curl_easy to connections in the cache
-  
-  During the protocol-specific parts of connection upkeep, some code
-  assumes that the data->conn pointer already is set correctly.  However,
-  there's currently no guarantee of that in the code.
-  
-  This fix temporarily attaches each connection to the Curl_easy object
-  before performing the protocol-specific connection check on it, in a
-  similar manner to the connection checking in extract_if_dead().
-  
-  Fixes #7386
-  Closes #7387
-  Reported-by: Josie Huddleston
-
-- [Josh Soref brought this change]
-
-  cleanup: spell DoH with a lowercase o
-  
-  Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
-  
-  Closes #7413
-
-- [Josh Soref brought this change]
-
-  TheArtOfHttpScripting: polish
-  
-  - add missing backticks and comma
-  
-  - fix proxy description:
-  
-  * example proxy isn't local
-  * locally doesn't really make sense
-  
-  Closes #7416
-
-- [Josh Soref brought this change]
-
-  form.d: add examples of `,`/`;` for file[name]
-  
-  Fixes #7415
-  Closes #7417
+  Future TODO:
 
-- [Michał Antoniak brought this change]
+  - `HAVE_SIGNAL` has a different meaning in CMake. It's enabled when both
+    the `signal()` function and the `SIGALRM` macro are found. In
+    autotools and this header, it means the function only. For the
+    function alone, CMake uses `HAVE_SIGNAL_FUNC`.
 
-  mbedtls: Remove unnecessary include
-  
-  - curl_setup.h: all references to mbedtls_md4* functions and structures
-    are in the md4.c. This file already includes the <mbedtls/md4.h> file
-    along with the file existence control (defined (MBEDTLS_MD4_C))
-  
-  - curl_ntlm_core.c: unnecessary include - repeated below
-  
-  Closes #7419
+  [0] https://github.com/curl/curl-for-win/blob/c9b9a5f273c94c73d2b565ee892c4dff0ca97a8c/curl-m32.sh#L53-L58
 
-- RELEASE-NOTES: synced
+  Reviewed-by: Daniel Stenberg
 
-Jay Satiro (16 Jul 2021)
-- [User Sg brought this change]
-
-  multi: fix crash in curl_multi_wait / curl_multi_poll
-  
-  Appears to have been caused by 51c0ebc (precedes 7.77.0) which added a
-  VALID_SOCK check to one of the loops through the sockets but not the
-  other.
-  
-  Reported-by: sylgal@users.noreply.github.com
-  Authored-by: sylgal@users.noreply.github.com
-  
-  Fixes https://github.com/curl/curl/issues/7379
-  Closes https://github.com/curl/curl/pull/7389
-
-- [Daniel Gustafsson brought this change]
-
-  tool_help: remove unused define
-  
-  The PRINT_LINES_PAUSE macro is no longer used, and has been mostly
-  cleaned out but one occurrence remained.
-  
-  Closes https://github.com/curl/curl/pull/7380
+  Closes #9712
 
-- [Sergey Markelov brought this change]
+Daniel Stenberg (13 Oct 2022)
+- tests: add tests/markdown-uppercase.pl to dist tarball
 
-  build: fix compiler warnings when CURL_DISABLE_VERBOSE_STRINGS
-  
-  fix compiler warnings about unused variables and parameters when
-  built with --disable-verbose.
-  
-  Closes https://github.com/curl/curl/pull/7377
-
-- [Andrea Pappacoda brought this change]
-
-  build: fix IoctlSocket FIONBIO check
-  
-  Prior to this change HAVE_IOCTLSOCKET_CAMEL_FIONBIO mistakenly checked
-  for (lowercase) ioctlsocket when it should have checked for IoctlSocket.
-  
-  Closes https://github.com/curl/curl/pull/7375
-
-- [Timur Artikov brought this change]
-
-  configure: fix nghttp2 library name for static builds
-  
-  Don't hardcode the nghttp2 library name,
-  because it can vary, be "nghttp2_static" for example.
-  
-  Fixes https://github.com/curl/curl/issues/7367
-  Closes https://github.com/curl/curl/pull/7368
-
-Gisle Vanem (16 Jul 2021)
-- [PellesC] fix _lseeki64() macro
-
-- [SChannel] Use '_tcsncmp()' instead
-  
-  Revert previous change for PellesC.
-  
-  Instead replace all use of `_tcsnccmp()` with `_tcsncmp()`.
-
-- [PellesC] missing '_tcsnccmp'
-  
-  PellesC compiler does not have this macro in it's `<tchar.h>`
-
-Daniel Gustafsson (14 Jul 2021)
-- TODO: add mention of mbedTLS 3 incompatibilities
-  
-  Wyatt OʼDay reported in #7385 that mbedTLS isn't backwards compatible
-  and curl no longer builds with it. Document the need to fix our support
-  until so has been done.
-  
-  Closes #7390
-  Fixes #7385
-  Reported-by: Wyatt OʼDay
-  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+  Follow-up to aafb06c5928183d
 
-- docs: fix inconsistencies in EGDSOCKET documentation
-  
-  Only the OpenSSL backend actually use the EGDSOCKET, and also use
-  TLS consistently rather than mixing SSL and TLS. While there, also
-  fix a minor spelling nit.
-  
-  Closes: #7391
-  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+  Closes #9722
 
-- [Борис Верховский brought this change]
+- tool_paramhelp: asserts verify maximum sizes for string loading
 
-  docs: document missing arguments to commands
-  
-  This is a followup to commit f410b9e538129e77607fef1 fixing a few
-  more commands which takes arguments.
-  
-  Closes #7382
-  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+  The two defines MAX_FILE2MEMORY and MAX_FILE2STRING define the largest
+  strings accepted when loading files into memory, but as the size is
+  later used as input to functions that take the size as 'int' as
+  argument, the sizes must not be larger than INT_MAX.
 
-- [Randolf J brought this change]
+  These two new assert()s make the code error out if someone would bump
+  the sizes without this consideration.
 
-  docs: fix incorrect argument name reference
-  
-  The documentation for the read callback was erroneously referencing
-  the nitems argument by nmemb.  The error was introduced in commit
-  ce0881edee3c7.
-  
-  Closes #7383
-  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+  Reported-by Trail of Bits
 
-- [Борис Верховский brought this change]
+  Closes #9719
 
-  tool_help: Document that --tlspassword takes a password
-  
-  Closes #7378
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+- http: try parsing Retry-After: as a number first
 
-- scripts: Fix typo in release-notes instructions
-  
-  The command to run had a typo in the pathname which prevented copy
-  pasting it to work, which has annoyed me enough to fix this now.
+  Since the date parser allows YYYYMMDD as a date format (due to it being
+  a bit too generic for parsing this particular header), a large integer
+  number could wrongly match that pattern and cause the parser to generate
+  a wrong value.
 
-- RELEASE-NOTES: synced
+  No date format accepted for this header starts with a decimal number, so
+  by reversing the check and trying a number first we can deduct that if
+  that works, it was not a date.
 
-Jay Satiro (10 Jul 2021)
-- write-out.d: Clarify urlnum is not unique for de-globbed URLs
-  
-  Reported-by: Коваленко Анатолий Викторович
-  
-  Fixes https://github.com/curl/curl/issues/7342
-  Closes https://github.com/curl/curl/pull/7369
+  Reported-by Trail of Bits
 
-Daniel Gustafsson (3 Jul 2021)
-- [William Desportes brought this change]
+  Closes #9718
 
-  docs: Fix typos
-  
-  Closes: #7370
-  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+- [Patrick Monnerat brought this change]
 
-Daniel Stenberg (8 Jul 2021)
-- [Jonathan Wernberg brought this change]
-
-  Revert "ftp: Expression 'ftpc->wait_data_conn' is always false"
-  
-  The reverted commit introduced a logic error in code that was
-  correct.
-  
-  The client using libcurl would notice the error since FTP file
-  uploads in active transfer mode would somtimes complete with
-  success despite no transfer having been performed and the
-  "uploaded" file thus not being on the remote server afterwards.
-  
-  The FTP server would notice the error because it receives a
-  RST on the data connection it has established with the client
-  before any data was transferred at all.
-  
-  The logic error happens if the STOR response from the server have
-  arrived by the time ftp_multi_statemach() in the affected code path
-  is called, but the incoming data connection have not arrived yet.
-  In that case, the processing of the STOR response will cause
-  'ftpc->wait_data_conn' to be set to TRUE, contradicting the comment
-  in the code. Since 'complete' will also be set, later logic would
-  believe the transfer was done.
-  
-  In most cases, the STOR response will not have arrived yet when
-  the affected code path is executed, or the incoming connection will
-  also have arrived, and thus the error would not express itself.
-  But if the speed difference of the device using libcurl and the
-  FTP server is exactly right, the error may happen as often as in
-  one out of hundred file transfers.
-  
-  This reverts commit 49f3117a238b6eac0e22a32f50699a9eddcb66ab.
-  
-  Bug: https://curl.se/mail/lib-2021-07/0025.html
-  Closes #7362
-
-- msnprintf: return number of printed characters excluding null byte
-  
-  ... even when the output is "capped" by the maximum length argument.
-  
-  Clarified in the docs.
-  
-  Closes #7361
-
-- infof: remove newline from format strings, always append it
-  
-  - the data needs to be "line-based" anyway since it's also passed to the
-    debug callback/application
-  
-  - it makes infof() work like failf() and consistency is good
-  
-  - there's an assert that triggers on newlines in the format string
-  
-  - Also removes a few instances of "..."
-  
-  - Removes the code that would append "..." to the end of the data *iff*
-    it was truncated in infof()
-  
-  Closes #7357
-
-- examples/multi-single: fix scan-build warning
-  
-  warning: Value stored to 'mc' during its initialization is never read
-  
-  Follow-up to ae8e11ed5fd2ce
-  
-  Closes #7360
-
-- wolfssl: failing to set a session id is not reason to error out
-  
-  ... as it is *probably* just timed out.
-  
-  Reported-by: Francisco Munoz
-  
-  Closes #7358
-
-- docs/examples: use curl_multi_poll() in multi examples
-  
-  The API is soon two years old and deserves being shown as the primary
-  way to drive multi code as it makes it much easier to write code.
-  
-  multi-poll: removed
-  
-  multi-legacy: add to show how we did multi API use before
-  curl_multi_wait/poll.
-  
-  Closes #7352
-
-- KNOWN_BUGS: flaky Windows CI builds
-  
-  Closes #6972
+  doc: fix deprecation versions inconsistencies
 
-- RELEASE-NOTES: synced
+  Ref: https://curl.se/mail/lib-2022-10/0026.html
 
-- test1147: hyper doesn't allow "crazy" request headers like built-in
-  
-  ... so strip that from the test.
-  
-  Closes #7349
-
-- c-hyper: bail on too long response headers
-  
-  To match with built-in behaviors. Makes test 1154 work.
-  
-  Closes #7350
-
-- test1151: added missing CRLF to work with hyper
-  
-  Closes #7350
-
-- c-hyper: add support for transfer-encoding in the request
-  
-  Closes #7348
-
-- [Andrea Pappacoda brought this change]
-
-  cmake: remove libssh2 feature checks
-  
-  libssh2 features are detected based on version since commit
-  9dbbba997608f7c3c5de1c627c77c8cd2aa85b73
-  
-  Closes #7343
-
-- test1116: hyper doesn't pass through "surprise-trailers"
-  
-  Closes #7344
-
-- socks4: scan for the IPv4 address in resolve results
-  
-  Follow-up to 84d2839740 which changed the resolving to always resolve
-  both address families, but since SOCKS4 only supports IPv4 it should
-  scan for and use the first available IPv4 address.
-  
-  Reported-by: shithappens2016 on github
-  Fixes #7345
-  Closes #7346
-
-Jay Satiro (5 Jul 2021)
-- proto.d: fix formatting for paragraphs after margin changes
-  
-  Closes https://github.com/curl/curl/pull/7341
-
-- pinnedpubkey.d: fix formatting for version support lists
-  
-  Closes https://github.com/curl/curl/pull/7340
-
-Daniel Stenberg (2 Jul 2021)
-- TODO: "Support in-memory certs/ca certs/keys" done
-  
-  Has been suppored for a while now with the *BLOB options.
-
-- examples: safer and more proper read callback logic
-  
-  The same callback code is used in:
-  
-   imap-append.c
-   smtp-authzid.c
-   smtp-mail.c
-   smtp-multi.c
-   smtp-ssl.c
-   smtp-tls.c
-  
-  It should not assume that it can copy full lines into the buffer as it
-  will encourage sloppy coding practices. Instead use byte-wise logic and
-  check/acknowledge the buffer size appropriately.
-  
-  Reported-by: Harry Sintonen
-  Fixes #7330
-  Closes #7331
-
-- test1519: adjusted to work with hyper
-  
-  Closes #7333
-
-- test1518: adjusted to work with hyper
-  
-  ... by making sure the stdout output doesn't look like HTTP headers.
-  
-  Closes #7333
-
-- test1514: add a CRLF to the response to make it correct
-  
-  Makes hyper accept it fine instead returning HYPERE_UNEXPECTED_EOF on
-  us.
-  
-  Closes #7334
-
-- formdata: avoid "Argument cannot be negative" warning
-  
-  ... when converting a curl_off_t to size_t, by using
-  CURL_ZERO_TERMINATED before passing the argument to the function.
-  
-  Detected by Coverity CID 1486590.
-  
-  Closes #7328
-  Assisted-by: Daniel Gustafsson
-
-- lib: more %u for port and int for %*s fixes
-  
-  Detected by Coverity
-  
-  Closes #7329
-
-- doh: (void)-prefix call to curl_easy_setopt
-
-- lib: fix type of len passed to *printf's %*s
-  
-  ... it needs to be 'int'. Detected by Coverity CID 1486611 (etc)
-  
-  Closes #7326
-
-- lib: use %u instead of %ld for port number printf
-  
-  Follow-up to 764c6bd3bf which changed the type of some port number
-  fields. Detected by Coverity (CID 1486624) etc.
-  
-  Closes #7325
-
-- version: turn version number functions into returning void
-  
-  ... as we never use the return codes from them.
-  
-  Reviewed-by: Daniel Gustafsson
-  Closes #7319
-
-- mqtt: extend the error message for no topic
-  
-  ... and mention that it needs URL encoding.
-  
-  Reported-by: Peter Körner
-  Fixes #7316
-  Closes #7317
-
-- formdata: correct typecast in curl_mime_data call
-  
-  Coverity pointed out it the mismatch. CID 1486590
-  
-  Closes #7327
-
-- url: (void)-prefix a curl_url_get() call
-  
-  Coverity (CID 1486645) pointed out a use of curl_url_get() in the
-  parse_proxy function where the return code wasn't checked. A
-  (void)-prefix makes the intention obvious.
-  
-  Closes #7320
-
-- glob: pass an 'int' as len when using printf's %*s
-  
-  Detected by Coverity CID 1486629.
-  
-  Closes #7324
-
-- vtls: use free() not curl_free()
-  
-  curl_free() is provided for users of the API to free returned data,
-  there's no need to use it internally.
-  
-  Closes #7318
-
-- zuul: use the new rustls directory name
-  
-  Follow-up to 6d972c8b1cbb3 which missed updating this directory name.
-  
-  Also no longer call it crustls in the docs and bump to rusttls-ffi 0.7.1
-  
-  Closes #7311
-
-Jay Satiro (29 Jun 2021)
-- http: fix crash in rate-limited upload
-  
-  - Don't set the size of the piece of data to send to the rate limit if
-    that limit is larger than the buffer size that will hold the piece.
-  
-  Prior to this change if CURLOPT_MAX_SEND_SPEED_LARGE
-  (curl tool: --limit-rate) was set then it was possible that a temporary
-  buffer used for uploading could be written to out of bounds. A likely
-  scenario for this would be a non-trivial amount of post data combined
-  with a rate limit larger than CURLOPT_UPLOAD_BUFFERSIZE (default 64k).
-  
-  The bug was introduced in 24e469f which is in releases since 7.76.0.
-  
-  perl -e "print '0' x 200000" > tmp
-  curl --limit-rate 128k -d @tmp httpbin.org/post
-  
-  Reported-by: Richard Marion
-  
-  Fixes https://github.com/curl/curl/issues/7308
-  Closes https://github.com/curl/curl/pull/7315
-
-Daniel Stenberg (29 Jun 2021)
-- copyright: add boiler-plate headers to CI config files
-  
-  And whitelist .zuul.ignore
-  
-  Closes #7314
-
-- CI: remove travis details
-  
-  Rename still used leftovers to "zuul" as that's now the CI using them.
-  
-  Closes #7313
+  Closes #9711
 
-- RELEASE-NOTES: synced
+- http_aws_sigv4: fix strlen() check
 
-- openssl: avoid static variable for seed flag
-  
-  Avoid the race condition risk by instead storing the "seeded" flag in
-  the multi handle. Modern OpenSSL versions handle the seeding itself so
-  doing the seeding once per multi-handle instead of once per process is
-  less of an issue.
-  
-  Reported-by: Gerrit Renker
-  Fixes #7296
-  Closes #7306
-
-- configure: inhibit the implicit-fallthrough warning on gcc-12
-  
-  ... since it no longer acknowledges the comment markup we use for that
-  purpose.
-  
-  Reported-by: Younes El-karama
-  Fixes #7295
-  Closes #7307
-
-Daniel Gustafsson (28 Jun 2021)
-- [Andrei Rybak brought this change]
-
-  misc: fix typos in comments which repeat a word
-  
-  Fix typos in code comments which repeat various words.  In trivial
-  cases, just delete the repeated word.  Reword the affected sentence in
-  "lib/url.c" for it to make sense.
-  
-  Closes #7303
-  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+  The check was off-by-one leading to buffer overflow.
 
-Daniel Stenberg (27 Jun 2021)
-- lib677: make it survive torture testing
-  
-  Follow-up to a5ab72d5edd7
-  
-  Closes #7300
+  Follow-up to 29c4aa00a16872
 
-- [Tommy Chiang brought this change]
+  Detected by OSS-Fuzz
 
-  docs/BINDINGS: fix outdated links
-  
-  * luacurl page is now not accessible, fix it with wayback machine page
-  * Scheme one seems not providing https now, change it back to http one
-  
-  Closes #7301
+  Closes #9714
 
-- [Jacob Hoffman-Andrews brought this change]
+- curl/main_checkfds: check the fcntl return code better
 
-  curstls: bump crustls version and use new URL
-  
-  crustls moved to https://github.com/rustls/rustls-ffi. This also bumps
-  the expected version to 0.7.0.
-  
-  Closes #7297
+  fcntl() can (in theory) return a non-zero number for success, so a
+  better test for error is checking for -1 explicitly.
 
-- RELEASE-NOTES: synced
+  Follow-up to 41e1b30ea1b77e9ff
 
-- examples: length-limit two sscanf() uses of %s
-  
-  Reported-by: Jishan Shaikh
-  Fixes #7293
-  Closes #7294
-
-- [Richard Whitehouse brought this change]
-
-  multi: alter transfer timeout ordering
-  
-  - Check whether a connection has succeded before checking whether it's
-    timed out.
-  
-    This means if we've connected quickly, but subsequently been
-    descheduled, we allow the connection to succeed. Note, if we timeout,
-    but between checking the timeout, and connecting to the server the
-    connection succeeds, we will allow it to go ahead. This is viewed as
-    an acceptable trade off.
-  
-  - Add additional failf logging around failed connection attempts to
-    propogate the cause up to the caller.
-  
-  Co-Authored-by: Martin Howarth
-  Closes #7178
-
-- test677: IMAP CONNECT_ONLY, custom command and then exit
-  
-  Adjusted ftpserver.pl to add support for the IMAP IDLE command
-  
-  Adjusted test 660 to sync with the fix
-
-- multi: do not switch off connect_only flag when closing
-  
-  ... as it made protocol specific disconnect commands wrongly get used.
-  
-  Bug: https://curl.se/mail/lib-2021-06/0024.html
-  Reported-by: Aleksander Mazur
-  Closes #7288
-
-- http: make the haproxy support work with unix domain sockets
-  
-  ... it should then pass on "PROXY UNKNOWN" since it doesn't know the
-  involved IP addresses.
-  
-  Reported-by: Valentín Gutiérrez
-  Fixes #7290
-  Closes #7291
+  Mentioned-by: Dominik Klemba
 
-- [Xiang Xiao brought this change]
+  Closes #9708
 
-  curl.h: include sys/select.h for NuttX RTOS
-  
-  Closes #7287
-
-- [Bin Meng brought this change]
-
-  curl.h: remove the execution bit
-  
-  The execution bit of curl.h file was wrongly added:
-  
-    commit 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
-  
-  and should be removed.
-  
-  Follow-up to 2621025d6f96 ("curl.h: <sys/select.h> is supported by VxWorks7")
-  Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
-  Closes #7286
-
-- [Bin Lan brought this change]
-
-  curl.h: <sys/select.h> is supported by VxWorks7
-  
-  Closes #7285
-
-- [Bachue Zhou brought this change]
-
-  quiche: use send() instead of sendto() to avoid macOS issue
-  
-  sendto() always returns "Socket is already connected" error on macos
-  
-  Closes #7260
-
-- [Li Xinwei brought this change]
-
-  cmake: fix support for UnixSockets feature on Win32
-  
-  Move the definition of sockaddr_un struct from config-win32.h to
-  curl_setup.h, so that it could be shared by all build systems.
-  
-  Add ADDRESS_FAMILY typedef for old mingw, now old mingw can also use
-  unix sockets.
-  
-  Also fix the build of tests/server/sws.c on Win32 when USE_UNIX_SOCKETS
-  is defined.
-  
-  Closes #7034
-
-- [Gregory Muchka brought this change]
-
-  hostip: (macOS) free returned memory of SCDynamicStoreCopyProxies
-  
-  From Apples documentation on SCDynamicStoreCopyProxies, "Return Value: A
-  dictionary of key-value pairs that represent the current internet proxy
-  settings, or NULL if no proxy settings have been defined or if an error
-  occurred. You must release the returned value."
-  
-  Failure to release the returned value of SCDynamicStoreCopyProxies can
-  result in a memory leak.
-  
-  Source: https://developer.apple.com/documentation/systemconfiguration/1517088-scdynamicstorecopyproxies
-  
-  Closes #7265
+Viktor Szakats (12 Oct 2022)
+- tidy-up: delete unused HAVE_STRUCT_POLLFD
 
-- RELEASE-NOTES: synced
+  It was only defined in `lib/config-win32.h`, when building for Vista.
 
-Jay Satiro (21 Jun 2021)
-- vtls: fix warning due to function prototype mismatch
-  
-  b09c8ee changed the function prototype. Caught by Visual Studio.
-
-- curl_multibyte: Remove local encoding fallbacks
-  
-  - If the UTF-8 to UTF-16 conversion fails in Windows Unicode builds then
-    no longer fall back to assuming the string is in a local encoding.
-  
-  Background:
-  
-  Some functions in Windows Unicode builds must convert UTF-8 to UTF-16 to
-  pass to the Windows CRT API wide-character functions since in Windows
-  UTF-8 is not a valid locale (or at least 99% of the time right now).
-  
-  Prior to this change if the Unicode encoding conversion failed then
-  libcurl would assume, for backwards compatibility with applications that
-  may have written their code for non-Unicode builds, attempt to convert
-  the string from local encoding to UTF-16.
-  
-  That type of "best effort" could theoretically cause some type of
-  security or other problem if a string that was locally encoded was also
-  valid UTF-8, and therefore an unexpected UTF-8 to UTF-16 conversion
-  could occur.
-  
-  Ref: https://github.com/curl/curl/pull/7246
-  
-  Closes https://github.com/curl/curl/pull/7257
-
-Daniel Stenberg (20 Jun 2021)
-- curl_endian: remove the unused Curl_write64_le function
-  
-  The last usage was removed in cca455a36
-  
-  Closes #7280
-
-- vtls: only store TIMER_APPCONNECT for non-proxy connect
-  
-  Introducing a 'isproxy' argument to the connect function so that it
-  knows wether to store the time stamp or not.
-  
-  Reported-by: Yongkang Huang
-  Fixes #7274
-  Closes #7274
-
-- gnutls: set the preferred TLS versions in correct order
-  
-  Regression since 781864bedbc57 (curl 7.77.0)
-  
-  Reported-by: civodul on github
-  Assisted-by: Nikos Mavrogiannopoulos
-  Fixes #7277
-  Closes #7278
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove checks for unused gethostbyaddr and gethostbyaddr_r
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove checks for unused inet_ntoa and inet_ntoa_r
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove unused define HAVE_PERROR
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure: remove unused check for gai_strerror
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove unused define HAVE_FREEIFADDRS
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove unused define HAVE_FORK
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove unused define HAVE_FDOPEN
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove checks for unused sgtty.h
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove remaining checks for rsa.h
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
-
-  configure/cmake: remove remaining checks for err.h
-  
-  Closes #7276
-
-- [Gergely Nagy brought this change]
+  It was only used in `select.h`, in a condition that also included a
+  check for `POLLIN` which is a superior choice for this detection and
+  which was already used by cmake and autotools builds.
 
-  configure/cmake: remove remaining checks for crypto.h
-  
-  Closes #7276
+  Delete both instances of this macro.
 
-- [Gergely Nagy brought this change]
+  Closes #9707
 
-  configure/cmake: remove checks for unused getservbyport_r
-  
-  Closes #7276
+Daniel Stenberg (12 Oct 2022)
+- test1275: verify upercase after period in markdown
 
-- --socks4[a]: clarify where the host name is resolved
-  
-  Closes #7273
+  Script based on the #9474 pull-request logic, but implemented in perl.
 
-- libcurl-security.3: mention file descriptors and forks
-  
-  ... and move the security report section last.
-  
-  Reported-by: Harry Sintonen
-  Closes #7270
-
-- [Alex Xu (Hello71) brought this change]
-
-  configure.ac: make non-executable
-  
-  it needs to be processed by autoconf or autoreconf, and doesn't have a
-  suitable shebang to be directly executed. other projects normally set
-  configure.ac -x.
-  
-  Closes #7272
-
-- configure: do not strip out debug flags
-  
-  To allow users to set them when invoking configure without using
-  --with-debug.
-  
-  Reported-by: Alex Xu
-  Fixes #7216
-  Closes #7267
-
-- libssh2: limit time a disconnect can take to 1 second
-  
-  Closes #7271
-
-- TLS: prevent shutdown loops to get stuck
-  
-  ... by making sure the loops are only allowed to read the shutdown
-  traffic a limited number of times.
-  
-  Reported-by: Harry Sintonen
-  Closes #7271
-
-- hyper: propagate errors back up from read callbacks
-  
-  Makes test 513 work with hyper
-  
-  Closes #7266
-
-- KNOWN_BUGS: Negotiate on Windows fails
-  
-  Closes #5881
-
-- KNOWN_BUGS: renames instead of locking for atomic operations
-  
-  Closes #6882
-  Closes #6884
-
-- zuul: add two missing CI jobs
-  
-  ... that were configured, just not run
-  
-  Closes #7261
-
-Viktor Szakats (15 Jun 2021)
-- idn: fix libidn2 with windows unicode builds
-  
-  Unicode Windows builds use UTF-8 strings internally in libcurl,
-  so make sure to call the UTF-8 flavour of the libidn2 API. Also
-  document that Windows builds with libidn2 and UNICODE do expect
-  CURLOPT_URL as an UTF-8 string.
-  
-  Reported-by: dEajL3kA on github
-  Assisted-by: Jay Satiro
-  Reviewed-by: Marcel Raad
-  Closes #7246
-  Fixes #7228
-
-Daniel Stenberg (15 Jun 2021)
-- curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE
-  
-  They were never officially allowed and slipped in only due to sloppy
-  parsing. Spaces (ascii 32) should be correctly encoded (to %20) before
-  being part of a URL.
-  
-  The new flag bit CURLU_ALLOW_SPACE when a full URL is set, makes libcurl
-  allow spaces.
-  
-  Updated test 1560 to verify.
-  
-  Closes #7073
+  Updated docs/URL-SYNTAX.md accordingly.
 
-- RELEASE-NOTES: synced
-  
-  ... and bump to version 7.78.0 for the next planned release.
-
-Jay Satiro (15 Jun 2021)
-- docs: Remove outdated curl tool limitation
-  
-  - Document that HTTP/2 multiplexing is supported by the curl tool when
-    parallel transfers are used.
-  
-  Supported since 7.66.0 via --parallel, but the doc wasn't updated.
-  
-  Closes https://github.com/curl/curl/pull/7259
-
-- http2: Clarify 'Using HTTP2' verbose message
-  
-  - Change phrasing from multi-use to multiplexing since the former may
-    not be as well understood.
-  
-  Before: * Using HTTP2, server supports multi-use
-  
-  After: * Using HTTP2, server supports multiplexing
-  
-  Bug: https://github.com/curl/curl/discussions/7255
-  Reported-by: David Hu
-  
-  Closes https://github.com/curl/curl/pull/7258
-
-Daniel Stenberg (14 Jun 2021)
-- winbuild/README: VC should be set to 6 'or larger'
-  
-  Previously it listed all versions up to 15 (missing 16) but this new
-  phrasing is more open ended.
-  
-  Reported-by: Hugh Macdonald
-  Fixes #7253
-  Closes #7254
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  rustls: remove native_roots fallback
-  
-  For the commandline tool, we expect to be passed
-  SSL_CONN_CONFIG(CAfile); for library use, the use should pass a set of
-  trusted roots (like in other TLS backends).
-  
-  This also removes a dependency on Security.framework when building on
-  macOS.
-  
-  Closes #7250
-
-- [Albin Vass brought this change]
-
-  travis: remove jobs that have migrated to zuul
-  
-  Closes #7245
-
-- [Mohammed Naser brought this change]
-
-  CI: add jobs using Zuul
-  
-  It also includes a few changes to get the builds going:
-  - Added autoconf to common dependencies
-  - Added automake to common dependencies
-  - Added libtool to common dependencies
-  - Added libssl-dev to common dependencies
-  
-  Co-authored-by: Albin Vass
-  
-  Closes #7245
-
-- netrc: skip 'macdef' definitions
-  
-  Add test 494 to verify
-  
-  Reported-by: Harry Sintonen
-  Fixes #7238
-  Closes #7244
-
-- multi: add scan-build-6 work-around in curl_multi_fdset
-  
-  scan-build-6 otherwise warns, saying: warning: The left operand of '>='
-  is a garbage value otherwise, which is false.
-  
-  Later scan-builds don't claim this on the same code.
-  
-  Closes #7248
-
-- asyn-ares: remove check for 'data' in Curl_resolver_cancel
-  
-  It implied it would survive a NULL in there which it won't. Instead do
-  an assert.
-  
-  Pointed out by scan-build.
-  
-  Closes #7248
-
-- url.c: remove two variable assigns that are never read
-  
-  Pointed out by scan-build
-  
-  Closes #7248
-
-- [Gealber Morales brought this change]
-
-  mqtt: add support for username and password
-  
-  Minor-edits-by: Daniel Stenberg
-  Added test 2200 to 2205
-  
-  Closes #7243
-
-- travis: remove the arm job
-  
-  We do it on circle CI instead
-
-- CI: add .circleci/config.yml
-  
-  Assisted-by: Gabriel Simmer
-  
-  Closes #7239
+  Suggested-by: Dan Fandrich
 
-- RELEASE-NOTES: synced
+  Closes #9697
 
-- runtests: init $VERSION to avoid warnings when using -l
-
-- openssl: don't remove session id entry in disassociate
-  
-  When a connection is disassociated from a transfer, the Session ID entry
-  should remain.
-  
-  Regression since 7f4a9a9 (shipped in libcurl 7.77.0)
-  Reported-by: Gergely Nagy
-  Reported-by: Paul Groke
-  
-  Fixes #7222
-  Closes #7230
-
-- single_transfer: ignore blank --output-dir
-  
-  ... as otherwise it creates a rather unexpected target directory with a
-  leading slash.
-  
-  Reported-by: Harry Sintonen
-  Fixes #7218
-  Closes #7233
+- [12932 brought this change]
 
-- tests: update README about servers and port numbers
-  
-  Closes #7242
+  misc: nitpick grammar in comments/docs
 
-- conn_shutdown: if closed during CONNECT cleanup properly
-  
-  Reported-by: Alex Xu
-  Reported-by: Phil E. Taylor
-  
-  Fixes #7236
-  Closes #7237
+  because the 'u' in URL is actually a consonant *sound* it is only
+  correct to write "a URL"
 
-- [Christian Weisgerber brought this change]
+  sorry this is a bit nitpicky :P
 
-  sws: malloc request struct instead of using stack
-  
-  ... 2MB requests is otherwise just too big for some systems.
-  
-  (The allocations are not freed properly.)
-  
-  Bug: https://curl.se/mail/lib-2021-06/0018.html
-  
-  Closes #7235
-
-- [Mark Swaanenburg brought this change]
-
-  lib: don't compare fd to FD_SETSIZE when using poll
-  
-  FD_SETSIZE is irrelevant when using poll. So ensuring that the file
-  descriptor is smaller than FD_SETSIZE in VALID_SOCK, can cause
-  multi_wait to ignore perfectly valid file descriptors and simply wait
-  for 1s to avoid hammering the CPU in a busy loop.
-  
-  Fixes #7240
-  Closes #7241
-
-- [zhangxiuhua brought this change]
-
-  doh: fix wrong DEBUGASSERT for doh private_data
-  
-  Closes #7227
-
-- [yb999 brought this change]
-
-  tests: update README.md with a missing single quote
-  
-  Closes #7231
-
-- GHA: run all tests for hyper too
-  
-  As it lists disabled ones in DISABLED now
-  
-  Closes #7209
-
-- tests/data/DISABLED: add tests not working with hyper
-  
-  The goal is to remove them all from here over time.
-  
-  Closes #7209
-
-- runtests: also find the last test in Makefile.inc
-  
-  Closes #7209
-
-- test3010: work with hyper mode
-  
-  Closes #7209
-
-- configure: disable RTSP when hyper is selected
-  
-  Makes test 1013 work
-  
-  Closes #7209
-
-- test1594/1595/1596: fix to work in hyper mode
-  
-  Closes #7209
-
-- test1438/1457: add HTTP keyword to make hyper mode work
-  
-  Closes #7209
-
-- test1340/1341: adjusted for hyper mode
-  
-  Closes #7209
-
-- test1218: adjusted for hyper mode
-  
-  Closes #7209
-
-- test1216: adjusted for hyper mode
-  
-  Closes #7209
-
-- test1230: adjust to work in hyper mode
-  
-  Closes #7209
-
-- c-hyper: abort CONNECT response reading early on non 2xx responses
-  
-  Fixes test 493
-  
-  Closes #7209
-
-- test434: add HTTP keyword
-  
-  Closes #7209
-
-- test599: adjusted to work in hyper mode
-  
-  Closes #7209
-
-- c-hyper: fix the uploaded field in progress callbacks
-  
-  Makes test 578 work
-  
-  Closes #7209
-
-- test566: adjust to work with hyper mode
-  
-  Closes #7209
-
-- [Fawad Mirza brought this change]
-
-  CURLOPT_WRITEFUNCTION.3: minor update of the example
-  
-  Safely avoid chunk.size garbage value if declared non globally.
-  
-  Closes #7219
-
-- [Bastian Krause brought this change]
-
-  configure: rename get-easy-option configure option to get-easy-options
-  
-  "get-easy-options" is the configure option advertised by the help text
-  anyway, so use that.
-  
-  Fixes #7211
-  Closes #7213
-  
-  Follow-up to ad691b191 ("configure: added --disable-get-easy-options")
-  Suggested-by: Daniel Stenberg <daniel@haxx.se>
-  Signed-off-by: Bastian Krause <bst@pengutronix.de>
-
-- runtests: skip disabled tests unless -f is used
-  
-  To make it easier to write ranges like '115 to 229' without that
-  explicitly enabling tests that are listed in DISABLED, this makes
-  runtests always skip disabled tests unless the -f command line option is
-  used.
-  
-  Previously the code attempted to not run such tests, but didn't do it
-  correctly.
-  
-  Closes #7212
-
-- [Jun-ya Kato brought this change]
-
-  ngtcp2: disable TLSv1.3 compatible mode when using GnuTLS
-  
-  The latest GnuTLS-3.7.2 implements disable switch for TLSv1.3 compatible
-  mode for middle box but it is enabled by default, which is unnecessary
-  for QUIC.
-  
-  Fixes #6896
-  Closes #7202
-
-- test644: remove as duplicate of test 587
-  
-  Closes #7208
-
-Daniel Gustafsson (8 Jun 2021)
-- RELEASE-NOTES: synced
+  https://english.stackexchange.com/questions/152/when-should-i-use-a-vs-an
+  https://www.techtarget.com/whatis/feature/Which-is-correct-a-URL-or-an-URL
 
-- cookies: track expiration in jar to optimize removals
-  
-  Removing expired cookies needs to be a fast operation since we want to
-  be able to perform it often and speculatively. By tracking the timestamp
-  of the next known expiration we can exit early in case the timestamp is
-  in the future.
-  
-  Closes: #7172
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Closes #9699
 
-Daniel Stenberg (7 Jun 2021)
-- GHA: add several libcurl tests to the hyper job
-  
-  500 to 512
-
-- test500: adjust to work with hyper mode
-
-- c-hyper: support CURLINFO_STARTTRANSFER_TIME
-  
-  Closes #7204
-
-- c-hyper: support CURLOPT_HEADER
-  
-  When enabled, the headers are passed to the body write callback as well.
-  
-  Like in test 500
-  
-  Closes #7204
-
-- GHA: run the newly fixed tests with hyper
-  
-  Closes #7205
-
-- test433: adjust for hyper mode
-  
-  Closes #7205
-
-- test395: hyper cannot work around > 64 bit content-lengths like built-in
-  
-  Closes #7205
-
-- test394: hyper returns a different error
-  
-  Closes #7205
-
-- test393: make Content-Length fit within 64 bit for hyper
-  
-  Closes #7205
-
-- test347: CRLFify to work in hyper mode
-  
-  Closes #7205
-
-- test339: CRLFify better to work in hyper mode
-  
-  Closes #7205
-
-- travis: remove the hyper build
-
-- GHA: add a linux-hyper job
-  
-  Closes #7206
-
-- test328: avoid a header-looking body to make hyper mode work
-  
-  The test still works the same, just modified two bytes in the content.
-  
-  Closes #7203
-
-- release-notes.pl: also spot common 'closes' typo
-
-- metalink: remove
-  
-  Warning: this will make existing curl command lines that use metalink to
-  stop working.
-  
-  Reasons for removal:
-  
-  1. We've found several security problems and issues involving the
-     metalink support in curl. The issues are not detailed here. When
-     working on those, it become apparent to the team that several of the
-     problems are due to the system design, metalink library API and what
-     the metalink RFC says. They are very hard to fix on the curl side
-     only.
-  
-  2. The metalink usage with curl was only very briefly documented and was
-     not following the "normal" curl usage pattern in several ways, making
-     it surprising and non-intuitive which could lead to further security
-     issues.
-  
-  3. The metalink library was last updated 6 years ago and wasn't so
-     active the years before that either. An unmaintained library means
-     there's a security problem waiting to happen. This is probably reason
-     enough.
-  
-  4. Metalink requires an XML parsing library, which is complex code (even
-     the smaller alternatives) and to this day often gets security
-     updates.
-  
-  5. Metalink is not a widely used curl feature. In the 2020 curl user
-     survey, only 1.4% of the responders said that they'd are using it. In
-     2021 that number was 1.2%. Searching the web also show very few
-     traces of it being used, even with other tools.
-  
-  6. The torrent format and associated technology clearly won for
-     downloading large files from multiple sources in parallel.
-  
-  Cloes #7176
-
-- docs/INSTALL: remove mentions of configure --with-darwin-ssl
-  
-  ... as it isn't supported since a while back.
-  
-  Make configure fail with a warning if used.
-  
-  Reported-by: Vadim Grinshpun
-  Bug: https://curl.se/mail/lib-2021-06/0008.html
-  Closes #7200
+Viktor Szakats (11 Oct 2022)
+- Makefile.m32: drop CROSSPREFIX and our CC/AR defaults [ci skip]
 
-- RELEASE-NOTES: synced
+  This patch aimed to fix a regression [0], where `CC` initialization
+  moved beyond its first use. But, on closer inspection it turned out that
+  the `CC` initialization does not work as expected due to GNU Make
+  filling it with `cc` by default. So unless implicit values were
+  explicitly disabled via a GNU Make option, the default value of
+  `$CROSSPREFIX` + `gcc` was never used. At the same time the implicit
+  value `cc` maps to `gcc` in (most/all?) MinGW envs.
 
-- [Gregor Jasny brought this change]
+  `AR` has the same issue, with a default value of `ar`.
 
-  cmake: Avoid leaking absolute paths into exported config
-  
-  The `find_libarary` command resolves the library or framework
-  into an absolute path. In case of system frameworks which are
-  located within an Xcode-provided SDK this results in the Xcode
-  path and SDK version being part of the library path.
-  
-  Because those library paths end up in the exported CMake config
-  importing curl will fail once the Xcode location or SDK version
-  changes:
-  
-  ```cmake
-  set_target_properties(CURL::libcurl PROPERTIES
-    INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
-    INTERFACE_LINK_LIBRARIES "lber;ldap;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/SystemConfiguration.framework;OpenSSL::SSL;OpenSSL::Crypto;ZLIB::ZLIB"
-  )
-  ```
-  
-  A work-around is to link against system-level frameworks with
-  `-framework XYZ`. In case of `SystemConfiguration` we might be able
-  to omit the lookup-check because we could assume the framework is
-  always present.
-  
-  Closes #7152
-
-- [Shikha Sharma brought this change]
-
-  http2_connisdead: handle trailing GOAWAY better
-  
-  When checking the connection the input processing returns error
-  immediately, we now consider that a dead connnection.
-  
-  Bug: https://curl.se/mail/lib-2021-06/0001.html
-  Closes #7192
+  We could reintroduce a separate variable to fix this without ill
+  effects, but for simplicity and flexibility, it seems better to drop
+  support for `CROSSPREFIX`, along with our own `CC`/`AR` init logic, and
+  require the caller to initialize `CC`, `AR` and `RC` to the full
+  (prefixed if necessary) names of these tools, as desired.
 
-- [Dmitry Karpov brought this change]
+  We keep `RC ?= windres` because `RC` is empty by default.
 
-  ares: always store IPv6 addresses first
-  
-  Trying dual-stack on some embedded platform, I noticed that quite
-  frequently (20%) libCurl starts from IPv4 regardless the Happy Eyeballs
-  timeout value.  After debugging this issue, I noticed that this happens
-  if c-ares resolver response for IPv6 family comes before IPv4 (which was
-  randomly happening in my tests).
-  
-  In such cases, because libCurl puts the last resolver response on top of
-  the address list, when IPv4 resolver response comes after IPv6 one - the
-  IPv4 family starts the connection phase instead of IPv6 family.
-  
-  The solution for this issue is to always put IPv6 addresses on top of
-  the address list, regardless the order of resolver responses.
-  
-  Bug: https://curl.se/mail/lib-2021-06/0003.html
-  
-  Closes #7188
-
-- Revert "Revert "socketpair: fix potential hangs""
-  
-  This reverts commit 3e70c3430a370a31eff2c1d8fea29edaca8f1127.
-  
-  Thus brings back the change from #7144 as was originally landed in
-  c769d1eab4de8b
-  
-  Closes #7144 (again)
-
-- [Ebe Janchivdorj brought this change]
-
-  schannel: move code out of SChannel_connect_step1
-  
-  Reviewed-by: Marc Hoersken
-  Closes #7168
-
-- tests/data/Makefile.inc: error: trailing backslash on last line
-  
-  Follow-up to d8dcb399b8009d
-
-- TODO: Support rate-limiting for MQTT
-
-- [Dmitry Kostjuchenko brought this change]
-
-  warnless: simplify type size handling
-  
-  By using sizeof(T), existing defines and relying on the compiler to
-  define the required signed/unsigned mask.
-  
-  Closes #7181
-
-Gisle Vanem (4 Jun 2021)
-- [Win32] Fix for USE_WATT32
-  
-  My Watt-32 tcp/ip stack works on Windows but it does not have `WSAIoctl()`
-
-Daniel Stenberg (4 Jun 2021)
-- [Alexis Vachette brought this change]
-
-  url: bad CURLOPT_CONNECT_TO syntax now returns error
-  
-  Added test 3020 to verify
-  
-  Closes #7183
-
-- github: remove the cmake macOS gcc-8 jobs
-  
-  They're too similar to the gcc-9 ones to be useful (and seems to not
-  work anymore).
-  
-  Closes #7187
-
-- test269: disable for hyper
-  
-  --ignore-content-length / CURLOPT_IGNORE_CONTENT_LENGTH doesn't work
-  with hyper.
-  
-  Closes #7184
-
-- runtests: enable 'hyper mode' only for HTTP tests
-  
-  The 'hyper mode' makes line-ending checks work in the test suite for
-  when hyper is used. Now it also requires that HTTP or HTTPS are
-  mentioned as keywords to be enabled so that it doesn't wrongly adjusts
-  tests for other protocols.
-  
-  This makes test 271 (TFTP) work again in hyper enabled builds.
-  
-  Closes #7185
-
-- [Alexis Vachette brought this change]
-
-  hostip: bad CURLOPT_RESOLVE syntax now returns error
-  
-  Added test 3019
-  Fixes #7170
-  Closes #7174
-
-Daniel Gustafsson (3 Jun 2021)
-- cookies: fix typo and expand comment
-  
-  Fix a typo in the sorting comment, and while in there elaborate slightly
-  on why creationtime can be used as a tiebreaker.
-
-- cookies: remove unused header
-  
-  Commit 1c1d9f1affbd3367bcb24062e261d0ea5d185e3a removed the last use
-  for the inet_pton.h headerfile, this removes the inclusion of the
-  header.
-  
-  Closes: #7182
-  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Also fix grammar in a comment.
 
-Daniel Stenberg (3 Jun 2021)
-- Revert "socketpair: fix potential hangs"
-  
-  This reverts commit c769d1eab4de8b9f1bd84d992c63692fdc43c5be.
-  
-  See #7144 for details
-
-- [Paul Groke brought this change]
-
-  socketpair: fix potential hangs
-  
-  Fixes potential hang in accept by using select + non-blocking accept.
-  
-  Fixes potential hang in peer check by replacing the send/recv check with
-  a getsockname/getpeername check.
-  
-  Adds length check for returned sockaddr data.
-  
-  Closes #7144
-
-- runtests: parse data/Makefile.inc instead of using make
-  
-  The warning about missing entries in that file then doesn't require that
-  the Makefile has been regenerated which was confusing.
-  
-  The scan for the test num is a little more error prone than before
-  (since now it doesn't actually verify that it is legitimate Makefile
-  syntax), but I think it is good enough.
-  
-  Closes #7177
+  [0] 10fbd8b4e3f83b967fd9ad9a41ab484c0e7e7ca3
 
-- [Harry Sintonen brought this change]
+  Closes #9698
 
-  filecheck: quietly remove test-place/*~
-  
-  Closes #7179
-
-- CURLE_SETOPT_OPTION_SYNTAX: new error name for wrong setopt syntax
-  
-  For options that pass in lists or strings that are subsequently parsed
-  and must be correct. This broadens the scope for the option previously
-  known as CURLE_TELNET_OPTION_SYNTAX but the old name is of course still
-  provided as a #define for existing applications.
-  
-  Closes #7175
-
-- tests: fix Accept-Encoding strips to work with Hyper builds
-  
-  The previous strip also removed the CR which turned problematic.
-  
-  valgrind.supp: add zstd suppression using hyper
-  
-  Reported-and-analyzed-by: Kevin Burke
-  Fixes #7169
-  Closes #7171
-
-- github: timeout jobs on macOS after 90 minutes
-  
-  Assisted-by: Marc Hoersken
-  Closes #7173
+- smb: replace CURL_WIN32 with WIN32
 
-- [Harry Sintonen brought this change]
+  PR #9255 aimed to fix a Cygwin/MSYS issue (#8220). It used the
+  `CURL_WIN32` macro, but that one is not defined here, while compiling
+  curl itself. This patch changes this to `WIN32`, assuming this was the
+  original intent.
 
-  mqtt: detect illegal and too large file size
-  
-  Add test 3017 and 3018 to verify.
-  Closes #7166
+  Regression from 1c52e8a3795ccdf8ec9c308f4f8f19cf10ea1f1a
 
-- [Abhinav Singh brought this change]
+  Reviewed-by: Marcel Raad
 
-  cmake: add CURL_DISABLE_NTLM option
-  
-  Closes #7028
+  Closes #9701
 
-- [Abhinav Singh brought this change]
+Daniel Stenberg (11 Oct 2022)
+- [Matthias Gatto brought this change]
 
-  configure: add --disable-ntlm option
-  
-  Closes #7028
+  aws_sigv4: fix header computation
 
-- [Abhinav Singh brought this change]
+  Handle canonical headers and signed headers creation as explained here:
+  https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
 
-  define: re-add CURL_DISABLE_NTLM and corresponding ifdefs
-  
-  This flag will be further exposed by adding build options.
-  
-  Reverts #6809
-  Closes #7028
+  The algo tells that signed and canonical must contain at last host and
+  x-amz-date.
 
-- RELEASE-NOTES: synced
+  So we check whatever thoses are present in the curl http headers list.
+  If they are, we use the one enter by curl user, otherwise we generate
+  them.  then we to lower, and remove space from each http headers plus
+  host and x-amz-date, then sort them all by alphabetical order.
 
-Viktor Szakats (1 Jun 2021)
-- travis: delete --enable-hsts option (it is the default now) [ci skip]
-  
-  Reviewed-by: Daniel Stenberg
-  Closes #7167
-
-Daniel Stenberg (1 Jun 2021)
-- hostip: fix 3 coverity complaints
-  
-  Follow-up to 1a0ebf6632f889eed
-  
-  - Check the return code to Curl_inet_pton() in two instances, even
-    though we know the input is valid so the functions won't fail.
-  
-  - Clear the 'struct sockaddr_in' struct before use so that the
-    'sin_zero' field isn't left uninitialized.
-  
-  Detected by Coverity.
-  Assisted-by: Harry Sintonen
-  Closes #7163
-
-- c-hyper: fix NTLM on closed connection tested with test159
-  
-  Closes #7154
-
-- conncache: lowercase the hash key for better match
-  
-  As host names are case insensitive, the use of case sensitive hashing
-  caused unnecesary cache misses and therefore lost performance. This
-  lowercases the hash key.
-  
-  Reported-by: Harry Sintonen
-  Fixes #7159
-  Closes #7161
-
-- mbedtls: make mbedtls_strerror always work
-  
-  If the function doesn't exist, provide a macro that just clears the
-  error message. Removes #ifdef uses from the code.
-  
-  Closes #7162
-
-- vtls: exit addsessionid if no cache is inited
-  
-  Follow-up to b249592d29ae0
-  
-  Avoids NULL pointer derefs.
-  
-  Closes #7165
+  This patch also fix a bug with host header, which was ignoring the port.
 
-- [Harry Sintonen brought this change]
+  Closes #7966
 
-  Curl_ntlm_core_mk_nt_hash: fix OOM in error path
-  
-  Closes #7164
-
-Michael Kaufmann (1 Jun 2021)
-- ssl: read pending close notify alert before closing the connection
-  
-  This avoids a TCP reset (RST) if the server initiates a connection
-  shutdown by sending an SSL close notify alert and then closes the TCP
-  connection.
-  
-  For SSL connections, usually the server announces that it will close the
-  connection with an SSL close notify alert. curl should read this alert.
-  If curl does not read this alert and just closes the connection, some
-  operating systems close the TCP connection with an RST flag.
-  
-  See RFC 1122, section 4.2.2.13
-  
-  If curl reads the close notify alert, the TCP connection is closed
-  normally with a FIN flag.
-  
-  The new code is similar to existing code in the "SSL shutdown" function:
-  try to read an alert (non-blocking), and ignore any read errors.
-  
-  Closes #7095
-
-Daniel Stenberg (1 Jun 2021)
-- [Laurent Dufresne brought this change]
-
-  setopt: fix incorrect comments
-  
-  Closes #7157
-
-- [Laurent Dufresne brought this change]
-
-  mbedtls: add support for cert and key blob options
-  
-  CURLOPT_SSLCERT_BLOB and CURLOPT_SSLKEY_BLOB weren't usable with
-  mbedtls backend, so the support was added.
-  
-  Closes #7157
+Jay Satiro (11 Oct 2022)
+- [Aftab Alam brought this change]
 
-- [Gregor Jasny brought this change]
+  README.md: link the curl logo to the website
 
-  cmake: try well-known send/recv signature for Apple
-  
-  The CMake `try_compile` command is especially slow for
-  the Xcode generator. With this patch applied it first tests
-  for the currently used (and Open Group specified) send/recv
-  signature. In case this fails testing falls-back to the
-  permutations.
-  
-  speed-up:
-  
-  ```
-  time cmake .. -GNinja -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
-  before: 11.64s user 11.09s system 55% cpu 40.754 total
-  after:   7.84s user 6.57s  system 51% cpu 28.074 total
-  ```
-  
-  ```
-  time cmake .. -GXcode -DCMAKE_USE_SECTRANSP=ON -DHTTP_ONLY=ON -DCMAKE_USE_LIBSSH2=OFF
-  before: 217.07s user 104.15s system 60% cpu 8:51.79 total
-  after:  108.76s user  51.80s system 58% cpu 4:32.58 total
-  ```
-  
-  Closes #7158
-
-- http2: init recvbuf struct for pushed streams
-  
-  Debug builds would warn that these structs were not initialized properly
-  for pushed streams.
-  
-  Ref: #7148
-  Closes #7153
-
-- Curl_ssl_getsessionid: fail if no session cache exists
-  
-  This function might get called for an easy handle for which the session
-  cache hasn't been setup. It now just returns a "miss" in that case.
-  
-  Reported-by: Christoph M. Becker
-  Fixes #7148
-  Closes #7153
-
-- GOVERNANCE: add 'user', 'committer' and 'contributor'
-  
-  As those are commonly used terms in the project.
-  
-  Closes #7151
-
-- URL-SYNTAX.md: document the new 'localhost' treatment
-
-- hostip: make 'localhost' return fixed values
-  
-  Resolving the case insensitive host name 'localhost' now returns the
-  addresses 127.0.0.1 and (if IPv6 is enabled) ::1 without using any
-  resolver.
-  
-  This removes the risk that users accidentally resolves 'localhost' to
-  something else. By making sure 'localhost' is always local, we can
-  assume a "secure context" for such transfers (for cookies etc).
-  
-  Closes #7039
-
-Daniel Gustafsson (31 May 2021)
-- docs: fix typos
-
-Daniel Stenberg (30 May 2021)
-- hsts: ignore numberical IP address hosts
-  
-  Also, use a single function library-wide for detecting if a given hostname is
-  a numerical IP address.
-  
-  Reported-by: Harry Sintonen
-  Fixes #7146
-  Closes #7149
-
-- test178: adjust for hyper
-  
-  Hyper returns the same error for wrong HTTP version as for negative
-  content-length. Test 178 verifies that negative content-length is
-  rejected but the hyper backend will return a different error for it (and
-  without any helpful message telling why the message was bad). It will
-  also not return any headers at all for the response, not even the ones
-  that arrived before the error.
-  
-  Closes #7147
-
-- HYPER: remove mentions of deprecated development branch
-
-- c-hyper: handle NULL from hyper_buf_copy()
-  
-  Closes #7143
-
-- HSTS: not experimental anymore
-
-- [Douglas R. Reno brought this change]
-
-  INSTALL: use correct extension for CURL-DISABLE.md
-  
-  In INSTALL.MD, it's currently set to CURL-DISABLE-md instead of
-  CURL-DISABLE.md. This generates a 404 on the cURL website as well as
-  when viewing the docs through Github.
-  
-  Closes #7142
-
-- travis: run tests 1 - 153 with hyper
-
-- c-hyper: convert HYPERE_INVALID_PEER_MESSAGE to CURLE_UNSUPPORTED_PROTOCOL
-  
-  Makes test 129 work (HTTP/1.2 response).
-  
-  Closes #7141
-
-- http_proxy: deal with non-200 CONNECT response with Hyper
-  
-  Makes test 94 and 95 work
-  
-  Closes #7141
-
-- c-hyper: clear NTLM auth buffer when request is issued
-  
-  To prevent previous ones to get reused on subsequent requests. Matches
-  how the built-in HTTP code works. Makes test 90 to 93 work.
-  
-  Add test 90 to 93 in travis.
-  
-  Closes #7139
+  - Link the curl:// image to https://curl.se/
 
-- [Joel Depooter brought this change]
+  Closes https://github.com/curl/curl/pull/9675
 
-  schannel: set ALPN length correctly for HTTP/2
-  
-  In a3268eca792f1 this code was changed to use the ALPN_H2 constant
-  instead of the NGHTTP2_PROTO_ALPN constant. However, these constants are
-  not the same. The nghttp2 constant included the length of the string,
-  like this: "\x2h2". The ALPN_H2 constant is just "h2". Therefore we need
-  to re-add the length of the string to the ALPN buffer.
-  
-  Closes #7138
-
-- travis: run tests 1-89 in the hyper build
-  
-  Closes #7137
-
-- Revert "c-hyper: handle body on HYPER_TASK_EMPTY"
-  
-  This reverts commit c3eefa95c31f55657f0af422e8268d738f689066.
-  
-  Reported-by: Kevin Burke
-  Fixes #7122
-  Closes #7136
-
-- [Jon Rumsey brought this change]
-
-  ccsidcurl: fix the compile errors
-  
-  Looks like the declaration of cpp shoule be const char ** and return
-  null if convert_version_info_string fails.
-  
-  Fixes #7134
-  Closes #7135
-
-- [Viktor Szakats brought this change]
-
-  docs: use --max-redirs instead of --max-redir
-  
-  For consistency.
-  
-  Closes #7130
+- [Dustin Howett brought this change]
 
-- RELEASE-NOTES: synced
-  
-  ... and bump to 7.77.1
+  schannel: when importing PFX, disable key persistence
 
-- [Michael Forney brought this change]
+  By default, the PFXImportCertStore API persists the key in the user's
+  key store (as though the certificate was being imported for permanent,
+  ongoing use.)
 
-  travis: add bearssl build
-  
-  Closes #7133
+  The documentation specifies that keys that are not to be persisted
+  should be imported with the flag PKCS12_NO_PERSIST_KEY.
+  NOTE: this flag is only supported on versions of Windows newer than XP
+  and Server 2003.
 
-- [Michael Forney brought this change]
+  --
 
-  bearssl: explicitly initialize all fields of Curl_ssl
-  
-  Also, add comments like the other vtls backends.
-  
-  Closes #7133
+  This is take 2 of the original fix. It extends the lifetime of the
+  client certificate store to that of the credential handle. The original
+  fix which landed in 70d010d and was later reverted in aec8d30 failed to
+  work properly because it did not do that.
 
-- [Michael Forney brought this change]
+  Minor changes were made to the schannel credential context to support
+  closing the client certificate store handle at the end of an SSL session.
 
-  bearssl: remove incorrect const on variable that is modified
-  
-  hostname may be set to NULL later on in this function if it is an
-  IP address.
-  
-  Closes #7133
+  --
 
-Version 7.77.0 (26 May 2021)
+  Reported-by: ShadowZzj@users.noreply.github.com
 
-Daniel Stenberg (26 May 2021)
-- RELEASE-NOTES: synced
+  Fixes https://github.com/curl/curl/issues/9300
+  Supersedes https://github.com/curl/curl/pull/9363
+  Closes https://github.com/curl/curl/pull/9460
 
-- THANKS: added contributors from 7.77.0 cycle
+Viktor Szakats (11 Oct 2022)
+- Makefile.m32: support more options [ci skip]
 
-- copyright: update copyright year ranges to 2021
+  - Add support for these options:
+    `-wolfssl`, `-wolfssh`, `-mbedtls`, `-libssh`, `-psl`
 
-- [Radek Zajic brought this change]
+    Caveats:
+    - `-wolfssh` requires `-wolfssl`.
+    - `-wolfssl` cannot be used with OpenSSL backends in parallel.
+    - `-libssh` has build issues with BoringSSL and LibreSSL, and also
+       what looks like a world-writable-config vulnerability on Windows.
+       Consider it experimental.
+    - `-psl` requires `-idn2` and extra libs passed via
+      `LIBS=-liconv -lunistring`.
 
-  hostip: fix broken macOS/CMake/GCC builds
-  
-  Follow-up to 31f631a142d855f06
-  
-  Fixes #7128
-  Closes #7129
+  - Detect BoringSSL/wolfSSL and set ngtcp2 crypto lib accordingly.
+  - Generalize MultiSSL detection.
+  - Use else-if syntax. Requires GNU Make 3.81 (2006-04-01).
+  - Document more customization options.
 
-- TODO: netrc caching and sharing
-  
-  URL: https://curl.se/mail/archive-2021-05/0018.html
+  This brings over some configuration logic from `curl-for-win`.
 
-- [Orgad Shaneh brought this change]
+  Closes #9680
 
-  setopt: streamline ssl option code
-  
-  Make it use the same style as the code next to it
-  
-  Closes #7123
-
-- [Radek Zajic brought this change]
-
-  lib/hostip6.c: make NAT64 address synthesis on macOS work
-  
-  Closes #7121
-
-- [ejanchivdorj brought this change]
-
-  sectransp: fix EXC_BAD_ACCESS caused by uninitialized buffer
-  
-  When the SecCertificateCopyCommonName function fails, it leaves
-  common_name in a invalid state so CFStringCompare uses the invalid
-  result, causing EXC_BAD_ACCESS.
-  
-  The fix is to check the return value of the function before using the
-  name.
-  
-  Closes #7126
-
-- [Paweł Wegner brought this change]
-
-  CMake: add CURL_ENABLE_EXPORT_TARGET option
-  
-  install(EXPORT ...) causes trouble when embedding curl dependencies
-  which don't provide install(EXPORT ...) targets (e.g libressl and
-  nghttp2) with cmake's add_subdirectory.
-  
-  Reviewed-by: Jakub Zakrzewski
-  Closes #7060
+- cmake: enable more detection on Windows
 
-- [Alessandro Ghedini brought this change]
+  Enable `HAVE_UNISTD_H`, `HAVE_STRTOK_R` and `HAVE_STRCASECMP` detection
+  on Windows, instead of having predefined values.
 
-  quiche: update for network path aware API
-  
-  Latest version of quiche requires the application to pass the peer
-  address of received packets, and it provides the address for outgoing
-  packets back.
-  
-  Closes #7120
+  With these features detected correctly, CMake Windows builds get closer
+  to the autotools and `config-win32.h` ones.
 
-- [Jacob Hoffman-Andrews brought this change]
+  This also fixes detecting `HAVE_FTRUNCATE` correctly, which required
+  `unistd.h`.
 
-  rustls: switch read_tls and write_tls to callbacks
-  
-  And update to 0.6.0, including a rename from session to connection for
-  many fields.
-  
-  Closes #7071
+  Fixing `ftruncate()` in turn causes a build warning/error with legacy
+  MinGW/MSYS1 due to an offset type size mismatch. This env misses to
+  detect `HAVE_FILE_OFFSET_BITS`, which may be a reason. This patch
+  force-disables `HAVE_FTRUNCATE` for this platform.
 
-- [Koichi Shiraishi brought this change]
+  Reviewed-by: Daniel Stenberg
 
-  sectransp: fix 7f4a9a9b2a49 commit about missing comma
-  
-  Follow-up to 7f4a9a9b2a495
-  
-  Closes #7119
+  Closes #9687
 
-- [Harry Sintonen brought this change]
+- autotools: allow unix sockets on Windows
 
-  openssl: associate/detach the transfer from connection
-  
-  CVE-2021-22901
-  
-  Bug: https://curl.se/docs/CVE-2021-22901.html
+  Fixes: https://github.com/curl/curl-for-win/blob/73a070d96fd906fdee929e2f1f00a9149fb39239/curl-autotools.sh#L44-L47
 
-- [Harry Sintonen brought this change]
+  On Windows this feature is present, but not the header used in the
+  detection logic. It also requires an elaborate enabler logic
+  (as seen in `lib/curl_setup.h`). Let's always allow it and let the
+  lib code deal with the details.
 
-  telnet: check sscanf() for correct number of matches
-  
-  CVE-2021-22898
-  
-  Bug: https://curl.se/docs/CVE-2021-22898.html
+  Closes #9688
 
-- schannel: don't use static to store selected ciphers
-  
-  CVE-2021-22897
-  
-  Bug: https://curl.se/docs/CVE-2021-22897.html
+- cmake: add missing inet_ntop check
 
-- docs/tests: remove freenode references
+  This adds the missing half of the check, next to the other half
+  already present in `lib/curl_config.h.cmake`.
 
-- RELEASE-NOTES: synced
+  Force disable `HAVE_INET_NTOP` for old MSVC where it caused compiler
+  warnings.
 
-- [Sergey Markelov brought this change]
+  Reviewed-by: Daniel Stenberg
 
-  NSS: make colons, commas and spaces valid separators in cipher list
-  
-  Fixes #7110
-  Closes #7115
-
-- curl: include libmetalink version in --version output
-  
-  Closes #7112
-
-Jay Satiro (21 May 2021)
-- [Matias N. Goldberg brought this change]
-
-  cmake: Use multithreaded compilation on VS 2008+
-  
-  Multithreaded compilation has been supported since at least VS 2005 and
-  been robustly stable since at least VS 2008
-  
-  Closes https://github.com/curl/curl/pull/7109
-
-Daniel Stenberg (21 May 2021)
-- [Matias N. Goldberg brought this change]
-
-  cmake: fix two invokes result in different curl_config.h
-  
-  Fixes #7100
-  Closes #7101
-  
-  Reviewed-by: Jakub Zakrzewski
-  Signed-off-by: Matias N. Goldberg <dark_sylinc@yahoo.com.ar>
-
-- [Peng-Yu Chen brought this change]
-
-  cmake: detect CURL_SA_FAMILY_T
-  
-  Fixes #7049
-  Closes #7065
-
-- [Lucas Clemente Vella brought this change]
-
-  CURLOPT_IPRESOLVE: preventing wrong IP version from being used
-  
-  In some situations, it was possible that a transfer was setup to
-  use an specific IP version, but due do DNS caching or connection
-  reuse, it ended up using a different IP version from requested.
-  
-  This commit changes the effect of CURLOPT_IPRESOLVE from simply
-  restricting address resolution to preventing the wrong connection
-  type being used, when choosing a connection from the pool, and
-  to restricting what addresses could be used when establishing
-  a new connection.
-  
-  It is important that all addresses versions are resolved, even if
-  not used in that transfer in particular, because the result is
-  cached, and could be useful for a different transfer with a
-  different CURLOPT_IPRESOLVE setting.
-  
-  Closes #6853
-
-- [Oliver Urbann brought this change]
-
-  AmigaOS: add functions definitions for SHA256
-  
-  AmiSSL replaces many functions with macros. Curl requires pointer
-  to some of these functions. Thus, we have to encapsulate these macros:
-  SHA256_Init, SHA256_Update, SHA256_Final, X509_INFO_free.
-  
-  Bug: https://github.com/jens-maus/amissl/issues/15
-  Co-authored-by: Daniel Stenberg <daniel@haxx.se>
-  
-  Closes #7099
-
-- test2100: make it run with and require IPv6
-  
-  Closes #7083
-
-- tests/getpart: generate output URL encoded for better diffs
-  
-  Closes #7083
-
-- [Ryan Beck-Buysse brought this change]
-
-  docs/TheArtOfHttpScripting: fix markdown links
-  
-  extra parens cause the links to be incorrectly formatted
-  and inconsistent with the rest of the document.
-  
-  Signed-off-by: Ryan Beck-Buysse <rbuysse@gmail.com>
-  Closes #7097
+  Closes #9689
 
+Daniel Stenberg (11 Oct 2022)
 - RELEASE-NOTES: synced
 
-- [Emil Engler brought this change]
+- [bsergean on github brought this change]
 
-  docs: replace dots with dashes in markdown enums
-  
-  We use dashes instead of dots nearly everywhere except for those few
-  cases. This commit addresses this issues and brings more coherency into
-  it.
-  
-  Closes #7093
+  asyn-ares: set hint flags when calling ares_getaddrinfo
 
-- [Emil Engler brought this change]
+  The hint flag is ARES_AI_NUMERICSERV, and it will save a call to
+  getservbyname or getservbyname_r to set it.
 
-  docs: improve INTERNALS.md regarding getsock cb
-  
-  This adds the I/O prefix to indicate that those "actions" are kind-of
-  related to those found in select(2) or poll(2) (reading/writing).
-  
-  It also adds a note where the prototypes of those functions can be found
-  in the source code.
-  
-  Closes #7092
+  Closes #9694
 
-- [Emil Engler brought this change]
+- header.d: add category smtp and imap
 
-  docs: document attach in INTERNALS.md
-  
-  The new field in the Curl_handler struct still lacks documentation. This
-  adds it it from the information extracted from lib/urldata.h:797
-  
-  Closes #7091
-
-- [Marc Aldorasi brought this change]
-
-  config: remove now-unused macros
-  
-  Closes #7094
-
-- [Marc Aldorasi brought this change]
-
-  hostip.h: remove declaration of unimplemented function
-  
-  Closes #7094
-
-- h3: add 'attach' callback to protocol handlers
-  
-  Follow-up to 0c55fbab45be
-  
-  Reviewed-by: Emil Engler
-  Closes #7090
-
-- wolfssl: remove SSLv3 support leftovers
-  
-  Closes #7088
-
-- curl-wolfssl.m4: without custom include path, assume /usr/include
-  
-  ... so that we can point out the root of the OpenSSL emulation headers.
-  Previously this used the '$includedir' variable which is wrong since
-  that defaults to the dir where the current configure invoke will install
-  the built libcurl headers: /usr/local by default.
-  
-  Fixes #7085
-  Reported-by: Joel Jakobsson
-  Closes #7087
+  They were previously (erroneously) added manually to tool_listhelp.c
+  which would make them get removed again when the file is updated next
+  time, unless added correctly here in header.d
 
-- [Joel Depooter brought this change]
+  Follow-up to 2437fac01
 
-  data_pending: check only SECONDARY socket for FTP(S) transfers
-  
-  Check the FIRST for all other protocols.
-  
-  This fixes a timeout in an ftps download. The server sends a TLS
-  close_notify message in the same packet as the file data. The
-  close_notify seems to not be handled in the schannel_recv function, so
-  libcurl is not aware that the server has closed the connection. Thus
-  libcurl ends up waiting for action on the socket until a timeout is
-  reached. With the secondary socket check added to the data_pending
-  function, the close_notify is properly handled, and the ftps transfer
-  terminates as expected.
-  
-  Fixes #7068
-  Closes #7069
-
-- github: inhibit deprecated declarations for clang on macOS
-  
-  ... as they otherwise cause ldap build errors in the CI.
-  
-  Fixes #7081
-  Closes #7082
-
-- conn: add 'attach' to protocol handler, make libssh2 use it
-  
-  The libssh2 backend has SSH session associated with the connection but
-  the callback context is the easy handle, so when a connection gets
-  attached to a transfer, the protocol handler now allows for a custom
-  function to get used to set things up correctly.
-  
-  Reported-by: Michael O'Farrell
-  Fixes #6898
-  Closes #7078
-
-- http2: make sure pause is done on HTTP
-  
-  Since the function is called for any protocol, we can't assume that the
-  HTTP struct is there without first making sure it is HTTP.
-  
-  Reported-by: Denis Goleshchikhin
-  Fixes #7079
-  Closes #7080
-
-- docs: cookies from HTTP headers need domain set
-  
-  ... or the cookies won't get sent. Push users to using the "Netscape"
-  format instead, which curl uses when saving a cookie "jar".
-  
-  Reported-by: Martin Dorey
-  Reviewed-by: Daniel Gustafsson
-  Fixes #6723
-  Closes #7077
+  Closes #9690
+
+- curl/get_url_file_name: use libcurl URL parser
+
+  To avoid URL tricks, use the URL parser for this.
+
+  This update changes curl's behavior slightly in that it will ignore the
+  possible query part from the URL and only use the file name from the
+  actual path from the URL. I consider it a bugfix.
+
+  "curl -O localhost/name?giveme-giveme" will now save the output in the
+  local file named 'name'
+
+  Updated test 1210 to verify
+
+  Assisted-by: Jay Satiro
+
+  Closes #9684
+
+- [Martin Ågren brought this change]
+
+  docs: fix grammar around needing pass phrase
+
+  "You never needed a pass phrase" reads like it's about to be followed by
+  something like "until version so-and-so", but that is not what is
+  intended. Change to "You never need a pass phrase". There are two
+  instances of this text, so make sure to update both.
+
+- [Xiang Xiao brought this change]
+
+  cmake: add the check of HAVE_SOCKETPAIR
+
+  which is used by Curl_socketpair
+
+  Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
+
+  Closes #9686
+
+- curl/add_file_name_to_url: use the libcurl URL parser
+
+  instead of the custom error-prone parser, to extract and update the path
+  of the given URL
+
+  Closes #9683
+
+- single_transfer: use the libcurl URL parser when appending query parts
+
+  Instead of doing "manual" error-prone parsing in another place.
+
+  Used when --data contents is added to the URL query when -G is provided.
+
+  Closes #9681
+
+- ws: fix buffer pointer use in the callback loop
+
+  Closes #9678
+
+- [Petr Štetiar brought this change]
+
+  curl-wolfssl.m4: error out if wolfSSL is not usable
+
+  When I explicitly declare, that I would like to have curl built with
+  wolfSSL support using `--with-wolfssl` configure option, then I would
+  expect, that either I endup with curl having that support, for example
+  in form of https support or it wouldn't be available at all.
+
+  Downstream projects like for example OpenWrt build curl wolfSSL variant
+  with `--with-wolfssl` already, but in certain corner cases it does fail:
+
+    configure:25299: checking for wolfSSL_Init in -lwolfssl
+    configure:25321: x86_64-openwrt-linux-musl-gcc -o conftest [snip]
+    In file included from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/dsa.h:33,
+                     from target-x86_64_musl/usr/include/wolfssl/wolfcrypt/asn_public.h:35,
+                    from target-x86_64_musl/usr/include/wolfssl/ssl.h:35,
+                     from conftest.c:47:
+    target-x86_64_musl/usr/include/wolfssl/wolfcrypt/integer.h:37:14: fatal error: wolfssl/wolfcrypt/sp_int.h: No such file or directory
+         #include <wolfssl/wolfcrypt/sp_int.h>
+                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    compilation terminated.
+
+  and in the end thus produces curl without https support:
+
+   curl: (1) Protocol "https" not supported or disabled in libcurl
+
+  So fix it, by making the working wolfSSL mandatory and error out in
+  configure step when that's not the case:
+
+   checking for wolfSSL_Init in -lwolfssl... no
+   configure: error: --with-wolfssl but wolfSSL was not found or doesn't work
+
+  References: https://github.com/openwrt/packages/issues/19005
+  References: https://github.com/openwrt/packages/issues/19547
+  Signed-off-by: Petr Štetiar <ynezz@true.cz>
+
+  Closes #9682
+
+- tool_getparam: pass in the snprintf("%.*s") string length as 'int'
+
+  Reported by Coverity CID 1515928
+
+  Closes #9679
+
+- [Paul Seligman brought this change]
+
+  ws: minor fixes for web sockets without the CONNECT_ONLY flag
+
+  - Fixed an issue where is_in_callback was getting cleared when using web
+    sockets with debug logging enabled
+  - Ensure the handle is is_in_callback when calling out to fwrite_func
+  - Change the write vs. send_data decision to whether or not the handle
+    is in CONNECT_ONLY mode.
+  - Account for buflen not including the header length in curl_ws_send
+
+  Closes #9665
+
+Marc Hoersken (8 Oct 2022)
+- CI/cirrus: merge existing macOS jobs into a job matrix
+
+  Ref: #9627
+  Reviewed-by: Philip H.
+
+  Closes #9672
+
+Daniel Stenberg (8 Oct 2022)
+- strcase: add and use Curl_timestrcmp
+
+  This is a strcmp() alternative function for comparing "secrets",
+  designed to take the same time no matter the content to not leak
+  match/non-match info to observers based on how fast it is.
+
+  The time this function takes is only a function of the shortest input
+  string.
+
+  Reported-by: Trail of Bits
+
+  Closes #9658
+
+- tool_getparam: split out data_urlencode() into its own function
+
+  Closes #9673
+
+- connect: fix Curl_updateconninfo for TRNSPRT_UNIX
+
+  Reported-by: Vasiliy Ulyanov
+  Fixes #9664
+  Closes #9670
+
+- ws: fix Coverity complaints
+
+  Coverity pointed out several flaws where variables remained
+  uninitialized after forks.
+
+  Follow-up to e3f335148adc6742728f
+
+  Closes #9666
+
+Marc Hoersken (7 Oct 2022)
+- CI/GHA: merge msh3 and openssl3 builds into linux workflow
+
+  Continue work on merging all Linux workflows into one file.
+
+  Follow up to #9501
+  Closes #9646
+
+Daniel Stenberg (7 Oct 2022)
+- curl_ws_send.3: call the argument 'fragsize'
+
+  Since WebSocket works with "fragments" not "frames"
+
+  Closes #9668
+
+- easy: avoid Intel error #2312: pointer cast involving 64-bit pointed-to type
+
+  Follow-up to e3f335148adc6742728ff8
+
+  Closes #9669
+
+- tool_main: exit at once if out of file descriptors
+
+  If the main_checkfds function cannot create new file descriptors in an
+  attempt to detect of stdin, stdout or stderr are closed.
+
+  Also changed the check to use fcntl() to check if the descriptors are
+  open, which avoids superfluously calling pipe() if they all already are.
+
+  Follow-up to facfa19cdd4d0094
+
+  Reported-by: Trail of Bits
+
+  Closes #9663
+
+- websockets: remodeled API to support 63 bit frame sizes
+
+  curl_ws_recv() now receives data to fill up the provided buffer, but can
+  return a partial fragment. The function now also get a pointer to a
+  curl_ws_frame struct with metadata that also mentions the offset and
+  total size of the fragment (of which you might be receiving a smaller
+  piece). This way, large incoming fragments will be "streamed" to the
+  application. When the curl_ws_frame struct field 'bytesleft' is 0, the
+  final fragment piece has been delivered.
+
+  curl_ws_recv() was also adjusted to work with a buffer size smaller than
+  the fragment size. (Possibly needless to say as the fragment size can
+  now be 63 bit large).
+
+  curl_ws_send() now supports sending a piece of a fragment, in a
+  streaming manner, in addition to sending the entire fragment in a single
+  call if it is small enough. To send a huge fragment, curl_ws_send() can
+  be used to send it in many small calls by first telling libcurl about
+  the total expected fragment size, and then send the payload in N number
+  of separate invokes and libcurl will stream those over the wire.
+
+  The struct curl_ws_meta() returns is now called 'curl_ws_frame' and it
+  has been extended with two new fields: *offset* and *bytesleft*. To help
+  describe the passed on data chunk when a fragment is delivered in many
+  smaller pieces.
+
+  The documentation has been updated accordingly.
+
+  Closes #9636
+
+- [Patrick Monnerat brought this change]
+
+  docs/examples: avoid deprecated options in examples where possible
+
+  Example programs targeting a deprecated feature/option are commented with
+  a warning about it.
+  Other examples are adapted to not use deprecated options.
+
+  Closes #9661
+
+Viktor Szakats (6 Oct 2022)
+- cmake: fix enabling websocket support
+
+  Follow-up from 664249d095275ec532f55dd1752d80c8c1093a77
+
+  Closes #9660
+
+- tidy-up: delete parallel/unused feature flags
+
+  Detecting headers and lib separately makes sense when headers come in
+  variations or with extra ones, but this wasn't the case here. These were
+  duplicate/parallel macros that we had to keep in sync with each other
+  for a working build. This patch leaves a single macro for each of these
+  dependencies:
+
+  - Rely on `HAVE_LIBZ`, delete parallel `HAVE_ZLIB_H`.
+
+    Also delete CMake logic making sure these two were in sync, along with
+    a toggle to turn off that logic, called `CURL_SPECIAL_LIBZ`.
+
+    Also delete stray `HAVE_ZLIB` defines.
+
+    There is also a `USE_ZLIB` variant in `lib/config-dos.h`. This patch
+    retains it for compatibility and deprecates it.
+
+  - Rely on `USE_LIBSSH2`, delete parallel `HAVE_LIBSSH2_H`.
+
+    Also delete `LIBSSH2_WIN32`, `LIBSSH2_LIBRARY` from
+    `winbuild/MakefileBuild.vc`, these have a role when building libssh2
+    itself. And `CURL_USE_LIBSSH`, which had no use at all.
+
+    Also delete stray `HAVE_LIBSSH2` defines.
+
+  - Rely on `USE_LIBSSH`, delete parallel `HAVE_LIBSSH_LIBSSH_H`.
+
+    Also delete `LIBSSH_WIN32`, `LIBSSH_LIBRARY` and `HAVE_LIBSSH` from
+    `winbuild/MakefileBuild.vc`, these were the result of copy-pasting the
+    libssh2 line, and were not having any use.
+
+  - Delete unused `HAVE_LIBPSL_H` and `HAVE_LIBPSL`.
+
+  Reviewed-by: Daniel Stenberg
+
+  Closes #9652
+
+Daniel Stenberg (6 Oct 2022)
+- netrc: compare user name case sensitively
+
+  User name comparisions in netrc need to match the case.
+
+  Closes #9657
+
+- CURLOPT_COOKIEFILE: insist on "" for enable-without-file
+
+  The former way that also suggested using a non-existing file to just
+  enable the cookie engine could lead to developers maybe a bit carelessly
+  guessing a file name that will not exist, and then in a future due to
+  circumstances, such a file could be made to exist and then accidentally
+  libcurl would read cookies not actually meant to.
+
+  Reported-by: Trail of bits
+
+  Closes #9654
+
+- tests/Makefile: remove run time stats from ci-test
+
+  The ci-test is the normal makefile target invoked in CI jobs. This has
+  been using the -r option to runtests.pl since a long time, but I find
+  that it mostly just adds many lines to the test output report without
+  anyone caring much about those stats.
+
+  Remove it.
+
+  Closes #9656
+
+- [Patrick Monnerat brought this change]
+
+  tool: reorganize function c_escape around a dynbuf
+
+  This is a bit shorter and a lot safer.
+
+  Substrings of unescaped characters are added by a single call to reduce
+  overhead.
+
+  Extend test 1465 to handle more kind of escapes.
+
+  Closes #9653
+
+Jay Satiro (5 Oct 2022)
+- CURLOPT_HTTPPOST.3: bolden the deprecation notice
+
+  Ref: https://github.com/curl/curl/pull/9621
+
+  Closes https://github.com/curl/curl/pull/9637
+
+Daniel Stenberg (5 Oct 2022)
+- [John Bampton brought this change]
+
+  misc: fix spelling in docs and comments
+
+  also: remove outdated sentence
+
+  Closes #9644
+
+- [Patrick Monnerat brought this change]
+
+  tool: avoid generating ambiguous escaped characters in --libcurl
+
+  C string hexadecimal-escaped characters may have more than 2 digits.
+  This results in a wrong C compiler interpretation of a 2-digit escaped
+  character when followed by an hex digit character.
+
+  The solution retained here is to represent such characters as 3-digit
+  octal escapes.
+
+  Adjust and extend test 1465 for this case.
+
+  Closes #9643
+
+- configure: the ngtcp2 option should default to 'no'
+
+  While still experimental.
+
+  Bug: https://curl.se/mail/lib-2022-10/0007.html
+  Reported-by: Daniel Hallberg
+
+  Closes #9650
+
+- CURLOPT_MIMEPOST.3: add an (inline) example
+
+  Reported-by: Jay Satiro
+  Bug: https://github.com/curl/curl/pull/9637#issuecomment-1268070723
+
+  Closes #9649
+
+Viktor Szakats (5 Oct 2022)
+- Makefile.m32: exclude libs & libpaths for shared mode exes [ci skip]
+
+  Exclude linker flags specifying depedency libs and libpaths, when
+  building against `libcurl.dll`. In such case these options are not
+  necessary (but may cause errors if not/wrongly configured.)
+
+  Also move and reword a comment on `CPPFLAGS` to not apply to
+  `UNICODE` options. These are necessary for all build targets.
+
+  Closes #9651
+
+Jay Satiro (5 Oct 2022)
+- runtests: fix uninitialized value on ignored tests
+
+  - Don't show TESTFAIL message (ie tests failed which aren't ignored) if
+    only ignored tests failed.
+
+  Before:
+  IGNORED: failed tests: 571 612 1056
+  TESTDONE: 1214 tests out of 1217 reported OK: 99%
+  Use of uninitialized value $failed in concatenation (.) or string at
+  ./runtests.pl line 6290.
+  TESTFAIL: These test cases failed:
+
+  After:
+  IGNORED: failed tests: 571 612 1056
+  TESTDONE: 1214 tests out of 1217 reported OK: 99%
+
+  Closes https://github.com/curl/curl/pull/9648
+
+- cirrus: use make LDFLAGS=-all-static instead of curl_LDFLAGS
+
+  - Correct the use of -all-static for static Windows CI builds.
+
+  curl_LDFLAGS was removed from the makefile when metalink support was
+  removed. LDFLAGS=-all-static is passed to make only, because it is not a
+  valid option for configure compilation tests.
+
+  Closes https://github.com/curl/curl/pull/9633
+
+Viktor Szakats (4 Oct 2022)
+- Makefile.m32: fix regression with tool_hugehelp [ci skip]
+
+  In a recent commit I mistakenly deleted this logic, after seeing a
+  reference to a filename ending with `.cvs` and thinking it must have
+  been long gone. Turns out this is an existing file. Restore the rule
+  and the necessary `COPY` definitions with it.
+
+  The restored logic is required for a successful build on a bare source
+  tree (as opposed to a source release tarball).
+
+  Also shorten an existing condition similar to the one added in this
+  patch.
+
+  Regression since 07a0047882dd3f1fbf73486c5dd9c15370877ad6
+
+  Closes #9645
+
+- Makefile.m32: deduplicate build rules [ci skip]
+
+  After this patch, we reduce the three copies of most `Makefile.m32`
+  logic to one. This now resides in `lib/Makefile.m32`. It makes future
+  updates easier, the code shorter, with a small amount of added
+  complexity.
+
+  `Makefile.m32` reduction:
+
+  |                   |  bytes | LOC total |  blank |  comment |  code |
+  |-------------------|-------:|----------:|-------:|---------:|------:|
+  | 7.85.0            |  34772 |      1337 |     79 |      192 |  1066 |
+  | before this patch |  17601 |       625 |     62 |      106 |   457 |
+  | after this patch  |  11680 |       392 |     52 |      104 |   236 |
+
+  Details:
+
+  - Change rules to create objects for the `v*` subdirs in the `lib` dir.
+    This allows to use a shared compile rule and assumes that filenames
+    are not (and will not be) colliding across these directories.
+    `Makefile.m32` now also stores a list of these subdirs. They are
+    changing rarely though.
+
+  - Sync as much as possible between the three `Makefile.m32` scripts'
+    rules and their source/target sections.
+
+  - After this patch `CPPFLAGS` are all applied to the `src` sources once
+    again. This matches the behaviour of cmake/autotools. Only zlib ones
+    are actually required there.
+
+  - Use `.rc` names from `Makefile.inc` instead of keeping a duplicate.
+
+  - Change examples to link `libcurl.dll` by default. This makes building
+    trivial, even as a cross-build:
+      `CC=x86_64-w64-mingw32-gcc make -f Makefile.m32`
+    To run them, you need to move/copy or add-to-path `libcurl.dll`.
+    You can select static mode via `CFG=-static`.
+
+  - List more of the `Makefile.m32` config variables.
+
+  - Drop `.rc` support from examples. It made it fragile without much
+    benefit.
+
+  - Include a necessary system lib for the `externalsocket.c` example.
+
+  - Exclude unnecessary systems libs when building in `-dyn` mode.
+
+  Closes #9642
+
+Daniel Stenberg (4 Oct 2022)
+- RELEASE-NOTES: synced
+
+- CURLOPT_COOKIELIST.3: fix formatting mistake
+
+  Also, updated manpage-syntax.pl to make it detect this error in test
+  1173.
+
+  Reported-by: ProceduralMan on github
+  Fixes #9639
+  Closes #9640
+
+- [Jay Satiro brought this change]
+
+  connect: change verbose IPv6 address:port to [address]:port
+
+  - Use brackets for the IPv6 address shown in verbose message when the
+    format is address:port so that it is less confusing.
+
+  Before: Trying 2606:4700:4700::1111:443...
+  After: Trying [2606:4700:4700::1111]:443...
+
+  Bug: https://curl.se/mail/archive-2022-02/0041.html
+  Reported-by: David Hu
+
+  Closes #9635
+
+Viktor Szakats (3 Oct 2022)
+- Makefile.m32: major rework [ci skip]
+
+  This patch overhauls `Makefile.m32` scripts, fixing a list of quirks,
+  making its behaviour and customization envvars align better with other
+  build systems, aiming for less code, that is easier to read, use and
+  maintain.
+
+  Details:
+  - Rename customization envvars:
+    `CURL_CC` -> `CC`
+    `CURL_RC` -> `RC`
+    `CURL_AR` -> `AR`
+    `CURL_LDFLAG_EXTRAS_DLL` -> `CURL_LDFLAGS_LIB`
+    `CURL_LDFLAG_EXTRAS_EXE` -> `CURL_LDFLAGS_BIN`
+  - Drop `CURL_STRIP` and `CURL_RANLIB`. These tools are no longer used.
+  - Accept `CFLAGS`, `CPPFLAGS`, `RCFLAGS`, `LDFLAGS` and `LIBS` envvars.
+  - Drop `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, `CURL_RCFLAG_EXTRAS` in
+    favor of the above.
+  - Do not automatically enable `zlib` with `libssh2`. `zlib` is optional
+    with `libssh2`.
+  - Omit unnecessary `CPPFLAGS` options when building `curl.exe` and
+    examples.
+  - Drop support for deprecated `-winssl` `CFG` option. Use `-schannel`
+    instead.
+  - Avoid late evaluation where not necessary (`=` -> `:=`).
+  - Drop support for `CURL_DLL_A_SUFFIX` to override the implib suffix.
+    Instead, use the standard naming scheme by default: `libcurl.dll.a`.
+    The toolchain recognizes the name, and selects it automatically when
+    asking for a `-shared` vs. `-static` build.
+  - Stop applying `strip` to `libcurl.a`. Follow-up from
+    16a58e9f93c7e89e1f87720199388bcfcfa148a4. There was no debug info to
+    strip since then.
+  - Stop setting `-O3`, `-W`, `-Wall` options. You can add these to
+    `CFLAGS` as desired.
+  - Always enable `-DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG` with OpenSSL,
+    to avoid that vulnerability on Windows.
+  - Add `-lbrotlicommon` to `LIBS` when using `brotli`.
+  - Do not enable `-nghttp3` without `-ngtcp2`.
+  - `-ssh2` and `-rtmp` options no longer try to auto-select a TLS-backend.
+    You need to set the backend explicitly. This scales better and avoids
+    issues with certain combinations (e.g. `libssh2` + `wolfssl` with no
+    `schannel`).
+  - Default to OpenSSL TLS-backend with `ngtcp2`. Possible to override via
+    `NGTCP2_LIBS`.
+  - Old, alternate method of enabling components (e.g. `SSH2=1`) no longer
+    supported.
+  - Delete `SPNEGO` references. They were no-ops.
+  - Drop support for Win9x environments.
+  - Allow setting `OPENSSL_LIBS` independently from `OPENSSL_LIBPATH`.
+  - Support autotools/CMake `libssh2` builds by default.
+  - Respect `CURL_DLL_SUFFIX` in `-dyn` mode when building `curl.exe` and
+    examples.
+  - Assume standard directory layout with `LIBCARES_PATH`. (Instead of the
+    long gone embedded one.)
+  - Stop static linking with c-ares by default. Add
+    `CPPFLAGS=-DCARES_STATICLIB` to enable it.
+  - Reorganize internal layout to avoid redundancy and emit clean diffs
+    between src/lib and example make files.
+  - Delete unused variables.
+  - Code cleanups/rework.
+  - Comment and indentation fixes.
+
+  Closes #9632
+
+- scripts/release-notes.pl: strip ci skip tag [ci skip]
+
+  Ref: https://github.com/curl/curl/commit/e604a82cae922bf86403a94f5803ac5e4303ae97#commitcomment-85637701
+
+  Reviewed-by: Daniel Stenberg
+
+  Closes #9634
+
+- Makefile.m32: delete legacy component bits [ci skip]
+
+  - Drop auto-detection of OpenSSL 1.0.2 and earlier. Now always defaulting
+    to OpenSSL 1.1.0 and later, LibreSSL and BoringSSL.
+
+  - Drop `Invalid path to OpenSSL package` detection. OpenSSL has been
+    using a standard file layout since 1.1.0, so this seems unnecessary
+    now.
+
+  - Drop special logic to enable Novell LDAP SDK support.
+
+  - Drop special logic to enable OpenLDAP LDAP SDK support. This seems
+    to be distinct from native OpenLDAP, with support implemented inside
+    `lib/ldap.c` (vs. `lib/openldap.c`) back when the latter did not exist
+    yet in curl.
+
+  - Add `-lwldap32` only if there is no other LDAP library (either native
+    OpenLDAP, or SDKs above) present.
+
+  - Update `doc/INSTALL.md` accordingly.
+
+  After this patch, it's necessary to make configration changes when using
+  OpenSSL 1.0.2 or earlier, or the two LDAP SDKs.
+
+  OpenSSL 1.0.2 and earlier:
+  ```
+  export OPENSSL_INCLUDE = <path-to-openssl>/outinc
+  export OPENSSL_LIBPATH = <path-to-openssl>/out
+  export OPENSSL_LIBS = -lssl32 -leay32 -lgdi32
+  ```
+
+  Novell LDAP SDK, previously enabled via `USE_LDAP_NOVELL=1`:
+  ```
+  export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/inc -DCURL_HAS_NOVELL_LDAPSDK
+  export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib/mscvc -lldapsdk -lldapssl -lldapx
+  ```
+
+  OpenLDAP LDAP SDK, previously enabled via `USE_LDAP_OPENLDAP=1`:
+  ```
+  export CURL_CFLAG_EXTRAS = -I<path-to-sdk>/include -DCURL_HAS_OPENLDAP_LDAPSDK
+  export CURL_LDFLAG_EXTRAS = -L<path-to-sdk>/lib -lldap -llber
+  ```
+
+  I haven't tested these scenarios, and in general we recommend using
+  a recent OpenSSL release. Also, WinLDAP (the Windows default) and
+  OpenLDAP (via `-DUSE_OPENLDAP`) are the LDAP options actively worked on
+  in curl.
+
+  Closes #9631
+
+Daniel Stenberg (2 Oct 2022)
+- vauth/ntlm.h: make line shorter than 80 columns
+
+  Follow-up from 265fbd937
+
+Viktor Szakats (1 Oct 2022)
+- docs: update sourceforge project links [ci skip]
+
+  SourceForge projects can now choose between two hostnames, with .io and
+  .net ending. Both support HTTPS by default now. Opening the other variant
+  will perm-redirected to the one chosen by the project.
+
+  The .io -> .net redirection is done insecurely.
+
+  Let's update the URLs to point to the current canonical endpoints to
+  avoid any redirects.
+
+  Closes #9630
+
+Daniel Stenberg (1 Oct 2022)
+- curl_url_set.3: document CURLU_APPENDQUERY proper
+
+  Listed among the other supported flags.
+
+  Reported-by: Robby Simpson
+  Fixes #9628
+  Closes #9629
+
+Viktor Szakats (1 Oct 2022)
+- Makefile.m32: cleanups and fixes [ci skip]
+
+  - Add `-lcrypt32` once, and add it always for simplicity.
+  - Delete broken link and reference to the pre-Vista WinIDN add-on.
+    MS no longer distribute it.
+  - Delete related `WINIDN_PATH` option. IDN is a system lib since Vista.
+  - Sync `LIBCARES_PATH` default with the rest of dependencies.
+  - Delete version numbers from dependency path defaults.
+  - `libgsasl` package is now called `gsasl`.
+  - Delete `libexpat` and `libxml2` references. No longer used by curl.
+  - Delete `Edit the path below...` comments. We recommend to predefine
+    those envvars instead.
+  - `libcares.a` is not an internal dependency anymore. Stop using it as
+    such.
+  - `windres` `--include-dir` -> `-I`, `-F` -> `--target=` for readability.
+  - Delete `STRIP`, `CURL_STRIP`, `AR` references from `src/Makefile.m32`.
+    They were never used.
+  - Stop to `clean` some objects twice in `src/Makefile.m32`.
+  - Delete cvs-specific leftovers.
+  - Finish resource support in examples make file.
+  - Delete `-I<root>/lib` from examples make file.
+  - Fix copyright start year in examples make file.
+  - Delete duplicate `ftpuploadresume` input in examples make file.
+  - Sync OpenSSL lib order, `SYNC` support, `PROOT` use, dependency path
+    defaults, variables names and other internal bits between the three
+    make files.
+  - `lib/Makefile.m32` accepted custom options via `DLL_LIBS` envvar. This
+    was lib-specific and possibly accidental. Use `CURL_LDFLAG_EXTRAS_DLL`
+    envvar for the same effect.
+  - Fix linking `curl.exe` and examples to wrong static libs with
+    auto-detected OpenSSL 1.0.2 or earlier.
+  - Add `-lgdi32` for OpenSSL 1.0.2 and earlier only.
+  - Add link to Novell LDAP SDK and use a relative default path. Latest
+    version is from 2016, linked to an outdated OpenSSL 1.0.1.
+  - Whitespace and comment cleanups.
+
+  TODO in a next commit:
+
+  Delete built-in detection/logic for OpenSSL 1.0.2 and earlier, the Novell
+  LDAP SDK and the other LDAP SDK (which is _not_ OpenLDAP). Write up the
+  necessary custom envvars to configure them.
+
+  Closes #9616
+
+Daniel Stenberg (30 Sep 2022)
+- RELEASE-NOTES: synced
+
+- [Matt Holt brought this change]
+
+  HTTP3.md: update Caddy example
+
+  Closes #9623
+
+- easy: fix the altsvc init for curl_easy_duphandle
+
+  It was using the old #ifdef which nothing sets anymore
+
+  Closes #9624
+
+- GHA: build tests in a separate step from the running of them
+
+  ... to make the output smaller for when you want to look at test
+  failures.
+
+  Removed the examples build from msh3
+
+  Closes #9619
+
+Viktor Szakats (29 Sep 2022)
+- ldap: delete stray CURL_HAS_MOZILLA_LDAP reference
+
+  Added in 68b215157fdf69612edebdb220b3804822277822, while adding openldap
+  support. This is also the single mention of this constant in the source
+  tree and also in that commit. Based on these, it seems like an accident.
+
+  Delete this reference.
+
+  Reviewed-by: Daniel Stenberg
+
+  Closes #9625
+
+- docs: spelling nits
+
+  - MingW -> MinGW (Minimalist GNU for Windows)
+  - f.e. -> e.g.
+  - some whitespace and punctuation.
+
+  Reviewed-by: Daniel Stenberg
+
+  Closes #9622
+
+Daniel Stenberg (29 Sep 2022)
+- [Philip Heiduck brought this change]
+
+  cirrus-ci: add macOS build with m1
+
+  Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+
+  Closes #9565
+
+- [Patrick Monnerat brought this change]
+
+  lib: sanitize conditional exclusion around MIME
+
+  The introduction of CURL_DISABLE_MIME came with some additional bugs:
+  - Disabled MIME is compiled-in anyway if SMTP and/or IMAP is enabled.
+  - CURLOPT_MIMEPOST, CURLOPT_MIME_OPTIONS and CURLOPT_HTTPHEADER are
+    conditioned on HTTP, although also needed for SMTP and IMAP MIME mail
+    uploads.
+
+  In addition, the CURLOPT_HTTPHEADER and --header documentation does not
+  mention their use for MIME mail.
+
+  This commit fixes the problems above.
+
+  Closes #9610
+
+- [Thiago Suchorski brought this change]
+
+  docs: minor grammar fixes
+
+  Closes #9609
+
+- CURLSHOPT_UNLOCKFUNC.3: the callback as no 'access' argument
+
+  Probably a copy and paste error from the lock function man page.
+
+  Reported-by: Robby Simpson
+  Fixes #9612
+  Closes #9613
+
+- CURLOPT_ACCEPT_ENCODING.3: remove "four" as they are five
+
+  ... instead just list the supported encodings.
+
+  Reported-by: ProceduralMan on github
+  Fixes #9614
+  Closes #9615
+
+Dan Fandrich (28 Sep 2022)
+- tests: Remove a duplicated keyword
+
+- docs: document more server names for test files
+
+Daniel Stenberg (28 Sep 2022)
+- altsvc: reject bad port numbers
+
+  The existing code tried but did not properly reject alternative services
+  using negative or too large port numbers.
+
+  With this fix, the logic now also flushes the old entries immediately
+  before adding a new one, making a following header with an illegal entry
+  not flush the already stored entry.
+
+  Report from the ongoing source code audit by Trail of Bits.
+
+  Adjusted test 356 to verify.
+
+  Closes #9607
+
+- functypes: provide the recv and send arg and return types
+
+  This header is for providing the argument types for recv() and send()
+  when built to not use a dedicated config-[platfor].h file.
+
+  Remove the slow brute-force checks from configure and cmake.
+
+  This change also removes the use of the types for select, as they were
+  not used in code.
+
+  Closes #9592
+
+- urlapi: reject more bad characters from the host name field
+
+  Extended test 1560 to verify
+
+  Report from the ongoing source code audit by Trail of Bits.
+
+  Closes #9608
+
+- configure: deprecate builds with small curl_off_t
+
+  If curl_off_t turns out to be smaller than 8 bytes,
+  --with-n64-deprecated needs to be used to allow the build to
+  continue. This is to highlight the fact that support for such builds is
+  going away next year.
+
+  Also mentioned in DEPRECATED.md
+
+  Closes #9605
+
+- [Patrick Monnerat brought this change]
+
+  http, vauth: always provide Curl_allow_auth_to_host() functionality
+
+  This function is currently located in the lib/http.c module and is
+  therefore disabled by the CURL_DISABLE_HTTP conditional token.
+
+  As it may be called by TLS backends, disabling HTTP results in an
+  undefined reference error at link time.
+
+  Move this function to vauth/vauth.c to always provide it and rename it
+  as Curl_auth_allowed_to_host() to respect the vauth module naming
+  convention.
+
+  Closes #9600
+
+- ngtcp2: fix C89 compliance nit
+
+- openssl: make certinfo available for QUIC
+
+  Curl_ossl_certchain() is now an exported function in lib/vtls/openssl.c that
+  can also be used from quiche.c and ngtcp2.c to get the cert chain for QUIC
+  connections as well.
+
+  The *certchain function was moved to the top of the file for this reason.
+
+  Reported-by: Eloy Degen
+  Fixes #9584
+  Closes #9597
+
+- RELEASE-NOTES: synced
+
+- DEPRECATE.md: Support for systems without 64 bit data types
+
+  Closes #9604
+
+- [Patrick Monnerat brought this change]
+
+  tests: skip mime/form tests when mime is not built-in
+
+  Closes #9596
+
+- url: rename function due to name-clash in Watt-32
+
+  Follow-up to 2481dbe5f4f58 and applies the change the way it was
+  intended.
+
+Viktor Szakats (26 Sep 2022)
+- windows: adjust name of two internal public functions
+
+  According to `docs/INTERNALS.md`, internal function names spanning source
+  files start with uppercase `Curl_`. Bring these two functions in
+  alignment with this.
+
+  This also stops exporting them from `libcurl.dll` in autotools builds.
+
+  Reviewed-by: Daniel Stenberg
+
+  Closes #9598
+
+Daniel Stenberg (26 Sep 2022)
+- [Gisle Vanem brought this change]
+
+  url: rename function due to name-clash in Watt-32
+
+  Since the commit 764c958c52edb427f39, there was a new function called
+  resolve_ip(). This clashes with an internal function in Watt-32.
+
+  Closes #9585
+
+Jay Satiro (26 Sep 2022)
+- schannel: ban server ALPN change during recv renegotiation
+
+  By the time schannel_recv is renegotiating the connection, libcurl has
+  already decided on a protocol and it is too late for the server to
+  select a protocol via ALPN except for the originally selected protocol.
+
+  Ref: https://github.com/curl/curl/issues/9451
+
+  Closes https://github.com/curl/curl/pull/9463
+
+Daniel Stenberg (26 Sep 2022)
+- url: a zero-length userinfo part in the URL is still a (blank) user
+
+  Adjusted test 1560 to verify
+
+  Reported-by: Jay Satiro
+
+  Fixes #9088
+  Closes #9590
+
+Viktor Szakats (25 Sep 2022)
+- autotools: allow --enable-symbol-hiding with windows
+
+  This local autotools logic was put in place in
+  9e24b9c7afbcb81120af4cf3f6cdee49a06d8224 (in 2012) which disabled it for
+  Windows unconditionally. Testing reveals that it actually works with
+  tested toolchains (mingw-w64 and CI ones), so let's allow this build
+  feature on that platform. Bringing this in sync with CMake, which already
+  supported this.
+
+  Reviewed-by: Jay Satiro
+
+  Closes #9586
+
+- autotools: reduce brute-force when detecting recv/send arg list
+
+  autotools uses brute-force to detect `recv`/`send`/`select` argument
+  lists, by interating through _all_ argument type combinations on each
+  `./configure` run. This logic exists since
+  01fa02d0b545e1433dced2430561f8c0c72b74a9 (from 2006) and was a bit later
+  extended with Windows support.
+
+  This results in a worst-case number of compile + link cycles as below:
+  - `recv`: 96
+  - `send`: 192
+  - `select`: 60
+  Total: 348 (the number of curl C source files is 195, for comparison)
+
+  Notice that e.g. curl-for-win autotools builds require two `./configure`
+  invocations, doubling these numbers.
+
+  `recv` on Windows was especially unlucky because `SOCKET` (the correct
+  choice there) was listed _last_ in one of the outer trial loops. This
+  resulted in lengthy waits while autotools was trying all invalid
+  combinations first, wasting cycles, disk writes and slowing down
+  iteration.
+
+  This patch reduces the amount of idle work by reordering the tests in
+  a way to succeed first on a well-known platform such as Windows, and
+  also on non-Windows by testing for POSIX prototypes first, on the
+  assumption that these are the most likely candidates these days. (We do
+  not touch `select`, where the order was already optimal for these
+  platforms.)
+
+  For non-Windows, this means to try a return value of `ssize_t` first,
+  then `int`, reordering the buffer argument type to try `void *` first,
+  then `byte *`, and prefer the `const` flavor with `send`. If we are
+  here, also stop testing for `SOCKET` type in non-Windows builds.
+
+  After the patch, detection on Windows is instantaneous. It should also be
+  faster on popular platforms such as Linux and BSD-based ones.
+
+  If there are known-good variations for other platforms, they can also be
+  fast-tracked like above, given a way to check for that platform inside
+  the autotools logic.
+
+  Reviewed-by: Daniel Stenberg
+
+  Closes #9591
+
+Daniel Stenberg (23 Sep 2022)
+- TODO: Provide the error body from a CONNECT response
+
+  Spellchecked-by: Jay Satiro
+
+  Closes #9513
+  Closes #9581
+
+Viktor Szakats (23 Sep 2022)
+- windows: autotools .rc warnings fixup
+
+  Move `LT_LANG([Windows Resource])` after `XC_LIBTOOL`, fixing:
+
+  - Warnings when running `autoreconf -fi`.
+
+  - Warning when compiling .rc files:
+    libtool: compile: unable to infer tagged configuration
+    libtool:   error: specify a tag with '--tag'
+
+  Follow up to 6de7322c03d5b4d91576a7d9fc893e03cc9d1057
+  Ref: https://github.com/curl/curl/pull/9521#issuecomment-1256291156
+
+  Suggested-by: Patrick Monnerat
+  Closes #9582
+
+Daniel Stenberg (23 Sep 2022)
+- [Randall S. Becker brought this change]
+
+  curl_setup: disable use of FLOSS for 64-bit NonStop builds
+
+  Older 32-bit builds currently need FLOSS. This dependency may be removed
+  in future OS releases.
+
+  Signed-off-by: Randall S. Becker <randall.becker@nexbridge.ca>
+
+  Closes #9575
+
+- [Patrick Monnerat brought this change]
+
+  tool: remove dead code
+
+  Add a debug assertion to verify protocols included/excluded in a set
+  are always tokenized.
+
+  Follow-up to commit 677266c.
+
+  Closes #9576
+
+- [Patrick Monnerat brought this change]
+
+  lib: prepare the incoming of additional protocols
+
+  Move the curl_prot_t to its own conditional block. Introduce symbol
+  PROTO_TYPE_SMALL to control it.
+
+  Fix a cast in a curl_prot_t assignment.
+  Remove an outdated comment.
+
+  Follow-up to cd5ca80.
+
+  Closes #9534
+
+- msh3: change the static_assert to make the code C89
+
+- bearssl: make it proper C89 compliant
+
+- curl-compilers.m4: for gcc + want warnings, set gnu89 standard
+
+  To better verify that the code is C89
+
+  Closes #9542
+
+- [Patrick Monnerat brought this change]
+
+  lib517: fix C89 constant signedness
+
+  In C89, positive integer literals that overflow an int but not an
+  unsigned int may be understood as a negative int.
+
+  lib517.c:129:3: warning: this decimal constant is unsigned only in ISO C90
+     {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 },
+     ^
+
+  Closes #9572
+
+- mprintf: use snprintf if available
+
+  This is the single place in libcurl code where it uses the "native"
+  s(n)printf() function. Used for writing floats. The use has been
+  reviewed and vetted and uses a HUGE target buffer, but switching to
+  snprintf() still makes this safer and removes build-time warnings.
+
+  Reported-by: Philip Heiduck
+
+  Fixes #9569
+  Closes #9570
+
+- docs: tag curl options better in man pages
+
+  As it makes them links in the HTML versions.
+
+  Verified by the extended test 1176
+
+- symbols-in-versions: CURLOPT_ENCODING is deprecated since 7.21.6
+
+- manpage-syntax.pl: all libcurl option symbols should be \fI-tagged
+
+  ... as that makes them links to their corresponding man page.
+
+  This script is used for test 1173.
+
+  Closes #9574
+
+- RELEASE-NOTES: synced
+
+- [Patrick Monnerat brought this change]
+
+  tool: remove protocol count limitation
+
+  Replace bit mask protocol sets by null-terminated arrays of protocol
+  tokens. These are the addresses of the protocol names returned by
+  curl_version_info().
+
+  Protocol names are sorted case-insensitively before output to satisfy CI
+  tests matches consistency.
+
+  The protocol list returned by curl_version_info() is augmented with all
+  RTMP protocol variants.
+
+  Test 1401 adjusted for new alpha ordered output.
+
+  Closes #9546
+
+- test972: verify the output without using external tool
+
+  It seems too restrictive to assume and use an external tool to verify
+  the JSON. This now verifies the outut byte per byte. We could consider
+  building a local "JSON verifyer" in a future.
+
+  Remove 'jsonlint' from the CI job.
+
+  Reported-by: Marcel Raad
+  Fixes #9563
+  Closes #9564
+
+- hostip: lazily wait to figure out if IPv6 works until needed
+
+  The check may take many milliseconds, so now it is performed once the
+  value is first needed. Also, this change makes sure that the value is
+  not used if the resolve is set to be IPv4-only.
+
+  Closes #9553
+
+- curl.h: fix mention of wrong error code in comment
+
+  The same error and comment were also used and is now corrected in
+  CURLOPT_SSH_KEYFUNCTION.3
+
+- symbol-scan.pl: scan and verify .3 man pages
+
+  This script now also finds all .3 man pages in docs/include and
+  docs/include/opts, extracts all uses of CURL* symbols and verifies that all
+  symbols mentioned in docs are defined in public headers.
+
+  A "global symbol" is one of those matching a known prefix and the script makes
+  an attempt to check all/most of them. Just using *all* symbols that match
+  CURL* proved matching a little too many other references as well and turned
+  difficult turning into something useful.
+
+  Closes #9544
+
+- symbols-in-versions: add missing LIBCURL* symbols
+
+- symbol-scan.pl: also check for LIBCURL* symbols
+
+  Closes #9544
+
+- docs/libcurl/symbols-in-versions: add several missing symbols
+
+- test1119: scan all public headers
+
+  Previously this test only scanned a subset of the headers, which made us
+  accidentally miss symbols that were provided in the others. Now, the script
+  iterates over all headers present in include/curl.
+
+  Closes #9544
+
+- [Patrick Monnerat brought this change]
+
+  examples/chkspeed: improve portability
+
+  The example program chkspeed uses strncasecmp() which is not portable
+  across systems. Replace calls to this function by tests on characters.
+
+  Closes #9562
+
+- easy: fix the #include order
+
+  The mentioned "last 3 includes" order should be respected. easy_lock.h should
+  be included before those three.
+
+  Reported-by: Yuriy Chernyshov
+  Fixes #9560
+  Closes #9561
+
+- docs: spellfixes
+
+  Pointed by the new CI job
+
+- GHA: spellcheck
+
+  This spellchecker checks markdown files. For this reason this job
+  converts all man pages in the repository to markdown with pandoc before
+  the check runs.
+
+  The perl script 'cleanspell' filters out details from the man page in
+  the process, to avoid the spellchecker trying to spellcheck things it
+  can't. Like curl specific symbols and the SYNOPSIS and EXAMPLE sections
+  of libcurl man pages.
+
+  The spell checker does not check words in sections that are within pre,
+  strong and em tags.
+
+  'spellcheck.words' is a custom word list with additional accepted words.
+
+  Closes #9523
+
+- connect: fix the wrong error message on connect failures
+
+  The "Failed to connect to" message after a connection failure would
+  include the strerror message based on the presumed previous socket
+  error, but in times it seems that error number is not set when reaching
+  this code and therefore it would include the wrong error message.
+
+  The strerror message is now removed from here and the curl_easy_strerror
+  error is used instead.
+
+  Reported-by: Edoardo Lolletti
+  Fixes #9549
+  Closes #9554
+
+- httpput-postfields.c: shorten string for C89 compliance
+
+  httpput-postfields.c:41:3: error: string length ‘522’ is greater than the length ‘509’ ISO C90 compilers are required to support [-Woverlength-strings]
+     41 |   "this chapter.";
+        |   ^~~~~~~~~~~~~~~
+
+  Closes #9555
+
+- ws: fix a C89 compliance nit
+
+  Closes #9541
+
+- [Patrick Monnerat brought this change]
+
+  unit test 1655: make it C89-compliant
+
+  Initializations performed in unit test 1655 use automatic variables in
+  aggregates and thus can only be computed at run-time. Using gcc in C89
+  dialect mode produces warning messages like:
+
+  unit1655.c:96:7: warning: initializer element is not computable at load time [-Wpedantic]
+     96 |     { toolong, DOH_DNS_NAME_TOO_LONG },  /* expect early failure */
+        |       ^~~~~~~
+
+  Fix the problem by converting these automatic pointer variables to
+  static arrays.
+
+  Closes #9551
+
+- [Tobias Schaefer brought this change]
+
+  curl_strequal.3: fix typo
+
+  Closes #9548
+
+- [Dmitry Karpov brought this change]
+
+  resolve: make forced IPv4 resolve only use A queries
+
+  This protects IPv4-only transfers from undesired bad IPv6-related side
+  effects and make IPv4 transfers in dual-stack libcurl behave the same
+  way as in IPv4 single-stack libcurl.
+
+  Closes #9540
+
+- RELEASE-NOTES: synced
+
+- winbuild/MakefileBuild.vc: handle spaces in libssh(2) include paths
+
+  Patched-by: Mark Itzcovitz
+  Bug: https://curl.se/mail/lib-2022-09/0038.html
+
+  Closes #9536
+
+- TODO: Reduce CA certificate bundle reparsing
+
+  By adding some sort of cache.
+
+  Reported-by: Michael Drake
+  Closes #9379
+  Closes #9538
+
+Marc Hoersken (19 Sep 2022)
+- CI/GHA: cancel outdated CI runs on new PR changes
+
+  Avoid letting outdated CI runs continue if a PR receives
+  new changes. Outside a PR we let them continue running
+  by tying the concurrency to the commit hash instead.
+
+  Also only let one CodeQL or Hacktoberfest job run at a time.
+
+  Other CI platforms we use have this build in, but GitHub
+  unfortunately neither by default nor with a simple option.
+
+  This saves CI resources and therefore a little energy.
+
+  Approved-by: Daniel Stenberg
+  Approved-by: Max Dymond
+  Closes #9533
+
+Daniel Stenberg (19 Sep 2022)
+- docs: fix proselint complaints
+
+- GHA: run proselint on markdown files
+
+  Co-authored-by: Marc Hörsken
+
+  Closes #9520
+
+- lib: the number four in a sequence is the "fourth"
+
+  Spelling is hard
+
+  Closes #9535
+
+- [John Bampton brought this change]
+
+  misc: fix spelling in two source files
+
+  Closes #9529
+
+Viktor Szakats (18 Sep 2022)
+- windows: add .rc support to autotools builds
+
+  After this update autotools builds will compile and link `.rc` resources
+  to Windows executables. Bringing this feature on par with CMake and
+  Makefile.m32 builds. And also making it unnecessary to improvise these
+  steps manually, while monkey patching build files, e.g. [0].
+
+  You can customize the resource compiler via the `RC` envvar, and its
+  options via `RCFLAGS`.
+
+  This harmless warning may appear throughout the build, even though the
+  autotools manual documents [1] `RC` as a valid tag, and it fails when
+  omitting one:
+  `libtool:   error: ignoring unknown tag RC`
+
+  [0] https://github.com/curl/curl-for-win/blob/535f19060d4b708f72e75dd849409ce50baa1b84/curl-autotools.sh#L376-L382
+  [1] https://www.gnu.org/software/libtool/manual/html_node/Tags.html
+
+  Closes #9521
+
+Marc Hoersken (18 Sep 2022)
+- CI/linkcheck: only run if a Markdown file is changed
+
+  This saves CI resources and therefore a little energy.
+
+  Reviewed-by: Max Dymond
+  Closes #9531
+
+- README.md: add GHA status badges for Linux and macOS builds
+
+  This makes sense now that Linux builds are being consolidated.
+
+  Approved-by: Daniel Stenberg
+  Closes #9530
+
+  [skip ci]
+
+Daniel Stenberg (17 Sep 2022)
+- misc: null-terminate
+
+  Make use of this term consistently.
+
+  Closes #9527
+
+Marc Hoersken (17 Sep 2022)
+- CI/GHA: merge intel CC and more TLS libs into linux workflow
+
+  Continue work on merging all Linux workflows into one file.
+
+  Reviewed-by: Max Dymond
+  Follow up to #9501
+  Closes #9514
+
+Daniel Stenberg (17 Sep 2022)
+- [Patrick Monnerat brought this change]
+
+  lib1597: make it C89-compliant again
+
+  Automatic variable addresses cannot be used in an initialisation
+  aggregate.
+
+  Follow-up to 9d51329
+
+  Reported-by: Daniel Stenberg
+  Fixes: #9524
+  Closes #9525
+
+- tool_libinfo: silence "different 'const' qualifiers" in qsort()
+
+  MSVC 15.0.30729.1 warned about it
+
+  Follow-up to dd2a024323dcc
+
+  Closes #9522
+
+- [Patrick Monnerat brought this change]
+
+  docs: tell about disabled protocols in CURLOPT_*PROTOCOLS_STR.
+
+  Disabled protocols are now handled as if they were unknown.
+  Also update the possible protocol list.
+
+- [Patrick Monnerat brought this change]
+
+  cli tool: do not use disabled protocols
+
+  As they are now rejected by the library, take care of not passing
+  disabled protocol names to CURLOPT_PROTOCOLS_STR and
+  CURLOPT_REDIR_PROTOCOLS_STR.
+
+  Rather than using the CURLPROTO_* constants, dynamically assign protocol
+  numbers based on the order they are listed by curl_version_info().
+
+  New type proto_set_t implements prototype bit masks: it should therefore
+  be large enough to accomodate all library-enabled protocols. If not,
+  protocol numbers beyond the bit count of proto_set_t are recognized but
+  "inaccessible": when used, a warning is displayed and the value is
+  ignored. Should proto_set_t overflows, enabled protocols are reordered to
+  force those having a public CURLPROTO_* representation to be accessible.
+
+  Code has been added to subordinate RTMP?* protocols to the presence of
+  RTMP in the enabled protocol list, being returned by curl_version_info()
+  or not.
+
+- [Patrick Monnerat brought this change]
+
+  setopt: use the handler table for protocol name to number conversions
+
+  This also returns error CURLE_UNSUPPORTED_PROTOCOL rather than
+  CURLE_BAD_FUNCTION_ARGUMENT when a listed protocol name is not found.
+
+  A new schemelen parameter is added to Curl_builtin_scheme() to support
+  this extended use.
+
+  Note that disabled protocols are not recognized anymore.
+
+  Tests adapted accordingly.
+
+  Closes #9472
+
+- altsvc: use 'h3' for h3
+
+  Since the official and real version has been out for a while now and servers
+  are deployed out there using it, there is no point in sticking to h3-29.
+
+  Reported-by: ウさん
+  Fixes #9515
+  Closes #9516
+
+Jay Satiro (16 Sep 2022)
+- [chemodax brought this change]
+
+  winbuild: Use NMake batch-rules for compilation
+
+  - Invoke cl compiler once for each group of .c files.
+
+  This is significantly improves compilation time. For example in my
+  environment: 40 s --> 20 s.
+
+  Prior to this change cl was invoked per .c file.
+
+  Closes https://github.com/curl/curl/pull/9512
+
+Daniel Stenberg (16 Sep 2022)
+- ws: the infof() flags should be %zu
+
+  Follow-up to e5e9e0c5e49ae0
+
+  Closes #9518
+
+- curl: warn for --ssl use, considered insecure
+
+  Closes #9519
+
+- [Sergey Bronnikov brought this change]
+
+  curl_escape.3: fix typo
+
+  lengthf -> length
+
+  Closes #9517
+
+- mailmap: merge Philip Heiduck's two addresses into one
+
+- test1948: verify PUT + POST reusing the same handle
+
+  Reproduced #9507, verifies the fix
+
+- setopt: when POST is set, reset the 'upload' field
+
+  Reported-by: RobBotic1 on github
+  Fixes #9507
+  Closes #9511
+
+Marc Hoersken (15 Sep 2022)
+- github: initial CODEOWNERS setup for CI configuration
+
+  Reviewed-by: Daniel Stenberg
+  Reviewed-by: Marcel Raad
+  Reviewed-by: Max Dymond
+
+  Closes #9505
+
+  [skip ci]
+
+- [Philip Heiduck brought this change]
+
+  CI: optimize some more dependencies install
+
+  Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan>
+
+  Closes #9500
+
+- CI/GHA: merge event-based and NSS into new linux workflow
+
+  Continue work on merging all Linux workflows into one file.
+
+  Follow up to #9501
+  Closes #9506
+
+Daniel Stenberg (15 Sep 2022)
+- include/curl/websockets.h: add extern "C" for C++
+
+  Reported-by: n0name321 on github
+  Fixes #9509
+  Closes #9510
+
+- lib1560: extended to verify detect/reject of unknown schemes
+
+  ... when no guessing is allowed.
+
+- urlapi: detect scheme better when not guessing
+
+  When the parser is not allowed to guess scheme, it should consider the
+  word ending at the first colon to be the scheme, independently of number
+  of slashes.
+
+  The parser now checks that the scheme is known before it counts slashes,
+  to improve the error messge for URLs with unknown schemes and maybe no
+  slashes.
+
+  When following redirects, no scheme guessing is allowed and therefore
+  this change effectively prevents redirects to unknown schemes such as
+  "data".
+
+  Fixes #9503
+
+- strerror: improve two URL API error messages
+
+Marc Hoersken (14 Sep 2022)
+- CI/GHA: merge bearssl and hyper into initial linux workflow
+
+  Begin work on merging all Linux workflows into one file.
+
+  Closes #9501
+
+Daniel Stenberg (14 Sep 2022)
+- RELEASE-NOTES: synced
+
+- cmake: define BUILDING_LIBCURL in lib/CMakeLists, not config.h
+
+  Since the config file might also get included by the tool code at times.
+  This syncs with how other builds do it.
+
+  Closes #9498
+
+- tool_hugehelp: make hugehelp a blank macro when disabled
+
+  Closes #9485
+
+- getparameter: return PARAM_MANUAL_REQUESTED for -M even when disabled
+
+  ... to improve the output in this situation. Now it doesn't say "option
+  unknown" anymore.
+
+  Closes #9485
+
+- setopt: fix compiler warning
+
+  Follow-up to cd5ca80f00d2
+
+  closes #9502
+
+- [Philip Heiduck brought this change]
+
+  CI: skip make, do make install at once for dependencies
+
+  Signed-off-by: Philip Heiduck <pheiduck@Philips-MBP.lan>
+
+  Closes #9477
+
+- formdata: typecast the va_arg return value
+
+  To avoid "enumerated type mixed with another type" warnings
+
+  Follow-up from 0f52dd5fd5aa3592691a
+
+  Closes #9499
+
+- RELEASE-PROCEDURE.md: mention patch releases
+
+  - When to make them and how to argue for them
+  - Refreshed the release date list
+
+  Closes #9495
+
+- urldata: use a curl_prot_t type for storing protocol bits
+
+  This internal-use-only storage type can be bumped to a curl_off_t once
+  we need to use bit 32 as the previous 'unsigned int' can no longer hold
+  them all then.
+
+  The websocket protocols take bit 30 and 31 so they are the last ones
+  that fit within 32 bits - but cannot properly be exported through APIs
+  since those use *signed* 32 bit types (long) in places.
+
+  Closes #9481
+
+- [zhanghu on xiaomi brought this change]
+
+  formdata: fix warning: 'CURLformoption' is promoted to 'int'
+
+  curl/lib/formdata.c: In function 'FormAdd':
+  curl/lib/formdata.c:249:31: warning: 'CURLformoption' is promoted to 'int' when passed through '...'
+    249 |       option = va_arg(params, CURLformoption);
+        |                               ^
+  curl/lib/formdata.c:249:31: note: (so you should pass 'int' not 'CURLformoption' to 'va_arg')
+  curl/lib/formdata.c:249:31: note: if this code is reached, the program will abort
+
+  Closes #9484
+
+- CURLOPT_CONNECT_ONLY.3: for ws(s) as well
+
+  and correct the version number for when that support comes. Even if it
+  is still experimental for WebSocket.
+
+  Closes #9487
+
+- tool_operate: avoid a few #ifdefs for disabled-libcurl builds
+
+  By providing empty macros in the header file instead, the code gets
+  easier to read and yet is disabled on demand.
+
+  Closes #9486
+
+- [a1346054 on github brought this change]
+
+  scripts: use `grep -E` instead of `egrep`
+
+  egrep is deprecated
+
+  Closes #9491
+
+- [Hayden Roche brought this change]
+
+  wolfSSL: fix session management bug.
+
+  Prior to this commit, non-persistent pointers were being used to store
+  sessions.  When a WOLFSSL object was then freed, that freed the session
+  it owned, and thus invalidated the pointer held in curl's cache. This
+  commit makes it so we get a persistent (deep copied) session pointer
+  that we then add to the cache.  Accordingly, wolfssl_session_free, which
+  was previously a no-op, now needs to actually call SSL_SESSION_free.
+
+  This bug was discovered by a wolfSSL customer.
+
+  Closes #9492
+
+- docs: use "WebSocket" in singular
+
+  This is how the RFC calls the protocol. Also rename the file in docs/ to
+  WEBSOCKET.md in uppercase to match how we have done it for many other
+  protocol docs in similar fashion.
+
+  Add the WebSocket docs to the tarball.
+
+  Closes #9496
+
+Marcel Raad (12 Sep 2022)
+- ws: fix build without `USE_WEBSOCKETS`
+
+  The curl.h include is required unconditionally.
+
+- ws: add missing curl.h include
+
+  A conflict between commits 664249d0952 and e5839f4ee70 broke the build.
+
+Daniel Stenberg (12 Sep 2022)
+- ws: fix an infof() call to use %uz for size_t output
+
+  Detected by Coverity, CID 1514665.
+
+  Closes #9480
+
+Marcel Raad (12 Sep 2022)
+- curl_setup: include only system.h instead of curl.h
+
+  As done before commit 9506d01ee50.
+
+  Ref: https://github.com/curl/curl/pull/9375#discussion_r957010158
+  Closes https://github.com/curl/curl/pull/9453
+
+- lib: add missing limits.h includes
+
+  Closes https://github.com/curl/curl/pull/9453
+
+- lib and tests: add missing curl.h includes
+
+  Closes https://github.com/curl/curl/pull/9453
+
+- curl_setup: include curl.h after platform setup headers
+
+  The platform setup headers might set definitions required for the
+  includes in curl.h.
+
+  Ref: https://github.com/curl/curl/pull/9375#discussion_r956998269
+  Closes https://github.com/curl/curl/pull/9453
+
+Daniel Stenberg (12 Sep 2022)
+- [Benjamin Loison brought this change]
+
+  docs: correct missing uppercase in Markdown files
+
+  To detect these typos I used:
+
+  ```
+  clear && grep -rn '\. [a-z]' . | uniq | grep -v '\. lib' | grep -v '[0-9]\. [a-z]' | grep -v '\.\. [a-z]' | grep -v '\. curl' | grep -v 'e.g. [a-z]' | grep -v 'eg. [a-z]' | grep -v '\etc. [a-z]' | grep -v 'i.e\. [a-z]' | grep --color=always '\. [a-z]' | grep '\.md'
+  ```
+
+  Closes #9474
+
+- tool_setopt: use better English in --libcurl source comments
+
+  Like this:
+
+    XYZ was set to an object pointer
+    ABC was set to a function pointer
+
+  Closes #9475
+
+- setopt: make protocol2num use a curl_off_t for the protocol bit
+
+  ... since WSS does not fit within 32 bit.
+
+  Bug: https://github.com/curl/curl/pull/9467#issuecomment-1243014887
+  Closes #9476
+
+- RELEASE-NOTES: synced
+
+- configure: polish the grep -E message a bit further
+
+  Suggested-by: Emanuele Torre
+  Closes #9473
+
+- GHA: add a gcc-11 -O3 build using OpenSSL
+
+  Since -O3 might trigger other warnings
+
+  Closes #9454
+
+- [Patrick Monnerat brought this change]
+
+  content_encoding: use writer struct subclasses for different encodings
+
+  The variable-sized encoding-specific storage of a struct contenc_writer
+  currently relies on void * alignment that may be insufficient with
+  regards to the specific storage fields, although having not caused any
+  problems yet.
+
+  In addition, gcc 11.3 issues a warning on access to fields of partially
+  allocated structures that can occur when the specific storage size is 0:
+
+    content_encoding.c: In function ‘Curl_build_unencoding_stack’:
+    content_encoding.c:980:21: warning: array subscript ‘struct contenc_writer[0]’ is partly outside array bounds of ‘unsigned char[16]’ [-Warray-bounds]
+      980 |     writer->handler = handler;
+          |     ~~~~~~~~~~~~~~~~^~~~~~~~~
+    In file included from content_encoding.c:49:
+    memdebug.h:115:29: note: referencing an object of size 16 allocated by ‘curl_dbg_calloc’
+      115 | #define calloc(nbelem,size) curl_dbg_calloc(nbelem, size, __LINE__, __FILE__)
+          |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    content_encoding.c:977:60: note: in expansion of macro ‘calloc’
+      977 |   struct contenc_writer *writer = (struct contenc_writer *)calloc(1, sz);
+
+  To solve both these problems, the current commit replaces the
+  contenc_writer/params structure pairs by "subclasses" of struct
+  contenc_writer. These are structures that contain a contenc_writer at
+  offset 0. Proper field alignment is therefore handled by the compiler and
+  full structure allocation is performed, silencing the warnings.
+
+  Closes #9455
+
+- configure: correct the wording when checking grep -E
+
+  The check first checks that grep -E works, and only as a fallback tries
+  to find and use egrep. egrep is deprecated.
+
+  This change only corrects the output wording, not the checks themselves.
+
+  Closes #9471
+
+Viktor Szakats (10 Sep 2022)
+- websockets: sync prototypes in docs with implementation [ci skip]
+
+  Docs for the new send/recv functions synced with the committed versions
+  of these.
+
+  Closes #9470
+
+Daniel Stenberg (10 Sep 2022)
+- setopt: make protocols2num() work with websockets
+
+  So that CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR can
+  specify those as well.
+
+  Reported-by: Patrick Monnerat
+  Bug: https://curl.se/mail/lib-2022-09/0016.html
+  Closes #9467
+
+- curl/websockets.h: remove leftover bad typedef
+
+  Just a leftover trace of a development thing that did not stay like
+  that.
+
+  Reported-by: Marc Hörsken
+  Fixes #9465
+  Cloes #9466
+
+Marcel Raad (10 Sep 2022)
+- [Orgad Shaneh brought this change]
+
+  fix Cygwin/MSYS compilation
+
+  _getpid is Windows API. On Cygwin variants it should remain getpid.
+
+  Fixes #8220
+  Closes #9255
+
+Marc Hoersken (10 Sep 2022)
+- GHA: prepare workflow merge by aligning structure again
+
+  Closes #9413
+
+Daniel Stenberg (9 Sep 2022)
+- docs: the websockets symbols are added in 7.86.0
+
+  Nothing else
+
+  Closes #9459
+
+- tests/libtest/Makefile.inc: fixup merge conflict mistake
+
+- EXPERIMENTAL.md: add WebSockets
+
+- appveyor: enable websockets
+
+- cirrus: enable websockets in the windows builds
+
+- GHA: add websockets to macos, openssl3 and hyper builds
+
+- tests: add websockets tests
+
+   - add websockets support to sws
+   - 2300: first very basic websockets test
+   - 2301: first libcurl test for ws (not working yet)
+   - 2302: use the ws callback
+   - 2303: test refused upgrade
+
+- curl_ws_meta: initial implementation
+
+- curl_ws_meta.3: added docs
+
+- ws: initial websockets support
+
+  Closes #8995
+
+- version: add ws + wss
+
+- libtest/lib1560: test basic websocket URL parsing
+
+- configure: add --enable-websockets
+
+- docs/WebSockets.md: docs
+
+- test415: verify Content-Length parser with control code + negative value
+
+- strtoofft: after space, there cannot be a control code
+
+  With the change from ISSPACE() to ISBLANK() this function no longer
+  deals with (ignores) control codes the same way, which could lead to
+  this function returning unexpected values like in the case of
+  "Content-Length: \r-12354".
+
+  Follow-up to 6f9fb7ec2d7cb389a0da5
+
+  Detected by OSS-fuzz
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=51140
+  Assisted-by: Max Dymond
+  Closes #9458
+
+- headers: reset the requests counter at transfer start
+
+  If not, reusing an easy handle to do a subsequent transfer would
+  continue the counter from the previous invoke, which then would make use
+  of the header API difficult/impossible as the request counter
+  mismatched.
+
+  Add libtest 1947 to verify.
+
+  Reported-by: Andrew Lambert
+  Fixes #9424
+  Closes #9447
+
+Jay Satiro (8 Sep 2022)
+- header: define public API functions as extern c
+
+  Prior to this change linker errors would occur if curl_easy_header or
+  curl_easy_nextheader was called from a C++ unit.
+
+  Bug: https://github.com/curl/curl/issues/9424#issuecomment-1238818007
+  Reported-by: Andrew Lambert
+
+  Closes https://github.com/curl/curl/pull/9446
+
+Daniel Stenberg (8 Sep 2022)
+- http2: make nghttp2 less picky about field whitespace
+
+  In nghttp2 1.49.0 it returns error on leading and trailing whitespace in
+  header fields according to language in the recently shipped RFC 9113.
+
+  nghttp2 1.50.0 introduces an option to switch off this strict check and
+  this change enables this option by default which should make curl behave
+  more similar to how it did with nghttp2 1.48.0 and earlier.
+
+  We might want to consider making this an option in the future.
+
+  Closes #9448
+
+- RELEASE-NOTES: synced
+
+  And bump to 7.86.0 for the pending next release
+
+- [Michael Heimpold brought this change]
+
+  ftp: ignore a 550 response to MDTM
+
+  The 550 is overused as a return code for multiple error case, e.g.
+  file not found and/or insufficient permissions to access the file.
+
+  So we cannot fail hard in this case.
+
+  Adjust test 511 since we now fail later.
+  Add new test 3027 which check that when MDTM failed, but the file could
+  actually be retrieved, that in this case no filetime is provided.
+
+  Reported-by: Michael Heimpold
+  Fixes #9357
+  Closes #9387
+
+- urlapi: leaner with fewer allocs
+
+  Slightly faster with more robust code. Uses fewer and smaller mallocs.
+
+  - remove two fields from the URL handle struct
+  - reduce copies and allocs
+  - use dynbuf buffers more instead of custom malloc + copies
+  - uses dynbuf to build the host name in reduces serial alloc+free within
+    the same function.
+  - move dedotdotify into urlapi.c and make it static, not strdup the input
+    and optimize it by checking for . and / before using strncmp
+  - remove a few strlen() calls
+  - add Curl_dyn_setlen() that can "trim" an existing dynbuf
+
+  Closes #9408
+
+Jay Satiro (7 Sep 2022)
+- setup-win32: no longer define UNICODE/_UNICODE implicitly
+
+  - If UNICODE or _UNICODE is defined but the other isn't then error
+    instead of implicitly defining it.
+
+  As Marcel pointed out it is too late at this point to make such a define
+  because Windows headers may already be included, so likely it never
+  worked. We never noticed because build systems that can make Windows
+  Unicode builds always define both. If one is defined but not the other
+  then something went wrong during the build configuration.
+
+  Bug: https://github.com/curl/curl/pull/9375#discussion_r956545272
+  Reported-by: Marcel Raad
+
+  Closes https://github.com/curl/curl/pull/9384
+
+Dan Fandrich (6 Sep 2022)
+- tests: fix tag syntax errors in test files
+
+Marc Hoersken (6 Sep 2022)
+- lib: add required Win32 setup definitions in setup-win32.h
+
+  Assisted-by: Jay Satiro
+  Reviewed-by: Marcel Raad
+
+  Follow up to #9312
+  Closes #9375
+
+Daniel Stenberg (6 Sep 2022)
+- pingpong: extend the response reading error with errno
+
+  To help diagnosing the cause of the problem.
+
+  See #9380
+  Closes #9443
+
+- curl-compilers.m4: use -O2 as default optimize for clang
+
+  Not -Os
+
+  Closes #9444
+
+- tool_operate: fix msnprintfing the error message
+
+  Follow-up to 7be53774c41c59b47075fba
+
+  Coverity CID 1513717 pointed out that we cannot use sizeof() on the
+  error buffer anymore.
+
+  Closes #9440
+
+- [Emanuele Torre brought this change]
+
+  curl_ctype: add space around <= operator in ISSPACE macro
+
+  Follow-up to f65f750
+
+  Closes #9441
+
+- CURLOPT_PROXY_SSLCERT_BLOB.3: this is for HTTPS proxies
+
+  The 'protocols' listed were previously wrong.
+
+  Reported-by: ProceduralMan on github
+  Fixes #9434
+  Closes #9435
+
+- curl_ctype: convert to macros-only
+
+  This no longer provide functions, only macros. Runs faster and produces
+  smaller output.
+
+  The biggest precaution this change brings:
+
+  DO NOT use post/pre-increments when passing arguments to the macros.
+
+  Closes #9429
+
+- misc: ISSPACE() => ISBLANK()
+
+  Instances of ISSPACE() use that should rather use ISBLANK(). I think
+  somewhat carelessly used because it sounds as if it checks for space or
+  whitespace, but also includes %0a to %0d.
+
+  For parsing purposes, we should only accept what we must and not be
+  overly liberal. It leads to surprises and surprises lead to bad things.
+
+  Closes #9432
+
+- ctype: remove all use of <ctype.h>, use our own versions
+
+  Except in the test servers.
+
+  Closes #9433
+
+Marc Hoersken (5 Sep 2022)
+- cmake: skip superfluous hex2dec conversion using math expr
+
+  CMake seems to be able to compare two hex values just fine.
+  Also make sure CURL_TARGET_WINDOWS_VERSION is respected.
+
+  Assisted-by: Marcel Raad
+  Reviewed-by: Viktor Szakats
+  Reported-by: Keitagit-kun on github
+
+  Follow up to #9312
+  Fixes #9406
+  Closes #9411
+
+Daniel Stenberg (5 Sep 2022)
+- curl_easy_pause.3: unpausing is as fast as possible
+
+  Reported-by: ssdbest on github
+  Fixes #9410
+  Closes #9430
+
+- CURLOPT_DNS_INTERFACE.3: mention it works for almost all protocols
+
+  Except file.
+
+  Reported-by: ProceduralMan on github
+  Fixes #9427
+  Closes #9428
+
+- NPN: remove support for and use of
+
+  Next Protocol Negotiation is a TLS extension that was created and used
+  for agreeing to use the SPDY protocol (the precursor to HTTP/2) for
+  HTTPS. In the early days of HTTP/2, before the spec was finalized and
+  shipped, the protocol could be enabled using this extension with some
+  servers.
+
+  curl supports the NPN extension with some TLS backends since then, with
+  a command line option `--npn` and in libcurl with
+  `CURLOPT_SSL_ENABLE_NPN`.
+
+  HTTP/2 proper is made to use the ALPN (Application-Layer Protocol
+  Negotiation) extension and the NPN extension has no purposes
+  anymore. The HTTP/2 spec was published in May 2015.
+
+  Today, use of NPN in the wild should be extremely rare and most likely
+  totally extinct. Chrome removed NPN support in Chrome 51, shipped in
+  June 2016. Removed in Firefox 53, April 2017.
+
+  Closes #9307
+
+- RELEASE-NOTES: synced
+
+  and bump the tentative next release version to 7.85.1
+
+- [Samuel Henrique brought this change]
+
+  configure: fail if '--without-ssl' + explicit parameter for an ssl lib
+
+  A side effect of a previous change to configure (576e507c78bdd2ec88)
+  exposed a non-critical issue that can happen if configure is called with
+  both '--without-ssl' and some parameter setting the use of a ssl library
+  (e.g. --with-gnutls). The configure script would end up assuming this is
+  a MultiSSL build, due to the way the case statement is written.
+
+  I have changed the order of the variables in the string concatenation
+  for the case statement and also tweaked the options so that
+  --without-ssl never turns the build into a MultiSSL one and also clearly
+  stating that there are conflicting parameters if the user sets it like
+  described above.
+
+  Closes #9414
+
+- tests/certs/scripts: insert standard curl source headers
+
+  ... including the SPDX-License-Identifier.
+
+  These omissions were not detected by the RUEUSE CI job nor the copyright.pl
+  scanners because we have a general wildcard in .reuse/dep5 for
+  "tests/certs/*".
+
+  Reported-by: Samuel Henrique
+  Fixes #9417
+  Closes #9420
+
+- [Samuel Henrique brought this change]
+
+  docs: remove mentions of deprecated '--without-openssl' config parameter
+
+  Closes #9415
+
+- [Samuel Henrique brought this change]
+
+  manpages: Fix spelling of "allows to" -> "allows one to"
+
+   References:
+   https://salsa.debian.org/lintian/lintian/-/blob/master/tags/t/typo-in-manual-page.tag
+   https://english.stackexchange.com/questions/60271/grammatical-complements-for-allow/60285#60285
+
+  Closes #9419
+
+- [Samuel Henrique brought this change]
+
+  CURLOPT_WILDCARDMATCH.3: Fix backslash escaping under single quotes
+
+   Lintian (on Debian) has been complaining about this for a while but
+   I didn't bother initially as the groff parser that we use is not
+   affected by this.
+
+   But I have now noticed that the online manpage is affected by it:
+   https://curl.se/libcurl/c/CURLOPT_WILDCARDMATCH.html
+
+   (I'm using double quotes for quoting-only down below)
+
+   The section that should be parsed as "'\'" ends up being parsed as
+   "'´".
+
+   This is due to roffit not parsing "'\\'" correctly, which is fine
+   as the "correct" way of writing "'\'" is "'\e'" instead.
+
+   Note that this fix is not enough to fix the online manpage at
+   curl's website, as roffit seems to parse it wrongly either way.
+
+   My intent is to at least fix the manpage so that roffit can
+   be changed to parse "'\e'" correctly (although I suggest making
+   roffit parse both ways correctly, since that's what groff does).
+
+   More details at:
+   https://bugs.debian.org/966803
+   https://salsa.debian.org/lintian/lintian/-/blob/930b18e4b28b7540253f458ef42a884cca7965c3/tags/a/acute-accent-in-manual-page.tag
+
+  Closes #9418
+
+- tool_operate: reduce errorbuffer allocs
+
+  - parallel transfers: only alloc and keep errorbuffers in memory for
+    actual "live" transfers and not for the ones in the pending queue
+
+  - serial transfers: reuse the same fixed buffer for all transfers, not
+    allocated at all.
+
+  Closes #9394
+
+Viktor Szakats (31 Aug 2022)
+- misc: spelling fixes
+
+  Found using codespell 2.2.1.
+
+  Also delete the redundant protocol designator from an archive.org URL.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9403
+
+Daniel Stenberg (31 Aug 2022)
+- tool_progress: remove 'Qd' from the parallel progress bar
+
+  The "queued" value is no longer showing anything useful to the user. It
+  is an internal number of transfers waiting at that moment.
+
+  Closes #9389
+
+- tool_operate: prevent over-queuing in parallel mode
+
+  When doing a huge amount of parallel transfers, we must not add them to
+  the per_transfer list frivolously since they all use memory after all.
+  This was previous done without really considering millions or billions
+  of transfers. Massive parallelism would use a lot of memory for no good
+  purpose.
+
+  The queue is now limited to twice the paralleism number.
+
+  This makes the 'Qd' value in the parallel progress meter mostly useless
+  for users, but works for now for us as a debug display.
+
+  Reported-by: justchen1369 on github
+  Fixes #8933
+  Closes #9389
+
+Viktor Szakats (31 Aug 2022)
+- cmake: fix original MinGW builds
+
+  1. Re-enable `HAVE_GETADDRINFO` detection on Windows
+
+     Commit d08ee3c83d6bd416aef62ff844c98e47c4682429 (in 2013) added logic
+     that automatically assumed `getaddrinfo()` to be present for builds
+     with IPv6 enabled. As it turns out, certain toolchains (e.g. original
+     MinGW) by default target older Windows versions, and thus do not
+     support `getaddrinfo()` out of the box. The issue was masked for
+     a while by CMake builds forcing a newer Windows version, but that
+     logic got deleted in commit 8ba22ffb2030ed91312fc8634e29516cdf0a9761.
+     Since then, some CI builds started failing due to IPv6 enabled,
+     `HAVE_GETADDRINFO` set, but `getaddrinfo()` in fact missing.
+
+     It also turns out that IPv6 works without `getaddrinfo()` since commit
+     67a08dca27a6a07b36c7f97252e284ca957ff1a5 (from 2019, via #4662). So,
+     to resolve all this, we can now revert the initial commit, thus
+     restoring `getaddrinfo()` detection and support IPv6 regardless of its
+     outcome.
+
+     Reported-by: Daniel Stenberg
+
+  2. Omit `bcrypt` with original MinGW
+
+     Original (aka legacy/old) MinGW versions do not support `bcrypt`
+     (introduced with Vista). We already have logic to handle that in
+     `lib/rand.c` and autotools builds, where we do not call the
+     unsupported API and do not link `bcrypt`, respectively, when using
+     original MinGW.
+
+     This patch ports that logic to CMake, fixing the link error:
+     `c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot find -lbcrypt`
+
+     Ref: https://ci.appveyor.com/project/curlorg/curl/builds/44624888/job/40vle84cn4vle7s0#L508
+     Regression since 76172511e7adcf720f4c77bd91f49278300ec97e
+
+  Fixes #9214
+  Fixes #9393
+  Fixes #9395
+  Closes #9396
+
+Version 7.85.0 (31 Aug 2022)
+
+Daniel Stenberg (31 Aug 2022)
+- RELEASE-NOTES: synced
+
+  curl 7.85.0 release
+
+- THANKS: add contributors from the 7.85.0 release
+
+- getparam: correctly clean args
+
+  Follow-up to bf7e887b2442783ab52
+
+  The previous fix for #9128 was incomplete and caused #9397.
+
+  Fixes #9397
+  Closes #9399
+
+- zuul: remove the clang-tidy job
+
+  Turns out we don't see the warnings, but the warnings right now are
+  plain ridiculous and unhelpful so we can just as well just kill this
+  job.
+
+  Closes #9390
+
+- cmake: set feature PSL if present
+
+  ... make test 1014 pass when libpsl is used.
+
+  Closes #9391
+
+- lib530: simplify realloc failure exit path
+
+  To make code analyzers happier
+
+  Closes #9392
+
+- [Orgad Shaneh brought this change]
+
+  tests: add tests for netrc login/password combinations
+
+  Covers the following PRs:
+
+  - #9066
+  - #9247
+  - #9248
+
+  Closes #9256
+
+- [Orgad Shaneh brought this change]
+
+  url: really use the user provided in the url when netrc entry exists
+
+  If the user is specified as part of the URL, and the same user exists
+  in .netrc, Authorization header was not sent at all.
+
+  The user and password fields were assigned in conn->user and password
+  but the user was not assigned to data->state.aptr, which is the field
+  that is used in output_auth_headers and friends.
+
+  Fix by assigning the user also to aptr.
+
+  Amends commit d1237ac906ae7e3cd7a22c3a2d3a135a97edfbf5.
+
+  Fixes #9243
+
+- [Orgad Shaneh brought this change]
+
+  netrc: Use the password from lines without login
+
+  If netrc entry has password with empty login, use it for any username.
+
+  Example:
+  .netrc:
+  machine example.com password 123456
+
+  curl -vn http://user@example.com/
+
+  Fix it by initializing state_our_login to TRUE, and reset it only when
+  finding an entry with the same host and different login.
+
+  Closes #9248
+
+- [Jay Satiro brought this change]
+
+  url: treat missing usernames in netrc as empty
+
+  - If, after parsing netrc, there is a password with no username then
+    set a blank username.
+
+  This used to be the case prior to 7d600ad (precedes 7.82). Note
+  parseurlandfillconn already does the same thing for URLs.
+
+  Reported-by: Raivis <standsed@users.noreply.github.com>
+  Testing-by: Domen Kožar
+
+  Fixes https://github.com/curl/curl/issues/8653
+  Closes #9334
+  Closes #9066
+
+- test8: verify that "ctrl-byte cookies" are ignored
+
+- cookie: reject cookies with "control bytes"
+
+  Rejects 0x01 - 0x1f (except 0x09) plus 0x7f
+
+  Reported-by: Axel Chong
+
+  Bug: https://curl.se/docs/CVE-2022-35252.html
+
+  CVE-2022-35252
+
+  Closes #9381
+
+- libssh: ignore deprecation warnings
+
+  libssh 0.10.0 marks all SCP functions as "deprecated" which causes
+  compiler warnings and errors in our CI jobs and elsewhere. Ignore
+  deprecation warnings if 0.10.0 or later is found in the build.
+
+  If they actually remove the functions at a later point, then someone can
+  deal with that pain and functionality break then.
+
+  Fixes #9382
+  Closes #9383
+
+- Revert "schannel: when importing PFX, disable key persistence"
+
+  This reverts commit 70d010d285315e5f1cad6bdb4953e167b069b692.
+
+  Due to further reports in #9300 that indicate this commit might
+  introduce problems.
+
+- multi: use larger dns hash table for multi interface
+
+  Have curl_multi_init() use a much larger DNS hash table than used for
+  the easy interface to scale and perform better when used with _many_
+  host names.
+
+  curl_share_init() sets an in-between size.
+
+  Inspired-by: Ivan Tsybulin
+  See #9340
+  Closes #9376
+
+Marc Hoersken (28 Aug 2022)
+- CI/runtests.pl: add param for dedicated curl to talk to APIs
+
+  This should make it possible to also report test failures
+  if our freshly build curl binary is not fully functional.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9360
+
+Daniel Stenberg (27 Aug 2022)
+- [Jacob Tolar brought this change]
+
+  openssl: add cert path in error message
+
+  Closes #9349
+
+- [Jacob Tolar brought this change]
+
+  cert.d: clarify that escape character works for file paths
+
+  Closes #9349
+
+- gha: move over ngtcp2-gnutls CI job from zuul
+
+  Closes #9331
+
+Marc Hoersken (26 Aug 2022)
+- cmake: add detection of threadsafe feature
+
+  Avoids failing test 1014 by replicating configure checks
+  for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests.
+
+  Reviewed-by: Marcel Raad
+
+  Follow up to #8680
+  Closes #9312
+
+Daniel Stenberg (26 Aug 2022)
+- RELEASE-NOTES: synced
+
+Marc Hoersken (26 Aug 2022)
+- CI/azure: align torture shallowness with GHA
+
+  There 25 is used with FTP tests skipped, and 20 for FTP tests.
+  This should make torture tests stay within the 60min timeout.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9371
+
+- multi_wait: fix and improve Curl_poll error handling on Windows
+
+  First check for errors and return CURLM_UNRECOVERABLE_POLL
+  before moving forward and waiting on socket readiness events.
+
+  Reviewed-by: Jay Satiro
+  Reviewed-by: Marcel Raad
+
+  Reported-by: Daniel Stenberg
+  Ref: #9361
+
+  Follow up to #8961
+  Closes #9372
+
+- multi_wait: fix skipping to populate revents for extra_fds
+
+  On Windows revents was not populated for extra_fds if
+  multi_wait had to wait due to the Curl_poll pre-check
+  not signalling any readiness. This commit fixes that.
+
+  Reviewed-by: Marcel Raad
+  Reviewed-by: Jay Satiro
+
+  Closes #9361
+
+- CI/appveyor: disable TLS in msys2-native autotools builds
+
+  Schannel cannot be used from msys2-native Linux-emulated builds.
+
+  Reviewed-by: Marcel Raad
+  Reviewed-by: Daniel Stenberg
+
+  Follow up to #9367
+  Closes #9370
+
+Jay Satiro (25 Aug 2022)
+- tests: fix http2 tests to use CRLF headers
+
+  Prior to this change some tests that rely on nghttpx proxy did not use
+  CRLF headers everywhere. A recent change in nghttp2, which updated its
+  version of llhttp (HTTP parser), requires curl's HTTP/1.1 test server to
+  use CRLF headers.
+
+  Ref: https://github.com/nghttp2/nghttp2/commit/9d389e8
+
+  Fixes https://github.com/curl/curl/issues/9364
+  Closes https://github.com/curl/curl/pull/9365
+
+Daniel Stenberg (25 Aug 2022)
+- [rcombs brought this change]
+
+  multi: use a pipe instead of a socketpair on apple platforms
+
+  Sockets may be shut down by the kernel when the app is moved to the
+  background, but pipes are not.
+
+  Removed from KNOWN_BUGS
+
+  Fixes #6132
+  Closes #9368
+
+- [Somnath Kundu brought this change]
+
+  libssh2: provide symlink name in SFTP dir listing
+
+  When reading the symbolic link name for a file, we need to add the file
+  name to base path name.
+
+  Closes #9369
+
+- configure: if asked to use TLS, fail if no TLS lib was detected
+
+  Previously the configure script would just warn about this fact and
+  continue with TLS disabled build which is not always helpful. TLS should
+  be explicitly disabled if that is what the user wants.
+
+  Closes #9367
+
+- [Dustin Howett brought this change]
+
+  schannel: when importing PFX, disable key persistence
+
+  By default, the PFXImportCertStore API persists the key in the user's
+  key store (as though the certificate was being imported for permanent,
+  ongoing use.)
+
+  The documentation specifies that keys that are not to be persisted
+  should be imported with the flag `PKCS12_NO_PERSIST_KEY`.
+  NOTE: this flag is only supported on versions of Windows newer than XP
+  and Server 2003.
+
+  Fixes #9300
+  Closes #9363
+
+- unit1303: four tests should have TRUE for 'connecting'
+
+  To match the comments.
+
+  Reported-by: Wu Zheng
+
+  See #9355
+  Closes #9356
+
+- CURLOPT_BUFFERSIZE.3: add upload buffersize to see also
+
+  Closes #9354
+
+- [Fabian Fischer brought this change]
+
+  HTTP3.md: add missing autoreconf command for building with wolfssl
+
+  Closes #9353
+
+- RELEASE-NOTES: synced
+
+- multi: have curl_multi_remove_handle close CONNECT_ONLY transfer
+
+  Ẃhen it has been used in the multi interface, it is otherwise left in
+  the connection cache, can't be reused and nothing will close them since
+  the easy handle loses the association with the multi handle and thus the
+  connection cache - until the multi handle is closed or it gets pruned
+  because the cache is full.
+
+  Reported-by: Dominik Thalhammer
+  Fixes #9335
+  Closes #9342
+
+- docs/cmdline-opts: remove \& escapes from all .d files
+
+  gen.pl escapes them itself now
+
+- docs/cmdline-opts/gen.pl: encode leading single and double quotes
+
+  As "(aq" and "(dq" to prevent them from implying a meaning in the nroff
+  output. This removes the need for using \& escapes in the .d files'
+  description parts.
+
+  Closes #9352
+
+Marc Hoersken (23 Aug 2022)
+- tests/server/sockfilt.c: avoid race condition without a mutex
+
+  Avoid loosing any triggered handles by first aborting and joining
+  the waiting threads before evaluating the individual signal state.
+
+  This removes the race condition and therefore need for a mutex.
+
+  Closes #9023
+
+Daniel Stenberg (22 Aug 2022)
+- [Emil Engler brought this change]
+
+  url: output the maximum when rejecting a url
+
+  This commit changes the failf message to output the maximum length, when
+  curl refuses to process a URL because it is too long.
+
+  See: #9317
+  Closes: #9327
+
+- [Chris Paulson-Ellis brought this change]
+
+  configure: fix broken m4 syntax in TLS options
+
+  Commit b589696f added lines to some shell within AC_ARG_WITH macros, but
+  inadvertently failed to move the final closing ).
+
+  Quote the script section using braces.
+
+  So, if these problems have been around for a while, how did I find them?
+  Only because I did a configure including these options:
+
+      $ ./configure --with-openssl --without-rustls
+        SSL:              enabled (OpenSSL)
+
+  Closes #9344
+
+- tests/data/CMakeLists: remove making the 'show' makefile target
+
+  It is not used by runtests since 3c0f462
+
+  Closes #9333
+
+- tests/data/Makefile: remove 'filecheck' target
+
+  No practical use anymore since 3c0f4622cdfd6
+
+  Closes #9332
+
+- libssh2: make atime/mtime date overflow return error
+
+  Closes #9328
+
+- libssh: make atime/mtime date overflow return error
+
+  Closes #9328
+
+- examples/curlx.c: remove
+
+  This example is a bit convoluted to use as an example, combined with the
+  special license for it makes it unsuitable.
+
+  Closes #9330
+
+- [Tobias Nygren brought this change]
+
+  curl.h: include <sys/select.h> on SunOS
+
+  It is needed for fd_set to be visible to downstream consumers that use
+  <curl/multi.h>. Header is known to exist at least as far back as Solaris
+  2.6.
+
+  Closes #9329
+
+- DEPRECATE.md: push the NSS deprecation date forward one year to 2023
+
+  URL: https://curl.se/mail/lib-2022-08/0016.html
+
+- libssh2: setting atime or mtime >32bit on 4-bytes-long systems
+
+  Since the libssh2 API uses 'long' to store the timestamp, it cannot
+  transfer >32bit times on Windows and 32bit architecture builds.
+
+  Avoid nasty surprises by instead not setting such time.
+
+  Spotted by Coverity
+
+  Closes #9325
+
+- libssh: setting atime or mtime > 32bit is now just skipped
+
+  The libssh API used caps the time to an unsigned 32bit variable. Avoid
+  nasty surprises by instead not setting such time.
+
+  Spotted by Coverity.
+
+  Closes #9324
+
+Jay Satiro (16 Aug 2022)
+- KNOWN_BUGS: Windows Unicode builds use homedir in current locale
+
+  Bug: https://github.com/curl/curl/pull/7252
+  Reported-by: dEajL3kA@users.noreply.github.com
+
+  Ref: https://github.com/curl/curl/pull/7281
+
+  Closes https://github.com/curl/curl/pull/9305
+
+Daniel Stenberg (16 Aug 2022)
+- test399: switch it to use a config file instead
+
+  ... as using a 65535 bytes host name in a URL does not fit on the
+  command line on some systems - like Windows.
+
+  Reported-by: Marcel Raad
+  Fixes #9321
+  Closes #9322
+
+- RELEASE-NOTES: synced
+
+- asyn-ares: make a single alloc out of hostname + async data
+
+  This saves one alloc per name resolve and simplifies the exit path.
+
+  Closes #9310
+
+- Curl_close: call Curl_resolver_cancel to avoid memory-leak
+
+  There might be a pending (c-ares) resolve that isn't free'd up yet.
+
+  Closes #9310
+
+- asyn-thread: fix socket leak on OOM
+
+  Closes #9310
+
+- GHA: mv CI torture test from Zuul
+
+  Closes #9310
+
+- ngtcp2-wolfssl.yml: add GHA to build ngtcp2 + wolfSSL
+
+  Closes #9318
+
+- test399: verify check of too long host name
+
+- url: reject URLs with hostnames longer than 65535 bytes
+
+  It *probably* causes other problems too since DNS can't resolve such
+  long names, but the SNI field in TLS is limited to 16 bits length.
+
+  Closes #9317
+
+- curl_multi_perform.3: minor language fix
+
+  Closes #9316
+
+- ngtcp2: fix picky compiler warnings with wolfSSL for QUIC
+
+  Follow-up to 8a13be227eede2
+
+  Closes #9315
+
+- ngtcp2: remove leftover variable
+
+  Mistake leftover from my edit before push.
+
+  Follow-up from 8a13be227eede2601c2b3b
+  Reported-by: Viktor Szakats
+  Bug: https://github.com/curl/curl/pull/9290#issuecomment-1214569167
+
+Viktor Szakats (15 Aug 2022)
+- Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip]
+
+  Before this patch `-nghttp3`/`-ngtcp2` had an effect only when `-ssl`
+  was also enabled. `-ssl` meaning OpenSSL (and its forks). After
+  8a13be227eede2601c2b3b1c63e08b3dc9b35dd5 nghttp3/ngtcp2 can also be
+  used together with wolfSSL. This patch adds the ability to enable
+  `-nghttp3`/`-ngtcp2` independently from `-ssl` (OpenSSL), allowing to
+  use it with wolfSSL or other, future TLS backends.
+
+  Before this patch, it was fine to enable `-nghttp3`/`-ngtcp2`
+  unconditionally. After this patch, this is no longer the case, and now
+  it's the user's responsibility to enable `-nghttp3`/`-ngtcp2` only
+  together with a compatible TLS backend.
+
+  When using a TLS backend other than OpenSSL, the TLS-specific ngtcp2
+  library must be configured manually, e.g.:
+    `export CURL_LDFLAG_EXTRAS=-lngtcp2_crypto_wolfssl`
+
+  (or via `NGTCP2_LIBS`)
+
+  Closes #9314
+
+Daniel Stenberg (15 Aug 2022)
+- [Stefan Eissing brought this change]
+
+  quic: add support via wolfSSL
+
+  - based on ngtcp2 PR https://github.com/ngtcp2/ngtcp2/pull/505
+  - configure adapted to build against ngtcp2 wolfssl crypto lib
+  - quic code added for creation of WOLFSSL* instances
+
+  Closes #9290
+
+Marcel Raad (14 Aug 2022)
+- [David Carlier brought this change]
+
+  memdebug: add annotation attributes
+
+  memory debug tracking annotates whether the returned pointer does not
+  `alias`, hints where the size required is, for Windows to be better
+  debugged via Visual Studio.
+
+  Closes https://github.com/curl/curl/pull/9306
+
+Daniel Stenberg (14 Aug 2022)
+- GHA: move libressl CI from zuul to GitHub
+
+  Closes #9309
+
+- KNOWN_BUGS: FTPS directory listing hangs on Windows with Schannel
+
+  Closes #9161
+
+- KNOWN_BUGS: CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
+
+  Closes #8741
+
+- KNOWN_BUGS: libssh blocking and infinite loop problem
+
+  Closes #8632
+
+- RELEASE-NOTES: synced
+
+- msh3: fix the QUIC disconnect function
+
+  And free request related memory better in 'done'. Fixes a memory-leak.
+
+  Reported-by: Gisle Vanem
+  Fixes #8915
+  Closes #9304
+
+- connect: close the happy eyeballs loser connection when using QUIC
+
+  Reviewed-by: Nick Banks
+
+  Closes #9303
+
+- [Emil Engler brought this change]
+
+  refactor: split resolve_server() into functions
+
+  This commit splits the branch-heavy resolve_server() function into
+  various sub-functions, in order to reduce the amount of nested
+  if/else-statements.
+
+  Beside this, it also removes many else-sequences, by returning in the
+  previous if-statement.
+
+  Closes #9283
+
+- schannel: re-indent to use curl style better
+
+  Only white space changes
+
+  Closes #9301
+
+- [Emanuele Torre brought this change]
+
+  docs/cmdline-opts: fix example and categories for --form-escape
+
+  The example was missing a "--form" argument
+  I also replaced "--form" with "-F" to shorten the line a bit since it
+  was already very long.
+
+  And I also moved --form-escape from the "post" category to the "upload"
+  category (this is what I originally wanted to fix, before also noticing
+  the mistake in the example).
+
+  Closes #9298
+
+- [Nick Banks brought this change]
+
+  HTTP3.md: update to msh3 v0.4.0
+
+  Closes #9297
+
+- hostip: resolve *.localhost to 127.0.0.1/::1
+
+  Following the footsteps of other clients like Firefox/Chrome.  RFC 6761
+  says clients SHOULD do this.
+
+  Add test 389 to verify.
+
+  Reported-by: TheKnarf on github
+  Fixes #9192
+  Closes #9296
+
+Jay Satiro (11 Aug 2022)
+- KNOWN_BUGS: long paths are not fully supported on Windows
+
+  Bug: https://github.com/curl/curl/issues/8361
+  Reported-by: Gisle Vanem
+
+  Closes https://github.com/curl/curl/pull/9288
+
+Daniel Stenberg (11 Aug 2022)
+- config: remove the check for and use of SIZEOF_SHORT
+
+  shorts are 2 bytes on all platforms curl runs and have ever run on.
+
+  Closes #9291
+
+- configure: introduce CURL_SIZEOF
+
+  This is a rewrite of the previously used GPLv3+exception licensed
+  file. With this change, there is no more reference to GPL so we can
+  remove that from LICENSES/.
+
+  Ref: #9220
+  Closes #9291
+
+- [Sean McArthur brought this change]
+
+  hyper: customize test1274 to how hyper unfolds headers
+
+  Closes #9217
+
+- [Orgad Shaneh brought this change]
+
+  curl-config: quote directories with potential space
+
+  On Windows (at least with CMake), the default prefix is
+  C:/Program Files (x86)/CURL.
+
+  Closes #9253
+
+- [Oliver Roberts brought this change]
+
+  amigaos: fix threaded resolver on AmigaOS 4.x
+
+  Replace ip4 resolution function on AmigaOS 4.x, as it requires runtime
+  feature detection and extra code to make it thread safe.
+
+  Closes #9265
+
+- [Emil Engler brought this change]
+
+  imap: use ISALNUM() for alphanumeric checks
+
+  This commit replaces a self-made character check for alphanumeric
+  characters within imap_is_bchar() with the ISALNUM() macro, as it is
+  reduces the size of the code and makes the performance better, due to
+  ASCII arithmetic.
+
+  Closes #9289
+
+- RELEASE-NOTES: synced
+
+- [Cering on github brought this change]
+
+  connect: add quic connection information
+
+  Fixes #9286
+  Closes #9287
+
+- [Philip Heiduck brought this change]
+
+  cirrus/freebsd-ci: bootstrap the pip installer
+
+  Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+
+  Closes #9213
+
+- urldata: move smaller fields down in connectdata struct
+
+  By (almost) sorting the struct fields in connectdata in a decending size
+  order, having the single char ones last, we reduce the number of holes
+  in the struct and thus the amount of storage needed.
+
+  Closes #9280
+
+- ldap: adapt to conn->port now being an 'int'
+
+  Remove typecasts. Fix printf() formats.
+
+  Follow-up from 764c6bd3bf.
+  Pointed out by Coverity CID 1507858.
+
+  Closes #9281
+
+- KNOWN_BUGS: Negotiate authentication against Hadoop HDFS
+
+  Closes #8264
+
+- [Oliver Roberts brought this change]
+
+  file: add handling of native AmigaOS paths
+
+  On AmigaOS 4.x, handle native absolute paths, whilst blocking relative
+  paths. Also allow unix style paths if feature enabled at link time.
+
+  Inspiration-from: Michael Trebilcock
+
+  Closes #9259
+
+- KNOWN_BUGS: cmake build is not thread-safe
+
+  The cmake build does not check for and verify presence of a working
+  Atomic type, which then makes curl_global_init() to not build
+  thread-safe on non-Windows platforms.
+
+  Closes https://github.com/curl/curl/issues/8973
+  Closes https://github.com/curl/curl/pull/8982
+
+- [Oliver Roberts brought this change]
+
+  configure: fixup bsdsocket detection code for AmigaOS 4.x
+
+  The code that detects bsdsocket.library for AmigaOS did not work
+  for AmigaOS 4.x. This has been fixed and also cleaned up a little
+  to reduce duplication. Wasn't technically necessary before, but is
+  required when building with AmiSSL instead of OpenSSL.
+
+  Closes #9268
+
+- [Oliver Roberts brought this change]
+
+  tool: reintroduce set file comment code for AmigaOS
+
+  Amiga specific code which put the URL in the file comment was perhaps
+  accidentally removed in b88940850002a3f1c25bc6488b95ad30eb80d696 having
+  originally been added in 5c215bdbdfde8b2350cdcbac82aae0c914da5314.
+  Reworked to fit the code changes and added it back in.
+
+  Reported-by: Michael Trebilcock
+  Originally-added-by: Chris Young
+
+  Closes #9258
+
+- urldata: make 'negnpn' use less storage
+
+  The connectdata struct field 'negnpn' never holds a value larger than
+  30, so an unsigned char saves 3 bytes struct space.
+
+  Closes #9279
+
+- urldata: make three *_proto struct fields smaller
+
+  Use 'unsigned char' for storage instead of the enum, for three GSSAPI
+  related fields in the connectdata struct.
+
+  Closes #9278
+
+- connect: set socktype/protocol correctly
+
+  So that an address used from the DNS cache that was previously used for
+  QUIC can be reused for TCP and vice versa.
+
+  To make this possible, set conn->transport to "unix" for unix domain
+  connections ... and store the transport struct field in an unsigned char
+  to use less space.
+
+  Reported-by: ウさん
+  Fixes #9274
+  Closes #9276
+
+- [Oliver Roberts brought this change]
+
+  amissl: allow AmiSSL to be used with AmigaOS 4.x builds
+
+  Enable AmiSSL to be used instead of static OpenSSL link libraries.
+  for AmigaOS 4.x, as it already is in the AmigaOS 3.x build.
+
+  Closes #9269
+
+- [opensignature on github brought this change]
+
+  openssl: add details to "unable to set client certificate" error
+
+  from: "curl: (58) unable to set client certificate"
+
+  to: curl: (58) unable to set client certificate [error:0A00018F:SSL
+  routines::ee key too small]
+
+  Closes #9228
+
+- [Oliver Roberts brought this change]
+
+  amissl: make AmiSSL v5 a minimum requirement
+
+  AmiSSL v5 is the latest version, featuring a port of OpenSSL 3.0.
+  Support for previous OpenSSL 1.1.x versions has been dropped, so
+  makes sense to enforce v5 as the minimum requirement. This also
+  allows all the AmiSSL stub workarounds to be removed as they are
+  now provided in a link library in the AmiSSL SDK.
+
+  Closes #9267
+
+- [Oliver Roberts brought this change]
+
+  configure: -pthread not available on AmigaOS 4.x
+
+  The most recent GCC builds for AmigaOS 4.x do not allow -pthread and
+  exit with an error. Instead, need to explictly specify -lpthread.
+
+  Closes #9266
+
+- digest: pass over leading spaces in qop values
+
+  When parsing the "qop=" parameter of the digest authentication, and the
+  value is provided within quotes, the list of values can have leading
+  white space which the parser previously did not handle correctly.
+
+  Add test case 388 to verify.
+
+  Reported-by: vlubart on github
+  Fixes #9264
+  Closes #9270
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  digest: reject broken header with session protocol but without qop
+
+  Closes #9077
+
+- CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples
+
+  Reported-by: jvvprasad78 on github
+  Assisted-by: Jay Satiro
+  Fixes #9239
+  Closes #9241
+
+- [Fabian Keil brought this change]
+
+  test44[2-4]: add '--resolve' to the keywords
+
+  ... so the tests can be automatically skipped when
+  using an external proxy like Privoxy.
+
+  Closes #9250
+
+- RELEASE-NOTES: synced
+
+- CURLOPT_CONNECT_ONLY.3: clarify multi API use
+
+  Reported-by: Maxim Ivanov
+  Fixes #9244
+  Closes #9262
+
+- [Andrew Lambert brought this change]
+
+  curl_easy_header: Add CURLH_PSEUDO to sanity check
+
+  Fixes #9235
+  Closes #9236
+
+- [Emil Engler brought this change]
+
+  docs: add dns category to --resolve
+
+  This commit adds the dns category to the --resolve command line option,
+  because it can be interpreted as both: a low-level connection option and
+  an option related to the resolving of a hostname.
+
+  It is also not common for dns options to belong to the connection
+  category and vice versa.  --ipv4 and --ipv6 are both good examples.
+
+  Closes #9229
+
+Jay Satiro (2 Aug 2022)
+- [Wyatt O'Day brought this change]
+
+  schannel: Add TLS 1.3 support
+
+  - Support TLS 1.3 as the default max TLS version for Windows Server 2022
+    and Windows 11.
+
+  - Support specifying TLS 1.3 ciphers via existing option
+    CURLOPT_TLS13_CIPHERS (tool: --tls13-ciphers).
+
+  Closes https://github.com/curl/curl/pull/8419
+
+Daniel Stenberg (2 Aug 2022)
+- [Emil Engler brought this change]
+
+  cmdline-opts/gen.pl: improve performance
+
+  On some systems, the gen.pl script takes nearly two minutes for the
+  generation of the main-page, which is a completely unacceptable time.
+
+  The slow performance has two causes:
+  1. Use of a regex locale operator
+  2. Useless invokations of loops
+
+  The commit addresses the first issue by replacing the "\W" wiht
+  [^a-zA-Z0-9_], which is, according to regex101.com, functionally
+  equivalent to the previous operation, except that it is obviously
+  limited to ASCII only, which is fine, as the curl project is
+  English-only anyway.
+
+  The second issue is being addressed by only running the loop if the line
+  contains a "--" in it. The loop may be completeley removed in the
+  future.
+
+  Co-authored-by: Emanuele Torre <torreemanuele6@gmail.com>
+
+  See #8299
+  Fixes #9230
+  Closes #9232
+
+- docs/cmdline: mark fail and fail-with-body as mutually exclusive
+
+  Reported-by: Andreas Sommer
+  Fixes #9221
+  Closes #9222
+
+- [Nao Yonashiro brought this change]
+
+  quiche: fix build failure
+
+  Reviewed-by: Alessandro Ghedini
+  Closes #9223
+
+Viktor Szakats (2 Aug 2022)
+- configure.ac: drop references to deleted functions
+
+  follow-up from 4d73854462f30948acab12984b611e9e33ee41e6
+
+  Reported-by: Oliver Roberts
+  Fixes #9238
+  Closes #9240
+
+Daniel Stenberg (28 Jul 2022)
+- [Sean McArthur brought this change]
+
+  hyper: enable obs-folded multiline headers
+
+  Closes #9216
+
+- connect: revert the use of IP*_RECVERR
+
+  The options were added in #6341 and d13179d, but cause problems: Lots of
+  POLLIN event occurs but recvfrom read nothing.
+
+  Reported-by: Tatsuhiro Tsujikawa
+  Fixes #9209
+  Closes #9215
+
+- [Marco Kamner brought this change]
+
+  docs: remove him/her/he/she from documentation
+
+  Closes #9208
+
+- RELEASE-NOTES: synced
+
+- tool_getparam: make --doh-url "" switch it off
+
+  A possible future addition could be to parse the URL first too to verify
+  that it is valid before trying to use it.
+
+  Assisted-by: Jay Satiro
+  Closes #9207
+
+- mailmap: add rzrymiak on github
+
+Jay Satiro (26 Jul 2022)
+- ngtcp2: Fix build error due to change in nghttp3 prototypes
+
+  ngtcp2/nghttp3@4a066b2 changed nghttp3_conn_block_stream and
+  nghttp3_conn_shutdown_stream_write return from int to void.
+
+  Reported-by: jurisuk@users.noreply.github.com
+
+  Fixes https://github.com/curl/curl/issues/9204
+  Closes https://github.com/curl/curl/pull/9200
+
+Daniel Stenberg (26 Jul 2022)
+- [rzrymiak on github brought this change]
+
+  BUGS.md: improve language
+
+  Closes #9205
+
+- [Philip Heiduck brought this change]
+
+  cirrus.yml: replace py38-pip with py39-pip
+
+  Reported-by: Jay Satiro
+  Fixes #9201
+  Closes #9202
+
+- tool_getparam: fix cleanarg() for unicode builds
+
+  Use the correct type, and make cleanarg an empty macro if the cleaning
+  ability is absent.
+
+  Fixes #9195
+  Closes #9196
+
+  Reviewed-by: Jay Satiro
+  Reviewed-by: Marcel Raad
+
+Marc Hoersken (25 Jul 2022)
+- test3026: add support for Windows using native Win32 threads
+
+  Reviewed-by: Viktor Szakats
+  Reviewed-by: Jay Satiro
+  Reviewed-by: Daniel Stenberg
+
+  Follow up to 7ade9c50b35d95d47a43880c3097bebab7a7e690
+  Closes #9012
+
+Jay Satiro (25 Jul 2022)
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  digest: fix memory leak, fix not quoted 'opaque'
+
+  Fix leak regression introduced by 3a6fe0c.
+
+  Closes https://github.com/curl/curl/pull/9199
+
+Daniel Stenberg (23 Jul 2022)
+- tests: several enumerated type cleanups
+
+  To please icc
+
+  Closes #9179
+
+- tool_paramhlp: fix "enumerated type mixed with another type"
+
+  Warning by icc
+
+  Closes #9179
+
+- tool_writeout: fix enumerated type mixed with another type
+
+  Closes #9179
+
+- tool_cfgable: make 'synthetic_error' a plain bool
+
+  The specific reason was not used.
+
+  Closes #9179
+
+- tool_paramhlp: make check_protocol return ParameterError
+
+  "enumerated type mixed with another type"
+
+  Closes #9179
+
+- tool_formparse: fix variable may be used before its value is set
+
+  Warning by icc
+
+  Closes #9179
+
+- sendf: skip storing HTTP headers if HTTP disabled
+
+  Closes #9179
+
+- url: enumerated type mixed with another type
+
+  Follow-up to 1c58e7ae99ce2030213f28b
+
+  Closes #9179
+
+- urldata: change second proxytype field to unsigned char to match
+
+  To avoid "enumerated type mixed with another type"
+
+  Closes #9179
+
+- http: typecast the httpreq assignment to avoid icc compiler warning
+
+   error #188: enumerated type mixed with another type
+
+  Closes #9179
+
+- urldata: make state.httpreq an unsigned char
+
+  To match set.method used for the same purpose.
+
+  Closes #9179
+
+- splay: avoid using -1 in unsigned variable
+
+  To fix icc compiler warning integer conversion resulted in a change of sign
+
+  Closes #9179
+
+- sendf: store the header type in an usigned char to avoid icc warnings
+
+  Closes #9179
+
+- multi: fix the return code from Curl_pgrsDone()
+
+  It does not return a CURLcode. Detected by the icc compiler warning
+  "enumerated type mixed with another type"
+
+  Closes #9179
+
+- sendf: make Curl_debug a void function
+
+  As virtually no called checked the return code, and those that did
+  wrongly treated it as a CURLcode. Detected by the icc compiler warning:
+  enumerated type mixed with another type
+
+  Closes #9179
+
+- http_chunks: remove an assign + typecast
+
+  As it caused icc to complain: "pointer cast involving 64-bit pointed-to
+  type"
+
+  Closes #9179
+
+- vtls: make Curl_ssl_backend() return the enum type curl_sslbackend
+
+  To fix the icc warning enumerated type mixed with another type
+
+  Closes #9179
+
+- curl-compilers.m4: make icc use -diag* options and disable two warnings
+
+  -wd and -we are deprecated and are now -diag-disable and -diag-error
+
+  Disable warning 1024 and 2259
+
+  Closes #9179
+
+- [Matthew Thompson brought this change]
+
+  GHA: add two Intel compiler CI jobs
+
+  Closes #9179
+
+- [Daniel Katz brought this change]
+
+  curl-functions.m4: check whether atomics can link rather than just compile
+
+  Some build toolchains support C11 atomics (i.e., _Atomic types), but
+  will not link the associated atomics runtime unless a flag is passed. In
+  such an environment, linking an application with libcurl.a can fail due
+  to undefined symbols for atomic load/store functions.
+
+  I encountered this behavior when upgrading curl to 7.84.0 and attempting
+  to build with Solaris Studio 12.6. Solaris provides the flag
+  -xatomic=[gcc | studio], allowing users to link to one of two atomics
+  runtime implementations. However, if the user does not provide this
+  flag, then neither runtime is linked. This led to builds failing in CI.
+
+  Closes #9190
+
+- [Rosen Penev brought this change]
+
+  curl-wolfssl.m4: add options header when building test code
+
+  Needed for certain configurations of wolfSSL. Otherwise, missing header
+  error may occur.
+
+  Tested with OpenWrt.
+
+  Closes #9187
+
+- ftp: use a correct expire ID for timer expiry
+
+  This was an accurate error pointed out by the icc warning: enumerated
+  type mixed with another type
+
+  Ref: #9179
+  Closes #9184
+
+- sendf: fix paused header writes since after the header API
+
+  Regression since d1e4a67
+
+  Reported-by: Sergey Ogryzkov
+  Fixes #9180
+  Closes #9182
+
+- mprintf: fix *dyn_vprintf() when out-of-memory
+
+  Follow-up to 0e48ac1f99a. Torture-testing 1455 would lead to a memory
+  leak otherwise.
+
+  Closes #9185
+
+- curl-confopts: remove leftover AC_REQUIREs
+
+  configure.ac:3488: warning: CURL_CHECK_FUNC_IOCTL is m4_require'd but not m4_defun'd
+  configure.ac:3488: warning: CURL_CHECK_FUNC_SETSOCKOPT is m4_require'd but not m4_defun'd
+
+  follow-up from 4d73854462f30
+
+  Closes #9183
+
+- file: fix icc enumerated type mixed with another type warning
+
+  Ref: #9179
+  Closes #9181
+
+Viktor Szakats (19 Jul 2022)
+- tidy-up: delete unused build configuration macros
+
+  Most of them feature guards:
+
+  - `CURL_INCLUDES_SYS_UIO` [1]
+  - `HAVE_ALLOCA_H` [2]
+  - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc)
+  - `HAVE_DLFCN_H`
+  - `HAVE_DLOPEN`
+  - `HAVE_DOPRNT`
+  - `HAVE_FCNTL`
+  - `HAVE_GETHOSTBYNAME` [3]
+  - `HAVE_GETOPT_H`
+  - `HAVE_GETPASS`
+  - `HAVE_GETPROTOBYNAME`
+  - `HAVE_GETSERVBYNAME`
+  - `HAVE_IDN_FREE*`
+  - `HAVE_INET_ADDR`
+  - `HAVE_IOCTL`
+  - `HAVE_KRB4`
+  - `HAVE_KRB_GET_OUR_IP_FOR_REALM`
+  - `HAVE_KRB_H`
+  - `HAVE_LDAPSSL_H`
+  - `HAVE_LDAP_INIT_FD`
+  - `HAVE_LIBDL`
+  - `HAVE_LIBNSL`
+  - `HAVE_LIBRESOLV*`
+  - `HAVE_LIBUCB`
+  - `HAVE_LL`
+  - `HAVE_LOCALTIME_R`
+  - `HAVE_MALLOC_H`
+  - `HAVE_MEMCPY`
+  - `HAVE_MEMORY_H`
+  - `HAVE_NETINET_IF_ETHER_H`
+  - `HAVE_NI_WITHSCOPEID`
+  - `HAVE_OPENSSL_CRYPTO_H`
+  - `HAVE_OPENSSL_ERR_H`
+  - `HAVE_OPENSSL_PEM_H`
+  - `HAVE_OPENSSL_PKCS12_H`
+  - `HAVE_OPENSSL_RAND_H`
+  - `HAVE_OPENSSL_RSA_H`
+  - `HAVE_OPENSSL_SSL_H`
+  - `HAVE_OPENSSL_X509_H`
+  - `HAVE_PEM_H`
+  - `HAVE_POLL`
+  - `HAVE_RAND_SCREEN`
+  - `HAVE_RAND_STATUS`
+  - `HAVE_RECVFROM`
+  - `HAVE_SETSOCKOPT`
+  - `HAVE_SETVBUF`
+  - `HAVE_SIZEOF_LONG_DOUBLE`
+  - `HAVE_SOCKIO_H`
+  - `HAVE_SOCK_OPTS`
+  - `HAVE_STDIO_H`
+  - `HAVE_STRCASESTR`
+  - `HAVE_STRFTIME`
+  - `HAVE_STRLCAT`
+  - `HAVE_STRNCMPI`
+  - `HAVE_STRNICMP`
+  - `HAVE_STRSTR`
+  - `HAVE_STRUCT_IN6_ADDR`
+  - `HAVE_TLD_H`
+  - `HAVE_TLD_STRERROR`
+  - `HAVE_UNAME`
+  - `HAVE_USLEEP`
+  - `HAVE_WINBER_H`
+  - `HAVE_WRITEV`
+  - `HAVE_X509_H`
+  - `LT_OBJDIR`
+  - `NEED_BASENAME_PROTO`
+  - `NOT_NEED_LIBNSL`
+  - `OPENSSL_NO_KRB5`
+  - `RECVFROM_TYPE*`
+  - `SIZEOF_LONG_DOUBLE`
+  - `STRERROR_R_TYPE_ARG3`
+  - `USE_YASSLEMUL`
+  - `_USRDLL` (from CMake) [4]
+
+  [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might
+      also be deleted.
+
+  [2] Related comment can possibly be deleted in
+      `packages/vms/generate_config_vms_h_curl.com`.
+
+  [3] There are more instances of this in autotools, but I did not dare to
+      touch those. Looked like it's used to detect socket support.
+
+  [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to
+      force linking MFC components statically to the DLL. `libcurl.dll`
+      does not use MFC, so we can delete this define.
+      Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc
+
+  Script that can help finding unused settings like above:
+  ```shell
+
+  autoheader configure.ac  # generate lib/curl_config.h.in
+
+  {
+    grep -o -E    'set\([A-Z][A-Z0-9_]{3,}'          CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g'
+    grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}'      lib/config-*.h                     | sed -E 's|#define +||g'
+    grep -o -E    '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake            | sed -E 's|#cmakedefine +||g'
+    grep -o -E    '#undef +[A-Z][A-Z0-9_]{3,}'       lib/curl_config.h.in               | sed -E 's|#undef +||g'
+  } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do
+    c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')"
+    if [ "${c}" = '0' ]; then
+      echo "${def}"
+    fi
+  done
+  ```
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9044
+
+Daniel Stenberg (19 Jul 2022)
+- RELEASE-NOTES: synced
+
+- cookie: treat a blank domain in Set-Cookie: as non-existing
+
+  This matches what RFC 6265 section 5.2.3 says.
+
+  Extended test 31 to verify.
+
+  Fixes #9164
+  Reported-by: Gwen Shapira
+  Closes #9177
+
+- [Patrick Monnerat brought this change]
+
+  base64: base64url encoding has no padding
+
+  See RFC4648 section 5 and RFC7540 section 3.2.1.
+
+  Suppress generation of '=' padding of base64url encoding. This is
+  accomplished by considering the string beginning at offset 64 in the
+  character table as the padding: this is "=" for base64, "" for base64url.
+
+  Also use strchr() to replace character search loops where possible.
+
+  Suppress erroneous comments about empty encoding results.
+
+  Adjust unit test 1302 to unpadded base64url encoding and add tests for
+  empty results.
+
+  Closes #9139
+
+- easyoptions: fix icc warning
+
+      easyoptions.c(360): error #188: enumerated type mixed with another type
+
+  Ref: #9156
+  Reported-by: Matthew Thompson
+  Closes #9176
+
+- [lwthiker brought this change]
+
+  h2h3: fix overriding the 'TE: Trailers' header
+
+  A 'TE: Trailers' header is explicitly replaced by 'te: trailers'
+  (lowercase) in Curl_pseudo_headers() when building the list of HTTP/2 or
+  HTTP/3 headers. However, this is then replaced again by the original
+  value due to a bug, resulting in the uppercased version being sent. Some
+  HTTP/2 servers reject the whole HTTP/2 stream when this is the case.
+
+  Closes #9170
+
+- lib3026: reduce the number of threads to 100
+
+  Down from 1000, to make it run and work in more systems.
+
+  Fixes #9172
+  Reported-by: Érico Nogueira Rolim
+  Closes #9173
+
+- doh: move doh related struct definitions to doh.h
+
+  and make 'dnstype' in 'struct dnsprobe' use the DNStype to fix the icc compiler warning:
+
+    doh.c(924): error #188: enumerated type mixed with another type
+
+  Reported-by: Matthew Thompson
+  Ref #9156
+  Closes #9174
+
+Viktor Szakats (17 Jul 2022)
+- Makefile.m32: stop trying to build libcares.a [ci skip]
+
+  Before this patch, `lib/Makefile.m32` had a rule to build `libcares.a` in
+  `-cares`-enabled builds, via c-ares's own `Makefile.m32`. Committed in
+  2007 [1]. The commit message doesn't specifically address this particular
+  change. This logic comes from the times when c-ares was part of the curl
+  source tree, hence the special treatment.
+
+  This feature creates problems when building c-ares first, using CMake
+  and pointing `LIBCARES_PATH` to its install prefix, where `Makefile.m32`
+  is missing in such case. A sub-build for c-ares is undesired also when
+  c-ares had already been build via its own `Makefile.m32`.
+
+  To avoid the sub-build, this patch deletes its Makefile rule. After this
+  patch `libcares.a` needs to be manually built before using it in
+  `Makefile.m32`. Aligning it with the rest of dependencies.
+
+  [1] 46c92c0b806da041d7a5c6fb64dbcdc474d99b31
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9169
+
+Daniel Stenberg (17 Jul 2022)
+- curl: writeout: fix repeated header outputs
+
+  The function stored a terminating zero into the buffer for convenience,
+  but when on repeated calls that would cause problems. Starting now, the
+  passed in buffer is not modified.
+
+  Reported-by: highmtworks on github
+  Fixes #9150
+  Closes #9152
+
+- curl_multi_timeout.3: clarify usage
+
+  Fixes #9155
+  Closes #9157
+  Reported-by: jvvprasad78 on github
+
+- mprintf: make dprintf_formatf never return negative
+
+  This function no longer returns a negative value if the formatting
+  string is bad since the return value would sometimes be propagated as a
+  return code from the mprintf* functions and they are documented to
+  return the length of the output. Which cannot be negative.
+
+  Fixes #9149
+  Closes #9151
+  Reported-by: yiyuaner on github
+
+Viktor Szakats (17 Jul 2022)
+- trace: 0x7F character is non-printable
+
+  `0x7F` is `DEL`, a non-printable symbol, so print it as
+  `UNPRINTABLE_CHAR`.
+
+  Reported-by: MasterInQuestion on github
+  Fixes #9162
+  Closes #9166
+
+- doh: use https protocol by default
+
+  The only allowed protocol is https, so it makes sense to use that
+  by default if not passed explicitly by the user.
+
+  Reported-by: MasterInQuestion on github
+  Reviewed-by: Jay Satiro
+  Fixes #9163
+  Closes #9165
+
+- openssl: fix BoringSSL symbol conflicts with LDAP and Schannel
+
+  Same issue as here [1], but this time when building curl with BoringSSL
+  for Windows with LDAP(S) or Schannel support enabled.
+
+  Apply the same fix [2] for these source files as well.
+
+  This can also be fixed by moving `#include "urldata.h"` _before_
+  including `winldap.h` and `schnlsp.h` respectively. This seems like
+  a cleaner fix, though I'm not sure why it works and if it has any
+  downside.
+
+  [1] https://github.com/curl/curl/issues/5669
+  [2] https://github.com/curl/curl/commit/fbe07c6829ba8c5793c84c2856526e19e9029ab9
+
+  Co-authored-by: Jay Satiro
+  Closes #9110
+
+Daniel Stenberg (13 Jul 2022)
+- asyn-thread: make getaddrinfo_complete return CURLcode
+
+  ... as the only caller that cares about what it returns assumes that
+  anyway. This caused icc to warn:
+
+  asyn-thread.c(505): error #188: enumerated type mixed with another type
+          result = getaddrinfo_complete(data);
+
+  Repoorted-by: Matthew Thompson
+  Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076
+  Closes #9146
+
+- easy_lock: fix build with icc
+
+  The Intel compiler tries to look like GCC *and* clang *and* it lies in
+  its __has_builtin() function (returns true when it should return false),
+  so override it.
+
+  Reported-by: Matthew Thompson
+  Fixes #9081
+  Closes #9144
+
+- configure: fix --disable-headers-api
+
+  Reported-by: Michał Antoniak
+  Fixes #9134
+  Closes #9143
+
+- test3026: require 'threadsafe'
+
+  Reported-by: Sukanya Hanumanthu
+  Fixes #9141
+  Closes #9142
+
+- [Even Rouault brought this change]
+
+  CMake: link curl to its dependencies with PRIVATE
+
+  The current PUBLIC visibility causes issues for downstream users.
+  Cf https://github.com/OSGeo/PROJ/pull/3172#issuecomment-1157942986
+
+  Reviewed-by: Jakub Zakrzewski
+  Closes #9125
+
+- [Even Rouault brought this change]
+
+  CMake: remove APPEND in export(TARGETS)
+
+  When running cmake several times, new content was appended to already
+  existing generated files, which is not appropriate
+
+  Reviewed-by: Jakub Zakrzewski
+  Closes #9124
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks
+
+  Closes #9135
+
+- RELEASE-NOTES: synced
+
+Viktor Szakats (11 Jul 2022)
+- build: improve OS string in CMake and `config-win32.h`
+
+  This patch makes CMake fill the "OS string" with the value of
+  `CMAKE_C_COMPILER_TARGET`, if passed. This typically contains a triplet,
+  the same we can pass to `./configure` via `--host=`.
+
+  For non-CMake, non-autotools, Windows builds, this patch adds the ability
+  to override the default `OS` value in `lib/config-win32.h`.
+
+  With these its possible to get the same OS string across the three build
+  systems.
+
+  This patch supersedes the earlier, partial, CMake-only solution:
+  435f395f3f8c11eebfcc243ca55ebcc11a19b8b8, thus retiring the
+  `CURL_OS_SUFFIX` CMake option.
+
+  Reviewed-by: Jay Satiro
+  Closes #9117
+
+- Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip]
+
+  They allow to override the hardcoded values for the `windres` and `strip`
+  tools, complementing the existing set of `CURL_{CC,AR,RANLIB}` variables.
+
+  `CURL_RC` comes handy when using LLVM tools with `CROSSPREFIX=llvm-` and
+  `CURL_CC=clang` set on current latest debian:unstable or earlier, where
+  `llvm-windres` is missing, and a `CURL_RC=<triplet>-windres` fixes it.
+  Hopefully this will be fixed in the llvm package. FWIW `llvm-windres`
+  does exist in Homebrew llvm, MSYS2 llvm and llvm-mingw.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9132
+
+Daniel Stenberg (10 Jul 2022)
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: fix stall or busy loop on STOP_SENDING with upload data
+
+  Fixes #9122
+  Closes #9123
+
+- [Xiaoke Wang brought this change]
+
+  tool_operate: better cleanup of easy handle in exit path
+
+  Closes #9114
+
+- [Xiaoke Wang brought this change]
+
+  getinfo: return better error on NULL as first argument
+
+  Closes #9114
+
+- tool_getparam: repair cleanarg
+
+  Regression since 9e5669f.
+
+  Make sure the "cleaning" of command line arguments is done on the
+  original argv[] pointers. As a bonus, it also exits better on out of
+  memory error.
+
+  Reported-by: Litter White
+  Fixes #9128
+  Closes #9130
+
+Jay Satiro (10 Jul 2022)
+- docs: explain curl_easy_escape/unescape curl handle is ignored
+
+  26101421 (precedes 7.82.0) removed character conversion support used by
+  very old legacy operating systems and since then the curl handle passed
+  to curl_easy_escape/unescape is always ignored.
+
+  Bug: https://github.com/curl/curl/discussions/9115
+  Reported-by: Ted Lyngmo
+
+  Closes https://github.com/curl/curl/pull/9121
+
+Viktor Szakats (8 Jul 2022)
+- openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL
+
+  BoringSSL doesn't keep a version number, and doesn't self-identify itself
+  via any other revision number via its own headers. We can identify
+  BoringSSL revisions by their commit hash. This hash is typically known by
+  the builder. This patch adds a way to pass this hash to libcurl, so that
+  it can display in the curl version string:
+
+  For example:
+
+  `CFLAGS=-DCURL_BORINGSSL_VERSION="c239ffd0"`
+
+  ```
+  curl 7.84.0 (x86_64-w64-mingw32) libcurl/7.84.0 BoringSSL/c239ffd0 (Schannel) zlib/1.2.12 [...]
+  Release-Date: 2022-06-27
+  Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 [...]
+  Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos [...]
+  ```
+
+  The setting is optional, and if not passed, BoringSSL will appear without
+  a version number, like before this patch.
+
+  Closes #9113
+
+Jay Satiro (8 Jul 2022)
+- escape: remove outdated comment
+
+  Bug: https://github.com/curl/curl/discussions/9115
+  Reported-by: Ted Lyngmo
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: Fix missing initialization of nghttp3_nv.flags
+
+  Closes https://github.com/curl/curl/pull/9118
+
+Daniel Stenberg (6 Jul 2022)
+- [Brad Forschinger brought this change]
+
+  netrc.d: remove spurious quote
+
+  Closes #9111
+
+Viktor Szakats (6 Jul 2022)
+- Makefile.m32: add `NGTCP2_LIBS` option [ci skip]
+
+  Makefile.m32's ngtcp2 has its two libs hardwired for OpenSSL.
+  Add `NGTCP2_LIBS` envvar to override them with a custom list,
+  making it possible to use BoringSSL, or any other backend.
+
+  Closes #9109
+
+Jay Satiro (6 Jul 2022)
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  digest: fix missing increment of 'nc' value for auth-int
+
+  - Increment nc regardless of qop type.
+
+  Prior to this change nc was only incremented for qop type auth even
+  though libcurl sends nc with any qop.
+
+  Closes https://github.com/curl/curl/pull/9090
+
+Daniel Stenberg (5 Jul 2022)
+- RELEASE-NOTES: synced
+
+  Bumped to 7.85.0
+
+- urldata: reduce size of four ftp related members
+
+  ftp_filemethod, ftpsslauth and ftp_ccc are now uchars
+
+  accepttimeout is now unsigned int - almost 50 days ought to be enough
+  for this value.
+
+  Closes #9106
+
+- urldata: reduce three type-members from int to uchar
+
+   - timecondition
+   - proxytype
+   - method
+
+  ... previously used their enum type in the struct, which made them
+  unnecesarily large.
+
+  Closes #9105
+
+- CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name
+
+  Starting now, CURLOPT_FTP_RESPONSE_TIMEOUT is the alias instead of the
+  other way around.
+
+  Since 7.20.0, CURLOPT_SERVER_RESPONSE_TIMEOUT has existed as an alias
+  but since the option is for more protocols than FTP the more "correct"
+  version of the option is the "server" one so now we switch.
+
+  Closes #9104
+
+- urldata: make 'ftp_create_missing_dirs' a uchar
+
+  It only ever holds the values 0-2.
+
+  Closes #9103
+
+- [Don J Olmstead brought this change]
+
+  cmake: support ngtcp2 boringssl backend
+
+  Update the ngtcp2 find module to detect the boringssl backend. Determine
+  if the underlying OpenSSL implementation is BoringSSL and if so use that
+  as the ngtcp2 backend.
+
+  Reviewed-by: Jakub Zakrzewski
+  Closes #9065
+
+- urldata: change 4 timeouts to unsigned int from long
+
+  They're not used for that long times anyway, 32 bit milliseconds is long
+  enough.
+
+  Closes #9101
+
+- urldata: make 'use_netrc' a uchar
+
+  Closes #9102
+
+- urldata: make 'buffer_size' an unsigned int
+
+  It is already capped at READBUFFER_MAX which fits easily in 32 bits.
+
+  Closes #9098
+
+- urldata: remove the unused 'rtspversion' struct member
+
+  Closes #9100
+
+- urldata: make 'use_port' an usigned short
+
+  ... instead of a long. It is already enforced to not attempt to set any
+  value outside of 16 bits unsigned.
+
+  Closes #9099
+
+- urldata: store dns cache timeout in an int
+
+  68 years ought to be enough for most.
+
+  Closes #9097
+
+- curl: proto2num: make sure obuf is inited
+
+  Detected by Coverity. CID 1507052.
+
+  Closes #9096
+
+- cookie: use %zu to infof() for size_t values
+
+  Detected by Coverity. CID 1507051
+  Closes #9095
+
+Viktor Szakats (4 Jul 2022)
+- makefile.m32: add support for custom ARCH [ci skip]
+
+  When building curl for target platform other than x64 and x86, it is now
+  possible to pass `ARCH=custom`, that will omit all hardcoded logic for
+  setting up CFLAGS/LDFLAGS/RCFLAGS for these platforms, and let these be
+  customized via `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, and a newly
+  added one for the resource compiler: `CURL_RCFLAG_EXTRAS`.
+
+  This makes it possible to use `makefile.m32` to build for ARM64 for
+  example.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9092
+
+- cmake: do not force Windows target versions
+
+  The goal of this patch is to avoid CMake forcing specific Windows
+  versions and rely on toolchain defaults or manual selection instead.
+  This gives back control to the user. This also brings CMake closer to
+  how autotools and `Makefile.m32` behaves in this regard.
+
+  - CMake had a setting `ENABLE_INET_PTON` defaulting to `ON`, which did
+    nothing else than fixing the Windows build target to Vista. This also
+    happened when the toolchain did not have Vista support (e.g. original
+    MinGW), breaking such builds.
+
+    In other environments it did not make a user-facing difference,
+    because libcurl has its own pton() implementation, so it works well
+    with or without Vista's inet_pton().
+
+    This patch drops this setting. inet_pton() is now used whenever
+    building for Vista or newer, either when requested manually or by
+    default with modern toolchains (e.g. mingw-w64). Older envs will fall
+    back to curl's pton().
+
+    Ref: https://github.com/curl/curl/pull/9027#issuecomment-1164157604
+    Ref: https://github.com/curl/curl/pull/8997#issuecomment-1164344155
+
+  - When the user did no select a Windows target version manually, stop
+    explicitly targeting Windows XP, and instead use the toolchain default.
+
+    This may pose an issue with old toolchains defaulting to pre-XP
+    targets. In such case you must manually target Windows XP via:
+      `-DCURL_TARGET_WINDOWS_VERSION=0x0501`
+    or
+      `-DCMAKE_C_FLAGS=-D_WIN32_WINNT=0x0501`
+
+  Reviewed-by: Jay Satiro
+  Reviewed-by: Marcel Raad
+  Closes #9046
+
+- windows: improve random source
+
+  - Use the Windows API to seed the fallback random generator.
+
+    This ensures to always have a random seed, even when libcurl is built
+    with a vtls backend lacking a random generator API, such as rustls
+    (experimental), GSKit and certain mbedTLS builds, or, when libcurl is
+    built without a TLS backend. We reuse the Windows-specific random
+    function from the Schannel backend.
+
+  - Implement support for `BCryptGenRandom()` [1] on Windows, as a
+    replacement for the deprecated `CryptGenRandom()` [2] function.
+
+    It is used as the secure random generator for Schannel, and also to
+    provide entropy for libcurl's fallback random generator. The new
+    function is supported on Vista and newer via its `bcrypt.dll`. It is
+    used automatically when building for supported versions. It also works
+    in UWP apps (the old function did not).
+
+  - Clear entropy buffer before calling the Windows random generator.
+
+    This avoids using arbitrary application memory as entropy (with
+    `CryptGenRandom()`) and makes sure to return in a predictable state
+    when an API call fails.
+
+  [1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom
+  [2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom
+
+  Closes #9027
+
+Daniel Stenberg (4 Jul 2022)
+- setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR
+
+  ... as replacements for deprecated CURLOPT_PROTOCOLS and
+  CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the
+  32 bit limit the old ones are facing.
+
+  CURLINFO_PROTCOOL is now deprecated.
+
+  The curl tool is updated to use the new options.
+
+  Added test 1597 to verify the libcurl protocol parser.
+
+  Closes #8992
+
+- digest: simplify a switch() to a simple if
+
+- digest: provide a special bit for "sess" algos
+
+  Also shortened the names and moved them to the .c file since they are
+  private for this source file only. Also made them #defines instead of
+  enum.
+
+  Closes #9079
+
+Jay Satiro (4 Jul 2022)
+- [Thomas Weißschuh brought this change]
+
+  select: do not return fatal error on EINTR from poll()
+
+  The same was done for select() in 5912da25 but poll() was missed.
+
+  Bug: https://bugs.archlinux.org/task/75201
+  Reported-by: Alexandre Bury (gyscos at archlinux)
+
+  Ref: https://github.com/curl/curl/issues/8921
+  Ref: https://github.com/curl/curl/pull/8961
+  Ref: https://github.com/curl/curl/commit/5912da25#r77584294
+
+  Closes https://github.com/curl/curl/pull/9091
+
+- [Kai Pastor brought this change]
+
+  cmake: fix build for mingw cross compile
+
+  - Change normaliz lib name to all lowercase.
+
+  This is from a standing patch in vcpkg:
+  Mingw has libnormaliz.a. For case-sensitive file systems (e.g. cross
+  builds from Linux), the spelling must match exactly.
+
+  Closes https://github.com/curl/curl/pull/9084
+
+- easy_lock: fix build for mingw
+
+  - Define SRWLOCK symbols missing in some mingw environments.
+
+  Closes https://github.com/curl/curl/pull/8997
+
+Daniel Stenberg (2 Jul 2022)
+- tool_progress: avoid division by zero in parallel progress meter
+
+  Reported-by: Brian Carpenter
+  Fixes #9082
+  Closes #9083
+
+- http_aws_sigv4.c: remove two unusued includes
+
+  Closes #9080
+
+- .mailmap: additional edit
+
+  Follow-up to 861e2a8aca6c7 so that Evgeny appears with the same in git
+  logs even when using old email.
+
+- RELEASE-NOTES: synced
+
+  bumped to 7.84.1
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  .mailmap: updated
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  THANKS: merged two entries for Evgeny Grin
+
+  Also updated THANKS-filter file
+
+  Closes #9076
+
+- [Jilayne Lovejoy brought this change]
+
+  lib/curl_path.c: add ISC to license expression
+
+  THe text of the ISC license is in this file, so the SPDX license
+  expression should be updated
+
+  Closes #9073
+
+- [Sean McArthur brought this change]
+
+  hyper: use wakers for curl pause/resume
+
+  Closes #9070
+
+Viktor Szakats (30 Jun 2022)
+- Makefile.m32: do not set the libcurl.rc debug flag [ci skip]
+
+  Delete `-DDEBUGBUILD=0` windres option. This was likely meant to
+  disable VS_FF_DEBUG in FILEFLAGS, but any assigned value enabled
+  it instead. Delete this unnecessary option and thus sync up with
+  how CMake compiles libcurl.rc by default.
+
+  Reviewed-by: Jay Satiro
+  Closes #9069
+
+Daniel Stenberg (29 Jun 2022)
+- curl.h: CURLE_CONV_FAILED is obsoleted
+
+  The last use was removed in 7.82.0. Updated some docs too to reflect the
+  current error code situation.
+
+  Closes #9067
+
+- curl: output warning when a cookie is dropped due to size
+
+  Dropped from the request, that is.
+
+  Closes #9064
+
+- curl_mime_data.3: polish the wording
+
+  Closes #9063
+
+- configure: check for the stdatomic.h header in configure
+
+  ... and only set HAVE_ATOMIC if that header exists since we use
+  typedefes set in it.
+
+  Reported-by: Ryan Schmidt
+  Fixes #9059
+  Closes #9060
+
+- easy_lock: fix the #ifdef conditional for ia32_pause
+
+  To work better with new and old clang compilers.
+
+  Reported-by: Ryan Schmidt
+  Assisted-by: Joshua Root
+
+  Fixes #9058
+  Closes #9062
+
+- easy_lock: switch to using atomic_int instead of bool
+
+  To work with more compilers without requiring separate libs to
+  link. Like with gcc-12 for RISC-V on Linux.
+
+  Reported-by: Adam Sampson
+  Fixes #9055
+  Closes #9061
+
+- [vvb2060 brought this change]
+
+  ngtcp2: fix incompatible function pointer types
+
+  Closes #9056
+
+- [vvb2060 brought this change]
+
+  easy_lock.h: use __asm__ instead of asm to fix build
+
+  Closes #9056
+
+- [Samuel Henrique brought this change]
+
+  libcurl-security.3: fix typo on macro "SH_"
+
+  During the packaging of the latest curl release for Debian, Lintian
+  warned me about a typo which causes the section name "Secrets in memory"
+  to not be rendered in the manpage due to "SH_" not being recognized as a
+  header.
+
+  Closes #9057
+
+- easy_lock.h: include sched.h if available to fix build
+
+  Patched-by: Harry Sintonen
+
+  Closes #9054
+
+Version 7.84.0 (27 Jun 2022)
+
+Daniel Stenberg (27 Jun 2022)
+- RELEASE-NOTES: synced
+
+  Version 7.84.0 release
+
+- THANKS: contributors from 7.84.0 release notes
+
+- hsts: use Curl_fopen()
+
+- altsvc: use Curl_fopen()
+
+- fopen: add Curl_fopen() for better overwriting of files
+
+  Bug: https://curl.se/docs/CVE-2022-32207.html
+  CVE-2022-32207
+  Reported-by: Harry Sintonen
+  Closes #9050
+
+- test444: test many received Set-Cookie:
+
+  The amount of sent cookies in the test is limited to 80 because hyper
+  has its own strict limits in how many headers it allows to be received
+  which triggers at some point beyond this number.
+
+- test442/443: test cookie caps
+
+  442 - verify that only 150 cookies are sent
+  443 - verify that the cookie: header remains less than 8K in size
+
+- cookie: apply limits
+
+  - Send no more than 150 cookies per request
+  - Cap the max length used for a cookie: header to 8K
+  - Cap the max number of received Set-Cookie: headers to 50
+
+  Bug: https://curl.se/docs/CVE-2022-32205.html
+  CVE-2022-32205
+  Reported-by: Harry Sintonen
+  Closes #9048
+
+- test387: verify rejection of compression chain attack
+
+- content_encoding: return error on too many compression steps
+
+  The max allowed steps is arbitrarily set to 5.
+
+  Bug: https://curl.se/docs/CVE-2022-32206.html
+  CVE-2022-32206
+  Reported-by: Harry Sintonen
+  Closes #9049
+
+- krb5: return error properly on decode errors
+
+  Bug: https://curl.se/docs/CVE-2022-32208.html
+  CVE-2022-32208
+  Reported-by: Harry Sintonen
+  Closes #9051
+
+- easy_lock.h: remove use of the deprecated ATOMIC_VAR_INIT macro
+
+  clang 14 warns about its use. It is being deprecated by the working
+  group for the programming language C: "The macro ATOMIC_VAR_INIT is
+  basically useless for the purpose for which it was designed"
+
+  Ref: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2886.htm
+
+  Reported-by: Tatsuhiro Tsujikawa
+  Fixes #9041
+  Closes #9042
+
+- [Stefan Eissing brought this change]
+
+  ngtcp2: avoid supplying 0 length `msg_control` to sendmsg()
+
+  Testing on macOS 12.4, sendmsg() fails with EINVAL when a msg_control
+  buffer is provided in sengmsg(), even though msg_controllen was set to
+  0.
+
+  Initialize msg.msg_controllen just as needed and also perform the size
+  assertion only when needed.
+
+  Closes #9039
+
+- [Tom Eccles brought this change]
+
+  ftp: restore protocol state after http proxy CONNECT
+
+  connect_init() (lib/http_proxy.c) swaps out the protocol state while
+  working on the proxy connection, this is then restored by
+  Curl_connect_done() after the connection completes.
+
+  ftp_do_more() extracted the protocol state pointer to a local variable
+  at the start of the function then calls Curl_proxy_connect(). If the proxy
+  connection completes, Curl_proxy_connect() will call Curl_connect_done()
+  (via Curl_proxyCONNECT()), which restores data->req.p to point to the ftp
+  protocol state instead of the http proxy protocol state, but the local
+  variable in ftp_do_more still pointed to the old value.
+
+  Ultimately this meant that the state worked on by ftp_do_more() was the
+  http proxy state not the ftp state initialised by ftp_connect(), but
+  subsequent calls to any ftp_ function would use the original state.
+
+  For my use-case, the visible consequence was that ftp->downloadsize was
+  never set and so downloaded data was never returned to the application.
+
+  This commit updates the ftp protocol state pointer in ftp_do_more() after
+  Curl_proxy_connect() returns, ensuring that the correct state pointer is
+  used.
+
+  Fixes #8737
+  Closes #9043
+
+Jay Satiro (23 Jun 2022)
+- THANKS: add contributor missing from aea8ac1
+
+  aea8ac1 fixed #8980 which was reported by Sgharat on github, but that
+  info was not included in the commit message.
+
+- curl_setup: include _mingw.h
+
+  Prior to this change _mingw.h needed to be included in each unit before
+  evaluating __MINGW{32,64}_xxx_VERSION macros since it defines them. It
+  is included only in some mingw headers (eg stdio.h) and not others
+  (eg windows.h) so it's better to explicitly include it once.
+
+  Closes https://github.com/curl/curl/pull/9036
+
+Viktor Szakats (22 Jun 2022)
+- rand: stop detecting /dev/urandom in cross-builds
+
+  - Prevent CMake to auto-detect /dev/urandom when cross-building.
+    Before this patch, it would detect it in a cross-build scenario on *nix
+    hosts with this device present. This was a problem for example with
+    Windows builds, but it could affect any target system with this device
+    missing. This also syncs detection behaviour with autotools, which also
+    skips it for cross-builds.
+  - Also, make sure to never use the file RANDOM_FILE as entropy for libcurl's
+    fallback random number generator on Windows. Windows does not have the
+    concept of reading a random stream from a filename, nor any guaranteed
+    non-world-writable path on disk. With this, a manual misconfiguration or
+    an overeager auto-detection can no longer result in a user-controllable
+    seed source.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #9038
+
+Daniel Stenberg (22 Jun 2022)
+- [Emanuele Torre brought this change]
+
+  ci: avoid `cmake -Hpath`
+
+  This is an undocumented option similar to the `-Spath' option introduced
+  in cmake 3.13.
+  Replace all instances of `-Hpath' with `-Spath' in macos workflow.
+  Replace `-H. -Bpath' with `mkdir path; cd ./path; cmake ..' in zuul
+  scripts since it runs an older version of cmake.
+
+  Fixes #9008
+  Closes #9014
+
+- INTERNALS: bring back the "Library symbols" section
+
+  Most contents was moved, but this text should remain here.
+
+  Follow-up to: d324ac8
+  Reported-by: Viktor Szakats
+  Bug: https://github.com/curl/curl/pull/9027#discussion_r903382326
+  Closes #9037
+
+Viktor Szakats (22 Jun 2022)
+- Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip]
+
+  Since this [1] commit in 2011, `_WIN32_WINNT` was set fixed to Windows
+  XP when the `-ipv6` option is selected. Maybe this was added to support
+  pre-XP Windows versions (?). These days libcurl builds fine for both XP
+  and post-XP versions with IPv6 support enabled. The relevance of pre-XP
+  version is also low by now. Other build methods also do not impose such
+  limitation for a similar configuration. So, drop this hard-wired
+  `_WIN32_WINNT` limit from `Makefile.m32`, thus building for the default
+  Windows version set by the compiler. This is Vista for recent MinGW
+  versions.
+
+  Old behaviour can be restored by setting this envvar:
+  export CURL_CFLAG_EXTRAS=-D_WIN32_WINNT=0x0501
+
+  [1] 98a61d8e2e8982786aaf3916cbbcac96838316e7
+
+  Closes #9035
+
+Daniel Stenberg (21 Jun 2022)
+- CONTRIBUTE: mention how we maintain REUSE compliance
+
+  for copyright and license information of all files stored in git
+
+  Closes #9032
+
+- CURLOPT_ALTSVC.3: document the file format
+
+  Closes #9033
+
+Jay Satiro (21 Jun 2022)
+- runtests: add "threadsafe" to detected features
+
+  Follow-up to recent commits which added thread-safety support.
+
+  Bug: https://github.com/curl/curl/pull/9012#discussion_r902018782
+  Reported-by: Marc Hörsken
+
+  Closes https://github.com/curl/curl/pull/9030
+
+Daniel Stenberg (20 Jun 2022)
+- easy: remove dead code
+
+  Follow-up from 5912da253b64d
+
+  Detected by Coverity (CID 1506519)
+
+  Closes #9029
+
+- [Glenn Strauss brought this change]
+
+  transfer: upload performance; avoid tiny send
+
+  Append to the upload buffer when only small amount remains in buffer
+  rather than performing a separate tiny send to empty buffer.
+
+  Avoid degenerative upload behavior which might cause curl to send mostly
+  1-byte DATA frames after exhausing the h2 send window size
+
+  Related discussion: https://github.com/nghttp2/nghttp2/issues/1722
+
+  Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
+  Closes #8965
+
+- [Steve Holme brought this change]
+
+  projects: fix third-party SSL library build paths for Visual Studio
+
+  The paths used by the build batch files were inconsistent with those in
+  the Visual Studio project files.
+
+  Closes #8991
+
+- [Pierrick Charron brought this change]
+
+  urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts
+
+  As per the documentation :
+
+  > Setting a part to a NULL pointer will effectively remove that
+  > part's contents from the CURLU handle.
+
+  But currently clearing CURLUPART_URL does nothing and returns
+  CURLUE_OK. This change will clear all parts of the URL at once.
+
+  Closes #9028
+
+- [Philip Heiduck brought this change]
+
+  CI: bump FreeBSD 13.0 to 13.1
+
+  Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+  Closes #8815
+
+- RELEASE-NOTES: synced
+
+  and updated release date in RELEASE-PROCEDURE.md
+
+- [divinity76 brought this change]
+
+  CURLOPT_HTTPHEADER.3: improve comment in example
+
+  Closes #9025
+
+Marc Hoersken (16 Jun 2022)
+- CI/azure: reduce flakiness by retrying install/prepare steps
+
+  Closes #9010
+
+- CI/cirrus: align Windows timeout with Azure CI at 120 minutes
+
+  Closes #9009
+
+Jay Satiro (16 Jun 2022)
+- vtls: make curl_global_sslset thread-safe
+
+  .. and update some docs to explain curl_global_* is now thread-safe.
+
+  Follow-up to 23af112 which made curl_global_init/cleanup thread-safe.
+
+  Closes https://github.com/curl/curl/pull/9016
+
+- curl_easy_pause.3: remove explanation of progress function
+
+  - Remove misleading text that says progress function "gets called at
+    least once per second, even if the connection is paused."
+
+  The progress function behavior is more nuanced and the user is better
+  served reading the progress function doc rather than attempt to explain
+  it in the curl_easy_pause doc.
+
+  The progress function can only be called at least once per second if an
+  appropriate multi transfer function is called (eg curl_multi_perform) in
+  that time. For a paused transfer there may not be such a call. Rather
+  than explain this in detail in the curl_easy_pause doc, rely on the user
+  reading the CURLOPT_PROGRESSFUNCTION doc.
+
+  Ref: https://github.com/curl/curl/issues/8983
+
+  Closes https://github.com/curl/curl/pull/9015
+
+Daniel Stenberg (15 Jun 2022)
+- libssh: skip the fake-close when libssh does the right thing
+
+  Starting in libssh 0.10.0 ssh_disconnect() will no longer close our
+  socket. Instead it will be kept alive as we want it, and it is our
+  responsibility to close it later.
+
+  Ref: #8718
+  Ref: https://gitlab.com/libssh/libssh-mirror/-/merge_requests/240
+  Closes #9021
+
+- configure: warn about rustls being experimental
+
+  Right now a dozen test cases are disabled because they don't work with
+  rustls.
+
+  Closes #9019
+
+- runtests: skip starting the ssh server if user name is lacking
+
+  Because the ssh server startup script *requires* a user name there's no
+  point in invoking it if no name was found.
+
+  Reported-by: Ricardo M. Correia
+  Ref: #9007
+  Closes #9013
+
+- copyright.pl: parse and use .reuse/dep5 for skips
+
+  Also scan skipped files to be able to find superfluous ignores, shown with -v.
+
+  Closes #9006
+
+- reuse/dep5: adjusted to parse better
+
+  ... adjusted a few files to contain copyright and license info.
+
+  Closes #9006
+
+- buildconf.bat: update copyright year range
+
+  Closes #9006
+
+- README.md: use the common "Copyright" style formatting
+
+  Closes #9006
+
+- reuse: move license info from .mailmap.license to .reuse/dep5
+
+  Closes #9006
+
+- README.md: add a REUSE badge
+
+  Closes #9004
+
+- .reuse/dep5: remove recursive docs ignore, only skip markdown files
+
+  ... and some additional non-markdown individual files in docs/
+
+  Closes #9005
+
+- docs/cmdline-opts: add copyright and license identifier to each file
+
+  gen.pl now insists on C: and SPDX-License-Identifier: fields to be
+  present in all files.
+
+  Closes #9002
+
+- copyright: info for/ignore .github/ISSUE_TEMPLATE/bug_report.md
+
+  Follow-up from 448f7ef9ab2afb7. The adding of the copyright text in that
+  file broke site functionality.
+
+  Closes #9001
+
+- bug_report.md: revert the REUSE template to see if it works again
+
+Viktor Szakats (13 Jun 2022)
+- version: rename threadsafe-init to threadsafe
+
+  Referring to Daniel's article [1], making the init function thread-safe
+  was the last bit to make libcurl thread-safe as a whole. So the name of
+  the feature may as well be the more concise 'threadsafe', also telling
+  the story that libcurl is now fully thread-safe, not just its init
+  function. Chances are high that libcurl wants to remain so in the
+  future, so there is little likelihood of ever needing any other distinct
+  `threadsafe-<name>` feature flags.
+
+  For consistency we also shorten `CURL_VERSION_THREADSAFE_INIT` to
+  `CURL_VERSION_THREADSAFE`, update its description and reference libcurl's
+  thread safety documentation.
+
+  [1]: https://daniel.haxx.se/blog/2022/06/08/making-libcurl-init-more-thread-safe/
+
+  Reviewed-by: Daniel Stenberg
+  Reviewed-by: Jay Satiro
+  Closes #8989
+
+Daniel Stenberg (13 Jun 2022)
+- test3026: disable on win32
+
+  ... as it's not likely to have working pthreads
+
+  Closes #8996
+
+- GHA: shorten the reuse CI job name
+
+  "REUSE compliance / check" should be good enough
+
+  Closes #9000
+
+- misc: add missing SPDX-License-Identifier info
+
+  For some reason the REUSE CI job did not find these.
+
+  Closes #8999
+
+- copyright: verify SPDX-License-Identifier presence as well
+
+- easy_lock: add SPDX license identifier
+
+  Closes #8998
+
+- mailmap: Max Mehl
+
+- [Max Mehl brought this change]
+
+  git: ignore large commit making the curl REUSE compliant
+
+- [Max Mehl brought this change]
+
+  copyright: make repository REUSE compliant
+
+  Add licensing and copyright information for all files in this repository. This
+  either happens in the file itself as a comment header or in the file
+  `.reuse/dep5`.
+
+  This commit also adds a Github workflow to check pull requests and adapts
+  copyright.pl to the changes.
+
+  Closes #8869
+
+- curl_url_set.3: clarify by default using known schemes only
+
+  Closes #8994
+
+- scripts/copyright.pl: ignore leading spaces
+
+Viktor Szakats (10 Jun 2022)
+- ngtcp2: fix typo in preprocessor condition
+
+  Ref: 927ede7edcb7b05b8e8bbf9ced6aed523ae594a7
+
+  Bug: https://github.com/curl/curl/pull/8981#discussion_r894312185
+  Reported-by: Emil Engler
+  Closes #8987
+
+Daniel Stenberg (10 Jun 2022)
+- RELEASE-NOTES: synced
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: build without sendmsg
+
+  Closes #8981
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: use handshake helper funcs to simplify TLS handshake integration
+
+  Closes #8968
+
+- test390: verify --parallel
+
+  Closes #8985
+
+- test1543: verify CURLINFO_EFFECTIVE_URL with CURLOPT_CURLU set
+
+  Triggered by a bug report from Adam Light:
+  https://curl.se/mail/lib-2022-06/0013.html - which ended up being mostly
+  a misunderstanding of how CURLINFO_EFFECTIVE_URL works.
+
+  Closes #8971
+
+- url: URL encode the path when extracted, if spaces were set
+
+- urlapi: support CURLU_URLENCODE for curl_url_get()
+
+- server/sws: support spaces in the HTTP request path
+
+- tests/getpart: fix getpartattr to work with "data" and "data2"
+
+- select: return error from "lethal" poll/select errors
+
+  Adds two new error codes: CURLE_UNRECOVERABLE_POLL and
+  CURLM_UNRECOVERABLE_POLL one each for the easy and the multi interfaces.
+
+  Reported-by: Harry Sintonen
+  Fixes #8921
+  Closes #8961
+
+- test3026: add missing control file
+
+  Follow-up from 2ed101256414ea5
+
+  Makes the test run, makes 'make dist' work
+
+  This single test takes 24-25 seconds on my machine (with valgrind). For
+  this reason I tag it with a "slow" keyword.
+
+  Closes #8976
+
+- runtests: fix skipping tests not done event-based
+
+  ... and call timestampskippedevents() to avoid the flood of
+  uninitialized variable warnings.
+
+  Closes #8977
+
+- transfer: maintain --path-as-is after redirects
+
+  Reported-by: Marcus T
+  Fixes #8974
+  Closes #8975
+
+- test391: verify --path-as-is with redirect
+
+Jay Satiro (8 Jun 2022)
+- curl_global_init.3: Separate the Windows loader lock warning
+
+  This is a slight correction of the parent commit which implied the
+  loader lock warning only applied if not thread-safe. In fact the loader
+  lock warning applies either way.
+
+  Ref: https://github.com/curl/curl/pull/8972#discussion_r891987030
+
+Daniel Stenberg (8 Jun 2022)
+- curl_global_init.3: this is now (usually) thread-safe
+
+  Follow-up to 23af112f5556
+
+  Closes #8972
+
+Jay Satiro (8 Jun 2022)
+- [Haxatron brought this change]
+
+  libcurl-security.3: Document CRLF header injection
+
+  - Document that user input to header options is not sanitized, which
+    could result in CRLF used to modify the request in a way other than
+    what was intended.
+
+  Ref: https://hackerone.com/reports/1589877
+  Ref: https://medium.com/@tomnomnom/crlf-injection-into-phps-curl-options-e2e0d7cfe545
+
+  Closes https://github.com/curl/curl/pull/8964
+
+- CURLOPT_RANGE.3: remove ranged upload advice
+
+  The e-mail link in the advice contains instructions that are prone to
+  error. We need an example that works and can demonstrate how to properly
+  perform a ranged upload, and then we can refer to that example instead.
+
+  Bug: https://github.com/curl/curl/issues/8969
+  Reported-by: Simon Berger
+
+  Closes https://github.com/curl/curl/pull/8970
+
+Daniel Stenberg (7 Jun 2022)
+- [Thomas Guillem brought this change]
+
+  curl_version_info: add CURL_VERSION_THREADSAFE_INIT
+
+  This flag can be used to make sure that curl_global_init() is
+  thread-safe.
+
+  This can be useful for libraries that can't control what other
+  dependencies are doing with Curl.
+
+  Closes #8680
+
+- [Thomas Guillem brought this change]
+
+  lib: make curl_global_init() threadsafe when possible
+
+  Use a posix pthread or a Windows SRWLOCK to lock curl_global_init*() and
+  curl_global_cleanup().
+
+  Closes #8680
+
+- RELEASE-NOTES: synced
+
+- [Fabian Keil brought this change]
+
+  test414: add the '--resolve' keyword
+
+  ... so the test can be automatically skipped when
+  using an external proxy like Privoxy.
+
+  Closes #8959
+
+- [Fabian Keil brought this change]
+
+  test{440,441,493,977}: add "HTTP proxy" keywords
+
+  ... so the tests can be automatically skipped when
+  using an external proxy like Privoxy.
+
+  Closes #8959
+
+- [Fabian Keil brought this change]
+
+  runtests.pl: add the --repeat parameter to the --help output
+
+  Closes #8959
+
+- [Fabian Keil brought this change]
+
+  test 2081: add a valid reply for the second request
+
+  ... so the test works when using a HTTP proxy like
+  Privoxy that sends an error message if the server
+  doesn't send data.
+
+  Closes #8959
+
+- [Fabian Keil brought this change]
+
+  test 675: add missing CR so the test passes when run through Privoxy
+
+  Closes #8959
+
+- ftp: when failing to do a secure GSSAPI login, fail hard
+
+  ... instead of switching to cleartext. For the sake of security.
+
+  Reported-by: Harry Sintonen
+  Bug: https://hackerone.com/reports/1590102
+  Closes #8963
+
+- http2: reject overly many push-promise headers
+
+  Getting more than a thousand of them is rather a sign of some kind of
+  attack.
+
+  Reported-by: Harry Sintonen
+  Bug: https://hackerone.com/reports/1589847
+  Closes #8962
+
+- [Fabian Keil brought this change]
+
+  misc: spelling improvements
+
+  Closes #8956
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: fix assertion failure on EMSGSIZE
+
+  Closes #8958
+
+- easy/transfer: fix cookie-disabled build
+
+  Follow-up from 45de940cebf6a
+  Reported-by: Marcel Raad
+  Fixes #8953
+  Closes #8954
+
+- examples/crawler.c: use the curl license
+
+  With permission from Jeroen Ooms
+
+  URL: https://github.com/curl/curl/pull/8869#issuecomment-1144742731
+  Closes #8950
+
+- speed-limit/time.d: mention these affect transfers in either direction
+
+  Reported-by: Ladar Levison
+  Fixes #8948
+  Closes #8951
+
+- scripts/copyright.pl: fix the exclusion to not ignore man pages
+
+  Ref: #8869
+  Closes #8952
+
+- examples: remove fopen.c and rtsp.c
+
+  To simplify the license situation, as they were the only files in the
+  source tree using these specific BSD-3 clause licenses.
+
+  For an fopen style API, we recommend instead going
+  https://github.com/curl/fcurl
+
+  Ref: #8869
+  Closes #8949
+
+- [Wolf Vollprecht brought this change]
+
+  netrc: check %USERPROFILE% as well on Windows
+
+  Closes #8855
+
+- CURLOPT_SSH_HOSTKEYDATA/FUNCTION.3: minor polish
+
+- [michael musset brought this change]
+
+  libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION
+
+  The callback set by CURLOPT_SSH_HOSTKEYFUNCTION is called to check
+  wether or not the connection should continue.
+
+  The host key is passed in argument with a custom handle for the
+  application.
+
+  It overrides CURLOPT_SSH_KNOWNHOSTS
+
+  Closes #7959
+
+- docs/CONTRIBUTE.md: document the 'needs-votes' concept
+
+  A pull request sent to the project might get labeled `needs-votes` by a
+  project maintainer. This label means that in addition to meeting all
+  other checks and qualifications this pull request must also receive
+  proven support/thumbs-ups from more community members to be considered
+  for merging.
+
+  Closes #8910
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  digest: tolerate missing "realm"
+
+  Server headers may not define "realm", avoid NULL pointer dereference
+  in such cases.
+
+  Closes #8912
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  digest: added detection of more syntax error in server headers
+
+  Invalid headers should not be processed otherwise they may create
+  a security risk.
+
+  Closes #8912
+
+- [Evgeny Grin (Karlson2k) brought this change]
+
+  digest: unquote realm and nonce before processing
+
+  RFC 7616 (and 2617) requires values to be "unquoted" before used for
+  digest calculations. The only place where unquoting can be done
+  correctly is header parsing function (realm="DOMAIN\\host" and
+  realm=DOMAN\\host are different realms).
+
+  This commit adds unquoting (de-escaping) of all values during header
+  parsing and quoting of the values during header forming. This approach
+  should be most straightforward and easy to read/maintain as all values
+  are processed in the same way as required by RFC.
+
+  Closes #8912
+
+- headers: handle unfold of space-cleansed headers
+
+  Detected by OSS-fuzz
+
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47767
+
+  Updated test 1274
+
+  Closes #8947
+
+- lib: make more protocol specific struct fields #ifdefed
+
+  ... so that they don't take up space if the protocols are disabled in
+  the build.
+
+  Closes #8944
+
+- DISABLED: disable 1021 for hyper again
+
+  due to flakiness in the CI builds
+
+- urldata: store tcp_keepidle and tcp_keepintvl as ints
+
+  They can't be set larger than INT_MAX in the setsocket API calls.
+
+  Also document the max values in their respective man pages.
+
+  Closes #8940
+
+- urldata: reduce size of a few struct fields
+
+  When the values are never larger than 32 bit, ints are better than longs.
+
+  Closes #8940
+
+- urldata: remove three unused booleans from struct UserDefined
+
+  - is_fwrite_set
+  - free_referer
+  - strip_path_slash
+
+  Closes #8940
+
+- remote-name.d: mention --output-dir
+
+  plus add two see-alsos
+
+  Closes #8945
+
+Jay Satiro (1 Jun 2022)
+- configure: skip libidn2 detection when winidn is used
+
+  Prior to this change --with-winidn could be overridden by libidn2
+  detection.
+
+  Closes https://github.com/curl/curl/pull/8934
+
+Daniel Stenberg (31 May 2022)
+- CURLOPT_FILETIME.3: fix the protocols this works with
+
+- test681: verify --no-remote-name
+
+  Follow-up to 83ee5c428d960 (from #8931)
+
+  Closes #8942
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: enable Linux GSO
+
+  Enable Linux GSO in ngtcp2 QUIC.  In order to recover from the
+  EAGAIN/EWOULDBLOCK by sendmsg with multiple packets in one GSO write,
+  packet buffer is now held by struct quicsocket.  GSO write might fail in
+  runtime depending on NIC.  Disable GSO if sendmsg returns EIO.
+
+  Closes #8909
+
+- CURLOPT_PORT.3: We discourage using this option
+
+  Closes #8941
+
+- RELEASE-NOTES: synced
+
+- headers_push: error out if a folded header has no previous header
+
+  As that would indicate an illegal header. The fuzzer reached the assert
+  in unfold_value() proving that this case can happen.
+
+  Follow-up to c9b60f005358a364
+
+  Closes #8939
+
+- [Boris Verkhovskiy brought this change]
+
+  curl: re-enable --no-remote-name
+
+  Closes #8931
+
+- test680: require 'http' since it uses such a URL
+
+  Follow-up to d1b376c03524
+
+- CURLOPT_NETRC.3: document the .netrc file format
+
+- test680: verify rejection of malformatted .netrc quoted password
+
+- test679: verify netrc quoted string
+
+- netrc: support quoted strings
+
+  The .netrc parser now accepts strings within double-quotes in order to
+  deal with for example passwords containing white space - which
+  previously was not possible.
+
+  A password that starts with a double-quote also ends with one, and
+  double-quotes themselves are escaped with backslashes, like \". It also
+  supports \n, \r and \t for newline, carriage return and tabs
+  respectively.
+
+  If the password does not start with a double quote, it will end at first
+  white space and no escaping is performed.
+
+  WARNING: this change is not entirely backwards compatible. If anyone
+  previously used a double-quote as the first letter of their password,
+  the parser will now get it differently compared to before. This is
+  highly unfortunate but hard to avoid.
+
+  Reported-by: ImpatientHippo on GitHub
+  Fixes #8908
+  Closes #8937
+
+- curl_getdate.3: document that some illegal dates pass through
+
+  Closes #8938
+
+- CI: remove configure --enable-headers-api flags
+
+- headers api: remove EXPERIMENTAL tag
+
+  Closes #8900
+
+Daniel Gustafsson (30 May 2022)
+- cookies: fix documentation comment
+
+  Commit 4073cd83b2 added the noexpire parameter to Curl_cookie_add but
+  missed updating the documentation comment at the head of the file.
+
+Daniel Stenberg (30 May 2022)
+- [Marc Hoersken brought this change]
+
+  tests/data/test1940: use binary mode for expected stdout
+
+  The generated stdout data is written in binary mode with [LF]
+  line endings, therefore we also need to do a binary comparison.
+
+  Assisted-by: Jay Satiro
+  Assisted-by: Daniel Stenberg
+
+  Follow up to c9b60f005358a364cbcddbebd8d12593acffdd84
+  Fixes #8920
+  Closes #8936
+
+- CURLINFO_CAINFO/PATH.3: clarify the multiple TLS situation
+
+  Spell out the multi-TLS situation.
+
+  Reported-by: Dan Fandrich
+  Fixes #8926
+  Closes #8932
+
+Jay Satiro (28 May 2022)
+- [JustAnotherArchivist brought this change]
+
+  tool_getparam: fix --parallel-max maximum value constraint
+
+  - Clamp --parallel-max to MAX_PARALLEL (300) instead of resetting to
+    default value.
+
+  Previously, --parallel-max 300 would use 300 concurrent transfers, but
+  --parallel-max 301 would unexpectedly use only 50. This change clamps
+  higher values to the maximum (ie --parallel-max 301 would use 300).
+
+  Closes https://github.com/curl/curl/pull/8930
+
+Daniel Stenberg (27 May 2022)
+- curl.1: add a few see also --tls-max
+
+  Closes #8929
+
+Viktor Szakats (26 May 2022)
+- cmake: do not add libcurl.rc to the static libcurl library
+
+  Fixes: https://github.com/curl/curl/pull/8918#issuecomment-1138263855
+
+  Reviewed-By: Karlson2k@users.noreply.github.com
+  Closes #8923
+
+- cmake: support adding a suffix to the OS value
+
+  CMake automatically uses the `CMAKE_SYSTEM_NAME` value to fill the OS
+  string appearing in the --version output after the curl version number,
+  for example:
+
+    'curl 7.83.1 (Windows)'
+
+  This patchs adds the ability to pass a suffix that is appended to this
+  value. It's useful to add CPU info or other platform details,
+  for example:
+
+    'curl 7.83.1 (Windows-x64)'
+
+  Closes #8919
+
+- cmake: enable curl.rc for all Windows targets
+
+  Before this patch, it was only enabled for MSVC. This syncs this
+  configuration with libcurl.rc, which was already included with
+  every Windows compiler.
+
+  Closes #8918
+
+- cmake: fix detecting libidn2
+
+  Without this patch, libidn2 detection doesn't even seem to be
+  attempted. With this patch, cmake can be configured to pick it
+  up and enable it. Necessary configuration remains manual and
+  differs from most other dependencies.
+
+  If you are aware of a better fix, we're glad hearing about it
+  in a new Issue.
+
+  Closes #8917
+
+- version: allow stricmp() for sorting the feature list
+
+  In CMakeLists.txt there is an attempt to detect `stricmp()`, and in
+  certain cases, this attempt is the only successful one to detect a
+  case-insensitive comparison function. `HAVE_STRICMP` is defined as
+  a result, but this macro wasn't used anywhere in the source. This
+  patch makes use of it as an alternative when alpha-sorting the
+  `--version` feature list.
+
+  Reviewed-by: Daniel Stenberg
+  Closes #8916
+
+Daniel Stenberg (25 May 2022)
+- DISABLED: add six tests that fail with hyper
+
+  1117 1274 1940 1941 1942 1943
+
+- c-hyper: mark status line as status for Curl_client_write()
+
+  To make sure the headers API can filter it out as not a regular header.
+
+  Reported-by: Gisle Vanem
+  Fixes #8894
+  Closes #8914
+
+Marc Hoersken (25 May 2022)
+- tests/data/test1501: kill ftp server after slow LIST response
+
+  This test is contributing to flakiness on the Windows CI runs.
+  Killing the ftp server after the test run like other slowness
+  tests already do may help resolve or reduce the flakiness.
+
+  Closes #8907
+
+Daniel Stenberg (25 May 2022)
+- headers: fix the unfold realloc to use proper new size
+
+  Previously it didn't take the old name length into acount
+
+  Follow-up to: c9b60f005358a364
+  Closes #8913
+
+Marc Hoersken (25 May 2022)
+- GHA: align all install, configure and build steps again
+
+  First step towards more unified build steps on GitHub Actions.
+
+  Closes #8873
+
+- CI/azure: remove obsolete strategy for single builds
+
+  This shortens these CI job names on GitHub even more.
+  Follow up to #8906 which also increased their timeout.
+
+  Closes #8911
+
+- CI/azure: shorten names of Windows CI jobs
+
+  Suggested-by: Daniel Stenberg
+  Closes #8906
+
+Daniel Stenberg (24 May 2022)
+- http: restore header folding behavior
+
+  Folded header lines will now get passed through like before. The headers
+  API is adapted and will provide the content unfolded.
+
+  Added test 1274 and extended test 1940 to verify.
+
+  Reported-by: Petr Pisar
+  Fixes #8844
+  Closes #8899
+
+Viktor Szakats (24 May 2022)
+- Makefile.m32: delete obsolete options, improve -On [ci skip]
+
+  - `-D_AMD64_` has not been necessary for mingw-w64 builds for a long time now.
+  - `-fno-strict-aliasing` is mentioned for Intel C compiler in autotools, and
+    I used this with VxWorks in another project, but otherwise this isn't
+    necessary anymore as a default. If a target still needs it, it can be
+    added with `CURL_CFLAG_EXTRAS=-fno-strict-aliasing`
+  - bump up default optimization level to `-O3` (from `-O2`), and also rearrange
+    option order so the default can now be overridden via
+    `CURL_CFLAG_EXTRAS`.
+  - delete `-g` (generate debug info) from `CFLAGS` and `-s` from `LDFLAGS`
+    (strip debug info). They were working against each other. Now, if someone
+    needs debug info, it can be enabled via `CURL_CFLAG_EXTRAS=-g`
+
+  Closes #8904
+
+Daniel Gustafsson (24 May 2022)
+- ntlm: fix one more hostname test fallout
+
+  This fixup was missed in commit 5a41abef6dca19.
+
+  Closes: #8901
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- doh: remove UNITTEST macro definition
+
+  The UNITTEST macro is defined by curl_setup.h so there is no use in
+  carry a local copy of the logic.
+
+  Closes: #8902
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (24 May 2022)
+- cookie: fix false positive "potentially uninitialized local variable"
+
+  Reviewed-by: Daniel Gustafsson
+  Closes #8903
+
+- curl: add --rate to set max request rate per time unit
+
+  --rate "12/m" - for 12 per minute or
+  --rate "5/h" - for 5 per hour
+
+  Removed from TODO
+
+  Closes #8671
+
+- [Jay Satiro brought this change]
+
+  max-time.d: clarify max-time sets max transfer time
+
+  Prior to this change the doc said --max-time set the maximum time of the
+  'whole operation' which is not accurate. The option maps to
+  CURLOPT_TIMEOUT_MS which sets maximum transfer time.
+
+  For example, the maximum time on a transfer is reset if the transfer is
+  retried (--retry).
+
+  Reported-by: Nuru@users.noreply.github.com
+
+  Fixes https://github.com/curl/curl/issues/8877
+  Closes #8879
+
+- GHA/hyper: enable debug in the build
+
+- hyper: use 'alt-used'
+
+  Makes test 412+413 work
+
+  Closes #8898
+
+- RELEASE-NOTES: synced
+
+- CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl
+
+  Closes #8888
+
+- links: update dead links
+
+  The wiki pages are gone, remove and link to more long-living docs.
+
+  Closes #8897
+
+- ntlm: (void) typecast msnprintf() where we ignore return code
+
+  Follow-up to 5a41abef6, to please Coverity
+
+Daniel Gustafsson (22 May 2022)
+- ntlm: copy NTLM_HOSTNAME to host buffer
+
+  Commit 709ae2454f43 added a fake hostname to avoid leaking the local
+  hostname, but omitted copying it to the host buffer.  Fix by copying
+  and adjust the test fallout.
+
+  Closes: #8895
+  Fixes: #8893
+  Reported-by: Patrick Monnerat <patrick@monnerat.net>
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- configure: use the SED value to invoke sed
+
+  Rather than assuming sed in PATH, use the resolved $SED variable
+  like in all other invocations of sed in configure.
+
+  Closes: #8891
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Reviewed-by: Marcel Raad <Marcel.Raad@teamviewer.com>
+
+Daniel Stenberg (20 May 2022)
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: Allow curl to send larger UDP datagrams
+
+  Allow curl to send larger UDP datagram if Path MTU Discovery finds the
+  availability of larger path MTU.  To make it work and not to send
+  fragmented packet, we need to set DF bit.  That makes send(2) fail with
+  EMSGSIZE if UDP datagram is too large.  In that case, just let it be
+  lost.  This patch enables DF bit for Linux only.
+
+  Closes #8883
+
+- libcurl-security.3: add "Secrets in memory"
+
+  Closes #8881
+
+- tests: update NTLM tests to use new host name
+
+  Also drop the debug requirement, remove the setenv sections, remove
+  prechecks and add NTLM to the top keywords.
+
+  Closes #8889
+
+- ntlm: provide a fixed fake host name
+
+  The NTLM protocol includes providing the local host name, but apparently
+  other implementations already provide a fixed fake name instead to avoid
+  leaking the real local name.
+
+  The exact name used is 'WORKSTATION', because Firefox uses that.
+
+  The change is written to allow someone to "back-pedal" fairly easy in
+  case of need.
+
+  Reported-by: Carlo Alberto
+  Fixes #8859
+  Closes #8889
+
+Daniel Gustafsson (20 May 2022)
+- KNOWN_BUGS: fix typo in problem description
+
+  s/TSL/TLS/
+
+- FEATURES: remove yassl as TLS library for NTLM
+
+  yassl was added in commit 9d904ee41b880b but is no longer available
+  and is thus not a library to use for NTLM. This aligns the FEATURES
+  doc with the FAQ.
+
+  Closes: #8886
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- FEATURES: reorder footnotes
+
+  The empty left-behind footnote confused the website rendering into
+  creating a nested emoty list, making the resulting page look quite
+  odd.  Remove and re-order the remaining ones to avoid a gap in the
+  sequence.
+
+  Closes: #8886
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- FAQ: remove opinionated sentence on NTLM
+
+  curl is a tool that support many different things, and it doesn't
+  really seem like our job to tell other what to use (as they might
+  not have much say in the matter even).  Also tidy up wording.
+
+  Closes: #8886
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Viktor Szakats (20 May 2022)
+- log2changes: do not indent empty lines [ci skip]
+
+  This will omit two spaces of indentation from lines with no content,
+  thus avoiding 'spaces @ EOL'.
+
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Closes #8887
+
+Daniel Stenberg (19 May 2022)
+- wolfssl: correct the failf() message when a handle can't be made
+
+  Closes #8885
+
+Viktor Szakats (19 May 2022)
+- Makefile.m32: delete two obsolete OpenSSL options [ci skip]
+
+  - -DOPENSSL_NO_KRB5: No longer used by OpenSSL 1.1.x, 3.x, or
+    LibreSSL 3.5.x, yet it collides with the latter, which defines
+    it unconditionally, resulting in this warning:
+      ../../libressl/include/openssl/opensslfeatures.h:14:9: warning: 'OPENSSL_NO_KRB5' macro redefined [-Wmacro-redefined]
+    It was originally added to curl in 2004.
+
+  - -DHAVE_OPENSSL_PKCS12_H: No longer used by OpenSSL 1.1.x, 3.x, or
+    LibreSSL back to at least 2.5.5. Originally added in the same
+    commit as the above, in 2004.
+
+  Closes #8884
+
+Daniel Stenberg (19 May 2022)
+- RELEASE-NOTES: synced
+
+  bump to 7.84.0
+
+- [Christian Weisgerber via curl-library brought this change]
+
+  Makefile.am: fix portability issues
+
+  Commit a04f0b961333e1a19848d073d8c7db9c20b2a371 made me notice that
+  there is a portability issue in curl's top-level Makefile.am.
+
+  $< can only be used in rules that deal with .SUFFIXES.  Its use
+  for general prerequisites is a GNU make extension.
+
+  $< could be replaced by $?, but I think in an autotools context,
+  something like this is better:
+
+  Bug: https://curl.se/mail/lib-2022-05/0024.html
+  Closes #8861
+
+- [Balakrishnan Balasubramanian brought this change]
+
+  socks: support unix sockets for socks proxy
+
+  Usage:
+    curl -x "socks5h://localhost/run/tor/socks" "https://example.com"
+
+  Updated runtests.pl to run a socksd server listening on unix socket
+
+  Added tests test1467 test1468
+
+  Added documentation for proxy command line option and socks proxy
+  options
+
+  Closes #8668
+
+- [Vincent Torri brought this change]
+
+  cmake: add libpsl support
+
+  Fixes #8865
+  Closes #8867
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: extend QUIC transport parameters buffer
+
+  Extend QUIC transport parameters buffer because 64 bytes are too
+  short for the ever increasing parameters.
+
+  Closes #8872
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: handle error from ngtcp2_conn_submit_crypto_data
+
+  Closes #8871
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: send appropriate connection close error code
+
+  Closes #8870
+
+- test1561: adjusted for the cookie fix
+
+- test414: verify secure cookie domain overlay
+
+- [Harry Sintonen brought this change]
+
+  cookie: address secure domain overlay
+
+  Bug: https://hackerone.com/reports/1560324
+  Co-authored-by: Daniel Stenberg
+  Closes #8840
+
+- [Frank Gevaerts brought this change]
+
+  strcase: some optimisations
+
+  Lookup tables for toupper() and tolower() make Curl_strcasecompare()
+  about 1.5 times faster. Reorganising Curl_strcasecompare() to fully exit
+  early then also allows simplifying the check at the end, for another
+  15%. In total, the changes make Curl_strcasecompare() around 1.6 to 1.7
+  times faster.
+
+  Note that these optimisation assume ASCII. The original
+  Curl_raw_toupper() and raw_tolower() look like they already made that
+  assumption.
+
+  Closes #8875
+
+- BUG-BOUNTY.md: mention the audit exception
+
+  Dedicated - paid for - security audits that are performed in
+  collaboration with curl developers are not eligible for bounties.
+
+  (plus I changed the sub-titles to use ## instead of # in the markdown)
+
+  Closes #8880
+
+- lib/vssh/wolfssh.h: removed
+
+  Unused header file
+
+  Reported-by: Illarion Taev
+  Fixes #8863
+  Closes #8866
+
+- [Elms brought this change]
+
+  wolfSSL: explicitly use compatibility layer
+
+  This change removes adding an include `$prefix/wolfssl` or similar to
+  allow for openssl include aliasing. Include paths of `wolfssl/openssl/`
+  are used to explicitly use wolfSSL includes. This fixes cmake builds as
+  well as avoiding potentially using openSSL headers since include path
+  order is not guaranteed.
+
+  Closes #8864
+
+- curl: deprecate --random-file and --egd-file
+
+  As libcurl no longer has any functionality for them, the tool now does
+  nothing with them.
+
+  Closes #8670
+
+- opts: deprecate RANDOM_FILE and EGDSOCKET
+
+  These two options were only ever used for the OpenSSL backend for
+  versions before 1.1.0. They were never used for other backends and they
+  are not used with recent OpenSSL versions. They were never used much by
+  applications.
+
+  The defines RANDOM_FILE and EGD_SOCKET can still be set at build-time
+  for ancient EOL OpenSSL versions.
+
+  Closes #8670
+
+- [Harry Sintonen brought this change]
+
+  bindlocal: don't use a random port if port number would wrap
+
+  Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port
+  65535 the code would fall back to random port rather than giving up.
+
+  Closes #8862
+
+Daniel Gustafsson (16 May 2022)
+- transfer: Fix potential NULL pointer dereference
+
+  Commit 0ef54abf5208 accidentally used the conn variable before the
+  assertion for it being NULL. Fix by moving the assignment which use
+  conn to after the assertion.
+
+  Closes: #8857
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- docs: clarify data replacement policy for MIME API
+
+  The API documentation for the MIME functions specify that the parts
+  can be set twice, with the last call winning.  While true, the user
+  can set the parts n times for n > 2, reword to specify multiple API
+  calls instead.
+
+  Closes: #8860
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (16 May 2022)
+- [vvb2060 on github brought this change]
+
+  ngtcp2: support boringssl crypto backend
+
+  Closes #8789
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  quic: add Curl_quic_idle
+
+  Add Curl_quic_idle which is called when no HTTP level read or write is
+  performed.  It is a good place to handle timer expiry for QUIC transport
+  (.e.g, retransmission).
+
+  Closes #8698
+
+- [Gregor Jasny brought this change]
+
+  mprintf: ignore clang non-literal format string
+
+  Closes #8740
+
+- [Nick Zitzmann brought this change]
+
+  sectransp: check for a function defined when __BLOCKS__ is undefined
+
+  SecTrustEvaluateAsync() is defined in the macOS 10.7 SDK, but it
+  requires Grand Central Dispatch to be supported by the compiler, and
+  some third-party macOS compilers do not support Grand Central Dispatch.
+  SecTrustCopyPublicKey() is not present in macOS 10.6, so this shouldn't
+  adversely affect anything.
+
+  Fixes #8846
+  Reported-by: Egor Pugin
+  Closes #8854
+
+Daniel Gustafsson (16 May 2022)
+- test412/413: Use version macro for User-Agent
+
+  Commit 46d45ea3a incorrectly hardcoded the User-Agent in the test
+  output file which breaks when curlver is updated. Shift to using
+  the %VERSION macro instead.
+
+  Closes: #8856
+
+- macos9: remove partial support
+
+  The support for compiling on Mac OS 9 hasn't been modified since 2001
+  and has no active maintainer or packager, so it's time to remove it as
+  it's incredibly unlikely to work. If a maintainer re-emerges it can be
+  resurrected from Git history.
+
+  Closes: #8836
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (16 May 2022)
+- test1635: verify --fail-with-body with --retry
+
+  Almost a dupe of 1634
+
+  Closes #8847
+
+- tool_operate: make sure --fail-with-body works with --retry
+
+  ... in the same way --fail already does.
+
+  Reported-by: Jakub Bochenski
+  Fixes #8845
+  Closes #8847
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: Correct use of ngtcp2 and nghttp3 signed integer types
+
+  Closes #8851
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: Fix alert_read_func return value
+
+  Closes #8852
+
+- [Harry Sintonen brought this change]
+
+  Curl_parsenetrc: don't access local pwbuf outside of scope
+
+  Accessing local variables outside of the scope is forbidden and
+  depending on the compiler can result in the value being
+  overwritten. Fixed by moving the pwbuf to be in scope.
+
+  Closes #8850
+
+- RELEASE-NOTES: synced
+
+  and bump curlver to 7.83.2 for now (but likely to become 7.84.0 soon)
+
+- [Frazer Smith brought this change]
+
+  ci: update github actions
+
+  - bump actions/checkout from 2 to 3
+  - bump actions/upload-artifact from 1 to 3
+  - bump github/codeql-actions from 1 to 2
+  - use version tag for actions/checkout
+
+  Closes #8843
+
+- test1919: verify CURLOPT_XOAUTH2_BEARER leak fix
+
+- url: free old conn better on reuse
+
+  Make use of conn_free() better and avoid duplicate code.
+
+  Reported-by: Andrea Pappacoda
+  Fixes #8841
+  Closes #8842
+
+Jay Satiro (14 May 2022)
+- FAQ: Clarify Windows double quote usage
+
+  - Windows command prompt doesn't use literal quoting via single quotes.
+
+  - Windows command prompt inner double quotes are escaped with a
+    backslash.
+
+  - Windows powershell does use single quotes but curl is not a powershell
+    script so the arguments may not be passed on correctly.
+
+  - Windows powershell inner double quotes seems can be passed to curl if
+    the outer quotes are double quotes and an escape of backslash-backtick
+    is used.
+
+  Command prompt example:
+
+  ~~~
+  getargs -v -d "\"a\""
+
+  argv[0]: getargs
+  argv[1]: -v
+  argv[2]: -d
+  argv[3]: "a"
+  ~~~
+
+  Ref: https://github.com/curl/curl/issues/8818
+  Ref: https://gist.github.com/jay/19aba48653bd591cf4b90eb9249a302c
+
+  Reported-by: KotlinIsland@users.noreply.github.com
+
+  Closes https://github.com/curl/curl/pull/8823
+
+Daniel Stenberg (12 May 2022)
+- github/workflows/nss: apt update first
+
+  Fix "libnss3-dev_3.49.1-1ubuntu1.6_amd64.deb 404 Not Found"
+
+  Closes #8837
+
+- page-footer: mention exit code zero too
+
+  Success (zero) is also an "exit code" worth mentioning.
+
+  Closes #8833
+
+Daniel Gustafsson (12 May 2022)
+- gssapi: initialize gss_buffer_desc strings
+
+  Explicitly initialize gss_buffer_desc strings such that a call to
+  freeing resources will succeed even if no data has been allocated
+  to it.
+
+  Reported-by: Jay Satiro <raysatiro@yahoo.com>
+
+- gssapi: improve handling of errors from gss_display_status
+
+  In case gss_display_status() returns an error, avoid trying to add
+  it to the buffer as the message may well be a NULL pointer.
+
+  Originally this fix comes from a discussion in issue #8816.
+
+  Closes: #8832
+  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+
+Jay Satiro (12 May 2022)
+- [steini2000 brought this change]
+
+  http2: always debug print stream id in decimal with %u
+
+  Prior to this change the stream id shown could be hex or decimal which
+  was inconsistent and confusing.
+
+  Closes https://github.com/curl/curl/pull/8808
+
+Kamil Dudka (11 May 2022)
+- url: remove redundant #ifdefs in allocate_conn()
+
+  No change in behavior intended by this commit.
+
+Daniel Stenberg (11 May 2022)
+- [Fabian Keil brought this change]
+
+  tests 266, 116 and 1540: add a small write delay
+
+  This makes it more likely that the trailer is received
+  seperately from the last-chunk.
+
+  curl doesn't seem to care about this but it makes the tests
+  more useful when testing external proxies like Privoxy.
+
+- [Fabian Keil brought this change]
+
+  tests 1117,1238,1523: adjust writedelay servercmds
+
+  ... so the delays are the same now that the unit
+  is in milliseconds.
+
+- [Fabian Keil brought this change]
+
+  tests/server/sws.c: change the HTTP writedelay unit to milliseconds
+
+  This allows to use write delays for large responses without
+  resulting in the test taking an unreasonable amount of time.
+
+  In many cases delaying writes by a whole second or more isn't
+  necessary for the desired effect.
+
+  Closes #8827
+
+Daniel Gustafsson (11 May 2022)
+- aws-sigv4: fix potentional NULL pointer arithmetic
+
+  We need to check if the strchr() call returns NULL (due to missing
+  char) before we use the returned value in arithmetic.  There is no
+  live bug here, but fixing it before it can become for hygiene.
+
+  Closes: #8814
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (11 May 2022)
+- quiche: support ca-fallback
+
+  Follow-up to b01f3e679f4c1ea3 which added this for ngtcp2/openssl
+
+  Removed from KNOWN_BUGS
+
+  Fixes #8696
+  Closes #8830
+
+Daniel Gustafsson (11 May 2022)
+- x509asn1: mark msnprintf return as unchecked
+
+  We have lots of unchecked msnprintf calls, and this particular msnprintf
+  call isn't more interesting than the others, but this one yields a Coverity
+  warning so let's implicitly silence it. Going over the other invocations
+  is probably a worthwhile project, but for now let's keep the static
+  analyzers happy.
+
+  Closes: #8831
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Version 7.83.1 (11 May 2022)
+
+Daniel Stenberg (11 May 2022)
+- RELEASE-NOTES: synced
+
+  curl 7.83.1 release
+
+- THANKS: added contributors from 7.83.1
+
+- zuul: fix the ngtcp2-gnutls build
+
+  Add packages and tweak the configure options.
+
+  Use the GnuTLS 3.7.4 branch (not main).
+
+  Closes #8829
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: add ca-fallback support for OpenSSL backend
+
+  Closes #8828
+
+- url: check SSH config match on connection reuse
+
+  CVE-2022-27782
+
+  Reported-by: Harry Sintonen
+  Bug: https://curl.se/docs/CVE-2022-27782.html
+  Closes #8825
+
+- tls: check more TLS details for connection reuse
+
+  CVE-2022-27782
+
+  Reported-by: Harry Sintonen
+  Bug: https://curl.se/docs/CVE-2022-27782.html
+  Closes #8825
+
+- cookies: make bad_domain() not consider a trailing dot fine
+
+  The check for a dot in the domain must not consider a single trailing
+  dot to be fine, as then TLD + trailing dot is fine and curl will accept
+  setting cookies for it.
+
+  CVE-2022-27779
+
+  Reported-by: Axel Chong
+  Bug: https://curl.se/docs/CVE-2022-27779.html
+  Closes #8820
+
+- test977: reproduce ability to set cookie on TLD
+
+  When PSL is not enabled
+
+- scripts/contributors.sh: correct the copyright range
+
+- docs/RELEASE-PROCEDURE.md: refreshed and adjsuted the release dates
+
+- test379: verify --remove-on-error with --no-clobber
+
+- post_per_transfer: remove the updated file name
+
+  When --remove-on-error is used with --no-clobber, it might have an
+  updated file name to remove.
+
+  Bug: https://curl.se/docs/CVE-2022-27778.html
+
+  CVE-2022-27778
+
+  Reported-by: Harry Sintonen
+
+  Closes #8824
+
+- hsts: ignore trailing dots when comparing hosts names
+
+  CVE-2022-30115
+
+  Reported-by: Axel Chong
+  Bug: https://curl.se/docs/CVE-2022-30115.html
+  Closes #8821
+
+- test440/441: verify HSTS with trailing dots
+
+- libtest/lib1560: verify the host name percent decode fix
+
+- urlapi: reject percent-decoding host name into separator bytes
+
+  CVE-2022-27780
+
+  Reported-by: Axel Chong
+  Bug: https://curl.se/docs/CVE-2022-27780.html
+  Closes #8826
+
+- nss: return error if seemingly stuck in a cert loop
+
+  CVE-2022-27781
+
+  Reported-by: Florian Kohnhäuser
+  Bug: https://curl.se/docs/CVE-2022-27781.html
+  Closes #8822
+
+- test412/413: verify alt-svc with trailing dots
+
+- altsvc: fix host name matching for trailing dots
+
+  Closes #8819
+
+- [Garrett Squire brought this change]
+
+  hyper: fix test 357
+
+  This change fixes the hyper API such that PUT requests that receive a
+  417 response can retry without the Expect header.
+
+  Closes #8811
+
+- [Harry Sintonen brought this change]
+
+  sectransp: bail out if SSLSetPeerDomainName fails
+
+  Before the code would just warn about SSLSetPeerDomainName() errors.
+
+  Closes #8798
+
+- http_proxy/hyper: handle closed connections
+
+  Enable test 1021 for hyper builds.
+
+  Patched-by: Prithvi MK
+  Fixes #8700
+  Closes #8806
+
+- KNOWN_BUGS: timeout when reusing a http3 connection
+
+  Closes #8764
+
+- KNOWN_BUGS: configure --with-ca-fallback is not supported by h3
+
+  Closes #8696
+
+- [Ryan Schmidt brought this change]
+
+  Makefile: fix "make ca-firefox"
+
+  Closes #8804
+
+Daniel Gustafsson (5 May 2022)
+- tests: fix markdown formatting in README
+
+  The asterisk in the abbreviation *NIX (for UNIX/Linux) needs to be
+  escaped to not mean start of italic formatting. This is consistent
+  with docs/RELEASE-PROCEDURE.md.
+
+  Closes: #8802
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (5 May 2022)
+- TODO: expand on "Expose tried IP addresses that failed"
+
+  Ref: #8794
+
+Daniel Gustafsson (5 May 2022)
+- [Fabian Keil brought this change]
+
+  tests/server: declare variable 'reqlogfile' static
+
+  Silences the warning:
+
+       CC       socksd-socksd.o
+     socksd.c:143:13: warning: no previous extern declaration for
+      non-static variable 'reqlogfile' [-Wmissing-variable-declarations]
+     const char *reqlogfile = DEFAULT_REQFILE;
+                 ^
+     socksd.c:143:7: note: declare 'static' if the variable is not
+      intended to be used outside of this translation unit
+     const char *reqlogfile = DEFAULT_REQFILE;
+           ^
+     1 warning generated.
+
+  ... when compiling with clang 13.
+
+  Closes: #8799
+  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
+- HTTP-COOKIES: add missing CURLOPT_COOKIESESSION
+
+  Commit 980a47b42 added support for ignoring session cookies, but it
+  was never added to the documentation.
+
+  Closes: #8795
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (5 May 2022)
+- docs/THANKS: remove name duplicate
+
+- [Philip Heiduck brought this change]
+
+  .mailmap: update
+
+  Closes #8800
+
+Jay Satiro (5 May 2022)
+- mbedtls: fix some error messages
+
+  Prior to this change some of the error messages misidentified the
+  function that failed.
+
+Daniel Stenberg (5 May 2022)
+- RELEASE-NOTES: synced
+
+- [Sergey Markelov brought this change]
+
+  x509asn1: make do_pubkey handle EC public keys
+
+  Closes #8757
+
+- [Harry Sintonen brought this change]
+
+  mbedtls: bail out if rng init fails
+
+  There was a failf() call but no actual error return.
+
+  Closes #8796
+
+- [Sergey Markelov brought this change]
+
+  urlapi: address (harmless) UndefinedBehavior sanitizer warning
+
+  `while(i--)` causes runtime error: unsigned integer overflow: 0 - 1
+  cannot be represented in type 'size_t' (aka 'unsigned long')
+
+  Closes #8797
+
+- [Fabian Keil brought this change]
+
+  test{898,974,976}: add 'HTTP proxy' keywords
+
+  ... so the tests can be automatically skipped when
+  testing external HTTP proxies like Privoxy.
+
+  Closes #8791
+
+- [Harry Sintonen brought this change]
+
+  gskit_connect_step1: fixed bogus setsockopt calls
+
+  setsockopt takes a reference to value, not value. With the current
+  code this just leads to -1 return value with errno EFAULT.
+
+  Closes #8793
+
+- CURLOPT_SSH_AUTH_TYPES.3: fix the default
+
+  The default is all possible methods.
+
+  Closes #8792
+
+- CURLOPT_DOH_URL.3: mention the known bug
+
+  It is mostly duplicating info from KNOWN_BUGS but make it easier to find
+  for users of this option.
+
+  Closes #8790
+
+- CURLOPT_HSTS*FUNCTION.3: document the involved structs as well
+
+  Reviewed-By: Daniel Gustafsson
+  Closes #8788
+
+- docs/SECURITY-PROCESS.md: "Visible command line arguments"
+
+- SECURITY-PROCESS: mention "URL inconsistencies"
+
+  ... as common problems that are *not* vulns.
+
+Daniel Gustafsson (2 May 2022)
+- contributors: strip off final comma
+
+  The final row of contributors should not end with a comma as it's the
+  end of the list.
+
+  Closes: #8785
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (2 May 2022)
+- [Philip Heiduck brought this change]
+
+  misc: use "autoreconf -fi" instead buildconf
+
+  Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com>
+  Closes #8777
+
+Daniel Gustafsson (2 May 2022)
+- [Philip Heiduck brought this change]
+
+  cirrus: Use pip for Python packages on FreeBSD
+
+  Using pip instead of easy_install is more in line with how other
+  CI images are being maintained.
+
+  Closes: #8783
+  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
+- [Philip Heiduck brought this change]
+
+  cirrus: Update to FreeBSD 12.3
+
+  Closes: #8783
+  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
+- tool_getparam: simplify conditional statement
+
+  param_place cannot be NULL here since we immediately efter this block
+  perform arithmetic on it (and use it in order to get here) so there is
+  little reason to check.
+
+  Closes: #8786
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- RELEASE-NOTES: synced
+
+- gskit: remove unused function set_callback
+
+  This function has been unused since the initial commit of the GSKit
+  backend in 0eba02fd4.  The motivation for the code was getting the
+  whole certificate chain: the only place where the latter is available
+  is as a callback parameter.  Unfortunately it is not possible to pass
+  a user pointer to this callback, which precludes the possibility to
+  associate the cert chain with a data/conn structure.
+
+  For further information, search for pgsk_cert_validation_callback on:
+  https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_71/apis/gsk_attribute_set_callback.htm
+
+  As the upstream library never added a parameter like that to the API,
+  we give up the wait and remove the dead code.
+
+  Closes: #8782
+  Reviewed-by: Patrick Monnerat <patrick@monnerat.net>
+
+- curl: free resource in error path
+
+  If the new filename cannot be generated due to memory pressure, free
+  the allocated aname on the way out to avoid a small leak.
+
+  Closes: #8770
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- curl: guard against size_t wraparound in no-clobber code
+
+  When generating the new filename, make sure we aren't overflowing the
+  size_t limit when calculating the new length. This is mostly academic
+  but good code hygeine nonetheless.
+
+  Closes: #8771
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Daniel Stenberg (30 Apr 2022)
+- gha: build msh3
+
+  Closes #8779
+
+- scripts/cijobs.pl: try "current branch" first then "master"
+
+- [Yusuke Nakamura brought this change]
+
+  msh3: get msh3 version from MsH3Version
+
+  Closes #8762
+
+- [Yusuke Nakamura brought this change]
+
+  msh3: psss remote_port to MsH3ConnectionOpen
+
+  MsH3 supported additional "Port" parameter to connect not hosted on
+  443 port QUIC website.
+
+  * https://github.com/nibanks/msh3/releases/tag/v0.3.0
+  * https://github.com/nibanks/msh3/pull/37
+
+  Closes #8762
+
+- [Christian Weisgerber brought this change]
+
+  openssl: define HAVE_SSL_CTX_SET_EC_CURVES for libressl
+
+  SSL_CTX_set1_curves_list() has been available since LibreSSL 2.5.3,
+  released five years ago.
+
+  Bug: https://curl.se/mail/lib-2022-04/0059.html
+  Closes #8773
+
+- http: move Curl_allow_auth_to_host()
+
+  It was mistakenly put within the CURL_DISABLE_HTTP_AUTH #ifdef
+
+  Reported-by: Michael Olbrich
+  Fixes #8772
+  Closes #8775
+
+Daniel Gustafsson (29 Apr 2022)
+- msh3: print boolean value as text representation
+
+  Print the boolean value as its string representation instead of with
+  %hhu which isn't a format we typically use.
+
+  Closes: #8763
+  Reviewed-by: Nick Banks <nibanks@microsoft.com>
+
+Daniel Stenberg (29 Apr 2022)
+- data/test376: set a proper name
+
+- GHA/mbedtls: enabled nghttp2 in the build
+
+  Closes #8767
+
+- mbedtls: fix compile when h2-enabled
+
+  Fixes #8766
+  Reported-by: LigH-de on github
+  Closes #8768
+
+- RELEASE-NOTES: synced
+
+  bumped curlver to 7.83.1-dev
+
+- SECURITY-PROCESS: extended
+
+  Also clarify BUG-BOUNTY.md with IBB details.
+
+  Closes #8754
+
+- [Adam Rosenfield brought this change]
+
+  conn: fix typo 'connnection' -> 'connection' in two function names
+
+  Closes #8759
+
+Version 7.83.0 (27 Apr 2022)
+
+Daniel Stenberg (27 Apr 2022)
+- RELEASE-NOTES: synced
+
+  The 7.83.0 release
+
+- docs/THANKS: contributors from 7.83.0
+
+- test 898/974/976: require proxy to run
+
+  Fixes #8755
+  Reported-by: Marc Hörsken
+  Closes #8756
+
+- gnutls: don't leak the SRP credentials in redirects
+
+  Follow-up to 620ea21410030 and 139a54ed0a172a
+
+  Reported-by: Harry Sintonen
+  Closes #8752
+
+- CURLOPT*TLSAUTH: they only work with OpenSSL or GnuTLS
+
+  Closes #8753
+
+- openssl: don't leak the SRP credentials in redirects either
+
+  Follow-up to 620ea21410030
+
+  Reported-by: Harry Sintonen
+  Closes #8751
+
+- [Liam Warfield brought this change]
+
+  hyper: fix tests 580 and 581 for hyper
+
+  Hyper now has the ability to preserve header order. This commit adds a
+  few lines setting the connection options for this feature.
+
+  Related to issue #8617
+  Closes #8707
+
+- conncache: remove name arg from Curl_conncache_find_bundle
+
+  To simplify, and also since the returned name is not the full actual
+  name used for the check. The port number and zone id is also involved,
+  so just showing the name is misleading.
+
+  Closes #8750
+
+- tests: verify the fix for CVE-2022-27774
+
+   - Test 973 redirects from HTTP to FTP, clear auth
+   - Test 974 redirects from HTTP to HTTP different port, clear auth
+   - Test 975 redirects from HTTP to FTP, permitted to keep auth
+   - Test 976 redirects from HTTP to HTTP different port, permitted to keep
+     auth
+
+- transfer: redirects to other protocols or ports clear auth
+
+  ... unless explicitly permitted.
+
+  Bug: https://curl.se/docs/CVE-2022-27774.html
+  Reported-by: Harry Sintonen
+  Closes #8748
+
+- connect: store "conn_remote_port" in the info struct
+
+  To make it available after the connection ended.
+
+- cookie.d: clarify when cookies are always sent
+
+- test898: verify the fix for CVE-2022-27776
+
+  Do not pass on Authorization headers on redirects to another port
+
+- http: avoid auth/cookie on redirects same host diff port
+
+  CVE-2022-27776
+
+  Reported-by: Harry Sintonen
+  Bug: https://curl.se/docs/CVE-2022-27776.html
+  Closes #8749
+
+- libssh2: make the md5 comparison fail if wrong length
+
+  Making it just skip the check unless exactly 32 is too brittle. Even if
+  the docs says it needs to be exactly 32, it is be safer to make the
+  comparison fail here instead.
+
+  Reported-by: Harry Sintonen
+  Bug: https://hackerone.com/reports/1549461
+  Closes #8745
+
+- conncache: include the zone id in the "bundle" hashkey
+
+  Make connections to two separate IPv6 zone ids create separate
+  connections.
+
+  Reported-by: Harry Sintonen
+  Bug: https://curl.se/docs/CVE-2022-27775.html
+  Closes #8747
+
+- [Patrick Monnerat brought this change]
+
+  url: check sasl additional parameters for connection reuse.
+
+  Also move static function safecmp() as non-static Curl_safecmp() since
+  its purpose is needed at several places.
+
+  Bug: https://curl.se/docs/CVE-2022-22576.html
+
+  CVE-2022-22576
+
+  Closes #8746
+
+- libssh2: compare sha256 strings case sensitively
+
+  Reported-by: Harry Sintonen
+  Bug: https://hackerone.com/reports/1549435
+  Closes #8744
+
+- tool_getparam: error out on missing -K file
+
+  Add test 411 to verify.
+
+  Reported-by: Median Median Stride
+  Bug: https://hackerone.com/reports/1542881
+  Closes #8731
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: deal with sub-millisecond timeout
+
+  Closes #8738
+
+- misc: update copyright year ranges
+
+- c_escape: escape '?' in generated --libcurl code
+
+  In order to avoid the risk of it being used in an accidental trigraph in
+  the generated code.
+
+  Reported-by: Harry Sintonen
+  Bug: https://hackerone.com/reports/1548535
+  Closes #8742
+
+- [Philip Heiduck brought this change]
+
+  mlc: curl.zuul.vexxhost.dev is reachable again
+
+  remove it from ignorelist for linkcheck
+
+  Closes #8736
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: avoid busy loop in low CWND situation
+
+  Closes #8739
+
+- TODO: telnet - exit immediately upon connection if stdin is /dev/null
+
+  Suggested-by: Robin A. Meade
+  URL: https://curl.se/mail/archive-2022-04/0027.html
+
+- [Kushal Das brought this change]
+
+  docs: updates spellings with full words
+
+  Closes #8730
+
+- tests/FILEFORMAT.md: spellfix
+
+Daniel Gustafsson (21 Apr 2022)
+- misc: fix typos
+
+  Fix a few random typos is comments and workflow names.
+
+- macos: fix .plist installation into framework
+
+  The copy command introduced in e498a9b1f had leftover '>' from the
+  previous sed command it replaced, which broke its syntax.  Fix by
+  removing.
+
+  Reported-by: Emanuele Torre <torreemanuele6@gmail.com>
+
+Daniel Stenberg (21 Apr 2022)
+- [Christopher Degawa brought this change]
+
+  Makefile: fix ca-bundle due to mk-ca-bundle.pl being moved
+
+  The script was moved in 8e22fc68e7dda43e9f but the lines that called it
+  was not changed to reflect it's new position
+
+  Signed-off-by: Christopher Degawa <ccom@randomderp.com>
+
+  Closes #8728
+
+Daniel Gustafsson (20 Apr 2022)
+- macos: set .plist version in autoconf
+
+  Set the libcurl version in libcurl.plist like how libcurl.vers is
+  created.
+
+  Closes: #8692
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Reviewed-by: Nick Zitzmann <nickzman@gmail.com>
+
+- cookies: Improve errorhandling for reading cookiefile
+
+  The existing programming had some issues with errorhandling for reading
+  the cookie file. If the file failed to open, we would silently ignore it
+  and continue as if there was no file (or stdin) passed. In this case, we
+  would also call fclose() on the NULL FILE pointer, which is undefined
+  behavior. Fix by ensuring that the FILE pointer is set before calling
+  fclose on it, and issue a warning in case the file cannot be opened.
+  Erroring out on nonexisting file would break backwards compatibility of
+  very old behavior so we can't really go there.
+
+  Closes: #8699
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+  Reviewed-by: Jay Satiro <raysatiro@yahoo.com>
+
+Daniel Stenberg (20 Apr 2022)
+- libcurl-tutorial.3: spellfix and minor polish
+
+- CURLINFO_PRIMARY_PORT.3: spellfix
+
+  Reported-by: Patrick Monnerat
+
+- [Jay Dommaschk brought this change]
+
+  libssh: fix double close
+
+  libssh closes the socket in ssh_diconnect() so make sure that libcurl
+  does not also close it.
+
+  Fixes #8708
+  Closes #8718
+
+Jay Satiro (20 Apr 2022)
+- [Gisle Vanem brought this change]
+
+  unit1620: call global_init before calling Curl_open
+
+  Curl_open calls the resolver init and on Windows if the resolver backend
+  is c-ares then the Windows sockets library (winsock) must already have
+  been initialized (via global init).
+
+  Ref: https://github.com/curl/curl/pull/8540#issuecomment-1059771800
+
+  Closes https://github.com/curl/curl/pull/8719
+
+Daniel Stenberg (19 Apr 2022)
+- CURLINFO_PRIMARY_PORT.3: clarify which port this is
+
+  As it was not entirely clear previously.
+
+  Closes #8725
+
+- CURLOPT_UNRESTRICTED_AUTH.3: extended explanation
+
+  Include details about Authentication headers.
+
+  Reported-by: Brad Spencer
+  Fixes #8724
+  Closes #8726
+
+- .github/workflows/macos.yml: add a libssh job with c-ares
+
+  ... to enable the memdebug system
+
+  Closes #8720
+
+- RELEASE-NOTES: synced
+
+Jay Satiro (17 Apr 2022)
+- [Gisle Vanem brought this change]
+
+  docs/HTTP3.md: fix typo
+
+  also fix msh3 section formatting
+
+  Ref: https://github.com/curl/curl/commit/37492ebb#r70980087
+
+Marc Hoersken (17 Apr 2022)
+- timediff.[ch]: add curlx helper functions for timeval conversions
+
+  Also move timediff_t definitions from timeval.h to timediff.h and
+  then make timeval.h include the new standalone-capable timediff.h.
+
+  Reviewed-by: Jay Satiro
+  Reviewed-by: Daniel Stenberg
+
+  Supersedes #5888
+  Closes #8595
+
+Daniel Stenberg (17 Apr 2022)
+- [Balakrishnan Balasubramanian brought this change]
+
+  tests: refactor server/socksd.c to support --unix-socket
+
+  Closes #8687
+
+- [Emanuele Torre brought this change]
+
+  tool_paramhlp: use feof(3) to identify EOF correctly when using fread(3)
+
+  This loop was using the number of bytes read from the file as condition
+  to keep reading.
+
+  From Linux's fread(3) man page:
+  > On success, fread() and fwrite() return the number of items read or
+  > written. This number equals the number of bytes transferred only when
+  > size is 1. If an error occurs, or the end of the file is reached, the
+  > return value is a short item count (or zero).
+  >
+  > The file position indicator for the stream is advanced by the number
+  > of bytes successfully read or written.
+  >
+  > fread() does not distinguish between end-of-file and error, and
+  > callers must use feof(3) and ferror(3) to determine which occurred.
+
+  This means that nread!=0 doesn't make much sense as an end condition for
+  the loop: nread==0 doesn't necessarily mean that EOF has been reached or
+  an error has occured (but that is usually the case) and nread!=0 doesn't
+  necessarily mean that EOF has not been reached or that no read errors
+  have occured. feof(3) and ferror(3) should be uses when using fread(3).
+
+  Currently curl has to performs an extra fread(3) call to get a return
+  value equal to 0 to stop looping.
+
+  This usually "works" (even though nread==0 shouldn't be interpreted as
+  EOF) if stdin is a pipe because EOF usually marks the "real" end of the
+  stream, so the extra fread(3) call will return immediately and the extra
+  read syscall won't be noticeable:
+
+      bash-5.1$ strace -e read curl -s -F file=@- 0x0.st <<< a 2>&1 |
+      > tail -n 5
+      read(0, "a\n", 4096)                    = 2
+      read(0, "", 4096)                       = 0
+      read(0, "", 4096)                       = 0
+      http://0x0.st/oRs.txt
+      +++ exited with 0 +++
+      bash-5.1$
+
+  But this doesn't work if curl is reading from stdin, stdin is a
+  terminal, and the EOF is being emulated using a shell with ^D. Two
+  consecutive ^D will be required in this case to actually make curl stop
+  reading:
+
+      bash-5.1$ curl -F file=@- 0x0.st
+      a
+      ^D^D
+      http://0x0.st/oRs.txt
+      bash-5.1$
+
+  A possible workaround to this issue is to use a program that handles EOF
+  correctly to indirectly send data to curl's stdin:
+
+      bash-5.1$ cat - | curl -F file=@- 0x0.st
+      a
+      ^D
+      http://0x0.st/oRs.txt
+      bash-5.1$
+
+  This patch makes curl handle EOF properly when using fread(3) in
+  file2memory() so that the workaround is not necessary.
+
+  Since curl was previously ignoring read errors caused by this fread(3),
+  ferror(3) is also used in the condition of the loop: read errors and EOF
+  will have the same meaning; this is done to somewhat preserve the old
+  behaviour instead of making the command fail when a read error occurs.
+
+  Closes #8701
+
+- gen.pl: change wording for mutexed options
+
+  Instead of saying "This option overrides NNN", now say "This option is
+  mutually exclusive to NNN" in the generated man page ouput, as the
+  option does not in all cases actually override the others but they are
+  always mutually exclusive.
+
+  Ref: #8704
+  Closes #8716
+
+- curl: error out if -T and -d are used for the same URL
+
+  As one implies PUT and the other POST, both cannot be used
+  simultaneously.
+
+  Add test 378 to verify.
+
+  Reported-by: Boris Verkhovskiy
+  Fixes #8704
+  Closes #8715
+
+- lib: remove exclamation marks
+
+  ... from infof() and failf() calls. Make them less attention seeking.
+
+  Closes #8713
+
+- fail.d: tweak the description
+
+  Reviewed-by: Daniel Gustafsson
+  Suggested-by: Robert Charles Muir
+  Ref: https://twitter.com/rcmuir/status/1514915401574010887
+
+  Closes #8714
+
+Daniel Gustafsson (15 Apr 2022)
+- docs: Fix missing semicolon in example code
+
+  Multiple share examples were missing a semicolon on the line defining
+  the CURLSHcode variable.
+
+  Closes: #8697
+  Reported-by: Michael Kaufmann <mail@michael-kaufmann.ch>
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- infof: consistent capitalization of warning messages
+
+  Ensure that all infof calls with a warning message are capitalized
+  in the same way.  At some point we should probably set up a style-
+  guide for infof but until then let's aim for a little consistenncy
+  where we can.
+
+  Closes: #8711
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+- RELEASE-NOTES: synced
+
+- [Matteo Baccan brought this change]
+
+  perl: removed a double semicolon at end of line
+
+  Remove double semicolons at end of line in Perl code.
+
+  Closes: #8709
+  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
+- curl_easy_header: fix typos in documentation
+
+  Closes: #8694
+  Reviewed-by: Daniel Stenberg <daniel@haxx.se>
+
+Marcel Raad (11 Apr 2022)
+- appveyor: add Cygwin build
+
+  Closes https://github.com/curl/curl/pull/8693
+
+- appveyor: only add MSYS2 to PATH where required
+
+  Closes https://github.com/curl/curl/pull/8693
+
+Daniel Stenberg (10 Apr 2022)
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: fix memory leak
+
+  Closes #8691
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: remove remote_addr which is not used in a meaningful way
+
+  Closes #8689
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: enlarge H3_SEND_SIZE
+
+  Make h3_SEND_SIZE larger because current value (20KiB) is too small
+  for the high latency environment.
+
+  Closes #8690
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: fix HTTP/3 upload stall and avoid busy loop
+
+  This commit fixes HTTP/3 upload stall if upload data is larger than
+  H3_SEND_SIZE.  Only check writability of socket if a stream is
+  writable to avoid busy loop when QUIC flow control window is filled
+  up, or upload buffer is full.
+
+  Closes #8688
+
+- [Nick Banks brought this change]
+
+  msh3: add support for QUIC and HTTP/3 using msh3
+
+  Considered experimental, as the other HTTP/3 backends.
+
+  Closes #8517
+
+- TODO: "SFTP with SCP://"
+
+- GHA: move bearssl jobs over from zuul
+
+  Closes #8684
+
+- data/DISABLED: disable test 313 on bearssl builds
+
+  Closes #8684
+
+- runtests: add 'bearssl' as testable feature
+
+  Closes #8684
+
+- GHA: add openssl3 jobs moved over from zuul
+
+  Closes #8683
+
+- schannel: remove dead code that will never run
+
+  As the condition can't ever evaluate true
+
+  Reported-by: Andrey Alifanov
+  Ref: #8675
+  Closes #8677
+
+- connecache: remove duplicate connc->closure_handle check
+
+  The superfluous extra check could cause analyzer false positives
+  and doesn't serve any purpose.
+
+  Closes #8676
+
+- [Michał Antoniak brought this change]
+
+  mbedtls: remove server_fd from backend
+
+  Closes #8682
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: use token when detecting :status header field
+
+  Closes #8679
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: make curl 1ms faster
+
+  Pass 0 for an already expired timer.
+
+  Closes #8678
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: fix QUIC_IDLE_TIMEOUT
+
+  QUIC_IDLE_TIMEOUT should be of type ngtcp2_duration which is
+  nanoseconds resolution.
+
+  Closes #8678
+
+- English: use American spelling consistently
+
+  Authorization, Initialization, Organization etc.
+
+  Closes #8673
+
+Daniel Gustafsson (5 Apr 2022)
+- [Sascha Zengler brought this change]
+
+  BUGS: Fix incorrect punctuation
+
+  Closes #8672
+  Reviewed-by: Daniel Gustafsson <daniel@yesql.se>
+
+Daniel Stenberg (4 Apr 2022)
+- tool_listhelp.c: uppercase URL
 
 - RELEASE-NOTES: synced
 
-- github: add a workflow with libssh2 on macOS using cmake
-  
-  Closes #7047
-
-- sws: allow HTTP requests up to 2MB in size
-  
-  To allow tests with slightly larger payloads. Like #7071 ...
-  
-  Closes #7075
-
-Marc Hoersken (16 May 2021)
-- CI/azure: increase verbosity and fix outdated task names
-  
-  Closes #7063
-
-- CI/cirrus: add shared and static Windows release builds
-  
-  Azure Pipelines is currently being used for debug builds,
-  let's also run some non-debug (release) Windows builds and
-  make use of previously underutilized Cirrus CI for that.
-  
-  Reviewed-by: Marcel Raad
-  
-  Closes #6991
-
-Daniel Stenberg (16 May 2021)
-- CURLOPT_CAPATH.3: defaults to a path, not NULL
-  
-  Reported-by: Andrew Barnert
-  
-  Closes #7062
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  c-hyper: handle body on HYPER_TASK_EMPTY
-  
-  Some of the time, we get a HYPER_TASK_EMPTY response before the status
-  line, headers, and body have been read. Previously, that would cause us
-  to poll again, leading to a 1 second timeout.
-  
-  The HYPER_TASK_EMPTY docs say:
-  
-     The value of this task is null (does not imply an error).
-  
-  So, if we receive a HYPER_TASK_EMPTY, continue on with processing the
-  response.
-  
-  Reported-by: Kevin Burke
-  Fixes #7064
-  Closes #7070
-
-- [Ikko Ashimine brought this change]
-
-  tool_getparam: fix comment typo in tool_getparam.c
-  
-  enfore -> enforce
-  
-  Closes #7074
-
-- mem-include-scan.pl: require a non-word letter before memory funcs
-  
-  ... so that ldap_memfree() for example doesn't match the scan for free.
-  
-  Closes #7061
-
-- version: free the openldap info correctly
-  
-  ... to avoid memory leaks.
-  
-  Follow-up to: bf0feae7768d9
-  Closes #7061
-
-- dupset: remove totally off comment
-  
-  Closes #7067
-
-- configure: if asked for, fail if ldap is not found
-  
-  Reported-by: Jakub Zakrzewski
-  Fixes #7053
-  Closes #7055
-
-- version: add OpenLDAP version in the output
-  
-  Assisted-by: Howard Chu
-  Closes #7054
-
-Jay Satiro (13 May 2021)
-- [Joel Depooter brought this change]
+- http: streamclose "already downloaded"
+
+  Instead of connclose()ing, since when HTTP/2 is used it doesn't need to
+  close the connection as stopping the current transfer is enough.
+
+  Reported-by: Evangelos Foutras
+  Closes #8665
+
+Jay Satiro (1 Apr 2022)
+- ftp: fix error message for partial file upload
+
+  - Show the count of bytes written on partial file upload.
+
+  Prior to this change the error message mistakenly showed the count of
+  bytes read, not written.
+
+  Bug: https://github.com/curl/curl/discussions/8637
+  Reported-by: Taras Kushnir
+
+  Closes https://github.com/curl/curl/pull/8649
+
+Daniel Stenberg (1 Apr 2022)
+- http: correct the header error message to say colon
+
+  Not semicolon
+
+  Reported-by: Gisle Vanem
+  Ref: #8666
+  Closes #8667
+
+- lib: #ifdef on USE_HTTP2 better
+
+  ... as nghttp2 might not be the library that provides HTTP/2 support.
+
+  Closes #8661
+
+- [Michał Antoniak brought this change]
+
+  mbedtls: remove 'protocols' array from backend when ALPN is not used
+
+  Closes #8663
+
+- http2: RST the stream if we stop it on our own will
+
+  For the "simulated 304" case the done-call isn't considered "premature"
+  but since the server didn't close the stream it needs to be reset to
+  stop delivering data.
+
+  Closes #8664
+
+- http: close the stream (not connection) on time condition abort
+
+  Closes #8664
+
+- http2: handle DONE called for the paused stream
+
+  As it could otherwise stall all streams on the connection
+
+  Reported-by: Evangelos Foutras
+  Fixes #8626
+  Closes #8664
+
+- tls: make mbedtls and NSS check for h2, not nghttp2
+
+  This makes them able to also negotiate HTTP/2 even when built to use
+  hyper for h2.
+
+  Closes #8656
+
+- tests/libtest/lib670.c: fixup the copyright year range
+
+  follow-up to b54e18640ea4b7
+
+- [Leandro Coutinho brought this change]
+
+  lib670: avoid double check result
+
+  Closes #8660
+
+- vtls: use a generic "ALPN, server accepted" message
+
+  Closes #8657
+
+- vtls: use a backend standard message for "ALPN: offers %s"
+
+  I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the
+  infof() call also needs a string argument: the ALPN ID.
+
+  Closes #8657
+
+- [Christian Schmitz brought this change]
+
+  strcase.h: add comment about the return code
+
+  Tool often we run into expecting this to work like strcmp, but it
+  returns 1 instead of 0 for match.
+
+  Closes #8658
+
+- vtls: provide a unified APLN-disagree string for all backends
+
+  Also rephrase to make it sound less dangerous:
 
-  schannel: Ensure the security context request flags are always set
-  
-  As of commit 54e7475, these flags would only be set when using a new
-  credential handle. When re-using an existing credential handle, the
-  flags would not be set.
-  
-  Closes https://github.com/curl/curl/pull/7051
-
-Dan Fandrich (12 May 2021)
-- tests: Fix some tag matching issues in a number of tests
-
-Daniel Stenberg (12 May 2021)
-- sasl: use 'unsigned short' to store mechanism
-  
-  ... saves a few bytes of struct size in memory and it only uses
-  10 bits anyway.
-  
-  Closes #7045
-
-- hostip: remove the debug code for LocalHost
-  
-  The Curl_resolv() had special code (when built in debug mode) for when
-  resolving the host name "LocalHost" (using that exact casing). It would
-  then get the host name from the --interface option instead.
-  
-  This development-only feature was not used by anything (anymore) and we
-  have the --resolve feature if we want to play similar tricks properly
-  going forward.
-  
-  Closes #7044
-
-- progress: reset limit_size variables at transfer start
-  
-  Otherwise the old value would linger from a previous use and would mess
-  up the network speed cap logic.
-  
-  Reported-by: Ymir1711 on github
-  
-  Fixes #7042
-  Closes #7043
+   "ALPN: server did not agree on a protocol. Uses default."
+
+  Reported-by: Nick Coghlan
+  Fixes #8643
+  Closes #8651
+
+- projects/README: converted to markdown
+
+  Closes #8652
+
+- misc: spelling fixes
+
+  Mostly in comments but also in the -w documentation for headers_json.
+
+  Closes #8647
+
+- KNOW_BUGS: HTTP3/Transfer closed with n bytes remaining to read
+
+  "HTTP/3 does not support client certs" considered fixed, at least with
+  the ngtcp2 backend.
+
+  Closes #8523
+
+- CURLOPT_PREQUOTE.3: only works for FTP file transfers, not dirs
+
+  Also add to quote.d. Add to TODO as something to add in a future.
+
+  Reported-by: anon00000000 on github
+  Closes #8602
+  Closes #8648
 
 - RELEASE-NOTES: synced
 
-- [Daniel Gustafsson brought this change]
-
-  cookies: use CURLcode for cookie_output reporting
-  
-  Writing the cookie file has multiple error conditions, and was using an
-  int with magic numbers to report the different error (which in turn were
-  disregarded anyways). This moves reporting to use a CURLcode value.
-  
-  Lightly-touched-by: Daniel Stenberg
-  
-  Closes #7037
-  Closes #6749
-
-- [Daniel Gustafsson brought this change]
-
-  cookies: make use of string duplication function
-  
-  strstore() is defined as a strdup which ensures to free the target
-  pointer before duping the source char * into it. Make use of it in
-  two more cases where it can simplify the code.
-
-- [Daniel Gustafsson brought this change]
-
-  cookies: refactor comments
-  
-  Comments in the cookie code were a bit all over the place in terms of
-  style and wording. This takes a stab at cleaning them up by keeping to
-  a single style and overall shape. Some comments are moved a little and
-  some removed alltogether due to being redundant. No functional changes
-  have been made,
-
-- [Peng-Yu Chen brought this change]
-
-  http2: skip immediate parsing of payload following protocol switch
-  
-  This is considered not harmful as a following http2_recv shall be
-  called very soon.
-  
-  This is considered helpful in the specific situation where some
-  servers (e.g. nghttpx v1.43.0) may fulfill stream 1 immediately
-  following the return of HTTP status 101, other than waiting for
-  the client-side connection preface to arrive.
-  
-  Fixes #7036
-  Closes #7040
-
-- [Peng-Yu Chen brought this change]
-
-  http2: use nghttp2_session_upgrade2 instead of nghttp2_session_upgrade
-  
-  Following the upstream deprecation of nghttp2_session_upgrade.
-  
-  Also provides further checks for requests with the HEAD method.
-  
-  Closes #7041
-
-- progress/trspeed: use a local convenient pointer to beautify code
-  
-  The function becomes easier to read and understand with less repetition.
-
-- trspeed: use long double for transfer speed calculation
-
-- progress: move transfer speed calc into function
-  
-  This silences two scan-build-11 warnings: "The result of the '/'
-  expression is undefined"
-  
-  Bug: https://curl.se/mail/lib-2021-05/0022.html
-  Closes #7035
-
-- [Cameron Cawley brought this change]
-
-  openssl: remove unneeded cast for CertOpenSystemStore()
-  
-  Closes #7025
-
-- travis: disable the libssh build
-  
-  It can't run on focal and causes warnings on bionic. Since the focal
-  failure started rather suddenly a while ago, we can suspect it might be
-  temporary.
-  
-  Added "bring back the build" to the TODO document.
-  
-  Fixes #7011
-  Closes #7012
-
-- [Peng-Yu Chen brought this change]
-
-  http: use calculated offsets inst of integer literals for header parsing
-  
-  Assumed to be a minor coding style improvement with no behavior change.
-  
-  A modern compiler is expected to have the calculation optimized during
-  compilation. It may be deemed okay even if that's not the case, since
-  the added overhead is considered very low.
-  
-  Closes #7032
-
-- [Peng-Yu Chen brought this change]
-
-  GIT-INFO: suggest using autoreconf instead of buildconf
-  
-  Follow-up to 85868537d
-  
-  Closes #7033
-
-- http: deal with partial CONNECT sends
-  
-  Also added 'CURL_SMALLSENDS' to make Curl_write() send short packets,
-  which helped verifying this even more.
-  
-  Add test 363 to verify.
-  
-  Reported-by: ustcqidi on github
-  Fixes #6950
-  Closes #7024
-
-- HTTP3: make the ngtcp2 build use the quictls fork
-  
-  ... as ngtcp2 itself documents the build this way.
-  
-  Closes #7031
-
-- http: limit the initial send amount to used upload buffer size
-  
-  Previously this logic would cap the send to CURL_MAX_WRITE_SIZE bytes,
-  but for the situations where a larger upload buffer has been set, this
-  function can benefit from sending more bytes. With default size used,
-  this does the same as before.
-  
-  Also changed the storage of the size to an 'unsigned int' as it is not
-  allowed to be set larger than 2M.
-  
-  Also added cautions to the man pages about changing buffer sizes in
-  run-time.
-  
-  Closes #7022
+- pop3/smtp: return *WEIRD_SERVER_REPLY when not understood
+
+  This leaves the CURLE_RECV_ERROR error code for explicit failure to
+  receive network data and allows users to better separate the problems.
+
+  Ref #8356
+  Reported-by: Rianov Viacheslav
+  Closes #8506
+
+- docs: lots of minor language polish
+
+  Mostly based on recent language decisions from "everything curl":
+
+  - remove contractions (isn't => is not)
+  - *an* HTTP (consistency)
+  - runtime (no hyphen)
+  - backend (no hyphen)
+  - URL is uppercase
+
+  Closes #8646
+
+Jay Satiro (29 Mar 2022)
+- projects: Update VC version names for VS2017, VS2022
+
+  - Rename VC15 -> VC14.10, VC17 -> VC14.30.
+
+  The projects directory that holds the pre-generated Visual Studio
+  project files uses VC<ver> to indicate the MSVC version. At some point
+  support for Visual Studio 2017 (Visual Studio version 15 which uses MSVC
+  14.10) was added as VC15. Visual Studio 2022 (Visual Studio version 17
+  which uses MSVC 14.30) project files were recently added and followed
+  that same format using VC17.
+
+  There is no such MSVC version (yet) as VC15 or VC17.
+
+  For VS 2017 for example, the name we use is correct as either VS17,
+  VS2017, VC14.10. I opted for the latter since we use VC for earlier
+  versions (eg VC10, VC12, etc).
+
+  Ref: https://github.com/curl/curl/pull/8438#issuecomment-1037070192
+
+  Closes https://github.com/curl/curl/pull/8447
+
+Daniel Stenberg (29 Mar 2022)
+- mqtt: better handling of TCP disconnect mid-message
+
+  Reported-by: Jenny Heino
+  Bug: https://hackerone.com/reports/1521610
+  Closes #8644
+
+- CURLOPT_DISALLOW_USERNAME_IN_URL.3: use uppercase URL
+
+- [Ian Blanes brought this change]
+
+  docs/DYNBUF: clarify documentation for Curl_dyn_ptr and Curl_dyn_uptr
+
+  Closes #8606
+
+- [Ian Blanes brought this change]
+
+  curl: fix segmentation fault for empty output file names.
+
+  Function glob_match_url set *result to NULL when called with filename =
+  "", producing an indirect NULL pointer dereference.
+
+  Closes #8606
+
+- TODO: Read keys from ~/.ssh/id_ecdsa, id_ed25519
+
+  It would be nice to expand the list of key locations curl uses for the
+  newer key types supported by libssh2.
+
+  Closes #8586
+
+- ngtcp2: update to work after recent ngtcp2 updates
+
+  Assisted-by: Tatsuhiro Tsujikawa
+  Reported-by: jurisuk on github
+  Fixes #8638
+  Closes #8639
+
+- [Farzin brought this change]
+
+  CURLOPT_PROGRESSFUNCTION.3: fix typo in example
+
+  Closes #8636
+
+- curl/header_json: output the header names in lowercase
+
+  To better allow json[“header”].
+
+  Reported-by: Peter Korsgaard
+  Bug: https://daniel.haxx.se/blog/2022/03/24/easier-header-picking-with-curl/comment-page-1/#comment-25878
+  Closes #8633
 
 - RELEASE-NOTES: synced
 
-- ngtcp2: fix the cb_acked_stream_data_offset proto
-  
-  The 'datalen' value should be 64 bit, not size_t!
-  
-  Reported-by: Dmitry Karpov
-  Bug: https://curl.se/mail/lib-2021-05/0019.html
-  Closes #7027
-
-- progress: when possible, calculate transfer speeds with microseconds
-  
-  ... this improves precision, especially for transfers in the few or even
-  sub millisecond range.
-  
-  Reported-by: J. Bromley
-  Fixes #7017
-  Closes #7020
-
-- http: reset the header buffer when sending the request
-  
-  A reused transfer handle could otherwise reuse the previous leftover
-  buffer and havoc would ensue.
-  
-  Reported-by: sergio-nsk on github
-  Fixes #7018
-  Closes #7021
-
-- curl_mprintf.3: add description
-  
-  These functions have existed in the API since the dawn of time. It is
-  about time we describe how they work, even if we discourage users from
-  using them.
-  
-  Closes #7010
-
-- [Timothy Gu brought this change]
-
-  URL-SYNTAX: update IDNA section for WHATWG spec changes
-  
-  WHATWG URL has dictated the use of Nontransitional Processing (IDNA
-  2008) for several years now. Chrome (and derivatives) still use
-  Transitional Processing, but Firefox and Safari have both switched.
-  
-  Also document the fact that winidn functions differently from libidn2
-  here.
-  
-  Closes #7026
-
-- [Calvin Buckley brought this change]
-
-  INSTALL: add IBM i specific quirks
-  
-  Fixes #6830
-  Closes #7013
-
-- libcurl.3: mention the URL API
-  
-  To make it easier to find. Also a minor polish of libcurl-url.3
-  
-  Closes #7009
-
-- GnuTLS: don't allow TLS 1.3 for versions that don't support it
-  
-  Follow-up to 781864bedbc5
-  
-  ... as they don't understand it and will return error at us!
-  
-  Closes #7014
-
-Kamil Dudka (6 May 2021)
-- tool_getparam: handle failure of curlx_convert_tchar_to_UTF8()
-  
-  Reported by GCC analyzer:
-  
-  Error: GCC_ANALYZER_WARNING (CWE-476):
-  src/tool_getparam.c: scope_hint: In function 'parse_args'
-  src/tool_getparam.c:2318:38: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL 'orig_opt'
-  lib/curlx.h:56: included_from: Included from here.
-  src/tool_getparam.c:28: included_from: Included from here.
-  lib/curl_multibyte.h:70:51: note: in definition of macro 'curlx_convert_tchar_to_UTF8'
-  src/tool_getparam.c:2316:16: note: in expansion of macro 'curlx_convert_tchar_to_UTF8'
-  
-  Reviewed-by: Marcel Raad
+- headers.h: make Curl_headers_push() be CURLE_OK when not built
+
+  ... to avoid errors when the function isn't there.
+
+  Reported-by: Marcel Raad
+  Fixes #8627
+  Closes #8628
+
+- scripts: move three scripts from lib/ to scripts/
+
+  Move checksrc.pl, firefox-db2pem.sh and mk-ca-bundle.pl since they don't
+  particularly belong in lib/
+
+  Also created an EXTRA_DIST= in scripts/Makefile.am instead of specifying
+  those files in the root Makefile.am
+
+  Closes #8625
+
+Marc Hoersken (23 Mar 2022)
+- lib/warnless.[ch]: only check for WIN32 and ignore _WIN32
+
+  curl_setup.h automatically defines WIN32 if just _WIN32 is defined.
+
+  Therefore make sure curl_setup.h is included through warnless.h.
+
   Reviewed-by: Daniel Stenberg
-  Closes #7023
-
-Daniel Stenberg (6 May 2021)
-- scripts/delta: also show total number of days
-
-Marc Hoersken (5 May 2021)
-- sockfilt: fix invalid increment of handles index variable nfd
-  
-  Only increment the array index if we actually stored a handle.
-  
-  Follow up to e917492048f4b85a0fd58a033d10072fc7666c3b
-  Closes #6992
-
-- sockfilt: avoid getting stuck waiting for writable socket
-  
-  Reset FD_WRITE event using the same approach as in multi.c
-  
-  Follow up to b36442b24305f3cda7c13cc64b46838995a4985b
-  Closes #6992
-
-Jay Satiro (5 May 2021)
-- test678: Fix for Windows multibyte builds
-  
-  Follow-up to 77fc385 from yesterday.
-  
-  Bug: https://github.com/curl/curl/pull/6662#issuecomment-832966557
-  Reported-by: Marc Hörsken
+  Reviewed-by: Jay Satiro
+
+  Closes #8594
+
+- tests/server/util.h: align WIN32 condition with util.c
+
+  There is no need to test for both _WIN32 and WIN32 as curl_setup.h
+  automatically defines the later if the first one is defined.
+
+  Also tests/server/util.c is only checking for WIN32 arouund the
+  implementation of win32_perror, so just defining _WIN32
+  would not be sufficient for a successful compilation.
+
+  Reviewed-by: Daniel Stenberg
+  Reviewed-by: Jay Satiro
+
+  Closes #8594
+
+Daniel Stenberg (22 Mar 2022)
+- [Philip Heiduck brought this change]
+
+  firefox-db2pem.sh: make the shell script safer
+
+  Reported by lift
+
+  Closes #8616
+
+Jay Satiro (22 Mar 2022)
+- gtls: fix build for disabled TLS-SRP
+
+  Prior to this change if, at build time, the GnuTLS backend was found to
+  have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl
+  via --disable-tls-srp (!USE_TLS_SRP) then a build error would occur.
+
+  Bug: https://curl.se/mail/lib-2022-03/0046.html
+  Reported-by: Robert Brose
+
+  Closes https://github.com/curl/curl/pull/8604
+
+- winbuild: Add a Visual Studio example to the README
+
+  - Add an example that explains in detail how the user can add libcurl to
+    their Visual Studio project.
+
+  Ref: https://github.com/curl/curl/issues/8591
+
+  Closes https://github.com/curl/curl/pull/8592
+
+- docs/opts: Mention Schannel client cert type is P12
+
+  Schannel backend code behaves same as Secure Transport, it expects a P12
+  certificate file or the name of a certificate already in the user's OS
+  key store. Also, both backends ignore CURLOPT_SSLKEY (tool: --key)
+  because they expect the private key to already be available from the
+  keystore or P12 certificate.
+
+  Ref: https://github.com/curl/curl/discussions/8581#discussioncomment-2337260
+
+  Closes https://github.com/curl/curl/pull/8587
+
+Daniel Stenberg (22 Mar 2022)
+- lib1945: fix compiler warning 4706 on MSVC
+
+  Follow-up from d1e4a677340c
+
+  Closes #8623
+
+- [Philip Heiduck brought this change]
+
+  ci/event-based.yml: improve impacket install
+
+  skip python3-pip
+  install impacket with library module
+
+  Closes #8621
+
+- test1459: disable for oldlibssh
+
+  This test with libssh 0.9.3 works fine on github but fails on circleci.
+  Might as well disable this test for oldlibssh installations.
+
+  Closes #8622
+
+- test1135: sync with recent API updates
+
+  This test verifies that the order of functions in public headers remain
+  the same but hasn't been updated to care for recently added header
+  files. The order is important for some few platforms - or VERSIONINFO
+  needs to updated.
+
+  This fix also updates VERSIONINFO to be sure.
+
+  Closes #8620
+
+- curl_easy_nextheader.3: fix two typos
+
+  Reported-by: Timothe Litt
+  Bug: https://curl.se/mail/lib-2022-03/0060.html
+
+- options: remove mistaken space before paren in prototype
+
+- cirrus: add --enable-headers-api for some windows builds
+
+- GHA: --enable-headers-api in all workflows
+
+- lib: make the headers API depend on --enable-headers-api
+
+- configure: add --enable-headers-api to enable the headers API
+
+  Defaults to disabled while labeled EXPERIMENTAL.
+
+  Make all the headers API tests require 'headers-api' to run.
+
+- test1671: verify -w '%{header_json}
+
+- test1670: verify -w %header{}
+
+- curl: add %{header_json} support in -w handling
+
+  Outputs all response headers as a JSON object.
+
+- curl: add %header{name} support in -w handling
 
-- [Dmitry Kostjuchenko brought this change]
-
-  build: fix compilation for Windows UWP platform
-  
-  - Include afunix.h which is necessary for sockaddr_un when
-    USE_UNIX_SOCKETS is defined on Windows.
-  
-  Closes https://github.com/curl/curl/pull/7006
-
-Daniel Stenberg (5 May 2021)
-- gnutls: make setting only the MAX TLS allowed version work
-  
-  Previously, settting only the max allowed TLS version, leaving the
-  minimum one at default, didn't actually set it and left it to default
-  (TLS 1.3) too!
-  
-  As a bonus, this change also removes the dead code handling of SSLv3
-  since that version can't be set anymore (since eff614fb0242cb).
-  
-  Reported-by: Daniel Carpenter
-  Fixes #6998
-  Closes #7000
-
-- openldap: replace ldap_ prefix on private functions
-  
-  Since openldap itself uses that prefix and with OpenĹDAP 2.5.4 (at
-  least) there's a symbol collision because of that.
-  
-  The private functions now use the 'oldap_' prefix where it previously
-  used 'ldap_'.
-  
-  Reported-by: 3eka on github
-  Fixes #7004
-  Closes #7005
-
-Jay Satiro (5 May 2021)
-- http2: fix potentially uninitialized variable
-  
-  introduced several days ago in 3193170. caught by visual studio linker.
-
-- [Gilles Vollant brought this change]
-
-  SSL: support in-memory CA certs for some backends
-  
-  - New options CURLOPT_CAINFO_BLOB and CURLOPT_PROXY_CAINFO_BLOB to
-    specify in-memory PEM certificates for OpenSSL, Schannel (Windows)
-    and Secure Transport (Apple) SSL backends.
-  
-  Prior to this change PEM certificates could only be imported from a file
-  and not from memory.
-  
-  Co-authored-by: moparisthebest@users.noreply.github.com
-  
-  Ref: https://github.com/curl/curl/pull/4679
-  Ref: https://github.com/curl/curl/pull/5677
-  Ref: https://github.com/curl/curl/pull/6109
-  
-  Closes https://github.com/curl/curl/pull/6662
-
-Daniel Stenberg (4 May 2021)
-- [David Cook brought this change]
-
-  tests: ignore case of chunked hex numbers in tests
-  
-  When hyper is used, it emits uppercase hexadecimal numbers for chunked
-  encoding lengths. Without hyper, lowercase hexadecimal numbers are used.
-  This change adds preprocessor statements to tests where this is an
-  issue, and adapts the fixtures to match.
-  
-  Closes #6987
-
-- cmake: check for getppid and utimes
-  
-  ... as they're checked for in the configure script and are used by
-  source code.
-  
-  Removed checks for perror, setvbuf and strlcat since those defines are
-  not checked for in source code.
-  
-  Bonus: removed HAVE_STRLCPY from a few config-*.h files since that
-  symbol is not used in source code.
-  
-  Closes #6997
-
-- libtest: remove lib530.c
-  
-  Follow up from e50a877df when test 530 was removed. Since then this
-  source file has not been used/needed.
-  
-  Closes #6999
-
-- FILEFORMAT: mention sectransp as a feature
-  
-  Been supported since at least 40259ca65
-  
-  Closes #7001
+  Outputs the response header 'name'
+
+- header api: add curl_easy_header and curl_easy_nextheader
+
+  Add test 1940 to 1946 to verify.
+
+  Closes #8593
+
+- test1459: remove the different exit code for oldlibssh
+
+  When using libssh/0.9.3/openssl/zlib, we seem to be getting the "right"
+  error code.
+
+  Closes #8490
+
+- libssh: unstick SFTP transfers when done event-based
+
+  Test 604 and 606 (at least).
+
+  Closes #8490
+
+- gha: move the event-based test over from Zuul
+
+  Switched libssh2 to libssh
+
+  Closes #8490
 
 - RELEASE-NOTES: synced
 
-- libssh2: ignore timeout during disconnect
-  
-  ... to avoid memory leaks!
-  
-  libssh2 is tricky as we have to deal with the non-blockiness even in
-  close and shutdown cases. In the cases when we shutdown after a timeout
-  already expired, it is crucial that curl doen't let the timeout abort
-  the shutdown process as that then leaks memory!
-  
-  Reported-by: Benjamin Riefenstahl
-  Fixes #6990
-
-- KNOWN_BUGS: add two HTTP/2 bugs
-
-- KNOWN_BUGS: add three HTTP/3 issues
-  
-  ... and moved the HTTP/2 issues to its own section
-  
-  Closes #6606
-  Closes #6510
-  Closes #6494
-
-- [ejanchivdorj brought this change]
-
-  CURLcode: add CURLE_SSL_CLIENTCERT
-  
-  When a TLS server requests a client certificate during handshake and
-  none can be provided, libcurl now returns this new error code
-  CURLE_SSL_CLIENTCERT
-  
-  Only supported by Secure Transport and OpenSSL for TLS 1.3 so far.
-  
-  Closes #6721
-
-- [Tobias Gabriel brought this change]
-
-  .github/FUNDING: add link to GitHub sponsors
-  
-  Closes #6985
+- http: return error on colon-less HTTP headers
 
-- [Harry Sintonen brought this change]
+  It's a protocol violation and accepting them leads to no good.
 
-  krb5/name_to_level: replace checkprefix with curl_strequal
-  
-  Closes #6993
+  Add test case 398 to verify
 
-- [Harry Sintonen brought this change]
+  Closes #8610
 
-  Curl_input_digest: require space after Digest
-  
-  Closes #6993
+- test718: edited slightly to return better HTTP
 
-- [Harry Sintonen brought this change]
+  Since hyper is picky and won't play ball otherwise.
 
-  Curl_http_header: check for colon when matching Persistent-Auth
-  
-  Closes #6993
+  Bug: https://github.com/hyperium/hyper/issues/2783
+  Reported-by: Daniel Valenzuela
+  Closes #8614
 
-- [Harry Sintonen brought this change]
+- hyper: no h2c support
 
-  Curl_http_input_auth: require valid separator after negotiation type
-  
-  Closes #6993
-
-- http: fix the check for 'Authorization' with Bearer
-  
-  The code would wrongly check for it using an additional colon.
-  
-  Reported-by: Blake Burkhart
-  Closes #6988
-
-- [Kamil Dudka brought this change]
-
-  http2: fix a resource leak in push_promise()
-  
-  ... detected by Coverity:
-  
-  Error: RESOURCE_LEAK (CWE-772):
-  lib/http2.c:532: alloc_fn: Storage is returned from allocation function "duphandle".
-  lib/http2.c:532: var_assign: Assigning: "newhandle" = storage returned from "duphandle(data)".
-  lib/http2.c:552: noescape: Resource "newhandle" is not freed or pointed-to in "set_transfer_url".
-  lib/http2.c:555: leaked_storage: Variable "newhandle" going out of scope leaks the storage it points to.
-  
-  Closes #6986
-
-- [Kamil Dudka brought this change]
-
-  http2: fix resource leaks in set_transfer_url()
-  
-  ... detected by Coverity:
-  
-  Error: RESOURCE_LEAK (CWE-772):
-  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
-  lib/http2.c:486: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:488: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-  
-  Error: RESOURCE_LEAK (CWE-772):
-  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
-  lib/http2.c:493: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:495: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-  
-  Error: RESOURCE_LEAK (CWE-772):
-  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
-  lib/http2.c:500: noescape: Resource "u" is not freed or pointed-to in "curl_url_set". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:502: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-  
-  Error: RESOURCE_LEAK (CWE-772):
-  lib/http2.c:480: alloc_fn: Storage is returned from allocation function "curl_url". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:480: var_assign: Assigning: "u" = storage returned from "curl_url()".
-  lib/http2.c:505: noescape: Resource "u" is not freed or pointed-to in "curl_url_get". [Note: The source code implementation of the function has been overridden by a builtin model.]
-  lib/http2.c:507: leaked_storage: Variable "u" going out of scope leaks the storage it points to.
-  
-  Closes #6986
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  rustls: use ALPN
-  
-  Update required rustls to 0.5.0
-  
-  Closes #6960
+  Make tests require h2c feature present to run, and only set h2c if
+  nghttp2 is used in the build. Hyper does not support it.
 
-- [Michał Antoniak brought this change]
+  Remove those tests from DISABLED
 
-  gskit: fix CURL_DISABLE_PROXY build
-  
-  Removed localfd and remotefd from ssl_backend_data (ued only with proxy
-  connection). Function pipe_ssloverssl return always 0, when proxy is not
-  used.
-  
-  Closes #6981
+  Fixes #8605
+  Closes #8613
 
-- [Michał Antoniak brought this change]
+- configure: bump the copyright year range int the generated output
+
+- [Andreas Falkenhahn brought this change]
+
+  BINDINGS.md: add Hollywood binding
+
+  Closes #8609
+
+- HISTORY: add some 2022 data
+
+- scripts/copyright.pl: ignore the new mlc_config.json file
 
-  gskit: fix undefined reference to 'conn'
-  
-  Closes #6980
+- [Philip Heiduck brought this change]
 
-- [Jacob Hoffman-Andrews brought this change]
+  mlc_config.json: add file to ignore known troublesome URLs
 
-  tls: add USE_HTTP2 define
-  
-  This abstracts across the two HTTP/2 backends: nghttp2 and Hyper.
-  
-  Add our own define for the "h2" ALPN protocol, so TLS backends can use
-  it without depending on a specific HTTP backend.
-  
-  Closes #6959
+  This is the config file for the CI markdown link checker and lets us
+  filter URLs that are known to cause problems. Like
+  https://curl.zuul.vexxhost.dev/ for now.
 
-- [Jacob Hoffman-Andrews brought this change]
+  Closes #8597
 
-  lib: fix 0-length Curl_client_write calls
-  
-  Closes #6954
+- [Philip Heiduck brought this change]
 
-- [Jacob Hoffman-Andrews brought this change]
+  winbuild/README.md: fixup dead link
 
-  lib: remove strlen call from Curl_client_write
-  
-  At all call sites with an explicit 0 len, pass an appropriate nonzero
-  len.
-  
-  Closes #6954
+  Closes #8597
 
-- [Ayushman Singh Chauhan brought this change]
+Jay Satiro (18 Mar 2022)
+- rtsp: don't let CSeq error override earlier errors
 
-  docs: camelcase it like GitHub everywhere
-  
-  Closes #6979
+  - When done, if an error has already occurred then don't check the
+    sequence numbers for mismatch.
 
-Jay Satiro (27 Apr 2021)
-- [Lucas Servén Marín brought this change]
+  A sequence number may not have been received if an error occurred.
 
-  docs: fix typo in fail-with-body doc
-  
-  This commit fixes a small typo in the documentation for the
-  --fail-with-body flag.
-  
-  Closes https://github.com/curl/curl/pull/6977
+  Prior to this change a sequence mismatch error would override earlier
+  errors. For example, a server that returns nothing would cause error
+  CURLE_GOT_NOTHING in Curl_http_done which was then overridden by
+  CURLE_RTSP_CSEQ_ERROR in rtsp_done.
 
-- lib: fix some misuse of curlx_convert_UTF8_to_tchar
-  
-  curlx_convert_UTF8_to_tchar must be freed by curlx_unicodefree, but
+  Closes https://github.com/curl/curl/pull/8525
+
+- lib: fix some misuse of curlx_convert_wchar_to_UTF8
+
+  curlx_convert_wchar_to_UTF8 must be freed by curlx_unicodefree, but
   prior to this change some uses mistakenly called free.
-  
-  I've reviewed all other uses of curlx_convert_UTF8_to_tchar and
-  curlx_convert_tchar_to_UTF8.
-  
-  Bug: https://github.com/curl/curl/pull/6602#issuecomment-825236763
-  Reported-by: sergio-nsk@users.noreply.github.com
-  
-  Closes https://github.com/curl/curl/pull/6938
-
-Daniel Stenberg (27 Apr 2021)
-- ntlm: precaution against super huge type2 offsets
-  
-  ... which otherwise caused an integer overflow and circumvented the if()
-  conditional size check.
-  
-  Detected by OSS-Fuzz
-  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33720
-  Assisted-by: Max Dymond
-  Closes #6975
 
-- c-hyper: fix unused variable ‘wrote’
+  I've reviewed all other uses of curlx_convert_wchar_to_UTF8 and
+  curlx_convert_UTF8_to_wchar.
 
-- libcurl-security.3: be careful of setuid
-  
-  Reported-by: Harry Sintonen
-  Closes #6970
+  Ref: https://github.com/curl/curl/commit/1d5d0ae
 
-- [Kevin Burke brought this change]
+  Closes https://github.com/curl/curl/pull/8521
 
-  c-hyper: don't write to set.writeheader if null
-  
-  Previously if a caller set CURLOPT_WRITEFUNCTION but did not set a
-  CURLOPT_HEADERDATA buffer, Hyper would still attempt to write headers to
-  the data->set.writeheader header buffer, even though it is null.  This
-  led to NPE segfaults attempting to use libcurl+Hyper with Git, for
-  example.
-  
-  Instead, process the client write for the status line using the same
-  logic we use to process the client write for the later HTTP headers,
-  which contains the appropriate guard logic. As a side benefit,
-  data->set.writeheader is now only read in one file instead of two.
-  
-  Fixes #6619
-  Fixes abetterinternet/crustls#49
-  Fixes hyperium/hyper#2438
-  Closes #6971
-
-- wolfssl: handle SSL_write() returns 0 for error
-  
-  Reported-by: Timo Lange
-  
-  Closes #6967
-
-- easy: ignore sigpipe in curl_easy_send
-  
-  Closes #6965
-
-- sigpipe: ignore SIGPIPE when using wolfSSL as well
-  
-  Closes #6966
-
-- libcurl-security.3: don't try to filter IPv4 hosts based on the URL
-  
-  Closes #6942
+- mk-ca-bundle.pl: Use stricter logic to process the certificates
 
-- [Harry Sintonen brought this change]
+  .. and bump version to 1.29.
+
+  This change makes the script properly ignore unknown blocks and
+  otherwise fail when Mozilla changes the certdata format in ways we
+  don't expect. Though this is less flexible behavior it makes it far less
+  likely that an invalid certificate can slip through.
 
-  nss_set_blocking: avoid static for sock_opt
-  
-  Reviewed-by: Kamil Dudka
-  Closes #6945
+  Prior to this change the state machine did not always properly reset,
+  and it was possible that a certificate marked as invalid could then
+  later be marked as valid when there was conflicting trust info or
+  an unknown block was erroneously processed as part of the certificate.
+
+  Ref: https://github.com/curl/curl/pull/7801#pullrequestreview-768384569
+
+  Closes https://github.com/curl/curl/pull/8411
+
+Marcel Raad (17 Mar 2022)
+- test375: fix line endings on Windows
+
+  Closes https://github.com/curl/curl/pull/8599
+
+Daniel Stenberg (17 Mar 2022)
+- http: reject header contents with nul bytes
+
+  They are not allowed by the protocol and allowing them risk that curl
+  misbehaves somewhere where C functions are used but won't work on the
+  full contents. Further, they are not supported by hyper and they cause
+  problems for the new coming headers API work.
+
+  Updated test 262 to verify and enabled it for hyper as well
+
+  Closes #8601
+
+- [Philip Heiduck brought this change]
+
+  CI: Do not use buildconf. Instead, just use: autoreconf -fi
+
+  Closes #8596
 
 - RELEASE-NOTES: synced
 
-- [Yusuke Nakamura brought this change]
+Jay Satiro (14 Mar 2022)
+- libssh: Improve fix for missing SSH_S_ stat macros
 
-  docs/HTTP3.md: fix nghttp2's HTTP/3 server port
-  
-  Port 8443 does not work now.
-  Correct origin is in the quicwg's wiki.
-  https://github.com/quicwg/base-drafts/wiki/Implementations#ngtcp2
-  
-  Closes #6964
-
-- krb5: don't use 'static' to store PBSZ size response
-  
-  ... because it makes the knowledge and usage cross-transfer in funny and
-  unexpected ways.
-  
-  Reported-by: Harry Sintonen
-  Closes #6963
-
-- [Kevin Burke brought this change]
-
-  m4: add security frameworks on Mac when compiling rustls
-  
-  Previously compiling rustls on Mac would only complete if you also
-  compiled the SecureTransport TLS backend, which curl would prefer to
-  the Rust backend.
-  
-  Appending these flags to LDFLAGS makes it possible to compile the
-  Rustls backend on Mac without the SecureTransport backend, which means
-  this patch will make it possible for Mac users to use the Rustls
-  backend for TLS.
-  
-  Reviewed-by: Jacob Hoffman-Andrews
-  
-  Fixes #6955
-  Cloes #6956
-
-- krb5: remove the unused 'overhead' function
-  
-  Closes #6947
-
-- [Johann150 brought this change]
-
-  curl_url_set.3: add memory management information
-  
-  wording taken from man page for CURLOPT_URL.3
-  
-  As far as I can see, the URL part is either malloc'ed before due to
-  encoding or it is strdup'ed.
-  
-  Closes #6953
-
-- [Jacob Hoffman-Andrews brought this change]
-
-  c-hpyer: fix handling of zero-byte chunk from hyper
-  
-  Closes #6951
-
-- CURLOPT_POSTFIELDS.3: clarify how it gets the size of the data
-  
-  Ref: https://curl.se/mail/lib-2021-04/0085.html
-  Closes #6943
-
-- [Ralph Langendam brought this change]
-
-  cmake: make libcurl output filename configurable
-  
-  Reviewed-by: Jakub Zakrzewski
-  Closes #6933
+  - If building libcurl against an old libssh version missing SSH_S_IFMT
+    and SSH_S_IFLNK then use the values from a supported version.
 
-- [Patrick Monnerat brought this change]
+  Prior to this change if libssh did not define SSH_S_IFMT and SSH_S_IFLNK
+  then S_IFMT and S_IFLNK, respectively, were used instead. The problem
+  with that is the user's S_ stat macros don't have the same values across
+  platforms. For example Windows has values different from Linux.
+
+  Follow-up to 7b0fd39.
+
+  Ref: https://github.com/curl/curl/pull/8511#discussion_r815292391
+  Ref: https://github.com/curl/curl/pull/8574
+
+  Closes https://github.com/curl/curl/pull/8588
+
+Marc Hoersken (13 Mar 2022)
+- tool and tests: force flush of all buffers at end of program
+
+  On Windows data can be lost in buffers in case of abnormal program
+  termination, especially in process chains as seen due to flaky tests.
+  Therefore flushing all buffers manually should avoid this data loss.
+
+  In the curl tool we play the safe game by only flushing write buffers,
+  but in the testsuite where we manage all buffers, we flush everything.
+
+  This should drastically reduce Windows CI and testsuite flakiness.
+
+  Reviewed-by: Daniel Stenberg
+
+  Supersedes #7833 and #6064
+  Closes #8516
+
+Daniel Stenberg (12 Mar 2022)
+- [Jan Venekamp brought this change]
+
+  BearSSL: add CURLOPT_SSL_CTX_FUNCTION support
+
+  Closes #8478
+
+- [Jan Venekamp brought this change]
+
+  BearSSL: add CURLOPT_SSL_CIPHER_LIST support
+
+  Closes #8477
+
+Dan Fandrich (11 Mar 2022)
+- tool_cb_hdr: Turn the Location: into a terminal hyperlink
+
+  This turns even relative URLs into clickable hyperlinks in a supported
+  terminal when --styled-output is enabled. Many terminals already turn
+  URLs into clickable links but there is not enough information in a
+  relative URL to do this automatically otherwise.
+
+- keepalive-time.d: It takes many probes to detect brokenness
+
+Daniel Stenberg (11 Mar 2022)
+- [HexTheDragon brought this change]
+
+  curl: add --no-clobber
+
+  Does not overwrite output files if they already exist
+
+  Closes #7708
+  Co-authored-by: Daniel Stenberg
 
-  vtls: reset ssl use flag upon negotiation failure
-  
-  Fixes the segfault in ldaps disconnect.
-  
-  Reported-by: Illarion Taev
-  Fixes #6934
-  Closes #6937
-
-- configure: fix typo in TLS error message
-  
-  Reported-by: Pontus Lundkvist
-
-- README: link to the commercial support option
-
-Jay Satiro (22 Apr 2021)
-- [Martin Halle brought this change]
-
-  version: add gsasl_version to curl_version_info_data
-  
-  - Add gsasl_version string and bump to CURLVERSION_TENTH.
-  
-  Ref: https://curl.se/mail/lib-2021-04/0003.html
-  
-  Closes https://github.com/curl/curl/pull/6843
-
-- [Morten Minde Neergaard brought this change]
-
-  schannel: Support strong crypto option
-  
-  - Support enabling strong crypto via optional user cipher list when
-    USE_STRONG_CRYPTO or SCH_USE_STRONG_CRYPTO is in the list.
-  
-  MSDN says SCH_USE_STRONG_CRYPTO "Instructs Schannel to disable known
-  weak cryptographic algorithms, cipher suites, and SSL/TLS protocol
-  versions that may be otherwise enabled for better interoperability."
-  
-  Ref: https://curl.se/mail/lib-2021-02/0066.html
-  Ref: https://curl.se/docs/manpage.html#--ciphers
-  Ref: https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html
-  Ref: https://docs.microsoft.com/en-us/windows/win32/api/schannel/ns-schannel-schannel_cred
-  
-  Closes https://github.com/curl/curl/pull/6734
-
-Daniel Stenberg (22 Apr 2021)
 - RELEASE-NOTES: synced
 
-- ci: adapt to configure requiring an explicit TLS choice
+  also bump next pending version to become 7.83.0
+
+- [Jean-Philippe Menil brought this change]
+
+  openssl: check SSL_get_peer_cert_chain return value
+
+  Signed-off-by: Jean-Philippe Menil <jpmenil@gmail.com>
+  Closes #8579
+
+- [Jay Satiro brought this change]
+
+  mk-ca-bundle.vbs: delete this script in favor of mk-ca-bundle.pl
+
+  mk-ca-bundle.vbs is a Windows-specific script for Mozilla certificate
+  extraction, similar to mk-ca-bundle.pl which runs on any platform. The
+  vbs version has not been maintained while the perl version has been
+  maintained with improvements and security fixes. I don't think it's
+  worth the work to maintain both versions. Windows users should be able
+  to use mk-ca-bundle.pl without any problems, as long as they have perl.
+
+  Closes #8412
+
+- CURLSHOPT_UNLOCKFUNC.3: fix the callback prototype
+
+  Copy and paste error
+
+  Reported-by: Francisco Olarte
+  Fixes #8573
+  Closes #8577
+
+- remove-on-error.d: typo
+
+  Reported-by: Colin Leroy
+  Bug: https://github.com/curl/curl/pull/8503#pullrequestreview-906520081
+
+- curl: add --remove-on-error
+
+  If a transfer returns an error, using this option makes curl remove the
+  leftover downloded (partial) local file before exiting.
+
+  Added test 376 to verify
+
+  Closes #8503
+
+- libssh: fix build with old libssh versions
+
+  ... that don't have the SSH_S_* defines. Spotted on a machine using
+  libssh 0.7.3
+
+  Closes #8574
+
+- hyper: fix status_line() return code
+
+  Detected while working on #7708 that happened to trigger an error here
+  with a new test case.
+
+  Closes #8572
+
+- [Alejandro R. Sedeño brought this change]
+
+  configure.ac: move -pthread CFLAGS setting back where it used to be
+
+  The fix for #8276 proposed in #8374 set `CFLAGS="$CFLAGS -pthead"`
+  earlier than it used to be set, applying it in cases where it should not
+  have been applied.
+
+  This moves the AIX XLC check to a new `case $host in` block inside of
+  the `if test "$USE_THREADS_POSIX" != "1"` block, where `CFLAGS="$CFLAGS
+  -pthead"` used to happen.
+
+  Fixes #8541
+  Closes #8542
+
+- [Tatsuhiro Tsujikawa brought this change]
+
+  ngtcp2: add client certificate authentication for OpenSSL
+
+  Closes #8522
+
+- tool_operate: fix a scan-build warning
+
+  ... and avoid the temp storing of the return code in a diff variable.
+
+  Closes #8565
+
+- test375: verify that --proxy errors out if proxy is disabled in the build
+
+  Closes #8565
+
+- curl: error out when options need features not present in libcurl
+
+  Trying to use a proxy when libcurl was built with proxy support disabled
+  should make curl error out properly.
+
+  Remove knowledge of disabled features from the tool code and instead
+  make it properly respond to what libcurl returns. Update all tests to
+  properly require the necessary features to be present/absent so that the
+  test suite can still be run even with libcurl builds with disabled
+  features.
+
+  Ref: https://curl.se/mail/archive-2022-03/0013.html
+  Closes #8565
+
+- ngtcp2: disconnect the QUIC connection proper
+
+  Reported-by: mehatzri on github
+  Reviewed-by: Tatsuhiro Tsujikawa
+  Fixes #8534
+  closes #8569
+
+Dan Fandrich (9 Mar 2022)
+- test386: Fix an incorrect test markup tag
+
+Daniel Stenberg (9 Mar 2022)
+- [Don J Olmstead brought this change]
+
+  nonblock: restore setsockopt method to curlx_nonblock
+
+  The implementation using setsockopt was removed when BeOS support was
+  purged. However this functionality wasn't BeOS specific, it is still
+  used by for example Orbis OS (Playstation 4/5 OS).
+
+  Closes #8562
+
+- openssl: fix CN check error code
+
+  Due to a missing 'else' this returns error too easily.
+
+  Regressed in: d15692ebb
+
+  Reported-by: Kristoffer Gleditsch
+  Fixes #8559
+  Closes #8560
+
+- [Frank Meier brought this change]
+
+  connect: make Curl_getconnectinfo work with conn cache from share handle
 
-- configure: split out each TLS library detector into its own function
-  
-  ... and put those functions in separate m4 files per TLS library.
+  Closes #8524
index 8ccd016a674d00c299f97722904562ad615cfd39..b93e7539a170992ce276dc0e576a3adde2cdf3b5 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,5 +18,7 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 @CMAKE_CONFIGURABLE_FILE_CONTENT@
index e99ea6f64888a830298a94ffe1ded13746c296dd..75215a122f20d6aa288daa26966e09b23bf863cb 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 include(CheckCSourceCompiles)
 
index 8666da0da948bc2192be15f8c8e0d138a2f2729d..6a9fdea0989c1f9d2220a70d97b95db417c92b55 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifdef TIME_WITH_SYS_TIME
 /* Time with sys/time test */
@@ -56,7 +58,7 @@ return 0;
 # define PLATFORM_AIX_V3
 #endif
 /* */
-#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)
+#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3)
 #error "O_NONBLOCK does not work on this platform"
 #endif
 
@@ -182,28 +184,6 @@ if (sizeof (bool *) )
 #include <float.h>
 int main() { return 0; }
 #endif
-#ifdef HAVE_GETADDRINFO
-#include <netdb.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-int main(void) {
-    struct addrinfo hints, *ai;
-    int error;
-
-    memset(&hints, 0, sizeof(hints));
-    hints.ai_family = AF_UNSPEC;
-    hints.ai_socktype = SOCK_STREAM;
-#ifndef getaddrinfo
-    (void)getaddrinfo;
-#endif
-    error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
-    if (error) {
-        return 1;
-    }
-    return 0;
-}
-#endif
 #ifdef HAVE_FILE_OFFSET_BITS
 #ifdef _FILE_OFFSET_BITS
 #undef _FILE_OFFSET_BITS
@@ -514,3 +494,39 @@ main() {
   return 0;
 }
 #endif
+#ifdef HAVE_ATOMIC
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+#  include <sys/types.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+#ifdef HAVE_STDATOMIC_H
+#  include <stdatomic.h>
+#endif
+/* includes end */
+
+int
+main() {
+  _Atomic int i = 1;
+  i = 0;  // Force an atomic-write operation.
+  return i;
+}
+#endif
+#ifdef HAVE_WIN32_WINNT
+/* includes start */
+#ifdef WIN32
+#  include "../lib/setup-win32.h"
+#endif
+/* includes end */
+
+#define enquote(x) #x
+#define expand(x) enquote(x)
+#pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT))
+
+int
+main() {
+  return 0;
+}
+#endif
index 9455f4ba30ca3cad7706bc8fab3d618813b8b7fc..88d5e87ade086e1d82bb2a785670066d43f067bc 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 find_path(BEARSSL_INCLUDE_DIRS bearssl.h)
 
index 0ed08550d2c43aad8a5e6c3c148bf257af6c1716..833e1811ae7838a89a2a4b1b17304dc2b1f2b0e7 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 include(FindPackageHandleStandardArgs)
 
index 71806823d2805969e14a72416403506f74cb4e8c..99cf31d9138fda16ecd7d569e2eb23cef8ed43ff 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # - Find c-ares
 # Find the c-ares includes and library
index 4e4747d6cc2177a05afdc15c908de14c6521afa0..ec2bd57bae5db1df7cb6dff604d1c53c66957ee9 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # - Try to find the GSS Kerberos library
 # Once done this will define
diff --git a/CMake/FindLibPSL.cmake b/CMake/FindLibPSL.cmake
new file mode 100644 (file)
index 0000000..66abdd7
--- /dev/null
@@ -0,0 +1,45 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, 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
+#
+###########################################################################
+# - Try to find the libpsl library
+# Once done this will define
+#
+# LIBPSL_FOUND - system has the libpsl library
+# LIBPSL_INCLUDE_DIR - the libpsl include directory
+# LIBPSL_LIBRARY - the libpsl library name
+
+find_path(LIBPSL_INCLUDE_DIR libpsl.h)
+
+find_library(LIBPSL_LIBRARY NAMES psl libpsl)
+
+if(LIBPSL_INCLUDE_DIR)
+  file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"")
+  string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1"  LIBPSL_VERSION "${libpsl_version_str}")
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LibPSL
+    REQUIRED_VARS LIBPSL_LIBRARY LIBPSL_INCLUDE_DIR
+    VERSION_VAR LIBPSL_VERSION)
+
+mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)
index ce46a408bf57fb49a79e928fcd5f718ece2a24bf..0ec7f7e3b9b4dfd8a2d759a2e5ae062c4c001068 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # - Try to find the libssh2 library
 # Once done this will define
diff --git a/CMake/FindMSH3.cmake b/CMake/FindMSH3.cmake
new file mode 100644 (file)
index 0000000..96477e2
--- /dev/null
@@ -0,0 +1,70 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, 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
+#
+###########################################################################
+
+#[=======================================================================[.rst:
+FindMSH3
+----------
+
+Find the msh3 library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+``MSH3_FOUND``
+  System has msh3
+``MSH3_INCLUDE_DIRS``
+  The msh3 include directories.
+``MSH3_LIBRARIES``
+  The libraries needed to use msh3
+#]=======================================================================]
+if(UNIX)
+  find_package(PkgConfig QUIET)
+  pkg_search_module(PC_MSH3 libmsh3)
+endif()
+
+find_path(MSH3_INCLUDE_DIR msh3.h
+  HINTS
+    ${PC_MSH3_INCLUDEDIR}
+    ${PC_MSH3_INCLUDE_DIRS}
+)
+
+find_library(MSH3_LIBRARY NAMES msh3
+  HINTS
+    ${PC_MSH3_LIBDIR}
+    ${PC_MSH3_LIBRARY_DIRS}
+)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(MSH3
+  REQUIRED_VARS
+    MSH3_LIBRARY
+    MSH3_INCLUDE_DIR
+)
+
+if(MSH3_FOUND)
+  set(MSH3_LIBRARIES    ${MSH3_LIBRARY})
+  set(MSH3_INCLUDE_DIRS ${MSH3_INCLUDE_DIR})
+endif()
+
+mark_as_advanced(MSH3_INCLUDE_DIRS MSH3_LIBRARIES)
index 7bdb1976d01fcde39e660de204b313cf4fc51e92..fcd6717f6fcc1a02e8dab5ffb15a414deca37292 100644 (file)
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
 
index 8614492b1081da77edd67b82787dd73b6903337b..6d70c4a049ec2c50011c92e88230d9cf97352c98 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 include(FindPackageHandleStandardArgs)
 
index 643b600972b0ad93d328af7c4f5aa88dd87aa4c2..8d8ebc1b1e826936814b03b6147b81bbe5fef416 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #[=======================================================================[.rst:
index 5757009a5675ef29d5d7d8dcbc6314e28cadaf16..61e54c2d67ca2e32d8aaeba179c67ff3cf676ea3 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #[=======================================================================[.rst:
@@ -69,7 +71,7 @@ endif()
 if(NGTCP2_FIND_COMPONENTS)
   set(NGTCP2_CRYPTO_BACKEND "")
   foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
-    if(component MATCHES "^(OpenSSL|GnuTLS)")
+    if(component MATCHES "^(BoringSSL|OpenSSL|GnuTLS)")
       if(NGTCP2_CRYPTO_BACKEND)
         message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
       endif()
index 899c6b07562e66e010b21a6a9f556874b57bb6be..6742dda83f8d6736b1af003748880653359efbca 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 if(UNIX)
   find_package(PkgConfig QUIET)
index 0247364d41b5552ce03a9a5e9cb431d0c1cedd84..fc47027d74b2967ecb1abda896a02d3a1428cf5f 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #[=======================================================================[.rst:
index 42256b3cd17f276837c647d4063c4dd250a93ea8..986f01e00e85ac1228a97f9a9db5ffd98ab92837 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 find_path(WolfSSL_INCLUDE_DIR NAMES wolfssl/ssl.h)
 find_library(WolfSSL_LIBRARY NAMES wolfssl)
index eaba39746fb86f900641c0896c07b7a7dd598de4..2d6540443cedac4ad36577e0b2dc03c1a0661e4e 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #[=======================================================================[.rst:
index d57dd6ad57a626b7a967995a51cbe69b6e4dfe3a..4d7380eb5f46e87e51bac9ec89483b9503975c8f 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #File defines convenience macros for available feature testing
 
index 73c813fe51a063fb0cb2b4419a09c3dc3f77f751..b3031f749ddbbfc3ecb53b7085a85ea18a005a61 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 include(CheckCSourceCompiles)
 # The begin of the sources (macros and includes)
@@ -46,158 +48,6 @@ endif()
 
 set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
 
-function(curl_cv_func_recv_run_test recv_retv recv_arg1 recv_arg2 recv_arg3 recv_arg4)
-  unset(curl_cv_func_recv_test CACHE)
-  check_c_source_compiles("
-    ${_source_epilogue}
-    #ifdef WINSOCK_API_LINKAGE
-    WINSOCK_API_LINKAGE
-    #endif
-    extern ${recv_retv} ${signature_call_conv}
-    recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4});
-    int main(void) {
-      ${recv_arg1} s=0;
-      ${recv_arg2} buf=0;
-      ${recv_arg3} len=0;
-      ${recv_arg4} flags=0;
-      ${recv_retv} res = recv(s, buf, len, flags);
-      (void) res;
-      return 0;
-    }"
-    curl_cv_func_recv_test)
-  message(STATUS
-    "Tested: ${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})")
-  if(curl_cv_func_recv_test)
-    set(curl_cv_func_recv_args
-      "${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}" PARENT_SCOPE)
-    set(RECV_TYPE_ARG1 "${recv_arg1}" PARENT_SCOPE)
-    set(RECV_TYPE_ARG2 "${recv_arg2}" PARENT_SCOPE)
-    set(RECV_TYPE_ARG3 "${recv_arg3}" PARENT_SCOPE)
-    set(RECV_TYPE_ARG4 "${recv_arg4}" PARENT_SCOPE)
-    set(RECV_TYPE_RETV "${recv_retv}" PARENT_SCOPE)
-    set(HAVE_RECV 1 PARENT_SCOPE)
-    set(curl_cv_func_recv_done 1 PARENT_SCOPE)
-  endif()
-endfunction()
-
-check_c_source_compiles("${_source_epilogue}
-int main(void) {
-    recv(0, 0, 0, 0);
-    return 0;
-}" curl_cv_recv)
-if(curl_cv_recv)
-  if(NOT DEFINED curl_cv_func_recv_args OR curl_cv_func_recv_args STREQUAL "unknown")
-    if(APPLE)
-      curl_cv_func_recv_run_test("ssize_t" "int" "void *" "size_t" "int")
-    endif()
-    foreach(recv_retv "int" "ssize_t" )
-      foreach(recv_arg1 "SOCKET" "int" )
-        foreach(recv_arg2 "char *" "void *" )
-          foreach(recv_arg3 "int" "size_t" "socklen_t" "unsigned int")
-            foreach(recv_arg4 "int" "unsigned int")
-              if(NOT curl_cv_func_recv_done)
-                curl_cv_func_recv_run_test(${recv_retv} ${recv_arg1} ${recv_arg2} ${recv_arg3} ${recv_arg4})
-              endif()
-            endforeach()
-          endforeach()
-        endforeach()
-      endforeach()
-    endforeach()
-  else()
-    string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG1 "${curl_cv_func_recv_args}")
-    string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG2 "${curl_cv_func_recv_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG3 "${curl_cv_func_recv_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" RECV_TYPE_ARG4 "${curl_cv_func_recv_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" RECV_TYPE_RETV "${curl_cv_func_recv_args}")
-  endif()
-
-  if(curl_cv_func_recv_args STREQUAL "unknown")
-    message(FATAL_ERROR "Cannot find proper types to use for recv args")
-  endif()
-else()
-  message(FATAL_ERROR "Unable to link function recv")
-endif()
-set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
-set(HAVE_RECV 1)
-
-function(curl_cv_func_send_run_test send_retv send_arg1 send_arg2 send_arg3 send_arg4)
-  unset(curl_cv_func_send_test CACHE)
-  check_c_source_compiles("
-    ${_source_epilogue}
-    #ifdef WINSOCK_API_LINKAGE
-    WINSOCK_API_LINKAGE
-    #endif
-    extern ${send_retv} ${signature_call_conv}
-    send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4});
-    int main(void) {
-      ${send_arg1} s=0;
-      ${send_arg2} buf=0;
-      ${send_arg3} len=0;
-      ${send_arg4} flags=0;
-      ${send_retv} res = send(s, buf, len, flags);
-      (void) res;
-      return 0;
-    }"
-    curl_cv_func_send_test)
-  message(STATUS
-    "Tested: ${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})")
-  if(curl_cv_func_send_test)
-    string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}")
-    string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}")
-    set(curl_cv_func_send_args
-      "${send_arg1},${send_arg2},${send_arg3},${send_arg4},${send_retv},${send_qual_arg2}" PARENT_SCOPE)
-    set(SEND_TYPE_ARG1 "${send_arg1}" PARENT_SCOPE)
-    set(SEND_TYPE_ARG2 "${send_arg2}" PARENT_SCOPE)
-    set(SEND_TYPE_ARG3 "${send_arg3}" PARENT_SCOPE)
-    set(SEND_TYPE_ARG4 "${send_arg4}" PARENT_SCOPE)
-    set(SEND_TYPE_RETV "${send_retv}" PARENT_SCOPE)
-    set(HAVE_SEND 1 PARENT_SCOPE)
-    set(curl_cv_func_send_done 1 PARENT_SCOPE)
-  endif()
-endfunction()
-
-check_c_source_compiles("${_source_epilogue}
-int main(void) {
-    send(0, 0, 0, 0);
-    return 0;
-}" curl_cv_send)
-if(curl_cv_send)
-  if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
-    if(APPLE)
-      curl_cv_func_send_run_test("ssize_t" "int" "const void *" "size_t" "int")
-    endif()
-    foreach(send_retv "int" "ssize_t" )
-      foreach(send_arg1 "SOCKET" "int" "ssize_t" )
-        foreach(send_arg2 "const char *" "const void *" "void *" "char *")
-          foreach(send_arg3 "int" "size_t" "socklen_t" "unsigned int")
-            foreach(send_arg4 "int" "unsigned int")
-              if(NOT curl_cv_func_send_done)
-                curl_cv_func_send_run_test("${send_retv}" "${send_arg1}" "${send_arg2}" "${send_arg3}" "${send_arg4}")
-              endif()
-            endforeach()
-          endforeach()
-        endforeach()
-      endforeach()
-    endforeach()
-  else()
-    string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG1 "${curl_cv_func_send_args}")
-    string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG2 "${curl_cv_func_send_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG3 "${curl_cv_func_send_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG4 "${curl_cv_func_send_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" SEND_TYPE_RETV "${curl_cv_func_send_args}")
-    string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" SEND_QUAL_ARG2 "${curl_cv_func_send_args}")
-  endif()
-
-  if("${curl_cv_func_send_args}" STREQUAL "unknown")
-    message(FATAL_ERROR "Cannot find proper types to use for send args")
-  endif()
-  set(SEND_QUAL_ARG2 "const")
-else()
-  message(FATAL_ERROR "Unable to link function send")
-endif()
-set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
-set(HAVE_SEND 1)
-
 check_c_source_compiles("${_source_epilogue}
   int main(void) {
     int flag = MSG_NOSIGNAL;
@@ -236,8 +86,8 @@ endif()
 unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
 
 if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
-  if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-  # only try this on non-macOS
+  if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "iOS")
+  # only try this on non-apple platforms
 
   # if not cross-compilation...
   include(CheckCSourceRuns)
index fb803f8a6a00cb9142841089101c5fe06f350bc9..9a513bb6cb36dda60cdaa75f8964080396e82c55 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 if(NOT UNIX)
   if(WIN32)
-    set(HAVE_LIBDL 0)
-    set(HAVE_LIBUCB 0)
     set(HAVE_LIBSOCKET 0)
-    set(NOT_NEED_LIBNSL 0)
-    set(HAVE_LIBNSL 0)
     set(HAVE_GETHOSTNAME 1)
     set(HAVE_LIBZ 0)
 
-    set(HAVE_DLOPEN 0)
-
-    set(HAVE_ALLOCA_H 0)
     set(HAVE_ARPA_INET_H 0)
-    set(HAVE_DLFCN_H 0)
     set(HAVE_FCNTL_H 1)
     set(HAVE_INTTYPES_H 0)
     set(HAVE_IO_H 1)
-    set(HAVE_MALLOC_H 1)
-    set(HAVE_MEMORY_H 1)
     set(HAVE_NETDB_H 0)
-    set(HAVE_NETINET_IF_ETHER_H 0)
     set(HAVE_NETINET_IN_H 0)
     set(HAVE_NET_IF_H 0)
     set(HAVE_PROCESS_H 1)
     set(HAVE_PWD_H 0)
     set(HAVE_SETJMP_H 1)
     set(HAVE_SIGNAL_H 1)
-    set(HAVE_SOCKIO_H 0)
     set(HAVE_STDINT_H 0)
     set(HAVE_STDLIB_H 1)
     set(HAVE_STRINGS_H 0)
@@ -64,43 +54,26 @@ if(NOT UNIX)
     set(HAVE_TERMIOS_H 0)
     set(HAVE_TERMIO_H 0)
     set(HAVE_TIME_H 1)
-    set(HAVE_UNISTD_H 0)
     set(HAVE_UTIME_H 0)
-    set(HAVE_X509_H 0)
-    set(HAVE_ZLIB_H 0)
-
-    set(HAVE_SIZEOF_LONG_DOUBLE 1)
-    set(SIZEOF_LONG_DOUBLE 8)
 
     set(HAVE_SOCKET 1)
-    set(HAVE_POLL 0)
     set(HAVE_SELECT 1)
     set(HAVE_STRDUP 1)
-    set(HAVE_STRSTR 1)
-    set(HAVE_STRTOK_R 0)
-    set(HAVE_STRFTIME 1)
-    set(HAVE_UNAME 0)
-    set(HAVE_STRCASECMP 0)
     set(HAVE_STRICMP 1)
     set(HAVE_STRCMPI 1)
     set(HAVE_GETTIMEOFDAY 0)
-    set(HAVE_INET_ADDR 1)
     set(HAVE_CLOSESOCKET 1)
-    set(HAVE_SETVBUF 0)
     set(HAVE_SIGSETJMP 0)
+    set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1)
     set(HAVE_GETPASS_R 0)
-    set(HAVE_STRLCAT 0)
     set(HAVE_GETPWUID 0)
     set(HAVE_GETEUID 0)
     set(HAVE_UTIME 1)
     set(HAVE_RAND_EGD 0)
-    set(HAVE_RAND_SCREEN 0)
-    set(HAVE_RAND_STATUS 0)
     set(HAVE_GMTIME_R 0)
-    set(HAVE_LOCALTIME_R 0)
+    set(HAVE_GETADDRINFO_THREADSAFE 1)
     set(HAVE_GETHOSTBYNAME_R 0)
-    set(HAVE_SIGNAL_FUNC 1)
-    set(HAVE_SIGNAL_MACRO 0)
+    set(HAVE_SIGNAL 1)
 
     set(HAVE_GETHOSTBYNAME_R_3 0)
     set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
@@ -112,11 +85,6 @@ if(NOT UNIX)
     set(TIME_WITH_SYS_TIME 0)
     set(HAVE_O_NONBLOCK 0)
     set(HAVE_IN_ADDR_T 0)
-    if(ENABLE_IPV6)
-      set(HAVE_GETADDRINFO 1)
-    else()
-      set(HAVE_GETADDRINFO 0)
-    endif()
     set(STDC_HEADERS 1)
 
     set(HAVE_SIGACTION 0)
index 8f9b861bae0464190e1ea896816424c06e1a8cb5..78bfd6ffe6cc0f93b1a29d55d96c5876f6677bb8 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # File containing various utilities
 
index e96c1432a3a384aa2992ec38a68d9b5feb390852..55801f507dbd4df313ff0677cd38ba77cd2340bd 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
   message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
index 957148ecc6511b4e425e471dd9295e904ac09e6f..496a92d0e5b5d7330ec7551917a74f1f99635def 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 @PACKAGE_INIT@
 
index 125b0a02b72f94d6d552d95eb80b846432c92e46..62fee8e6d033b19d641782a0bf2ca71f4048c59b 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # curl/libcurl CMake script
 # by Tetetest and Sukender (Benoit Neil)
 # To check:
 # (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
 # (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
+
+# Note: By default this CMake build script detects the version of some
+# dependencies using `check_symbol_exists`.  Those checks do not work
+# in the case that both CURL and its dependency are included as
+# sub-projects in a larger build using `FetchContent`.  To support
+# that case, additional variables may be defined by the parent
+# project, ideally in the "extra" find package redirect file:
+# https://cmake.org/cmake/help/latest/module/FetchContent.html#integrating-with-find-package
+#
+# The following variables are available:
+#   HAVE_RAND_EGD: `RAND_egd` present in OpenSSL
+#   HAVE_BORINGSSL: OpenSSL is BoringSSL
+#   HAVE_PK11_CREATEMANAGEDGENERICOBJECTL: `PK11_CreateManagedGenericObject` present in NSS
+#   HAVE_SSL_CTX_SET_QUIC_METHOD: `SSL_CTX_set_quic_method` present in OpenSSL
+#   HAVE_QUICHE_CONN_SET_QLOG_FD: `quiche_conn_set_qlog_fd` present in QUICHE
+#   HAVE_ZSTD_CREATEDSTREAM: `ZSTD_createDStream` present in Zstd
+#
+# For each of the above variables, if the variable is DEFINED (either
+# to ON or OFF), the symbol detection will be skipped.  If the
+# variable is NOT DEFINED, the symbol detection will be performed.
+
 cmake_minimum_required(VERSION 3.2...3.16 FATAL_ERROR)
 
 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
@@ -65,7 +88,11 @@ message(STATUS "curl version=[${CURL_VERSION}]")
 # SET(PACKAGE_STRING "curl-")
 # SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/")
 set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
-set(OS "\"${CMAKE_SYSTEM_NAME}\"")
+if(CMAKE_C_COMPILER_TARGET)
+  set(OS "\"${CMAKE_C_COMPILER_TARGET}\"")
+else()
+  set(OS "\"${CMAKE_SYSTEM_NAME}\"")
+endif()
 
 include_directories(${CURL_SOURCE_DIR}/include)
 
@@ -76,20 +103,12 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 option(ENABLE_ARES "Set to ON to enable c-ares support" OFF)
 if(WIN32)
   option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF)
-  option(ENABLE_INET_PTON "Set to OFF to prevent usage of inet_pton when building against modern SDKs while still requiring compatibility with older Windows versions, such as Windows XP, Windows Server 2003 etc." ON)
   option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF)
   set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string")
   if(CURL_TARGET_WINDOWS_VERSION)
     add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION})
     set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
-  elseif(ENABLE_INET_PTON)
-    # _WIN32_WINNT_VISTA (0x0600)
-    add_definitions(-D_WIN32_WINNT=0x0600)
-    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0600")
-  else()
-    # _WIN32_WINNT_WINXP (0x0501)
-    add_definitions(-D_WIN32_WINNT=0x0501)
-    set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=0x0501")
+    set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}")
   endif()
   if(ENABLE_UNICODE)
     add_definitions(-DUNICODE -D_UNICODE)
@@ -109,7 +128,7 @@ option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OF
 
 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
   if(PICKY_COMPILER)
-    foreach(_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wfloat-equal -Wsign-compare -Wundef -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wvla -Wdouble-promotion)
+    foreach(_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wfloat-equal -Wsign-compare -Wundef -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wvla -Wdouble-promotion -Wenum-conversion -Warith-conversion)
       # surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
       # test result in.
       string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
@@ -330,20 +349,7 @@ if(ENABLE_THREADED_RESOLVER)
 endif()
 
 # Check for all needed libraries
-check_library_exists_concat("${CMAKE_DL_LIBS}" dlopen HAVE_LIBDL)
 check_library_exists_concat("socket" connect      HAVE_LIBSOCKET)
-check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)
-
-# Yellowtab Zeta needs different libraries than BeOS 5.
-if(BEOS)
-  set(NOT_NEED_LIBNSL 1)
-  check_library_exists_concat("bind" gethostbyname HAVE_LIBBIND)
-  check_library_exists_concat("bnetapi" closesocket HAVE_LIBBNETAPI)
-endif()
-
-if(NOT NOT_NEED_LIBNSL)
-  check_library_exists_concat("nsl"    gethostbyname  HAVE_LIBNSL)
-endif()
 
 check_function_exists(gethostname HAVE_GETHOSTNAME)
 
@@ -455,16 +461,12 @@ if(CURL_USE_OPENSSL)
   endif()
 
   set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
-  check_include_file("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
-  check_include_file("openssl/err.h"    HAVE_OPENSSL_ERR_H)
-  check_include_file("openssl/pem.h"    HAVE_OPENSSL_PEM_H)
-  check_include_file("openssl/rsa.h"    HAVE_OPENSSL_RSA_H)
-  check_include_file("openssl/ssl.h"    HAVE_OPENSSL_SSL_H)
-  check_include_file("openssl/x509.h"   HAVE_OPENSSL_X509_H)
-  check_include_file("openssl/rand.h"   HAVE_OPENSSL_RAND_H)
-  check_symbol_exists(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
-  check_symbol_exists(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
-  check_symbol_exists(RAND_egd    "${CURL_INCLUDES}" HAVE_RAND_EGD)
+  if(NOT DEFINED HAVE_RAND_EGD)
+    check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
+  endif()
+  if(NOT DEFINED HAVE_BORINGSSL)
+    check_symbol_exists(OPENSSL_IS_BORINGSSL "openssl/base.h" HAVE_BORINGSSL)
+  endif()
 
   add_definitions(-DOPENSSL_SUPPRESS_DEPRECATED)
 endif()
@@ -499,11 +501,13 @@ if(CURL_USE_NSS)
   list(APPEND CURL_LIBS ${NSS_LIBRARIES})
   set(SSL_ENABLED ON)
   set(USE_NSS ON)
-  cmake_push_check_state()
-  set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
-  set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
-  check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
-  cmake_pop_check_state()
+  if(NOT DEFINED HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+    cmake_push_check_state()
+    set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS})
+    set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES})
+    check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT)
+    cmake_pop_check_state()
+  endif()
 endif()
 
 option(USE_NGHTTP2 "Use Nghttp2 library" OFF)
@@ -515,20 +519,26 @@ endif()
 
 function(CheckQuicSupportInOpenSSL)
   # Be sure that the OpenSSL library actually supports QUIC.
-  cmake_push_check_state()
-  set(CMAKE_REQUIRED_INCLUDES   "${OPENSSL_INCLUDE_DIR}")
-  set(CMAKE_REQUIRED_LIBRARIES  "${OPENSSL_LIBRARIES}")
-  check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
+  if(NOT DEFINED HAVE_SSL_CTX_SET_QUIC_METHOD)
+    cmake_push_check_state()
+    set(CMAKE_REQUIRED_INCLUDES   "${OPENSSL_INCLUDE_DIR}")
+    set(CMAKE_REQUIRED_LIBRARIES  "${OPENSSL_LIBRARIES}")
+    check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD)
+    cmake_pop_check_state()
+  endif()
   if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD)
-    message(FATAL_ERROR "QUIC support is missing in OpenSSL/boringssl. Try setting -DOPENSSL_ROOT_DIR")
+    message(FATAL_ERROR "QUIC support is missing in OpenSSL/BoringSSL. Try setting -DOPENSSL_ROOT_DIR")
   endif()
-  cmake_pop_check_state()
 endfunction()
 
 option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF)
 if(USE_NGTCP2)
   if(USE_OPENSSL)
-    find_package(NGTCP2 REQUIRED OpenSSL)
+    if(HAVE_BORINGSSL)
+      find_package(NGTCP2 REQUIRED BoringSSL)
+    else()
+      find_package(NGTCP2 REQUIRED OpenSSL)
+    endif()
     CheckQuicSupportInOpenSSL()
   elseif(USE_GNUTLS)
     # TODO add GnuTLS support as vtls library.
@@ -556,11 +566,23 @@ if(USE_QUICHE)
   set(USE_QUICHE ON)
   include_directories(${QUICHE_INCLUDE_DIRS})
   list(APPEND CURL_LIBS ${QUICHE_LIBRARIES})
-  cmake_push_check_state()
-  set(CMAKE_REQUIRED_INCLUDES   "${QUICHE_INCLUDE_DIRS}")
-  set(CMAKE_REQUIRED_LIBRARIES  "${QUICHE_LIBRARIES}")
-  check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
-  cmake_pop_check_state()
+  if(NOT DEFINED HAVE_QUICHE_CONN_SET_QLOG_FD)
+    cmake_push_check_state()
+    set(CMAKE_REQUIRED_INCLUDES   "${QUICHE_INCLUDE_DIRS}")
+    set(CMAKE_REQUIRED_LIBRARIES  "${QUICHE_LIBRARIES}")
+    check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
+    cmake_pop_check_state()
+  endif()
+endif()
+
+option(USE_MSH3 "Use msquic library for HTTP/3 support" OFF)
+if(USE_MSH3)
+  if(USE_NGTCP2 OR USE_QUICHE)
+    message(FATAL_ERROR "Only one HTTP/3 backend can be selected!")
+  endif()
+  set(USE_MSH3 ON)
+  include_directories(${MSH3_INCLUDE_DIRS})
+  list(APPEND CURL_LIBS ${MSH3_LIBRARIES})
 endif()
 
 if(NOT CURL_DISABLE_LDAP)
@@ -586,7 +608,6 @@ if(NOT CURL_DISABLE_LDAP)
   # Now that we know, we're not using windows LDAP...
   if(USE_WIN32_LDAP)
     check_include_file_concat("winldap.h" HAVE_WINLDAP_H)
-    check_include_file_concat("winber.h"  HAVE_WINBER_H)
   else()
     # Check for LDAP
     set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
@@ -669,33 +690,28 @@ endif()
 
 if(NOT CURL_DISABLE_LDAPS)
   check_include_file_concat("ldap_ssl.h" HAVE_LDAP_SSL_H)
-  check_include_file_concat("ldapssl.h"  HAVE_LDAPSSL_H)
 endif()
 
-# Check for idn
+# Check for idn2
 option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
-set(HAVE_LIBIDN2 OFF)
 if(USE_LIBIDN2)
   check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2)
+else()
+  set(HAVE_LIBIDN2 OFF)
 endif()
 
 if(WIN32)
   option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF)
   if(USE_WIN32_IDN)
-    list(APPEND CURL_LIBS "Normaliz")
+    list(APPEND CURL_LIBS "normaliz")
     set(WANT_IDN_PROTOTYPES ON)
   endif()
 endif()
 
-# Check for symbol dlopen (same as HAVE_LIBDL)
-check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
-
 set(HAVE_LIBZ OFF)
-set(HAVE_ZLIB_H OFF)
 set(USE_ZLIB OFF)
 optional_dependency(ZLIB)
 if(ZLIB_FOUND)
-  set(HAVE_ZLIB_H ON)
   set(HAVE_LIBZ ON)
   set(USE_ZLIB ON)
 
@@ -727,11 +743,13 @@ option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF)
 set(HAVE_ZSTD OFF)
 if(CURL_ZSTD)
   find_package(Zstd REQUIRED)
-  cmake_push_check_state()
-  set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS})
-  set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES})
-  check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM)
-  cmake_pop_check_state()
+  if (NOT DEFINED HAVE_ZSTD_CREATEDSTREAM)
+    cmake_push_check_state()
+    set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS})
+    set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES})
+    check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM)
+    cmake_pop_check_state()
+  endif()
   if(Zstd_FOUND AND HAVE_ZSTD_CREATEDSTREAM)
     set(HAVE_ZSTD ON)
     list(APPEND CURL_LIBS ${Zstd_LIBRARIES})
@@ -739,42 +757,46 @@ if(CURL_ZSTD)
   endif()
 endif()
 
+#libpsl
+option(CURL_USE_LIBPSL "Use libPSL" ON)
+mark_as_advanced(CURL_USE_LIBPSL)
+set(USE_LIBPSL OFF)
+
+if(CURL_USE_LIBPSL)
+  find_package(LibPSL)
+  if(LIBPSL_FOUND)
+    list(APPEND CURL_LIBS ${LIBPSL_LIBRARY})
+    list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBPSL_INCLUDE_DIR}")
+    include_directories("${LIBPSL_INCLUDE_DIR}")
+    set(USE_LIBPSL ON)
+  endif()
+endif()
+
 #libSSH2
 option(CURL_USE_LIBSSH2 "Use libSSH2" ON)
 mark_as_advanced(CURL_USE_LIBSSH2)
 set(USE_LIBSSH2 OFF)
-set(HAVE_LIBSSH2 OFF)
-set(HAVE_LIBSSH2_H OFF)
 
 if(CURL_USE_LIBSSH2)
   find_package(LibSSH2)
   if(LIBSSH2_FOUND)
     list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY})
-    set(CMAKE_REQUIRED_LIBRARIES ${LIBSSH2_LIBRARY})
     list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBSSH2_INCLUDE_DIR}")
     include_directories("${LIBSSH2_INCLUDE_DIR}")
-    set(HAVE_LIBSSH2 ON)
     set(USE_LIBSSH2 ON)
-
-    # find_package has already found the headers
-    set(HAVE_LIBSSH2_H ON)
-    set(CURL_INCLUDES ${CURL_INCLUDES} "${LIBSSH2_INCLUDE_DIR}/libssh2.h")
-    set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DHAVE_LIBSSH2_H")
-    unset(CMAKE_REQUIRED_LIBRARIES)
   endif()
 endif()
 
 # libssh
 option(CURL_USE_LIBSSH "Use libSSH" OFF)
 mark_as_advanced(CURL_USE_LIBSSH)
-if(NOT HAVE_LIBSSH2 AND CURL_USE_LIBSSH)
+if(NOT USE_LIBSSH2 AND CURL_USE_LIBSSH)
   find_package(libssh CONFIG)
   if(libssh_FOUND)
     message(STATUS "Found libssh ${libssh_VERSION}")
     # Use imported target for include and library paths.
     list(APPEND CURL_LIBS ssh)
     set(USE_LIBSSH ON)
-    set(HAVE_LIBSSH_LIBSSH_H 1)
   endif()
 endif()
 
@@ -816,14 +838,15 @@ if(CURL_USE_GSSAPI)
         set(_LINKER_FLAGS_STR "${_LINKER_FLAGS_STR} -L\"${_dir}\"")
       endforeach()
 
-      set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}")
-      set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES})
-      check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+      if(NOT DEFINED HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+        set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}")
+        set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES})
+        check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE)
+        unset(CMAKE_REQUIRED_LIBRARIES)
+      endif()
       if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE)
         set(HAVE_OLD_GSSMIT ON)
       endif()
-      unset(CMAKE_REQUIRED_LIBRARIES)
-
     endif()
 
     include_directories(${GSS_INCLUDE_DIR})
@@ -935,7 +958,6 @@ if(NOT UNIX)
   check_include_file_concat("wincrypt.h"     HAVE_WINCRYPT_H)
 endif()
 
-check_include_file_concat("stdio.h"          HAVE_STDIO_H)
 check_include_file_concat("inttypes.h"       HAVE_INTTYPES_H)
 check_include_file_concat("sys/filio.h"      HAVE_SYS_FILIO_H)
 check_include_file_concat("sys/ioctl.h"      HAVE_SYS_IOCTL_H)
@@ -948,11 +970,9 @@ check_include_file_concat("sys/sockio.h"     HAVE_SYS_SOCKIO_H)
 check_include_file_concat("sys/stat.h"       HAVE_SYS_STAT_H)
 check_include_file_concat("sys/time.h"       HAVE_SYS_TIME_H)
 check_include_file_concat("sys/types.h"      HAVE_SYS_TYPES_H)
-check_include_file_concat("sys/uio.h"        HAVE_SYS_UIO_H)
 check_include_file_concat("sys/un.h"         HAVE_SYS_UN_H)
 check_include_file_concat("sys/utime.h"      HAVE_SYS_UTIME_H)
 check_include_file_concat("sys/xattr.h"      HAVE_SYS_XATTR_H)
-check_include_file_concat("alloca.h"         HAVE_ALLOCA_H)
 check_include_file_concat("arpa/inet.h"      HAVE_ARPA_INET_H)
 check_include_file_concat("arpa/tftp.h"      HAVE_ARPA_TFTP_H)
 check_include_file_concat("assert.h"         HAVE_ASSERT_H)
@@ -961,7 +981,6 @@ check_include_file_concat("fcntl.h"          HAVE_FCNTL_H)
 check_include_file_concat("idn2.h"           HAVE_IDN2_H)
 check_include_file_concat("ifaddrs.h"        HAVE_IFADDRS_H)
 check_include_file_concat("io.h"             HAVE_IO_H)
-check_include_file_concat("krb.h"            HAVE_KRB_H)
 check_include_file_concat("libgen.h"         HAVE_LIBGEN_H)
 check_include_file_concat("locale.h"         HAVE_LOCALE_H)
 check_include_file_concat("net/if.h"         HAVE_NET_IF_H)
@@ -970,15 +989,14 @@ check_include_file_concat("netinet/in.h"     HAVE_NETINET_IN_H)
 check_include_file_concat("netinet/tcp.h"    HAVE_NETINET_TCP_H)
 check_include_file("linux/tcp.h"      HAVE_LINUX_TCP_H)
 
-check_include_file_concat("pem.h"            HAVE_PEM_H)
 check_include_file_concat("poll.h"           HAVE_POLL_H)
 check_include_file_concat("pwd.h"            HAVE_PWD_H)
 check_include_file_concat("setjmp.h"         HAVE_SETJMP_H)
 check_include_file_concat("signal.h"         HAVE_SIGNAL_H)
 check_include_file_concat("ssl.h"            HAVE_SSL_H)
+check_include_file_concat("stdatomic.h"      HAVE_STDATOMIC_H)
 check_include_file_concat("stdbool.h"        HAVE_STDBOOL_H)
 check_include_file_concat("stdint.h"         HAVE_STDINT_H)
-check_include_file_concat("stdio.h"          HAVE_STDIO_H)
 check_include_file_concat("stdlib.h"         HAVE_STDLIB_H)
 check_include_file_concat("string.h"         HAVE_STRING_H)
 check_include_file_concat("strings.h"        HAVE_STRINGS_H)
@@ -988,26 +1006,18 @@ check_include_file_concat("termios.h"        HAVE_TERMIOS_H)
 check_include_file_concat("time.h"           HAVE_TIME_H)
 check_include_file_concat("unistd.h"         HAVE_UNISTD_H)
 check_include_file_concat("utime.h"          HAVE_UTIME_H)
-check_include_file_concat("x509.h"           HAVE_X509_H)
 
 check_include_file_concat("process.h"        HAVE_PROCESS_H)
 check_include_file_concat("stddef.h"         HAVE_STDDEF_H)
-check_include_file_concat("dlfcn.h"          HAVE_DLFCN_H)
-check_include_file_concat("malloc.h"         HAVE_MALLOC_H)
-check_include_file_concat("memory.h"         HAVE_MEMORY_H)
-check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H)
 check_include_file_concat("stdint.h"        HAVE_STDINT_H)
-check_include_file_concat("sockio.h"        HAVE_SOCKIO_H)
 check_include_file_concat("sys/utsname.h"   HAVE_SYS_UTSNAME_H)
 
 check_type_size(size_t  SIZEOF_SIZE_T)
 check_type_size(ssize_t  SIZEOF_SSIZE_T)
 check_type_size("long long"  SIZEOF_LONG_LONG)
 check_type_size("long"  SIZEOF_LONG)
-check_type_size("short"  SIZEOF_SHORT)
 check_type_size("int"  SIZEOF_INT)
 check_type_size("__int64"  SIZEOF___INT64)
-check_type_size("long double"  SIZEOF_LONG_DOUBLE)
 check_type_size("time_t"  SIZEOF_TIME_T)
 if(NOT HAVE_SIZEOF_SSIZE_T)
   if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
@@ -1021,11 +1031,12 @@ endif()
 
 if(HAVE_SIZEOF_LONG_LONG)
   set(HAVE_LONGLONG 1)
-  set(HAVE_LL 1)
 endif()
 
-find_file(RANDOM_FILE urandom /dev)
-mark_as_advanced(RANDOM_FILE)
+if(NOT CMAKE_CROSSCOMPILING)
+  find_file(RANDOM_FILE urandom /dev)
+  mark_as_advanced(RANDOM_FILE)
+endif()
 
 # Check for some functions that are used
 if(HAVE_LIBWS2_32)
@@ -1034,57 +1045,46 @@ elseif(HAVE_LIBSOCKET)
   set(CMAKE_REQUIRED_LIBRARIES socket)
 endif()
 
+check_symbol_exists(fchmod        "${CURL_INCLUDES}" HAVE_FCHMOD)
 check_symbol_exists(basename      "${CURL_INCLUDES}" HAVE_BASENAME)
 check_symbol_exists(socket        "${CURL_INCLUDES}" HAVE_SOCKET)
+check_symbol_exists(socketpair    "${CURL_INCLUDES}" HAVE_SOCKETPAIR)
+check_symbol_exists(recv          "${CURL_INCLUDES}" HAVE_RECV)
+check_symbol_exists(send          "${CURL_INCLUDES}" HAVE_SEND)
 check_symbol_exists(select        "${CURL_INCLUDES}" HAVE_SELECT)
-check_symbol_exists(poll          "${CURL_INCLUDES}" HAVE_POLL)
 check_symbol_exists(strdup        "${CURL_INCLUDES}" HAVE_STRDUP)
-check_symbol_exists(strstr        "${CURL_INCLUDES}" HAVE_STRSTR)
 check_symbol_exists(strtok_r      "${CURL_INCLUDES}" HAVE_STRTOK_R)
-check_symbol_exists(strftime      "${CURL_INCLUDES}" HAVE_STRFTIME)
-check_symbol_exists(uname         "${CURL_INCLUDES}" HAVE_UNAME)
 check_symbol_exists(strcasecmp    "${CURL_INCLUDES}" HAVE_STRCASECMP)
 check_symbol_exists(stricmp       "${CURL_INCLUDES}" HAVE_STRICMP)
 check_symbol_exists(strcmpi       "${CURL_INCLUDES}" HAVE_STRCMPI)
-check_symbol_exists(strncmpi      "${CURL_INCLUDES}" HAVE_STRNCMPI)
 check_symbol_exists(alarm         "${CURL_INCLUDES}" HAVE_ALARM)
-if(NOT HAVE_STRNCMPI)
-  set(HAVE_STRCMPI)
-endif()
 check_symbol_exists(getppid       "${CURL_INCLUDES}" HAVE_GETPPID)
 check_symbol_exists(utimes        "${CURL_INCLUDES}" HAVE_UTIMES)
 
 check_symbol_exists(gettimeofday  "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
-check_symbol_exists(inet_addr     "${CURL_INCLUDES}" HAVE_INET_ADDR)
 check_symbol_exists(closesocket   "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
 check_symbol_exists(sigsetjmp     "${CURL_INCLUDES}" HAVE_SIGSETJMP)
 check_symbol_exists(getpass_r     "${CURL_INCLUDES}" HAVE_GETPASS_R)
 check_symbol_exists(getpwuid      "${CURL_INCLUDES}" HAVE_GETPWUID)
 check_symbol_exists(getpwuid_r    "${CURL_INCLUDES}" HAVE_GETPWUID_R)
 check_symbol_exists(geteuid       "${CURL_INCLUDES}" HAVE_GETEUID)
-check_symbol_exists(usleep        "${CURL_INCLUDES}" HAVE_USLEEP)
 check_symbol_exists(utime         "${CURL_INCLUDES}" HAVE_UTIME)
 check_symbol_exists(gmtime_r      "${CURL_INCLUDES}" HAVE_GMTIME_R)
-check_symbol_exists(localtime_r   "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
 
-check_symbol_exists(gethostbyname   "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME)
 check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)
 
-check_symbol_exists(signal        "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
-check_symbol_exists(SIGALRM       "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
-if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
-  set(HAVE_SIGNAL 1)
-endif()
-check_symbol_exists(uname          "${CURL_INCLUDES}" HAVE_UNAME)
+check_symbol_exists(signal         "${CURL_INCLUDES}" HAVE_SIGNAL)
 check_symbol_exists(strtoll        "${CURL_INCLUDES}" HAVE_STRTOLL)
 check_symbol_exists(_strtoi64      "${CURL_INCLUDES}" HAVE__STRTOI64)
 check_symbol_exists(strerror_r     "${CURL_INCLUDES}" HAVE_STRERROR_R)
 check_symbol_exists(siginterrupt   "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
 check_symbol_exists(getaddrinfo    "${CURL_INCLUDES}" HAVE_GETADDRINFO)
+if(NOT HAVE_GETADDRINFO)
+  set(HAVE_GETADDRINFO_THREADSAFE OFF)
+endif()
 check_symbol_exists(freeaddrinfo   "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
 check_symbol_exists(pipe           "${CURL_INCLUDES}" HAVE_PIPE)
 check_symbol_exists(ftruncate      "${CURL_INCLUDES}" HAVE_FTRUNCATE)
-check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
 check_symbol_exists(getpeername    "${CURL_INCLUDES}" HAVE_GETPEERNAME)
 check_symbol_exists(getsockname    "${CURL_INCLUDES}" HAVE_GETSOCKNAME)
 check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX)
@@ -1092,10 +1092,16 @@ check_symbol_exists(getrlimit      "${CURL_INCLUDES}" HAVE_GETRLIMIT)
 check_symbol_exists(setlocale      "${CURL_INCLUDES}" HAVE_SETLOCALE)
 check_symbol_exists(setmode        "${CURL_INCLUDES}" HAVE_SETMODE)
 check_symbol_exists(setrlimit      "${CURL_INCLUDES}" HAVE_SETRLIMIT)
-check_symbol_exists(fcntl          "${CURL_INCLUDES}" HAVE_FCNTL)
-check_symbol_exists(ioctl          "${CURL_INCLUDES}" HAVE_IOCTL)
-check_symbol_exists(setsockopt     "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
+
+if(NOT MSVC OR (MSVC_VERSION GREATER_EQUAL 1900))
+  # earlier MSVC compilers had faulty snprintf implementations
+  check_symbol_exists(snprintf       "${CURL_INCLUDES}" HAVE_SNPRINTF)
+endif()
 check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME)
+check_symbol_exists(inet_ntop      "${CURL_INCLUDES}" HAVE_INET_NTOP)
+if(MSVC AND (MSVC_VERSION LESS_EQUAL 1600))
+  set(HAVE_INET_NTOP OFF)
+endif()
 check_symbol_exists(inet_pton      "${CURL_INCLUDES}" HAVE_INET_PTON)
 
 check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR)
@@ -1145,7 +1151,6 @@ foreach(CURL_TEST
     HAVE_IOCTL_FIONBIO
     HAVE_IOCTL_SIOCGIFADDR
     HAVE_SETSOCKOPT_SO_NONBLOCK
-    HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
     TIME_WITH_SYS_TIME
     HAVE_O_NONBLOCK
     HAVE_GETHOSTBYNAME_R_3
@@ -1157,10 +1162,10 @@ foreach(CURL_TEST
     HAVE_IN_ADDR_T
     HAVE_BOOL_T
     STDC_HEADERS
-    HAVE_GETADDRINFO
     HAVE_FILE_OFFSET_BITS
     HAVE_VARIADIC_MACROS_C99
     HAVE_VARIADIC_MACROS_GCC
+    HAVE_ATOMIC
     )
   curl_internal_test(${CURL_TEST})
 endforeach()
@@ -1177,8 +1182,30 @@ set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h")
 check_type_size("curl_off_t"  SIZEOF_CURL_OFF_T)
 set(CMAKE_EXTRA_INCLUDE_FILES "")
 
+if(WIN32)
+  # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT
+  curl_internal_test(HAVE_WIN32_WINNT)
+  if(HAVE_WIN32_WINNT)
+    string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}")
+    string(REGEX REPLACE ".*_WIN32_WINNT=" "" HAVE_WIN32_WINNT "${OUTPUT}")
+    message(STATUS "Found _WIN32_WINNT=${HAVE_WIN32_WINNT}")
+  endif()
+  # avoid storing HAVE_WIN32_WINNT in CMake cache
+  unset(HAVE_WIN32_WINNT CACHE)
+endif()
+
 set(CMAKE_REQUIRED_FLAGS)
 
+option(ENABLE_WEBSOCKETS "Set to ON to enable EXPERIMENTAL websockets" OFF)
+
+if(ENABLE_WEBSOCKETS)
+  if(${SIZEOF_CURL_OFF_T} GREATER "4")
+    set(USE_WEBSOCKETS ON)
+  else()
+    message(WARNING "curl_off_t is too small to enable WebSockets")
+  endif()
+endif()
+
 foreach(CURL_TEST
     HAVE_GLIBC_STRERROR_R
     HAVE_POSIX_STRERROR_R
@@ -1222,18 +1249,6 @@ if(NOT HAVE_IN_ADDR_T)
   set(in_addr_t "unsigned long")
 endif()
 
-# Fix libz / zlib.h
-
-if(NOT CURL_SPECIAL_LIBZ)
-  if(NOT HAVE_LIBZ)
-    set(HAVE_ZLIB_H 0)
-  endif()
-
-  if(NOT HAVE_ZLIB_H)
-    set(HAVE_LIBZ 0)
-  endif()
-endif()
-
 # Check for nonblocking
 set(HAVE_DISABLED_NONBLOCKING 1)
 if(HAVE_FIONBIO OR
@@ -1293,6 +1308,25 @@ if(WIN32)
   if(USE_WIN32_CRYPTO OR USE_SCHANNEL)
     list(APPEND CURL_LIBS "advapi32" "crypt32")
   endif()
+
+  # Matching logic used for Curl_win32_random()
+  if(MINGW)
+    check_c_source_compiles("
+      #include <_mingw.h>
+      #if defined(__MINGW64_VERSION_MAJOR)
+      #error
+      #endif
+      int main(void) {
+        return 0;
+      }"
+      HAVE_MINGW_ORIGINAL)
+  endif()
+
+  if(NOT HAVE_MINGW_ORIGINAL)
+    list(APPEND CURL_LIBS "bcrypt")
+  else()
+    set(HAVE_FTRUNCATE OFF)
+  endif()
 endif()
 
 if(MSVC)
@@ -1433,6 +1467,9 @@ _add_if("HTTP3"         USE_NGTCP2 OR USE_QUICHE)
 _add_if("MultiSSL"      CURL_WITH_MULTI_SSL)
 _add_if("HTTPS-proxy"   SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS))
 _add_if("unicode"       ENABLE_UNICODE)
+_add_if("threadsafe"    HAVE_ATOMIC OR (WIN32 AND
+                        HAVE_WIN32_WINNT GREATER_EQUAL 0x600))
+_add_if("PSL"           USE_LIBPSL)
 string(REPLACE ";" " " SUPPORT_FEATURES "${_items}")
 message(STATUS "Enabled features: ${SUPPORT_FEATURES}")
 
@@ -1469,6 +1506,8 @@ _add_if("SFTP"          USE_LIBSSH2 OR USE_LIBSSH)
 _add_if("RTSP"          NOT CURL_DISABLE_RTSP)
 _add_if("RTMP"          USE_LIBRTMP)
 _add_if("MQTT"          NOT CURL_DISABLE_MQTT)
+_add_if("WS"            USE_WEBSOCKETS)
+_add_if("WSS"           USE_WEBSOCKETS)
 if(_items)
   list(SORT _items)
 endif()
@@ -1602,13 +1641,13 @@ if(MSVC_VERSION EQUAL 1600)
   endif()
 endif()
 
-if(NOT TARGET uninstall)
+if(NOT TARGET curl_uninstall)
   configure_file(
       ${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in
       ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake
       IMMEDIATE @ONLY)
 
-  add_custom_target(uninstall
+  add_custom_target(curl_uninstall
       COMMAND ${CMAKE_COMMAND} -P
       ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake)
 endif()
diff --git a/COPYING b/COPYING
index 48f144758ee9b21f40565e612123dcdd403791db..90f05adf259d106ecb44a7365ef93cfd9f81b1b1 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,6 +1,6 @@
 COPYRIGHT AND PERMISSION NOTICE
 
-Copyright (c) 1996 - 2021, Daniel Stenberg, <daniel@haxx.se>, and many
+Copyright (c) 1996 - 2022, Daniel Stenberg, <daniel@haxx.se>, and many
 contributors, see the THANKS file.
 
 All rights reserved.
index 3c8452774dc835b98354b3001633d04e987ab7c6..240eb845ebb053d75149bf865e4e309295f3422d 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # This script performs all of the steps needed to build a
 # universal binary libcurl.framework for Mac OS X 10.4 or greater.
@@ -81,12 +83,12 @@ if test $PPC64_NEEDED -gt 0
 then
   SDK64=10.5
   ARCHES64='-arch x86_64 -arch ppc64'
-  SDK64=`ls  $SDK_PATH|grep 10.5|head -1`
+  SDK64=`ls  $SDK_PATH | grep "10\.5" | head -1`
 else
  ARCHES64='-arch x86_64'
  #We "know" that 10.4 and earlier do not support 64bit
- OLD_SDK64=`ls  $SDK_PATH|egrep -v "10.[0-4]"|head -1`
- NEW_SDK64=`ls -r $SDK_PATH|egrep -v "10.[0-4][^0-9]" | head -1`
+ OLD_SDK64=`ls  $SDK_PATH | grep -v "10\.[0-4]" | head -1`
+ NEW_SDK64=`ls -r $SDK_PATH | grep -v "10\.[0-4][^0-9]" | head -1`
  if test $USE_OLD -gt 0
   then
    SDK64=$OLD_SDK64
@@ -116,7 +118,7 @@ if test ! -z $SDK32; then
   mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Resources
   cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl
   install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl
-  /usr/bin/sed -e "s/7\.12\.3/$VERSION/" lib/libcurl.plist >libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
+  cp lib/libcurl.plist libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist
   mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
   cp include/curl/*.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl
   pushd libcurl.framework
index 1a531c1539e80f9d1f638396bd473118de2a3312..ab5a9b5f31eaa08d390d769b464025bac50b06d7 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 all:
@@ -73,31 +75,6 @@ amiga:
        cd ./lib && make -f makefile.amiga
        cd ./src && make -f makefile.amiga
 
-netware:
-       $(MAKE) -C lib -f Makefile.netware
-       $(MAKE) -C src -f Makefile.netware
-
-netware-clean:
-       $(MAKE) -C lib -f Makefile.netware clean
-       $(MAKE) -C src -f Makefile.netware clean
-       $(MAKE) -C docs/examples -f Makefile.netware clean
-
-netware-vclean netware-distclean:
-       $(MAKE) -C lib -f Makefile.netware vclean
-       $(MAKE) -C src -f Makefile.netware vclean
-       $(MAKE) -C docs/examples -f Makefile.netware vclean
-
-netware-install:
-       $(MAKE) -C lib -f Makefile.netware install
-       $(MAKE) -C src -f Makefile.netware install
-
-netware-examples-%:
-       $(MAKE) -C docs/examples -f Makefile.netware CFG=$@
-
-netware-%:
-       $(MAKE) -C lib -f Makefile.netware CFG=$@
-       $(MAKE) -C src -f Makefile.netware CFG=$@
-
 unix: all
 
 unix-ssl: ssl
@@ -106,7 +83,7 @@ linux: all
 
 linux-ssl: ssl
 
-ca-bundle: lib/mk-ca-bundle.pl
+ca-bundle: scripts/mk-ca-bundle.pl
        @echo "generate a fresh ca-bundle.crt"
        @perl $< -b -l -u lib/ca-bundle.crt
 
index 3e55230ee77c81b96e8cb5e37b33acbe26b308e1..40771ed3869cb2a914fe47ff1754cb44cfaf4761 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 AUTOMAKE_OPTIONS = foreign
@@ -34,8 +36,10 @@ CMAKE_DIST =                                    \
  CMake/FindBrotli.cmake                         \
  CMake/FindCARES.cmake                          \
  CMake/FindGSS.cmake                            \
+ CMake/FindLibPSL.cmake                         \
  CMake/FindLibSSH2.cmake                        \
  CMake/FindMbedTLS.cmake                        \
+ CMake/FindMSH3.cmake                           \
  CMake/FindNGHTTP2.cmake                        \
  CMake/FindNGHTTP3.cmake                        \
  CMake/FindNGTCP2.cmake                         \
@@ -49,41 +53,6 @@ CMAKE_DIST =                                    \
  CMake/Utilities.cmake                          \
  CMakeLists.txt
 
-VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
-VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
-VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
-
-VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
-VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
-VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
-
-VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
-VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
-VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
-
-VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
-VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
-VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
-
-VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
-VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
-VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
-
 VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
 VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
 VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
@@ -112,59 +81,56 @@ VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
 VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
 VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
 
-VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
-VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
-VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
-VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
-VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
-VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
-
-VC_DIST = projects/README                           \
- projects/build-openssl.bat                         \
- projects/build-wolfssl.bat                         \
- projects/checksrc.bat                              \
- projects/Windows/VC6/curl-all.dsw                  \
- projects/Windows/VC6/lib/libcurl.dsw               \
- projects/Windows/VC6/src/curl.dsw                  \
- projects/Windows/VC7/curl-all.sln                  \
- projects/Windows/VC7/lib/libcurl.sln               \
- projects/Windows/VC7/src/curl.sln                  \
- projects/Windows/VC7.1/curl-all.sln                \
- projects/Windows/VC7.1/lib/libcurl.sln             \
- projects/Windows/VC7.1/src/curl.sln                \
- projects/Windows/VC8/curl-all.sln                  \
- projects/Windows/VC8/lib/libcurl.sln               \
- projects/Windows/VC8/src/curl.sln                  \
- projects/Windows/VC9/curl-all.sln                  \
- projects/Windows/VC9/lib/libcurl.sln               \
- projects/Windows/VC9/src/curl.sln                  \
- projects/Windows/VC10/curl-all.sln                 \
- projects/Windows/VC10/lib/libcurl.sln              \
- projects/Windows/VC10/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC10/src/curl.sln                 \
- projects/Windows/VC10/src/curl.vcxproj.filters     \
- projects/Windows/VC11/curl-all.sln                 \
- projects/Windows/VC11/lib/libcurl.sln              \
- projects/Windows/VC11/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC11/src/curl.sln                 \
- projects/Windows/VC11/src/curl.vcxproj.filters     \
- projects/Windows/VC12/curl-all.sln                 \
- projects/Windows/VC12/lib/libcurl.sln              \
- projects/Windows/VC12/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC12/src/curl.sln                 \
- projects/Windows/VC12/src/curl.vcxproj.filters     \
- projects/Windows/VC14/curl-all.sln                 \
- projects/Windows/VC14/lib/libcurl.sln              \
- projects/Windows/VC14/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC14/src/curl.sln                 \
- projects/Windows/VC14/src/curl.vcxproj.filters     \
- projects/Windows/VC15/curl-all.sln                 \
- projects/Windows/VC15/lib/libcurl.sln              \
- projects/Windows/VC15/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC15/src/curl.sln                 \
- projects/Windows/VC15/src/curl.vcxproj.filters     \
- projects/generate.bat                              \
- projects/wolfssl_options.h                         \
+VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
+VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
+VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
+VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
+VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
+VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
+VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
+VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
+VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
+
+VC_DIST = projects/README.md                           \
+ projects/build-openssl.bat                            \
+ projects/build-wolfssl.bat                            \
+ projects/checksrc.bat                                 \
+ projects/Windows/VC10/curl-all.sln                    \
+ projects/Windows/VC10/lib/libcurl.sln                 \
+ projects/Windows/VC10/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC10/src/curl.sln                    \
+ projects/Windows/VC10/src/curl.vcxproj.filters        \
+ projects/Windows/VC11/curl-all.sln                    \
+ projects/Windows/VC11/lib/libcurl.sln                 \
+ projects/Windows/VC11/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC11/src/curl.sln                    \
+ projects/Windows/VC11/src/curl.vcxproj.filters        \
+ projects/Windows/VC12/curl-all.sln                    \
+ projects/Windows/VC12/lib/libcurl.sln                 \
+ projects/Windows/VC12/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC12/src/curl.sln                    \
+ projects/Windows/VC12/src/curl.vcxproj.filters        \
+ projects/Windows/VC14/curl-all.sln                    \
+ projects/Windows/VC14/lib/libcurl.sln                 \
+ projects/Windows/VC14/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC14/src/curl.sln                    \
+ projects/Windows/VC14/src/curl.vcxproj.filters        \
+ projects/Windows/VC14.10/curl-all.sln                 \
+ projects/Windows/VC14.10/lib/libcurl.sln              \
+ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters  \
+ projects/Windows/VC14.10/src/curl.sln                 \
+ projects/Windows/VC14.10/src/curl.vcxproj.filters     \
+ projects/Windows/VC14.30/curl-all.sln                 \
+ projects/Windows/VC14.30/lib/libcurl.sln              \
+ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters  \
+ projects/Windows/VC14.30/src/curl.sln                 \
+ projects/Windows/VC14.30/src/curl.vcxproj.filters     \
+ projects/generate.bat                                 \
+ projects/wolfssl_options.h                            \
  projects/wolfssl_override.props
 
 WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
@@ -180,17 +146,14 @@ PLAN9_DIST = plan9/include/mkfile \
  plan9/src/mkfile.inc             \
  plan9/src/mkfile
 
-EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
- scripts/updatemanpages.pl $(CMAKE_DIST) \
- $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in            \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST)        \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat
 
-CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
- $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
- $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
- $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
+CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ)        \
+ $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \
+ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ)              \
+ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
 
 bin_SCRIPTS = curl-config
 
@@ -318,13 +281,13 @@ uninstall-hook:
        (cd docs && $(MAKE) uninstall)
        (cd docs/libcurl && $(MAKE) uninstall)
 
-ca-bundle: lib/mk-ca-bundle.pl
+ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
        @echo "generating a fresh ca-bundle.crt"
-       @perl $< -b -l -u lib/ca-bundle.crt
+       @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
 
-ca-firefox: lib/firefox-db2pem.sh
+ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
        @echo "generating a fresh ca-bundle.crt"
-       ./lib/firefox-db2pem.sh lib/ca-bundle.crt
+       $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
 
 checksrc:
        (cd lib && $(MAKE) checksrc)
@@ -336,13 +299,11 @@ checksrc:
 
 .PHONY: vc-ide
 
-vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
- $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS) \
- $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
- $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS)                  \
  $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
  $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
- $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
+ $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS)                   \
+ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
        @(win32_lib_srcs='$(LIB_CFILES)'; \
        win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
        win32_lib_rc='$(LIB_RCFILES)'; \
@@ -503,104 +464,8 @@ function gen_element(type, dir, file)\
     printf("%s\r\n", $$0);\
 }';\
        \
-       echo "generating '$(VC6_LIBDSP)'"; \
-       awk -v proj_type=dsp \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
-       \
-       echo "generating '$(VC6_SRCDSP)'"; \
-       awk -v proj_type=dsp \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
-       \
-       echo "generating '$(VC7_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC7_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC71_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC71_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC8_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC8_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC9_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
+       echo "generating '$(VC10_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
                -v lib_rc="$$win32_lib_rc" \
@@ -612,18 +477,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC9_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
+       echo "generating '$(VC10_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC10_LIBVCXPROJ)'"; \
+       echo "generating '$(VC11_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -636,18 +501,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC10_SRCVCXPROJ)'"; \
+       echo "generating '$(VC11_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC11_LIBVCXPROJ)'"; \
+       echo "generating '$(VC12_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -660,18 +525,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC11_SRCVCXPROJ)'"; \
+       echo "generating '$(VC12_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC12_LIBVCXPROJ)'"; \
+       echo "generating '$(VC14_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -684,18 +549,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC12_SRCVCXPROJ)'"; \
+       echo "generating '$(VC14_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC14_LIBVCXPROJ)'"; \
+       echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -708,18 +573,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC14_SRCVCXPROJ)'"; \
+       echo "generating '$(VC14_10_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC15_LIBVCXPROJ)'"; \
+       echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -732,16 +597,16 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC15_SRCVCXPROJ)'"; \
+       echo "generating '$(VC14_30_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
+               "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
 
 tidy:
        (cd src && $(MAKE) tidy)
index bd11ecf7ce260ee64fdfb311ff12dfeb9493130c..158bdfc4f8b9aba2d120b529f02678d0c4e31d1e 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #***************************************************************************
@@ -43,7 +45,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -56,6 +58,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #***************************************************************************
@@ -65,7 +69,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # ./src/Makefile.inc
-# Using the backslash as line continuation character might be problematic
-# with some make flavours, as Watcom's wmake showed us already. If we
-# ever want to change this in a portable manner then we should consider
-# this idea (posted to the libcurl list by Adam Kellas):
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
 # CSRC1 = file1.c file2.c file3.c
 # CSRC2 = file4.c file5.c file6.c
 # CSOURCES = $(CSRC1) $(CSRC2)
@@ -165,15 +170,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -376,6 +379,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -393,6 +397,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -450,6 +455,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -468,12 +474,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -540,7 +547,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -558,8 +564,10 @@ CMAKE_DIST = \
  CMake/FindBrotli.cmake                         \
  CMake/FindCARES.cmake                          \
  CMake/FindGSS.cmake                            \
+ CMake/FindLibPSL.cmake                         \
  CMake/FindLibSSH2.cmake                        \
  CMake/FindMbedTLS.cmake                        \
+ CMake/FindMSH3.cmake                           \
  CMake/FindNGHTTP2.cmake                        \
  CMake/FindNGHTTP3.cmake                        \
  CMake/FindNGTCP2.cmake                         \
@@ -573,36 +581,6 @@ CMAKE_DIST = \
  CMake/Utilities.cmake                          \
  CMakeLists.txt
 
-VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl
-VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist
-VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc
-VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl
-VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist
-VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc
-VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl
-VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist
-VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc
-VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl
-VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist
-VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc
-VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl
-VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist
-VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc
-VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl
-VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist
-VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc
-VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl
-VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist
-VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc
-VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl
-VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist
-VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc
-VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl
-VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist
-VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc
-VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl
-VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist
-VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc
 VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl
 VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist
 VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc
@@ -627,58 +605,54 @@ VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
 VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
 VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
 VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
-VC15_LIBTMPL = projects/Windows/VC15/lib/libcurl.tmpl
-VC15_LIBVCXPROJ = projects/Windows/VC15/lib/libcurl.vcxproj.dist
-VC15_LIBVCXPROJ_DEPS = $(VC15_LIBTMPL) Makefile.am lib/Makefile.inc
-VC15_SRCTMPL = projects/Windows/VC15/src/curl.tmpl
-VC15_SRCVCXPROJ = projects/Windows/VC15/src/curl.vcxproj.dist
-VC15_SRCVCXPROJ_DEPS = $(VC15_SRCTMPL) Makefile.am src/Makefile.inc
-VC_DIST = projects/README                           \
- projects/build-openssl.bat                         \
- projects/build-wolfssl.bat                         \
- projects/checksrc.bat                              \
- projects/Windows/VC6/curl-all.dsw                  \
- projects/Windows/VC6/lib/libcurl.dsw               \
- projects/Windows/VC6/src/curl.dsw                  \
- projects/Windows/VC7/curl-all.sln                  \
- projects/Windows/VC7/lib/libcurl.sln               \
- projects/Windows/VC7/src/curl.sln                  \
- projects/Windows/VC7.1/curl-all.sln                \
- projects/Windows/VC7.1/lib/libcurl.sln             \
- projects/Windows/VC7.1/src/curl.sln                \
- projects/Windows/VC8/curl-all.sln                  \
- projects/Windows/VC8/lib/libcurl.sln               \
- projects/Windows/VC8/src/curl.sln                  \
- projects/Windows/VC9/curl-all.sln                  \
- projects/Windows/VC9/lib/libcurl.sln               \
- projects/Windows/VC9/src/curl.sln                  \
- projects/Windows/VC10/curl-all.sln                 \
- projects/Windows/VC10/lib/libcurl.sln              \
- projects/Windows/VC10/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC10/src/curl.sln                 \
- projects/Windows/VC10/src/curl.vcxproj.filters     \
- projects/Windows/VC11/curl-all.sln                 \
- projects/Windows/VC11/lib/libcurl.sln              \
- projects/Windows/VC11/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC11/src/curl.sln                 \
- projects/Windows/VC11/src/curl.vcxproj.filters     \
- projects/Windows/VC12/curl-all.sln                 \
- projects/Windows/VC12/lib/libcurl.sln              \
- projects/Windows/VC12/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC12/src/curl.sln                 \
- projects/Windows/VC12/src/curl.vcxproj.filters     \
- projects/Windows/VC14/curl-all.sln                 \
- projects/Windows/VC14/lib/libcurl.sln              \
- projects/Windows/VC14/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC14/src/curl.sln                 \
- projects/Windows/VC14/src/curl.vcxproj.filters     \
- projects/Windows/VC15/curl-all.sln                 \
- projects/Windows/VC15/lib/libcurl.sln              \
- projects/Windows/VC15/lib/libcurl.vcxproj.filters  \
- projects/Windows/VC15/src/curl.sln                 \
- projects/Windows/VC15/src/curl.vcxproj.filters     \
- projects/generate.bat                              \
- projects/wolfssl_options.h                         \
+VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
+VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
+VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
+VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
+VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
+VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
+VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
+VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
+VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
+VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
+VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
+VC_DIST = projects/README.md                           \
+ projects/build-openssl.bat                            \
+ projects/build-wolfssl.bat                            \
+ projects/checksrc.bat                                 \
+ projects/Windows/VC10/curl-all.sln                    \
+ projects/Windows/VC10/lib/libcurl.sln                 \
+ projects/Windows/VC10/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC10/src/curl.sln                    \
+ projects/Windows/VC10/src/curl.vcxproj.filters        \
+ projects/Windows/VC11/curl-all.sln                    \
+ projects/Windows/VC11/lib/libcurl.sln                 \
+ projects/Windows/VC11/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC11/src/curl.sln                    \
+ projects/Windows/VC11/src/curl.vcxproj.filters        \
+ projects/Windows/VC12/curl-all.sln                    \
+ projects/Windows/VC12/lib/libcurl.sln                 \
+ projects/Windows/VC12/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC12/src/curl.sln                    \
+ projects/Windows/VC12/src/curl.vcxproj.filters        \
+ projects/Windows/VC14/curl-all.sln                    \
+ projects/Windows/VC14/lib/libcurl.sln                 \
+ projects/Windows/VC14/lib/libcurl.vcxproj.filters     \
+ projects/Windows/VC14/src/curl.sln                    \
+ projects/Windows/VC14/src/curl.vcxproj.filters        \
+ projects/Windows/VC14.10/curl-all.sln                 \
+ projects/Windows/VC14.10/lib/libcurl.sln              \
+ projects/Windows/VC14.10/lib/libcurl.vcxproj.filters  \
+ projects/Windows/VC14.10/src/curl.sln                 \
+ projects/Windows/VC14.10/src/curl.vcxproj.filters     \
+ projects/Windows/VC14.30/curl-all.sln                 \
+ projects/Windows/VC14.30/lib/libcurl.sln              \
+ projects/Windows/VC14.30/lib/libcurl.vcxproj.filters  \
+ projects/Windows/VC14.30/src/curl.sln                 \
+ projects/Windows/VC14.30/src/curl.vcxproj.filters     \
+ projects/generate.bat                                 \
+ projects/wolfssl_options.h                            \
  projects/wolfssl_override.props
 
 WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
@@ -694,17 +668,14 @@ PLAN9_DIST = plan9/include/mkfile \
  plan9/src/mkfile.inc             \
  plan9/src/mkfile
 
-EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
- RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework \
- scripts/updatemanpages.pl $(CMAKE_DIST) \
- $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) \
- lib/libcurl.vers.in buildconf.bat scripts/coverage.sh scripts/completion.pl
+EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in            \
+ RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST)        \
+ $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat
 
-CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ) \
- $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ) \
- $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) \
- $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) \
- $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) $(VC15_LIBVCXPROJ) $(VC15_SRCVCXPROJ)
+CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ)        \
+ $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \
+ $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ)              \
+ $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
 
 bin_SCRIPTS = curl-config
 SUBDIRS = lib src
@@ -735,10 +706,10 @@ LIB_VTLS_CFILES = \
   vtls/bearssl.c            \
   vtls/gskit.c              \
   vtls/gtls.c               \
+  vtls/hostcheck.c          \
   vtls/keylog.c             \
   vtls/mbedtls.c            \
   vtls/mbedtls_threadlock.c \
-  vtls/mesalink.c           \
   vtls/nss.c                \
   vtls/openssl.c            \
   vtls/rustls.c             \
@@ -746,30 +717,34 @@ LIB_VTLS_CFILES = \
   vtls/schannel_verify.c    \
   vtls/sectransp.c          \
   vtls/vtls.c               \
-  vtls/wolfssl.c
+  vtls/wolfssl.c            \
+  vtls/x509asn1.c
 
 LIB_VTLS_HFILES = \
   vtls/bearssl.h            \
   vtls/gskit.h              \
   vtls/gtls.h               \
+  vtls/hostcheck.h          \
   vtls/keylog.h             \
   vtls/mbedtls.h            \
   vtls/mbedtls_threadlock.h \
-  vtls/mesalink.h           \
   vtls/nssg.h               \
   vtls/openssl.h            \
   vtls/rustls.h             \
   vtls/schannel.h           \
   vtls/sectransp.h          \
   vtls/vtls.h               \
-  vtls/wolfssl.h
+  vtls/wolfssl.h            \
+  vtls/x509asn1.h
 
 LIB_VQUIC_CFILES = \
+  vquic/msh3.c   \
   vquic/ngtcp2.c   \
   vquic/quiche.c   \
   vquic/vquic.c
 
 LIB_VQUIC_HFILES = \
+  vquic/msh3.h   \
   vquic/ngtcp2.h   \
   vquic/quiche.h   \
   vquic/vquic.h
@@ -795,7 +770,6 @@ LIB_CFILES = \
   content_encoding.c \
   cookie.c           \
   curl_addrinfo.c    \
-  curl_ctype.c       \
   curl_des.c         \
   curl_endian.c      \
   curl_fnmatch.c     \
@@ -814,7 +788,6 @@ LIB_CFILES = \
   curl_threads.c     \
   dict.c             \
   doh.c              \
-  dotdot.c           \
   dynbuf.c           \
   easy.c             \
   easygetopt.c       \
@@ -822,16 +795,18 @@ LIB_CFILES = \
   escape.c           \
   file.c             \
   fileinfo.c         \
+  fopen.c            \
   formdata.c         \
   ftp.c              \
   ftplistparser.c    \
   getenv.c           \
   getinfo.c          \
   gopher.c           \
+  h2h3.c             \
   hash.c             \
+  headers.c          \
   hmac.c             \
   hostasyn.c         \
-  hostcheck.c        \
   hostip.c           \
   hostip4.c          \
   hostip6.c          \
@@ -861,8 +836,8 @@ LIB_CFILES = \
   mqtt.c             \
   multi.c            \
   netrc.c            \
-  non-ascii.c        \
   nonblock.c         \
+  noproxy.c          \
   openldap.c         \
   parsedate.c        \
   pingpong.c         \
@@ -894,6 +869,7 @@ LIB_CFILES = \
   system_win32.c     \
   telnet.c           \
   tftp.c             \
+  timediff.c         \
   timeval.c          \
   transfer.c         \
   url.c              \
@@ -902,7 +878,7 @@ LIB_CFILES = \
   version_win32.c    \
   warnless.c         \
   wildcard.c         \
-  x509asn1.c
+  ws.c
 
 LIB_HFILES = \
   altsvc.h           \
@@ -947,20 +923,23 @@ LIB_HFILES = \
   curlx.h            \
   dict.h             \
   doh.h              \
-  dotdot.h           \
   dynbuf.h           \
+  easy_lock.h        \
   easyif.h           \
   easyoptions.h      \
   escape.h           \
   file.h             \
   fileinfo.h         \
+  fopen.h            \
   formdata.h         \
+  functypes.h        \
   ftp.h              \
   ftplistparser.h    \
   getinfo.h          \
   gopher.h           \
+  h2h3.h             \
   hash.h             \
-  hostcheck.h        \
+  headers.h          \
   hostip.h           \
   hsts.h             \
   http.h             \
@@ -982,8 +961,8 @@ LIB_HFILES = \
   multihandle.h      \
   multiif.h          \
   netrc.h            \
-  non-ascii.h        \
   nonblock.h         \
+  noproxy.h          \
   parsedate.h        \
   pingpong.h         \
   pop3.h             \
@@ -1015,6 +994,7 @@ LIB_HFILES = \
   system_win32.h     \
   telnet.h           \
   tftp.h             \
+  timediff.h         \
   timeval.h          \
   transfer.h         \
   url.h              \
@@ -1023,7 +1003,7 @@ LIB_HFILES = \
   version_win32.h    \
   warnless.h         \
   wildcard.h         \
-  x509asn1.h
+  ws.h
 
 LIB_RCFILES = libcurl.rc
 CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
@@ -1037,9 +1017,9 @@ HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
 # the official API, but we re-use the code here to avoid duplication.
 CURLX_CFILES = \
   ../lib/strtoofft.c \
+  ../lib/timediff.c \
   ../lib/nonblock.c \
   ../lib/warnless.c \
-  ../lib/curl_ctype.c \
   ../lib/curl_multibyte.c \
   ../lib/version_win32.c \
   ../lib/dynbuf.c
@@ -1047,6 +1027,7 @@ CURLX_CFILES = \
 CURLX_HFILES = \
   ../lib/curl_setup.h \
   ../lib/strtoofft.h \
+  ../lib/timediff.h \
   ../lib/nonblock.h \
   ../lib/warnless.h \
   ../lib/curl_ctype.h \
@@ -1065,7 +1046,6 @@ CURL_CFILES = \
   tool_cb_see.c \
   tool_cb_wrt.c \
   tool_cfgable.c \
-  tool_convert.c \
   tool_dirhie.c \
   tool_doswin.c \
   tool_easysrc.c \
@@ -1108,7 +1088,6 @@ CURL_HFILES = \
   tool_cb_see.h \
   tool_cb_wrt.h \
   tool_cfgable.h \
-  tool_convert.h \
   tool_dirhie.h \
   tool_doswin.h \
   tool_easysrc.h \
@@ -1801,13 +1780,13 @@ uninstall-hook:
        (cd docs && $(MAKE) uninstall)
        (cd docs/libcurl && $(MAKE) uninstall)
 
-ca-bundle: lib/mk-ca-bundle.pl
+ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
        @echo "generating a fresh ca-bundle.crt"
-       @perl $< -b -l -u lib/ca-bundle.crt
+       @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
 
-ca-firefox: lib/firefox-db2pem.sh
+ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
        @echo "generating a fresh ca-bundle.crt"
-       ./lib/firefox-db2pem.sh lib/ca-bundle.crt
+       $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
 
 checksrc:
        (cd lib && $(MAKE) checksrc)
@@ -1819,13 +1798,11 @@ checksrc:
 
 .PHONY: vc-ide
 
-vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS) \
- $(VC7_SRCVCPROJ_DEPS) $(VC71_LIBVCPROJ_DEPS) $(VC71_SRCVCPROJ_DEPS) \
- $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS) \
- $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \
+vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS)                  \
  $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \
  $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
- $(VC15_LIBVCXPROJ_DEPS) $(VC15_SRCVCXPROJ_DEPS)
+ $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS)                   \
+ $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
        @(win32_lib_srcs='$(LIB_CFILES)'; \
        win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
        win32_lib_rc='$(LIB_RCFILES)'; \
@@ -1986,104 +1963,8 @@ function gen_element(type, dir, file)\
     printf("%s\r\n", $$0);\
 }';\
        \
-       echo "generating '$(VC6_LIBDSP)'"; \
-       awk -v proj_type=dsp \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC6_LIBTMPL) > $(VC6_LIBDSP) || { exit 1; }; \
-       \
-       echo "generating '$(VC6_SRCDSP)'"; \
-       awk -v proj_type=dsp \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC6_SRCTMPL) > $(VC6_SRCDSP) || { exit 1; }; \
-       \
-       echo "generating '$(VC7_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC7_LIBTMPL) > $(VC7_LIBVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC7_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC7_SRCTMPL) > $(VC7_SRCVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC71_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC71_LIBTMPL) > $(VC71_LIBVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC71_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj1 \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC71_SRCTMPL) > $(VC71_SRCVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC8_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
-               -v lib_srcs="$$sorted_lib_srcs" \
-               -v lib_hdrs="$$sorted_lib_hdrs" \
-               -v lib_rc="$$win32_lib_rc" \
-               -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
-               -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
-               -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
-               -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
-               -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
-               -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
-               -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
-               -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC8_LIBTMPL) > $(VC8_LIBVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC8_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
-               -v src_srcs="$$sorted_src_srcs" \
-               -v src_hdrs="$$sorted_src_hdrs" \
-               -v src_rc="$$win32_src_rc" \
-               -v src_x_srcs="$$sorted_src_x_srcs" \
-               -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC8_SRCTMPL) > $(VC8_SRCVCPROJ) || { exit 1; }; \
-       \
-       echo "generating '$(VC9_LIBVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
+       echo "generating '$(VC10_LIBVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
                -v lib_rc="$$win32_lib_rc" \
@@ -2095,18 +1976,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC9_LIBTMPL) > $(VC9_LIBVCPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC9_SRCVCPROJ)'"; \
-       awk -v proj_type=vcproj2 \
+       echo "generating '$(VC10_SRCVCXPROJ)'"; \
+       awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC9_SRCTMPL) > $(VC9_SRCVCPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC10_LIBVCXPROJ)'"; \
+       echo "generating '$(VC11_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2119,18 +2000,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC10_SRCVCXPROJ)'"; \
+       echo "generating '$(VC11_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC11_LIBVCXPROJ)'"; \
+       echo "generating '$(VC12_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2143,18 +2024,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC11_SRCVCXPROJ)'"; \
+       echo "generating '$(VC12_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC12_LIBVCXPROJ)'"; \
+       echo "generating '$(VC14_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2167,18 +2048,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC12_SRCVCXPROJ)'"; \
+       echo "generating '$(VC14_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC14_LIBVCXPROJ)'"; \
+       echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2191,18 +2072,18 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC14_SRCVCXPROJ)'"; \
+       echo "generating '$(VC14_10_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC15_LIBVCXPROJ)'"; \
+       echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v lib_srcs="$$sorted_lib_srcs" \
                -v lib_hdrs="$$sorted_lib_hdrs" \
@@ -2215,16 +2096,16 @@ function gen_element(type, dir, file)\
                -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
                -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
                -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC15_LIBTMPL) > $(VC15_LIBVCXPROJ) || { exit 1; }; \
+               "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
        \
-       echo "generating '$(VC15_SRCVCXPROJ)'"; \
+       echo "generating '$(VC14_30_SRCVCXPROJ)'"; \
        awk -v proj_type=vcxproj \
                -v src_srcs="$$sorted_src_srcs" \
                -v src_hdrs="$$sorted_src_hdrs" \
                -v src_rc="$$win32_src_rc" \
                -v src_x_srcs="$$sorted_src_x_srcs" \
                -v src_x_hdrs="$$sorted_src_x_hdrs" \
-               "$$awk_code" $(srcdir)/$(VC15_SRCTMPL) > $(VC15_SRCVCXPROJ) || { exit 1; };)
+               "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
 
 tidy:
        (cd src && $(MAKE) tidy)
diff --git a/README b/README
index 9705f419887f71da9d979ff8c1f8bb876d4d1d8a..f5efbd70a69decce435bacce9f0da0702edecb6e 100644 (file)
--- a/README
+++ b/README
@@ -13,7 +13,7 @@ README
 
   libcurl is the library curl is using to do its job. It is readily
   available to be used by your software. Read the libcurl.3 man page to
-  learn how!
+  learn how.
 
   You find answers to the most frequent questions we get in the FAQ document.
 
@@ -36,7 +36,7 @@ WEBSITE
 
 GIT
 
-  To download the very latest source off the GIT server do this:
+  To download the latest source code off the GIT server, do this:
 
     git clone https://github.com/curl/curl.git
 
@@ -44,7 +44,7 @@ GIT
 
 SECURITY PROBLEMS
 
-  Report suspected security problems via our HackerOne page and not in public!
+  Report suspected security problems via our HackerOne page and not in public.
 
     https://hackerone.com/curl
 
index 6c9553bc649486e00706129073fc19f05ba5c97b..9b70c8c86edfe4fe8a8132385e6abb785bff99b2 100644 (file)
-curl and libcurl 7.81.0
+curl and libcurl 7.86.0
 
- Public curl releases:         205
- Command line options:         244
- curl_easy_setopt() options:   295
- Public functions in libcurl:  86
- Contributors:                 2558
+ Public curl releases:         211
+ Command line options:         248
+ curl_easy_setopt() options:   300
+ Public functions in libcurl:  91
+ Contributors:                 2733
 
 This release includes the following changes:
 
- o mime: use percent-escaping for multipart form field and file names [1]
+ o NPN: remove support for and use of [16]
+ o Websockets: initial support [23]
 
 This release includes the following bugfixes:
 
- o asyn-ares: ares_getaddrinfo needs no happy eyeballs timer [73]
- o azure: make the "w/o HTTP/SMTP/IMAP" build disable SSL proper [12]
- o BINDINGS: add cURL client for PostgreSQL [68]
- o BINDINGS: add one from Everything curl and update a link
- o checksrc: detect more kinds of NULL comparisons we avoid [105]
- o CI: build examples for additional code verification [75]
- o CI: bump job to use mbedtls 3.1.0 [90]
- o cmake: don't set _USRDLL on a static Windows build [22]
- o cmake: prevent dev warning due to mismatched arg [94]
- o cmake: private identifiers use CURL_ instead of CMAKE_ prefix [40]
- o config.d: update documentation to match the path search
- o configure: add -lm to configure for rustls build. [13]
- o configure: better diagnostics if hyper is built wrong [6]
- o configure: don't enable TLS when --without-* flags are used [17]
- o configure: fix runtime-lib detection on macOS [21]
- o curl.1: require "see also" for every documented option [27]
- o curl: improve error message for --head with -J [42]
- o curl_easy_cleanup.3: remove from multi handle first [3]
- o curl_easy_escape.3: call curl_easy_cleanup in example [58]
- o curl_easy_unescape.3: call curl_easy_cleanup in example [57]
- o curl_multi_init.3: fix EXAMPLE formatting
- o curl_multi_perform/socket_action.3: clarify what errors mean [70]
- o curl_share_setopt.3: split out options into their own manpages [14]
- o CURLOPT_STDERR.3: does not work with libcurl as a win32 DLL [51]
- o digest: compute user:realm:pass digest w/o userhash [45]
- o docs/checksrc: Add documentation for STRERROR [18]
- o docs/cmdline-opts: do not say "protocols: all" [26]
- o docs/examples: workaround broken -Wno-pedantic-ms-format
- o docs/HTTP3: describe how to setup a h3 reverse-proxy for testing [88]
- o docs/INSTALL.md: typo fix : added missing "get" verb [31]
- o docs/URL-SYNTAX.md: space is not fine in a given URL
- o docs: add known bugs list to HTTP3.md [83]
- o docs: address proselint nits [16]
- o docs: consistent manpage SYNOPSIS [47]
- o docs: fix dead links, remove ECH.md
- o docs: fix typo in OpenSSL 3 build instructions [80]
- o docs: Update the Reducing Size section
- o example/progressfunc: remove code for old libcurls [78]
- o examples/multi-single.c: remove WAITMS() [98]
- o FAQ: typo fix : "yout" ➤ "your" [30]
- o ftp: disable warning 4706 in MSVC [85]
- o gen.pl: improve example output format [29]
- o github workflow: add wolfssl (removed from zuul) [103]
- o github/workflows: add mbedtls and mbedtls-clang (removed from zuul) [92]
- o gtls: check return code for gnutls_alpn_set_protocols [86]
- o hash: lazy-alloc the table in Curl_hash_add() [54]
- o http2:set_transfer_url() return early on OOM [53]
- o HTTP3: update quiche build instructions [37]
- o http: enable haproxy support for hyper backend [20]
- o http: Fix CURLOPT_HTTP200ALIASES [89]
- o http_proxy: don't close the socket (too early) [100]
- o insecure.d: detail its use for SFTP and SCP as well [32]
- o insecure.d: expand and clarify [28]
- o libcurl-multi.3: "SOCKS proxy handshakes" are not blocking
- o libcurl-security.3: mention address and URL mitigations
- o libssh2: fix error message for sha256 mismatch
- o libtest: avoid "assignment within conditional expression" [84]
- o lift: ignore is a deprecated config option, use ignoreRules [35]
- o linkcheck.yml: add CI job that checks markdown links [82]
- o m4/curl-compilers: tell clang -Wno-pointer-bool-conversion [99]
- o Makefile.m32: rename -winssl option to -schannel and tidy up [33]
- o mbedTLS: add support for CURLOPT_CAINFO_BLOB [44]
- o mbedtls: fix CURLOPT_SSLCERT_BLOB [72]
- o mbedtls: fix private member designations for v3.1.0 [93]
- o misc: remove unused doh flags when CURL_DISABLE_DOH is defined [71]
- o misc: s/e-mail/email [74]
- o multi: cleanup the socket hash when destroying it [55]
- o multi: handle errors returned from socket/timer callbacks [52]
- o multi: shut down CONNECT in Curl_detach_connnection [2]
- o netrc.d: edit the .netrc example to look nicer [24]
- o ngtcp2: verify the server cert on connect (quictls) [102]
- o ngtcp2: verify the server certificate for the gnutls case [101]
- o nss:set_cipher don't clobber the cipher list [38]
- o openldap: implement STARTTLS [56]
- o openldap: process search query response messages one by one [50]
- o openldap: several minor improvements [69]
- o openldap: simplify ldif generation code [77]
- o openssl: check the return value of BIO_new() [43]
- o openssl: define HAVE_OPENSSL_VERSION for OpenSSL 1.1.0+
- o openssl: remove `RSA_METHOD_FLAG_NO_CHECK` handling if unavailable
- o openssl: remove usage of deprecated `SSL_get_peer_certificate`
- o openssl: use non-deprecated API to read key parameters
- o page-footer: add a mention of how to report bugs to the man page
- o page-footer: document more environment variables [23]
- o request.d: refer to 'method' rather than 'command' [59]
- o retry-all-errors.d: make the example complete
- o runtests: make the SSH library a testable feature
- o rustls: read of zero bytes might be okay [9]
- o rustls: remove comment about checking handshaking [15]
- o rustls: remove incorrect EOF check [10]
- o sha256/md5: return errors when init fails [79]
- o socks5: use appropriate ATYP for numerical IP address host names [91]
- o test1156: enable for hyper [65]
- o test1156: fixup the stdout check for Windows [60]
- o test1525: tweaked for hyper [64]
- o test1526: enable for hyper [63]
- o test1527: enable for hyper [62]
- o test1528: enable for hyper [61]
- o test1554: adjust for hyper [49]
- o test1556: adjust for hyper [48]
- o test302[12]: run only with the libssh2 backend [8]
- o test661: enable for hyper [66]
- o tests/CI.md: add more information on CI environments [39]
- o tests/data/test302[12]: fix MSYS2 path conversion of hostpubsha256 [76]
- o tftp: mark protocol as not possible to do over CONNECT [25]
- o tool_findfile: updated search for a file in the homedir [46]
- o tool_operate: only set SSH related libcurl options for SSH URLs [11]
- o tool_operate: warn if too many output arguments were found [87]
- o url.c: fix the SIGPIPE comment for Curl_close [4]
- o url: check ssl_config when re-use proxy connection [81]
- o url: reduce ssl backend count for CURL_DISABLE_PROXY builds [96]
- o urlapi: accept port number zero [34]
- o urlapi: if possible, shorten given numerical IPv6 addresses [95]
- o urlapi: provide more detailed return codes [36]
- o urlapi: reject short file URLs [41]
- o version_win32: Check build number and platform id
- o vtls/rustls: adapt to the updated rustls_version proto [19]
- o writeout: fix %{http_version} for HTTP/3 [7]
- o x509asn1: return early on errors [67]
- o zuul.d: update rustls-ffi to version 0.8.2 [5]
- o zuul: fix quiche build pointing to wrong Cargo [104]
+ o altsvc: reject bad port numbers [86]
+ o altsvc: use 'h3' for h3 [46]
+ o amiga: do not hardcode openssl/zlib into the os config [158]
+ o amiga: set SIZEOF_CURL_OFF_T=8 by default [150]
+ o amigaos: add missing curl header [159]
+ o asyn-ares: set hint flags when calling ares_getaddrinfo [93]
+ o autotools: allow --enable-symbol-hiding with windows [65]
+ o autotools: allow unix sockets on Windows [144]
+ o autotools: reduce brute-force when detecting recv/send arg list [66]
+ o aws_sigv4: fix header computation [139]
+ o bearssl: make it proper C89 compliant
+ o CI/GHA: cancel outdated CI runs on new PR changes [20]
+ o CI/GHA: merge msh3 and openssl3 builds into linux workflow [110]
+ o cirrus-ci: add macOS build with m1 [81]
+ o cirrus: use make LDFLAGS=-all-static instead of curl_LDFLAGS [129]
+ o cli tool: do not use disabled protocols
+ o cmake: add missing inet_ntop check [145]
+ o cmake: add the check of HAVE_SOCKETPAIR [98]
+ o cmake: define BUILDING_LIBCURL in lib/CMakeLists, not config.h [5]
+ o cmake: delete duplicate HAVE_GETADDRINFO test [149]
+ o cmake: enable more detection on Windows [143]
+ o cmake: fix original MinGW builds [177]
+ o cmake: improve usability of CMake build as a sub-project [186]
+ o cmake: set HAVE_GETADDRINFO_THREADSAFE on Windows [147]
+ o cmake: set HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID on Windows [146]
+ o cmake: sync HAVE_SIGNAL detection with autotools [148]
+ o cmdline/docs: add a required 'multi' keyword for each option [160]
+ o configure: correct the wording when checking grep -E [13]
+ o configure: deprecate builds with small curl_off_t [89]
+ o configure: fail if '--without-ssl' + explicit parameter for an ssl lib [164]
+ o configure: the ngtcp2 option should default to 'no' [125]
+ o connect: change verbose IPv6 address:port to [address]:port [83]
+ o connect: fix builds without AF_INET6 [152]
+ o connect: fix Curl_updateconninfo for TRNSPRT_UNIX [108]
+ o connect: fix the wrong error message on connect failures [55]
+ o content_encoding: use writer struct subclasses for different encodings [8]
+ o cookie: reject cookie names or content with TAB characters [94]
+ o ctype: remove all use of <ctype.h>, use our own versions [12]
+ o curl-compilers.m4: for gcc + want warnings, set gnu89 standard [72]
+ o curl-compilers.m4: use -O2 as default optimize for clang [6]
+ o curl-wolfssl.m4: error out if wolfSSL is not usable [102]
+ o curl.h: fix mention of wrong error code in comment
+ o curl/add_file_name_to_url: use the libcurl URL parser [99]
+ o curl/add_parallel_transfers: better error handling [101]
+ o curl/get_url_file_name: use libcurl URL parser [97]
+ o curl: warn for --ssl use, considered insecure [49]
+ o curl_ctype: convert to macros-only [10]
+ o curl_easy_pause.3: unpausing is as fast as possible [14]
+ o curl_escape.3: fix typo [50]
+ o curl_setup: disable use of FLOSS for 64-bit NonStop builds [69]
+ o curl_setup: include curl.h after platform setup headers [37]
+ o curl_setup: include only system.h instead of curl.h [34]
+ o curl_strequal.3: fix argument typo [60]
+ o curl_url_set.3: document CURLU_APPENDQUERY proper [96]
+ o CURLMOPT_PIPELINING.3: dedup manpage xref [111]
+ o CURLOPT_ACCEPT_ENCODING.3: remove "four" as they are five [85]
+ o CURLOPT_AUTOREFERER.3: highlight the privacy leak risk [161]
+ o CURLOPT_COOKIEFILE: insist on "" for enable-without-file [119]
+ o CURLOPT_COOKIELIST.3: fix formatting mistake [80]
+ o CURLOPT_DNS_INTERFACE.3: mention it works for almost all protocols [15]
+ o CURLOPT_MIMEPOST.3: add an (inline) example [126]
+ o CURLOPT_POSTFIELDS.3: refer to CURLOPT_MIMEPOST [167]
+ o CURLOPT_PROXY_SSLCERT_BLOB.3: this is for HTTPS proxies [9]
+ o CURLOPT_WILDCARDMATCH.3: Fix backslash escaping under single quotes [172]
+ o CURLSHOPT_UNLOCKFUNC.3: the callback has no 'access' argument [84]
+ o DEPRECATE.md: Support for systems without 64 bit data types [19]
+ o docs/examples: avoid deprecated options in examples where possible [115]
+ o docs/INSTALL: update Android Instructions for newer NDKs [151]
+ o docs/libcurl/symbols-in-versions: add several missing symbols
+ o docs: 100+ spellfixes
+ o docs: correct missing uppercase in Markdown files [38]
+ o docs: document more server names for test files
+ o docs: fix deprecation versions inconsistencies [123]
+ o docs: make sure libcurl opts examples pass in long arguments [182]
+ o docs: remove mentions of deprecated '--without-openssl' parameter [170]
+ o docs: tag curl options better in man pages
+ o docs: tell about disabled protocols in CURLOPT_*PROTOCOLS_STR.
+ o docs: update sourceforge project links [95]
+ o easy: fix the #include order [53]
+ o easy: fix the altsvc init for curl_easy_duphandle [77]
+ o easy_lock: check for HAVE_STDATOMIC_H as well [187]
+ o examples/chkspeed: improve portability [48]
+ o formdata: fix warning: 'CURLformoption' is promoted to 'int' [24]
+ o ftp: ignore a 550 response to MDTM [1]
+ o ftp: remove redundant if [163]
+ o functypes: provide the recv and send arg and return types [87]
+ o getparameter: return PARAM_MANUAL_REQUESTED for -M even when disabled [17]
+ o GHA: build tests in a separate step from the running of them [78]
+ o GHA: run proselint on markdown files [22]
+ o github: initial CODEOWNERS setup for CI configuration [52]
+ o header: define public API functions as extern c [26]
+ o headers: reset the requests counter at transfer start [25]
+ o hostip: guard PF_INET6 use [157]
+ o hostip: lazily wait to figure out if IPv6 works until needed [36]
+ o http, vauth: always provide Curl_allow_auth_to_host() functionality [90]
+ o http2: make nghttp2 less picky about field whitespace [27]
+ o HTTP3.md: update Caddy example [76]
+ o http: try parsing Retry-After: as a number first [122]
+ o http_proxy: restore the protocol pointer on error [104]
+ o httpput-postfields.c: shorten string for C89 compliance [57]
+ o ldap: delete stray CURL_HAS_MOZILLA_LDAP reference [79]
+ o lib1560: extended to verify detect/reject of unknown schemes
+ o lib517: fix C89 constant signedness [73]
+ o lib: add missing limits.h includes [35]
+ o lib: add required Win32 setup definitions in setup-win32.h [4]
+ o lib: prepare the incoming of additional protocols [71]
+ o lib: sanitize conditional exclusion around MIME [82]
+ o lib: set more flags in config-win32.h [109]
+ o lib: the number four in a sequence is the "fourth" [28]
+ o libssh: if sftp_init fails, don't get the sftp error code [132]
+ o Makefile.m32: deduplicate build rules [131]
+ o Makefile.m32: drop CROSSPREFIX and our CC/AR defaults [137]
+ o Makefile.m32: exclude libs & libpaths for shared mode exes [127]
+ o Makefile.m32: fix regression with tool_hugehelp [130]
+ o Makefile.m32: major rework [92]
+ o Makefile.m32: reintroduce CROSSPREFIX and -W -Wall [179]
+ o Makefile.m32: support more options [142]
+ o manpage-syntax.pl: all libcurl option symbols should be \fI-tagged [75]
+ o manpages: Fix spelling of "allows to" -> "allows one to" [171]
+ o misc: ISSPACE() => ISBLANK() [11]
+ o misc: use the term "null-terminate" consistently [41]
+ o mprintf: reject two kinds of precision for the same argument [162]
+ o mprintf: use snprintf if available [74]
+ o mqtt: return error for too long topic [133]
+ o mqtt: spell out CONNECT in comments [166]
+ o msh3: change the static_assert to make the code C89
+ o netrc: compare user name case sensitively [118]
+ o netrc: replace fgets with Curl_get_line [174]
+ o netrc: use the URL-decoded user [103]
+ o ngtcp2: fix build errors due to changes in ngtcp2 library [107]
+ o ngtcp2: fix C89 compliance nit
+ o noproxy: support proxies specified using cidr notation [184]
+ o openssl: make certinfo available for QUIC [91]
+ o README.md: add GHA status badges for Linux and macOS builds [40]
+ o RELEASE-PROCEDURE.md: mention patch releases [21]
+ o resolve: make forced IPv4 resolve only use A queries [61]
+ o runtests: fix uninitialized value on ignored tests [128]
+ o schannel: ban server ALPN change during recv renegotiation [63]
+ o schannel: don't reset recv/send function pointers on renegotiation [156]
+ o schannel: when importing PFX, disable key persistence [141]
+ o scripts: use `grep -E` instead of `egrep` [30]
+ o setopt: use the handler table for protocol name to number conversions [45]
+ o setopt: when POST is set, reset the 'upload' field [51]
+ o setup-win32: no longer define UNICODE/_UNICODE implicitly [3]
+ o single_transfer: use the libcurl URL parser when appending query parts [100]
+ o smb: replace CURL_WIN32 with WIN32 [138]
+ o strcase: add and use Curl_timestrcmp [106]
+ o strerror: improve two URL API error messages
+ o symbol-scan.pl: also check for LIBCURL* symbols [43]
+ o symbol-scan.pl: scan and verify .3 man pages [42]
+ o symbols-in-versions: add missing LIBCURL* symbols
+ o symbols-in-versions: CURLOPT_ENCODING is deprecated since 7.21.6
+ o test1119: scan all public headers [44]
+ o test1275: verify uppercase after period in markdown [135]
+ o test972: verify the output without using external tool [32]
+ o tests/certs/scripts: insert standard curl source headers [169]
+ o tests/Makefile: remove run time stats from ci-test [120]
+ o tests: avoid CreateThread if _beginthreadex is available [155]
+ o tests: fix tag syntax errors in test files
+ o tests: skip mime/form tests when mime is not built-in [54]
+ o tidy-up: delete parallel/unused feature flags [117]
+ o tidy-up: delete unused HAVE_STRUCT_POLLFD [134]
+ o TODO: provide the error body from a CONNECT response [67]
+ o tool: avoid generating ambiguous escaped characters in --libcurl [124]
+ o tool: remove dead code [70]
+ o tool: reorganize function c_escape around a dynbuf [121]
+ o tool_hugehelp: make hugehelp a blank macro when disabled [7]
+ o tool_main: exit at once if out of file descriptors [113]
+ o tool_operate: avoid a few #ifdefs for disabled-libcurl builds [29]
+ o tool_operate: more transfer cleanup after parallel transfer fail [165]
+ o tool_operate: prevent over-queuing in parallel mode [176]
+ o tool_operate: reduce errorbuffer allocs [173]
+ o tool_paramhelp: asserts verify maximum sizes for string loading [112]
+ o tool_paramhelp: make the max argument a 'double' [136]
+ o tool_progress: remove 'Qd' from the parallel progress bar [175]
+ o tool_setopt: use better English in --libcurl source comments [39]
+ o tool_xattr: save the original URL, not the final redirected one [181]
+ o unit test 1655: make it C89-compliant [59]
+ o url: a zero-length userinfo part in the URL is still a (blank) user [64]
+ o url: allow non-HTTPS HSTS-matching for debug builds [105]
+ o url: rename function due to name-clash in Watt-32 [62]
+ o url: use IDN decoded names for HSTS checks [140]
+ o urlapi: detect scheme better when not guessing [56]
+ o urlapi: fix parsing URL without slash with CURLU_URLENCODE [154]
+ o urlapi: leaner with fewer allocs [2]
+ o urlapi: reject more bad characters from the host name field [88]
+ o winbuild/MakefileBuild.vc: handle spaces in libssh(2) include paths [18]
+ o winbuild: use NMake batch-rules for compilation [47]
+ o windows: add .rc support to autotools builds [33]
+ o windows: adjust name of two internal public functions [58]
+ o windows: autotools .rc warnings fixup [68]
+ o wolfSSL: fix session management bug. [31]
 
 This release includes the following known bugs:
 
  o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
 
+Planned upcoming removals include:
+
+ o NSS
+ o Support for systems without 64 bit data types
+
+ See https://curl.se/dev/deprecate.html for details
+
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
-  Alessandro Ghedini, Bernat Mut, Bernhard Walle, Boris Rasin,
-  Brad Fitzpatrick, Bruno Baguette, Damien Walsh, Dan Fandrich,
-  Daniel Stenberg, David Bohman, Don J Olmstead, Eric Musser, Even Rouault,
-  Florian Van Heghe, gclinch on github, Glenn Strauss, Jacob Hoffman-Andrews,
-  James Fuller, Jeff Luszcz, jeffrson on github, Jun Tseng, Kevin Burke,
-  Leszek Kubik, lllaffer on github, Marcelo Juchem, Marcel Raad, Marc Hörsken,
-  Mark Dodgson, Matt Holt, Melroy van den Berg, Michał Antoniak,
-  Nicolas Sterchele, nimaje on github, Patrick Monnerat, Paul Howarth,
-  Peter Piekarski, Ray Satiro, RekGRpth on github, Rikard Falkeborn,
-  Ryan Sleevi, Stan Hu, Stefan Eissing, Stefan Huber, Stephane Pellegrino,
-  Stephen M. Coakley, Tobias Nießen, Valentin Richter, Viktor Szakats,
-  Vincent Grande, Vladimir Panteleev, Wyatt O'Day, x2018 on github,
-  Yongkang Huang,
-  (53 contributors)
+  12932 on github, a1346054 on github, Aftab Alam, ajak in #curl,
+  Andrew Lambert, Benjamin Loison, Brad Harder, bsergean on github,
+  Christopher Sauer, Dan Fandrich, Daniel Gustafsson, Daniel Hallberg,
+  Daniel Stenberg, David Hu, David McLaughlin, Dmitry Karpov, Dominik Klemba,
+  Don J Olmstead, Dustin Howett, Edoardo Lolletti, Eloy Degen, Emanuele Torre,
+  Emilio López, Gisle Vanem, Hayden Roche, Hiroki Kurosawa, James Fuller,
+  Jeremy Maitin-Shepard, Joel Depooter, John Bampton, Jonas Haag,
+  jurisuk on github, justchen1369 on github, Keitagit-kun on github,
+  Kelly Kaoudis, Marcel Raad, Marc Hörsken, Mark Itzcovitz, Martin Ågren,
+  Martin Strunz, Mathieu Carbonneaux, Matthias Gatto, Matt Holt, Max Dymond,
+  Michael Drake, Michael Heimpold, n0name321 on github, Orgad Shaneh,
+  Patrick Monnerat, Paul Seligman, Peter Goodman, Petr Štetiar, Philip H,
+  Philip H., Philip Heiduck, ProceduralMan on github, Randall S. Becker,
+  Ray Satiro, Rickard Hallerbäck, RobBotic1 on github, Robby Simpson,
+  Samuel Henrique, Sergey Bronnikov, ShadowZzj on github, Shaun Mirani,
+  ssdbest on github, Thiago Suchorski, Tobias Schaefer, Trail of Bits,
+  Vasiliy Ulyanov, Viktor Szakats, Xiang Xiao, Yuriy Chernyshov,
+  zhanghu on xiaomi
+  (74 contributors)
 
 References to bug reports and discussions on issues:
 
- [1] = https://curl.se/bug/?i=7789
- [2] = https://curl.se/bug/?i=7982
- [3] = https://curl.se/bug/?i=7983
- [4] = https://curl.se/bug/?i=7984
- [5] = https://curl.se/bug/?i=8013
- [6] = https://curl.se/bug/?i=8001
- [7] = https://curl.se/bug/?i=8072
- [8] = https://curl.se/bug/?i=8009
- [9] = https://curl.se/bug/?i=8003
- [10] = https://curl.se/bug/?i=8003
- [11] = https://curl.se/bug/?i=8040
- [12] = https://curl.se/bug/?i=8006
- [13] = https://curl.se/bug/?i=8002
- [14] = https://curl.se/bug/?i=7998
- [15] = https://curl.se/bug/?i=8038
- [16] = https://curl.se/bug/?i=8060
- [17] = https://curl.se/bug/?i=7994
- [18] = https://curl.se/bug/?i=7991
- [19] = https://curl.se/bug/?i=7956
- [20] = https://curl.se/bug/?i=8034
- [21] = https://curl.se/bug/?i=8028
- [22] = https://curl.se/bug/?i=8030
- [23] = https://curl.se/bug/?i=8027
- [24] = https://curl.se/bug/?i=8025
- [25] = https://curl.se/bug/?i=8018
- [26] = https://curl.se/bug/?i=8021
- [27] = https://curl.se/bug/?i=8019
- [28] = https://curl.se/bug/?i=8017
- [29] = https://curl.se/bug/?i=8016
- [30] = https://curl.se/bug/?i=8059
- [31] = https://curl.se/bug/?i=8058
- [32] = https://curl.se/bug/?i=8056
- [33] = https://curl.se/bug/?i=8053
- [34] = https://curl.se/bug/?i=8090
- [35] = https://curl.se/bug/?i=8082
- [36] = https://curl.se/bug/?i=8049
- [37] = https://curl.se/bug/?i=8076
- [38] = https://curl.se/bug/?i=8160
- [39] = https://curl.se/bug/?i=8012
- [40] = https://curl.se/bug/?i=7988
- [41] = https://curl.se/bug/?i=8042
- [42] = https://curl.se/bug/?i=7987
- [43] = https://curl.se/bug/?i=8078
- [44] = https://curl.se/bug/?i=8071
- [45] = https://curl.se/bug/?i=8066
- [46] = https://curl.se/bug/?i=8033
- [47] = https://curl.se/bug/?i=8062
- [48] = https://curl.se/bug/?i=8105
- [49] = https://curl.se/bug/?i=8104
- [50] = https://curl.se/bug/?i=8101
- [51] = https://curl.se/bug/?i=8103
- [52] = https://curl.se/bug/?i=8083
- [53] = https://curl.se/bug/?i=8100
- [54] = https://curl.se/bug/?i=8132
- [55] = https://curl.se/bug/?i=8129
- [56] = https://curl.se/bug/?i=8065
- [57] = https://curl.se/bug/?i=8097
- [58] = https://curl.se/bug/?i=8097
- [59] = https://curl.se/bug/?i=8094
- [60] = https://curl.se/bug/?i=8134
- [61] = https://curl.se/bug/?i=8128
- [62] = https://curl.se/bug/?i=8128
- [63] = https://curl.se/bug/?i=8128
- [64] = https://curl.se/bug/?i=8128
- [65] = https://curl.se/bug/?i=8127
- [66] = https://curl.se/bug/?i=8126
- [67] = https://curl.se/bug/?i=8147
- [68] = https://curl.se/bug/?i=8125
- [69] = https://curl.se/bug/?i=8140
- [70] = https://curl.se/bug/?i=8120
- [71] = https://curl.se/bug/?i=8148
- [72] = https://curl.se/bug/?i=8146
- [73] = https://curl.se/bug/?i=8142
- [74] = https://curl.se/bug/?i=8159
- [75] = https://curl.se/bug/?i=7922
- [76] = https://curl.se/bug/?i=8084
- [77] = https://curl.se/bug/?i=8136
- [78] = https://curl.se/bug/?i=8137
- [79] = https://curl.se/bug/?i=8133
- [80] = https://curl.se/bug/?i=8162
- [81] = https://curl.se/bug/?i=8141
- [82] = https://curl.se/bug/?i=8158
- [83] = https://curl.se/bug/?i=8156
- [84] = https://curl.se/bug/?i=8218
- [85] = https://curl.se/bug/?i=8218
- [86] = https://curl.se/bug/?i=8181
- [87] = https://curl.se/bug/?i=8210
- [88] = https://curl.se/bug/?i=8177
- [89] = https://curl.se/bug/?i=8171
- [90] = https://curl.se/bug/?i=8215
- [91] = https://curl.se/bug/?i=8216
- [92] = https://curl.se/bug/?i=8215
- [93] = https://curl.se/bug/?i=8214
- [94] = https://curl.se/bug/?i=8207
- [95] = https://curl.se/bug/?i=8206
- [96] = https://curl.se/bug/?i=8212
- [98] = https://curl.se/bug/?i=8200
- [99] = https://curl.se/bug/?i=8197
- [100] = https://curl.se/bug/?i=8193
- [101] = https://curl.se/bug/?i=8178
- [102] = https://curl.se/bug/?i=8178
- [103] = https://curl.se/bug/?i=8196
- [104] = https://curl.se/bug/?i=8184
- [105] = https://curl.se/bug/?i=8180
+ [1] = https://curl.se/bug/?i=9357
+ [2] = https://curl.se/bug/?i=9408
+ [3] = https://curl.se/bug/?i=9375
+ [4] = https://curl.se/bug/?i=9375
+ [5] = https://curl.se/bug/?i=9498
+ [6] = https://curl.se/bug/?i=9444
+ [7] = https://curl.se/bug/?i=9485
+ [8] = https://curl.se/bug/?i=9455
+ [9] = https://curl.se/bug/?i=9434
+ [10] = https://curl.se/bug/?i=9429
+ [11] = https://curl.se/bug/?i=9432
+ [12] = https://curl.se/bug/?i=9433
+ [13] = https://curl.se/bug/?i=9471
+ [14] = https://curl.se/bug/?i=9410
+ [15] = https://curl.se/bug/?i=9427
+ [16] = https://curl.se/bug/?i=9307
+ [17] = https://curl.se/bug/?i=9485
+ [18] = https://curl.se/mail/lib-2022-09/0038.html
+ [19] = https://curl.se/bug/?i=9604
+ [20] = https://curl.se/bug/?i=9533
+ [21] = https://curl.se/bug/?i=9495
+ [22] = https://curl.se/bug/?i=9520
+ [23] = https://curl.se/bug/?i=8995
+ [24] = https://curl.se/bug/?i=9484
+ [25] = https://curl.se/bug/?i=9424
+ [26] = https://curl.se/bug/?i=9424
+ [27] = https://curl.se/bug/?i=9448
+ [28] = https://curl.se/bug/?i=9535
+ [29] = https://curl.se/bug/?i=9486
+ [30] = https://curl.se/bug/?i=9491
+ [31] = https://curl.se/bug/?i=9492
+ [32] = https://curl.se/bug/?i=9563
+ [33] = https://curl.se/bug/?i=9521
+ [34] = https://curl.se/bug/?i=9453
+ [35] = https://curl.se/bug/?i=9453
+ [36] = https://curl.se/bug/?i=9553
+ [37] = https://curl.se/bug/?i=9453
+ [38] = https://curl.se/bug/?i=9474
+ [39] = https://curl.se/bug/?i=9475
+ [40] = https://curl.se/bug/?i=9530
+ [41] = https://curl.se/bug/?i=9527
+ [42] = https://curl.se/bug/?i=9544
+ [43] = https://curl.se/bug/?i=9544
+ [44] = https://curl.se/bug/?i=9544
+ [45] = https://curl.se/bug/?i=9472
+ [46] = https://curl.se/bug/?i=9515
+ [47] = https://curl.se/bug/?i=9512
+ [48] = https://curl.se/bug/?i=9562
+ [49] = https://curl.se/bug/?i=9519
+ [50] = https://curl.se/bug/?i=9517
+ [51] = https://curl.se/bug/?i=9507
+ [52] = https://curl.se/bug/?i=9505
+ [53] = https://curl.se/bug/?i=9560
+ [54] = https://curl.se/bug/?i=9596
+ [55] = https://curl.se/bug/?i=9549
+ [56] = https://curl.se/bug/?i=9503
+ [57] = https://curl.se/bug/?i=9555
+ [58] = https://curl.se/bug/?i=9598
+ [59] = https://curl.se/bug/?i=9551
+ [60] = https://curl.se/bug/?i=9548
+ [61] = https://curl.se/bug/?i=9540
+ [62] = https://curl.se/bug/?i=9585
+ [63] = https://curl.se/bug/?i=9463
+ [64] = https://curl.se/bug/?i=9088
+ [65] = https://curl.se/bug/?i=9586
+ [66] = https://curl.se/bug/?i=9591
+ [67] = https://curl.se/bug/?i=9513
+ [68] = https://curl.se/bug/?i=9582
+ [69] = https://curl.se/bug/?i=9575
+ [70] = https://curl.se/bug/?i=9576
+ [71] = https://curl.se/bug/?i=9534
+ [72] = https://curl.se/bug/?i=9542
+ [73] = https://curl.se/bug/?i=9572
+ [74] = https://curl.se/bug/?i=9569
+ [75] = https://curl.se/bug/?i=9574
+ [76] = https://curl.se/bug/?i=9623
+ [77] = https://curl.se/bug/?i=9624
+ [78] = https://curl.se/bug/?i=9619
+ [79] = https://curl.se/bug/?i=9625
+ [80] = https://curl.se/bug/?i=9639
+ [81] = https://curl.se/bug/?i=9565
+ [82] = https://curl.se/bug/?i=9610
+ [83] = https://curl.se/mail/archive-2022-02/0041.html
+ [84] = https://curl.se/bug/?i=9612
+ [85] = https://curl.se/bug/?i=9614
+ [86] = https://curl.se/bug/?i=9607
+ [87] = https://curl.se/bug/?i=9592
+ [88] = https://curl.se/bug/?i=9608
+ [89] = https://curl.se/bug/?i=9605
+ [90] = https://curl.se/bug/?i=9600
+ [91] = https://curl.se/bug/?i=9584
+ [92] = https://curl.se/bug/?i=9632
+ [93] = https://curl.se/bug/?i=9694
+ [94] = https://curl.se/bug/?i=9659
+ [95] = https://curl.se/bug/?i=9630
+ [96] = https://curl.se/bug/?i=9628
+ [97] = https://curl.se/bug/?i=9684
+ [98] = https://curl.se/bug/?i=9686
+ [99] = https://curl.se/bug/?i=9683
+ [100] = https://curl.se/bug/?i=9681
+ [101] = https://curl.se/bug/?i=9729
+ [102] = https://curl.se/bug/?i=9682
+ [103] = https://curl.se/bug/?i=9709
+ [104] = https://curl.se/bug/?i=9790
+ [105] = https://curl.se/bug/?i=9728
+ [106] = https://curl.se/bug/?i=9658
+ [107] = https://curl.se/bug/?i=9747
+ [108] = https://curl.se/bug/?i=9664
+ [109] = https://curl.se/bug/?i=9712
+ [110] = https://curl.se/bug/?i=9646
+ [111] = https://curl.se/bug/?i=9776
+ [112] = https://curl.se/bug/?i=9719
+ [113] = https://curl.se/bug/?i=9663
+ [115] = https://curl.se/bug/?i=9661
+ [117] = https://curl.se/bug/?i=9652
+ [118] = https://curl.se/bug/?i=9657
+ [119] = https://curl.se/bug/?i=9654
+ [120] = https://curl.se/bug/?i=9656
+ [121] = https://curl.se/bug/?i=9653
+ [122] = https://curl.se/bug/?i=9718
+ [123] = https://curl.se/bug/?i=9711
+ [124] = https://curl.se/bug/?i=9643
+ [125] = https://curl.se/mail/lib-2022-10/0007.html
+ [126] = https://curl.se/bug/?i=9637
+ [127] = https://curl.se/bug/?i=9651
+ [128] = https://curl.se/bug/?i=9648
+ [129] = https://curl.se/bug/?i=9633
+ [130] = https://curl.se/bug/?i=9645
+ [131] = https://curl.se/bug/?i=9642
+ [132] = https://curl.se/bug/?i=9737
+ [133] = https://curl.se/bug/?i=9744
+ [134] = https://curl.se/bug/?i=9707
+ [135] = https://curl.se/bug/?i=9697
+ [136] = https://curl.se/bug/?i=9700
+ [137] = https://curl.se/bug/?i=9698
+ [138] = https://curl.se/bug/?i=9701
+ [139] = https://curl.se/bug/?i=7966
+ [140] = https://curl.se/bug/?i=9791
+ [141] = https://curl.se/bug/?i=9300
+ [142] = https://curl.se/bug/?i=9680
+ [143] = https://curl.se/bug/?i=9687
+ [144] = https://github.com/curl/curl-for-win/blob/73a070d96fd906fdee929e2f1f00a9149fb39239/curl-autotools.sh#L44-L47
+ [145] = https://curl.se/bug/?i=9689
+ [146] = https://curl.se/bug/?i=9726
+ [147] = https://curl.se/bug/?i=9727
+ [148] = https://curl.se/bug/?i=9725
+ [149] = https://curl.se/bug/?i=9731
+ [150] = https://curl.se/bug/?i=9771
+ [151] = https://curl.se/bug/?i=9732
+ [152] = https://curl.se/bug/?i=9770
+ [154] = https://curl.se/bug/?i=9763
+ [155] = https://curl.se/bug/?i=9705
+ [156] = https://curl.se/bug/?i=9451
+ [157] = https://curl.se/bug/?i=9760
+ [158] = https://curl.se/bug/?i=9762
+ [159] = https://curl.se/bug/?i=9761
+ [160] = https://curl.se/bug/?i=9759
+ [161] = https://curl.se/bug/?i=9757
+ [162] = https://curl.se/bug/?i=9754
+ [163] = https://curl.se/bug/?i=9753
+ [164] = https://curl.se/bug/?i=9414
+ [165] = https://curl.se/bug/?i=9749
+ [166] = https://curl.se/bug/?i=9751
+ [167] = https://curl.se/bug/?i=9752
+ [169] = https://curl.se/bug/?i=9417
+ [170] = https://curl.se/bug/?i=9415
+ [171] = https://curl.se/bug/?i=9419
+ [172] = https://curl.se/bug/?i=9418
+ [173] = https://curl.se/bug/?i=9394
+ [174] = https://curl.se/bug/?i=9789
+ [175] = https://curl.se/bug/?i=9389
+ [176] = https://curl.se/bug/?i=8933
+ [177] = https://curl.se/bug/?i=9214
+ [179] = https://curl.se/bug/?i=9784
+ [181] = https://curl.se/bug/?i=9766
+ [182] = https://curl.se/bug/?i=9779
+ [184] = https://curl.se/bug/?i=9773
+ [186] = https://curl.se/bug/?i=9638
+ [187] = https://curl.se/bug/?i=9755
index feb9e818fa265bf11aa603e5a304ee42c053fa51..1a0bd14d01a7a9e80bbd28e06036145c7e7046af 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
@@ -383,48 +385,6 @@ AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
 ])
 
 
-dnl CURL_CHECK_HEADER_WINBER
-dnl -------------------------------------------------
-dnl Check for compilable and valid winber.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_WINBER], [
-  AC_REQUIRE([CURL_CHECK_HEADER_WINLDAP])dnl
-  AC_CACHE_CHECK([for winber.h], [curl_cv_header_winber_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>
-#include <winber.h>
-      ]],[[
-#if defined(__CYGWIN__) || defined(__CEGCC__)
-        HAVE_WINBER_H shall not be defined.
-#else
-        BERVAL *bvp = NULL;
-        BerElement *bep = ber_init(bvp);
-        ber_free(bep, 1);
-#endif
-      ]])
-    ],[
-      curl_cv_header_winber_h="yes"
-    ],[
-      curl_cv_header_winber_h="no"
-    ])
-  ])
-  case "$curl_cv_header_winber_h" in
-    yes)
-      AC_DEFINE_UNQUOTED(HAVE_WINBER_H, 1,
-        [Define to 1 if you have the winber.h header file.])
-      ;;
-  esac
-])
-
-
 dnl CURL_CHECK_HEADER_LBER
 dnl -------------------------------------------------
 dnl Check for compilable and valid lber.h header,
@@ -600,58 +560,6 @@ AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
 ])
 
 
-dnl CURL_CHECK_HEADER_LDAPSSL
-dnl -------------------------------------------------
-dnl Check for compilable and valid ldapssl.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_LDAPSSL], [
-  AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
-  AC_CACHE_CHECK([for ldapssl.h], [curl_cv_header_ldapssl_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>
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#endif
-#ifndef NULL
-#define NULL (void *)0
-#endif
-#ifndef LDAP_DEPRECATED
-#define LDAP_DEPRECATED 1
-#endif
-#ifdef NEED_LBER_H
-#include <lber.h>
-#endif
-#ifdef HAVE_LDAP_H
-#include <ldap.h>
-#endif
-#include <ldapssl.h>
-      ]],[[
-        char *cert_label = NULL;
-        LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
-      ]])
-    ],[
-      curl_cv_header_ldapssl_h="yes"
-    ],[
-      curl_cv_header_ldapssl_h="no"
-    ])
-  ])
-  case "$curl_cv_header_ldapssl_h" in
-    yes)
-      AC_DEFINE_UNQUOTED(HAVE_LDAPSSL_H, 1,
-        [Define to 1 if you have the ldapssl.h header file.])
-      ;;
-  esac
-])
-
-
 dnl CURL_CHECK_LIBS_WINLDAP
 dnl -------------------------------------------------
 dnl Check for libraries needed for WINLDAP support,
@@ -856,108 +764,6 @@ AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
 ])
 
 
-dnl CURL_CHECK_HEADER_MALLOC
-dnl -------------------------------------------------
-dnl Check for compilable and valid malloc.h header,
-dnl and check if it is needed even with stdlib.h
-
-AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
-  AC_CACHE_CHECK([for malloc.h], [curl_cv_header_malloc_h], [
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-#include <malloc.h>
-      ]],[[
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-      ]])
-    ],[
-      curl_cv_header_malloc_h="yes"
-    ],[
-      curl_cv_header_malloc_h="no"
-    ])
-  ])
-  if test "$curl_cv_header_malloc_h" = "yes"; then
-    AC_DEFINE_UNQUOTED(HAVE_MALLOC_H, 1,
-      [Define to 1 if you have the malloc.h header file.])
-    #
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-#include <stdlib.h>
-      ]],[[
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-      ]])
-    ],[
-      curl_cv_need_header_malloc_h="no"
-    ],[
-      curl_cv_need_header_malloc_h="yes"
-    ])
-    #
-    case "$curl_cv_need_header_malloc_h" in
-      yes)
-        AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
-          [Define to 1 if you need the malloc.h header file even with stdlib.h])
-        ;;
-    esac
-  fi
-])
-
-
-dnl CURL_CHECK_HEADER_MEMORY
-dnl -------------------------------------------------
-dnl Check for compilable and valid memory.h header,
-dnl and check if it is needed even with stdlib.h for
-dnl memory related functions.
-
-AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
-  AC_CACHE_CHECK([for memory.h], [curl_cv_header_memory_h], [
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-#include <memory.h>
-      ]],[[
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-      ]])
-    ],[
-      curl_cv_header_memory_h="yes"
-    ],[
-      curl_cv_header_memory_h="no"
-    ])
-  ])
-  if test "$curl_cv_header_memory_h" = "yes"; then
-    AC_DEFINE_UNQUOTED(HAVE_MEMORY_H, 1,
-      [Define to 1 if you have the memory.h header file.])
-    #
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-#include <stdlib.h>
-      ]],[[
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-      ]])
-    ],[
-      curl_cv_need_header_memory_h="no"
-    ],[
-      curl_cv_need_header_memory_h="yes"
-    ])
-    #
-    case "$curl_cv_need_header_memory_h" in
-      yes)
-        AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
-          [Define to 1 if you need the memory.h header file even with stdlib.h])
-        ;;
-    esac
-  fi
-])
-
 dnl TYPE_SOCKADDR_STORAGE
 dnl -------------------------------------------------
 dnl Check for struct sockaddr_storage. Most IPv6-enabled
@@ -998,15 +804,10 @@ AC_DEFUN([TYPE_SOCKADDR_STORAGE],
 dnl CURL_CHECK_FUNC_RECV
 dnl -------------------------------------------------
 dnl Test if the socket recv() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_RECV
-dnl will be defined, defining the types of the arguments
-dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
-dnl and RECV_TYPE_ARG4, defining the type of the function
-dnl return value in RECV_TYPE_RETV.
 
 AC_DEFUN([CURL_CHECK_FUNC_RECV], [
   AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   #
   AC_MSG_CHECKING([for recv])
@@ -1022,10 +823,7 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
 #include <winsock2.h>
 #endif
 #else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -1045,84 +843,9 @@ struct Library *SocketBase = NULL;
   ])
   #
   if test "$curl_cv_recv" = "yes"; then
-    AC_CACHE_CHECK([types of args and return type for recv],
-      [curl_cv_func_recv_args], [
-      curl_cv_func_recv_args="unknown"
-      for recv_retv in 'int' 'ssize_t'; do
-        for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
-          for recv_arg2 in 'char *' 'void *'; do
-            for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
-              for recv_arg4 in 'int' 'unsigned int'; do
-                if test "$curl_cv_func_recv_args" = "unknown"; then
-                  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>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define RECVCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define RECVCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
-                      extern $recv_retv RECVCALLCONV
-                      recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
-#endif
-                    ]],[[
-                      $recv_arg1 s=0;
-                      $recv_arg2 buf=0;
-                      $recv_arg3 len=0;
-                      $recv_arg4 flags=0;
-                      $recv_retv res = recv(s, buf, len, flags);
-                    ]])
-                  ],[
-                    curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
-                  ])
-                fi
-              done
-            done
-          done
-        done
-      done
-    ]) # AC-CACHE-CHECK
-    if test "$curl_cv_func_recv_args" = "unknown"; then
-      AC_MSG_ERROR([Cannot find proper types to use for recv args])
-    else
-      recv_prev_IFS=$IFS; IFS=','
-      set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
-      IFS=$recv_prev_IFS
-      shift
-      #
-      AC_DEFINE_UNQUOTED(RECV_TYPE_ARG1, $[1],
-        [Define to the type of arg 1 for recv.])
-      AC_DEFINE_UNQUOTED(RECV_TYPE_ARG2, $[2],
-        [Define to the type of arg 2 for recv.])
-      AC_DEFINE_UNQUOTED(RECV_TYPE_ARG3, $[3],
-        [Define to the type of arg 3 for recv.])
-      AC_DEFINE_UNQUOTED(RECV_TYPE_ARG4, $[4],
-        [Define to the type of arg 4 for recv.])
-      AC_DEFINE_UNQUOTED(RECV_TYPE_RETV, $[5],
-        [Define to the function return type for recv.])
-      #
       AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
         [Define to 1 if you have the recv function.])
       curl_cv_func_recv="yes"
-    fi
   else
     AC_MSG_ERROR([Unable to link function recv])
   fi
@@ -1132,16 +855,10 @@ struct Library *SocketBase = NULL;
 dnl CURL_CHECK_FUNC_SEND
 dnl -------------------------------------------------
 dnl Test if the socket send() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_SEND
-dnl will be defined, defining the types of the arguments
-dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
-dnl and SEND_TYPE_ARG4, defining the type of the function
-dnl return value in SEND_TYPE_RETV, and also defining the
-dnl type qualifier of second argument in SEND_QUAL_ARG2.
 
 AC_DEFUN([CURL_CHECK_FUNC_SEND], [
   AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   #
   AC_MSG_CHECKING([for send])
@@ -1157,10 +874,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
 #include <winsock2.h>
 #endif
 #else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -1180,117 +894,9 @@ struct Library *SocketBase = NULL;
   ])
   #
   if test "$curl_cv_send" = "yes"; then
-    AC_CACHE_CHECK([types of args and return type for send],
-      [curl_cv_func_send_args], [
-      curl_cv_func_send_args="unknown"
-      for send_retv in 'int' 'ssize_t'; do
-        for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
-          for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
-            for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
-              for send_arg4 in 'int' 'unsigned int'; do
-                if test "$curl_cv_func_send_args" = "unknown"; then
-                  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>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SENDCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define SENDCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
-                      extern $send_retv SENDCALLCONV
-                      send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
-#endif
-                    ]],[[
-                      $send_arg1 s=0;
-                      $send_arg3 len=0;
-                      $send_arg4 flags=0;
-                      $send_retv res = send(s, 0, len, flags);
-                    ]])
-                  ],[
-                    curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
-                  ])
-                fi
-              done
-            done
-          done
-        done
-      done
-    ]) # AC-CACHE-CHECK
-    if test "$curl_cv_func_send_args" = "unknown"; then
-      AC_MSG_ERROR([Cannot find proper types to use for send args])
-    else
-      send_prev_IFS=$IFS; IFS=','
-      set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
-      IFS=$send_prev_IFS
-      shift
-      #
-      send_qual_type_arg2=$[2]
-      #
-      AC_DEFINE_UNQUOTED(SEND_TYPE_ARG1, $[1],
-        [Define to the type of arg 1 for send.])
-      AC_DEFINE_UNQUOTED(SEND_TYPE_ARG3, $[3],
-        [Define to the type of arg 3 for send.])
-      AC_DEFINE_UNQUOTED(SEND_TYPE_ARG4, $[4],
-        [Define to the type of arg 4 for send.])
-      AC_DEFINE_UNQUOTED(SEND_TYPE_RETV, $[5],
-        [Define to the function return type for send.])
-      #
-      prev_sh_opts=$-
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set -f
-          ;;
-      esac
-      #
-      case "$send_qual_type_arg2" in
-        const*)
-          send_qual_arg2=const
-          send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
-        ;;
-        *)
-          send_qual_arg2=
-          send_type_arg2=$send_qual_type_arg2
-        ;;
-      esac
-      #
-      AC_DEFINE_UNQUOTED(SEND_QUAL_ARG2, $send_qual_arg2,
-        [Define to the type qualifier of arg 2 for send.])
-      AC_DEFINE_UNQUOTED(SEND_TYPE_ARG2, $send_type_arg2,
-        [Define to the type of arg 2 for send.])
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set +f
-          ;;
-      esac
-      #
-      AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
-        [Define to 1 if you have the send function.])
-      curl_cv_func_send="yes"
-    fi
+    AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
+      [Define to 1 if you have the send function.])
+    curl_cv_func_send="yes"
   else
     AC_MSG_ERROR([Unable to link function send])
   fi
@@ -1315,10 +921,6 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
 #include <winsock2.h>
 #endif
 #else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -1726,18 +1328,11 @@ AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
 
 dnl CURL_CHECK_FUNC_SELECT
 dnl -------------------------------------------------
-dnl Test if the socket select() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_SELECT
-dnl will be defined, defining the types of the
-dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234
-dnl and SELECT_TYPE_ARG5, defining the type of the
-dnl function return value in SELECT_TYPE_RETV, and
-dnl also defining the type qualifier of fifth argument
-dnl in SELECT_QUAL_ARG5.
+dnl Test if the socket select() function is available.
 
 AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
   AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   AC_CHECK_HEADERS(sys/select.h sys/socket.h)
   #
   AC_MSG_CHECKING([for select])
@@ -1769,11 +1364,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
+$curl_includes_bsdsocket
 #endif
     ]],[[
       select(0, 0, 0, 0, 0);
@@ -1787,136 +1378,9 @@ struct Library *SocketBase = NULL;
   ])
   #
   if test "$curl_cv_select" = "yes"; then
-    AC_CACHE_CHECK([types of args and return type for select],
-      [curl_cv_func_select_args], [
-      curl_cv_func_select_args="unknown"
-      for sel_retv in 'int' 'ssize_t'; do
-        for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
-          for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
-            for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
-              if test "$curl_cv_func_select_args" = "unknown"; then
-                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>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SELECTCALLCONV PASCAL
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-#ifndef HAVE_WINDOWS_H
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#elif defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
-#define SELECTCALLCONV
-#endif
-#ifndef HAVE_STRUCT_TIMEVAL
-                    struct timeval {
-                      long tv_sec;
-                      long tv_usec;
-                    };
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
-                    extern $sel_retv SELECTCALLCONV
-                               select($sel_arg1,
-                                       $sel_arg234,
-                                       $sel_arg234,
-                                       $sel_arg234,
-                                       $sel_arg5);
-#endif
-                  ]],[[
-                    $sel_arg1   nfds=0;
-                    $sel_arg234 rfds=0;
-                    $sel_arg234 wfds=0;
-                    $sel_arg234 efds=0;
-                    $sel_retv res = select(nfds, rfds, wfds, efds, 0);
-                  ]])
-                ],[
-                  curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
-                ])
-              fi
-            done
-          done
-        done
-      done
-    ]) # AC-CACHE-CHECK
-    if test "$curl_cv_func_select_args" = "unknown"; then
-      AC_MSG_WARN([Cannot find proper types to use for select args])
-      AC_MSG_WARN([HAVE_SELECT will not be defined])
-    else
-      select_prev_IFS=$IFS; IFS=','
-      set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
-      IFS=$select_prev_IFS
-      shift
-      #
-      sel_qual_type_arg5=$[3]
-      #
-      AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1, $[1],
-        [Define to the type of arg 1 for select.])
-      AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234, $[2],
-        [Define to the type of args 2, 3 and 4 for select.])
-      AC_DEFINE_UNQUOTED(SELECT_TYPE_RETV, $[4],
-        [Define to the function return type for select.])
-      #
-      prev_sh_opts=$-
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set -f
-          ;;
-      esac
-      #
-      case "$sel_qual_type_arg5" in
-        const*)
-          sel_qual_arg5=const
-          sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
-        ;;
-        *)
-          sel_qual_arg5=
-          sel_type_arg5=$sel_qual_type_arg5
-        ;;
-      esac
-      #
-      AC_DEFINE_UNQUOTED(SELECT_QUAL_ARG5, $sel_qual_arg5,
-        [Define to the type qualifier of arg 5 for select.])
-      AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5, $sel_type_arg5,
-        [Define to the type of arg 5 for select.])
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set +f
-          ;;
-      esac
-      #
-      AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
-        [Define to 1 if you have the select function.])
-      curl_cv_func_select="yes"
-    fi
+    AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
+      [Define to 1 if you have the select function.])
+    curl_cv_func_select="yes"
   fi
 ])
 
index 09539ed10952e6fbe4ff76b614d1553451e40c4c..380bdb0b8c7b5903d49e784c3df3d60dca493192 100644 (file)
@@ -1184,7 +1184,6 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
-m4_include([m4/ax_compile_check_sizeof.m4])
 m4_include([m4/curl-amissl.m4])
 m4_include([m4/curl-bearssl.m4])
 m4_include([m4/curl-compilers.m4])
@@ -1192,7 +1191,6 @@ m4_include([m4/curl-confopts.m4])
 m4_include([m4/curl-functions.m4])
 m4_include([m4/curl-gnutls.m4])
 m4_include([m4/curl-mbedtls.m4])
-m4_include([m4/curl-mesalink.m4])
 m4_include([m4/curl-nss.m4])
 m4_include([m4/curl-openssl.m4])
 m4_include([m4/curl-override.m4])
index 4e4c17e99919804a34846ed212e25445355afd06..16fc8a75e59bd8640ea1c9c31a741deb671d9a94 100755 (executable)
--- a/buildconf
+++ b/buildconf
@@ -1,4 +1,8 @@
 #!/bin/sh
+#
+# Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+#
+# SPDX-License-Identifier: curl
 
 echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2
 exec ${AUTORECONF:-autoreconf} -fi "${@}"
index 475736ee572c9d074b935a11a4bfaa30f4545dd0..9af46275aef63d372d5d640762c9bc193827c3d3 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___\r
 rem *                             \___|\___/|_| \_\_____|\r
 rem *\r
-rem * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+rem * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 rem *\r
 rem * This software is licensed as described in the file COPYING, which\r
 rem * you should have received as part of this distribution. The terms\r
@@ -19,6 +19,8 @@ rem *
 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 rem * KIND, either express or implied.\r
 rem *\r
+rem * SPDX-License-Identifier: curl\r
+rem *\r
 rem ***************************************************************************\r
 \r
 rem NOTES\r
index f50dcdb6de2af0a2e33f44704da3ec1286e5f291..7f76b6228f73d674f58cfcc3523f99e253ee5515 100755 (executable)
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
+#   Copyright 1992-2022 Free Software Foundation, Inc.
 
-timestamp='2018-02-24'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-09'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -27,11 +29,19 @@ timestamp='2018-02-24'
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
 
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX.  However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
@@ -50,7 +60,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2022 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,7 +94,8 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
+# Just in case it came from the environment.
+GUESS=
 
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
@@ -96,73 +107,90 @@ trap 'exit 1' 1 2 15
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > "$dummy.c" ;
-       for c in cc gcc c89 c99 ; do
-         if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-            CC_FOR_BUILD="$c"; break ;
-         fi ;
-       done ;
-       if test x"$CC_FOR_BUILD" = x ; then
-         CC_FOR_BUILD=no_compiler_found ;
-       fi
-       ;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+    # prevent multiple calls if $tmp is already set
+    test "$tmp" && return 0
+    : "${TMPDIR=/tmp}"
+    # shellcheck disable=SC2039,SC3028
+    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+    dummy=$tmp/dummy
+    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+       ,,)    echo "int x;" > "$dummy.c"
+              for driver in cc gcc c89 c99 ; do
+                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+                      CC_FOR_BUILD=$driver
+                      break
+                  fi
+              done
+              if test x"$CC_FOR_BUILD" = x ; then
+                  CC_FOR_BUILD=no_compiler_found
+              fi
+              ;;
+       ,,*)   CC_FOR_BUILD=$CC ;;
+       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+    esac
+}
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
        PATH=$PATH:/.attbin ; export PATH
 fi
 
 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
 Linux|GNU|GNU/*)
-       # If the system lacks a compiler, then just pick glibc.
-       # We could probably try harder.
-       LIBC=gnu
+       LIBC=unknown
 
-       eval "$set_cc_for_build"
+       set_cc_for_build
        cat <<-EOF > "$dummy.c"
        #include <features.h>
        #if defined(__UCLIBC__)
        LIBC=uclibc
        #elif defined(__dietlibc__)
        LIBC=dietlibc
-       #else
+       #elif defined(__GLIBC__)
        LIBC=gnu
+       #else
+       #include <stdarg.h>
+       /* First heuristic to detect musl libc.  */
+       #ifdef __DEFINED_va_list
+       LIBC=musl
+       #endif
        #endif
        EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+       cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+       eval "$cc_set_libc"
 
-       # If ldd exists, use it to detect musl libc.
-       if command -v ldd >/dev/null && \
-               ldd --version 2>&1 | grep -q ^musl
-       then
-           LIBC=musl
+       # Second heuristic to detect musl libc.
+       if [ "$LIBC" = unknown ] &&
+          command -v ldd >/dev/null &&
+          ldd --version 2>&1 | grep -q ^musl; then
+               LIBC=musl
+       fi
+
+       # If the system lacks a compiler, then just pick glibc.
+       # We could probably try harder.
+       if [ "$LIBC" = unknown ]; then
+               LIBC=gnu
        fi
        ;;
 esac
 
 # Note: order is significant - the case branches are not exclusive.
 
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
     *:NetBSD:*:*)
        # NetBSD (nbsd) targets should (where applicable) match one or
        # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -174,12 +202,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        #
        # Note: NetBSD doesn't particularly care about the vendor
        # portion of the name.  We always set it to "unknown".
-       sysctl="sysctl -n hw.machine_arch"
        UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-           "/sbin/$sysctl" 2>/dev/null || \
-           "/usr/sbin/$sysctl" 2>/dev/null || \
+           /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+           /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
            echo unknown)`
-       case "$UNAME_MACHINE_ARCH" in
+       case $UNAME_MACHINE_ARCH in
+           aarch64eb) machine=aarch64_be-unknown ;;
            armeb) machine=armeb-unknown ;;
            arm*) machine=arm-unknown ;;
            sh3el) machine=shl-unknown ;;
@@ -188,18 +216,18 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
            earmv*)
                arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
                endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
-               machine="${arch}${endian}"-unknown
+               machine=${arch}${endian}-unknown
                ;;
-           *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+           *) machine=$UNAME_MACHINE_ARCH-unknown ;;
        esac
        # The Operating System including object format, if it has switched
        # to ELF recently (or will in the future) and ABI.
-       case "$UNAME_MACHINE_ARCH" in
+       case $UNAME_MACHINE_ARCH in
            earm*)
                os=netbsdelf
                ;;
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               eval "$set_cc_for_build"
+               set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
                        | grep -q __ELF__
                then
@@ -215,7 +243,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
                ;;
        esac
        # Determine ABI tags.
-       case "$UNAME_MACHINE_ARCH" in
+       case $UNAME_MACHINE_ARCH in
            earm*)
                expr='s/^earmv[0-9]/-eabi/;s/eb$//'
                abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
@@ -226,7 +254,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        # thus, need a distinct triplet. However, they do not need
        # kernel version information, so it can be replaced with a
        # suitable tag, in the style of linux-gnu.
-       case "$UNAME_VERSION" in
+       case $UNAME_VERSION in
            Debian*)
                release='-gnu'
                ;;
@@ -237,45 +265,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi}"
-       exit ;;
+       GUESS=$machine-${os}${release}${abi-}
+       ;;
     *:Bitrig:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+       ;;
     *:OpenBSD:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+       ;;
+    *:SecBSD:*:*)
+       UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+       GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+       ;;
     *:LibertyBSD:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-       echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+       ;;
     *:MidnightBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+       ;;
     *:ekkoBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+       ;;
     *:SolidBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+       ;;
+    *:OS108:*:*)
+       GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+       ;;
     macppc:MirBSD:*:*)
-       echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+       ;;
     *:MirBSD:*:*)
-       echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+       ;;
     *:Sortix:*:*)
-       echo "$UNAME_MACHINE"-unknown-sortix
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-sortix
+       ;;
+    *:Twizzler:*:*)
+       GUESS=$UNAME_MACHINE-unknown-twizzler
+       ;;
     *:Redox:*:*)
-       echo "$UNAME_MACHINE"-unknown-redox
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-redox
+       ;;
     mips:OSF1:*.*)
-        echo mips-dec-osf1
-        exit ;;
+       GUESS=mips-dec-osf1
+       ;;
     alpha:OSF1:*:*)
+       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+       trap '' 0
        case $UNAME_RELEASE in
        *4.0)
                UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -289,7 +329,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        # covers most systems running today.  This code pipes the CPU
        # types through head -n 1, so we only detect the type of CPU 0.
        ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-       case "$ALPHA_CPU_TYPE" in
+       case $ALPHA_CPU_TYPE in
            "EV4 (21064)")
                UNAME_MACHINE=alpha ;;
            "EV4.5 (21064)")
@@ -326,117 +366,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        # A Tn.n version is a released field test version.
        # A Xn.n version is an unreleased experimental baselevel.
        # 1.2 uses "1.2" for uname -r.
-       echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
-       # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-       exitcode=$?
-       trap '' 0
-       exit $exitcode ;;
+       OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+       GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+       ;;
     Amiga*:UNIX_System_V:4.0:*)
-       echo m68k-unknown-sysv4
-       exit ;;
+       GUESS=m68k-unknown-sysv4
+       ;;
     *:[Aa]miga[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-amigaos
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-amigaos
+       ;;
     *:[Mm]orph[Oo][Ss]:*:*)
-       echo "$UNAME_MACHINE"-unknown-morphos
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-morphos
+       ;;
     *:OS/390:*:*)
-       echo i370-ibm-openedition
-       exit ;;
+       GUESS=i370-ibm-openedition
+       ;;
     *:z/VM:*:*)
-       echo s390-ibm-zvmoe
-       exit ;;
+       GUESS=s390-ibm-zvmoe
+       ;;
     *:OS400:*:*)
-       echo powerpc-ibm-os400
-       exit ;;
+       GUESS=powerpc-ibm-os400
+       ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-       echo arm-acorn-riscix"$UNAME_RELEASE"
-       exit ;;
+       GUESS=arm-acorn-riscix$UNAME_RELEASE
+       ;;
     arm*:riscos:*:*|arm*:RISCOS:*:*)
-       echo arm-unknown-riscos
-       exit ;;
+       GUESS=arm-unknown-riscos
+       ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-       echo hppa1.1-hitachi-hiuxmpp
-       exit ;;
+       GUESS=hppa1.1-hitachi-hiuxmpp
+       ;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
        # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-       if test "`(/bin/universe) 2>/dev/null`" = att ; then
-               echo pyramid-pyramid-sysv3
-       else
-               echo pyramid-pyramid-bsd
-       fi
-       exit ;;
+       case `(/bin/universe) 2>/dev/null` in
+           att) GUESS=pyramid-pyramid-sysv3 ;;
+           *)   GUESS=pyramid-pyramid-bsd   ;;
+       esac
+       ;;
     NILE*:*:*:dcosx)
-       echo pyramid-pyramid-svr4
-       exit ;;
+       GUESS=pyramid-pyramid-svr4
+       ;;
     DRS?6000:unix:4.0:6*)
-       echo sparc-icl-nx6
-       exit ;;
+       GUESS=sparc-icl-nx6
+       ;;
     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
        case `/usr/bin/uname -p` in
-           sparc) echo sparc-icl-nx7; exit ;;
-       esac ;;
+           sparc) GUESS=sparc-icl-nx7 ;;
+       esac
+       ;;
     s390x:SunOS:*:*)
-       echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+       GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+       ;;
     sun4H:SunOS:5.*:*)
-       echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+       GUESS=sparc-hal-solaris2$SUN_REL
+       ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-       echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+       GUESS=sparc-sun-solaris2$SUN_REL
+       ;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=i386-pc-auroraux$UNAME_RELEASE
+       ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval "$set_cc_for_build"
+       set_cc_for_build
        SUN_ARCH=i386
        # If there is a compiler, see if it is configured for 64-bit objects.
        # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
        # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+       if test "$CC_FOR_BUILD" != no_compiler_found; then
            if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+               (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
                grep IS_64BIT_ARCH >/dev/null
            then
                SUN_ARCH=x86_64
            fi
        fi
-       echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+       GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+       ;;
     sun4*:SunOS:6*:*)
        # According to config.sub, this is the proper way to canonicalize
        # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
        # it's likely to be more like Solaris than SunOS4.
-       echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+       GUESS=sparc-sun-solaris3$SUN_REL
+       ;;
     sun4*:SunOS:*:*)
-       case "`/usr/bin/arch -k`" in
+       case `/usr/bin/arch -k` in
            Series*|S4*)
                UNAME_RELEASE=`uname -v`
                ;;
        esac
        # Japanese Language versions have a version number like `4.1.3-JL'.
-       echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+       GUESS=sparc-sun-sunos$SUN_REL
+       ;;
     sun3*:SunOS:*:*)
-       echo m68k-sun-sunos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-sun-sunos$UNAME_RELEASE
+       ;;
     sun*:*:4.2BSD:*)
        UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
        test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-       case "`/bin/arch`" in
+       case `/bin/arch` in
            sun3)
-               echo m68k-sun-sunos"$UNAME_RELEASE"
+               GUESS=m68k-sun-sunos$UNAME_RELEASE
                ;;
            sun4)
-               echo sparc-sun-sunos"$UNAME_RELEASE"
+               GUESS=sparc-sun-sunos$UNAME_RELEASE
                ;;
        esac
-       exit ;;
+       ;;
     aushp:SunOS:*:*)
-       echo sparc-auspex-sunos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sparc-auspex-sunos$UNAME_RELEASE
+       ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
     # "atarist" or "atariste" at least should have a processor
@@ -446,43 +490,43 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-atari-mint$UNAME_RELEASE
+       ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-atari-mint$UNAME_RELEASE
+       ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-       echo m68k-atari-mint"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-atari-mint$UNAME_RELEASE
+       ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-       echo m68k-milan-mint"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-milan-mint$UNAME_RELEASE
+       ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-       echo m68k-hades-mint"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-hades-mint$UNAME_RELEASE
+       ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-       echo m68k-unknown-mint"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-unknown-mint$UNAME_RELEASE
+       ;;
     m68k:machten:*:*)
-       echo m68k-apple-machten"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-apple-machten$UNAME_RELEASE
+       ;;
     powerpc:machten:*:*)
-       echo powerpc-apple-machten"$UNAME_RELEASE"
-       exit ;;
+       GUESS=powerpc-apple-machten$UNAME_RELEASE
+       ;;
     RISC*:Mach:*:*)
-       echo mips-dec-mach_bsd4.3
-       exit ;;
+       GUESS=mips-dec-mach_bsd4.3
+       ;;
     RISC*:ULTRIX:*:*)
-       echo mips-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
+       GUESS=mips-dec-ultrix$UNAME_RELEASE
+       ;;
     VAX*:ULTRIX*:*:*)
-       echo vax-dec-ultrix"$UNAME_RELEASE"
-       exit ;;
+       GUESS=vax-dec-ultrix$UNAME_RELEASE
+       ;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
-       echo clipper-intergraph-clix"$UNAME_RELEASE"
-       exit ;;
+       GUESS=clipper-intergraph-clix$UNAME_RELEASE
+       ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-       eval "$set_cc_for_build"
+       set_cc_for_build
        sed 's/^        //' << EOF > "$dummy.c"
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
@@ -508,78 +552,79 @@ EOF
          dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
          SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
            { echo "$SYSTEM_NAME"; exit; }
-       echo mips-mips-riscos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=mips-mips-riscos$UNAME_RELEASE
+       ;;
     Motorola:PowerMAX_OS:*:*)
-       echo powerpc-motorola-powermax
-       exit ;;
+       GUESS=powerpc-motorola-powermax
+       ;;
     Motorola:*:4.3:PL8-*)
-       echo powerpc-harris-powermax
-       exit ;;
+       GUESS=powerpc-harris-powermax
+       ;;
     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-       echo powerpc-harris-powermax
-       exit ;;
+       GUESS=powerpc-harris-powermax
+       ;;
     Night_Hawk:Power_UNIX:*:*)
-       echo powerpc-harris-powerunix
-       exit ;;
+       GUESS=powerpc-harris-powerunix
+       ;;
     m88k:CX/UX:7*:*)
-       echo m88k-harris-cxux7
-       exit ;;
+       GUESS=m88k-harris-cxux7
+       ;;
     m88k:*:4*:R4*)
-       echo m88k-motorola-sysv4
-       exit ;;
+       GUESS=m88k-motorola-sysv4
+       ;;
     m88k:*:3*:R3*)
-       echo m88k-motorola-sysv3
-       exit ;;
+       GUESS=m88k-motorola-sysv3
+       ;;
     AViiON:dgux:*:*)
        # DG/UX returns AViiON for all architectures
        UNAME_PROCESSOR=`/usr/bin/uname -p`
-       if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+       if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
        then
-           if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
-              [ "$TARGET_BINARY_INTERFACE"x = x ]
+           if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+              test "$TARGET_BINARY_INTERFACE"x = x
            then
-               echo m88k-dg-dgux"$UNAME_RELEASE"
+               GUESS=m88k-dg-dgux$UNAME_RELEASE
            else
-               echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+               GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
            fi
        else
-           echo i586-dg-dgux"$UNAME_RELEASE"
+           GUESS=i586-dg-dgux$UNAME_RELEASE
        fi
-       exit ;;
+       ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
-       echo m88k-dolphin-sysv3
-       exit ;;
+       GUESS=m88k-dolphin-sysv3
+       ;;
     M88*:*:R3*:*)
        # Delta 88k system running SVR3
-       echo m88k-motorola-sysv3
-       exit ;;
+       GUESS=m88k-motorola-sysv3
+       ;;
     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-       echo m88k-tektronix-sysv3
-       exit ;;
+       GUESS=m88k-tektronix-sysv3
+       ;;
     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-       echo m68k-tektronix-bsd
-       exit ;;
+       GUESS=m68k-tektronix-bsd
+       ;;
     *:IRIX*:*:*)
-       echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
-       exit ;;
+       IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+       GUESS=mips-sgi-irix$IRIX_REL
+       ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-       echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-       exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+       GUESS=romp-ibm-aix    # uname -m gives an 8 hex-code CPU id
+       ;;                    # Note that: echo "'`uname -s`'" gives 'AIX '
     i*86:AIX:*:*)
-       echo i386-ibm-aix
-       exit ;;
+       GUESS=i386-ibm-aix
+       ;;
     ia64:AIX:*:*)
-       if [ -x /usr/bin/oslevel ] ; then
+       if test -x /usr/bin/oslevel ; then
                IBM_REV=`/usr/bin/oslevel`
        else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+               IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
        fi
-       echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-       exit ;;
+       GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+       ;;
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               eval "$set_cc_for_build"
+               set_cc_for_build
                sed 's/^                //' << EOF > "$dummy.c"
                #include <sys/systemcfg.h>
 
@@ -593,16 +638,16 @@ EOF
 EOF
                if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
                then
-                       echo "$SYSTEM_NAME"
+                       GUESS=$SYSTEM_NAME
                else
-                       echo rs6000-ibm-aix3.2.5
+                       GUESS=rs6000-ibm-aix3.2.5
                fi
        elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-               echo rs6000-ibm-aix3.2.4
+               GUESS=rs6000-ibm-aix3.2.4
        else
-               echo rs6000-ibm-aix3.2
+               GUESS=rs6000-ibm-aix3.2
        fi
-       exit ;;
+       ;;
     *:AIX:*:[4567])
        IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
        if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
@@ -610,57 +655,57 @@ EOF
        else
                IBM_ARCH=powerpc
        fi
-       if [ -x /usr/bin/lslpp ] ; then
-               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+       if test -x /usr/bin/lslpp ; then
+               IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
                           awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
        else
-               IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+               IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
        fi
-       echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-       exit ;;
+       GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+       ;;
     *:AIX:*:*)
-       echo rs6000-ibm-aix
-       exit ;;
+       GUESS=rs6000-ibm-aix
+       ;;
     ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-       echo romp-ibm-bsd4.4
-       exit ;;
+       GUESS=romp-ibm-bsd4.4
+       ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-       echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-       exit ;;                             # report: romp-ibm BSD 4.3
+       GUESS=romp-ibm-bsd$UNAME_RELEASE    # 4.3 with uname added to
+       ;;                                  # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
-       echo rs6000-bull-bosx
-       exit ;;
+       GUESS=rs6000-bull-bosx
+       ;;
     DPX/2?00:B.O.S.:*:*)
-       echo m68k-bull-sysv3
-       exit ;;
+       GUESS=m68k-bull-sysv3
+       ;;
     9000/[34]??:4.3bsd:1.*:*)
-       echo m68k-hp-bsd
-       exit ;;
+       GUESS=m68k-hp-bsd
+       ;;
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-       echo m68k-hp-bsd4.4
-       exit ;;
+       GUESS=m68k-hp-bsd4.4
+       ;;
     9000/[34678]??:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       case "$UNAME_MACHINE" in
+       HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+       case $UNAME_MACHINE in
            9000/31?)            HP_ARCH=m68000 ;;
            9000/[34]??)         HP_ARCH=m68k ;;
            9000/[678][0-9][0-9])
-               if [ -x /usr/bin/getconf ]; then
+               if test -x /usr/bin/getconf; then
                    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                   case "$sc_cpu_version" in
+                   case $sc_cpu_version in
                      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
                      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
                      532)                      # CPU_PA_RISC2_0
-                       case "$sc_kernel_bits" in
+                       case $sc_kernel_bits in
                          32) HP_ARCH=hppa2.0n ;;
                          64) HP_ARCH=hppa2.0w ;;
                          '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
                        esac ;;
                    esac
                fi
-               if [ "$HP_ARCH" = "" ]; then
-                   eval "$set_cc_for_build"
+               if test "$HP_ARCH" = ""; then
+                   set_cc_for_build
                    sed 's/^            //' << EOF > "$dummy.c"
 
                #define _HPUX_SOURCE
@@ -698,9 +743,9 @@ EOF
                    test -z "$HP_ARCH" && HP_ARCH=hppa
                fi ;;
        esac
-       if [ "$HP_ARCH" = hppa2.0w ]
+       if test "$HP_ARCH" = hppa2.0w
        then
-           eval "$set_cc_for_build"
+           set_cc_for_build
 
            # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
            # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
@@ -719,14 +764,14 @@ EOF
                HP_ARCH=hppa64
            fi
        fi
-       echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-       exit ;;
+       GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+       ;;
     ia64:HP-UX:*:*)
-       HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-       echo ia64-hp-hpux"$HPUX_REV"
-       exit ;;
+       HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+       GUESS=ia64-hp-hpux$HPUX_REV
+       ;;
     3050*:HI-UX:*:*)
-       eval "$set_cc_for_build"
+       set_cc_for_build
        sed 's/^        //' << EOF > "$dummy.c"
        #include <unistd.h>
        int
@@ -754,36 +799,36 @@ EOF
 EOF
        $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
                { echo "$SYSTEM_NAME"; exit; }
-       echo unknown-hitachi-hiuxwe2
-       exit ;;
+       GUESS=unknown-hitachi-hiuxwe2
+       ;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-       echo hppa1.1-hp-bsd
-       exit ;;
+       GUESS=hppa1.1-hp-bsd
+       ;;
     9000/8??:4.3bsd:*:*)
-       echo hppa1.0-hp-bsd
-       exit ;;
+       GUESS=hppa1.0-hp-bsd
+       ;;
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-       echo hppa1.0-hp-mpeix
-       exit ;;
+       GUESS=hppa1.0-hp-mpeix
+       ;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-       echo hppa1.1-hp-osf
-       exit ;;
+       GUESS=hppa1.1-hp-osf
+       ;;
     hp8??:OSF1:*:*)
-       echo hppa1.0-hp-osf
-       exit ;;
+       GUESS=hppa1.0-hp-osf
+       ;;
     i*86:OSF1:*:*)
-       if [ -x /usr/sbin/sysversion ] ; then
-           echo "$UNAME_MACHINE"-unknown-osf1mk
+       if test -x /usr/sbin/sysversion ; then
+           GUESS=$UNAME_MACHINE-unknown-osf1mk
        else
-           echo "$UNAME_MACHINE"-unknown-osf1
+           GUESS=$UNAME_MACHINE-unknown-osf1
        fi
-       exit ;;
+       ;;
     parisc*:Lites*:*:*)
-       echo hppa1.1-hp-lites
-       exit ;;
+       GUESS=hppa1.1-hp-lites
+       ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-       echo c1-convex-bsd
-       exit ;;
+       GUESS=c1-convex-bsd
+       ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
        if getsysinfo -f scalar_acc
        then echo c32-convex-bsd
@@ -791,17 +836,18 @@ EOF
        fi
        exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-       echo c34-convex-bsd
-       exit ;;
+       GUESS=c34-convex-bsd
+       ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-       echo c38-convex-bsd
-       exit ;;
+       GUESS=c38-convex-bsd
+       ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-       echo c4-convex-bsd
-       exit ;;
+       GUESS=c4-convex-bsd
+       ;;
     CRAY*Y-MP:*:*:*)
-       echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
+       CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+       GUESS=ymp-cray-unicos$CRAY_REL
+       ;;
     CRAY*[A-Z]90:*:*:*)
        echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
        | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -809,103 +855,129 @@ EOF
              -e 's/\.[^.]*$/.X/'
        exit ;;
     CRAY*TS:*:*:*)
-       echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
+       CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+       GUESS=t90-cray-unicos$CRAY_REL
+       ;;
     CRAY*T3E:*:*:*)
-       echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
+       CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+       GUESS=alphaev5-cray-unicosmk$CRAY_REL
+       ;;
     CRAY*SV1:*:*:*)
-       echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
+       CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+       GUESS=sv1-cray-unicos$CRAY_REL
+       ;;
     *:UNICOS/mp:*:*)
-       echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-       exit ;;
+       CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+       GUESS=craynv-cray-unicosmp$CRAY_REL
+       ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
        FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
        FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
        FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
-       echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
+       GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+       ;;
     5000:UNIX_System_V:4.*:*)
        FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
        FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-       echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-       exit ;;
+       GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+       ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-       echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+       ;;
     sparc*:BSD/OS:*:*)
-       echo sparc-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+       ;;
     *:BSD/OS:*:*)
-       echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+       ;;
+    arm:FreeBSD:*:*)
+       UNAME_PROCESSOR=`uname -p`
+       set_cc_for_build
+       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+           | grep -q __ARM_PCS_VFP
+       then
+           FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+           GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
+       else
+           FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+           GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
+       fi
+       ;;
     *:FreeBSD:*:*)
        UNAME_PROCESSOR=`/usr/bin/uname -p`
-       case "$UNAME_PROCESSOR" in
+       case $UNAME_PROCESSOR in
            amd64)
                UNAME_PROCESSOR=x86_64 ;;
            i386)
                UNAME_PROCESSOR=i586 ;;
        esac
-       echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
+       FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+       GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+       ;;
     i*:CYGWIN*:*)
-       echo "$UNAME_MACHINE"-pc-cygwin
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-cygwin
+       ;;
     *:MINGW64*:*)
-       echo "$UNAME_MACHINE"-pc-mingw64
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-mingw64
+       ;;
     *:MINGW*:*)
-       echo "$UNAME_MACHINE"-pc-mingw32
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-mingw32
+       ;;
     *:MSYS*:*)
-       echo "$UNAME_MACHINE"-pc-msys
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-msys
+       ;;
     i*:PW*:*)
-       echo "$UNAME_MACHINE"-pc-pw32
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-pw32
+       ;;
+    *:SerenityOS:*:*)
+        GUESS=$UNAME_MACHINE-pc-serenity
+        ;;
     *:Interix*:*)
-       case "$UNAME_MACHINE" in
+       case $UNAME_MACHINE in
            x86)
-               echo i586-pc-interix"$UNAME_RELEASE"
-               exit ;;
+               GUESS=i586-pc-interix$UNAME_RELEASE
+               ;;
            authenticamd | genuineintel | EM64T)
-               echo x86_64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
+               GUESS=x86_64-unknown-interix$UNAME_RELEASE
+               ;;
            IA64)
-               echo ia64-unknown-interix"$UNAME_RELEASE"
-               exit ;;
+               GUESS=ia64-unknown-interix$UNAME_RELEASE
+               ;;
        esac ;;
     i*:UWIN*:*)
-       echo "$UNAME_MACHINE"-pc-uwin
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-uwin
+       ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-unknown-cygwin
-       exit ;;
+       GUESS=x86_64-pc-cygwin
+       ;;
     prep*:SunOS:5.*:*)
-       echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-       exit ;;
+       SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+       GUESS=powerpcle-unknown-solaris2$SUN_REL
+       ;;
     *:GNU:*:*)
        # the GNU system
-       echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
-       exit ;;
+       GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+       GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+       GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+       ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
-       exit ;;
-    i*86:Minix:*:*)
-       echo "$UNAME_MACHINE"-pc-minix
-       exit ;;
+       GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+       GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+       GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+       ;;
+    *:Minix:*:*)
+       GUESS=$UNAME_MACHINE-unknown-minix
+       ;;
     aarch64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
          EV5)   UNAME_MACHINE=alphaev5 ;;
          EV56)  UNAME_MACHINE=alphaev56 ;;
          PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -916,187 +988,225 @@ EOF
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
        if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
+    arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     arm*:Linux:*:*)
-       eval "$set_cc_for_build"
+       set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
-           echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+           GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
        else
            if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
                | grep -q __ARM_PCS_VFP
            then
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+               GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
            else
-               echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+               GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
            fi
        fi
-       exit ;;
+       ;;
     avr32*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     cris:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+       ;;
     crisv32:Linux:*:*)
-       echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+       ;;
     e2k:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     frv:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     hexagon:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     i*86:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+       ;;
     ia64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     k1om:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
+    loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     m32r*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     m68*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     mips:Linux:*:* | mips64:Linux:*:*)
-       eval "$set_cc_for_build"
+       set_cc_for_build
+       IS_GLIBC=0
+       test x"${LIBC}" = xgnu && IS_GLIBC=1
        sed 's/^        //' << EOF > "$dummy.c"
        #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
+       #undef mips
+       #undef mipsel
+       #undef mips64
+       #undef mips64el
+       #if ${IS_GLIBC} && defined(_ABI64)
+       LIBCABI=gnuabi64
+       #else
+       #if ${IS_GLIBC} && defined(_ABIN32)
+       LIBCABI=gnuabin32
+       #else
+       LIBCABI=${LIBC}
+       #endif
+       #endif
+
+       #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+       CPU=mipsisa64r6
+       #else
+       #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+       CPU=mipsisa32r6
+       #else
+       #if defined(__mips64)
+       CPU=mips64
+       #else
+       CPU=mips
+       #endif
+       #endif
+       #endif
+
        #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
+       MIPS_ENDIAN=el
        #else
        #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
+       MIPS_ENDIAN=
        #else
-       CPU=
+       MIPS_ENDIAN=
        #endif
        #endif
 EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
-       test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
+       cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+       eval "$cc_set_vars"
+       test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
        ;;
     mips64el:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     openrisc*:Linux:*:*)
-       echo or1k-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=or1k-unknown-linux-$LIBC
+       ;;
     or32:Linux:*:* | or1k*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=sparc-unknown-linux-$LIBC
+       ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=hppa64-unknown-linux-$LIBC
+       ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-         PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-         *)    echo hppa-unknown-linux-"$LIBC" ;;
+         PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+         PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+         *)    GUESS=hppa-unknown-linux-$LIBC ;;
        esac
-       exit ;;
+       ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=powerpc64-unknown-linux-$LIBC
+       ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=powerpc-unknown-linux-$LIBC
+       ;;
     ppc64le:Linux:*:*)
-       echo powerpc64le-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=powerpc64le-unknown-linux-$LIBC
+       ;;
     ppcle:Linux:*:*)
-       echo powerpcle-unknown-linux-"$LIBC"
-       exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=powerpcle-unknown-linux-$LIBC
+       ;;
+    riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+       ;;
     sh64*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     sh*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     tile*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     vax:Linux:*:*)
-       echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+       ;;
     x86_64:Linux:*:*)
-       if objdump -f /bin/sh | grep -q elf32-x86-64; then
-           echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32
-       else
-           echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+       set_cc_for_build
+       LIBCABI=$LIBC
+       if test "$CC_FOR_BUILD" != no_compiler_found; then
+           if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+               grep IS_X32 >/dev/null
+           then
+               LIBCABI=${LIBC}x32
+           fi
        fi
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+       ;;
     xtensa*:Linux:*:*)
-       echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
        # earlier versions are messed up and put the nodename in both
        # sysname and nodename.
-       echo i386-sequent-sysv4
-       exit ;;
+       GUESS=i386-sequent-sysv4
+       ;;
     i*86:UNIX_SV:4.2MP:2.*)
        # Unixware is an offshoot of SVR4, but it has its own version
        # number series starting with 2...
        # I am not positive that other SVR4 systems won't match this,
        # I just have to hope.  -- rms.
        # Use sysv4.2uw... so that sysv4* matches it.
-       echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+       ;;
     i*86:OS/2:*:*)
        # If we were able to find `uname', then EMX Unix compatibility
        # is probably installed.
-       echo "$UNAME_MACHINE"-pc-os2-emx
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-os2-emx
+       ;;
     i*86:XTS-300:*:STOP)
-       echo "$UNAME_MACHINE"-unknown-stop
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-stop
+       ;;
     i*86:atheos:*:*)
-       echo "$UNAME_MACHINE"-unknown-atheos
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-atheos
+       ;;
     i*86:syllable:*:*)
-       echo "$UNAME_MACHINE"-pc-syllable
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-syllable
+       ;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-       echo i386-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=i386-unknown-lynxos$UNAME_RELEASE
+       ;;
     i*86:*DOS:*:*)
-       echo "$UNAME_MACHINE"-pc-msdosdjgpp
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+       ;;
     i*86:*:4.*:*)
        UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+               GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
        else
-               echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+               GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
        fi
-       exit ;;
+       ;;
     i*86:*:5:[678]*)
        # UnixWare 7.x, OpenUNIX and OpenServer 6.
        case `/bin/uname -X | grep "^Machine"` in
@@ -1104,12 +1214,12 @@ EOF
            *Pentium)        UNAME_MACHINE=i586 ;;
            *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
        esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       ;;
     i*86:*:3.2:*)
        if test -f /usr/options/cb.name; then
                UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-               echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+               GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
        elif /bin/uname -X 2>/dev/null >/dev/null ; then
                UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
                (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1119,11 +1229,11 @@ EOF
                        && UNAME_MACHINE=i686
                (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
                        && UNAME_MACHINE=i686
-               echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+               GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
        else
-               echo "$UNAME_MACHINE"-pc-sysv32
+               GUESS=$UNAME_MACHINE-pc-sysv32
        fi
-       exit ;;
+       ;;
     pc:*:*:*)
        # Left here for compatibility:
        # uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1131,31 +1241,31 @@ EOF
        # Note: whatever this is, it MUST be the same as what config.sub
        # prints for the "djgpp" host, or else GDB configure will decide that
        # this is a cross-build.
-       echo i586-pc-msdosdjgpp
-       exit ;;
+       GUESS=i586-pc-msdosdjgpp
+       ;;
     Intel:Mach:3*:*)
-       echo i386-pc-mach3
-       exit ;;
+       GUESS=i386-pc-mach3
+       ;;
     paragon:*:*:*)
-       echo i860-intel-osf1
-       exit ;;
+       GUESS=i860-intel-osf1
+       ;;
     i860:*:4.*:*) # i860-SVR4
        if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-         echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+         GUESS=i860-stardent-sysv$UNAME_RELEASE    # Stardent Vistra i860-SVR4
        else # Add other i860-SVR4 vendors below as they are discovered.
-         echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
+         GUESS=i860-unknown-sysv$UNAME_RELEASE     # Unknown i860-SVR4
        fi
-       exit ;;
+       ;;
     mini*:CTIX:SYS*5:*)
        # "miniframe"
-       echo m68010-convergent-sysv
-       exit ;;
+       GUESS=m68010-convergent-sysv
+       ;;
     mc68k:UNIX:SYSTEM5:3.51m)
-       echo m68k-convergent-sysv
-       exit ;;
+       GUESS=m68k-convergent-sysv
+       ;;
     M680?0:D-NIX:5.3:*)
-       echo m68k-diab-dnix
-       exit ;;
+       GUESS=m68k-diab-dnix
+       ;;
     M68*:*:R3V[5678]*:*)
        test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
@@ -1180,249 +1290,404 @@ EOF
        /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
            && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-       echo m68k-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+       ;;
     mc68030:UNIX_System_V:4.*:*)
-       echo m68k-atari-sysv4
-       exit ;;
+       GUESS=m68k-atari-sysv4
+       ;;
     TSUNAMI:LynxOS:2.*:*)
-       echo sparc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+       ;;
     rs6000:LynxOS:2.*:*)
-       echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+       ;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-       echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-       exit ;;
+       GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+       ;;
     SM[BE]S:UNIX_SV:*:*)
-       echo mips-dde-sysv"$UNAME_RELEASE"
-       exit ;;
+       GUESS=mips-dde-sysv$UNAME_RELEASE
+       ;;
     RM*:ReliantUNIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
+       GUESS=mips-sni-sysv4
+       ;;
     RM*:SINIX-*:*:*)
-       echo mips-sni-sysv4
-       exit ;;
+       GUESS=mips-sni-sysv4
+       ;;
     *:SINIX-*:*:*)
        if uname -p 2>/dev/null >/dev/null ; then
                UNAME_MACHINE=`(uname -p) 2>/dev/null`
-               echo "$UNAME_MACHINE"-sni-sysv4
+               GUESS=$UNAME_MACHINE-sni-sysv4
        else
-               echo ns32k-sni-sysv
+               GUESS=ns32k-sni-sysv
        fi
-       exit ;;
+       ;;
     PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
                        # says <Richard.M.Bartel@ccMail.Census.GOV>
-       echo i586-unisys-sysv4
-       exit ;;
+       GUESS=i586-unisys-sysv4
+       ;;
     *:UNIX_System_V:4*:FTX*)
        # From Gerald Hewes <hewes@openmarket.com>.
        # How about differentiating between stratus architectures? -djm
-       echo hppa1.1-stratus-sysv4
-       exit ;;
+       GUESS=hppa1.1-stratus-sysv4
+       ;;
     *:*:*:FTX*)
        # From seanf@swdc.stratus.com.
-       echo i860-stratus-sysv4
-       exit ;;
+       GUESS=i860-stratus-sysv4
+       ;;
     i*86:VOS:*:*)
        # From Paul.Green@stratus.com.
-       echo "$UNAME_MACHINE"-stratus-vos
-       exit ;;
+       GUESS=$UNAME_MACHINE-stratus-vos
+       ;;
     *:VOS:*:*)
        # From Paul.Green@stratus.com.
-       echo hppa1.1-stratus-vos
-       exit ;;
+       GUESS=hppa1.1-stratus-vos
+       ;;
     mc68*:A/UX:*:*)
-       echo m68k-apple-aux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=m68k-apple-aux$UNAME_RELEASE
+       ;;
     news*:NEWS-OS:6*:*)
-       echo mips-sony-newsos6
-       exit ;;
+       GUESS=mips-sony-newsos6
+       ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-       if [ -d /usr/nec ]; then
-               echo mips-nec-sysv"$UNAME_RELEASE"
+       if test -d /usr/nec; then
+               GUESS=mips-nec-sysv$UNAME_RELEASE
        else
-               echo mips-unknown-sysv"$UNAME_RELEASE"
+               GUESS=mips-unknown-sysv$UNAME_RELEASE
        fi
-       exit ;;
+       ;;
     BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
-       echo powerpc-be-beos
-       exit ;;
+       GUESS=powerpc-be-beos
+       ;;
     BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
-       echo powerpc-apple-beos
-       exit ;;
+       GUESS=powerpc-apple-beos
+       ;;
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
-       echo i586-pc-beos
-       exit ;;
+       GUESS=i586-pc-beos
+       ;;
     BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
+       GUESS=i586-pc-haiku
+       ;;
     x86_64:Haiku:*:*)
-       echo x86_64-unknown-haiku
-       exit ;;
+       GUESS=x86_64-unknown-haiku
+       ;;
     SX-4:SUPER-UX:*:*)
-       echo sx4-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sx4-nec-superux$UNAME_RELEASE
+       ;;
     SX-5:SUPER-UX:*:*)
-       echo sx5-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sx5-nec-superux$UNAME_RELEASE
+       ;;
     SX-6:SUPER-UX:*:*)
-       echo sx6-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sx6-nec-superux$UNAME_RELEASE
+       ;;
     SX-7:SUPER-UX:*:*)
-       echo sx7-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sx7-nec-superux$UNAME_RELEASE
+       ;;
     SX-8:SUPER-UX:*:*)
-       echo sx8-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sx8-nec-superux$UNAME_RELEASE
+       ;;
     SX-8R:SUPER-UX:*:*)
-       echo sx8r-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sx8r-nec-superux$UNAME_RELEASE
+       ;;
     SX-ACE:SUPER-UX:*:*)
-       echo sxace-nec-superux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=sxace-nec-superux$UNAME_RELEASE
+       ;;
     Power*:Rhapsody:*:*)
-       echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
+       GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+       ;;
     *:Rhapsody:*:*)
-       echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+       ;;
+    arm64:Darwin:*:*)
+       GUESS=aarch64-apple-darwin$UNAME_RELEASE
+       ;;
     *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       eval "$set_cc_for_build"
-       if test "$UNAME_PROCESSOR" = unknown ; then
-           UNAME_PROCESSOR=powerpc
+       UNAME_PROCESSOR=`uname -p`
+       case $UNAME_PROCESSOR in
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       if command -v xcode-select > /dev/null 2> /dev/null && \
+               ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+           # Avoid executing cc if there is no toolchain installed as
+           # cc will be a stub that puts up a graphical alert
+           # prompting the user to install developer tools.
+           CC_FOR_BUILD=no_compiler_found
+       else
+           set_cc_for_build
        fi
-       if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
-           if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
-               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_64BIT_ARCH >/dev/null
-               then
-                   case $UNAME_PROCESSOR in
-                       i386) UNAME_PROCESSOR=x86_64 ;;
-                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
-                   esac
-               fi
-               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                      grep IS_PPC >/dev/null
-               then
-                   UNAME_PROCESSOR=powerpc
-               fi
+       if test "$CC_FOR_BUILD" != no_compiler_found; then
+           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                  grep IS_64BIT_ARCH >/dev/null
+           then
+               case $UNAME_PROCESSOR in
+                   i386) UNAME_PROCESSOR=x86_64 ;;
+                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
+               esac
+           fi
+           # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+           if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                  grep IS_PPC >/dev/null
+           then
+               UNAME_PROCESSOR=powerpc
            fi
        elif test "$UNAME_PROCESSOR" = i386 ; then
-           # Avoid executing cc on OS X 10.9, as it ships with a stub
-           # that puts up a graphical alert prompting to install
-           # developer tools.  Any system running Mac OS X 10.7 or
-           # later (Darwin 11 and later) is required to have a 64-bit
-           # processor. This is not true of the ARM version of Darwin
-           # that Apple uses in portable devices.
-           UNAME_PROCESSOR=x86_64
+           # uname -m returns i386 or x86_64
+           UNAME_PROCESSOR=$UNAME_MACHINE
        fi
-       echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+       ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
        UNAME_PROCESSOR=`uname -p`
        if test "$UNAME_PROCESSOR" = x86; then
                UNAME_PROCESSOR=i386
                UNAME_MACHINE=pc
        fi
-       echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+       ;;
     *:QNX:*:4*)
-       echo i386-pc-qnx
-       exit ;;
+       GUESS=i386-pc-qnx
+       ;;
     NEO-*:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
+       GUESS=neo-tandem-nsk$UNAME_RELEASE
+       ;;
     NSE-*:NONSTOP_KERNEL:*:*)
-       echo nse-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
+       GUESS=nse-tandem-nsk$UNAME_RELEASE
+       ;;
     NSR-*:NONSTOP_KERNEL:*:*)
-       echo nsr-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
+       GUESS=nsr-tandem-nsk$UNAME_RELEASE
+       ;;
     NSV-*:NONSTOP_KERNEL:*:*)
-       echo nsv-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
+       GUESS=nsv-tandem-nsk$UNAME_RELEASE
+       ;;
     NSX-*:NONSTOP_KERNEL:*:*)
-       echo nsx-tandem-nsk"$UNAME_RELEASE"
-       exit ;;
+       GUESS=nsx-tandem-nsk$UNAME_RELEASE
+       ;;
     *:NonStop-UX:*:*)
-       echo mips-compaq-nonstopux
-       exit ;;
+       GUESS=mips-compaq-nonstopux
+       ;;
     BS2000:POSIX*:*:*)
-       echo bs2000-siemens-sysv
-       exit ;;
+       GUESS=bs2000-siemens-sysv
+       ;;
     DS/*:UNIX_System_V:*:*)
-       echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-       exit ;;
+       GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+       ;;
     *:Plan9:*:*)
        # "uname -m" is not consistent, so use $cputype instead. 386
        # is converted to i386 for consistency with other x86
        # operating systems.
-       if test "$cputype" = 386; then
+       if test "${cputype-}" = 386; then
            UNAME_MACHINE=i386
-       else
-           UNAME_MACHINE="$cputype"
+       elif test "x${cputype-}" != x; then
+           UNAME_MACHINE=$cputype
        fi
-       echo "$UNAME_MACHINE"-unknown-plan9
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-plan9
+       ;;
     *:TOPS-10:*:*)
-       echo pdp10-unknown-tops10
-       exit ;;
+       GUESS=pdp10-unknown-tops10
+       ;;
     *:TENEX:*:*)
-       echo pdp10-unknown-tenex
-       exit ;;
+       GUESS=pdp10-unknown-tenex
+       ;;
     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-       echo pdp10-dec-tops20
-       exit ;;
+       GUESS=pdp10-dec-tops20
+       ;;
     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-       echo pdp10-xkl-tops20
-       exit ;;
+       GUESS=pdp10-xkl-tops20
+       ;;
     *:TOPS-20:*:*)
-       echo pdp10-unknown-tops20
-       exit ;;
+       GUESS=pdp10-unknown-tops20
+       ;;
     *:ITS:*:*)
-       echo pdp10-unknown-its
-       exit ;;
+       GUESS=pdp10-unknown-its
+       ;;
     SEI:*:*:SEIUX)
-       echo mips-sei-seiux"$UNAME_RELEASE"
-       exit ;;
+       GUESS=mips-sei-seiux$UNAME_RELEASE
+       ;;
     *:DragonFly:*:*)
-       echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-       exit ;;
+       DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+       GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+       ;;
     *:*VMS:*:*)
        UNAME_MACHINE=`(uname -p) 2>/dev/null`
-       case "$UNAME_MACHINE" in
-           A*) echo alpha-dec-vms ; exit ;;
-           I*) echo ia64-dec-vms ; exit ;;
-           V*) echo vax-dec-vms ; exit ;;
+       case $UNAME_MACHINE in
+           A*) GUESS=alpha-dec-vms ;;
+           I*) GUESS=ia64-dec-vms ;;
+           V*) GUESS=vax-dec-vms ;;
        esac ;;
     *:XENIX:*:SysV)
-       echo i386-pc-xenix
-       exit ;;
+       GUESS=i386-pc-xenix
+       ;;
     i*86:skyos:*:*)
-       echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
-       exit ;;
+       SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+       GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+       ;;
     i*86:rdos:*:*)
-       echo "$UNAME_MACHINE"-pc-rdos
-       exit ;;
-    i*86:AROS:*:*)
-       echo "$UNAME_MACHINE"-pc-aros
-       exit ;;
+       GUESS=$UNAME_MACHINE-pc-rdos
+       ;;
+    i*86:Fiwix:*:*)
+       GUESS=$UNAME_MACHINE-pc-fiwix
+       ;;
+    *:AROS:*:*)
+       GUESS=$UNAME_MACHINE-unknown-aros
+       ;;
     x86_64:VMkernel:*:*)
-       echo "$UNAME_MACHINE"-unknown-esx
-       exit ;;
+       GUESS=$UNAME_MACHINE-unknown-esx
+       ;;
     amd64:Isilon\ OneFS:*:*)
-       echo x86_64-unknown-onefs
-       exit ;;
+       GUESS=x86_64-unknown-onefs
+       ;;
+    *:Unleashed:*:*)
+       GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+       ;;
 esac
 
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+    echo "$GUESS"
+    exit
+fi
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+  "4"
+#else
+  ""
+#endif
+  ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+  struct utsname un;
+
+  uname(&un);
+  if (strncmp(un.version, "V2", 2) == 0) {
+    printf ("i386-sequent-ptx2\n"); exit (0);
+  }
+  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+    printf ("i386-sequent-ptx1\n"); exit (0);
+  }
+  printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+  printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+  printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+  printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+  printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+  struct utsname un;
+  uname (&un);
+  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+  printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+  struct utsname *un;
+  uname (&un);
+  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+  printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
+       { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
 echo "$0: unable to guess system type" >&2
 
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
     mips:Linux | mips64:Linux)
        # If we got here on MIPS GNU/Linux, output extra information.
        cat >&2 <<EOF
@@ -1439,9 +1704,17 @@ This script (version $timestamp), has failed to recognize the
 operating system you are using. If your script is old, overwrite *all*
 copies of config.guess and config.sub with the latest versions from:
 
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+   cat >&2 <<EOF
 
 If $0 has already been updated, send the following data and any
 information you think might be pertinent to config-patches@gnu.org to
@@ -1469,11 +1742,12 @@ UNAME_RELEASE = "$UNAME_RELEASE"
 UNAME_SYSTEM  = "$UNAME_SYSTEM"
 UNAME_VERSION = "$UNAME_VERSION"
 EOF
+fi
 
 exit 1
 
 # Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
index 1d8e98bcee23a0421e4fafe9a6c9ac75180cff25..dba16e84c77c7d25871d80c24deff717faf4c094 100755 (executable)
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2018 Free Software Foundation, Inc.
+#   Copyright 1992-2022 Free Software Foundation, Inc.
 
-timestamp='2018-02-22'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-03'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -33,7 +35,7 @@ timestamp='2018-02-22'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -50,6 +52,13 @@ timestamp='2018-02-22'
 #      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX.  However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
@@ -67,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2022 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -89,7 +98,7 @@ while test $# -gt 0 ; do
     - )        # Use stdin as input.
        break ;;
     -* )
-       echo "$me: invalid option $1$help"
+       echo "$me: invalid option $1$help" >&2
        exit 1 ;;
 
     *local*)
@@ -110,1223 +119,1186 @@ case $# in
     exit 1;;
 esac
 
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | cloudabi*-eabi* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
-    if [ "$basic_machine" != "$1" ]
-    then os=`echo "$1" | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
+# Split fields of configuration type
+# shellcheck disable=SC2162
+saved_IFS=$IFS
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
+IFS=$saved_IFS
 
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-       -sun*os*)
-               # Prevent following clause from handling this invalid input.
-               ;;
-       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze*)
-               os=
-               basic_machine=$1
-               ;;
-       -bluegene*)
-               os=-cnk
-               ;;
-       -sim | -cisco | -oki | -wec | -winbond)
-               os=
-               basic_machine=$1
-               ;;
-       -scout)
-               ;;
-       -wrs)
-               os=-vxworks
-               basic_machine=$1
-               ;;
-       -chorusos*)
-               os=-chorusos
-               basic_machine=$1
-               ;;
-       -chorusrdb)
-               os=-chorusrdb
-               basic_machine=$1
-               ;;
-       -hiux*)
-               os=-hiuxwe2
-               ;;
-       -sco6)
-               os=-sco5v6
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5)
-               os=-sco3.2v5
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco4)
-               os=-sco3.2v4
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco3.2v[4-9]*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -sco*)
-               os=-sco3.2v2
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -udk*)
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -isc)
-               os=-isc2.2
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -clix*)
-               basic_machine=clipper-intergraph
-               ;;
-       -isc*)
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
-               ;;
-       -lynx*178)
-               os=-lynxos178
-               ;;
-       -lynx*5)
-               os=-lynxos5
+# Separate into logical components for further validation
+case $1 in
+       *-*-*-*-*)
+               echo Invalid configuration \`"$1"\': more than four components >&2
+               exit 1
                ;;
-       -lynx*)
-               os=-lynxos
+       *-*-*-*)
+               basic_machine=$field1-$field2
+               basic_os=$field3-$field4
                ;;
-       -ptx*)
-               basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
+       *-*-*)
+               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+               # parts
+               maybe_os=$field2-$field3
+               case $maybe_os in
+                       nto-qnx* | linux-* | uclinux-uclibc* \
+                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                               basic_machine=$field1
+                               basic_os=$maybe_os
+                               ;;
+                       android-linux)
+                               basic_machine=$field1-unknown
+                               basic_os=linux-android
+                               ;;
+                       *)
+                               basic_machine=$field1-$field2
+                               basic_os=$field3
+                               ;;
+               esac
                ;;
-       -psos*)
-               os=-psos
+       *-*)
+               # A lone config we happen to match not fitting any pattern
+               case $field1-$field2 in
+                       decstation-3100)
+                               basic_machine=mips-dec
+                               basic_os=
+                               ;;
+                       *-*)
+                               # Second component is usually, but not always the OS
+                               case $field2 in
+                                       # Prevent following clause from handling this valid os
+                                       sun*os*)
+                                               basic_machine=$field1
+                                               basic_os=$field2
+                                               ;;
+                                       zephyr*)
+                                               basic_machine=$field1-unknown
+                                               basic_os=$field2
+                                               ;;
+                                       # Manufacturers
+                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
+                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+                                       | ultra | tti* | harris | dolphin | highlevel | gould \
+                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
+                                       | microblaze* | sim | cisco \
+                                       | oki | wec | wrs | winbond)
+                                               basic_machine=$field1-$field2
+                                               basic_os=
+                                               ;;
+                                       *)
+                                               basic_machine=$field1
+                                               basic_os=$field2
+                                               ;;
+                               esac
+                       ;;
+               esac
                ;;
-       -mint | -mint[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
+       *)
+               # Convert single-component short-hands not valid as part of
+               # multi-component configurations.
+               case $field1 in
+                       386bsd)
+                               basic_machine=i386-pc
+                               basic_os=bsd
+                               ;;
+                       a29khif)
+                               basic_machine=a29k-amd
+                               basic_os=udi
+                               ;;
+                       adobe68k)
+                               basic_machine=m68010-adobe
+                               basic_os=scout
+                               ;;
+                       alliant)
+                               basic_machine=fx80-alliant
+                               basic_os=
+                               ;;
+                       altos | altos3068)
+                               basic_machine=m68k-altos
+                               basic_os=
+                               ;;
+                       am29k)
+                               basic_machine=a29k-none
+                               basic_os=bsd
+                               ;;
+                       amdahl)
+                               basic_machine=580-amdahl
+                               basic_os=sysv
+                               ;;
+                       amiga)
+                               basic_machine=m68k-unknown
+                               basic_os=
+                               ;;
+                       amigaos | amigados)
+                               basic_machine=m68k-unknown
+                               basic_os=amigaos
+                               ;;
+                       amigaunix | amix)
+                               basic_machine=m68k-unknown
+                               basic_os=sysv4
+                               ;;
+                       apollo68)
+                               basic_machine=m68k-apollo
+                               basic_os=sysv
+                               ;;
+                       apollo68bsd)
+                               basic_machine=m68k-apollo
+                               basic_os=bsd
+                               ;;
+                       aros)
+                               basic_machine=i386-pc
+                               basic_os=aros
+                               ;;
+                       aux)
+                               basic_machine=m68k-apple
+                               basic_os=aux
+                               ;;
+                       balance)
+                               basic_machine=ns32k-sequent
+                               basic_os=dynix
+                               ;;
+                       blackfin)
+                               basic_machine=bfin-unknown
+                               basic_os=linux
+                               ;;
+                       cegcc)
+                               basic_machine=arm-unknown
+                               basic_os=cegcc
+                               ;;
+                       convex-c1)
+                               basic_machine=c1-convex
+                               basic_os=bsd
+                               ;;
+                       convex-c2)
+                               basic_machine=c2-convex
+                               basic_os=bsd
+                               ;;
+                       convex-c32)
+                               basic_machine=c32-convex
+                               basic_os=bsd
+                               ;;
+                       convex-c34)
+                               basic_machine=c34-convex
+                               basic_os=bsd
+                               ;;
+                       convex-c38)
+                               basic_machine=c38-convex
+                               basic_os=bsd
+                               ;;
+                       cray)
+                               basic_machine=j90-cray
+                               basic_os=unicos
+                               ;;
+                       crds | unos)
+                               basic_machine=m68k-crds
+                               basic_os=
+                               ;;
+                       da30)
+                               basic_machine=m68k-da30
+                               basic_os=
+                               ;;
+                       decstation | pmax | pmin | dec3100 | decstatn)
+                               basic_machine=mips-dec
+                               basic_os=
+                               ;;
+                       delta88)
+                               basic_machine=m88k-motorola
+                               basic_os=sysv3
+                               ;;
+                       dicos)
+                               basic_machine=i686-pc
+                               basic_os=dicos
+                               ;;
+                       djgpp)
+                               basic_machine=i586-pc
+                               basic_os=msdosdjgpp
+                               ;;
+                       ebmon29k)
+                               basic_machine=a29k-amd
+                               basic_os=ebmon
+                               ;;
+                       es1800 | OSE68k | ose68k | ose | OSE)
+                               basic_machine=m68k-ericsson
+                               basic_os=ose
+                               ;;
+                       gmicro)
+                               basic_machine=tron-gmicro
+                               basic_os=sysv
+                               ;;
+                       go32)
+                               basic_machine=i386-pc
+                               basic_os=go32
+                               ;;
+                       h8300hms)
+                               basic_machine=h8300-hitachi
+                               basic_os=hms
+                               ;;
+                       h8300xray)
+                               basic_machine=h8300-hitachi
+                               basic_os=xray
+                               ;;
+                       h8500hms)
+                               basic_machine=h8500-hitachi
+                               basic_os=hms
+                               ;;
+                       harris)
+                               basic_machine=m88k-harris
+                               basic_os=sysv3
+                               ;;
+                       hp300 | hp300hpux)
+                               basic_machine=m68k-hp
+                               basic_os=hpux
+                               ;;
+                       hp300bsd)
+                               basic_machine=m68k-hp
+                               basic_os=bsd
+                               ;;
+                       hppaosf)
+                               basic_machine=hppa1.1-hp
+                               basic_os=osf
+                               ;;
+                       hppro)
+                               basic_machine=hppa1.1-hp
+                               basic_os=proelf
+                               ;;
+                       i386mach)
+                               basic_machine=i386-mach
+                               basic_os=mach
+                               ;;
+                       isi68 | isi)
+                               basic_machine=m68k-isi
+                               basic_os=sysv
+                               ;;
+                       m68knommu)
+                               basic_machine=m68k-unknown
+                               basic_os=linux
+                               ;;
+                       magnum | m3230)
+                               basic_machine=mips-mips
+                               basic_os=sysv
+                               ;;
+                       merlin)
+                               basic_machine=ns32k-utek
+                               basic_os=sysv
+                               ;;
+                       mingw64)
+                               basic_machine=x86_64-pc
+                               basic_os=mingw64
+                               ;;
+                       mingw32)
+                               basic_machine=i686-pc
+                               basic_os=mingw32
+                               ;;
+                       mingw32ce)
+                               basic_machine=arm-unknown
+                               basic_os=mingw32ce
+                               ;;
+                       monitor)
+                               basic_machine=m68k-rom68k
+                               basic_os=coff
+                               ;;
+                       morphos)
+                               basic_machine=powerpc-unknown
+                               basic_os=morphos
+                               ;;
+                       moxiebox)
+                               basic_machine=moxie-unknown
+                               basic_os=moxiebox
+                               ;;
+                       msdos)
+                               basic_machine=i386-pc
+                               basic_os=msdos
+                               ;;
+                       msys)
+                               basic_machine=i686-pc
+                               basic_os=msys
+                               ;;
+                       mvs)
+                               basic_machine=i370-ibm
+                               basic_os=mvs
+                               ;;
+                       nacl)
+                               basic_machine=le32-unknown
+                               basic_os=nacl
+                               ;;
+                       ncr3000)
+                               basic_machine=i486-ncr
+                               basic_os=sysv4
+                               ;;
+                       netbsd386)
+                               basic_machine=i386-pc
+                               basic_os=netbsd
+                               ;;
+                       netwinder)
+                               basic_machine=armv4l-rebel
+                               basic_os=linux
+                               ;;
+                       news | news700 | news800 | news900)
+                               basic_machine=m68k-sony
+                               basic_os=newsos
+                               ;;
+                       news1000)
+                               basic_machine=m68030-sony
+                               basic_os=newsos
+                               ;;
+                       necv70)
+                               basic_machine=v70-nec
+                               basic_os=sysv
+                               ;;
+                       nh3000)
+                               basic_machine=m68k-harris
+                               basic_os=cxux
+                               ;;
+                       nh[45]000)
+                               basic_machine=m88k-harris
+                               basic_os=cxux
+                               ;;
+                       nindy960)
+                               basic_machine=i960-intel
+                               basic_os=nindy
+                               ;;
+                       mon960)
+                               basic_machine=i960-intel
+                               basic_os=mon960
+                               ;;
+                       nonstopux)
+                               basic_machine=mips-compaq
+                               basic_os=nonstopux
+                               ;;
+                       os400)
+                               basic_machine=powerpc-ibm
+                               basic_os=os400
+                               ;;
+                       OSE68000 | ose68000)
+                               basic_machine=m68000-ericsson
+                               basic_os=ose
+                               ;;
+                       os68k)
+                               basic_machine=m68k-none
+                               basic_os=os68k
+                               ;;
+                       paragon)
+                               basic_machine=i860-intel
+                               basic_os=osf
+                               ;;
+                       parisc)
+                               basic_machine=hppa-unknown
+                               basic_os=linux
+                               ;;
+                       psp)
+                               basic_machine=mipsallegrexel-sony
+                               basic_os=psp
+                               ;;
+                       pw32)
+                               basic_machine=i586-unknown
+                               basic_os=pw32
+                               ;;
+                       rdos | rdos64)
+                               basic_machine=x86_64-pc
+                               basic_os=rdos
+                               ;;
+                       rdos32)
+                               basic_machine=i386-pc
+                               basic_os=rdos
+                               ;;
+                       rom68k)
+                               basic_machine=m68k-rom68k
+                               basic_os=coff
+                               ;;
+                       sa29200)
+                               basic_machine=a29k-amd
+                               basic_os=udi
+                               ;;
+                       sei)
+                               basic_machine=mips-sei
+                               basic_os=seiux
+                               ;;
+                       sequent)
+                               basic_machine=i386-sequent
+                               basic_os=
+                               ;;
+                       sps7)
+                               basic_machine=m68k-bull
+                               basic_os=sysv2
+                               ;;
+                       st2000)
+                               basic_machine=m68k-tandem
+                               basic_os=
+                               ;;
+                       stratus)
+                               basic_machine=i860-stratus
+                               basic_os=sysv4
+                               ;;
+                       sun2)
+                               basic_machine=m68000-sun
+                               basic_os=
+                               ;;
+                       sun2os3)
+                               basic_machine=m68000-sun
+                               basic_os=sunos3
+                               ;;
+                       sun2os4)
+                               basic_machine=m68000-sun
+                               basic_os=sunos4
+                               ;;
+                       sun3)
+                               basic_machine=m68k-sun
+                               basic_os=
+                               ;;
+                       sun3os3)
+                               basic_machine=m68k-sun
+                               basic_os=sunos3
+                               ;;
+                       sun3os4)
+                               basic_machine=m68k-sun
+                               basic_os=sunos4
+                               ;;
+                       sun4)
+                               basic_machine=sparc-sun
+                               basic_os=
+                               ;;
+                       sun4os3)
+                               basic_machine=sparc-sun
+                               basic_os=sunos3
+                               ;;
+                       sun4os4)
+                               basic_machine=sparc-sun
+                               basic_os=sunos4
+                               ;;
+                       sun4sol2)
+                               basic_machine=sparc-sun
+                               basic_os=solaris2
+                               ;;
+                       sun386 | sun386i | roadrunner)
+                               basic_machine=i386-sun
+                               basic_os=
+                               ;;
+                       sv1)
+                               basic_machine=sv1-cray
+                               basic_os=unicos
+                               ;;
+                       symmetry)
+                               basic_machine=i386-sequent
+                               basic_os=dynix
+                               ;;
+                       t3e)
+                               basic_machine=alphaev5-cray
+                               basic_os=unicos
+                               ;;
+                       t90)
+                               basic_machine=t90-cray
+                               basic_os=unicos
+                               ;;
+                       toad1)
+                               basic_machine=pdp10-xkl
+                               basic_os=tops20
+                               ;;
+                       tpf)
+                               basic_machine=s390x-ibm
+                               basic_os=tpf
+                               ;;
+                       udi29k)
+                               basic_machine=a29k-amd
+                               basic_os=udi
+                               ;;
+                       ultra3)
+                               basic_machine=a29k-nyu
+                               basic_os=sym1
+                               ;;
+                       v810 | necv810)
+                               basic_machine=v810-nec
+                               basic_os=none
+                               ;;
+                       vaxv)
+                               basic_machine=vax-dec
+                               basic_os=sysv
+                               ;;
+                       vms)
+                               basic_machine=vax-dec
+                               basic_os=vms
+                               ;;
+                       vsta)
+                               basic_machine=i386-pc
+                               basic_os=vsta
+                               ;;
+                       vxworks960)
+                               basic_machine=i960-wrs
+                               basic_os=vxworks
+                               ;;
+                       vxworks68)
+                               basic_machine=m68k-wrs
+                               basic_os=vxworks
+                               ;;
+                       vxworks29k)
+                               basic_machine=a29k-wrs
+                               basic_os=vxworks
+                               ;;
+                       xbox)
+                               basic_machine=i686-pc
+                               basic_os=mingw32
+                               ;;
+                       ymp)
+                               basic_machine=ymp-cray
+                               basic_os=unicos
+                               ;;
+                       *)
+                               basic_machine=$1
+                               basic_os=
+                               ;;
+               esac
                ;;
 esac
 
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
 case $basic_machine in
-       # Recognize the basic CPU types without company name.
-       # Some are omitted here because they have special meanings below.
-       1750a | 580 \
-       | a29k \
-       | aarch64 | aarch64_be \
-       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-       | am33_2.0 \
-       | arc | arceb \
-       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-       | avr | avr32 \
-       | ba \
-       | be32 | be64 \
-       | bfin \
-       | c4x | c8051 | clipper \
-       | d10v | d30v | dlx | dsp16xx \
-       | e2k | epiphany \
-       | fido | fr30 | frv | ft32 \
-       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-       | hexagon \
-       | i370 | i860 | i960 | ia16 | ia64 \
-       | ip2k | iq2000 \
-       | k1om \
-       | le32 | le64 \
-       | lm32 \
-       | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-       | mips | mipsbe | mipseb | mipsel | mipsle \
-       | mips16 \
-       | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
-       | mips64vr | mips64vrel \
-       | mips64vr4100 | mips64vr4100el \
-       | mips64vr4300 | mips64vr4300el \
-       | mips64vr5000 | mips64vr5000el \
-       | mips64vr5900 | mips64vr5900el \
-       | mipsisa32 | mipsisa32el \
-       | mipsisa32r2 | mipsisa32r2el \
-       | mipsisa32r6 | mipsisa32r6el \
-       | mipsisa64 | mipsisa64el \
-       | mipsisa64r2 | mipsisa64r2el \
-       | mipsisa64r6 | mipsisa64r6el \
-       | mipsisa64sb1 | mipsisa64sb1el \
-       | mipsisa64sr71k | mipsisa64sr71kel \
-       | mipsr5900 | mipsr5900el \
-       | mipstx39 | mipstx39el \
-       | mn10200 | mn10300 \
-       | moxie \
-       | mt \
-       | msp430 \
-       | nds32 | nds32le | nds32be \
-       | nios | nios2 | nios2eb | nios2el \
-       | ns16k | ns32k \
-       | open8 | or1k | or1knd | or32 \
-       | pdp10 | pj | pjl \
-       | powerpc | powerpc64 | powerpc64le | powerpcle \
-       | pru \
-       | pyramid \
-       | riscv32 | riscv64 \
-       | rl78 | rx \
-       | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-       | sh64 | sh64le \
-       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-       | spu \
-       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
-       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-       | visium \
-       | wasm32 \
-       | x86 | xc16x | xstormy16 | xtensa \
-       | z8k | z80)
-               basic_machine=$basic_machine-unknown
-               ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       leon|leon[3-9])
-               basic_machine=sparc-$basic_machine
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-               basic_machine=$basic_machine-unknown
-               os=-none
+       # Here we handle the default manufacturer of certain CPU types.  It is in
+       # some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               cpu=hppa1.1
+               vendor=winbond
                ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
+       op50n)
+               cpu=hppa1.1
+               vendor=oki
                ;;
-       ms1)
-               basic_machine=mt-unknown
+       op60c)
+               cpu=hppa1.1
+               vendor=oki
                ;;
-
-       strongarm | thumb | xscale)
-               basic_machine=arm-unknown
+       ibm*)
+               cpu=i370
+               vendor=ibm
                ;;
-       xgate)
-               basic_machine=$basic_machine-unknown
-               os=-none
+       orion105)
+               cpu=clipper
+               vendor=highlevel
                ;;
-       xscaleeb)
-               basic_machine=armeb-unknown
+       mac | mpw | mac-mpw)
+               cpu=m68k
+               vendor=apple
                ;;
-
-       xscaleel)
-               basic_machine=armel-unknown
+       pmac | pmac-mpw)
+               cpu=powerpc
+               vendor=apple
                ;;
 
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-         basic_machine=$basic_machine-pc
-         ;;
-       # Object if more than one company name word.
-       *-*-*)
-               echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
-               exit 1
-               ;;
-       # Recognize the basic CPU types with company name.
-       580-* \
-       | a29k-* \
-       | aarch64-* | aarch64_be-* \
-       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-       | avr-* | avr32-* \
-       | ba-* \
-       | be32-* | be64-* \
-       | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | c8051-* | clipper-* | craynv-* | cydra-* \
-       | d10v-* | d30v-* | dlx-* \
-       | e2k-* | elxsi-* \
-       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-       | h8300-* | h8500-* \
-       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-       | hexagon-* \
-       | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
-       | ip2k-* | iq2000-* \
-       | k1om-* \
-       | le32-* | le64-* \
-       | lm32-* \
-       | m32c-* | m32r-* | m32rle-* \
-       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-       | microblaze-* | microblazeel-* \
-       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-       | mips16-* \
-       | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
-       | mips64vr-* | mips64vrel-* \
-       | mips64vr4100-* | mips64vr4100el-* \
-       | mips64vr4300-* | mips64vr4300el-* \
-       | mips64vr5000-* | mips64vr5000el-* \
-       | mips64vr5900-* | mips64vr5900el-* \
-       | mipsisa32-* | mipsisa32el-* \
-       | mipsisa32r2-* | mipsisa32r2el-* \
-       | mipsisa32r6-* | mipsisa32r6el-* \
-       | mipsisa64-* | mipsisa64el-* \
-       | mipsisa64r2-* | mipsisa64r2el-* \
-       | mipsisa64r6-* | mipsisa64r6el-* \
-       | mipsisa64sb1-* | mipsisa64sb1el-* \
-       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
-       | mipsr5900-* | mipsr5900el-* \
-       | mipstx39-* | mipstx39el-* \
-       | mmix-* \
-       | mt-* \
-       | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* | nios2eb-* | nios2el-* \
-       | none-* | np1-* | ns16k-* | ns32k-* \
-       | open8-* \
-       | or1k*-* \
-       | orion-* \
-       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-       | pru-* \
-       | pyramid-* \
-       | riscv32-* | riscv64-* \
-       | rl78-* | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-       | sparclite-* \
-       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
-       | tahoe-* \
-       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile*-* \
-       | tron-* \
-       | ubicom32-* \
-       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-       | vax-* \
-       | visium-* \
-       | wasm32-* \
-       | we32k-* \
-       | x86-* | x86_64-* | xc16x-* | xps100-* \
-       | xstormy16-* | xtensa*-* \
-       | ymp-* \
-       | z8k-* | z80-*)
-               ;;
-       # Recognize the basic CPU types without company name, with glob match.
-       xtensa*)
-               basic_machine=$basic_machine-unknown
-               ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
-       386bsd)
-               basic_machine=i386-pc
-               os=-bsd
-               ;;
        3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               basic_machine=m68000-att
+               cpu=m68000
+               vendor=att
                ;;
        3b*)
-               basic_machine=we32k-att
-               ;;
-       a29khif)
-               basic_machine=a29k-amd
-               os=-udi
-               ;;
-       abacus)
-               basic_machine=abacus-unknown
-               ;;
-       adobe68k)
-               basic_machine=m68010-adobe
-               os=-scout
-               ;;
-       alliant | fx80)
-               basic_machine=fx80-alliant
-               ;;
-       altos | altos3068)
-               basic_machine=m68k-altos
-               ;;
-       am29k)
-               basic_machine=a29k-none
-               os=-bsd
-               ;;
-       amd64)
-               basic_machine=x86_64-pc
-               ;;
-       amd64-*)
-               basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       amdahl)
-               basic_machine=580-amdahl
-               os=-sysv
-               ;;
-       amiga | amiga-*)
-               basic_machine=m68k-unknown
-               ;;
-       amigaos | amigados)
-               basic_machine=m68k-unknown
-               os=-amigaos
-               ;;
-       amigaunix | amix)
-               basic_machine=m68k-unknown
-               os=-sysv4
-               ;;
-       apollo68)
-               basic_machine=m68k-apollo
-               os=-sysv
-               ;;
-       apollo68bsd)
-               basic_machine=m68k-apollo
-               os=-bsd
-               ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
-       asmjs)
-               basic_machine=asmjs-unknown
-               ;;
-       aux)
-               basic_machine=m68k-apple
-               os=-aux
-               ;;
-       balance)
-               basic_machine=ns32k-sequent
-               os=-dynix
-               ;;
-       blackfin)
-               basic_machine=bfin-unknown
-               os=-linux
-               ;;
-       blackfin-*)
-               basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=-linux
+               cpu=we32k
+               vendor=att
                ;;
        bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       c90)
-               basic_machine=c90-cray
-               os=-unicos
-               ;;
-       cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
-       convex-c1)
-               basic_machine=c1-convex
-               os=-bsd
-               ;;
-       convex-c2)
-               basic_machine=c2-convex
-               os=-bsd
-               ;;
-       convex-c32)
-               basic_machine=c32-convex
-               os=-bsd
-               ;;
-       convex-c34)
-               basic_machine=c34-convex
-               os=-bsd
-               ;;
-       convex-c38)
-               basic_machine=c38-convex
-               os=-bsd
-               ;;
-       cray | j90)
-               basic_machine=j90-cray
-               os=-unicos
-               ;;
-       craynv)
-               basic_machine=craynv-cray
-               os=-unicosmp
-               ;;
-       cr16 | cr16-*)
-               basic_machine=cr16-unknown
-               os=-elf
-               ;;
-       crds | unos)
-               basic_machine=m68k-crds
-               ;;
-       crisv32 | crisv32-* | etraxfs*)
-               basic_machine=crisv32-axis
-               ;;
-       cris | cris-* | etrax*)
-               basic_machine=cris-axis
-               ;;
-       crx)
-               basic_machine=crx-unknown
-               os=-elf
-               ;;
-       da30 | da30-*)
-               basic_machine=m68k-da30
-               ;;
-       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-               basic_machine=mips-dec
+               cpu=powerpc
+               vendor=ibm
+               basic_os=cnk
                ;;
        decsystem10* | dec10*)
-               basic_machine=pdp10-dec
-               os=-tops10
+               cpu=pdp10
+               vendor=dec
+               basic_os=tops10
                ;;
        decsystem20* | dec20*)
-               basic_machine=pdp10-dec
-               os=-tops20
+               cpu=pdp10
+               vendor=dec
+               basic_os=tops20
                ;;
        delta | 3300 | motorola-3300 | motorola-delta \
              | 3300-motorola | delta-motorola)
-               basic_machine=m68k-motorola
-               ;;
-       delta88)
-               basic_machine=m88k-motorola
-               os=-sysv3
-               ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
-       djgpp)
-               basic_machine=i586-pc
-               os=-msdosdjgpp
-               ;;
-       dpx20 | dpx20-*)
-               basic_machine=rs6000-bull
-               os=-bosx
+               cpu=m68k
+               vendor=motorola
                ;;
        dpx2*)
-               basic_machine=m68k-bull
-               os=-sysv3
-               ;;
-       e500v[12])
-               basic_machine=powerpc-unknown
-               os=$os"spe"
-               ;;
-       e500v[12]-*)
-               basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=$os"spe"
-               ;;
-       ebmon29k)
-               basic_machine=a29k-amd
-               os=-ebmon
-               ;;
-       elxsi)
-               basic_machine=elxsi-elxsi
-               os=-bsd
+               cpu=m68k
+               vendor=bull
+               basic_os=sysv3
                ;;
        encore | umax | mmax)
-               basic_machine=ns32k-encore
+               cpu=ns32k
+               vendor=encore
                ;;
-       es1800 | OSE68k | ose68k | ose | OSE)
-               basic_machine=m68k-ericsson
-               os=-ose
+       elxsi)
+               cpu=elxsi
+               vendor=elxsi
+               basic_os=${basic_os:-bsd}
                ;;
        fx2800)
-               basic_machine=i860-alliant
+               cpu=i860
+               vendor=alliant
                ;;
        genix)
-               basic_machine=ns32k-ns
-               ;;
-       gmicro)
-               basic_machine=tron-gmicro
-               os=-sysv
-               ;;
-       go32)
-               basic_machine=i386-pc
-               os=-go32
+               cpu=ns32k
+               vendor=ns
                ;;
        h3050r* | hiux*)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       h8300hms)
-               basic_machine=h8300-hitachi
-               os=-hms
-               ;;
-       h8300xray)
-               basic_machine=h8300-hitachi
-               os=-xray
-               ;;
-       h8500hms)
-               basic_machine=h8500-hitachi
-               os=-hms
-               ;;
-       harris)
-               basic_machine=m88k-harris
-               os=-sysv3
-               ;;
-       hp300-*)
-               basic_machine=m68k-hp
-               ;;
-       hp300bsd)
-               basic_machine=m68k-hp
-               os=-bsd
-               ;;
-       hp300hpux)
-               basic_machine=m68k-hp
-               os=-hpux
+               cpu=hppa1.1
+               vendor=hitachi
+               basic_os=hiuxwe2
                ;;
        hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               basic_machine=hppa1.0-hp
+               cpu=hppa1.0
+               vendor=hp
                ;;
        hp9k2[0-9][0-9] | hp9k31[0-9])
-               basic_machine=m68000-hp
+               cpu=m68000
+               vendor=hp
                ;;
        hp9k3[2-9][0-9])
-               basic_machine=m68k-hp
+               cpu=m68k
+               vendor=hp
                ;;
        hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               basic_machine=hppa1.0-hp
+               cpu=hppa1.0
+               vendor=hp
                ;;
        hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k78[0-9] | hp78[0-9])
                # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
                # FIXME: really hppa2.0-hp
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k8[0-9][13679] | hp8[0-9][13679])
-               basic_machine=hppa1.1-hp
+               cpu=hppa1.1
+               vendor=hp
                ;;
        hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               basic_machine=hppa1.0-hp
-               ;;
-       hppaosf)
-               basic_machine=hppa1.1-hp
-               os=-osf
-               ;;
-       hppro)
-               basic_machine=hppa1.1-hp
-               os=-proelf
-               ;;
-       i370-ibm* | ibm*)
-               basic_machine=i370-ibm
+               cpu=hppa1.0
+               vendor=hp
                ;;
        i*86v32)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=-sysv32
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               basic_os=sysv32
                ;;
        i*86v4*)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=-sysv4
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               basic_os=sysv4
                ;;
        i*86v)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=-sysv
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               basic_os=sysv
                ;;
        i*86sol2)
-               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
-               os=-solaris2
-               ;;
-       i386mach)
-               basic_machine=i386-mach
-               os=-mach
+               cpu=`echo "$1" | sed -e 's/86.*/86/'`
+               vendor=pc
+               basic_os=solaris2
                ;;
-       vsta)
-               basic_machine=i386-unknown
-               os=-vsta
+       j90 | j90-cray)
+               cpu=j90
+               vendor=cray
+               basic_os=${basic_os:-unicos}
                ;;
        iris | iris4d)
-               basic_machine=mips-sgi
-               case $os in
-                   -irix*)
+               cpu=mips
+               vendor=sgi
+               case $basic_os in
+                   irix*)
                        ;;
                    *)
-                       os=-irix4
+                       basic_os=irix4
                        ;;
                esac
                ;;
-       isi68 | isi)
-               basic_machine=m68k-isi
-               os=-sysv
-               ;;
-       leon-*|leon[3-9]-*)
-               basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
-               ;;
-       m68knommu)
-               basic_machine=m68k-unknown
-               os=-linux
-               ;;
-       m68knommu-*)
-               basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=-linux
-               ;;
-       magnum | m3230)
-               basic_machine=mips-mips
-               os=-sysv
-               ;;
-       merlin)
-               basic_machine=ns32k-utek
-               os=-sysv
-               ;;
-       microblaze*)
-               basic_machine=microblaze-xilinx
-               ;;
-       mingw64)
-               basic_machine=x86_64-pc
-               os=-mingw64
-               ;;
-       mingw32)
-               basic_machine=i686-pc
-               os=-mingw32
-               ;;
-       mingw32ce)
-               basic_machine=arm-unknown
-               os=-mingw32ce
-               ;;
        miniframe)
-               basic_machine=m68000-convergent
-               ;;
-       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               basic_machine=m68k-atari
-               os=-mint
-               ;;
-       mips3*-*)
-               basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
-               ;;
-       mips3*)
-               basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
-               ;;
-       monitor)
-               basic_machine=m68k-rom68k
-               os=-coff
-               ;;
-       morphos)
-               basic_machine=powerpc-unknown
-               os=-morphos
-               ;;
-       moxiebox)
-               basic_machine=moxie-unknown
-               os=-moxiebox
+               cpu=m68000
+               vendor=convergent
                ;;
-       msdos)
-               basic_machine=i386-pc
-               os=-msdos
-               ;;
-       ms1-*)
-               basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
-               ;;
-       msys)
-               basic_machine=i686-pc
-               os=-msys
-               ;;
-       mvs)
-               basic_machine=i370-ibm
-               os=-mvs
-               ;;
-       nacl)
-               basic_machine=le32-unknown
-               os=-nacl
-               ;;
-       ncr3000)
-               basic_machine=i486-ncr
-               os=-sysv4
-               ;;
-       netbsd386)
-               basic_machine=i386-unknown
-               os=-netbsd
-               ;;
-       netwinder)
-               basic_machine=armv4l-rebel
-               os=-linux
-               ;;
-       news | news700 | news800 | news900)
-               basic_machine=m68k-sony
-               os=-newsos
-               ;;
-       news1000)
-               basic_machine=m68030-sony
-               os=-newsos
+       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               cpu=m68k
+               vendor=atari
+               basic_os=mint
                ;;
        news-3600 | risc-news)
-               basic_machine=mips-sony
-               os=-newsos
-               ;;
-       necv70)
-               basic_machine=v70-nec
-               os=-sysv
+               cpu=mips
+               vendor=sony
+               basic_os=newsos
                ;;
        next | m*-next)
-               basic_machine=m68k-next
-               case $os in
-                   -nextstep* )
+               cpu=m68k
+               vendor=next
+               case $basic_os in
+                   openstep*)
+                       ;;
+                   nextstep*)
                        ;;
-                   -ns2*)
-                     os=-nextstep2
+                   ns2*)
+                     basic_os=nextstep2
                        ;;
                    *)
-                     os=-nextstep3
+                     basic_os=nextstep3
                        ;;
                esac
                ;;
-       nh3000)
-               basic_machine=m68k-harris
-               os=-cxux
-               ;;
-       nh[45]000)
-               basic_machine=m88k-harris
-               os=-cxux
-               ;;
-       nindy960)
-               basic_machine=i960-intel
-               os=-nindy
-               ;;
-       mon960)
-               basic_machine=i960-intel
-               os=-mon960
-               ;;
-       nonstopux)
-               basic_machine=mips-compaq
-               os=-nonstopux
-               ;;
        np1)
-               basic_machine=np1-gould
-               ;;
-       neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-       nse-tandem)
-               basic_machine=nse-tandem
-               ;;
-       nsr-tandem)
-               basic_machine=nsr-tandem
-               ;;
-       nsv-tandem)
-               basic_machine=nsv-tandem
-               ;;
-       nsx-tandem)
-               basic_machine=nsx-tandem
+               cpu=np1
+               vendor=gould
                ;;
        op50n-* | op60c-*)
-               basic_machine=hppa1.1-oki
-               os=-proelf
-               ;;
-       openrisc | openrisc-*)
-               basic_machine=or32-unknown
-               ;;
-       os400)
-               basic_machine=powerpc-ibm
-               os=-os400
-               ;;
-       OSE68000 | ose68000)
-               basic_machine=m68000-ericsson
-               os=-ose
-               ;;
-       os68k)
-               basic_machine=m68k-none
-               os=-os68k
+               cpu=hppa1.1
+               vendor=oki
+               basic_os=proelf
                ;;
        pa-hitachi)
-               basic_machine=hppa1.1-hitachi
-               os=-hiuxwe2
-               ;;
-       paragon)
-               basic_machine=i860-intel
-               os=-osf
-               ;;
-       parisc)
-               basic_machine=hppa-unknown
-               os=-linux
-               ;;
-       parisc-*)
-               basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               os=-linux
+               cpu=hppa1.1
+               vendor=hitachi
+               basic_os=hiuxwe2
                ;;
        pbd)
-               basic_machine=sparc-tti
+               cpu=sparc
+               vendor=tti
                ;;
        pbb)
-               basic_machine=m68k-tti
-               ;;
-       pc532 | pc532-*)
-               basic_machine=ns32k-pc532
-               ;;
-       pc98)
-               basic_machine=i386-pc
+               cpu=m68k
+               vendor=tti
                ;;
-       pc98-*)
-               basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentium | p5 | k5 | k6 | nexgen | viac3)
-               basic_machine=i586-pc
-               ;;
-       pentiumpro | p6 | 6x86 | athlon | athlon_*)
-               basic_machine=i686-pc
-               ;;
-       pentiumii | pentium2 | pentiumiii | pentium3)
-               basic_machine=i686-pc
-               ;;
-       pentium4)
-               basic_machine=i786-pc
-               ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-*)
-               basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       pentium4-*)
-               basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+       pc532)
+               cpu=ns32k
+               vendor=pc532
                ;;
        pn)
-               basic_machine=pn-gould
-               ;;
-       power)  basic_machine=power-ibm
-               ;;
-       ppc | ppcbe)    basic_machine=powerpc-unknown
+               cpu=pn
+               vendor=gould
                ;;
-       ppc-* | ppcbe-*)
-               basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
-               ;;
-       ppcle | powerpclittle)
-               basic_machine=powerpcle-unknown
+       power)
+               cpu=power
+               vendor=ibm
                ;;
-       ppcle-* | powerpclittle-*)
-               basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+       ps2)
+               cpu=i386
+               vendor=ibm
                ;;
-       ppc64)  basic_machine=powerpc64-unknown
+       rm[46]00)
+               cpu=mips
+               vendor=siemens
                ;;
-       ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+       rtpc | rtpc-*)
+               cpu=romp
+               vendor=ibm
                ;;
-       ppc64le | powerpc64little)
-               basic_machine=powerpc64le-unknown
+       sde)
+               cpu=mipsisa32
+               vendor=sde
+               basic_os=${basic_os:-elf}
                ;;
-       ppc64le-* | powerpc64little-*)
-               basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+       simso-wrs)
+               cpu=sparclite
+               vendor=wrs
+               basic_os=vxworks
                ;;
-       ps2)
-               basic_machine=i386-ibm
+       tower | tower-32)
+               cpu=m68k
+               vendor=ncr
                ;;
-       pw32)
-               basic_machine=i586-unknown
-               os=-pw32
+       vpp*|vx|vx-*)
+               cpu=f301
+               vendor=fujitsu
                ;;
-       rdos | rdos64)
-               basic_machine=x86_64-pc
-               os=-rdos
+       w65)
+               cpu=w65
+               vendor=wdc
                ;;
-       rdos32)
-               basic_machine=i386-pc
-               os=-rdos
+       w89k-*)
+               cpu=hppa1.1
+               vendor=winbond
+               basic_os=proelf
                ;;
-       rom68k)
-               basic_machine=m68k-rom68k
-               os=-coff
+       none)
+               cpu=none
+               vendor=none
                ;;
-       rm[46]00)
-               basic_machine=mips-siemens
+       leon|leon[3-9])
+               cpu=sparc
+               vendor=$basic_machine
                ;;
-       rtpc | rtpc-*)
-               basic_machine=romp-ibm
+       leon-*|leon[3-9]-*)
+               cpu=sparc
+               vendor=`echo "$basic_machine" | sed 's/-.*//'`
                ;;
-       s390 | s390-*)
-               basic_machine=s390-ibm
+
+       *-*)
+               # shellcheck disable=SC2162
+               saved_IFS=$IFS
+               IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
+               IFS=$saved_IFS
                ;;
-       s390x | s390x-*)
-               basic_machine=s390x-ibm
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+               cpu=$basic_machine
+               vendor=pc
                ;;
-       sa29200)
-               basic_machine=a29k-amd
-               os=-udi
+       # These rules are duplicated from below for sake of the special case above;
+       # i.e. things that normalized to x86 arches should also default to "pc"
+       pc98)
+               cpu=i386
+               vendor=pc
                ;;
-       sb1)
-               basic_machine=mipsisa64sb1-unknown
+       x64 | amd64)
+               cpu=x86_64
+               vendor=pc
                ;;
-       sb1el)
-               basic_machine=mipsisa64sb1el-unknown
+       # Recognize the basic CPU types without company name.
+       *)
+               cpu=$basic_machine
+               vendor=unknown
                ;;
-       sde)
-               basic_machine=mipsisa32-sde
-               os=-elf
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+       # some cases the only manufacturer, in others, it is the most popular.
+       craynv-unknown)
+               vendor=cray
+               basic_os=${basic_os:-unicosmp}
                ;;
-       sei)
-               basic_machine=mips-sei
-               os=-seiux
+       c90-unknown | c90-cray)
+               vendor=cray
+               basic_os=${Basic_os:-unicos}
                ;;
-       sequent)
-               basic_machine=i386-sequent
+       fx80-unknown)
+               vendor=alliant
                ;;
-       sh5el)
-               basic_machine=sh5le-unknown
+       romp-unknown)
+               vendor=ibm
                ;;
-       simso-wrs)
-               basic_machine=sparclite-wrs
-               os=-vxworks
+       mmix-unknown)
+               vendor=knuth
                ;;
-       sps7)
-               basic_machine=m68k-bull
-               os=-sysv2
+       microblaze-unknown | microblazeel-unknown)
+               vendor=xilinx
                ;;
-       spur)
-               basic_machine=spur-unknown
+       rs6000-unknown)
+               vendor=ibm
                ;;
-       st2000)
-               basic_machine=m68k-tandem
+       vax-unknown)
+               vendor=dec
                ;;
-       stratus)
-               basic_machine=i860-stratus
-               os=-sysv4
+       pdp11-unknown)
+               vendor=dec
                ;;
-       strongarm-* | thumb-*)
-               basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+       we32k-unknown)
+               vendor=att
                ;;
-       sun2)
-               basic_machine=m68000-sun
+       cydra-unknown)
+               vendor=cydrome
                ;;
-       sun2os3)
-               basic_machine=m68000-sun
-               os=-sunos3
+       i370-ibm*)
+               vendor=ibm
                ;;
-       sun2os4)
-               basic_machine=m68000-sun
-               os=-sunos4
+       orion-unknown)
+               vendor=highlevel
                ;;
-       sun3os3)
-               basic_machine=m68k-sun
-               os=-sunos3
+       xps-unknown | xps100-unknown)
+               cpu=xps100
+               vendor=honeywell
                ;;
-       sun3os4)
-               basic_machine=m68k-sun
-               os=-sunos4
+
+       # Here we normalize CPU types with a missing or matching vendor
+       armh-unknown | armh-alt)
+               cpu=armv7l
+               vendor=alt
+               basic_os=${basic_os:-linux-gnueabihf}
                ;;
-       sun4os3)
-               basic_machine=sparc-sun
-               os=-sunos3
+       dpx20-unknown | dpx20-bull)
+               cpu=rs6000
+               vendor=bull
+               basic_os=${basic_os:-bosx}
                ;;
-       sun4os4)
-               basic_machine=sparc-sun
-               os=-sunos4
+
+       # Here we normalize CPU types irrespective of the vendor
+       amd64-*)
+               cpu=x86_64
                ;;
-       sun4sol2)
-               basic_machine=sparc-sun
-               os=-solaris2
+       blackfin-*)
+               cpu=bfin
+               basic_os=linux
                ;;
-       sun3 | sun3-*)
-               basic_machine=m68k-sun
+       c54x-*)
+               cpu=tic54x
                ;;
-       sun4)
-               basic_machine=sparc-sun
+       c55x-*)
+               cpu=tic55x
                ;;
-       sun386 | sun386i | roadrunner)
-               basic_machine=i386-sun
+       c6x-*)
+               cpu=tic6x
                ;;
-       sv1)
-               basic_machine=sv1-cray
-               os=-unicos
+       e500v[12]-*)
+               cpu=powerpc
+               basic_os=${basic_os}"spe"
                ;;
-       symmetry)
-               basic_machine=i386-sequent
-               os=-dynix
+       mips3*-*)
+               cpu=mips64
                ;;
-       t3e)
-               basic_machine=alphaev5-cray
-               os=-unicos
+       ms1-*)
+               cpu=mt
                ;;
-       t90)
-               basic_machine=t90-cray
-               os=-unicos
+       m68knommu-*)
+               cpu=m68k
+               basic_os=linux
                ;;
-       tile*)
-               basic_machine=$basic_machine-unknown
-               os=-linux-gnu
+       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+               cpu=s12z
                ;;
-       tx39)
-               basic_machine=mipstx39-unknown
+       openrisc-*)
+               cpu=or32
                ;;
-       tx39el)
-               basic_machine=mipstx39el-unknown
+       parisc-*)
+               cpu=hppa
+               basic_os=linux
                ;;
-       toad1)
-               basic_machine=pdp10-xkl
-               os=-tops20
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               cpu=i586
                ;;
-       tower | tower-32)
-               basic_machine=m68k-ncr
+       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+               cpu=i686
                ;;
-       tpf)
-               basic_machine=s390x-ibm
-               os=-tpf
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               cpu=i686
                ;;
-       udi29k)
-               basic_machine=a29k-amd
-               os=-udi
+       pentium4-*)
+               cpu=i786
                ;;
-       ultra3)
-               basic_machine=a29k-nyu
-               os=-sym1
+       pc98-*)
+               cpu=i386
                ;;
-       v810 | necv810)
-               basic_machine=v810-nec
-               os=-none
+       ppc-* | ppcbe-*)
+               cpu=powerpc
                ;;
-       vaxv)
-               basic_machine=vax-dec
-               os=-sysv
+       ppcle-* | powerpclittle-*)
+               cpu=powerpcle
                ;;
-       vms)
-               basic_machine=vax-dec
-               os=-vms
+       ppc64-*)
+               cpu=powerpc64
                ;;
-       vpp*|vx|vx-*)
-               basic_machine=f301-fujitsu
+       ppc64le-* | powerpc64little-*)
+               cpu=powerpc64le
                ;;
-       vxworks960)
-               basic_machine=i960-wrs
-               os=-vxworks
+       sb1-*)
+               cpu=mipsisa64sb1
                ;;
-       vxworks68)
-               basic_machine=m68k-wrs
-               os=-vxworks
+       sb1el-*)
+               cpu=mipsisa64sb1el
                ;;
-       vxworks29k)
-               basic_machine=a29k-wrs
-               os=-vxworks
+       sh5e[lb]-*)
+               cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
                ;;
-       w65*)
-               basic_machine=w65-wdc
-               os=-none
+       spur-*)
+               cpu=spur
                ;;
-       w89k-*)
-               basic_machine=hppa1.1-winbond
-               os=-proelf
+       strongarm-* | thumb-*)
+               cpu=arm
                ;;
-       x64)
-               basic_machine=x86_64-pc
+       tx39-*)
+               cpu=mipstx39
                ;;
-       xbox)
-               basic_machine=i686-pc
-               os=-mingw32
+       tx39el-*)
+               cpu=mipstx39el
                ;;
-       xps | xps100)
-               basic_machine=xps100-honeywell
+       x64-*)
+               cpu=x86_64
                ;;
        xscale-* | xscalee[bl]-*)
-               basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
-               ;;
-       ymp)
-               basic_machine=ymp-cray
-               os=-unicos
+               cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
                ;;
-       none)
-               basic_machine=none-none
-               os=-none
+       arm64-* | aarch64le-*)
+               cpu=aarch64
                ;;
 
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               basic_machine=hppa1.1-winbond
-               ;;
-       op50n)
-               basic_machine=hppa1.1-oki
-               ;;
-       op60c)
-               basic_machine=hppa1.1-oki
-               ;;
-       romp)
-               basic_machine=romp-ibm
-               ;;
-       mmix)
-               basic_machine=mmix-knuth
+       # Recognize the canonical CPU Types that limit and/or modify the
+       # company names they are paired with.
+       cr16-*)
+               basic_os=${basic_os:-elf}
                ;;
-       rs6000)
-               basic_machine=rs6000-ibm
+       crisv32-* | etraxfs*-*)
+               cpu=crisv32
+               vendor=axis
                ;;
-       vax)
-               basic_machine=vax-dec
+       cris-* | etrax*-*)
+               cpu=cris
+               vendor=axis
                ;;
-       pdp11)
-               basic_machine=pdp11-dec
+       crx-*)
+               basic_os=${basic_os:-elf}
                ;;
-       we32k)
-               basic_machine=we32k-att
+       neo-tandem)
+               cpu=neo
+               vendor=tandem
                ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-               basic_machine=sh-unknown
+       nse-tandem)
+               cpu=nse
+               vendor=tandem
                ;;
-       cydra)
-               basic_machine=cydra-cydrome
+       nsr-tandem)
+               cpu=nsr
+               vendor=tandem
                ;;
-       orion)
-               basic_machine=orion-highlevel
+       nsv-tandem)
+               cpu=nsv
+               vendor=tandem
                ;;
-       orion105)
-               basic_machine=clipper-highlevel
+       nsx-tandem)
+               cpu=nsx
+               vendor=tandem
                ;;
-       mac | mpw | mac-mpw)
-               basic_machine=m68k-apple
+       mipsallegrexel-sony)
+               cpu=mipsallegrexel
+               vendor=sony
                ;;
-       pmac | pmac-mpw)
-               basic_machine=powerpc-apple
-               ;;
-       *-unknown)
-               # Make sure to match an already-canonicalized machine name.
+       tile*-*)
+               basic_os=${basic_os:-linux-gnu}
                ;;
+
        *)
-               echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
-               exit 1
+               # Recognize the canonical CPU types that are allowed with any
+               # company name.
+               case $cpu in
+                       1750a | 580 \
+                       | a29k \
+                       | aarch64 | aarch64_be \
+                       | abacus \
+                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+                       | alphapca5[67] | alpha64pca5[67] \
+                       | am33_2.0 \
+                       | amdgcn \
+                       | arc | arceb | arc32 | arc64 \
+                       | arm | arm[lb]e | arme[lb] | armv* \
+                       | avr | avr32 \
+                       | asmjs \
+                       | ba \
+                       | be32 | be64 \
+                       | bfin | bpf | bs2000 \
+                       | c[123]* | c30 | [cjt]90 | c4x \
+                       | c8051 | clipper | craynv | csky | cydra \
+                       | d10v | d30v | dlx | dsp16xx \
+                       | e2k | elxsi | epiphany \
+                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+                       | h8300 | h8500 \
+                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+                       | hexagon \
+                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+                       | ip2k | iq2000 \
+                       | k1om \
+                       | le32 | le64 \
+                       | lm32 \
+                       | loongarch32 | loongarch64 | loongarchx32 \
+                       | m32c | m32r | m32rle \
+                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
+                       | microblaze | microblazeel \
+                       | mips | mipsbe | mipseb | mipsel | mipsle \
+                       | mips16 \
+                       | mips64 | mips64eb | mips64el \
+                       | mips64octeon | mips64octeonel \
+                       | mips64orion | mips64orionel \
+                       | mips64r5900 | mips64r5900el \
+                       | mips64vr | mips64vrel \
+                       | mips64vr4100 | mips64vr4100el \
+                       | mips64vr4300 | mips64vr4300el \
+                       | mips64vr5000 | mips64vr5000el \
+                       | mips64vr5900 | mips64vr5900el \
+                       | mipsisa32 | mipsisa32el \
+                       | mipsisa32r2 | mipsisa32r2el \
+                       | mipsisa32r3 | mipsisa32r3el \
+                       | mipsisa32r5 | mipsisa32r5el \
+                       | mipsisa32r6 | mipsisa32r6el \
+                       | mipsisa64 | mipsisa64el \
+                       | mipsisa64r2 | mipsisa64r2el \
+                       | mipsisa64r3 | mipsisa64r3el \
+                       | mipsisa64r5 | mipsisa64r5el \
+                       | mipsisa64r6 | mipsisa64r6el \
+                       | mipsisa64sb1 | mipsisa64sb1el \
+                       | mipsisa64sr71k | mipsisa64sr71kel \
+                       | mipsr5900 | mipsr5900el \
+                       | mipstx39 | mipstx39el \
+                       | mmix \
+                       | mn10200 | mn10300 \
+                       | moxie \
+                       | mt \
+                       | msp430 \
+                       | nds32 | nds32le | nds32be \
+                       | nfp \
+                       | nios | nios2 | nios2eb | nios2el \
+                       | none | np1 | ns16k | ns32k | nvptx \
+                       | open8 \
+                       | or1k* \
+                       | or32 \
+                       | orion \
+                       | picochip \
+                       | pdp10 | pdp11 | pj | pjl | pn | power \
+                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+                       | pru \
+                       | pyramid \
+                       | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
+                       | rl78 | romp | rs6000 | rx \
+                       | s390 | s390x \
+                       | score \
+                       | sh | shl \
+                       | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+                       | sparclite \
+                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+                       | spu \
+                       | tahoe \
+                       | thumbv7* \
+                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+                       | tron \
+                       | ubicom32 \
+                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+                       | vax \
+                       | visium \
+                       | w65 \
+                       | wasm32 | wasm64 \
+                       | we32k \
+                       | x86 | x86_64 | xc16x | xgate | xps100 \
+                       | xstormy16 | xtensa* \
+                       | ymp \
+                       | z8k | z80)
+                               ;;
+
+                       *)
+                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+                               exit 1
+                               ;;
+               esac
                ;;
 esac
 
 # Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-       *-digital*)
-               basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
+case $vendor in
+       digital*)
+               vendor=dec
                ;;
-       *-commodore*)
-               basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
+       commodore*)
+               vendor=cbm
                ;;
        *)
                ;;
@@ -1334,203 +1306,215 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if [ x"$os" != x"" ]
+if test x$basic_os != x
 then
+
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+       gnu/linux*)
+               kernel=linux
+               os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+               ;;
+       os2-emx)
+               kernel=os2
+               os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
+               ;;
+       nto-qnx*)
+               kernel=nto
+               os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
+               ;;
+       *-*)
+               # shellcheck disable=SC2162
+               saved_IFS=$IFS
+               IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+               IFS=$saved_IFS
+               ;;
+       # Default OS when just kernel was specified
+       nto*)
+               kernel=nto
+               os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
+               ;;
+       linux*)
+               kernel=linux
+               os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+               ;;
+       *)
+               kernel=
+               os=$basic_os
+               ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
 case $os in
        # First match some system type aliases that might get confused
        # with valid system types.
-       # -solaris* is a basic system type, with this one exception.
-       -auroraux)
-               os=-auroraux
+       # solaris* is a basic system type, with this one exception.
+       auroraux)
+               os=auroraux
                ;;
-       -solaris1 | -solaris1.*)
-               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+       bluegene*)
+               os=cnk
                ;;
-       -solaris)
-               os=-solaris2
+       solaris1 | solaris1.*)
+               os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
                ;;
-       -unixware*)
-               os=-sysv4.2uw
+       solaris)
+               os=solaris2
                ;;
-       -gnu/linux*)
-               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+       unixware*)
+               os=sysv4.2uw
                ;;
        # es1800 is here to avoid being matched by es* (a different OS)
-       -es1800*)
-               os=-ose
+       es1800*)
+               os=ose
                ;;
-       # Now accept the basic system types.
-       # The portable systems comes first.
-       # Each alternative MUST end in a * to match a version number.
-       # -sysv* is not here because it comes later, after sysvr4.
-       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* | -plan9* \
-             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* | -cloudabi* | -sortix* \
-             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-             | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
-             | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
-             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
-             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
-             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-             | -morphos* | -superux* | -rtmk* | -windiss* \
-             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-             | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
-             | -midnightbsd*)
-       # Remember, each alternative MUST END IN *, to match a version number.
-               ;;
-       -qnx*)
-               case $basic_machine in
-                   x86-* | i*86-*)
-                       ;;
-                   *)
-                       os=-nto$os
-                       ;;
-               esac
+       # Some version numbers need modification
+       chorusos*)
+               os=chorusos
                ;;
-       -nto-qnx*)
+       isc)
+               os=isc2.2
                ;;
-       -nto*)
-               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+       sco6)
+               os=sco5v6
                ;;
-       -sim | -xray | -os68k* | -v88r* \
-             | -windows* | -osx | -abug | -netware* | -os9* \
-             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+       sco5)
+               os=sco3.2v5
                ;;
-       -mac*)
-               os=`echo "$os" | sed -e 's|mac|macos|'`
+       sco4)
+               os=sco3.2v4
                ;;
-       -linux-dietlibc)
-               os=-linux-dietlibc
+       sco3.2.[4-9]*)
+               os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
                ;;
-       -linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+       sco*v* | scout)
+               # Don't match below
                ;;
-       -sunos5*)
-               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+       sco*)
+               os=sco3.2v2
                ;;
-       -sunos6*)
-               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+       psos*)
+               os=psos
                ;;
-       -opened*)
-               os=-openedition
+       qnx*)
+               os=qnx
                ;;
-       -os400*)
-               os=-os400
+       hiux*)
+               os=hiuxwe2
                ;;
-       -wince*)
-               os=-wince
+       lynx*178)
+               os=lynxos178
                ;;
-       -utek*)
-               os=-bsd
+       lynx*5)
+               os=lynxos5
                ;;
-       -dynix*)
-               os=-bsd
+       lynxos*)
+               # don't get caught up in next wildcard
                ;;
-       -acis*)
-               os=-aos
+       lynx*)
+               os=lynxos
                ;;
-       -atheos*)
-               os=-atheos
+       mac[0-9]*)
+               os=`echo "$os" | sed -e 's|mac|macos|'`
                ;;
-       -syllable*)
-               os=-syllable
+       opened*)
+               os=openedition
                ;;
-       -386bsd)
-               os=-bsd
+       os400*)
+               os=os400
                ;;
-       -ctix* | -uts*)
-               os=-sysv
+       sunos5*)
+               os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
                ;;
-       -nova*)
-               os=-rtmk-nova
+       sunos6*)
+               os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
                ;;
-       -ns2)
-               os=-nextstep2
+       wince*)
+               os=wince
                ;;
-       -nsk*)
-               os=-nsk
+       utek*)
+               os=bsd
                ;;
-       # Preserve the version number of sinix5.
-       -sinix5.*)
-               os=`echo $os | sed -e 's|sinix|sysv|'`
+       dynix*)
+               os=bsd
                ;;
-       -sinix*)
-               os=-sysv4
+       acis*)
+               os=aos
                ;;
-       -tpf*)
-               os=-tpf
+       atheos*)
+               os=atheos
                ;;
-       -triton*)
-               os=-sysv3
+       syllable*)
+               os=syllable
+               ;;
+       386bsd)
+               os=bsd
+               ;;
+       ctix* | uts*)
+               os=sysv
+               ;;
+       nova*)
+               os=rtmk-nova
+               ;;
+       ns2)
+               os=nextstep2
+               ;;
+       # Preserve the version number of sinix5.
+       sinix5.*)
+               os=`echo "$os" | sed -e 's|sinix|sysv|'`
                ;;
-       -oss*)
-               os=-sysv3
+       sinix*)
+               os=sysv4
                ;;
-       -svr4*)
-               os=-sysv4
+       tpf*)
+               os=tpf
                ;;
-       -svr3)
-               os=-sysv3
+       triton*)
+               os=sysv3
                ;;
-       -sysvr4)
-               os=-sysv4
+       oss*)
+               os=sysv3
                ;;
-       # This must come after -sysvr4.
-       -sysv*)
+       svr4*)
+               os=sysv4
                ;;
-       -ose*)
-               os=-ose
+       svr3)
+               os=sysv3
                ;;
-       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-               os=-mint
+       sysvr4)
+               os=sysv4
                ;;
-       -zvmoe)
-               os=-zvmoe
+       ose*)
+               os=ose
                ;;
-       -dicos*)
-               os=-dicos
+       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+               os=mint
                ;;
-       -pikeos*)
+       dicos*)
+               os=dicos
+               ;;
+       pikeos*)
                # Until real need of OS specific support for
                # particular features comes up, bare metal
                # configurations are quite functional.
-               case $basic_machine in
+               case $cpu in
                    arm*)
-                       os=-eabi
+                       os=eabi
                        ;;
                    *)
-                       os=-elf
+                       os=elf
                        ;;
                esac
                ;;
-       -nacl*)
-               ;;
-       -ios)
-               ;;
-       -none)
-               ;;
        *)
-               # Get rid of the `-' at the beginning of $os.
-               os=`echo $os | sed 's/[^-]*-//'`
-               echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
-               exit 1
+               # No normalization, but not necessarily accepted, that comes below.
                ;;
 esac
+
 else
 
 # Here we handle the default operating systems that come with various machines.
@@ -1543,258 +1527,363 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 
-case $basic_machine in
+kernel=
+case $cpu-$vendor in
        score-*)
-               os=-elf
+               os=elf
                ;;
        spu-*)
-               os=-elf
+               os=elf
                ;;
        *-acorn)
-               os=-riscix1.2
+               os=riscix1.2
                ;;
        arm*-rebel)
-               os=-linux
+               kernel=linux
+               os=gnu
                ;;
        arm*-semi)
-               os=-aout
+               os=aout
                ;;
        c4x-* | tic4x-*)
-               os=-coff
+               os=coff
                ;;
        c8051-*)
-               os=-elf
+               os=elf
+               ;;
+       clipper-intergraph)
+               os=clix
                ;;
        hexagon-*)
-               os=-elf
+               os=elf
                ;;
        tic54x-*)
-               os=-coff
+               os=coff
                ;;
        tic55x-*)
-               os=-coff
+               os=coff
                ;;
        tic6x-*)
-               os=-coff
+               os=coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
-               os=-tops20
+               os=tops20
                ;;
        pdp11-*)
-               os=-none
+               os=none
                ;;
        *-dec | vax-*)
-               os=-ultrix4.2
+               os=ultrix4.2
                ;;
        m68*-apollo)
-               os=-domain
+               os=domain
                ;;
        i386-sun)
-               os=-sunos4.0.2
+               os=sunos4.0.2
                ;;
        m68000-sun)
-               os=-sunos3
+               os=sunos3
                ;;
        m68*-cisco)
-               os=-aout
+               os=aout
                ;;
        mep-*)
-               os=-elf
+               os=elf
                ;;
        mips*-cisco)
-               os=-elf
+               os=elf
                ;;
        mips*-*)
-               os=-elf
+               os=elf
                ;;
        or32-*)
-               os=-coff
+               os=coff
                ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
-               os=-sysv3
+               os=sysv3
                ;;
        sparc-* | *-sun)
-               os=-sunos4.1.1
+               os=sunos4.1.1
                ;;
        pru-*)
-               os=-elf
+               os=elf
                ;;
        *-be)
-               os=-beos
+               os=beos
                ;;
        *-ibm)
-               os=-aix
+               os=aix
                ;;
        *-knuth)
-               os=-mmixware
+               os=mmixware
                ;;
        *-wec)
-               os=-proelf
+               os=proelf
                ;;
        *-winbond)
-               os=-proelf
+               os=proelf
                ;;
        *-oki)
-               os=-proelf
+               os=proelf
                ;;
        *-hp)
-               os=-hpux
+               os=hpux
                ;;
        *-hitachi)
-               os=-hiux
+               os=hiux
                ;;
        i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=-sysv
+               os=sysv
                ;;
        *-cbm)
-               os=-amigaos
+               os=amigaos
                ;;
        *-dg)
-               os=-dgux
+               os=dgux
                ;;
        *-dolphin)
-               os=-sysv3
+               os=sysv3
                ;;
        m68k-ccur)
-               os=-rtu
+               os=rtu
                ;;
        m88k-omron*)
-               os=-luna
+               os=luna
                ;;
        *-next)
-               os=-nextstep
+               os=nextstep
                ;;
        *-sequent)
-               os=-ptx
+               os=ptx
                ;;
        *-crds)
-               os=-unos
+               os=unos
                ;;
        *-ns)
-               os=-genix
+               os=genix
                ;;
        i370-*)
-               os=-mvs
+               os=mvs
                ;;
        *-gould)
-               os=-sysv
+               os=sysv
                ;;
        *-highlevel)
-               os=-bsd
+               os=bsd
                ;;
        *-encore)
-               os=-bsd
+               os=bsd
                ;;
        *-sgi)
-               os=-irix
+               os=irix
                ;;
        *-siemens)
-               os=-sysv4
+               os=sysv4
                ;;
        *-masscomp)
-               os=-rtu
+               os=rtu
                ;;
        f30[01]-fujitsu | f700-fujitsu)
-               os=-uxpv
+               os=uxpv
                ;;
        *-rom68k)
-               os=-coff
+               os=coff
                ;;
        *-*bug)
-               os=-coff
+               os=coff
                ;;
        *-apple)
-               os=-macos
+               os=macos
                ;;
        *-atari*)
-               os=-mint
+               os=mint
+               ;;
+       *-wrs)
+               os=vxworks
                ;;
        *)
-               os=-none
+               os=none
                ;;
 esac
+
 fi
 
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+       # Sometimes we do "kernel-libc", so those need to count as OSes.
+       musl* | newlib* | relibc* | uclibc*)
+               ;;
+       # Likewise for "kernel-abi"
+       eabi* | gnueabi*)
+               ;;
+       # VxWorks passes extra cpu info in the 4th filed.
+       simlinux | simwindows | spe)
+               ;;
+       # Now accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST end in a * to match a version number.
+       gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+            | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
+            | hiux* | abug | nacl* | netware* | windows* \
+            | os9* | macos* | osx* | ios* \
+            | mpw* | magic* | mmixware* | mon960* | lnews* \
+            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+            | aos* | aros* | cloudabi* | sortix* | twizzler* \
+            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+            | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+            | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
+            | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+            | udi* | lites* | ieee* | go32* | aux* | hcos* \
+            | chorusrdb* | cegcc* | glidix* | serenity* \
+            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+            | midipix* | mingw32* | mingw64* | mint* \
+            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+            | interix* | uwin* | mks* | rhapsody* | darwin* \
+            | openstep* | oskit* | conix* | pw32* | nonstopux* \
+            | storm-chaos* | tops10* | tenex* | tops20* | its* \
+            | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+            | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+            | fiwix* )
+               ;;
+       # This one is extra strict with allowed versions
+       sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               ;;
+       none)
+               ;;
+       *)
+               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+                  | linux-musl* | linux-relibc* | linux-uclibc* )
+               ;;
+       uclinux-uclibc* )
+               ;;
+       -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+               # These are just libc implementations, not actual OSes, and thus
+               # require a kernel.
+               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+               exit 1
+               ;;
+       kfreebsd*-gnu* | kopensolaris*-gnu*)
+               ;;
+       vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+               ;;
+       nto-qnx*)
+               ;;
+       os2-emx)
+               ;;
+       *-eabi* | *-gnueabi*)
+               ;;
+       -*)
+               # Blank kernel with real OS is always fine.
+               ;;
+       *-*)
+               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+               exit 1
+               ;;
+esac
+
 # Here we handle the case where we know the os, and the CPU type, but not the
 # manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-       *-unknown)
-               case $os in
-                       -riscix*)
+case $vendor in
+       unknown)
+               case $cpu-$os in
+                       *-riscix*)
                                vendor=acorn
                                ;;
-                       -sunos*)
+                       *-sunos*)
                                vendor=sun
                                ;;
-                       -cnk*|-aix*)
+                       *-cnk* | *-aix*)
                                vendor=ibm
                                ;;
-                       -beos*)
+                       *-beos*)
                                vendor=be
                                ;;
-                       -hpux*)
+                       *-hpux*)
                                vendor=hp
                                ;;
-                       -mpeix*)
+                       *-mpeix*)
                                vendor=hp
                                ;;
-                       -hiux*)
+                       *-hiux*)
                                vendor=hitachi
                                ;;
-                       -unos*)
+                       *-unos*)
                                vendor=crds
                                ;;
-                       -dgux*)
+                       *-dgux*)
                                vendor=dg
                                ;;
-                       -luna*)
+                       *-luna*)
                                vendor=omron
                                ;;
-                       -genix*)
+                       *-genix*)
                                vendor=ns
                                ;;
-                       -mvs* | -opened*)
+                       *-clix*)
+                               vendor=intergraph
+                               ;;
+                       *-mvs* | *-opened*)
+                               vendor=ibm
+                               ;;
+                       *-os400*)
                                vendor=ibm
                                ;;
-                       -os400*)
+                       s390-* | s390x-*)
                                vendor=ibm
                                ;;
-                       -ptx*)
+                       *-ptx*)
                                vendor=sequent
                                ;;
-                       -tpf*)
+                       *-tpf*)
                                vendor=ibm
                                ;;
-                       -vxsim* | -vxworks* | -windiss*)
+                       *-vxsim* | *-vxworks* | *-windiss*)
                                vendor=wrs
                                ;;
-                       -aux*)
+                       *-aux*)
                                vendor=apple
                                ;;
-                       -hms*)
+                       *-hms*)
                                vendor=hitachi
                                ;;
-                       -mpw* | -macos*)
+                       *-mpw* | *-macos*)
                                vendor=apple
                                ;;
-                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                       *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
                                vendor=atari
                                ;;
-                       -vos*)
+                       *-vos*)
                                vendor=stratus
                                ;;
                esac
-               basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
                ;;
 esac
 
-echo "$basic_machine$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
 exit
 
 # Local variables:
-# eval: (add-hook 'write-file-functions 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
index ec37ba3b0905a6b6f36988881468ea3b34856ddc..fdad6a87fb7fb84032d397ca9b9eb4cc4c4fff70 100755 (executable)
--- a/configure
+++ b/configure
@@ -12,7 +12,7 @@
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 #
-# Copyright (c) 1998 - 2021 Daniel Stenberg, <daniel@haxx.se>
+# Copyright (c) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>
 # This configure script may be copied, distributed and modified under the
 # terms of the curl license; see COPYING for more details
 
@@ -898,7 +898,6 @@ ac_includes_default="\
 #endif"
 
 ac_header_c_list=
-enable_option_checking=no
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
@@ -921,10 +920,7 @@ DOING_CURL_SYMBOL_HIDING_TRUE
 USE_UNIX_SOCKETS
 BUILD_LIBHOSTNAME_FALSE
 BUILD_LIBHOSTNAME_TRUE
-USE_EMBEDDED_ARES_FALSE
-USE_EMBEDDED_ARES_TRUE
 USE_ARES
-subdirs
 USE_MANUAL_FALSE
 USE_MANUAL_TRUE
 MANOPT
@@ -932,13 +928,16 @@ NROFF
 PERL
 FISH_FUNCTIONS_DIR
 ZSH_FUNCTIONS_DIR
+USE_MSH3
 USE_QUICHE
 USE_NGHTTP3
+USE_NGTCP2_CRYPTO_WOLFSSL
 USE_NGTCP2_CRYPTO_GNUTLS
 USE_NGTCP2_CRYPTO_OPENSSL
 USE_NGTCP2
 USE_NGHTTP2
 IDN_ENABLED
+CURL_PLIST_VERSION
 CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE
 CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE
 CURL_LT_SHLIB_VERSIONED_FLAVOUR
@@ -957,7 +956,6 @@ NSS_LIBS
 USE_NSS
 USE_RUSTLS
 USE_BEARSSL
-USE_MESALINK
 USE_WOLFSSL
 USE_MBEDTLS
 HAVE_GNUTLS_SRP
@@ -999,6 +997,8 @@ CURL_DISABLE_FILE
 CURL_DISABLE_FTP
 CURL_DISABLE_RTSP
 CURL_DISABLE_HTTP
+OS_WINDOWS_FALSE
+OS_WINDOWS_TRUE
 USE_WIN32_CRYPTO
 USE_WIN32_SMALL_FILES
 USE_WIN32_LARGE_FILES
@@ -1021,6 +1021,7 @@ CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE
 CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE
 CURL_LT_SHLIB_USE_VERSION_INFO_FALSE
 CURL_LT_SHLIB_USE_VERSION_INFO_TRUE
+RC
 LT_SYS_LIBRARY_PATH
 OTOOL64
 OTOOL
@@ -1030,6 +1031,7 @@ DSYMUTIL
 MANIFEST_TOOL
 RANLIB
 ac_ct_AR
+FILECMD
 LN_S
 NM
 ac_ct_DUMPBIN
@@ -1176,9 +1178,9 @@ with_openssl
 with_gnutls
 with_mbedtls
 with_wolfssl
-with_mesalink
 with_bearssl
 with_rustls
+with_nss_deprecated
 with_nss
 with_darwinssl
 enable_largefile
@@ -1240,8 +1242,10 @@ with_nghttp2
 with_ngtcp2
 with_nghttp3
 with_quiche
+with_msh3
 with_zsh_functions_dir
 with_fish_functions_dir
+with_n64_deprecated
 enable_threaded_resolver
 enable_pthreads
 enable_verbose
@@ -1262,7 +1266,9 @@ enable_progress_meter
 enable_dnsshuffle
 enable_get_easy_options
 enable_alt_svc
+enable_headers_api
 enable_hsts
+enable_websockets
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1274,7 +1280,7 @@ LIBS
 CPPFLAGS
 CPP
 LT_SYS_LIBRARY_PATH'
-ac_subdirs_all='ares'
+
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -2030,8 +2036,12 @@ Optional Features:
                           Disable curl_easy_options
   --enable-alt-svc        Enable alt-svc support
   --disable-alt-svc       Disable alt-svc support
+  --enable-headers-api    Enable headers-api support
+  --disable-headers-api   Disable headers-api support
   --enable-hsts           Enable HSTS support
     --disable-hsts          Disable HSTS support
+  --enable-websockets     Enable WebSockets support
+  --disable-websockets    Disable WebSockets support
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -2051,12 +2061,11 @@ Optional Packages:
                           installation root
   --with-wolfssl=PATH     where to look for WolfSSL, PATH points to the
                           installation root (default: system lib default)
-  --with-mesalink=PATH    where to look for MesaLink, PATH points to the
-                          installation root
   --with-bearssl=PATH     where to look for BearSSL, PATH points to the
                           installation root
   --with-rustls=PATH      where to look for rustls, PATH points to the
                           installation root
+  --with-nss-deprecated   confirm you realize NSS is going away
   --with-nss=PATH         where to look for NSS, PATH points to the
                           installation root
 
@@ -2138,6 +2147,8 @@ Optional Packages:
   --without-nghttp3       Disable nghttp3 usage
   --with-quiche=PATH      Enable quiche usage
   --without-quiche        Disable quiche usage
+  --with-msh3=PATH        Enable msh3 usage
+  --without-msh3          Disable msh3 usage
   --with-zsh-functions-dir=PATH
                           Install zsh completions to PATH
   --without-zsh-functions-dir
@@ -2146,6 +2157,8 @@ Optional Packages:
                           Install fish completions to PATH
   --without-fish-functions-dir
                           Do not install fish completions
+  --with-n64-deprecated   confirm you realize support for systems without 64
+                          bit data types is going away
 
 Some influential environment variables:
   CC          C compiler command
@@ -2233,7 +2246,7 @@ Copyright (C) 2021 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-Copyright (c) 1998 - 2021 Daniel Stenberg, <daniel@haxx.se>
+Copyright (c) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>
 This configure script may be copied, distributed and modified under the
 terms of the curl license; see COPYING for more details
 _ACEOF
@@ -2321,6 +2334,39 @@ fi
 
 } # ac_fn_c_try_cpp
 
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  eval "$3=yes"
+else $as_nop
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
 # ac_fn_c_try_link LINENO
 # -----------------------
 # Try to link conftest.$ac_ext, and return whether this succeeded.
@@ -2368,39 +2414,6 @@ fi
 
 } # ac_fn_c_try_link
 
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-printf %s "checking for $2... " >&6; }
-if eval test \${$3+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  eval "$3=yes"
-else $as_nop
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
 # ac_fn_c_check_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2497,8 +2510,8 @@ fi
 
 } # ac_fn_c_try_run
 
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
+# ac_fn_c_check_type LINENO SIZEOF_LONG_LONG VAR INCLUDES
+# -------------------------------------------------------
 # Tests whether TYPE exists after having included INCLUDES, setting cache
 # variable VAR accordingly.
 ac_fn_c_check_type ()
@@ -3930,13 +3943,15 @@ fi
 
 
 if test -z "$EGREP"; then
-    if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that grep -E works" >&5
+printf %s "checking that grep -E works... " >&6; }
+  if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
     EGREP="$GREP -E"
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5
-printf "%s\n" "$EGREP" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
   else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
     # Extract the first word of "egrep", so it can be a program name with args.
 set dummy egrep; ac_word=$2
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -3987,7 +4002,7 @@ fi
   fi
 fi
 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
-  as_fn_error $? "egrep not found in PATH. Cannot continue without egrep." "$LINENO" 5
+  as_fn_error $? "grep -E is not working and egrep is not found in PATH. Cannot continue." "$LINENO" 5
 fi
 
 
@@ -5582,6 +5597,87 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+  if test $ac_cache; then
+    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+      printf "%s\n" "#define $ac_item 1" >> confdefs.h
+    fi
+    ac_header= ac_cache=
+  elif test $ac_header; then
+    ac_cache=$ac_item
+  else
+    ac_header=$ac_item
+  fi
+done
+
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+         for ac_header in stdatomic.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "stdatomic.h" "ac_cv_header_stdatomic_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdatomic_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STDATOMIC_H 1" >>confdefs.h
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _Atomic is available" >&5
+printf %s "checking if _Atomic is available... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+        $curl_includes_unistd
+
+int main (void)
+{
+
+        _Atomic int i = 0;
+        i = 4;  // Force an atomic-write operation.
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+printf "%s\n" "#define HAVE_ATOMIC 1" >>confdefs.h
+
+      tst_atomic="yes"
+
+else $as_nop
+
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_atomic="no"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+done
+
+
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
 printf %s "checking for a sed that does not truncate output... " >&6; }
 if test ${ac_cv_path_SED+y}
@@ -5834,7 +5930,7 @@ fi
     fi
 
     CPPFLAGS="$CPPFLAGS -DNDEBUG"
-    CFLAGS="$CLAGS -O0 -g -fprofile-arcs -ftest-coverage"
+    CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
     LIBS="$LIBS -lgcov"
   fi
 
@@ -6530,7 +6626,7 @@ PKGADD_VENDOR="curl.se"
 
 
 
-    curl_ssl_msg="no      (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )"
+    curl_ssl_msg="no      (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )"
     curl_ssh_msg="no      (--with-{libssh,libssh2})"
    curl_zlib_msg="no      (--with-zlib)"
  curl_brotli_msg="no      (--with-brotli)"
@@ -6552,11 +6648,13 @@ curl_verbose_msg="enabled (--disable-verbose)"
    curl_rtmp_msg="no      (--with-librtmp)"
     curl_psl_msg="no      (--with-libpsl)"
  curl_altsvc_msg="enabled (--disable-alt-svc)"
+curl_headers_msg="enabled (--disable-headers-api)"
    curl_hsts_msg="enabled (--disable-hsts)"
+     curl_ws_msg="no      (--enable-websockets)"
     ssl_backends=
      curl_h1_msg="enabled (internal)"
      curl_h2_msg="no      (--with-nghttp2, --with-hyper)"
-     curl_h3_msg="no      (--with-ngtcp2, --with-quiche)"
+     curl_h3_msg="no      (--with-ngtcp2, --with-quiche --with-msh3)"
 
 enable_altsvc="yes"
 hsts="yes"
@@ -6579,10 +6677,9 @@ OPT_SECURETRANSPORT=no
 # Check whether --with-secure-transport was given.
 if test ${with_secure_transport+y}
 then :
-  withval=$with_secure_transport; OPT_SECURETRANSPORT=$withval
-  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }Secure-Transport"
+  withval=$with_secure_transport;
+  OPT_SECURETRANSPORT=$withval
+  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
 
 fi
 
@@ -6592,10 +6689,10 @@ OPT_AMISSL=no
 # Check whether --with-amissl was given.
 if test ${with_amissl+y}
 then :
-  withval=$with_amissl; OPT_AMISSL=$withval
-  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }AmiSSL"
+  withval=$with_amissl;
+  OPT_AMISSL=$withval
+  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"
+
 fi
 
 
@@ -6605,113 +6702,114 @@ ca="no"
 # Check whether --with-ssl was given.
 if test ${with_ssl+y}
 then :
-  withval=$with_ssl; OPT_SSL=$withval
+  withval=$with_ssl;
+  OPT_SSL=$withval
   OPT_OPENSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }OpenSSL"
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
+  else
+    SSL_DISABLED="D"
+  fi
+
 fi
 
-  fi
 
 
 # Check whether --with-openssl was given.
 if test ${with_openssl+y}
 then :
-  withval=$with_openssl; OPT_OPENSSL=$withval
+  withval=$with_openssl;
+  OPT_OPENSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }OpenSSL"
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
+  fi
+
 fi
 
-  fi
 
 OPT_GNUTLS=no
 
 # Check whether --with-gnutls was given.
 if test ${with_gnutls+y}
 then :
-  withval=$with_gnutls; OPT_GNUTLS=$withval
+  withval=$with_gnutls;
+  OPT_GNUTLS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }GnuTLS"
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"
+  fi
+
 fi
 
-  fi
 
 OPT_MBEDTLS=no
 
 # Check whether --with-mbedtls was given.
 if test ${with_mbedtls+y}
 then :
-  withval=$with_mbedtls; OPT_MBEDTLS=$withval
+  withval=$with_mbedtls;
+  OPT_MBEDTLS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }mbedTLS"
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"
+  fi
+
 fi
 
-  fi
 
 OPT_WOLFSSL=no
 
 # Check whether --with-wolfssl was given.
 if test ${with_wolfssl+y}
 then :
-  withval=$with_wolfssl; OPT_WOLFSSL=$withval
+  withval=$with_wolfssl;
+  OPT_WOLFSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }wolfSSL"
-fi
-
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"
   fi
 
-OPT_MESALINK=no
-
-# Check whether --with-mesalink was given.
-if test ${with_mesalink+y}
-then :
-  withval=$with_mesalink; OPT_MESALINK=$withval
-  if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }MesaLink"
 fi
 
-  fi
 
 OPT_BEARSSL=no
 
 # Check whether --with-bearssl was given.
 if test ${with_bearssl+y}
 then :
-  withval=$with_bearssl; OPT_BEARSSL=$withval
+  withval=$with_bearssl;
+  OPT_BEARSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }BearSSL"
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL"
+  fi
+
 fi
 
-  fi
 
 OPT_RUSTLS=no
 
 # Check whether --with-rustls was given.
 if test ${with_rustls+y}
 then :
-  withval=$with_rustls; OPT_RUSTLS=$withval
+  withval=$with_rustls;
+  OPT_RUSTLS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }rustls"
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls"
+    experimental="$experimental rustls"
+  fi
+
 fi
 
+
+OPT_NSS_AWARE=no
+
+# Check whether --with-nss-deprecated was given.
+if test ${with_nss_deprecated+y}
+then :
+  withval=$with_nss_deprecated; if test X"$withval" != Xno; then
+    OPT_NSS_AWARE=$withval
   fi
 
+fi
+
+
 OPT_NSS=no
 
 # Check whether --with-nss was given.
@@ -6719,13 +6817,17 @@ if test ${with_nss+y}
 then :
   withval=$with_nss; OPT_NSS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE
-else $as_nop
-  }NSS"
-fi
 
+    if test X"$OPT_NSS_AWARE" = "Xno" ; then
+      as_fn_error $? "NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md" "$LINENO" 5
+    fi
+
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"
   fi
 
+fi
+
+
 if test -z "$TLSCHOICE"; then
   if test "x$OPT_SSL" != "xno"; then
     as_fn_error $? "select TLS backend(s) or disable TLS with --without-ssl.
@@ -6736,7 +6838,6 @@ Select from these:
   --with-bearssl
   --with-gnutls
   --with-mbedtls
-  --with-mesalink
   --with-nss
   --with-openssl (also works for BoringSSL and libressl)
   --with-rustls
@@ -6840,7 +6941,6 @@ AR_FLAGS=cr
 
 
 
-
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 printf %s "checking for grep that handles long lines and -e... " >&6; }
 if test ${ac_cv_path_GREP+y}
@@ -7981,8 +8081,8 @@ esac
 
 
 
-macro_version='2.4.6'
-macro_revision='2.4.6'
+macro_version='2.4.7'
+macro_revision='2.4.7'
 
 
 
@@ -8393,13 +8493,13 @@ else
        mingw*) lt_bad_file=conftest.nm/nofile ;;
        *) lt_bad_file=/dev/null ;;
        esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+       case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
        *$lt_bad_file* | *'Invalid file or object type'*)
          lt_cv_path_NM="$tmp_nm -B"
          break 2
          ;;
        *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in
          */dev/null*)
            lt_cv_path_NM="$tmp_nm -p"
            break 2
@@ -8537,7 +8637,7 @@ esac
   fi
 fi
 
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in
     *COFF*)
       DUMPBIN="$DUMPBIN -symbols -headers"
       ;;
@@ -8641,7 +8741,7 @@ else $as_nop
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+  bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -8684,7 +8784,7 @@ else $as_nop
   sysv5* | sco5v6* | sysv4.2uw2*)
     kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
+      lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[        ]//'`
     else
       lt_cv_sys_max_cmd_len=32768
     fi
@@ -8889,6 +8989,114 @@ esac
 
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args.
+set dummy ${ac_tool_prefix}file; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_FILECMD+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$FILECMD"; then
+  ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_FILECMD="${ac_tool_prefix}file"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+FILECMD=$ac_cv_prog_FILECMD
+if test -n "$FILECMD"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5
+printf "%s\n" "$FILECMD" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_FILECMD"; then
+  ac_ct_FILECMD=$FILECMD
+  # Extract the first word of "file", so it can be a program name with args.
+set dummy file; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_FILECMD+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_FILECMD"; then
+  ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_FILECMD="file"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD
+if test -n "$ac_ct_FILECMD"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5
+printf "%s\n" "$ac_ct_FILECMD" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_ct_FILECMD" = x; then
+    FILECMD=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    FILECMD=$ac_ct_FILECMD
+  fi
+else
+  FILECMD="$ac_cv_prog_FILECMD"
+fi
+
+
+
+
+
+
+
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; ac_word=$2
@@ -9029,7 +9237,7 @@ beos*)
 
 bsdi[45]*)
   lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_cmd='$FILECMD -L'
   lt_cv_file_magic_test_file=/shlib/libc.so
   ;;
 
@@ -9063,14 +9271,14 @@ darwin* | rhapsody*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
       # Not sure whether the presence of OpenBSD here was a mistake.
       # Let's accept both of them until this is cleared up.
       lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_cmd=$FILECMD
       lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
       ;;
     esac
@@ -9084,7 +9292,7 @@ haiku*)
   ;;
 
 hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_cmd=$FILECMD
   case $host_cpu in
   ia64*)
     lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
@@ -9131,7 +9339,7 @@ netbsd* | netbsdelf*-gnu)
 
 newos6*)
   lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_cmd=$FILECMD
   lt_cv_file_magic_test_file=/usr/lib/libnls.so
   ;;
 
@@ -9501,13 +9709,29 @@ esac
 fi
 
 : ${AR=ar}
-: ${AR_FLAGS=cr}
 
 
 
 
 
 
+# Use ARFLAGS variable as AR's operation code to sync the variable naming with
+# Automake.  If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
+# higher priority because thats what people were doing historically (setting
+# ARFLAGS for automake and AR_FLAGS for libtool).  FIXME: Make the AR_FLAGS
+# variable obsoleted/removed.
+
+test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
+lt_ar_flags=$AR_FLAGS
+
+
+
+
+
+
+# Make AR_FLAGS overridable by 'make ARFLAGS='.  Don't try to run-time override
+# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
+
 
 
 
@@ -9923,7 +10147,7 @@ esac
 
 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
   # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'"
   # Adjust the below global symbol transforms to fixup imported variables.
   lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
   lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\
 $lt_cdecl_hook\
 " -e 's/^T .* \(.*\)$/extern int \1();/p'"\
 " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\
 $lt_c_name_hook\
 " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
 " -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
 
 # Transform an extracted symbol line into symbol name with lib prefix and
 # symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\
 $lt_c_name_lib_hook\
 " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
 " -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
@@ -9978,7 +10202,7 @@ for ac_symprfx in "" "_"; do
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
     # Fake it for dumpbin and say T for any non-static function,
     # D for any global variable and I for any imported variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
+    # Also find C++ and __fastcall symbols from MSVC++ or ICC,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
@@ -9996,9 +10220,9 @@ for ac_symprfx in "" "_"; do
 "     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx"
   else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+    lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[    ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -10198,7 +10422,7 @@ case $with_sysroot in #(
    fi
    ;; #(
  /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"`
    ;; #(
  no|'')
    ;; #(
@@ -10323,7 +10547,7 @@ ia64-*-hpux*)
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *ELF-32*)
        HPUX_IA64_MODE=32
        ;;
@@ -10344,7 +10568,7 @@ ia64-*-hpux*)
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
+      case `$FILECMD conftest.$ac_objext` in
        *32-bit*)
          LD="${LD-ld} -melf32bsmip"
          ;;
@@ -10356,7 +10580,7 @@ ia64-*-hpux*)
        ;;
       esac
     else
-      case `/usr/bin/file conftest.$ac_objext` in
+      case `$FILECMD conftest.$ac_objext` in
        *32-bit*)
          LD="${LD-ld} -32"
          ;;
@@ -10382,7 +10606,7 @@ mips64*-*linux*)
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
     emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *32-bit*)
        emul="${emul}32"
        ;;
@@ -10390,7 +10614,7 @@ mips64*-*linux*)
        emul="${emul}64"
        ;;
     esac
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *MSB*)
        emul="${emul}btsmip"
        ;;
@@ -10398,7 +10622,7 @@ mips64*-*linux*)
        emul="${emul}ltsmip"
        ;;
     esac
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *N32*)
        emul="${emul}n32"
        ;;
@@ -10422,14 +10646,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
+    case `$FILECMD conftest.o` in
       *32-bit*)
        case $host in
          x86_64-*kfreebsd*-gnu)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
+           case `$FILECMD conftest.o` in
              *x86-64*)
                LD="${LD-ld} -m elf32_x86_64"
                ;;
@@ -10536,7 +10760,7 @@ printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-    case `/usr/bin/file conftest.o` in
+    case `$FILECMD conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
       yes*)
@@ -11318,8 +11542,8 @@ int forced_loaded() { return 2;}
 _LT_EOF
       echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
       $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
-      echo "$AR cr libconftest.a conftest.o" >&5
-      $AR cr libconftest.a conftest.o 2>&5
+      echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5
+      $AR $AR_FLAGS libconftest.a conftest.o 2>&5
       echo "$RANLIB libconftest.a" >&5
       $RANLIB libconftest.a 2>&5
       cat > conftest.c << _LT_EOF
@@ -11346,17 +11570,12 @@ printf "%s\n" "$lt_cv_ld_force_load" >&6; }
       _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     darwin1.*)
       _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[912]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[012][,.]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-       10.*|11.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+    darwin*)
+      case $MACOSX_DEPLOYMENT_TARGET,$host in
+        10.[012],*|,*powerpc*-darwin[5-8]*)
+          _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+        *)
+          _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
@@ -11411,35 +11630,6 @@ func_munge_path_list ()
     esac
 }
 
-ac_header= ac_cache=
-for ac_item in $ac_header_c_list
-do
-  if test $ac_cache; then
-    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
-    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
-      printf "%s\n" "#define $ac_item 1" >> confdefs.h
-    fi
-    ac_header= ac_cache=
-  elif test $ac_header; then
-    ac_cache=$ac_item
-  else
-    ac_header=$ac_item
-  fi
-done
-
-
-
-
-
-
-
-
-if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
-then :
-
-printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
 ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
 "
 if test "x$ac_cv_header_dlfcn_h" = xyes
@@ -12179,8 +12369,8 @@ esac
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a '.a' archive for static linking (except MSVC,
-# which needs '.lib').
+# All known linkers require a '.a' archive for static linking (except MSVC and
+# ICC, which need '.lib').
 libext=a
 
 with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -12698,7 +12888,7 @@ lt_prog_compiler_static=
        lt_prog_compiler_static='-qstaticlink'
        ;;
       *)
-       case `$CC -V 2>&1 | sed 5q` in
+       case `$CC -V 2>&1 | $SED 5q` in
        *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
          # Sun Fortran 8.3 passes all unrecognized flags to the linker
          lt_prog_compiler_pic='-KPIC'
@@ -13121,15 +13311,15 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
 
   case $host_os in
   cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
+    # Microsoft Visual C++ or Intel C++ Compiler.
     if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
   interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
     with_gnu_ld=yes
     ;;
   openbsd* | bitrig*)
@@ -13184,7 +13374,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries
       whole_archive_flag_spec=
     fi
     supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
+    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
       *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -13296,6 +13486,7 @@ _LT_EOF
        emximp -o $lib $output_objdir/$libname.def'
       old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
       enable_shared_with_static_runtimes=yes
+      file_list_spec='@'
       ;;
 
     interix[3-9]*)
@@ -13310,7 +13501,7 @@ _LT_EOF
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
@@ -13353,7 +13544,7 @@ _LT_EOF
          compiler_needs_object=yes
          ;;
        esac
-       case `$CC -V 2>&1 | sed 5q` in
+       case `$CC -V 2>&1 | $SED 5q` in
        *Sun\ C*)                       # Sun C 5.9
          whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
          compiler_needs_object=yes
@@ -13365,13 +13556,14 @@ _LT_EOF
 
         if test yes = "$supports_anon_versioning"; then
           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
             echo "local: *; };" >> $output_objdir/$libname.ver~
             $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
        case $cc_basename in
        tcc*)
+         hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
          export_dynamic_flag_spec='-rdynamic'
          ;;
        xlf* | bgf* | bgxlf* | mpixlf*)
@@ -13381,7 +13573,7 @@ _LT_EOF
          archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
          if test yes = "$supports_anon_versioning"; then
            archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
               echo "local: *; };" >> $output_objdir/$libname.ver~
               $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
          fi
@@ -13513,7 +13705,7 @@ _LT_EOF
        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
          export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
        else
-         export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+         export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
        fi
        aix_use_runtimelinking=no
 
 
     cygwin* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
+      # Microsoft Visual C++ or Intel C++ Compiler.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
       case $cc_basename in
-      cl*)
-       # Native MSVC
+      cl* | icl*)
+       # Native MSVC or ICC
        hardcode_libdir_flag_spec=' '
        allow_undefined_flag=unsupported
        always_export_symbols=yes
@@ -13828,7 +14020,7 @@ fi
           fi'
        ;;
       *)
-       # Assume MSVC wrapper
+       # Assume MSVC and ICC wrapper
        hardcode_libdir_flag_spec=' '
        allow_undefined_flag=unsupported
        # Tell ltmain to make .lib files, not .a files.
@@ -13869,8 +14061,8 @@ fi
     output_verbose_link_cmd=func_echo_all
     archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
     module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+    archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
 
   else
   ld_shlibs=no
@@ -13904,7 +14096,7 @@ fi
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | dragonfly* | midnightbsd*)
       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
@@ -14085,6 +14277,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
        # Fabrice Bellard et al's Tiny C Compiler
        ld_shlibs=yes
        archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
        ;;
       esac
       ;;
@@ -14156,6 +14349,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
        emximp -o $lib $output_objdir/$libname.def'
       old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
       enable_shared_with_static_runtimes=yes
+      file_list_spec='@'
       ;;
 
     osf3*)
@@ -14848,7 +15042,7 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
 
       sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
       ;;
@@ -14858,14 +15052,14 @@ cygwin* | mingw* | pw32* | cegcc*)
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+      library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
     ;;
 
-  *,cl*)
-    # Native MSVC
+  *,cl* | *,icl*)
+    # Native MSVC or ICC
     libname_spec='$name'
     soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
     library_names_spec='$libname.dll.lib'
@@ -14884,7 +15078,7 @@ cygwin* | mingw* | pw32* | cegcc*)
       done
       IFS=$lt_save_ifs
       # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
       ;;
     cygwin*)
       # Convert to unix form, then to dos form, then back to unix form
@@ -14921,7 +15115,7 @@ cygwin* | mingw* | pw32* | cegcc*)
     ;;
 
   *)
-    # Assume MSVC wrapper
+    # Assume MSVC and ICC wrapper
     library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
     dynamic_linker='Win32 ld.exe'
     ;;
@@ -14954,7 +15148,7 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
   if test -x /usr/bin/objformat; then
@@ -16118,30 +16312,41 @@ striplib=
 old_striplib=
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
 printf %s "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+if test -z "$STRIP"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP"; then
+  if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+    old_striplib="$STRIP --strip-debug"
+    striplib="$STRIP --strip-unneeded"
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  else
+    case $host_os in
+    darwin*)
+      # FIXME - insert some real tests, host_os isn't really good enough
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+      ;;
+    freebsd*)
+      if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
+        old_striplib="$STRIP --strip-debug"
+        striplib="$STRIP --strip-unneeded"
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-    fi
-    ;;
-  *)
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+      fi
+      ;;
+    *)
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-    ;;
-  esac
+      ;;
+    esac
+  fi
 fi
 
 
@@ -16316,7 +16521,7 @@ esac
 printf "%s\n" "$xc_lt_shlib_use_mimpure_text" >&6; }
 
 #
-# Find out whether libtool libraries would be built wit PIC
+# Find out whether libtool libraries would be built with PIC
 #
 
 case "x$pic_mode" in # ((((
@@ -16381,6 +16586,187 @@ printf "%s\n" "$xc_lt_build_static_only" >&6; }
 
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$RC"; then
+  ac_cv_prog_RC="$RC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RC="${ac_tool_prefix}windres"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RC=$ac_cv_prog_RC
+if test -n "$RC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
+printf "%s\n" "$RC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RC"; then
+  ac_ct_RC=$RC
+  # Extract the first word of "windres", so it can be a program name with args.
+set dummy windres; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_RC"; then
+  ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RC="windres"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RC=$ac_cv_prog_ac_ct_RC
+if test -n "$ac_ct_RC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5
+printf "%s\n" "$ac_ct_RC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_ct_RC" = x; then
+    RC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RC=$ac_ct_RC
+  fi
+else
+  RC="$ac_cv_prog_RC"
+fi
+
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=$lt_simple_compile_test_code
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+compiler_RC=$CC
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+if test -n "$compiler"; then
+  :
+
+
+
+fi
+
+GCC=$lt_save_GCC
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+
+
 #
 # Automake conditionals based on libtool related checks
 #
@@ -17057,7 +17443,7 @@ printf "%s\n" "no" >&6; }
     compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
     flags_dbg_yes="-g"
     flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
-    flags_opt_yes="-Os"
+    flags_opt_yes="-O2"
     flags_opt_off="-O0"
   else
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -17619,120 +18005,6 @@ printf "%s\n" "yes" >&6; }
 printf "%s\n" "no" >&6; }
   fi
 
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Watcom C" >&5
-printf %s "checking if compiler is Watcom C... " >&6; }
-
-    OLDCPPFLAGS=$CPPFLAGS
-  # CPPPFLAG comes from CURL_CPP_P
-  CPPFLAGS="$CPPFLAGS $CPPPFLAG"
-      if test -z "$SED"; then
-    as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
-  fi
-  if test -z "$GREP"; then
-    as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
-  fi
-
-  tmp_exp=""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __WATCOMC__
-CURL_DEF_TOKEN __WATCOMC__
-#endif
-
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
-    tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
-      "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
-      "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
-      "$SED" 's/["][ ]*["]//g' 2>/dev/null`
-    if test -z "$tmp_exp" || test "$tmp_exp" = "__WATCOMC__"; then
-      tmp_exp=""
-    fi
-
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-  if test -z "$tmp_exp"; then
-    curl_cv_have_def___WATCOMC__=no
-
-  else
-    curl_cv_have_def___WATCOMC__=yes
-    curl_cv_def___WATCOMC__=$tmp_exp
-
-  fi
-      CPPFLAGS=$OLDCPPFLAGS
-
-  if test "$curl_cv_have_def___WATCOMC__" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-    OLDCPPFLAGS=$CPPFLAGS
-  # CPPPFLAG comes from CURL_CPP_P
-  CPPFLAGS="$CPPFLAGS $CPPPFLAG"
-      if test -z "$SED"; then
-    as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
-  fi
-  if test -z "$GREP"; then
-    as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
-  fi
-
-  tmp_exp=""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __UNIX__
-CURL_DEF_TOKEN __UNIX__
-#endif
-
-
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
-    tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
-      "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
-      "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
-      "$SED" 's/["][ ]*["]//g' 2>/dev/null`
-    if test -z "$tmp_exp" || test "$tmp_exp" = "__UNIX__"; then
-      tmp_exp=""
-    fi
-
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-  if test -z "$tmp_exp"; then
-    curl_cv_have_def___UNIX__=no
-
-  else
-    curl_cv_have_def___UNIX__=yes
-    curl_cv_def___UNIX__=$tmp_exp
-
-  fi
-      CPPFLAGS=$OLDCPPFLAGS
-
-    if test "$curl_cv_have_def___UNIX__" = "yes"; then
-      compiler_id="WATCOM_UNIX_C"
-      flags_dbg_yes="-g2"
-      flags_opt_all="-O0 -O1 -O2 -O3"
-      flags_opt_yes="-O2"
-      flags_opt_off="-O0"
-    else
-      compiler_id="WATCOM_WINDOWS_C"
-      flags_dbg_yes=""
-      flags_opt_all=""
-      flags_opt_yes=""
-      flags_opt_off=""
-    fi
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-  fi
-
   #
   if test "$compiler_id" = "unknown"; then
   cat <<_EOF 1>&2
@@ -17813,8 +18085,8 @@ squeeze() {
       INTEL_UNIX_C)
         #
                         tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
-                                                tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
-                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
+                                                tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266"
+                                                        tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259"
         ;;
         #
       INTEL_WINDOWS_C)
@@ -17847,16 +18119,6 @@ squeeze() {
                 tmp_CFLAGS="$tmp_CFLAGS"
         ;;
         #
-      WATCOM_UNIX_C)
-        #
-                tmp_CFLAGS="$tmp_CFLAGS"
-        ;;
-        #
-      WATCOM_WINDOWS_C)
-        #
-                tmp_CFLAGS="$tmp_CFLAGS"
-        ;;
-        #
     esac
     #
     squeeze tmp_CPPFLAGS
@@ -17938,15 +18200,54 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
     test "$tmp_compiler_works" = "yes"; then
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#       ifdef __STDC__
+#         include <stdlib.h>
+#       endif
+
+int main (void)
+{
+
+        int i = 0;
+        exit(i);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  tmp_compiler_works="yes"
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+  tmp_compiler_works="no"
+      echo " " >&6
+      echo "run-fail: test program exited with status $ac_status" >&6
+      echo " " >&6
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -17987,7 +18288,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
     if test "$tmp_compiler_works" = "yes"; then
@@ -18226,15 +18529,54 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
     test "$tmp_compiler_works" = "yes"; then
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#       ifdef __STDC__
+#         include <stdlib.h>
+#       endif
+
+int main (void)
+{
+
+        int i = 0;
+        exit(i);
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  tmp_compiler_works="yes"
+
+else $as_nop
+  tmp_compiler_works="no"
+      echo " " >&6
+      echo "run-fail: test program exited with status $ac_status" >&6
+      echo " " >&6
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -18275,7 +18617,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
     if test "$tmp_compiler_works" = "yes"; then
@@ -18782,6 +19126,7 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
       GNU_C)
         #
         if test "$want_warnings" = "yes"; then
+          tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
           #
                               if test "x$cross_compiling" != "xyes" ||
             test "$compiler_num" -ge "300"; then
@@ -19406,22 +19751,27 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
             fi
           fi
           #
-        fi
-        #
-                if test "$compiler_num" -ge "300"; then
-          tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
-        else
-                              if test "x$cross_compiling" = "xyes"; then
-            if test "$compiler_num" -ge "104"; then
-                            tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow"
-            fi
-            if test "$compiler_num" -ge "207"; then
-                            tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations"
-              tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes"
-            fi
-          fi
-        fi
-                if test "$compiler_num" -ge "1000"; then
+                    if test "$compiler_num" -ge "1000"; then
+
+    ac_var_added_warnings=""
+  for warning in arith-conversion; do
+
+  ac_var_match_word="no"
+  for word1 in $CFLAGS; do
+    for word2 in -Wno-$warning -W$warning; do
+      if test "$word1" = "$word2"; then
+        ac_var_match_word="yes"
+      fi
+    done
+  done
+
+    if test "$ac_var_match_word" = "no"; then
+      ac_var_added_warnings="$ac_var_added_warnings -W$warning"
+    fi
+  done
+    tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings"
+  squeeze tmp_CFLAGS
+
 
     ac_var_added_warnings=""
   for warning in enum-conversion; do
@@ -19442,6 +19792,22 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
     tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings"
   squeeze tmp_CFLAGS
 
+          fi
+          #
+        fi
+        #
+                if test "$compiler_num" -ge "300"; then
+          tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
+        else
+                              if test "x$cross_compiling" = "xyes"; then
+            if test "$compiler_num" -ge "104"; then
+                            tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow"
+            fi
+            if test "$compiler_num" -ge "207"; then
+                            tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations"
+              tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes"
+            fi
+          fi
         fi
         ;;
         #
@@ -19579,18 +19945,6 @@ printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;}
         fi
         ;;
         #
-      WATCOM_UNIX_C)
-        #
-        if test "$want_warnings" = "yes"; then
-                    tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
-        fi
-        ;;
-        #
-      WATCOM_WINDOWS_C)
-        #
-                tmp_CFLAGS="$tmp_CFLAGS"
-        ;;
-        #
     esac
     #
     squeeze tmp_CPPFLAGS
@@ -19672,15 +20026,54 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
     test "$tmp_compiler_works" = "yes"; then
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#       ifdef __STDC__
+#         include <stdlib.h>
+#       endif
+
+int main (void)
+{
+
+        int i = 0;
+        exit(i);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  tmp_compiler_works="yes"
+
+else $as_nop
+  tmp_compiler_works="no"
+      echo " " >&6
+      echo "run-fail: test program exited with status $ac_status" >&6
+      echo " " >&6
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -19721,7 +20114,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
     if test "$tmp_compiler_works" = "yes"; then
@@ -20146,6 +20541,47 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     ;;
 esac
 
+# Detect original MinGW (not MinGW-w64)
+curl_mingw_original=no
+case $host in
+  *-*-mingw32*)
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking using original MinGW (not MinGW-w64)" >&5
+printf %s "checking using original MinGW (not MinGW-w64)... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#include <_mingw.h>
+
+int main (void)
+{
+
+#if defined(__MINGW64_VERSION_MAJOR)
+#error
+#endif
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+      curl_mingw_original=yes
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+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
+    ;;
+esac
+
 
 
 
@@ -20485,74 +20921,12 @@ printf "%s\n" "#define HAVE_WINLDAP_H 1" >>confdefs.h
       ;;
   esac
 
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winber.h" >&5
-printf %s "checking for winber.h... " >&6; }
-if test ${curl_cv_header_winber_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>
-#include <winber.h>
-
-int main (void)
-{
-
-#if defined(__CYGWIN__) || defined(__CEGCC__)
-        HAVE_WINBER_H shall not be defined.
-#else
-        BERVAL *bvp = NULL;
-        BerElement *bep = ber_init(bvp);
-        ber_free(bep, 1);
-#endif
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-      curl_cv_header_winber_h="yes"
-
-else $as_nop
-
-      curl_cv_header_winber_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_winber_h" >&5
-printf "%s\n" "$curl_cv_header_winber_h" >&6; }
-  case "$curl_cv_header_winber_h" in
-    yes)
-
-printf "%s\n" "#define HAVE_WINBER_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"
-    curl_cv_header_winber_h="no"
     ;;
 esac
 
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 
+ if test "$curl_cv_native_windows" = "yes"; then
+  OS_WINDOWS_TRUE=
+  OS_WINDOWS_FALSE='#'
+else
+  OS_WINDOWS_TRUE='#'
+  OS_WINDOWS_FALSE=
+fi
+
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support http" >&5
 printf %s "checking whether to support http... " >&6; }
@@ -21290,7 +21672,7 @@ fi
 done
 
 else $as_nop
-  for d in `echo $DIR_HYPER | sed -e 's/:/ /'`; do
+  for d in `echo $DIR_HYPER | $SED -e 's/:/ /'`; do
         if test -f "$d/libhyper.a"; then
           as_fn_error $? "hyper was found in $d but was probably built with wrong flags. See docs/HYPER.md." "$LINENO" 5
         fi
@@ -22043,8 +22425,13 @@ printf %s "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; }
 /* end confdefs.h.  */
 
 
+  #define __USE_INLINE__
   #include <proto/bsdsocket.h>
+  #ifdef __amigaos4__
+  struct SocketIFace *ISocket = NULL;
+  #else
   struct Library *SocketBase = NULL;
+  #endif
 
 int main (void)
 {
 
 fi
 
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnet" >&5
-printf %s "checking for gethostbyname in -lnet... " >&6; }
-if test ${ac_cv_lib_net_gethostbyname+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnet  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int main (void)
-{
-return gethostbyname ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_lib_net_gethostbyname=yes
-else $as_nop
-  ac_cv_lib_net_gethostbyname=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_net_gethostbyname" >&5
-printf "%s\n" "$ac_cv_lib_net_gethostbyname" >&6; }
-if test "x$ac_cv_lib_net_gethostbyname" = xyes
-then :
-  HAVE_GETHOSTBYNAME="1"
-               LIBS="-lnet $LIBS"
-
-fi
-
-fi
-
-
 if test "$HAVE_GETHOSTBYNAME" != "1"; then
   as_fn_error $? "couldn't find libraries for gethostbyname()" "$LINENO" 5
 fi
@@ -22304,12 +22644,22 @@ printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h
 
 curl_includes_bsdsocket="\
 /* includes start */
-#ifdef HAVE_PROTO_BSDSOCKET_H
+#if defined(HAVE_PROTO_BSDSOCKET_H)
+#  define __NO_NET_API
+#  define __USE_INLINE__
 #  include <proto/bsdsocket.h>
-  struct Library *SocketBase = NULL;
+#  ifdef HAVE_SYS_IOCTL_H
+#    include <sys/ioctl.h>
+#  endif
+#  ifdef __amigaos4__
+struct SocketIFace *ISocket = NULL;
+#  else
+struct Library *SocketBase = NULL;
+#  endif
+#  define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
 #endif
 /* includes end */"
-  ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "      $curl_includes_bsdsocket
+  ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "$curl_includes_bsdsocket
 "
 if test "x$ac_cv_header_proto_bsdsocket_h" = xyes
 then :
@@ -22521,15 +22871,67 @@ printf "%s\n" "$curl_cv_gclk_LIBS" >&6; }
 printf %s "checking if monotonic clock_gettime works... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#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;
+          if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
+            exit(0);
+          else
+            exit(1);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5
+printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;}
+        curl_func_clock_gettime="no"
+        LIBS="$curl_cv_save_LIBS"
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -22583,7 +22985,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
     fi
     #
@@ -22904,9 +23308,6 @@ printf "%s\n" "$as_me: WARNING: configure found only the libz header file, not t
   then
 
 
-printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
-
-
 printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h
 
 
@@ -23664,77 +24065,6 @@ printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h
   esac
 
 
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldapssl.h" >&5
-printf %s "checking for ldapssl.h... " >&6; }
-if test ${curl_cv_header_ldapssl_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>
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#endif
-#ifndef NULL
-#define NULL (void *)0
-#endif
-#ifndef LDAP_DEPRECATED
-#define LDAP_DEPRECATED 1
-#endif
-#ifdef NEED_LBER_H
-#include <lber.h>
-#endif
-#ifdef HAVE_LDAP_H
-#include <ldap.h>
-#endif
-#include <ldapssl.h>
-
-int main (void)
-{
-
-        char *cert_label = NULL;
-        LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-      curl_cv_header_ldapssl_h="yes"
-
-else $as_nop
-
-      curl_cv_header_ldapssl_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_ldapssl_h" >&5
-printf "%s\n" "$curl_cv_header_ldapssl_h" >&6; }
-  case "$curl_cv_header_ldapssl_h" in
-    yes)
-
-printf "%s\n" "#define HAVE_LDAPSSL_H 1" >>confdefs.h
-
-      ;;
-  esac
-
-
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_ssl.h" >&5
 printf %s "checking for ldap_ssl.h... " >&6; }
 if test ${curl_cv_header_ldap_ssl_h+y}
@@ -24074,12 +24404,6 @@ if test "x$ac_cv_func_ldap_url_parse" = xyes
 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
 
 
 printf %s "checking if argv can be written to... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  curl_cv_writable_argv=cross
+
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int main(int argc, char **argv)
+{
+  (void)argc;
+  argv[0][0] = ' ';
+  return (argv[0][0] == ' ')?0:1;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  curl_cv_writable_argv=yes
+
+else $as_nop
+  curl_cv_writable_argv=no
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   curl_cv_writable_argv=cross
 
@@ -24267,7 +24617,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
 case $curl_cv_writable_argv in
 yes)
@@ -24328,6 +24680,8 @@ then :
 fi
 
 
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
 save_CPPFLAGS="$CPPFLAGS"
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5
 printf %s "checking if GSS-API support is requested... " >&6; }
@@ -24335,6 +24689,144 @@ if test x"$want_gss" = xyes; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
+  if test $GSSAPI_ROOT != "/usr"; then
+
+    if test -n "$PKG_CONFIG"; then
+      PKGCONFIG="$PKG_CONFIG"
+    else
+      if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+  ac_pt_PKGCONFIG=$PKGCONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $ac_pt_PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKGCONFIG" = x; then
+    PKGCONFIG="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKGCONFIG=$ac_pt_PKGCONFIG
+  fi
+else
+  PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+    fi
+
+    if test "x$PKGCONFIG" != "xno"; then
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5
+printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; }
+            itexists=`
+    if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then
+      PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig"
+      export PKG_CONFIG_LIBDIR
+    fi
+         $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1`
+
+      if test -z "$itexists"; then
+                        PKGCONFIG="no"
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+      fi
+    fi
+
+  else
 
     if test -n "$PKG_CONFIG"; then
       PKGCONFIG="$PKG_CONFIG"
@@ -24471,11 +24963,14 @@ printf "%s\n" "found" >&6; }
       fi
     fi
 
+  fi
   if test -z "$GSSAPI_INCS"; then
      if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
      elif test "$PKGCONFIG" != "no" ; then
         GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi`
+     elif test -f "$KRB5CONFIG"; then
+        GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
      fi
@@ -24615,6 +25110,144 @@ printf "%s\n" "#define HAVE_GSSAPI 1" >>confdefs.h
         LIBS="-lgssapi_krb5 -lresolv $LIBS"
         ;;
      *)
+        if test $GSSAPI_ROOT != "/usr"; then
+
+    if test -n "$PKG_CONFIG"; then
+      PKGCONFIG="$PKG_CONFIG"
+    else
+      if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+  ac_pt_PKGCONFIG=$PKGCONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $ac_pt_PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKGCONFIG" = x; then
+    PKGCONFIG="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKGCONFIG=$ac_pt_PKGCONFIG
+  fi
+else
+  PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+    fi
+
+    if test "x$PKGCONFIG" != "xno"; then
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5
+printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; }
+            itexists=`
+    if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then
+      PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig"
+      export PKG_CONFIG_LIBDIR
+    fi
+         $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1`
+
+      if test -z "$itexists"; then
+                        PKGCONFIG="no"
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+      fi
+    fi
+
+        else
 
     if test -n "$PKG_CONFIG"; then
       PKGCONFIG="$PKG_CONFIG"
@@ -24751,12 +25384,16 @@ printf "%s\n" "found" >&6; }
       fi
     fi
 
+        fi
         if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
                                  gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
            LIBS="$gss_libs $LIBS"
         elif test "$PKGCONFIG" != "no" ; then
            gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
            LIBS="$gss_libs $LIBS"
+        elif test -f "$KRB5CONFIG"; then
+                                 gss_libs=`$KRB5CONFIG --libs gssapi`
+           LIBS="$gss_libs $LIBS"
         else
            case $host in
            *-hp-hpux*)
@@ -24791,6 +25428,53 @@ else
   CPPFLAGS="$save_CPPFLAGS"
 fi
 
+if test x"$want_gss" = xyes; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can link against GSS-API library" >&5
+printf %s "checking if we can link against GSS-API library... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define gss_init_sec_context innocuous_gss_init_sec_context
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef gss_init_sec_context
+#ifdef __cplusplus
+extern "C"
+#endif
+char gss_init_sec_context ();
+#if defined __stub_gss_init_sec_context || defined __stub___gss_init_sec_context
+choke me
+#endif
+
+int main (void)
+{
+return gss_init_sec_context ();
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+else $as_nop
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+    as_fn_error $? "--with-gssapi was specified, but a GSS-API library was not found." "$LINENO" 5
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
 build_libstubgss=no
 if test x"$want_gss" = "xyes"; then
   build_libstubgss=yes
 
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL)" >&5
-printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL)... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL v5)" >&5
+printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... " >&6; }
 if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
   if test "x$OPT_AMISSL" != xno; then
     ssl_msg=
-    if test "x$OPT_AMISSL" != "xno"; then
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+        #include <libraries/amisslmaster.h>
+        #include <openssl/opensslv.h>
+
+int main (void)
+{
+
+        #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
+            defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
+            defined(PROTO_AMISSL_H)
+        return 0;
+        #else
+        #error not AmiSSL v5 / OpenSSL 3
+        #endif
+
+ ;
+ 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; }
       ssl_msg="AmiSSL"
       test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       AMISSL_ENABLED=1
-      LIBS="-lamisslauto $LIBS"
+      OPENSSL_ENABLED=1
+      # Use AmiSSL's built-in ca bundle
+      check_for_ca_bundle=1
+      with_ca_fallback=yes
+      LIBS="-lamisslstubs -lamisslauto $LIBS"
 
 printf "%s\n" "#define USE_AMISSL 1" >>confdefs.h
 
 
 printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h
 
-    else
+
+printf "%s\n" "#define HAVE_OPENSSL3 1" >>confdefs.h
+
+      ac_fn_c_check_header_compile "$LINENO" "openssl/x509.h" "ac_cv_header_openssl_x509_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_x509_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_X509_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/rsa.h" "ac_cv_header_openssl_rsa_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_rsa_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_RSA_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/crypto.h" "ac_cv_header_openssl_crypto_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_crypto_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/pem.h" "ac_cv_header_openssl_pem_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_pem_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_PEM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_ssl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default"
+if test "x$ac_cv_header_openssl_err_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENSSL_ERR_H 1" >>confdefs.h
+
+fi
+
+                              CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED"
+
+else $as_nop
+
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-    fi
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
   else
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -25678,236 +26436,99 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf "%s\n" "$as_me: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&6;}
        fi
     fi
-
-  #
-
-  #
-  tst_api="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL headers version" >&5
-printf %s "checking for OpenSSL headers version... " >&6; }
-
-    OLDCPPFLAGS=$CPPFLAGS
-  # CPPPFLAG comes from CURL_CPP_P
-  CPPFLAGS="$CPPFLAGS $CPPPFLAG"
-      if test -z "$SED"; then
-    as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
-  fi
-  if test -z "$GREP"; then
-    as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
+    check_for_ca_bundle=1
   fi
 
-  tmp_exp=""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
+  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
+fi
 
-#   ifdef USE_OPENSSL
-#     include <openssl/crypto.h>
-#   else
-#     include <crypto.h>
-#   endif
+if test X"$OPT_OPENSSL" != Xno &&
+  test "$OPENSSL_ENABLED" != "1"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPT_OPENSSL: $OPT_OPENSSL" >&5
+printf "%s\n" "$as_me: OPT_OPENSSL: $OPT_OPENSSL" >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&5
+printf "%s\n" "$as_me: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&6;}
+  as_fn_error $? "--with-openssl was given but OpenSSL could not be detected" "$LINENO" 5
+fi
 
-#ifdef OPENSSL_VERSION_NUMBER
-CURL_DEF_TOKEN OPENSSL_VERSION_NUMBER
-#endif
 
+if test X"$OPENSSL_ENABLED" = X"1"; then
 
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
+# Check whether --with-egd-socket was given.
+if test ${with_egd_socket+y}
 then :
-
-    tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
-      "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
-      "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
-      "$SED" 's/["][ ]*["]//g' 2>/dev/null`
-    if test -z "$tmp_exp" || test "$tmp_exp" = "OPENSSL_VERSION_NUMBER"; then
-      tmp_exp=""
-    fi
+  withval=$with_egd_socket;  EGD_SOCKET="$withval"
 
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-  if test -z "$tmp_exp"; then
-    curl_cv_have_def_OPENSSL_VERSION_NUMBER=no
-
-  else
-    curl_cv_have_def_OPENSSL_VERSION_NUMBER=yes
-    curl_cv_def_OPENSSL_VERSION_NUMBER=$tmp_exp
 
-  fi
-      CPPFLAGS=$OLDCPPFLAGS
+  if test -n "$EGD_SOCKET" ; then
 
+printf "%s\n" "#define EGD_SOCKET \"$EGD_SOCKET\"" >>confdefs.h
 
-    OLDCPPFLAGS=$CPPFLAGS
-  # CPPPFLAG comes from CURL_CPP_P
-  CPPFLAGS="$CPPFLAGS $CPPPFLAG"
-      if test -z "$SED"; then
-    as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5
   fi
-  if test -z "$GREP"; then
-    as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5
-  fi
-
-  tmp_exp=""
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
 
-#     include <openssl/crypto.h>
-
-#ifdef OPENSSL_VERSION_STR
-CURL_DEF_TOKEN OPENSSL_VERSION_STR
-#endif
 
+# Check whether --with-random was given.
+if test ${with_random+y}
+then :
+  withval=$with_random;  RANDOM_FILE="$withval"
+else $as_nop
 
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
+          if test x$cross_compiling != xyes; then
+                        as_ac_File=`printf "%s\n" "ac_cv_file_"/dev/urandom"" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \"/dev/urandom\"" >&5
+printf %s "checking for \"/dev/urandom\"... " >&6; }
+if eval test \${$as_ac_File+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r ""/dev/urandom""; then
+  eval "$as_ac_File=yes"
+else
+  eval "$as_ac_File=no"
+fi
+fi
+eval ac_res=\$$as_ac_File
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"
 then :
+   RANDOM_FILE="/dev/urandom"
+fi
+
+          else
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: skipped the /dev/urandom detection when cross-compiling" >&5
+printf "%s\n" "$as_me: WARNING: skipped the /dev/urandom detection when cross-compiling" >&2;}
+          fi
 
-    tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
-      "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
-      "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \
-      "$SED" 's/["][ ]*["]//g' 2>/dev/null`
-    if test -z "$tmp_exp" || test "$tmp_exp" = "OPENSSL_VERSION_STR"; then
-      tmp_exp=""
-    fi
 
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-  if test -z "$tmp_exp"; then
-    curl_cv_have_def_OPENSSL_VERSION_STR=no
 
-  else
-    curl_cv_have_def_OPENSSL_VERSION_STR=yes
-    curl_cv_def_OPENSSL_VERSION_STR=$tmp_exp
+  if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
 
-  fi
-      CPPFLAGS=$OLDCPPFLAGS
 
-  if test "$curl_cv_have_def_OPENSSL_VERSION_NUMBER" = "yes"; then
-    tst_verlen=`expr "$curl_cv_def_OPENSSL_VERSION_NUMBER" : '.*'`
-    case "x$tst_verlen" in
-      x6)
-        tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
-        tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 4`
-        tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
-        tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
-        ;;
-      x11|x10)
-        tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
-        tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
-        tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 7`
-        tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
-        ;;
-      *)
-        if test "$curl_cv_have_def_OPENSSL_VERSION_STR" = "yes"; then
-          ver=`echo $curl_cv_def_OPENSSL_VERSION_STR | sed 's/"//g'`;
-          tst_vermaj=`echo $ver | cut -d. -f1`
-          tst_vermin=`echo $ver | cut -d. -f2`
-          tst_verfix=`echo $ver | cut -d. -f3`
-          tst_show="$ver"
-          tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
-        else
-          tst_api="unknown"
-        fi
-        ;;
-    esac
-    case $tst_api in
-      0x111) tst_show="1.1.1" ;;
-      0x110) tst_show="1.1.0" ;;
-      0x102) tst_show="1.0.2" ;;
-      0x101) tst_show="1.0.1" ;;
-      0x100) tst_show="1.0.0" ;;
-      0x099) tst_show="0.9.9" ;;
-      0x098) tst_show="0.9.8" ;;
-      0x097) tst_show="0.9.7" ;;
-      0x096) tst_show="0.9.6" ;;
-      0x095) tst_show="0.9.5" ;;
-      0x094) tst_show="0.9.4" ;;
-      0x093) tst_show="0.9.3" ;;
-      0x092) tst_show="0.9.2" ;;
-      0x091) tst_show="0.9.1" ;;
-      *)
-      if test -z "$tst_show"; then
-        tst_show="unknown"
-      fi
-      ;;
-    esac
-    tst_show="$tst_show - $tst_api"
-  else
-    tst_show="unknown"
-  fi
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_show" >&5
-printf "%s\n" "$tst_show" >&6; }
-  #
-  curl_openssl_api_headers=$tst_api
+printf "%s\n" "#define RANDOM_FILE \"$RANDOM_FILE\"" >>confdefs.h
 
+  fi
+fi
 
-  #
-  tst_api="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL library version" >&5
-printf %s "checking for OpenSSL library version... " >&6; }
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test "$OPENSSL_ENABLED" = "1"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRP support in OpenSSL" >&5
+printf %s "checking for SRP support in OpenSSL... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
-#define SSL_CTX_load_verify_dir innocuous_SSL_CTX_load_verify_dir
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_load_verify_dir
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_load_verify_dir ();
-#if defined __stub_SSL_CTX_load_verify_dir || defined __stub___SSL_CTX_load_verify_dir
-choke me
-#endif
+#include <openssl/ssl.h>
 
 int main (void)
 {
-return SSL_CTX_load_verify_dir ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x300"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
 
-#define ERR_clear_last_mark innocuous_ERR_clear_last_mark
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ERR_clear_last_mark
-#ifdef __cplusplus
-extern "C"
-#endif
-char ERR_clear_last_mark ();
-#if defined __stub_ERR_clear_last_mark || defined __stub___ERR_clear_last_mark
-choke me
-#endif
+      SSL_CTX_set_srp_username(NULL, "");
+      SSL_CTX_set_srp_password(NULL, "");
 
-int main (void)
-{
-return ERR_clear_last_mark ();
  ;
  return 0;
 }
@@ -25916,695 +26537,52 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
 
-      tst_api="0x111"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    case $host in
-      *-*-vms*)
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
+printf "%s\n" "#define HAVE_OPENSSL_SRP 1" >>confdefs.h
 
-#define SSL_CTX_set_not_resumbl_sess_cb innocuous_SSL_CTX_set_not_resumbl_sess_cb
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_not_resumbl_sess_cb
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_not_resumbl_sess_cb ();
-#if defined __stub_SSL_CTX_set_not_resumbl_sess_cb || defined __stub___SSL_CTX_set_not_resumbl_sess_cb
-choke me
-#endif
+    HAVE_OPENSSL_SRP=1
 
-int main (void)
-{
-return SSL_CTX_set_not_resumbl_sess_cb ();
- ;
- return 0;
-}
 
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
+else $as_nop
 
-          tst_api="0x110"
+    { 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_exeext conftest.$ac_ext
-        ;;
-      *)
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define SSL_CTX_set_not_resumable_session_callback innocuous_SSL_CTX_set_not_resumable_session_callback
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_not_resumable_session_callback
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_not_resumable_session_callback ();
-#if defined __stub_SSL_CTX_set_not_resumable_session_callback || defined __stub___SSL_CTX_set_not_resumable_session_callback
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_not_resumable_session_callback ();
- ;
- return 0;
-}
+fi
 
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
+if test X"$OPENSSL_ENABLED" = X"1"; then
+# Check whether --enable-openssl-auto-load-config was given.
+if test ${enable_openssl_auto_load_config+y}
 then :
+  enableval=$enable_openssl_auto_load_config;  if test X"$enableval" = X"no"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: automatic loading of OpenSSL configuration disabled" >&5
+printf "%s\n" "$as_me: automatic loading of OpenSSL configuration disabled" >&6;}
 
-          tst_api="0x110"
+printf "%s\n" "#define CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG 1" >>confdefs.h
 
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-        ;;
-    esac
   fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
+fi
 
-#define SSL_CONF_CTX_new innocuous_SSL_CONF_CTX_new
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CONF_CTX_new
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CONF_CTX_new ();
-#if defined __stub_SSL_CONF_CTX_new || defined __stub___SSL_CONF_CTX_new
-choke me
-#endif
+fi
 
-int main (void)
-{
-return SSL_CONF_CTX_new ();
- ;
- return 0;
-}
 
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
 
-      tst_api="0x102"
+if test "x$OPT_GNUTLS" != xno; then
+  ssl_msg=
 
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  if test X"$OPT_GNUTLS" != Xno; then
 
-
-#define SSL_renegotiate_abbreviated innocuous_SSL_renegotiate_abbreviated
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_renegotiate_abbreviated
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_renegotiate_abbreviated ();
-#if defined __stub_SSL_renegotiate_abbreviated || defined __stub___SSL_renegotiate_abbreviated
-choke me
-#endif
-
-int main (void)
-{
-return SSL_renegotiate_abbreviated ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x101"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define OBJ_add_sigid innocuous_OBJ_add_sigid
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef OBJ_add_sigid
-#ifdef __cplusplus
-extern "C"
-#endif
-char OBJ_add_sigid ();
-#if defined __stub_OBJ_add_sigid || defined __stub___OBJ_add_sigid
-choke me
-#endif
-
-int main (void)
-{
-return OBJ_add_sigid ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x100"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define ERR_set_mark innocuous_ERR_set_mark
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ERR_set_mark
-#ifdef __cplusplus
-extern "C"
-#endif
-char ERR_set_mark ();
-#if defined __stub_ERR_set_mark || defined __stub___ERR_set_mark
-choke me
-#endif
-
-int main (void)
-{
-return ERR_set_mark ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x098"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define ERR_peek_last_error innocuous_ERR_peek_last_error
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ERR_peek_last_error
-#ifdef __cplusplus
-extern "C"
-#endif
-char ERR_peek_last_error ();
-#if defined __stub_ERR_peek_last_error || defined __stub___ERR_peek_last_error
-choke me
-#endif
-
-int main (void)
-{
-return ERR_peek_last_error ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x097"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define c2i_ASN1_OBJECT innocuous_c2i_ASN1_OBJECT
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef c2i_ASN1_OBJECT
-#ifdef __cplusplus
-extern "C"
-#endif
-char c2i_ASN1_OBJECT ();
-#if defined __stub_c2i_ASN1_OBJECT || defined __stub___c2i_ASN1_OBJECT
-choke me
-#endif
-
-int main (void)
-{
-return c2i_ASN1_OBJECT ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x096"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define SSL_CTX_set_purpose innocuous_SSL_CTX_set_purpose
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_purpose
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_purpose ();
-#if defined __stub_SSL_CTX_set_purpose || defined __stub___SSL_CTX_set_purpose
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_purpose ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x095"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define OBJ_obj2txt innocuous_OBJ_obj2txt
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef OBJ_obj2txt
-#ifdef __cplusplus
-extern "C"
-#endif
-char OBJ_obj2txt ();
-#if defined __stub_OBJ_obj2txt || defined __stub___OBJ_obj2txt
-choke me
-#endif
-
-int main (void)
-{
-return OBJ_obj2txt ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x094"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define SSL_get_verify_depth innocuous_SSL_get_verify_depth
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_get_verify_depth
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_get_verify_depth ();
-#if defined __stub_SSL_get_verify_depth || defined __stub___SSL_get_verify_depth
-choke me
-#endif
-
-int main (void)
-{
-return SSL_get_verify_depth ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x093"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define SSL_library_init innocuous_SSL_library_init
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_library_init
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_library_init ();
-#if defined __stub_SSL_library_init || defined __stub___SSL_library_init
-choke me
-#endif
-
-int main (void)
-{
-return SSL_library_init ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x092"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  if test "$tst_api" = "unknown"; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define SSL_CTX_set_cipher_list innocuous_SSL_CTX_set_cipher_list
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef SSL_CTX_set_cipher_list
-#ifdef __cplusplus
-extern "C"
-#endif
-char SSL_CTX_set_cipher_list ();
-#if defined __stub_SSL_CTX_set_cipher_list || defined __stub___SSL_CTX_set_cipher_list
-choke me
-#endif
-
-int main (void)
-{
-return SSL_CTX_set_cipher_list ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-      tst_api="0x091"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  fi
-  case $tst_api in
-    0x300) tst_show="3.0.0" ;;
-    0x111) tst_show="1.1.1" ;;
-    0x110) tst_show="1.1.0" ;;
-    0x102) tst_show="1.0.2" ;;
-    0x101) tst_show="1.0.1" ;;
-    0x100) tst_show="1.0.0" ;;
-    0x099) tst_show="0.9.9" ;;
-    0x098) tst_show="0.9.8" ;;
-    0x097) tst_show="0.9.7" ;;
-    0x096) tst_show="0.9.6" ;;
-    0x095) tst_show="0.9.5" ;;
-    0x094) tst_show="0.9.4" ;;
-    0x093) tst_show="0.9.3" ;;
-    0x092) tst_show="0.9.2" ;;
-    0x091) tst_show="0.9.1" ;;
-    *)     tst_show="unknown" ;;
-  esac
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_show" >&5
-printf "%s\n" "$tst_show" >&6; }
-  #
-  curl_openssl_api_library=$tst_api
-
-  #
-  tst_match="yes"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL headers and library versions matching" >&5
-printf %s "checking for OpenSSL headers and library versions matching... " >&6; }
-  if test "$curl_openssl_api_headers" = "unknown" ||
-    test "$curl_openssl_api_library" = "unknown"; then
-    tst_match="fail"
-    tst_warns="Can not compare OpenSSL headers and library versions."
-  elif test "$curl_openssl_api_headers" != "$curl_openssl_api_library"; then
-    tst_match="no"
-    tst_warns="OpenSSL headers and library versions do not match."
-  fi
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_match" >&5
-printf "%s\n" "$tst_match" >&6; }
-  if test "$tst_match" != "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $tst_warns" >&5
-printf "%s\n" "$as_me: WARNING: $tst_warns" >&2;}
-  fi
-
-    check_for_ca_bundle=1
-  fi
-
-  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
-fi
-
-if test X"$OPT_OPENSSL" != Xno &&
-  test "$OPENSSL_ENABLED" != "1"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPT_OPENSSL: $OPT_OPENSSL" >&5
-printf "%s\n" "$as_me: OPT_OPENSSL: $OPT_OPENSSL" >&6;}
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&5
-printf "%s\n" "$as_me: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&6;}
-  as_fn_error $? "--with-openssl was given but OpenSSL could not be detected" "$LINENO" 5
-fi
-
-
-if test X"$OPENSSL_ENABLED" = X"1"; then
-
-# Check whether --with-egd-socket was given.
-if test ${with_egd_socket+y}
-then :
-  withval=$with_egd_socket;  EGD_SOCKET="$withval"
-
-fi
-
-  if test -n "$EGD_SOCKET" ; then
-
-printf "%s\n" "#define EGD_SOCKET \"$EGD_SOCKET\"" >>confdefs.h
-
-  fi
-
-
-# Check whether --with-random was given.
-if test ${with_random+y}
-then :
-  withval=$with_random;  RANDOM_FILE="$withval"
-else $as_nop
-
-          if test x$cross_compiling != xyes; then
-                        as_ac_File=`printf "%s\n" "ac_cv_file_"/dev/urandom"" | $as_tr_sh`
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \"/dev/urandom\"" >&5
-printf %s "checking for \"/dev/urandom\"... " >&6; }
-if eval test \${$as_ac_File+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  test "$cross_compiling" = yes &&
-  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
-if test -r ""/dev/urandom""; then
-  eval "$as_ac_File=yes"
-else
-  eval "$as_ac_File=no"
-fi
-fi
-eval ac_res=\$$as_ac_File
-              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-printf "%s\n" "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_File"\" = x"yes"
-then :
-   RANDOM_FILE="/dev/urandom"
-fi
-
-          else
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: skipped the /dev/urandom detection when cross-compiling" >&5
-printf "%s\n" "$as_me: WARNING: skipped the /dev/urandom detection when cross-compiling" >&2;}
-          fi
-
-
-fi
-
-  if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
-
-
-printf "%s\n" "#define RANDOM_FILE \"$RANDOM_FILE\"" >>confdefs.h
-
-  fi
-fi
-
-if test "$OPENSSL_ENABLED" = "1"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRP_Calc_client_key in -lcrypto" >&5
-printf %s "checking for SRP_Calc_client_key in -lcrypto... " >&6; }
-if test ${ac_cv_lib_crypto_SRP_Calc_client_key+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char SRP_Calc_client_key ();
-int main (void)
-{
-return SRP_Calc_client_key ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_lib_crypto_SRP_Calc_client_key=yes
-else $as_nop
-  ac_cv_lib_crypto_SRP_Calc_client_key=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_crypto_SRP_Calc_client_key" >&5
-printf "%s\n" "$ac_cv_lib_crypto_SRP_Calc_client_key" >&6; }
-if test "x$ac_cv_lib_crypto_SRP_Calc_client_key" = xyes
-then :
-
-
-printf "%s\n" "#define HAVE_OPENSSL_SRP 1" >>confdefs.h
-
-     HAVE_OPENSSL_SRP=1
-
-
-fi
-
-fi
-
-if test X"$OPENSSL_ENABLED" = X"1"; then
-# Check whether --enable-openssl-auto-load-config was given.
-if test ${enable_openssl_auto_load_config+y}
-then :
-  enableval=$enable_openssl_auto_load_config;  if test X"$enableval" = X"no"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: automatic loading of OpenSSL configuration disabled" >&5
-printf "%s\n" "$as_me: automatic loading of OpenSSL configuration disabled" >&6;}
-
-printf "%s\n" "#define CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG 1" >>confdefs.h
-
-  fi
-
-fi
-
-fi
-
-
-
-if test "x$OPT_GNUTLS" != xno; then
-  ssl_msg=
-
-  if test X"$OPT_GNUTLS" != Xno; then
-
-    addld=""
-    addlib=""
-    gtlslib=""
-    version=""
-    addcflags=""
+    addld=""
+    addlib=""
+    gtlslib=""
+    version=""
+    addcflags=""
 
     if test "x$OPT_GNUTLS" = "xyes"; then
 
@@ -27403,6 +27381,7 @@ printf %s "checking for wolfSSL_Init in -lwolfssl... " >&6; }
    They are set up properly later if it is detected.  */
 #undef SIZEOF_LONG
 #undef SIZEOF_LONG_LONG
+#include <wolfssl/options.h>
 #include <wolfssl/ssl.h>
 
 int main (void)
@@ -27449,14 +27428,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
 printf "%s\n" "$as_me: detected wolfSSL" >&6;}
       check_for_ca_bundle=1
 
-            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
 printf %s "checking size of long long... " >&6; }
-if test ${ac_cv_sizeof_long_long+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -27464,28 +27442,39 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (long long) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(long long) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_long_long=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_long_long != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of long long" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_long long" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_long_long = x ; then
-  as_fn_error $? "cannot determine a size for long long" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-printf "%s\n" "$ac_cv_sizeof_long_long" >&6; }
+printf "%s\n" "#define SIZEOF_LONG_LONG $r" >>confdefs.h
 
-printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h
 
 
 
@@ -27512,18 +27501,6 @@ then :
 
 printf "%s\n" "#define HAVE_WOLFSSL_DES_ECB_ENCRYPT 1" >>confdefs.h
 
-            if test -n "$addcflags"; then
-                            for f in $addcflags; do
-                CPPFLAGS="$f/wolfssl $CPPFLAGS"
-                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $f/wolfssl to CPPFLAGS" >&5
-printf "%s\n" "$as_me: Add $f/wolfssl to CPPFLAGS" >&6;}
-                break
-              done
-            else
-                                          CPPFLAGS="-I/usr/include/wolfssl $CPPFLAGS"
-              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add /usr/include/wolfssl to CPPFLAGS" >&5
-printf "%s\n" "$as_me: Add /usr/include/wolfssl to CPPFLAGS" >&6;}
-            fi
             WOLFSSL_NTLM=1
 
 
@@ -27538,7 +27515,8 @@ fi
 printf "%s\n" "$as_me: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&6;}
         fi
       fi
-
+    else
+        as_fn_error $? "--with-wolfssl but wolfSSL was not found or doesn't work" "$LINENO" 5
     fi
 
   fi
 
 
 
-if test "x$OPT_MESALINK" != xno; then
+if test "x$OPT_BEARSSL" != xno; then
   _cppflags=$CPPFLAGS
   _ldflags=$LDFLAGS
   ssl_msg=
 
-  if test X"$OPT_MESALINK" != Xno; then
+  if test X"$OPT_BEARSSL" != Xno; then
 
-    if test "$OPT_MESALINK" = "yes"; then
-      OPT_MESALINK=""
+    if test "$OPT_BEARSSL" = "yes"; then
+      OPT_BEARSSL=""
     fi
 
-    if test -z "$OPT_MESALINK" ; then
+    if test -z "$OPT_BEARSSL" ; then
 
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mesalink_library_init in -lmesalink" >&5
-printf %s "checking for mesalink_library_init in -lmesalink... " >&6; }
-if test ${ac_cv_lib_mesalink_mesalink_library_init+y}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5
+printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; }
+if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y}
 then :
   printf %s "(cached) " >&6
 else $as_nop
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmesalink  $LIBS"
+LIBS="-lbearssl -lbearssl $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -27576,38 +27554,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char mesalink_library_init ();
+char br_ssl_client_init_full ();
 int main (void)
 {
-return mesalink_library_init ();
+return br_ssl_client_init_full ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_mesalink_mesalink_library_init=yes
+  ac_cv_lib_bearssl_br_ssl_client_init_full=yes
 else $as_nop
-  ac_cv_lib_mesalink_mesalink_library_init=no
+  ac_cv_lib_bearssl_br_ssl_client_init_full=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_mesalink_mesalink_library_init" >&5
-printf "%s\n" "$ac_cv_lib_mesalink_mesalink_library_init" >&6; }
-if test "x$ac_cv_lib_mesalink_mesalink_library_init" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5
+printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; }
+if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes
 then :
 
 
-printf "%s\n" "#define USE_MESALINK 1" >>confdefs.h
+printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h
 
-         USE_MESALINK=1
+         USE_BEARSSL=1
 
-         MESALINK_ENABLED=1
-         USE_MESALINK="yes"
-         ssl_msg="MesaLink"
-        test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+         BEARSSL_ENABLED=1
+         USE_BEARSSL="yes"
+         ssl_msg="BearSSL"
+        test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
 
 fi
 
     addld=""
     addlib=""
     addcflags=""
-    mesalinklib=""
+    bearssllib=""
 
-    if test "x$USE_MESALINK" != "xyes"; then
-            addld=-L$OPT_MESALINK/lib$libsuff
-      addcflags=-I$OPT_MESALINK/include
-      mesalinklib=$OPT_MESALINK/lib$libsuff
+    if test "x$USE_BEARSSL" != "xyes"; then
+            addld=-L$OPT_BEARSSL/lib$libsuff
+      addcflags=-I$OPT_BEARSSL/include
+      bearssllib=$OPT_BEARSSL/lib$libsuff
 
       LDFLAGS="$LDFLAGS $addld"
       if test "$addcflags" != "-I/usr/include"; then
          CPPFLAGS="$CPPFLAGS $addcflags"
       fi
 
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mesalink_library_init in -lmesalink" >&5
-printf %s "checking for mesalink_library_init in -lmesalink... " >&6; }
-if test ${ac_cv_lib_mesalink_mesalink_library_init+y}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5
+printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; }
+if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y}
 then :
   printf %s "(cached) " >&6
 else $as_nop
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmesalink  $LIBS"
+LIBS="-lbearssl -lbearssl $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -27643,38 +27621,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char mesalink_library_init ();
+char br_ssl_client_init_full ();
 int main (void)
 {
-return mesalink_library_init ();
+return br_ssl_client_init_full ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_mesalink_mesalink_library_init=yes
+  ac_cv_lib_bearssl_br_ssl_client_init_full=yes
 else $as_nop
-  ac_cv_lib_mesalink_mesalink_library_init=no
+  ac_cv_lib_bearssl_br_ssl_client_init_full=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_mesalink_mesalink_library_init" >&5
-printf "%s\n" "$ac_cv_lib_mesalink_mesalink_library_init" >&6; }
-if test "x$ac_cv_lib_mesalink_mesalink_library_init" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5
+printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; }
+if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes
 then :
 
 
-printf "%s\n" "#define USE_MESALINK 1" >>confdefs.h
+printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h
 
-       USE_MESALINK=1
+       USE_BEARSSL=1
 
-       MESALINK_ENABLED=1
-       USE_MESALINK="yes"
-       ssl_msg="MesaLink"
-       test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
+       BEARSSL_ENABLED=1
+       USE_BEARSSL="yes"
+       ssl_msg="BearSSL"
+       test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
 
 else $as_nop
 
 
     fi
 
-    if test "x$USE_MESALINK" = "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected MesaLink" >&5
-printf "%s\n" "$as_me: detected MesaLink" >&6;}
+    if test "x$USE_BEARSSL" = "xyes"; then
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected BearSSL" >&5
+printf "%s\n" "$as_me: detected BearSSL" >&6;}
+      check_for_ca_bundle=1
 
-      LIBS="-lmesalink $LIBS"
+      LIBS="-lbearssl $LIBS"
 
-      if test -n "$mesalinklib"; then
+      if test -n "$bearssllib"; then
                                         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mesalinklib"
-          export LD_LIBRARY_PATH
-          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $mesalinklib to LD_LIBRARY_PATH" >&5
-printf "%s\n" "$as_me: Added $mesalinklib to LD_LIBRARY_PATH" >&6;}
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib"
+          export CURL_LIBRARY_PATH
+          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $bearssllib to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $bearssllib to CURL_LIBRARY_PATH" >&6;}
         fi
       fi
     fi
 
 
 
-if test "x$OPT_BEARSSL" != xno; then
-  _cppflags=$CPPFLAGS
-  _ldflags=$LDFLAGS
-  ssl_msg=
-
-  if test X"$OPT_BEARSSL" != Xno; then
-
-    if test "$OPT_BEARSSL" = "yes"; then
-      OPT_BEARSSL=""
-    fi
-
-    if test -z "$OPT_BEARSSL" ; then
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5
-printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; }
-if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbearssl -lbearssl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char br_ssl_client_init_full ();
-int main (void)
-{
-return br_ssl_client_init_full ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_lib_bearssl_br_ssl_client_init_full=yes
-else $as_nop
-  ac_cv_lib_bearssl_br_ssl_client_init_full=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_bearssl_br_ssl_client_init_full" >&5
-printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; }
-if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes
-then :
-
-
-printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h
-
-         USE_BEARSSL=1
-
-         BEARSSL_ENABLED=1
-         USE_BEARSSL="yes"
-         ssl_msg="BearSSL"
-        test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-
-fi
-
-    fi
-
-    addld=""
-    addlib=""
-    addcflags=""
-    bearssllib=""
-
-    if test "x$USE_BEARSSL" != "xyes"; then
-            addld=-L$OPT_BEARSSL/lib$libsuff
-      addcflags=-I$OPT_BEARSSL/include
-      bearssllib=$OPT_BEARSSL/lib$libsuff
-
-      LDFLAGS="$LDFLAGS $addld"
-      if test "$addcflags" != "-I/usr/include"; then
-         CPPFLAGS="$CPPFLAGS $addcflags"
-      fi
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5
-printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; }
-if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbearssl -lbearssl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-char br_ssl_client_init_full ();
-int main (void)
-{
-return br_ssl_client_init_full ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_lib_bearssl_br_ssl_client_init_full=yes
-else $as_nop
-  ac_cv_lib_bearssl_br_ssl_client_init_full=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_bearssl_br_ssl_client_init_full" >&5
-printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; }
-if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes
-then :
-
-
-printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h
-
-       USE_BEARSSL=1
-
-       BEARSSL_ENABLED=1
-       USE_BEARSSL="yes"
-       ssl_msg="BearSSL"
-       test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-
-else $as_nop
-
-         CPPFLAGS=$_cppflags
-         LDFLAGS=$_ldflags
-
-fi
-
-    fi
-
-    if test "x$USE_BEARSSL" = "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected BearSSL" >&5
-printf "%s\n" "$as_me: detected BearSSL" >&6;}
-      check_for_ca_bundle=1
-
-      LIBS="-lbearssl $LIBS"
-
-      if test -n "$bearssllib"; then
-                                        if test "x$cross_compiling" != "xyes"; then
-          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib"
-          export CURL_LIBRARY_PATH
-          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $bearssllib to CURL_LIBRARY_PATH" >&5
-printf "%s\n" "$as_me: Added $bearssllib to CURL_LIBRARY_PATH" >&6;}
-        fi
-      fi
-    fi
-
-  fi
-  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
-fi
-
-
-
-if test "x$OPT_RUSTLS" != xno; then
+if test "x$OPT_RUSTLS" != xno; then
   _cppflags=$CPPFLAGS
   _ldflags=$LDFLAGS
   ssl_msg=
@@ -28475,13 +28294,16 @@ if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then
   LIBS="-ladvapi32 -lcrypt32 $LIBS"
 fi
 
-case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
+if test "x$curl_cv_native_windows" = "xyes" &&
+   test "x$curl_mingw_original" = "xno"; then
+  LIBS="-lbcrypt $LIBS"
+fi
+
+case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED"
 in
 x)
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&5
-printf "%s\n" "$as_me: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more." >&2;}
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this." >&5
-printf "%s\n" "$as_me: WARNING: Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this." >&2;}
+  as_fn_error $? "TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.
+Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." "$LINENO" 5
   ;;
 x1)
   # one SSL backend is enabled
@@ -28490,6 +28312,14 @@ x1)
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5
 printf "%s\n" "$as_me: built with one SSL backend" >&6;}
   ;;
+xD)
+  # explicitly built without TLS
+  ;;
+xD*)
+  as_fn_error $? "--without-ssl has been set together with an explicit option to use an ssl library
+(e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl, --with-rustls).
+Since these are conflicting parameters, verify which is the desired one and drop the other." "$LINENO" 5
+  ;;
 *)
   # more than one SSL backend is enabled
 
@@ -29122,13 +28952,10 @@ then :
 fi
 
 
-         for ac_header in libssh2.h
-do :
   ac_fn_c_check_header_compile "$LINENO" "libssh2.h" "ac_cv_header_libssh2_h" "$ac_includes_default"
 if test "x$ac_cv_header_libssh2_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_LIBSSH2_H 1" >>confdefs.h
- curl_ssh_msg="enabled (libSSH2)"
+  curl_ssh_msg="enabled (libSSH2)"
     LIBSSH2_ENABLED=1
 
 printf "%s\n" "#define USE_LIBSSH2 1" >>confdefs.h
@@ -29138,7 +28965,6 @@ printf "%s\n" "#define USE_LIBSSH2 1" >>confdefs.h
 
 fi
 
-done
 
   if test X"$OPT_LIBSSH2" != Xoff &&
      test "$LIBSSH2_ENABLED" != "1"; then
@@ -29375,13 +29201,10 @@ then :
 fi
 
 
-         for ac_header in libssh/libssh.h
-do :
   ac_fn_c_check_header_compile "$LINENO" "libssh/libssh.h" "ac_cv_header_libssh_libssh_h" "$ac_includes_default"
 if test "x$ac_cv_header_libssh_libssh_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_LIBSSH_LIBSSH_H 1" >>confdefs.h
- curl_ssh_msg="enabled (libSSH)"
+  curl_ssh_msg="enabled (libSSH)"
     LIBSSH_ENABLED=1
 
 printf "%s\n" "#define USE_LIBSSH 1" >>confdefs.h
@@ -29391,7 +29214,6 @@ printf "%s\n" "#define USE_LIBSSH 1" >>confdefs.h
 
 fi
 
-done
 
   if test X"$OPT_LIBSSH" != Xoff &&
      test "$LIBSSH_ENABLED" != "1"; then
@@ -29811,6 +29633,9 @@ else
 fi
 
 
+CURL_PLIST_VERSION="$CURLVERSION"
+
+
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows native IDN (Windows native builds only)" >&5
 printf %s "checking whether to enable Windows native IDN (Windows native builds only)... " >&6; }
@@ -29959,31 +29784,37 @@ then :
   withval=$with_libidn2; OPT_IDN=$withval
 fi
 
-case "$OPT_IDN" in
-  no)
-        want_idn="no"
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+if test "x$tst_links_winidn" = "xyes"; then
+  want_idn="no"
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (using winidn instead)" >&5
+printf "%s\n" "no (using winidn instead)" >&6; }
+else
+  case "$OPT_IDN" in
+    no)
+            want_idn="no"
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-    ;;
-  default)
-        want_idn="yes"
-    want_idn_path="default"
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5
+      ;;
+    default)
+            want_idn="yes"
+      want_idn_path="default"
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5
 printf "%s\n" "(assumed) yes" >&6; }
-    ;;
-  yes)
-        want_idn="yes"
-    want_idn_path="default"
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+      ;;
+    yes)
+            want_idn="yes"
+      want_idn_path="default"
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-    ;;
-  *)
-        want_idn="yes"
-    want_idn_path="$withval"
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5
+      ;;
+    *)
+            want_idn="yes"
+      want_idn_path="$withval"
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5
 printf "%s\n" "yes ($withval)" >&6; }
-    ;;
-esac
+      ;;
+  esac
+fi
 
 if test "$want_idn" = "yes"; then
     clean_CPPFLAGS="$CPPFLAGS"
@@ -30425,10 +30256,12 @@ case "$OPT_H2" in
   yes)
         want_nghttp2="default"
     want_nghttp2_path=""
+    want_nghttp2_pkg_config_path=""
     ;;
   *)
         want_nghttp2="yes"
-    want_nghttp2_path="$withval/lib/pkgconfig"
+    want_nghttp2_path="$withval"
+    want_nghttp2_pkg_config_path="$withval/lib/pkgconfig"
     ;;
 esac
 
@@ -30557,8 +30390,8 @@ fi
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp2 options with pkg-config" >&5
 printf %s "checking for libnghttp2 options with pkg-config... " >&6; }
             itexists=`
-    if test -n "$want_nghttp2_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+    if test -n "$want_nghttp2_pkg_config_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
       export PKG_CONFIG_LIBDIR
     fi
          $PKGCONFIG --exists libnghttp2 >/dev/null 2>&1 && echo 1`
@@ -30576,8 +30409,8 @@ printf "%s\n" "found" >&6; }
 
   if test "$PKGCONFIG" != "no" ; then
     LIB_H2=`
-    if test -n "$want_nghttp2_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+    if test -n "$want_nghttp2_pkg_config_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
       export PKG_CONFIG_LIBDIR
     fi
 
@@ -30586,8 +30419,8 @@ printf "%s\n" "found" >&6; }
 printf "%s\n" "$as_me: -l is $LIB_H2" >&6;}
 
     CPP_H2=`
-    if test -n "$want_nghttp2_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+    if test -n "$want_nghttp2_pkg_config_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
       export PKG_CONFIG_LIBDIR
     fi
        $PKGCONFIG --cflags-only-I libnghttp2`
@@ -30595,8 +30428,8 @@ printf "%s\n" "$as_me: -l is $LIB_H2" >&6;}
 printf "%s\n" "$as_me: -I is $CPP_H2" >&6;}
 
     LD_H2=`
-    if test -n "$want_nghttp2_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp2_path"
+    if test -n "$want_nghttp2_pkg_config_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path"
       export PKG_CONFIG_LIBDIR
     fi
 
@@ -30604,13 +30437,23 @@ printf "%s\n" "$as_me: -I is $CPP_H2" >&6;}
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_H2" >&5
 printf "%s\n" "$as_me: -L is $LD_H2" >&6;}
 
-    LDFLAGS="$LDFLAGS $LD_H2"
-    CPPFLAGS="$CPPFLAGS $CPP_H2"
-    LIBS="$LIB_H2 $LIBS"
+    DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'`
+  elif test x"$want_nghttp2_path" != x; then
+    LIB_H2="-lnghttp2"
+    LD_H2=-L${want_nghttp2_path}/lib$libsuff
+    CPP_H2=-I${want_nghttp2_path}/include
+    DIR_H2=${want_nghttp2_path}/lib$libsuff
+  elif test X"$want_nghttp2" != Xdefault; then
+            as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5
+  fi
+
+  LDFLAGS="$LDFLAGS $LD_H2"
+  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
+  # 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}
 then :
@@ -30648,42 +30491,40 @@ 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
 then :
 
-              for ac_header in nghttp2/nghttp2.h
+            for ac_header in nghttp2/nghttp2.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default"
 if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes
 then :
   printf "%s\n" "#define HAVE_NGHTTP2_NGHTTP2_H 1" >>confdefs.h
  curl_h2_msg="enabled (nghttp2)"
-          NGHTTP2_ENABLED=1
+        NGHTTP2_ENABLED=1
 
 printf "%s\n" "#define USE_NGHTTP2 1" >>confdefs.h
 
-          USE_NGHTTP2=1
+        USE_NGHTTP2=1
 
 
 fi
 
 done
 
+     CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2"
+     export CURL_LIBRARY_PATH
+     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_H2 to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_H2 to CURL_LIBRARY_PATH" >&6;}
+
 else $as_nop
-          LDFLAGS=$CLEANLDFLAGS
-        CPPFLAGS=$CLEANCPPFLAGS
-        LIBS=$CLEANLIBS
+        LDFLAGS=$CLEANLDFLAGS
+      CPPFLAGS=$CLEANCPPFLAGS
+      LIBS=$CLEANLIBS
 
 fi
 
-
-  else
-        if test X"$want_nghttp2" != Xdefault; then
-                  as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5
-    fi
-  fi
-
 fi
 
 
-OPT_TCP2="yes"
+OPT_TCP2="no"
 
 if test "x$disable_http" = "xyes"; then
   # without HTTP, ngtcp2 is no use
@@ -31145,9 +30986,9 @@ printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&6;}
     if test "x$cross_compiling" != "xyes"; then
       DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'`
     fi
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_openssl" >&5
-printf %s "checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_openssl... " >&6; }
-if test ${ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial+y}
+    { 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}
 then :
   printf %s "(cached) " >&6
 else $as_nop
@@ -31160,27 +31001,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char ngtcp2_crypto_ctx_initial ();
+char ngtcp2_crypto_recv_client_initial_cb ();
 int main (void)
 {
-return ngtcp2_crypto_ctx_initial ();
+return ngtcp2_crypto_recv_client_initial_cb ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial=yes
+  ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=yes
 else $as_nop
-  ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial=no
+  ac_cv_lib_ngtcp2_crypto_openssl_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_ctx_initial" >&5
-printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" >&6; }
-if test "x$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_ctx_initial" = xyes
+{ 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
 then :
 
               for ac_header in ngtcp2/ngtcp2_crypto.h
@@ -31398,9 +31239,9 @@ printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_GNUTLS" >&6;}
     if test "x$cross_compiling" != "xyes"; then
       DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'`
     fi
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_gnutls" >&5
-printf %s "checking for ngtcp2_crypto_ctx_initial in -lngtcp2_crypto_gnutls... " >&6; }
-if test ${ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial+y}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls" >&5
+printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls... " >&6; }
+if test ${ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb+y}
 then :
   printf %s "(cached) " >&6
 else $as_nop
@@ -31413,27 +31254,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char ngtcp2_crypto_ctx_initial ();
+char ngtcp2_crypto_recv_client_initial_cb ();
 int main (void)
 {
-return ngtcp2_crypto_ctx_initial ();
+return ngtcp2_crypto_recv_client_initial_cb ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial=yes
+  ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=yes
 else $as_nop
-  ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial=no
+  ac_cv_lib_ngtcp2_crypto_gnutls_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_gnutls_ngtcp2_crypto_ctx_initial" >&5
-printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial" >&6; }
-if test "x$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_ctx_initial" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&5
+printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&6; }
+if test "x$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" = xyes
 then :
 
               for ac_header in ngtcp2/ngtcp2_crypto.h
   fi
 fi
 
-
-OPT_NGHTTP3="yes"
-
-if test "x$NGTCP2_ENABLED" = "x"; then
-  # without ngtcp2, nghttp3 is of no use for us
-  OPT_NGHTTP3="no"
-fi
-
-
-# Check whether --with-nghttp3 was given.
-if test ${with_nghttp3+y}
-then :
-  withval=$with_nghttp3; OPT_NGHTTP3=$withval
-fi
-
-case "$OPT_NGHTTP3" in
-  no)
-        want_nghttp3="no"
-    ;;
-  yes)
-        want_nghttp3="default"
-    want_nghttp3_path=""
-    ;;
-  *)
-        want_nghttp3="yes"
-    want_nghttp3_path="$withval/lib/pkgconfig"
-    ;;
-esac
-
-curl_http3_msg="no      (--with-nghttp3)"
-if test X"$want_nghttp3" != Xno; then
+if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then
     CLEANLDFLAGS="$LDFLAGS"
   CLEANCPPFLAGS="$CPPFLAGS"
   CLEANLIBS="$LIBS"
     fi
 
     if test "x$PKGCONFIG" != "xno"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp3 options with pkg-config" >&5
-printf %s "checking for libnghttp3 options with pkg-config... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_wolfssl options with pkg-config" >&5
+printf %s "checking for libngtcp2_crypto_wolfssl options with pkg-config... " >&6; }
             itexists=`
-    if test -n "$want_nghttp3_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+    if test -n "$want_tcp2_path"; then
+      PKG_CONFIG_LIBDIR="$want_tcp2_path"
       export PKG_CONFIG_LIBDIR
     fi
-         $PKGCONFIG --exists libnghttp3 >/dev/null 2>&1 && echo 1`
+         $PKGCONFIG --exists libngtcp2_crypto_wolfssl >/dev/null 2>&1 && echo 1`
 
       if test -z "$itexists"; then
                         PKGCONFIG="no"
@@ -31645,50 +31456,50 @@ printf "%s\n" "found" >&6; }
 
 
   if test "$PKGCONFIG" != "no" ; then
-    LIB_NGHTTP3=`
-    if test -n "$want_nghttp3_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+    LIB_NGTCP2_CRYPTO_WOLFSSL=`
+    if test -n "$want_tcp2_path"; then
+      PKG_CONFIG_LIBDIR="$want_tcp2_path"
       export PKG_CONFIG_LIBDIR
     fi
 
-      $PKGCONFIG --libs-only-l libnghttp3`
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGHTTP3" >&5
-printf "%s\n" "$as_me: -l is $LIB_NGHTTP3" >&6;}
+      $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&5
+printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&6;}
 
-    CPP_NGHTTP3=`
-    if test -n "$want_nghttp3_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+    CPP_NGTCP2_CRYPTO_WOLFSSL=`
+    if test -n "$want_tcp2_path"; then
+      PKG_CONFIG_LIBDIR="$want_tcp2_path"
       export PKG_CONFIG_LIBDIR
     fi
-       $PKGCONFIG --cflags-only-I libnghttp3`
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGHTTP3" >&5
-printf "%s\n" "$as_me: -I is $CPP_NGHTTP3" >&6;}
+       $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&5
+printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&6;}
 
-    LD_NGHTTP3=`
-    if test -n "$want_nghttp3_path"; then
-      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+    LD_NGTCP2_CRYPTO_WOLFSSL=`
+    if test -n "$want_tcp2_path"; then
+      PKG_CONFIG_LIBDIR="$want_tcp2_path"
       export PKG_CONFIG_LIBDIR
     fi
 
-      $PKGCONFIG --libs-only-L libnghttp3`
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGHTTP3" >&5
-printf "%s\n" "$as_me: -L is $LD_NGHTTP3" >&6;}
+      $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&5
+printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&6;}
 
-    LDFLAGS="$LDFLAGS $LD_NGHTTP3"
-    CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3"
-    LIBS="$LIB_NGHTTP3 $LIBS"
+    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
+    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
+    LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"
 
     if test "x$cross_compiling" != "xyes"; then
-      DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'`
+      DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
     fi
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp3_conn_client_new_versioned in -lnghttp3" >&5
-printf %s "checking for nghttp3_conn_client_new_versioned in -lnghttp3... " >&6; }
-if test ${ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned+y}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl" >&5
+printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl... " >&6; }
+if test ${ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb+y}
 then :
   printf %s "(cached) " >&6
 else $as_nop
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnghttp3  $LIBS"
+LIBS="-lngtcp2_crypto_wolfssl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -31696,47 +31507,45 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #ifdef __cplusplus
 extern "C"
 #endif
-char nghttp3_conn_client_new_versioned ();
+char ngtcp2_crypto_recv_client_initial_cb ();
 int main (void)
 {
-return nghttp3_conn_client_new_versioned ();
+return ngtcp2_crypto_recv_client_initial_cb ();
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=yes
+  ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=yes
 else $as_nop
-  ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=no
+  ac_cv_lib_ngtcp2_crypto_wolfssl_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_nghttp3_nghttp3_conn_client_new_versioned" >&5
-printf "%s\n" "$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" >&6; }
-if test "x$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&5
+printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&6; }
+if test "x$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" = xyes
 then :
 
-              for ac_header in nghttp3/nghttp3.h
+              for ac_header in ngtcp2/ngtcp2_crypto.h
 do :
-  ac_fn_c_check_header_compile "$LINENO" "nghttp3/nghttp3.h" "ac_cv_header_nghttp3_nghttp3_h" "$ac_includes_default"
-if test "x$ac_cv_header_nghttp3_nghttp3_h" = xyes
+  ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default"
+if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_NGHTTP3_NGHTTP3_H 1" >>confdefs.h
- curl_h3_msg="enabled (ngtcp2 + nghttp3)"
-          NGHTTP3_ENABLED=1
+  printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h
+ NGTCP2_ENABLED=1
 
-printf "%s\n" "#define USE_NGHTTP3 1" >>confdefs.h
+printf "%s\n" "#define USE_NGTCP2_CRYPTO_WOLFSSL 1" >>confdefs.h
 
-          USE_NGHTTP3=1
+          USE_NGTCP2_CRYPTO_WOLFSSL=1
 
-          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3"
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
           export CURL_LIBRARY_PATH
-          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&5
-printf "%s\n" "$as_me: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&6;}
-          experimental="$experimental HTTP3"
+          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&6;}
 
 fi
 
 
 
   else
-        if test X"$want_nghttp3" != Xdefault; then
-                  as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5
+        if test X"$want_tcp2" != Xdefault; then
+                  as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file." "$LINENO" 5
     fi
   fi
-
 fi
 
 
-OPT_QUICHE="no"
+OPT_NGHTTP3="yes"
 
-if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
-  # without HTTP or with ngtcp2, quiche is no use
-  OPT_QUICHE="no"
+if test "x$NGTCP2_ENABLED" = "x"; then
+  # without ngtcp2, nghttp3 is of no use for us
+  OPT_NGHTTP3="no"
 fi
 
 
-# Check whether --with-quiche was given.
-if test ${with_quiche+y}
+# Check whether --with-nghttp3 was given.
+if test ${with_nghttp3+y}
 then :
-  withval=$with_quiche; OPT_QUICHE=$withval
+  withval=$with_nghttp3; OPT_NGHTTP3=$withval
 fi
 
-case "$OPT_QUICHE" in
+case "$OPT_NGHTTP3" in
   no)
-        want_quiche="no"
+        want_nghttp3="no"
     ;;
   yes)
-        want_quiche="default"
-    want_quiche_path=""
+        want_nghttp3="default"
+    want_nghttp3_path=""
     ;;
   *)
-        want_quiche="yes"
-    want_quiche_path="$withval"
+        want_nghttp3="yes"
+    want_nghttp3_path="$withval/lib/pkgconfig"
     ;;
 esac
 
-if test X"$want_quiche" != Xno; then
-
-  if test "$NGHTTP3_ENABLED" = 1; then
-    as_fn_error $? "--with-quiche and --with-ngtcp2 are mutually exclusive" "$LINENO" 5
-  fi
-
+curl_http3_msg="no      (--with-nghttp3)"
+if test X"$want_nghttp3" != Xno; then
+    CLEANLDFLAGS="$LDFLAGS"
+  CLEANCPPFLAGS="$CPPFLAGS"
+  CLEANLIBS="$LIBS"
+
+
+    if test -n "$PKG_CONFIG"; then
+      PKGCONFIG="$PKG_CONFIG"
+    else
+      if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKGCONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKGCONFIG=$ac_cv_path_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+printf "%s\n" "$PKGCONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKGCONFIG"; then
+  ac_pt_PKGCONFIG=$PKGCONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKGCONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  case $ac_pt_PKGCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/bin:/usr/local/bin"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+if test -n "$ac_pt_PKGCONFIG"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+printf "%s\n" "$ac_pt_PKGCONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKGCONFIG" = x; then
+    PKGCONFIG="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKGCONFIG=$ac_pt_PKGCONFIG
+  fi
+else
+  PKGCONFIG="$ac_cv_path_PKGCONFIG"
+fi
+
+    fi
+
+    if test "x$PKGCONFIG" != "xno"; then
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp3 options with pkg-config" >&5
+printf %s "checking for libnghttp3 options with pkg-config... " >&6; }
+            itexists=`
+    if test -n "$want_nghttp3_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+         $PKGCONFIG --exists libnghttp3 >/dev/null 2>&1 && echo 1`
+
+      if test -z "$itexists"; then
+                        PKGCONFIG="no"
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+      fi
+    fi
+
+
+  if test "$PKGCONFIG" != "no" ; then
+    LIB_NGHTTP3=`
+    if test -n "$want_nghttp3_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+
+      $PKGCONFIG --libs-only-l libnghttp3`
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGHTTP3" >&5
+printf "%s\n" "$as_me: -l is $LIB_NGHTTP3" >&6;}
+
+    CPP_NGHTTP3=`
+    if test -n "$want_nghttp3_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+       $PKGCONFIG --cflags-only-I libnghttp3`
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGHTTP3" >&5
+printf "%s\n" "$as_me: -I is $CPP_NGHTTP3" >&6;}
+
+    LD_NGHTTP3=`
+    if test -n "$want_nghttp3_path"; then
+      PKG_CONFIG_LIBDIR="$want_nghttp3_path"
+      export PKG_CONFIG_LIBDIR
+    fi
+
+      $PKGCONFIG --libs-only-L libnghttp3`
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGHTTP3" >&5
+printf "%s\n" "$as_me: -L is $LD_NGHTTP3" >&6;}
+
+    LDFLAGS="$LDFLAGS $LD_NGHTTP3"
+    CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3"
+    LIBS="$LIB_NGHTTP3 $LIBS"
+
+    if test "x$cross_compiling" != "xyes"; then
+      DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'`
+    fi
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp3_conn_client_new_versioned in -lnghttp3" >&5
+printf %s "checking for nghttp3_conn_client_new_versioned in -lnghttp3... " >&6; }
+if test ${ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnghttp3  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char nghttp3_conn_client_new_versioned ();
+int main (void)
+{
+return nghttp3_conn_client_new_versioned ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=yes
+else $as_nop
+  ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=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_nghttp3_nghttp3_conn_client_new_versioned" >&5
+printf "%s\n" "$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" >&6; }
+if test "x$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" = xyes
+then :
+
+              for ac_header in nghttp3/nghttp3.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "nghttp3/nghttp3.h" "ac_cv_header_nghttp3_nghttp3_h" "$ac_includes_default"
+if test "x$ac_cv_header_nghttp3_nghttp3_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_NGHTTP3_NGHTTP3_H 1" >>confdefs.h
+ curl_h3_msg="enabled (ngtcp2 + nghttp3)"
+          NGHTTP3_ENABLED=1
+
+printf "%s\n" "#define USE_NGHTTP3 1" >>confdefs.h
+
+          USE_NGHTTP3=1
+
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3"
+          export CURL_LIBRARY_PATH
+          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&6;}
+          experimental="$experimental HTTP3"
+
+fi
+
+done
+
+else $as_nop
+          LDFLAGS=$CLEANLDFLAGS
+        CPPFLAGS=$CLEANCPPFLAGS
+        LIBS=$CLEANLIBS
+
+fi
+
+
+  else
+        if test X"$want_nghttp3" != Xdefault; then
+                  as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5
+    fi
+  fi
+
+fi
+
+
+OPT_QUICHE="no"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+  # without HTTP or with ngtcp2, quiche is no use
+  OPT_QUICHE="no"
+fi
+
+
+# Check whether --with-quiche was given.
+if test ${with_quiche+y}
+then :
+  withval=$with_quiche; OPT_QUICHE=$withval
+fi
+
+case "$OPT_QUICHE" in
+  no)
+        want_quiche="no"
+    ;;
+  yes)
+        want_quiche="default"
+    want_quiche_path=""
+    ;;
+  *)
+        want_quiche="yes"
+    want_quiche_path="$withval"
+    ;;
+esac
+
+if test X"$want_quiche" != Xno; then
+
+  if test "$NGHTTP3_ENABLED" = 1; then
+    as_fn_error $? "--with-quiche and --with-ngtcp2 are mutually exclusive" "$LINENO" 5
+  fi
+
     CLEANLDFLAGS="$LDFLAGS"
   CLEANCPPFLAGS="$CPPFLAGS"
   CLEANLIBS="$LIBS"
 fi
 
 
+OPT_MSH3="no"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+  # without HTTP or with ngtcp2, msh3 is no use
+  OPT_MSH3="no"
+fi
+
+
+# Check whether --with-msh3 was given.
+if test ${with_msh3+y}
+then :
+  withval=$with_msh3; OPT_MSH3=$withval
+fi
+
+case "$OPT_MSH3" in
+  no)
+        want_msh3="no"
+    ;;
+  yes)
+        want_msh3="default"
+    want_msh3_path=""
+    ;;
+  *)
+        want_msh3="yes"
+    want_msh3_path="$withval"
+    ;;
+esac
+
+if test X"$want_msh3" != Xno; then
+
+  if test "$NGHTTP3_ENABLED" = 1; then
+    as_fn_error $? "--with-msh3 and --with-ngtcp2 are mutually exclusive" "$LINENO" 5
+  fi
+
+    CLEANLDFLAGS="$LDFLAGS"
+  CLEANCPPFLAGS="$CPPFLAGS"
+  CLEANLIBS="$LIBS"
+
+  if test -n "$want_msh3_path"; then
+    LD_MSH3="-L$want_msh3_path/lib"
+    CPP_MSH3="-I$want_msh3_path/include"
+    DIR_MSH3="$want_msh3_path/lib"
+    LDFLAGS="$LDFLAGS $LD_MSH3"
+    CPPFLAGS="$CPPFLAGS $CPP_MSH3"
+  fi
+  LIBS="-lmsh3 $LIBS"
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MsH3ApiOpen in -lmsh3" >&5
+printf %s "checking for MsH3ApiOpen in -lmsh3... " >&6; }
+if test ${ac_cv_lib_msh3_MsH3ApiOpen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmsh3  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#ifdef __cplusplus
+extern "C"
+#endif
+char MsH3ApiOpen ();
+int main (void)
+{
+return MsH3ApiOpen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  ac_cv_lib_msh3_MsH3ApiOpen=yes
+else $as_nop
+  ac_cv_lib_msh3_MsH3ApiOpen=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_msh3_MsH3ApiOpen" >&5
+printf "%s\n" "$ac_cv_lib_msh3_MsH3ApiOpen" >&6; }
+if test "x$ac_cv_lib_msh3_MsH3ApiOpen" = xyes
+then :
+
+           for ac_header in msh3.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "msh3.h" "ac_cv_header_msh3_h" "$ac_includes_default"
+if test "x$ac_cv_header_msh3_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_MSH3_H 1" >>confdefs.h
+ curl_h3_msg="enabled (msh3)"
+        MSH3_ENABLED=1
+
+printf "%s\n" "#define USE_MSH3 1" >>confdefs.h
+
+        USE_MSH3=1
+
+        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3"
+        export CURL_LIBRARY_PATH
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&5
+printf "%s\n" "$as_me: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&6;}
+else $as_nop
+  experimental="$experimental HTTP3"
+
+fi
+
+done
+
+else $as_nop
+        LDFLAGS=$CLEANLDFLAGS
+      CPPFLAGS=$CLEANCPPFLAGS
+      LIBS=$CLEANLIBS
+
+fi
+
+fi
+
+
 OPT_ZSH_FPATH=default
 
 # Check whether --with-zsh-functions-dir was given.
@@ -32241,181 +32454,6 @@ printf "%s\n" "found" >&6; }
     ;;
 esac
 
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for malloc.h" >&5
-printf %s "checking for malloc.h... " >&6; }
-if test ${curl_cv_header_malloc_h+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#include <malloc.h>
-
-int main (void)
-{
-
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-      curl_cv_header_malloc_h="yes"
-
-else $as_nop
-
-      curl_cv_header_malloc_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_malloc_h" >&5
-printf "%s\n" "$curl_cv_header_malloc_h" >&6; }
-  if test "$curl_cv_header_malloc_h" = "yes"; then
-
-printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h
-
-    #
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#include <stdlib.h>
-
-int main (void)
-{
-
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-      curl_cv_need_header_malloc_h="no"
-
-else $as_nop
-
-      curl_cv_need_header_malloc_h="yes"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-    #
-    case "$curl_cv_need_header_malloc_h" in
-      yes)
-
-printf "%s\n" "#define NEED_MALLOC_H 1" >>confdefs.h
-
-        ;;
-    esac
-  fi
-
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memory.h" >&5
-printf %s "checking for memory.h... " >&6; }
-if test ${curl_cv_header_memory_h+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#include <memory.h>
-
-int main (void)
-{
-
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-      curl_cv_header_memory_h="yes"
-
-else $as_nop
-
-      curl_cv_header_memory_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_memory_h" >&5
-printf "%s\n" "$curl_cv_header_memory_h" >&6; }
-  if test "$curl_cv_header_memory_h" = "yes"; then
-
-printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h
-
-    #
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#include <stdlib.h>
-
-int main (void)
-{
-
-        void *p = malloc(10);
-        void *q = calloc(10,10);
-        free(p);
-        free(q);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-      curl_cv_need_header_memory_h="no"
-
-else $as_nop
-
-      curl_cv_need_header_memory_h="yes"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-    #
-    case "$curl_cv_need_header_memory_h" in
-      yes)
-
-printf "%s\n" "#define NEED_MEMORY_H 1" >>confdefs.h
-
-        ;;
-    esac
-  fi
-
-
 ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -32928,7 +32966,7 @@ then :
   printf "%s\n" "#define HAVE_NETINET_TCP_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "
+ac_fn_c_check_header_compile "$LINENO" "netinet/udp.h" "ac_cv_header_netinet_udp_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -32955,12 +32993,12 @@ ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "
 
 
 "
-if test "x$ac_cv_header_netdb_h" = xyes
+if test "x$ac_cv_header_netinet_udp_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_NETINET_UDP_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" "
+ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -32987,12 +33025,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h
 
 
 "
-if test "x$ac_cv_header_sys_sockio_h" = xyes
+if test "x$ac_cv_header_netdb_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -33019,12 +33057,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "
 
 
 "
-if test "x$ac_cv_header_sys_stat_h" = xyes
+if test "x$ac_cv_header_sys_sockio_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -33051,12 +33089,12 @@ ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h"
 
 
 "
-if test "x$ac_cv_header_sys_param_h" = xyes
+if test "x$ac_cv_header_sys_stat_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -33083,12 +33121,12 @@ ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "
 
 
 "
-if test "x$ac_cv_header_termios_h" = xyes
+if test "x$ac_cv_header_sys_param_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "
+ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -33115,12 +33153,12 @@ ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "
 
 
 "
-if test "x$ac_cv_header_termio_h" = xyes
+if test "x$ac_cv_header_termios_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "
+ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -33147,12 +33185,12 @@ ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "
 
 
 "
-if test "x$ac_cv_header_fcntl_h" = xyes
+if test "x$ac_cv_header_termio_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
 
 fi
-ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -33179,9 +33217,9 @@ ac_fn_c_check_header_compile "$LINENO" "alloca.h" "ac_cv_header_alloca_h" "
 
 
 "
-if test "x$ac_cv_header_alloca_h" = xyes
+if test "x$ac_cv_header_fcntl_h" = xyes
 then :
-  printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
 
 fi
 ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" "
@@ -33995,15 +34033,8 @@ printf "%s\n" "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h
 printf %s "checking run-time libs availability... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
-
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     darwin*)
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -34033,59 +34064,56 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
-
-
-      fi
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
-printf %s "checking size of size_t... " >&6; }
-if test ${ac_cv_sizeof_size_t+y}
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
-  printf %s "(cached) " >&6
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
 else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#include <sys/types.h>
-
-
-int main (void)
+int main()
 {
-switch (0) case 0: case (sizeof (size_t) == $ac_size):;
- ;
- return 0;
+  return 0;
 }
+
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_run "$LINENO"
 then :
-  ac_cv_sizeof_size_t=$ac_size
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_size_t != x ; then break; fi
-done
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: fine" >&5
+printf "%s\n" "fine" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
+    as_fn_error $? "one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS" "$LINENO" 5
 
 fi
-
-if test x$ac_cv_sizeof_size_t = x ; then
-  as_fn_error $? "cannot determine a size for size_t" "$LINENO" 5
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
-printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
 
-printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-printf %s "checking size of long... " >&6; }
-if test ${ac_cv_sizeof_long+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+      fi
+
+
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+printf %s "checking size of size_t... " >&6; }
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -34093,38 +34121,48 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (long) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(size_t) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_long=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_long != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of size_t" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_size_t" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_long = x ; then
-  as_fn_error $? "cannot determine a size for long" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-printf "%s\n" "$ac_cv_sizeof_long" >&6; }
+printf "%s\n" "#define SIZEOF_SIZE_T $r" >>confdefs.h
 
-printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-printf %s "checking size of int... " >&6; }
-if test ${ac_cv_sizeof_int+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+printf %s "checking size of long... " >&6; }
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -34132,38 +34170,48 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (int) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(long) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_int=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_int != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of long" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_long" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_int = x ; then
-  as_fn_error $? "cannot determine a size for int" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-printf "%s\n" "$ac_cv_sizeof_int" >&6; }
+printf "%s\n" "#define SIZEOF_LONG $r" >>confdefs.h
 
-printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-printf %s "checking size of short... " >&6; }
-if test ${ac_cv_sizeof_short+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -34171,38 +34219,48 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (short) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(int) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_short=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_short != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of int" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_int" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_short = x ; then
-  as_fn_error $? "cannot determine a size for short" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-printf "%s\n" "$ac_cv_sizeof_short" >&6; }
+printf "%s\n" "#define SIZEOF_INT $r" >>confdefs.h
+
 
-printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
 printf %s "checking size of time_t... " >&6; }
-if test ${ac_cv_sizeof_time_t+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -34210,38 +34268,48 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (time_t) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(time_t) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_time_t=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_time_t != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of time_t" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_time_t" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_time_t = x ; then
-  as_fn_error $? "cannot determine a size for time_t" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
+printf "%s\n" "#define SIZEOF_TIME_T $r" >>confdefs.h
+
 
-printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
 printf %s "checking size of off_t... " >&6; }
-if test ${ac_cv_sizeof_off_t+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -34249,41 +34317,51 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (off_t) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(off_t) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_off_t=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_off_t != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of off_t" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_off_t" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_off_t = x ; then
-  as_fn_error $? "cannot determine a size for off_t" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
-printf "%s\n" "$ac_cv_sizeof_off_t" >&6; }
+printf "%s\n" "#define SIZEOF_OFF_T $r" >>confdefs.h
 
-printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h
 
 
 
 o=$CPPFLAGS
 CPPFLAGS="-I$srcdir/include $CPPFLAGS"
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5
 printf %s "checking size of curl_off_t... " >&6; }
-if test ${ac_cv_sizeof_curl_off_t+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  r=0
+    for typesize in 8 4 2 16 1; do
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -34293,28 +34371,39 @@ else $as_nop
 
 int main (void)
 {
-switch (0) case 0: case (sizeof (curl_off_t) == $ac_size):;
+switch(0) {
+       case 0:
+       case (sizeof(curl_off_t) == $typesize):;
+     }
+
  ;
  return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sizeof_curl_off_t=$ac_size
+
+       r=$typesize
+else $as_nop
+
+       r=0
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  if test x$ac_cv_sizeof_curl_off_t != x ; then break; fi
-done
+        if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    as_fn_error $? "Failed to find size of curl_off_t" "$LINENO" 5
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5
+printf "%s\n" "$r" >&6; }
+    tname=$(echo "ac_cv_sizeof_curl_off_t" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
 
-fi
 
-if test x$ac_cv_sizeof_curl_off_t = x ; then
-  as_fn_error $? "cannot determine a size for curl_off_t" "$LINENO" 5
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_curl_off_t" >&5
-printf "%s\n" "$ac_cv_sizeof_curl_off_t" >&6; }
+printf "%s\n" "#define SIZEOF_CURL_OFF_T $r" >>confdefs.h
 
-printf "%s\n" "#define SIZEOF_CURL_OFF_T $ac_cv_sizeof_curl_off_t" >>confdefs.h
 
 
 CPPFLAGS=$o
@@ -34330,42 +34419,22 @@ printf "%s\n" "#define HAVE_LONGLONG 1" >>confdefs.h
 fi
 
 
-if test "xyes" = "x$longlong"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if numberLL works" >&5
-printf %s "checking if numberLL works... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
 
-int main (void)
-{
-
-      long long val = 1000LL;
+if test ${ac_cv_sizeof_curl_off_t} -lt 8; then
 
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+# Check whether --with-n64-deprecated was given.
+if test ${with_n64_deprecated+y}
 then :
+  withval=$with_n64_deprecated; if test X"$withval" != Xno; then
+    OPT_N64_AWARE=$withval
+  fi
 
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_LL 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
 
+  if test -z "$OPT_N64_AWARE"; then
+    as_fn_error $? "support for systems without 64 bit curl_off_t is deprecated, use --with-n64-deprecated until then" "$LINENO" 5
+  fi
+fi
 
 # check for ssize_t
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
 printf %s "checking if time_t is unsigned... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <time.h>
+  #include <limits.h>
+  time_t t = -1;
+  return (t > 0);
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 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 *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
@@ -34499,7 +34598,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
 
 
@@ -34732,7 +34833,7 @@ fi
 
 
 
-    ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+      ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_select_h" = xyes
 then :
   printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
@@ -34778,11 +34879,7 @@ printf %s "checking for select... " >&6; }
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
+$curl_includes_bsdsocket
 #endif
 
 int main (void)
@@ -34813,171 +34910,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   #
   if test "$curl_cv_select" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for select" >&5
-printf %s "checking types of args and return type for select... " >&6; }
-if test ${curl_cv_func_select_args+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-
-      curl_cv_func_select_args="unknown"
-      for sel_retv in 'int' 'ssize_t'; do
-        for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
-          for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
-            for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
-              if test "$curl_cv_func_select_args" = "unknown"; then
-                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>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SELECTCALLCONV PASCAL
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <time.h>
-#ifndef HAVE_WINDOWS_H
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#elif defined(HAVE_UNISTD_H)
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
-#endif
-#define SELECTCALLCONV
-#endif
-#ifndef HAVE_STRUCT_TIMEVAL
-                    struct timeval {
-                      long tv_sec;
-                      long tv_usec;
-                    };
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
-                    extern $sel_retv SELECTCALLCONV
-                               select($sel_arg1,
-                                       $sel_arg234,
-                                       $sel_arg234,
-                                       $sel_arg234,
-                                       $sel_arg5);
-#endif
-
-int main (void)
-{
-
-                    $sel_arg1   nfds=0;
-                    $sel_arg234 rfds=0;
-                    $sel_arg234 wfds=0;
-                    $sel_arg234 efds=0;
-                    $sel_retv res = select(nfds, rfds, wfds, efds, 0);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-                  curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-              fi
-            done
-          done
-        done
-      done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_select_args" >&5
-printf "%s\n" "$curl_cv_func_select_args" >&6; } # AC-CACHE-CHECK
-    if test "$curl_cv_func_select_args" = "unknown"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find proper types to use for select args" >&5
-printf "%s\n" "$as_me: WARNING: Cannot find proper types to use for select args" >&2;}
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_SELECT will not be defined" >&5
-printf "%s\n" "$as_me: WARNING: HAVE_SELECT will not be defined" >&2;}
-    else
-      select_prev_IFS=$IFS; IFS=','
-      set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
-      IFS=$select_prev_IFS
-      shift
-      #
-      sel_qual_type_arg5=$3
-      #
-
-printf "%s\n" "#define SELECT_TYPE_ARG1 $1" >>confdefs.h
-
-
-printf "%s\n" "#define SELECT_TYPE_ARG234 $2" >>confdefs.h
-
-
-printf "%s\n" "#define SELECT_TYPE_RETV $4" >>confdefs.h
-
-      #
-      prev_sh_opts=$-
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set -f
-          ;;
-      esac
-      #
-      case "$sel_qual_type_arg5" in
-        const*)
-          sel_qual_arg5=const
-          sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
-        ;;
-        *)
-          sel_qual_arg5=
-          sel_type_arg5=$sel_qual_type_arg5
-        ;;
-      esac
-      #
-
-printf "%s\n" "#define SELECT_QUAL_ARG5 $sel_qual_arg5" >>confdefs.h
-
-
-printf "%s\n" "#define SELECT_TYPE_ARG5 $sel_type_arg5" >>confdefs.h
-
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set +f
-          ;;
-      esac
-      #
 
 printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h
 
-      curl_cv_func_select="yes"
-    fi
+    curl_cv_func_select="yes"
   fi
 
 
 
-    ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+      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
@@ -35007,10 +34948,7 @@ printf %s "checking for recv... " >&6; }
 #include <winsock2.h>
 #endif
 #else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -35047,118 +34985,16 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   #
   if test "$curl_cv_recv" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for recv" >&5
-printf %s "checking types of args and return type for recv... " >&6; }
-if test ${curl_cv_func_recv_args+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-
-      curl_cv_func_recv_args="unknown"
-      for recv_retv in 'int' 'ssize_t'; do
-        for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
-          for recv_arg2 in 'char *' 'void *'; do
-            for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
-              for recv_arg4 in 'int' 'unsigned int'; do
-                if test "$curl_cv_func_recv_args" = "unknown"; then
-                  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>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define RECVCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define RECVCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
-                      extern $recv_retv RECVCALLCONV
-                      recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
-#endif
-
-int main (void)
-{
-
-                      $recv_arg1 s=0;
-                      $recv_arg2 buf=0;
-                      $recv_arg3 len=0;
-                      $recv_arg4 flags=0;
-                      $recv_retv res = recv(s, buf, len, flags);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-                    curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-                fi
-              done
-            done
-          done
-        done
-      done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_recv_args" >&5
-printf "%s\n" "$curl_cv_func_recv_args" >&6; } # AC-CACHE-CHECK
-    if test "$curl_cv_func_recv_args" = "unknown"; then
-      as_fn_error $? "Cannot find proper types to use for recv args" "$LINENO" 5
-    else
-      recv_prev_IFS=$IFS; IFS=','
-      set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
-      IFS=$recv_prev_IFS
-      shift
-      #
-
-printf "%s\n" "#define RECV_TYPE_ARG1 $1" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_ARG2 $2" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_ARG3 $3" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_ARG4 $4" >>confdefs.h
-
-
-printf "%s\n" "#define RECV_TYPE_RETV $5" >>confdefs.h
-
-      #
 
 printf "%s\n" "#define HAVE_RECV 1" >>confdefs.h
 
       curl_cv_func_recv="yes"
-    fi
   else
     as_fn_error $? "Unable to link function recv" "$LINENO" 5
   fi
 
 
-    ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+      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
@@ -35188,10 +35024,7 @@ printf %s "checking for send... " >&6; }
 #include <winsock2.h>
 #endif
 #else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
+$curl_includes_bsdsocket
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -35228,146 +35061,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   #
   if test "$curl_cv_send" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for send" >&5
-printf %s "checking types of args and return type for send... " >&6; }
-if test ${curl_cv_func_send_args+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-
-      curl_cv_func_send_args="unknown"
-      for send_retv in 'int' 'ssize_t'; do
-        for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
-          for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
-            for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
-              for send_arg4 in 'int' 'unsigned int'; do
-                if test "$curl_cv_func_send_args" = "unknown"; then
-                  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>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#define SENDCALLCONV PASCAL
-#else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define SENDCALLCONV
-#endif
-#ifndef HAVE_PROTO_BSDSOCKET_H
-                      extern $send_retv SENDCALLCONV
-                      send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
-#endif
-
-int main (void)
-{
-
-                      $send_arg1 s=0;
-                      $send_arg3 len=0;
-                      $send_arg4 flags=0;
-                      $send_retv res = send(s, 0, len, flags);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-
-                    curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-                fi
-              done
-            done
-          done
-        done
-      done
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_send_args" >&5
-printf "%s\n" "$curl_cv_func_send_args" >&6; } # AC-CACHE-CHECK
-    if test "$curl_cv_func_send_args" = "unknown"; then
-      as_fn_error $? "Cannot find proper types to use for send args" "$LINENO" 5
-    else
-      send_prev_IFS=$IFS; IFS=','
-      set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
-      IFS=$send_prev_IFS
-      shift
-      #
-      send_qual_type_arg2=$2
-      #
-
-printf "%s\n" "#define SEND_TYPE_ARG1 $1" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_ARG3 $3" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_ARG4 $4" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_RETV $5" >>confdefs.h
-
-      #
-      prev_sh_opts=$-
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set -f
-          ;;
-      esac
-      #
-      case "$send_qual_type_arg2" in
-        const*)
-          send_qual_arg2=const
-          send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
-        ;;
-        *)
-          send_qual_arg2=
-          send_type_arg2=$send_qual_type_arg2
-        ;;
-      esac
-      #
-
-printf "%s\n" "#define SEND_QUAL_ARG2 $send_qual_arg2" >>confdefs.h
-
-
-printf "%s\n" "#define SEND_TYPE_ARG2 $send_type_arg2" >>confdefs.h
-
-      #
-      case $prev_sh_opts in
-        *f*)
-          ;;
-        *)
-          set +f
-          ;;
-      esac
-      #
 
 printf "%s\n" "#define HAVE_SEND 1" >>confdefs.h
 
-      curl_cv_func_send="yes"
-    fi
+    curl_cv_func_send="yes"
   else
     as_fn_error $? "Unable to link function send" "$LINENO" 5
   fi
@@ -35407,10 +35104,6 @@ else $as_nop
 #include <winsock2.h>
 #endif
 #else
-#ifdef HAVE_PROTO_BSDSOCKET_H
-#include <proto/bsdsocket.h>
-struct Library *SocketBase = NULL;
-#endif
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -35885,7 +35578,6 @@ printf %s "checking if closesocket can be linked... " >&6; }
 
 
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_socket
 
 int main (void)
@@ -35923,7 +35615,6 @@ printf %s "checking if closesocket is prototyped... " >&6; }
 /* end confdefs.h.  */
 
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_socket
 
 _ACEOF
@@ -35954,7 +35645,6 @@ printf %s "checking if closesocket is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
         $curl_includes_socket
 
 int main (void)
@@ -36044,7 +35734,7 @@ fi
 
 
 
-    #
+      #
   tst_links_closesocket_camel="unknown"
   tst_proto_closesocket_camel="unknown"
   tst_compi_closesocket_camel="unknown"
@@ -36056,6 +35746,7 @@ printf %s "checking if CloseSocket can be linked... " >&6; }
 /* end confdefs.h.  */
 
 
+      $curl_includes_bsdsocket
       $curl_includes_sys_socket
 
 int main (void)
@@ -36092,6 +35783,7 @@ printf %s "checking if CloseSocket is prototyped... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+      $curl_includes_bsdsocket
       $curl_includes_sys_socket
 
 _ACEOF
@@ -36121,6 +35813,7 @@ printf %s "checking if CloseSocket is compilable... " >&6; }
 /* end confdefs.h.  */
 
 
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
 
 int main (void)
@@ -36184,7 +35877,7 @@ printf "%s\n" "no" >&6; }
   fi
 
 
-        #
+          #
   tst_links_connect="unknown"
   tst_proto_connect="unknown"
   tst_compi_connect="unknown"
@@ -36268,7 +35961,7 @@ printf %s "checking if connect is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
         $curl_includes_socket
 
@@ -36518,7 +36211,7 @@ printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h
   tst_allow_fcntl_o_nonblock="unknown"
   #
   case $host_os in
-    sunos4* | aix3* | beos*)
+    sunos4* | aix3*)
             curl_disallow_fcntl_o_nonblock="yes"
       ;;
   esac
@@ -37487,15 +37180,74 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf %s "checking if getaddrinfo seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+        $curl_includes_ws2tcpip
+        $curl_includes_stdlib
+        $curl_includes_string
+        $curl_includes_sys_socket
+        $curl_includes_netdb
+
+int main (void)
+{
+
+        struct addrinfo hints;
+        struct addrinfo *ai = 0;
+        int error;
+
+        #ifdef HAVE_WINSOCK2_H
+        WSADATA wsa;
+        if (WSAStartup(MAKEWORD(2,2), &wsa))
+                exit(2);
+        #endif
+
+        memset(&hints, 0, sizeof(hints));
+        hints.ai_flags = AI_NUMERICHOST;
+        hints.ai_family = AF_UNSPEC;
+        hints.ai_socktype = SOCK_STREAM;
+        error = getaddrinfo("127.0.0.1", 0, &hints, &ai);
+        if(error || !ai)
+          exit(1); /* fail */
+        else
+          exit(0);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_getaddrinfo="yes"
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_getaddrinfo="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -37556,7 +37308,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -37853,7 +37607,7 @@ printf %s "checking if gethostbyname is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_netdb
 
 int main (void)
@@ -38007,6 +37761,7 @@ printf %s "checking if gethostbyname_r takes 3 args.... " >&6; }
 
 
           $curl_includes_netdb
+          $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -38044,6 +37799,7 @@ printf %s "checking if gethostbyname_r takes 5 args.... " >&6; }
 
 
           $curl_includes_netdb
+          $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -38081,6 +37837,7 @@ printf %s "checking if gethostbyname_r takes 6 args.... " >&6; }
 
 
           $curl_includes_netdb
+          $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -38192,8 +37949,8 @@ printf %s "checking if gethostname can be linked... " >&6; }
 
 
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_unistd
+      $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -38230,8 +37987,8 @@ printf %s "checking if gethostname is prototyped... " >&6; }
 /* end confdefs.h.  */
 
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_unistd
+      $curl_includes_bsdsocket
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -38261,8 +38018,8 @@ printf %s "checking if gethostname is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
         $curl_includes_unistd
+        $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -38304,8 +38061,8 @@ printf %s "checking for gethostname arg 2 data type... " >&6; }
 
 
               $curl_includes_winsock2
-      $curl_includes_bsdsocket
               $curl_includes_unistd
+              $curl_includes_bsdsocket
               $curl_preprocess_callconv
               extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
 
@@ -38994,15 +38751,60 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf %s "checking if getifaddrs seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+        $curl_includes_stdlib
+        $curl_includes_ifaddrs
+
+int main (void)
+{
+
+        struct ifaddrs *ifa = 0;
+        int error;
+
+        error = getifaddrs(&ifa);
+        if(error || !ifa)
+          exit(1); /* fail */
+        else
+          exit(0);
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_getifaddrs="yes"
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_getifaddrs="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39049,7 +38851,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -39239,15 +39043,60 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf %s "checking if gmtime_r seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+        $curl_includes_stdlib
+        $curl_includes_time
+
+int main (void)
+{
+
+        time_t local = 1170352587;
+        struct tm *gmt = 0;
+        struct tm result;
+        gmt = gmtime_r(&local, &result);
+        if(gmt)
+          exit(0);
+        else
+          exit(1);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_gmtime_r="yes"
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_gmtime_r="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39294,7 +39143,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -39507,15 +39358,102 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf %s "checking if inet_ntop seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+        $curl_includes_stdlib
+        $curl_includes_arpa_inet
+        $curl_includes_string
+
+int main (void)
+{
+
+        char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
+        char ipv4res[sizeof "255.255.255.255"];
+        unsigned char ipv6a[26];
+        unsigned char ipv4a[5];
+        char *ipv6ptr = 0;
+        char *ipv4ptr = 0;
+        /* - */
+        ipv4res[0] = '\0';
+        ipv4a[0] = 0xc0;
+        ipv4a[1] = 0xa8;
+        ipv4a[2] = 0x64;
+        ipv4a[3] = 0x01;
+        ipv4a[4] = 0x01;
+        /* - */
+        ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res));
+        if(!ipv4ptr)
+          exit(1); /* fail */
+        if(ipv4ptr != ipv4res)
+          exit(1); /* fail */
+        if(!ipv4ptr[0])
+          exit(1); /* fail */
+        if(memcmp(ipv4res, "192.168.100.1", 13) != 0)
+          exit(1); /* fail */
+        /* - */
+        ipv6res[0] = '\0';
+        memset(ipv6a, 0, sizeof(ipv6a));
+        ipv6a[0] = 0xfe;
+        ipv6a[1] = 0x80;
+        ipv6a[8] = 0x02;
+        ipv6a[9] = 0x14;
+        ipv6a[10] = 0x4f;
+        ipv6a[11] = 0xff;
+        ipv6a[12] = 0xfe;
+        ipv6a[13] = 0x0b;
+        ipv6a[14] = 0x76;
+        ipv6a[15] = 0xc8;
+        ipv6a[25] = 0x01;
+        /* - */
+        ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res));
+        if(!ipv6ptr)
+          exit(1); /* fail */
+        if(ipv6ptr != ipv6res)
+          exit(1); /* fail */
+        if(!ipv6ptr[0])
+          exit(1); /* fail */
+        if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0)
+          exit(1); /* fail */
+        /* - */
+        exit(0);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_inet_ntop="yes"
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_inet_ntop="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39604,7 +39542,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -39767,15 +39707,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf %s "checking if inet_pton seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
-
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     darwin*)
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -39857,395 +39790,131 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
-
-  fi
-  #
-  if test "$tst_compi_inet_pton" = "yes" &&
-    test "$tst_works_inet_pton" != "no"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton usage allowed" >&5
-printf %s "checking if inet_pton usage allowed... " >&6; }
-    if test "x$curl_disallow_inet_pton" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_inet_pton="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_inet_pton="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton might be used" >&5
-printf %s "checking if inet_pton might be used... " >&6; }
-  if test "$tst_links_inet_pton" = "yes" &&
-     test "$tst_proto_inet_pton" = "yes" &&
-     test "$tst_compi_inet_pton" = "yes" &&
-     test "$tst_allow_inet_pton" = "yes" &&
-     test "$tst_works_inet_pton" != "no"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
-
-    curl_cv_func_inet_pton="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_inet_pton="no"
-  fi
-
-
-curl_includes_stropts="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-#  include <sys/types.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#  include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_IOCTL_H
-#  include <sys/ioctl.h>
-#endif
-#ifdef HAVE_STROPTS_H
-#  include <stropts.h>
-#endif
-/* includes end */"
-  ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_stropts
-"
-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" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_unistd_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_sys_socket_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_sys_ioctl_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
-
-fi
-ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$curl_includes_stropts
-"
-if test "x$ac_cv_header_stropts_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h
-
-fi
-
-
-
-    #
-  tst_links_ioctl="unknown"
-  tst_proto_ioctl="unknown"
-  tst_compi_ioctl="unknown"
-  tst_allow_ioctl="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl can be linked" >&5
-printf %s "checking if ioctl can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define ioctl innocuous_ioctl
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef ioctl
-#ifdef __cplusplus
-extern "C"
-#endif
-char ioctl ();
-#if defined __stub_ioctl || defined __stub___ioctl
-choke me
-#endif
-
-int main (void)
-{
-return ioctl ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_ioctl="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_ioctl="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_ioctl" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is prototyped" >&5
-printf %s "checking if ioctl is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_stropts
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "ioctl" >/dev/null 2>&1
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_ioctl="yes"
-
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
 else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_ioctl="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_ioctl" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl is compilable" >&5
-printf %s "checking if ioctl is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
-        $curl_includes_stropts
+        $curl_includes_stdlib
+        $curl_includes_arpa_inet
+        $curl_includes_string
 
 int main (void)
 {
 
-        if(0 != ioctl(0, 0, 0))
-          return 1;
+        unsigned char ipv6a[16+1];
+        unsigned char ipv4a[4+1];
+        const char *ipv6src = "fe80::214:4fff:fe0b:76c8";
+        const char *ipv4src = "192.168.100.1";
+        /* - */
+        memset(ipv4a, 1, sizeof(ipv4a));
+        if(1 != inet_pton(AF_INET, ipv4src, ipv4a))
+          exit(1); /* fail */
+        /* - */
+        if( (ipv4a[0] != 0xc0) ||
+            (ipv4a[1] != 0xa8) ||
+            (ipv4a[2] != 0x64) ||
+            (ipv4a[3] != 0x01) ||
+            (ipv4a[4] != 0x01) )
+          exit(1); /* fail */
+        /* - */
+        memset(ipv6a, 1, sizeof(ipv6a));
+        if(1 != inet_pton(AF_INET6, ipv6src, ipv6a))
+          exit(1); /* fail */
+        /* - */
+        if( (ipv6a[0]  != 0xfe) ||
+            (ipv6a[1]  != 0x80) ||
+            (ipv6a[8]  != 0x02) ||
+            (ipv6a[9]  != 0x14) ||
+            (ipv6a[10] != 0x4f) ||
+            (ipv6a[11] != 0xff) ||
+            (ipv6a[12] != 0xfe) ||
+            (ipv6a[13] != 0x0b) ||
+            (ipv6a[14] != 0x76) ||
+            (ipv6a[15] != 0xc8) ||
+            (ipv6a[16] != 0x01) )
+          exit(1); /* fail */
+        /* - */
+        if( (ipv6a[2]  != 0x0) ||
+            (ipv6a[3]  != 0x0) ||
+            (ipv6a[4]  != 0x0) ||
+            (ipv6a[5]  != 0x0) ||
+            (ipv6a[6]  != 0x0) ||
+            (ipv6a[7]  != 0x0) )
+          exit(1); /* fail */
+        /* - */
+        exit(0);
 
  ;
  return 0;
 }
 
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_run "$LINENO"
 then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-      tst_compi_ioctl="yes"
+      tst_works_inet_pton="yes"
 
 else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-      tst_compi_ioctl="no"
+      tst_works_inet_pton="no"
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_ioctl" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl usage allowed" >&5
-printf %s "checking if ioctl usage allowed... " >&6; }
-    if test "x$curl_disallow_ioctl" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_ioctl="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_ioctl="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl might be used" >&5
-printf %s "checking if ioctl might be used... " >&6; }
-  if test "$tst_links_ioctl" = "yes" &&
-     test "$tst_proto_ioctl" = "yes" &&
-     test "$tst_compi_ioctl" = "yes" &&
-     test "$tst_allow_ioctl" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_IOCTL 1" >>confdefs.h
-
-    curl_cv_func_ioctl="yes"
-
-  #
-  tst_compi_ioctl_fionbio="unknown"
-  tst_allow_ioctl_fionbio="unknown"
-  #
-  if test "$curl_cv_func_ioctl" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO is compilable" >&5
-printf %s "checking if ioctl FIONBIO is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_stropts
-
-int main (void)
-{
-
-        int flags = 0;
-        if(0 != ioctl(0, FIONBIO, &flags))
-          return 1;
-
- ;
- 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; }
-      tst_compi_ioctl_fionbio="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_ioctl_fionbio="no"
-
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_ioctl_fionbio" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO usage allowed" >&5
-printf %s "checking if ioctl FIONBIO usage allowed... " >&6; }
-    if test "x$curl_disallow_ioctl_fionbio" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_ioctl_fionbio="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_ioctl_fionbio="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl FIONBIO might be used" >&5
-printf %s "checking if ioctl FIONBIO might be used... " >&6; }
-  if test "$tst_compi_ioctl_fionbio" = "yes" &&
-     test "$tst_allow_ioctl_fionbio" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_IOCTL_FIONBIO 1" >>confdefs.h
-
-    curl_cv_func_ioctl_fionbio="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_ioctl_fionbio="no"
-  fi
-
-
-  #
-  tst_compi_ioctl_siocgifaddr="unknown"
-  tst_allow_ioctl_siocgifaddr="unknown"
-  #
-  if test "$curl_cv_func_ioctl" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR is compilable" >&5
-printf %s "checking if ioctl SIOCGIFADDR is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_stropts
-        #include <net/if.h>
-
-int main (void)
-{
 
-        struct ifreq ifr;
-        if(0 != ioctl(0, SIOCGIFADDR, &ifr))
-          return 1;
-
- ;
- 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; }
-      tst_compi_ioctl_siocgifaddr="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_ioctl_siocgifaddr="no"
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   fi
   #
-  if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR usage allowed" >&5
-printf %s "checking if ioctl SIOCGIFADDR usage allowed... " >&6; }
-    if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then
+  if test "$tst_compi_inet_pton" = "yes" &&
+    test "$tst_works_inet_pton" != "no"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton usage allowed" >&5
+printf %s "checking if inet_pton usage allowed... " >&6; }
+    if test "x$curl_disallow_inet_pton" != "xyes"; then
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
-      tst_allow_ioctl_siocgifaddr="yes"
+      tst_allow_inet_pton="yes"
     else
       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-      tst_allow_ioctl_siocgifaddr="no"
+      tst_allow_inet_pton="no"
     fi
   fi
   #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctl SIOCGIFADDR might be used" >&5
-printf %s "checking if ioctl SIOCGIFADDR might be used... " >&6; }
-  if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
-     test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton might be used" >&5
+printf %s "checking if inet_pton might be used... " >&6; }
+  if test "$tst_links_inet_pton" = "yes" &&
+     test "$tst_proto_inet_pton" = "yes" &&
+     test "$tst_compi_inet_pton" = "yes" &&
+     test "$tst_allow_inet_pton" = "yes" &&
+     test "$tst_works_inet_pton" != "no"; then
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
-printf "%s\n" "#define HAVE_IOCTL_SIOCGIFADDR 1" >>confdefs.h
-
-    curl_cv_func_ioctl_siocgifaddr="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_ioctl_siocgifaddr="no"
-  fi
+printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
 
+    curl_cv_func_inet_pton="yes"
   else
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-    curl_cv_func_ioctl="no"
+    curl_cv_func_inet_pton="no"
   fi
 
 
@@ -40262,7 +39931,6 @@ printf %s "checking if ioctlsocket can be linked... " >&6; }
 
 
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -40299,7 +39967,6 @@ printf %s "checking if ioctlsocket is prototyped... " >&6; }
 /* end confdefs.h.  */
 
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -40329,7 +39996,6 @@ printf %s "checking if ioctlsocket is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -40398,7 +40064,6 @@ printf %s "checking if ioctlsocket FIONBIO is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -40478,24 +40143,13 @@ printf %s "checking if IoctlSocket can be linked... " >&6; }
 /* end confdefs.h.  */
 
 
-#define IoctlSocket innocuous_IoctlSocket
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef IoctlSocket
-#ifdef __cplusplus
-extern "C"
-#endif
-char IoctlSocket ();
-#if defined __stub_IoctlSocket || defined __stub___IoctlSocket
-choke me
-#endif
+      $curl_includes_bsdsocket
 
 int main (void)
 {
-return IoctlSocket ();
+
+      IoctlSocket(0, 0, 0);
+
  ;
  return 0;
 }
@@ -40524,7 +40178,7 @@ printf %s "checking if IoctlSocket is prototyped... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-      $curl_includes_stropts
+      $curl_includes_bsdsocket
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -40553,7 +40207,7 @@ printf %s "checking if IoctlSocket is compilable... " >&6; }
 /* end confdefs.h.  */
 
 
-        $curl_includes_stropts
+        $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -40610,7 +40264,7 @@ printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL 1" >>confdefs.h
 
     curl_cv_func_ioctlsocket_camel="yes"
 
-  #
+    #
   tst_compi_ioctlsocket_camel_fionbio="unknown"
   tst_allow_ioctlsocket_camel_fionbio="unknown"
   #
@@ -40621,7 +40275,7 @@ printf %s "checking if IoctlSocket FIONBIO is compilable... " >&6; }
 /* end confdefs.h.  */
 
 
-        $curl_includes_stropts
+        $curl_includes_bsdsocket
 
 int main (void)
 {
@@ -40689,224 +40343,6 @@ printf "%s\n" "no" >&6; }
   fi
 
 
-      #
-  tst_links_localtime_r="unknown"
-  tst_proto_localtime_r="unknown"
-  tst_compi_localtime_r="unknown"
-  tst_works_localtime_r="unknown"
-  tst_allow_localtime_r="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r can be linked" >&5
-printf %s "checking if localtime_r can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define localtime_r innocuous_localtime_r
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef localtime_r
-#ifdef __cplusplus
-extern "C"
-#endif
-char localtime_r ();
-#if defined __stub_localtime_r || defined __stub___localtime_r
-choke me
-#endif
-
-int main (void)
-{
-return localtime_r ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_localtime_r="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_localtime_r="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_localtime_r" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r is prototyped" >&5
-printf %s "checking if localtime_r is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_time
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "localtime_r" >/dev/null 2>&1
-then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_localtime_r="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_localtime_r="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_localtime_r" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r is compilable" >&5
-printf %s "checking if localtime_r is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_time
-
-int main (void)
-{
-
-        if(0 != localtime_r(0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_localtime_r="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_localtime_r="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-    if test "x$cross_compiling" != "xyes" &&
-    test "$tst_compi_localtime_r" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r seems to work" >&5
-printf %s "checking if localtime_r seems to work... " >&6; }
-
-   case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
-
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
-then :
-  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_stdlib
-        $curl_includes_time
-
-int main (void)
-{
-
-        time_t clock = 1170352587;
-        struct tm *tmp = 0;
-        struct tm result;
-        tmp = localtime_r(&clock, &result);
-        if(tmp)
-          exit(0);
-        else
-          exit(1);
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"
-then :
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_works_localtime_r="yes"
-
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_works_localtime_r="no"
-
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-   eval "$library_path_var=\$old" # restore
-
-  fi
-  #
-  if test "$tst_compi_localtime_r" = "yes" &&
-    test "$tst_works_localtime_r" != "no"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r usage allowed" >&5
-printf %s "checking if localtime_r usage allowed... " >&6; }
-    if test "x$curl_disallow_localtime_r" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_localtime_r="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_localtime_r="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if localtime_r might be used" >&5
-printf %s "checking if localtime_r might be used... " >&6; }
-  if test "$tst_links_localtime_r" = "yes" &&
-     test "$tst_proto_localtime_r" = "yes" &&
-     test "$tst_compi_localtime_r" = "yes" &&
-     test "$tst_allow_localtime_r" = "yes" &&
-     test "$tst_works_localtime_r" != "no"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h
-
-    curl_cv_func_localtime_r="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_localtime_r="no"
-  fi
-
-
     #
   tst_links_memrchr="unknown"
   tst_macro_memrchr="unknown"
@@ -41218,15 +40654,72 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 printf %s "checking if poll seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+        $curl_includes_stdlib
+        $curl_includes_poll
+        $curl_includes_time
+
+int main (void)
+{
+
+        /* detect the original poll() breakage */
+        if(0 != poll(0, 0, 10))
+          exit(1); /* fail */
+        else {
+          /* detect the 10.12 poll() breakage */
+          struct timeval before, after;
+          int rc;
+          size_t us;
+
+          gettimeofday(&before, NULL);
+          rc = poll(NULL, 0, 500);
+          gettimeofday(&after, NULL);
+
+          us = (after.tv_sec - before.tv_sec) * 1000000 +
+            (after.tv_usec - before.tv_usec);
+
+          if(us < 400000)
+            exit(1);
+        }
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_poll="yes"
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_poll="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -41285,7 +40778,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -41314,9 +40809,6 @@ printf %s "checking if poll might be used... " >&6; }
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
-printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
-
-
 printf "%s\n" "#define HAVE_POLL_FINE 1" >>confdefs.h
 
     curl_cv_func_poll="yes"
@@ -41327,226 +40819,6 @@ printf "%s\n" "no" >&6; }
   fi
 
 
-      #
-  tst_links_setsockopt="unknown"
-  tst_proto_setsockopt="unknown"
-  tst_compi_setsockopt="unknown"
-  tst_allow_setsockopt="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt can be linked" >&5
-printf %s "checking if setsockopt can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-      $curl_includes_winsock2
-      $curl_includes_bsdsocket
-      $curl_includes_sys_socket
-
-int main (void)
-{
-
-      if(0 != setsockopt(0, 0, 0, 0, 0))
-        return 1;
-
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_setsockopt="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_setsockopt="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_setsockopt" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt is prototyped" >&5
-printf %s "checking if setsockopt is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_winsock2
-      $curl_includes_bsdsocket
-      $curl_includes_sys_socket
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "setsockopt" >/dev/null 2>&1
-then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_setsockopt="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_setsockopt="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_setsockopt" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt is compilable" >&5
-printf %s "checking if setsockopt is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_winsock2
-      $curl_includes_bsdsocket
-        $curl_includes_sys_socket
-
-int main (void)
-{
-
-        if(0 != setsockopt(0, 0, 0, 0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_setsockopt="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_setsockopt="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_setsockopt" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt usage allowed" >&5
-printf %s "checking if setsockopt usage allowed... " >&6; }
-    if test "x$curl_disallow_setsockopt" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_setsockopt="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_setsockopt="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt might be used" >&5
-printf %s "checking if setsockopt might be used... " >&6; }
-  if test "$tst_links_setsockopt" = "yes" &&
-     test "$tst_proto_setsockopt" = "yes" &&
-     test "$tst_compi_setsockopt" = "yes" &&
-     test "$tst_allow_setsockopt" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_SETSOCKOPT 1" >>confdefs.h
-
-    curl_cv_func_setsockopt="yes"
-
-  #
-  tst_compi_setsockopt_so_nonblock="unknown"
-  tst_allow_setsockopt_so_nonblock="unknown"
-  #
-  if test "$curl_cv_func_setsockopt" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK is compilable" >&5
-printf %s "checking if setsockopt SO_NONBLOCK is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_winsock2
-      $curl_includes_bsdsocket
-        $curl_includes_sys_socket
-
-int main (void)
-{
-
-        if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_setsockopt_so_nonblock="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_setsockopt_so_nonblock="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_setsockopt_so_nonblock" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK usage allowed" >&5
-printf %s "checking if setsockopt SO_NONBLOCK usage allowed... " >&6; }
-    if test "x$curl_disallow_setsockopt_so_nonblock" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_setsockopt_so_nonblock="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_setsockopt_so_nonblock="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if setsockopt SO_NONBLOCK might be used" >&5
-printf %s "checking if setsockopt SO_NONBLOCK might be used... " >&6; }
-  if test "$tst_compi_setsockopt_so_nonblock" = "yes" &&
-     test "$tst_allow_setsockopt_so_nonblock" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_SETSOCKOPT_SO_NONBLOCK 1" >>confdefs.h
-
-    curl_cv_func_setsockopt_so_nonblock="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_setsockopt_so_nonblock="no"
-  fi
-
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_setsockopt="no"
-  fi
-
-
 curl_includes_signal="\
 /* includes start */
 #ifdef HAVE_SYS_TYPES_H
@@ -42325,7 +41597,7 @@ printf %s "checking if socket is compilable... " >&6; }
 
 
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
         $curl_includes_socket
 
@@ -43169,15 +42441,63 @@ printf "%s\n" "yes" >&6; }
 printf %s "checking if strerror_r seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+        $curl_includes_stdlib
+        $curl_includes_string
+#       include <errno.h>
+
+int main (void)
+{
+
+        char buffer[1024];
+        char *string = 0;
+        buffer[0] = '\0';
+        string = strerror_r(EACCES, buffer, sizeof(buffer));
+        if(!string)
+          exit(1); /* fail */
+        if(!string[0])
+          exit(1); /* fail */
+        else
+          exit(0);
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+ ;
+ return 0;
+}
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_glibc_strerror_r="yes"
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_glibc_strerror_r="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -43227,7 +42547,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -43285,15 +42607,63 @@ printf "%s\n" "yes" >&6; }
 printf %s "checking if strerror_r seems to work... " >&6; }
 
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
-   esac
+     darwin*)
+      if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+        $curl_includes_stdlib
+        $curl_includes_string
+#       include <errno.h>
+
+int main (void)
+{
+
+        char buffer[1024];
+        int error = 1;
+        buffer[0] = '\0';
+        error = strerror_r(EACCES, buffer, sizeof(buffer));
+        if(error)
+          exit(1); /* fail */
+        if(buffer[0] == '\0')
+          exit(1); /* fail */
+        else
+          exit(0);
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+      tst_works_posix_strerror_r="yes"
 
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+      tst_works_posix_strerror_r="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-   eval "export $library_path_var"
-   if test "$cross_compiling" = yes
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      if test "$cross_compiling" = yes
 then :
   { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
@@ -43343,7 +42713,9 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-   eval "$library_path_var=\$old" # restore
+      LD_LIBRARY_PATH=$old # restore
+     ;;
+   esac
 
   fi
   #
@@ -43392,9 +42764,6 @@ printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h
 
 printf "%s\n" "#define HAVE_GLIBC_STRERROR_R 1" >>confdefs.h
 
-
-printf "%s\n" "#define STRERROR_R_TYPE_ARG3 $tst_glibc_strerror_r_type_arg3" >>confdefs.h
-
     fi
     if test "$tst_posix_strerror_r" = "yes"; then
 
@@ -43403,9 +42772,6 @@ printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h
 
 printf "%s\n" "#define HAVE_POSIX_STRERROR_R 1" >>confdefs.h
 
-
-printf "%s\n" "#define STRERROR_R_TYPE_ARG3 $tst_posix_strerror_r_type_arg3" >>confdefs.h
-
     fi
     curl_cv_func_strerror_r="yes"
   else
@@ -43572,456 +42938,6 @@ printf "%s\n" "no" >&6; }
   fi
 
 
-    #
-  tst_links_strncmpi="unknown"
-  tst_proto_strncmpi="unknown"
-  tst_compi_strncmpi="unknown"
-  tst_allow_strncmpi="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi can be linked" >&5
-printf %s "checking if strncmpi can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define strncmpi innocuous_strncmpi
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef strncmpi
-#ifdef __cplusplus
-extern "C"
-#endif
-char strncmpi ();
-#if defined __stub_strncmpi || defined __stub___strncmpi
-choke me
-#endif
-
-int main (void)
-{
-return strncmpi ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_strncmpi="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_strncmpi="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_strncmpi" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi is prototyped" >&5
-printf %s "checking if strncmpi is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_string
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "strncmpi" >/dev/null 2>&1
-then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_strncmpi="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_strncmpi="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_strncmpi" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi is compilable" >&5
-printf %s "checking if strncmpi is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_string
-
-int main (void)
-{
-
-        if(0 != strncmpi(0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_strncmpi="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_strncmpi="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_strncmpi" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi usage allowed" >&5
-printf %s "checking if strncmpi usage allowed... " >&6; }
-    if test "x$curl_disallow_strncmpi" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_strncmpi="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_strncmpi="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strncmpi might be used" >&5
-printf %s "checking if strncmpi might be used... " >&6; }
-  if test "$tst_links_strncmpi" = "yes" &&
-     test "$tst_proto_strncmpi" = "yes" &&
-     test "$tst_compi_strncmpi" = "yes" &&
-     test "$tst_allow_strncmpi" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_STRNCMPI 1" >>confdefs.h
-
-    curl_cv_func_strncmpi="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_strncmpi="no"
-  fi
-
-
-    #
-  tst_links_strnicmp="unknown"
-  tst_proto_strnicmp="unknown"
-  tst_compi_strnicmp="unknown"
-  tst_allow_strnicmp="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp can be linked" >&5
-printf %s "checking if strnicmp can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define strnicmp innocuous_strnicmp
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef strnicmp
-#ifdef __cplusplus
-extern "C"
-#endif
-char strnicmp ();
-#if defined __stub_strnicmp || defined __stub___strnicmp
-choke me
-#endif
-
-int main (void)
-{
-return strnicmp ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_strnicmp="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_strnicmp="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_strnicmp" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp is prototyped" >&5
-printf %s "checking if strnicmp is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_string
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "strnicmp" >/dev/null 2>&1
-then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_strnicmp="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_strnicmp="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_strnicmp" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp is compilable" >&5
-printf %s "checking if strnicmp is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_string
-
-int main (void)
-{
-
-        if(0 != strnicmp(0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_strnicmp="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_strnicmp="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_strnicmp" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp usage allowed" >&5
-printf %s "checking if strnicmp usage allowed... " >&6; }
-    if test "x$curl_disallow_strnicmp" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_strnicmp="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_strnicmp="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strnicmp might be used" >&5
-printf %s "checking if strnicmp might be used... " >&6; }
-  if test "$tst_links_strnicmp" = "yes" &&
-     test "$tst_proto_strnicmp" = "yes" &&
-     test "$tst_compi_strnicmp" = "yes" &&
-     test "$tst_allow_strnicmp" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h
-
-    curl_cv_func_strnicmp="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_strnicmp="no"
-  fi
-
-
-    #
-  tst_links_strstr="unknown"
-  tst_proto_strstr="unknown"
-  tst_compi_strstr="unknown"
-  tst_allow_strstr="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr can be linked" >&5
-printf %s "checking if strstr can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define strstr innocuous_strstr
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef strstr
-#ifdef __cplusplus
-extern "C"
-#endif
-char strstr ();
-#if defined __stub_strstr || defined __stub___strstr
-choke me
-#endif
-
-int main (void)
-{
-return strstr ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_strstr="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_strstr="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_strstr" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr is prototyped" >&5
-printf %s "checking if strstr is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_string
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "strstr" >/dev/null 2>&1
-then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_strstr="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_strstr="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_strstr" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr is compilable" >&5
-printf %s "checking if strstr is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_string
-
-int main (void)
-{
-
-        if(0 != strstr(0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_strstr="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_strstr="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_strstr" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr usage allowed" >&5
-printf %s "checking if strstr usage allowed... " >&6; }
-    if test "x$curl_disallow_strstr" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_strstr="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_strstr="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strstr might be used" >&5
-printf %s "checking if strstr might be used... " >&6; }
-  if test "$tst_links_strstr" = "yes" &&
-     test "$tst_proto_strstr" = "yes" &&
-     test "$tst_compi_strstr" = "yes" &&
-     test "$tst_allow_strstr" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h
-
-    curl_cv_func_strstr="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_strstr="no"
-  fi
-
-
     #
   tst_links_strtok_r="unknown"
   tst_proto_strtok_r="unknown"
@@ -44322,182 +43238,6 @@ printf "%s\n" "no" >&6; }
   fi
 
 
-curl_includes_sys_uio="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-#  include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_UIO_H
-#  include <sys/uio.h>
-#endif
-/* includes end */"
-  ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_uio
-"
-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/uio.h" "ac_cv_header_sys_uio_h" "$curl_includes_sys_uio
-"
-if test "x$ac_cv_header_sys_uio_h" = xyes
-then :
-  printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h
-
-fi
-
-
-
-    #
-  tst_links_writev="unknown"
-  tst_proto_writev="unknown"
-  tst_compi_writev="unknown"
-  tst_allow_writev="unknown"
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev can be linked" >&5
-printf %s "checking if writev can be linked... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-#define writev innocuous_writev
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef writev
-#ifdef __cplusplus
-extern "C"
-#endif
-char writev ();
-#if defined __stub_writev || defined __stub___writev
-choke me
-#endif
-
-int main (void)
-{
-return writev ();
- ;
- return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-    tst_links_writev="yes"
-
-else $as_nop
-
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    tst_links_writev="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
-  #
-  if test "$tst_links_writev" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev is prototyped" >&5
-printf %s "checking if writev is prototyped... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-      $curl_includes_sys_uio
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "writev" >/dev/null 2>&1
-then :
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_proto_writev="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_proto_writev="no"
-
-fi
-rm -rf conftest*
-
-  fi
-  #
-  if test "$tst_proto_writev" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev is compilable" >&5
-printf %s "checking if writev is compilable... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-
-        $curl_includes_sys_uio
-
-int main (void)
-{
-
-        if(0 != writev(0, 0, 0))
-          return 1;
-
- ;
- 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; }
-      tst_compi_writev="yes"
-
-else $as_nop
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_compi_writev="no"
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  fi
-  #
-  if test "$tst_compi_writev" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev usage allowed" >&5
-printf %s "checking if writev usage allowed... " >&6; }
-    if test "x$curl_disallow_writev" != "xyes"; then
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-      tst_allow_writev="yes"
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-      tst_allow_writev="no"
-    fi
-  fi
-  #
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if writev might be used" >&5
-printf %s "checking if writev might be used... " >&6; }
-  if test "$tst_links_writev" = "yes" &&
-     test "$tst_proto_writev" = "yes" &&
-     test "$tst_compi_writev" = "yes" &&
-     test "$tst_allow_writev" = "yes"; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
-
-printf "%s\n" "#define HAVE_WRITEV 1" >>confdefs.h
-
-    curl_cv_func_writev="yes"
-  else
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-    curl_cv_func_writev="no"
-  fi
-
-
 case $host in
   *msdosdjgpp)
      ac_cv_func_pipe=no
@@ -44607,7 +43347,7 @@ fi
 
 
 
-  for ac_func in fnmatch geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe setlocale setmode setrlimit usleep utime utimes
+  for ac_func in fnmatch fchmod geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit snprintf utime utimes
 do :
   as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -44667,7 +43407,7 @@ fi
 done
 
 
-            #
+        #
   tst_method="unknown"
 
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5
 
 
 
-
-
   #
   if test "$want_ares" = "yes"; then
         clean_CPPFLAGS="$CPPFLAGS"
     clean_LDFLAGS="$LDFLAGS"
     clean_LIBS="$LIBS"
-    embedded_ares="unknown"
     configure_runpath=`pwd`
-    embedded_ares_builddir="$configure_runpath/ares"
     if test -n "$want_ares_path"; then
             ARES_PCDIR="$want_ares_path/lib/pkgconfig"
 
@@ -45026,14 +43762,6 @@ printf "%s\n" "$as_me: pkg-config: ares CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;}
         ares_LIBS="-lcares"
       fi
     else
-            if test -d "$srcdir/ares"; then
-                embedded_ares="yes"
-        subdirs="$subdirs ares"
-
-                        ares_CPPFLAGS=""
-        ares_LDFLAGS="-L$embedded_ares_builddir"
-        ares_LIBS="-lcares"
-      else
 
     if test -n "$PKG_CONFIG"; then
       PKGCONFIG="$PKG_CONFIG"
@@ -45170,21 +43898,20 @@ printf "%s\n" "found" >&6; }
       fi
     fi
 
-        if test "$PKGCONFIG" != "no" ; then
-          ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
-          ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
-          ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
-          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&5
+      if test "$PKGCONFIG" != "no" ; then
+        ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
+        ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
+        ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&5
 printf "%s\n" "$as_me: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&6;}
-          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&5
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&5
 printf "%s\n" "$as_me: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&6;}
-          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&5
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&5
 printf "%s\n" "$as_me: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;}
-        else
-          ares_CPPFLAGS=""
-          ares_LDFLAGS=""
-          ares_LIBS="-lcares"
-        fi
+      else
+        ares_CPPFLAGS=""
+        ares_LDFLAGS=""
+        ares_LIBS="-lcares"
       fi
     fi
     #
@@ -45192,28 +43919,28 @@ printf "%s\n" "$as_me: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;}
     LDFLAGS="$clean_LDFLAGS $ares_LDFLAGS"
     LIBS="$ares_LIBS $clean_LIBS"
     #
-    if test "$embedded_ares" != "yes"; then
-                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that c-ares is good and recent enough" >&5
+
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that c-ares is good and recent enough" >&5
 printf %s "checking that c-ares is good and recent enough... " >&6; }
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 
 #include <ares.h>
-          /* set of dummy functions in case c-ares was built with debug */
-          void curl_dofree() { }
-          void curl_sclose() { }
-          void curl_domalloc() { }
-          void curl_docalloc() { }
-          void curl_socket() { }
+        /* set of dummy functions in case c-ares was built with debug */
+        void curl_dofree() { }
+        void curl_sclose() { }
+        void curl_domalloc() { }
+        void curl_docalloc() { }
+        void curl_socket() { }
 
 int main (void)
 {
 
-          ares_channel channel;
-          ares_cancel(channel); /* added in 1.2.0 */
-          ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
-          ares_dup(&channel, channel); /* added in 1.6.0 */
+        ares_channel channel;
+        ares_cancel(channel); /* added in 1.2.0 */
+        ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
+        ares_dup(&channel, channel); /* added in 1.6.0 */
 
  ;
  return 0;
@@ -45223,24 +43950,24 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
 
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
 else $as_nop
 
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-        as_fn_error $? "c-ares library defective or too old" "$LINENO" 5
-                CPPFLAGS="$clean_CPPFLAGS"
-        LDFLAGS="$clean_LDFLAGS"
-        LIBS="$clean_LIBS"
-        # prevent usage
-        want_ares="no"
+      as_fn_error $? "c-ares library defective or too old" "$LINENO" 5
+            CPPFLAGS="$clean_CPPFLAGS"
+      LDFLAGS="$clean_LDFLAGS"
+      LIBS="$clean_LIBS"
+      # prevent usage
+      want_ares="no"
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-    fi
+
     if test "$want_ares" = "yes"; then
 
 printf "%s\n" "#define USE_ARES 1" >>confdefs.h
@@ -45251,14 +43978,6 @@ printf "%s\n" "#define USE_ARES 1" >>confdefs.h
     fi
   fi
 
- if test x$embedded_ares = xyes; then
-  USE_EMBEDDED_ARES_TRUE=
-  USE_EMBEDDED_ARES_FALSE='#'
-else
-  USE_EMBEDDED_ARES_TRUE='#'
-  USE_EMBEDDED_ARES_FALSE=
-fi
-
 
 if test "x$curl_cv_native_windows" != "xyes" &&
    test "x$enable_shared" = "xyes"; then
 
             if test "$USE_THREADS_POSIX" != "1"
       then
-        CFLAGS="$CFLAGS -pthread"
         # assign PTHREAD for pkg-config use
         PTHREAD=" -pthread"
+
+        case $host in
+        *-ibm-aix*)
+                      COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
+           if test x"$COMPILER_VERSION" = "x"; then
+             CFLAGS="$CFLAGS -pthread"
+           else
+             CFLAGS="$CFLAGS -qthreaded"
+           fi
+           ;;
+        powerpc-*amigaos*)
+                      PTHREAD=" -lpthread"
+           ;;
+        *)
+           CFLAGS="$CFLAGS -pthread"
+           ;;
+        esac
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
 printf %s "checking for pthread_create in -lpthread... " >&6; }
 if test ${ac_cv_lib_pthread_pthread_create+y}
@@ -45712,8 +44447,15 @@ printf "%s\n" "auto" >&6; }
 fi
 
 if test "x$want_unix_sockets" != "xno"; then
-  ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_path" "ac_cv_member_struct_sockaddr_un_sun_path" "
-    #include <sys/un.h>
+  if test "x$curl_cv_native_windows" = "xyes"; then
+    USE_UNIX_SOCKETS=1
+
+printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h
+
+    curl_unix_sockets_msg="enabled"
+  else
+    ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_path" "ac_cv_member_struct_sockaddr_un_sun_path" "
+      #include <sys/un.h>
 
 "
 if test "x$ac_cv_member_struct_sockaddr_un_sun_path" = xyes
@@ -45722,18 +44464,19 @@ then :
 
 printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h
 
-    USE_UNIX_SOCKETS=1
+      USE_UNIX_SOCKETS=1
 
-    curl_unix_sockets_msg="enabled"
+      curl_unix_sockets_msg="enabled"
 
 else $as_nop
 
-    if test "x$want_unix_sockets" = "xyes"; then
-      as_fn_error $? "--enable-unix-sockets is not available on this platform!" "$LINENO" 5
-    fi
+      if test "x$want_unix_sockets" = "xyes"; then
+        as_fn_error $? "--enable-unix-sockets is not available on this platform!" "$LINENO" 5
+      fi
 
 fi
 
+  fi
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support cookies" >&5
@@ -45996,8 +44739,33 @@ printf "%s\n" "yes" >&6; }
        ;;
   esac
 else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support headers-api" >&5
+printf %s "checking whether to support headers-api... " >&6; }
+# Check whether --enable-headers-api was given.
+if test ${enable_headers_api+y}
+then :
+  enableval=$enable_headers_api;  case "$enableval" in
+  no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
+       curl_headers_msg="no      (--enable-headers-api)"
+
+printf "%s\n" "#define CURL_DISABLE_HEADERS_API 1" >>confdefs.h
+
+       ;;
+  *)
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+       ;;
+  esac
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 
 fi
 
@@ -46073,13 +44841,51 @@ printf "%s\n" "$ECH_SUPPORT" >&6; }
   fi
 fi
 
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support WebSockets" >&5
+printf %s "checking whether to support WebSockets... " >&6; }
+# Check whether --enable-websockets was given.
+if test ${enable_websockets+y}
+then :
+  enableval=$enable_websockets;  case "$enableval" in
+  no)
+     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+     ;;
+  *)
+     if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+         curl_ws_msg="enabled"
+
+printf "%s\n" "#define USE_WEBSOCKETS 1" >>confdefs.h
+
+         SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS"
+         if test "x$SSL_ENABLED" = "x1"; then
+           SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS"
+         fi
+         experimental="$experimental Websockets"
+     else
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Websockets disabled due to lack of >32 bit curl_off_t" >&5
+printf "%s\n" "$as_me: WARNING: Websockets disabled due to lack of >32 bit curl_off_t" >&2;}
+     fi
+     ;;
+  esac
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+fi
+
+
+
 
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5
 printf %s "checking whether hiding of library internal symbols will actually happen... " >&6; }
   CFLAG_CURL_SYMBOL_HIDING=""
   doing_symbol_hiding="no"
-  if test x"$curl_cv_native_windows" != "xyes" &&
-    test "$want_symbol_hiding" = "yes" &&
+  if test "$want_symbol_hiding" = "yes" &&
     test "$supports_symbol_hiding" = "yes"; then
     doing_symbol_hiding="yes"
     CFLAG_CURL_SYMBOL_HIDING="$symbol_hiding_CFLAGS"
@@ -46226,7 +45032,8 @@ if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
 fi
 
-if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then
+if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1" \
+    -o "x$USE_MSH3" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
 fi
 
@@ -46252,6 +45059,36 @@ if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
   fi
 fi
 
+if test "$tst_atomic" = "yes"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+      #include <windows.h>
+
+int main (void)
+{
+
+      #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600)
+      #error
+      #endif
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+     SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
 SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '`
 
 
@@ -46534,7 +45371,7 @@ if test "x$want_curldebug_assumed" = "xyes" &&
   ac_configure_args="$ac_configure_args --enable-curldebug"
 fi
 
-ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile docs/cmdline-opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile scripts/Makefile lib/libcurl.vers tests/Makefile tests/certs/Makefile tests/certs/scripts/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile packages/Makefile packages/vms/Makefile curl-config libcurl.pc"
+ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile docs/cmdline-opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile scripts/Makefile lib/libcurl.vers lib/libcurl.plist tests/Makefile tests/certs/Makefile tests/certs/scripts/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile packages/Makefile packages/vms/Makefile curl-config libcurl.pc"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -46705,6 +45542,10 @@ if test -z "${DOING_NATIVE_WINDOWS_TRUE}" && test -z "${DOING_NATIVE_WINDOWS_FAL
   as_fn_error $? "conditional \"DOING_NATIVE_WINDOWS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${OS_WINDOWS_TRUE}" && test -z "${OS_WINDOWS_FALSE}"; then
+  as_fn_error $? "conditional \"OS_WINDOWS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_LIBZ\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -46729,10 +45570,6 @@ if test -z "${USE_MANUAL_TRUE}" && test -z "${USE_MANUAL_FALSE}"; then
   as_fn_error $? "conditional \"USE_MANUAL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_EMBEDDED_ARES_TRUE}" && test -z "${USE_EMBEDDED_ARES_FALSE}"; then
-  as_fn_error $? "conditional \"USE_EMBEDDED_ARES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${BUILD_LIBHOSTNAME_TRUE}" && test -z "${BUILD_LIBHOSTNAME_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_LIBHOSTNAME\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -47361,12 +46198,14 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q
 lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
 reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
 reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`'
 deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
 file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
 file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
 want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
 sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
 AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`'
 AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
 archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
 STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
@@ -47460,6 +46299,48 @@ enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_sub
 enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
 old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
 striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+LD_RC='`$ECHO "$LD_RC" | $SED "$delay_single_quote_subst"`'
+reload_flag_RC='`$ECHO "$reload_flag_RC" | $SED "$delay_single_quote_subst"`'
+reload_cmds_RC='`$ECHO "$reload_cmds_RC" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_RC='`$ECHO "$old_archive_cmds_RC" | $SED "$delay_single_quote_subst"`'
+compiler_RC='`$ECHO "$compiler_RC" | $SED "$delay_single_quote_subst"`'
+GCC_RC='`$ECHO "$GCC_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_RC='`$ECHO "$lt_prog_compiler_no_builtin_flag_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_RC='`$ECHO "$lt_prog_compiler_pic_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_RC='`$ECHO "$lt_prog_compiler_wl_RC" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_RC='`$ECHO "$lt_prog_compiler_static_RC" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_RC='`$ECHO "$lt_cv_prog_compiler_c_o_RC" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_RC='`$ECHO "$archive_cmds_need_lc_RC" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_RC='`$ECHO "$enable_shared_with_static_runtimes_RC" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_RC='`$ECHO "$export_dynamic_flag_spec_RC" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_RC='`$ECHO "$whole_archive_flag_spec_RC" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_RC='`$ECHO "$compiler_needs_object_RC" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_RC='`$ECHO "$old_archive_from_new_cmds_RC" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_RC='`$ECHO "$old_archive_from_expsyms_cmds_RC" | $SED "$delay_single_quote_subst"`'
+archive_cmds_RC='`$ECHO "$archive_cmds_RC" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_RC='`$ECHO "$archive_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`'
+module_cmds_RC='`$ECHO "$module_cmds_RC" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_RC='`$ECHO "$module_expsym_cmds_RC" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_RC='`$ECHO "$with_gnu_ld_RC" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_RC='`$ECHO "$allow_undefined_flag_RC" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_RC='`$ECHO "$no_undefined_flag_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_RC='`$ECHO "$hardcode_libdir_flag_spec_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_RC='`$ECHO "$hardcode_libdir_separator_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_RC='`$ECHO "$hardcode_direct_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_RC='`$ECHO "$hardcode_direct_absolute_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_RC='`$ECHO "$hardcode_minus_L_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_RC='`$ECHO "$hardcode_shlibpath_var_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_RC='`$ECHO "$hardcode_automatic_RC" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_RC='`$ECHO "$inherit_rpath_RC" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_RC='`$ECHO "$link_all_deplibs_RC" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_RC='`$ECHO "$always_export_symbols_RC" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_RC='`$ECHO "$export_symbols_cmds_RC" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_RC='`$ECHO "$exclude_expsyms_RC" | $SED "$delay_single_quote_subst"`'
+include_expsyms_RC='`$ECHO "$include_expsyms_RC" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_RC='`$ECHO "$prelink_cmds_RC" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_RC='`$ECHO "$postlink_cmds_RC" | $SED "$delay_single_quote_subst"`'
+file_list_spec_RC='`$ECHO "$file_list_spec_RC" | $SED "$delay_single_quote_subst"`'
+hardcode_action_RC='`$ECHO "$hardcode_action_RC" | $SED "$delay_single_quote_subst"`'
 
 LTCC='$LTCC'
 LTCFLAGS='$LTCFLAGS'
@@ -47490,13 +46371,13 @@ LN_S \
 lt_SP2NL \
 lt_NL2SP \
 reload_flag \
+FILECMD \
 deplibs_check_method \
 file_magic_cmd \
 file_magic_glob \
 want_nocaseglob \
 sharedlib_from_linklib_cmd \
 AR \
-AR_FLAGS \
 archiver_list_spec \
 STRIP \
 RANLIB \
@@ -47542,7 +46423,26 @@ soname_spec \
 install_override_mode \
 finish_eval \
 old_striplib \
-striplib; do
+striplib \
+LD_RC \
+reload_flag_RC \
+compiler_RC \
+lt_prog_compiler_no_builtin_flag_RC \
+lt_prog_compiler_pic_RC \
+lt_prog_compiler_wl_RC \
+lt_prog_compiler_static_RC \
+lt_cv_prog_compiler_c_o_RC \
+export_dynamic_flag_spec_RC \
+whole_archive_flag_spec_RC \
+compiler_needs_object_RC \
+with_gnu_ld_RC \
+allow_undefined_flag_RC \
+no_undefined_flag_RC \
+hardcode_libdir_flag_spec_RC \
+hardcode_libdir_separator_RC \
+exclude_expsyms_RC \
+include_expsyms_RC \
+file_list_spec_RC; do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
       eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
@@ -47573,7 +46473,18 @@ postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
 configure_time_dlsearch_path \
-configure_time_lt_sys_library_path; do
+configure_time_lt_sys_library_path \
+reload_cmds_RC \
+old_archive_cmds_RC \
+old_archive_from_new_cmds_RC \
+old_archive_from_expsyms_cmds_RC \
+archive_cmds_RC \
+archive_expsym_cmds_RC \
+module_cmds_RC \
+module_expsym_cmds_RC \
+export_symbols_cmds_RC \
+prelink_cmds_RC \
+postlink_cmds_RC; do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
       eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
@@ -47601,6 +46512,8 @@ fi
 
 
 
+
+
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -47624,6 +46537,7 @@ do
     "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
     "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
     "lib/libcurl.vers") CONFIG_FILES="$CONFIG_FILES lib/libcurl.vers" ;;
+    "lib/libcurl.plist") CONFIG_FILES="$CONFIG_FILES lib/libcurl.plist" ;;
     "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
     "tests/certs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/Makefile" ;;
     "tests/certs/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/scripts/Makefile" ;;
@@ -48370,7 +47284,7 @@ See \`config.log' for more details" "$LINENO" 5; }
 
 
 # The names of the tagged configurations supported by this script.
-available_tags=''
+available_tags='RC '
 
 # Configured defaults for sys_lib_dlsearch_path munging.
 : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
@@ -48469,6 +47383,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd
 # convert \$build files to toolchain format.
 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 
+# A file(cmd) program that detects file types.
+FILECMD=$lt_FILECMD
+
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
 
@@ -48487,8 +47404,11 @@ sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
 # The archiver.
 AR=$lt_AR
 
+# Flags to create an archive (by configure).
+lt_ar_flags=$lt_ar_flags
+
 # Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
+AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"}
 
 # How to feed a file listing to the archiver.
 archiver_list_spec=$lt_archiver_list_spec
@@ -48864,13 +47784,152 @@ ltmain=$ac_aux_dir/ltmain.sh
   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
   # text mode, it properly converts lines to CR/LF.  This bash problem
   # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
+  $SED '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
    mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
 
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: RC
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_RC
+reload_cmds=$lt_reload_cmds_RC
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_RC
+
+# A language specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_RC
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_RC
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_RC
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_RC
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_RC
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_RC
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_RC
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# ### END LIBTOOL TAG CONFIG: RC
+_LT_EOF
+
  ;;
 
   esac
@@ -48905,149 +47964,6 @@ if test "$no_create" != yes; then
   # would make configure fail if this is the last instruction.
   $ac_cs_success || as_fn_exit 1
 fi
-
-#
-# CONFIG_SUBDIRS section.
-#
-if test "$no_recursion" != yes; then
-
-  # Remove --cache-file, --srcdir, and --disable-option-checking arguments
-  # so they do not pile up.
-  ac_sub_configure_args=
-  ac_prev=
-  eval "set x $ac_configure_args"
-  shift
-  for ac_arg
-  do
-    if test -n "$ac_prev"; then
-      ac_prev=
-      continue
-    fi
-    case $ac_arg in
-    -cache-file | --cache-file | --cache-fil | --cache-fi \
-    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-      ac_prev=cache_file ;;
-    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
-    | --c=*)
-      ;;
-    --config-cache | -C)
-      ;;
-    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-      ac_prev=srcdir ;;
-    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-      ;;
-    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-      ac_prev=prefix ;;
-    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-      ;;
-    --disable-option-checking)
-      ;;
-    *)
-      case $ac_arg in
-      *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-      esac
-      as_fn_append ac_sub_configure_args " '$ac_arg'" ;;
-    esac
-  done
-
-  # Always prepend --prefix to ensure using the same prefix
-  # in subdir configurations.
-  ac_arg="--prefix=$prefix"
-  case $ac_arg in
-  *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-  esac
-  ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
-
-  # Pass --silent
-  if test "$silent" = yes; then
-    ac_sub_configure_args="--silent $ac_sub_configure_args"
-  fi
-
-  # Always prepend --disable-option-checking to silence warnings, since
-  # different subdirs can have different --enable and --with options.
-  ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
-
-  ac_popdir=`pwd`
-  for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue
-
-    # Do not complain, so a configure script can configure whichever
-    # parts of a large source tree are present.
-    test -d "$srcdir/$ac_dir" || continue
-
-    ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
-    printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5
-    printf "%s\n" "$ac_msg" >&6
-    as_dir="$ac_dir"; as_fn_mkdir_p
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-    cd "$ac_dir"
-
-    # Check for configure.gnu first; this name is used for a wrapper for
-    # Metaconfig's "Configure" on case-insensitive file systems.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      ac_sub_configure=$ac_srcdir/configure.gnu
-    elif test -f "$ac_srcdir/configure"; then
-      ac_sub_configure=$ac_srcdir/configure
-    else
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5
-printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
-      ac_sub_configure=
-    fi
-
-    # The recursion is here.
-    if test -n "$ac_sub_configure"; then
-      # Make the cache file name correct relative to the subdirectory.
-      case $cache_file in
-      [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
-      *) # Relative name.
-       ac_sub_cache_file=$ac_top_build_prefix$cache_file ;;
-      esac
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
-printf "%s\n" "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
-      # The eval makes quoting arguments work.
-      eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
-          --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
-       as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
-    fi
-
-    cd "$ac_popdir"
-  done
-fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
@@ -49229,11 +48145,13 @@ done
   RTMP:             ${curl_rtmp_msg}
   PSL:              ${curl_psl_msg}
   Alt-svc:          ${curl_altsvc_msg}
+  Headers API:      ${curl_headers_msg}
   HSTS:             ${curl_hsts_msg}
   HTTP1:            ${curl_h1_msg}
   HTTP2:            ${curl_h2_msg}
   HTTP3:            ${curl_h3_msg}
   ECH:              ${curl_ech_msg}
+  WebSockets:       ${curl_ws_msg}
   Protocols:        ${SUPPORT_PROTOCOLS}
   Features:         ${SUPPORT_FEATURES}
 " >&5
@@ -49275,11 +48193,13 @@ printf "%s\n" "$as_me: Configured to build curl/libcurl:
   RTMP:             ${curl_rtmp_msg}
   PSL:              ${curl_psl_msg}
   Alt-svc:          ${curl_altsvc_msg}
+  Headers API:      ${curl_headers_msg}
   HSTS:             ${curl_hsts_msg}
   HTTP1:            ${curl_h1_msg}
   HTTP2:            ${curl_h2_msg}
   HTTP3:            ${curl_h3_msg}
   ECH:              ${curl_ech_msg}
+  WebSockets:       ${curl_ws_msg}
   Protocols:        ${SUPPORT_PROTOCOLS}
   Features:         ${SUPPORT_FEATURES}
 " >&6;}
index 63e320236ff3b5211904aead19567f896031689a..445b3f9047b7aebc16b2e735298121472b2d574a 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 dnl Process this file with autoconf to produce a configure script.
 
@@ -31,7 +33,7 @@ XC_OVR_ZZ60
 CURL_OVERRIDE_AUTOCONF
 
 dnl configure script copyright
-AC_COPYRIGHT([Copyright (c) 1998 - 2021 Daniel Stenberg, <daniel@haxx.se>
+AC_COPYRIGHT([Copyright (c) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>
 This configure script may be copied, distributed and modified under the
 terms of the curl license; see COPYING for more details])
 
@@ -83,21 +85,22 @@ if test -z "$GREP"; then
 fi
 AC_SUBST([GREP])
 
-dnl EGREP is mandatory for configure process and libtool.
+dnl 'grep -E' is mandatory for configure process and libtool.
 dnl Set it now, allowing it to be changed later.
 if test -z "$EGREP"; then
   dnl allow it to be overridden
+  AC_MSG_CHECKING([that grep -E works])
   if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
-    AC_MSG_CHECKING([for egrep])
     EGREP="$GREP -E"
-    AC_MSG_RESULT([$EGREP])
+    AC_MSG_RESULT([yes])
   else
+    AC_MSG_RESULT([no])
     AC_PATH_PROG([EGREP], [egrep], [not_found],
       [$PATH:/usr/bin:/usr/local/bin])
   fi
 fi
 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
-  AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
+  AC_MSG_ERROR([grep -E is not working and egrep is not found in PATH. Cannot continue.])
 fi
 AC_SUBST([EGREP])
 
@@ -118,6 +121,7 @@ AC_SUBST(libext)
 dnl figure out the libcurl version
 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h`
 XC_CHECK_PROG_CC
+CURL_ATOMIC
 
 dnl for --enable-code-coverage
 CURL_COVERAGE
@@ -143,7 +147,7 @@ AC_SUBST(PKGADD_VENDOR)
 
 dnl
 dnl initialize all the info variables
-    curl_ssl_msg="no      (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl,bearssl,rustls} )"
+    curl_ssl_msg="no      (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )"
     curl_ssh_msg="no      (--with-{libssh,libssh2})"
    curl_zlib_msg="no      (--with-zlib)"
  curl_brotli_msg="no      (--with-brotli)"
@@ -165,11 +169,13 @@ curl_verbose_msg="enabled (--disable-verbose)"
    curl_rtmp_msg="no      (--with-librtmp)"
     curl_psl_msg="no      (--with-libpsl)"
  curl_altsvc_msg="enabled (--disable-alt-svc)"
+curl_headers_msg="enabled (--disable-headers-api)"
    curl_hsts_msg="enabled (--disable-hsts)"
+     curl_ws_msg="no      (--enable-websockets)"
     ssl_backends=
      curl_h1_msg="enabled (internal)"
      curl_h2_msg="no      (--with-nghttp2, --with-hyper)"
-     curl_h3_msg="no      (--with-ngtcp2, --with-quiche)"
+     curl_h3_msg="no      (--with-ngtcp2, --with-quiche --with-msh3)"
 
 enable_altsvc="yes"
 hsts="yes"
@@ -192,91 +198,108 @@ AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]),
 
 OPT_SECURETRANSPORT=no
 AC_ARG_WITH(secure-transport,dnl
-AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),
+AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),[
   OPT_SECURETRANSPORT=$withval
-  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
-)
+  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport"
+])
 
 OPT_AMISSL=no
 AC_ARG_WITH(amissl,dnl
-AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),
+AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),[
   OPT_AMISSL=$withval
-  test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL")
+  TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL"
+])
 
 OPT_OPENSSL=no
 dnl Default to no CA bundle
 ca="no"
 AC_ARG_WITH(ssl,dnl
 AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl])
-AS_HELP_STRING([--without-ssl], [build without any TLS library]),
+AS_HELP_STRING([--without-ssl], [build without any TLS library]),[
   OPT_SSL=$withval
   OPT_OPENSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
+  else
+    SSL_DISABLED="D"
   fi
+])
 
 AC_ARG_WITH(openssl,dnl
-AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]),
+AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]),[
   OPT_OPENSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL"
   fi
+])
 
 OPT_GNUTLS=no
 AC_ARG_WITH(gnutls,dnl
-AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),
+AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),[
   OPT_GNUTLS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS"
   fi
+])
 
 OPT_MBEDTLS=no
 AC_ARG_WITH(mbedtls,dnl
-AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),
+AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),[
   OPT_MBEDTLS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS"
   fi
+])
 
 OPT_WOLFSSL=no
 AC_ARG_WITH(wolfssl,dnl
-AS_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)]),
+AS_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)]),[
   OPT_WOLFSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL")
-  fi
-
-OPT_MESALINK=no
-AC_ARG_WITH(mesalink,dnl
-AS_HELP_STRING([--with-mesalink=PATH],[where to look for MesaLink, PATH points to the installation root]),
-  OPT_MESALINK=$withval
-  if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }MesaLink")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL"
   fi
+])
 
 OPT_BEARSSL=no
 AC_ARG_WITH(bearssl,dnl
-AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),
+AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),[
   OPT_BEARSSL=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL"
   fi
+])
 
 OPT_RUSTLS=no
 AC_ARG_WITH(rustls,dnl
-AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),
+AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),[
   OPT_RUSTLS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls")
+    TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls"
+    experimental="$experimental rustls"
   fi
+])
+
+OPT_NSS_AWARE=no
+AC_ARG_WITH(nss-deprecated,dnl
+AS_HELP_STRING([--with-nss-deprecated],[confirm you realize NSS is going away]),
+  if test X"$withval" != Xno; then
+    OPT_NSS_AWARE=$withval
+  fi
+)
 
 OPT_NSS=no
 AC_ARG_WITH(nss,dnl
 AS_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root]),
   OPT_NSS=$withval
   if test X"$withval" != Xno; then
-    test -z "TLSCHOICE" || TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS")
+
+    if test X"$OPT_NSS_AWARE" = "Xno" ; then
+      AC_MSG_ERROR([NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md])
+    fi
+
+    [TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"]
   fi
+)
 
 dnl If no TLS choice has been made, check if it was explicitly disabled or
 dnl error out to force the user to decide.
@@ -290,7 +313,6 @@ Select from these:
   --with-bearssl
   --with-gnutls
   --with-mbedtls
-  --with-mesalink
   --with-nss
   --with-openssl (also works for BoringSSL and libressl)
   --with-rustls
@@ -327,6 +349,8 @@ AC_SYS_LARGEFILE
 
 XC_LIBTOOL
 
+LT_LANG([Windows Resource])
+
 #
 # Automake conditionals based on libtool related checks
 #
@@ -490,6 +514,28 @@ case $host in
     ;;
 esac
 
+# Detect original MinGW (not MinGW-w64)
+curl_mingw_original=no
+case $host in
+  *-*-mingw32*)
+    AC_MSG_CHECKING([using original MinGW (not MinGW-w64)])
+    AC_COMPILE_IFELSE([
+      AC_LANG_PROGRAM([[
+#include <_mingw.h>
+      ]],[[
+#if defined(__MINGW64_VERSION_MAJOR)
+#error
+#endif
+      ]])
+    ],[
+      curl_mingw_original=yes
+      AC_MSG_RESULT([yes])
+    ],[
+      AC_MSG_RESULT([no])
+    ])
+    ;;
+esac
+
 dnl **********************************************************************
 dnl Compilation based checks should not be done before this point.
 dnl **********************************************************************
@@ -509,14 +555,12 @@ case X-"$curl_cv_native_windows" in
     CURL_CHECK_HEADER_WS2TCPIP
     CURL_CHECK_HEADER_WINCRYPT
     CURL_CHECK_HEADER_WINLDAP
-    CURL_CHECK_HEADER_WINBER
     ;;
   *)
     curl_cv_header_winsock2_h="no"
     curl_cv_header_ws2tcpip_h="no"
     curl_cv_header_wincrypt_h="no"
     curl_cv_header_winldap_h="no"
-    curl_cv_header_winber_h="no"
     ;;
 esac
 CURL_CHECK_WIN32_LARGEFILE
@@ -526,6 +570,7 @@ CURL_DARWIN_CFLAGS
 CURL_DARWIN_SYSTEMCONFIGURATION
 CURL_SUPPORTS_BUILTIN_AVAILABLE
 
+AM_CONDITIONAL([OS_WINDOWS], [test "$curl_cv_native_windows" = "yes"])
 
 dnl ************************************************************
 dnl switch off particular protocols
@@ -722,7 +767,7 @@ if test X"$want_hyper" != Xno; then
           AC_MSG_NOTICE([Added $DIR_HYPER to CURL_LIBRARY_PATH]),
        )
       ],
-      for d in `echo $DIR_HYPER | sed -e 's/:/ /'`; do
+      for d in `echo $DIR_HYPER | $SED -e 's/:/ /'`; do
         if test -f "$d/libhyper.a"; then
           AC_MSG_ERROR([hyper was found in $d but was probably built with wrong flags. See docs/HYPER.md.])
         fi
@@ -1121,8 +1166,13 @@ then
   AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library])
   AC_LINK_IFELSE([
     AC_LANG_PROGRAM([[
+  #define __USE_INLINE__
   #include <proto/bsdsocket.h>
+  #ifdef __amigaos4__
+  struct SocketIFace *ISocket = NULL;
+  #else
   struct Library *SocketBase = NULL;
+  #endif
     ]],[[
       gethostbyname("www.dummysite.com");
     ]])
@@ -1146,16 +1196,6 @@ then
                ])
 fi
 
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
-  dnl gethostbyname in the net lib - for BeOS
-  AC_CHECK_LIB(net, gethostbyname,
-               [HAVE_GETHOSTBYNAME="1"
-               LIBS="-lnet $LIBS"
-               ])
-fi
-
-
 if test "$HAVE_GETHOSTBYNAME" != "1"; then
   AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
 fi
@@ -1270,7 +1310,6 @@ else
   then
     dnl both header and lib were found!
     AC_SUBST(HAVE_LIBZ)
-    AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
     AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
 
     ZLIB_LIBS="-lz"
@@ -1480,7 +1519,6 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
 
   CURL_CHECK_HEADER_LBER
   CURL_CHECK_HEADER_LDAP
-  CURL_CHECK_HEADER_LDAPSSL
   CURL_CHECK_HEADER_LDAP_SSL
 
   if test -z "$LDAPLIBNAME" ; then
@@ -1536,7 +1574,7 @@ if test x$CURL_DISABLE_LDAP != x1 ; then
 fi
 
 if test x$CURL_DISABLE_LDAP != x1 ; then
-  AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
+  AC_CHECK_FUNCS([ldap_url_parse])
 
   if test "$LDAPLIBNAME" = "wldap32"; then
     curl_ldap_msg="enabled (winldap)"
@@ -1701,17 +1739,25 @@ AC_ARG_WITH(gssapi,
   fi
 ])
 
+: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
+
 save_CPPFLAGS="$CPPFLAGS"
 AC_MSG_CHECKING([if GSS-API support is requested])
 if test x"$want_gss" = xyes; then
   AC_MSG_RESULT(yes)
 
-  CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+  if test $GSSAPI_ROOT != "/usr"; then
+    CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
+  else
+    CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+  fi
   if test -z "$GSSAPI_INCS"; then
      if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
         GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
      elif test "$PKGCONFIG" != "no" ; then
         GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi`
+     elif test -f "$KRB5CONFIG"; then
+        GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
      elif test "$GSSAPI_ROOT" != "yes"; then
         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
      fi
@@ -1796,7 +1842,11 @@ if test x"$want_gss" = xyes; then
         LIBS="-lgssapi_krb5 -lresolv $LIBS"
         ;;
      *)
-        CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+        if test $GSSAPI_ROOT != "/usr"; then
+          CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig)
+        else
+          CURL_CHECK_PKGCONFIG(mit-krb5-gssapi)
+        fi
         if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
            dnl krb5-config doesn't have --libs-only-L or similar, put everything
            dnl into LIBS
@@ -1805,6 +1855,11 @@ if test x"$want_gss" = xyes; then
         elif test "$PKGCONFIG" != "no" ; then
            gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi`
            LIBS="$gss_libs $LIBS"
+        elif test -f "$KRB5CONFIG"; then
+           dnl krb5-config doesn't have --libs-only-L or similar, put everything
+           dnl into LIBS
+           gss_libs=`$KRB5CONFIG --libs gssapi`
+           LIBS="$gss_libs $LIBS"
         else
            case $host in
            *-hp-hpux*)
@@ -1839,6 +1894,18 @@ else
   CPPFLAGS="$save_CPPFLAGS"
 fi
 
+if test x"$want_gss" = xyes; then
+  AC_MSG_CHECKING([if we can link against GSS-API library])
+  AC_LINK_IFELSE([
+    AC_LANG_FUNC_LINK_TRY([gss_init_sec_context])
+  ],[
+    AC_MSG_RESULT([yes])
+  ],[
+    AC_MSG_RESULT([no])
+    AC_MSG_ERROR([--with-gssapi was specified, but a GSS-API library was not found.])
+  ])
+fi
+
 build_libstubgss=no
 if test x"$want_gss" = "xyes"; then
   build_libstubgss=yes
@@ -1879,7 +1946,6 @@ CURL_WITH_OPENSSL
 CURL_WITH_GNUTLS
 CURL_WITH_MBEDTLS
 CURL_WITH_WOLFSSL
-CURL_WITH_MESALINK
 CURL_WITH_BEARSSL
 CURL_WITH_RUSTLS
 CURL_WITH_NSS
@@ -1889,11 +1955,17 @@ if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then
   LIBS="-ladvapi32 -lcrypt32 $LIBS"
 fi
 
-case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$BEARSSL_ENABLED$AMISSL_ENABLED$RUSTLS_ENABLED"
+dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer)
+if test "x$curl_cv_native_windows" = "xyes" &&
+   test "x$curl_mingw_original" = "xno"; then
+  LIBS="-lbcrypt $LIBS"
+fi
+
+case "x$SSL_DISABLED$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED"
 in
 x)
-  AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
-  AC_MSG_WARN([Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink, --with-amissl, --with-bearssl or --with-rustls to address this.])
+  AC_MSG_ERROR([TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more.
+Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this.])
   ;;
 x1)
   # one SSL backend is enabled
@@ -1901,6 +1973,14 @@ x1)
   SSL_ENABLED="1"
   AC_MSG_NOTICE([built with one SSL backend])
   ;;
+xD)
+  # explicitly built without TLS
+  ;;
+xD*)
+  AC_MSG_ERROR([--without-ssl has been set together with an explicit option to use an ssl library
+(e.g. --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl, --with-rustls).
+Since these are conflicting parameters, verify which is the desired one and drop the other.])
+  ;;
 *)
   # more than one SSL backend is enabled
   AC_SUBST(SSL_ENABLED)
@@ -2051,7 +2131,7 @@ if test X"$OPT_LIBSSH2" != Xno; then
   dnl check for function added in libssh2 version 1.0
   AC_CHECK_LIB(ssh2, libssh2_session_block_directions)
 
-  AC_CHECK_HEADERS(libssh2.h,
+  AC_CHECK_HEADER(libssh2.h,
     curl_ssh_msg="enabled (libSSH2)"
     LIBSSH2_ENABLED=1
     AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
@@ -2124,7 +2204,7 @@ elif test X"$OPT_LIBSSH" != Xno; then
 
   AC_CHECK_LIB(ssh, ssh_new)
 
-  AC_CHECK_HEADERS(libssh/libssh.h,
+  AC_CHECK_HEADER(libssh/libssh.h,
     curl_ssh_msg="enabled (libSSH)"
     LIBSSH_ENABLED=1
     AC_DEFINE(USE_LIBSSH, 1, [if libSSH is in use])
@@ -2309,6 +2389,10 @@ AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
   [test "x$versioned_symbols" = 'xyes'])
 
+dnl Update .plist file with current version
+AC_SUBST([CURL_PLIST_VERSION],
+  ["$CURLVERSION"])
+
 dnl -------------------------------------------------
 dnl check winidn option before other IDN libraries
 dnl -------------------------------------------------
@@ -2417,31 +2501,36 @@ AC_ARG_WITH(libidn2,
 AS_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage])
 AS_HELP_STRING([--without-libidn2],[Disable libidn2 usage]),
   [OPT_IDN=$withval])
-case "$OPT_IDN" in
-  no)
-    dnl --without-libidn2 option used
-    want_idn="no"
-    AC_MSG_RESULT([no])
-    ;;
-  default)
-    dnl configure option not specified
-    want_idn="yes"
-    want_idn_path="default"
-    AC_MSG_RESULT([(assumed) yes])
-    ;;
-  yes)
-    dnl --with-libidn2 option used without path
-    want_idn="yes"
-    want_idn_path="default"
-    AC_MSG_RESULT([yes])
-    ;;
-  *)
-    dnl --with-libidn2 option used with path
-    want_idn="yes"
-    want_idn_path="$withval"
-    AC_MSG_RESULT([yes ($withval)])
-    ;;
-esac
+if test "x$tst_links_winidn" = "xyes"; then
+  want_idn="no"
+  AC_MSG_RESULT([no (using winidn instead)])
+else
+  case "$OPT_IDN" in
+    no)
+      dnl --without-libidn2 option used
+      want_idn="no"
+      AC_MSG_RESULT([no])
+      ;;
+    default)
+      dnl configure option not specified
+      want_idn="yes"
+      want_idn_path="default"
+      AC_MSG_RESULT([(assumed) yes])
+      ;;
+    yes)
+      dnl --with-libidn2 option used without path
+      want_idn="yes"
+      want_idn_path="default"
+      AC_MSG_RESULT([yes])
+      ;;
+    *)
+      dnl --with-libidn2 option used with path
+      want_idn="yes"
+      want_idn_path="$withval"
+      AC_MSG_RESULT([yes ($withval)])
+      ;;
+  esac
+fi
 
 if test "$want_idn" = "yes"; then
   dnl idn library support has been requested
@@ -2555,11 +2644,13 @@ case "$OPT_H2" in
     dnl --with-nghttp2 option used without path
     want_nghttp2="default"
     want_nghttp2_path=""
+    want_nghttp2_pkg_config_path=""
     ;;
   *)
     dnl --with-nghttp2 option used with path
     want_nghttp2="yes"
-    want_nghttp2_path="$withval/lib/pkgconfig"
+    want_nghttp2_path="$withval"
+    want_nghttp2_pkg_config_path="$withval/lib/pkgconfig"
     ;;
 esac
 
@@ -2569,58 +2660,64 @@ if test X"$want_nghttp2" != Xno; then
   CLEANCPPFLAGS="$CPPFLAGS"
   CLEANLIBS="$LIBS"
 
-  CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_path)
+  CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_pkg_config_path)
 
   if test "$PKGCONFIG" != "no" ; then
-    LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_path])
+    LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path])
       $PKGCONFIG --libs-only-l libnghttp2`
     AC_MSG_NOTICE([-l is $LIB_H2])
 
-    CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_path]) dnl
+    CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) dnl
       $PKGCONFIG --cflags-only-I libnghttp2`
     AC_MSG_NOTICE([-I is $CPP_H2])
 
-    LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_path])
+    LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path])
       $PKGCONFIG --libs-only-L libnghttp2`
     AC_MSG_NOTICE([-L is $LD_H2])
 
-    LDFLAGS="$LDFLAGS $LD_H2"
-    CPPFLAGS="$CPPFLAGS $CPP_H2"
-    LIBS="$LIB_H2 $LIBS"
+    DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'`
+  elif test x"$want_nghttp2_path" != x; then
+    LIB_H2="-lnghttp2"
+    LD_H2=-L${want_nghttp2_path}/lib$libsuff
+    CPP_H2=-I${want_nghttp2_path}/include
+    DIR_H2=${want_nghttp2_path}/lib$libsuff
+  elif test X"$want_nghttp2" != Xdefault; then
+    dnl no nghttp2 pkg-config found and no custom directory specified,
+    dnl deal with it
+    AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
+  fi
 
-    # use nghttp2_session_set_local_window_size to require nghttp2
-    # >= 1.12.0
-    AC_CHECK_LIB(nghttp2, nghttp2_session_set_local_window_size,
-      [
-       AC_CHECK_HEADERS(nghttp2/nghttp2.h,
-          curl_h2_msg="enabled (nghttp2)"
-          NGHTTP2_ENABLED=1
-          AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
-          AC_SUBST(USE_NGHTTP2, [1])
-       )
-      ],
-        dnl not found, revert back to clean variables
-        LDFLAGS=$CLEANLDFLAGS
-        CPPFLAGS=$CLEANCPPFLAGS
-        LIBS=$CLEANLIBS
-    )
+  LDFLAGS="$LDFLAGS $LD_H2"
+  CPPFLAGS="$CPPFLAGS $CPP_H2"
+  LIBS="$LIB_H2 $LIBS"
 
-  else
-    dnl no nghttp2 pkg-config found, deal with it
-    if test X"$want_nghttp2" != Xdefault; then
-      dnl To avoid link errors, we do not allow --with-nghttp2 without
-      dnl a pkgconfig file
-      AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
-    fi
-  fi
+  # use nghttp2_session_set_local_window_size to require nghttp2
+  # >= 1.12.0
+  AC_CHECK_LIB(nghttp2, nghttp2_session_set_local_window_size,
+    [
+     AC_CHECK_HEADERS(nghttp2/nghttp2.h,
+        curl_h2_msg="enabled (nghttp2)"
+        NGHTTP2_ENABLED=1
+        AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
+        AC_SUBST(USE_NGHTTP2, [1])
+     )
 
+     CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2"
+     export CURL_LIBRARY_PATH
+     AC_MSG_NOTICE([Added $DIR_H2 to CURL_LIBRARY_PATH])
+    ],
+      dnl not found, revert back to clean variables
+      LDFLAGS=$CLEANLDFLAGS
+      CPPFLAGS=$CLEANCPPFLAGS
+      LIBS=$CLEANLIBS
+  )
 fi
 
 dnl **********************************************************************
 dnl Check for ngtcp2 (QUIC)
 dnl **********************************************************************
 
-OPT_TCP2="yes"
+OPT_TCP2="no"
 
 if test "x$disable_http" = "xyes"; then
   # without HTTP, ngtcp2 is no use
@@ -2733,7 +2830,7 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$OPENSSL_ENABLED" = "x1"; then
     if test "x$cross_compiling" != "xyes"; then
       DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'`
     fi
-    AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_ctx_initial,
+    AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_recv_client_initial_cb,
       [
        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
           NGTCP2_ENABLED=1
@@ -2788,7 +2885,7 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then
     if test "x$cross_compiling" != "xyes"; then
       DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'`
     fi
-    AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_ctx_initial,
+    AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_recv_client_initial_cb,
       [
        AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
           NGTCP2_ENABLED=1
@@ -2815,6 +2912,61 @@ if test "x$NGTCP2_ENABLED" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then
   fi
 fi
 
+if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then
+  dnl backup the pre-ngtcp2_crypto_wolfssl variables
+  CLEANLDFLAGS="$LDFLAGS"
+  CLEANCPPFLAGS="$CPPFLAGS"
+  CLEANLIBS="$LIBS"
+
+  CURL_CHECK_PKGCONFIG(libngtcp2_crypto_wolfssl, $want_tcp2_path)
+
+  if test "$PKGCONFIG" != "no" ; then
+    LIB_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+      $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl`
+    AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_WOLFSSL])
+
+    CPP_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl
+      $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl`
+    AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_WOLFSSL])
+
+    LD_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path])
+      $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl`
+    AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_WOLFSSL])
+
+    LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL"
+    CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL"
+    LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS"
+
+    if test "x$cross_compiling" != "xyes"; then
+      DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'`
+    fi
+    AC_CHECK_LIB(ngtcp2_crypto_wolfssl, ngtcp2_crypto_recv_client_initial_cb,
+      [
+       AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h,
+          NGTCP2_ENABLED=1
+          AC_DEFINE(USE_NGTCP2_CRYPTO_WOLFSSL, 1, [if ngtcp2_crypto_wolfssl is in use])
+          AC_SUBST(USE_NGTCP2_CRYPTO_WOLFSSL, [1])
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL"
+          export CURL_LIBRARY_PATH
+          AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH])
+       )
+      ],
+        dnl not found, revert back to clean variables
+        LDFLAGS=$CLEANLDFLAGS
+        CPPFLAGS=$CLEANCPPFLAGS
+        LIBS=$CLEANLIBS
+    )
+
+  else
+    dnl no ngtcp2_crypto_wolfssl 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_wolfssl pkg-config file.])
+    fi
+  fi
+fi
+
 dnl **********************************************************************
 dnl Check for nghttp3 (HTTP/3 with ngtcp2)
 dnl **********************************************************************
@@ -3004,6 +3156,78 @@ AC_INCLUDES_DEFAULT
   fi
 fi
 
+dnl **********************************************************************
+dnl Check for msh3 (QUIC)
+dnl **********************************************************************
+
+OPT_MSH3="no"
+
+if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then
+  # without HTTP or with ngtcp2, msh3 is no use
+  OPT_MSH3="no"
+fi
+
+AC_ARG_WITH(msh3,
+AS_HELP_STRING([--with-msh3=PATH],[Enable msh3 usage])
+AS_HELP_STRING([--without-msh3],[Disable msh3 usage]),
+  [OPT_MSH3=$withval])
+case "$OPT_MSH3" in
+  no)
+    dnl --without-msh3 option used
+    want_msh3="no"
+    ;;
+  yes)
+    dnl --with-msh3 option used without path
+    want_msh3="default"
+    want_msh3_path=""
+    ;;
+  *)
+    dnl --with-msh3 option used with path
+    want_msh3="yes"
+    want_msh3_path="$withval"
+    ;;
+esac
+
+if test X"$want_msh3" != Xno; then
+
+  if test "$NGHTTP3_ENABLED" = 1; then
+    AC_MSG_ERROR([--with-msh3 and --with-ngtcp2 are mutually exclusive])
+  fi
+
+  dnl backup the pre-msh3 variables
+  CLEANLDFLAGS="$LDFLAGS"
+  CLEANCPPFLAGS="$CPPFLAGS"
+  CLEANLIBS="$LIBS"
+
+  if test -n "$want_msh3_path"; then
+    LD_MSH3="-L$want_msh3_path/lib"
+    CPP_MSH3="-I$want_msh3_path/include"
+    DIR_MSH3="$want_msh3_path/lib"
+    LDFLAGS="$LDFLAGS $LD_MSH3"
+    CPPFLAGS="$CPPFLAGS $CPP_MSH3"
+  fi
+  LIBS="-lmsh3 $LIBS"
+
+  AC_CHECK_LIB(msh3, MsH3ApiOpen,
+    [
+    AC_CHECK_HEADERS(msh3.h,
+        curl_h3_msg="enabled (msh3)"
+        MSH3_ENABLED=1
+        AC_DEFINE(USE_MSH3, 1, [if msh3 is in use])
+        AC_SUBST(USE_MSH3, [1])
+        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3"
+        export CURL_LIBRARY_PATH
+        AC_MSG_NOTICE([Added $DIR_MSH3 to CURL_LIBRARY_PATH]),
+        experimental="$experimental HTTP3"
+     )
+    ],
+      dnl not found, revert back to clean variables
+      LDFLAGS=$CLEANLDFLAGS
+      CPPFLAGS=$CLEANCPPFLAGS
+      LIBS=$CLEANLIBS
+  )
+fi
+
 dnl **********************************************************************
 dnl Check for zsh completion path
 dnl **********************************************************************
@@ -3059,9 +3283,6 @@ case "$OPT_FISH_FPATH" in
     ;;
 esac
 
-CURL_CHECK_HEADER_MALLOC
-CURL_CHECK_HEADER_MEMORY
-
 dnl Now check for the very most basic headers. Then we can use these
 dnl ones as default-headers when checking for the rest!
 AC_CHECK_HEADERS(
@@ -3081,6 +3302,7 @@ AC_CHECK_HEADERS(
         sys/un.h \
         linux/tcp.h \
         netinet/tcp.h \
+        netinet/udp.h \
         netdb.h \
         sys/sockio.h \
         sys/stat.h \
@@ -3088,7 +3310,6 @@ AC_CHECK_HEADERS(
         termios.h \
         termio.h \
         fcntl.h \
-        alloca.h \
         io.h \
         pwd.h \
         utime.h \
@@ -3146,16 +3367,15 @@ AC_TYPE_SIZE_T
 CURL_CHECK_STRUCT_TIMEVAL
 CURL_VERIFY_RUNTIMELIBS
 
-AX_COMPILE_CHECK_SIZEOF(size_t)
-AX_COMPILE_CHECK_SIZEOF(long)
-AX_COMPILE_CHECK_SIZEOF(int)
-AX_COMPILE_CHECK_SIZEOF(short)
-AX_COMPILE_CHECK_SIZEOF(time_t)
-AX_COMPILE_CHECK_SIZEOF(off_t)
+CURL_SIZEOF(size_t)
+CURL_SIZEOF(long)
+CURL_SIZEOF(int)
+CURL_SIZEOF(time_t)
+CURL_SIZEOF(off_t)
 
 o=$CPPFLAGS
 CPPFLAGS="-I$srcdir/include $CPPFLAGS"
-AX_COMPILE_CHECK_SIZEOF(curl_off_t, [
+CURL_SIZEOF(curl_off_t, [
 #include <curl/system.h>
 ])
 CPPFLAGS=$o
@@ -3166,21 +3386,18 @@ AC_CHECK_TYPE(long long,
    longlong="yes"
 )
 
-if test "xyes" = "x$longlong"; then
-  AC_MSG_CHECKING([if numberLL works])
-  AC_COMPILE_IFELSE([
-    AC_LANG_PROGRAM([[
-    ]],[[
-      long long val = 1000LL;
-    ]])
-  ],[
-    AC_MSG_RESULT([yes])
-    AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
-  ],[
-    AC_MSG_RESULT([no])
-  ])
-fi
 
+if test ${ac_cv_sizeof_curl_off_t} -lt 8; then
+  AC_ARG_WITH(n64-deprecated,dnl
+AS_HELP_STRING([--with-n64-deprecated],[confirm you realize support for systems without 64 bit data types is going away]),
+  if test X"$withval" != Xno; then
+    OPT_N64_AWARE=$withval
+  fi
+)
+  if test -z "$OPT_N64_AWARE"; then
+    AC_MSG_ERROR([support for systems without 64 bit curl_off_t is deprecated, use --with-n64-deprecated until then])
+  fi
+fi
 
 # check for ssize_t
 AC_CHECK_TYPE(ssize_t, ,
@@ -3281,13 +3498,10 @@ CURL_CHECK_FUNC_GETIFADDRS
 CURL_CHECK_FUNC_GMTIME_R
 CURL_CHECK_FUNC_INET_NTOP
 CURL_CHECK_FUNC_INET_PTON
-CURL_CHECK_FUNC_IOCTL
 CURL_CHECK_FUNC_IOCTLSOCKET
 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
-CURL_CHECK_FUNC_LOCALTIME_R
 CURL_CHECK_FUNC_MEMRCHR
 CURL_CHECK_FUNC_POLL
-CURL_CHECK_FUNC_SETSOCKOPT
 CURL_CHECK_FUNC_SIGACTION
 CURL_CHECK_FUNC_SIGINTERRUPT
 CURL_CHECK_FUNC_SIGNAL
@@ -3299,12 +3513,8 @@ CURL_CHECK_FUNC_STRCMPI
 CURL_CHECK_FUNC_STRDUP
 CURL_CHECK_FUNC_STRERROR_R
 CURL_CHECK_FUNC_STRICMP
-CURL_CHECK_FUNC_STRNCMPI
-CURL_CHECK_FUNC_STRNICMP
-CURL_CHECK_FUNC_STRSTR
 CURL_CHECK_FUNC_STRTOK_R
 CURL_CHECK_FUNC_STRTOLL
-CURL_CHECK_FUNC_WRITEV
 
 case $host in
   *msdosdjgpp)
@@ -3320,6 +3530,7 @@ AC_CHECK_DECLS([getpwuid_r], [], [AC_DEFINE(HAVE_DECL_GETPWUID_R_MISSING, 1, "Se
 
 
 AC_CHECK_FUNCS([fnmatch \
+  fchmod \
   geteuid \
   getpass_r \
   getppid \
@@ -3330,10 +3541,12 @@ AC_CHECK_FUNCS([fnmatch \
   if_nametoindex \
   mach_absolute_time \
   pipe \
+  sched_yield \
+  sendmsg \
   setlocale \
   setmode \
   setrlimit \
-  usleep \
+  snprintf \
   utime \
   utimes
 ],[
@@ -3415,7 +3628,6 @@ dnl set variable for use in automakefile(s)
 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
 
 CURL_CHECK_LIB_ARES
-AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
 
 if test "x$curl_cv_native_windows" != "xyes" &&
    test "x$enable_shared" = "xyes"; then
@@ -3499,9 +3711,27 @@ if test "$want_pthreads" != "no"; then
       dnl if it wasn't found without lib, search for it in pthread lib
       if test "$USE_THREADS_POSIX" != "1"
       then
-        CFLAGS="$CFLAGS -pthread"
         # assign PTHREAD for pkg-config use
         PTHREAD=" -pthread"
+
+        case $host in
+        *-ibm-aix*)
+           dnl Check if compiler is xlC
+           COMPILER_VERSION=`"$CC" -qversion 2>/dev/null`
+           if test x"$COMPILER_VERSION" = "x"; then
+             CFLAGS="$CFLAGS -pthread"
+           else
+             CFLAGS="$CFLAGS -qthreaded"
+           fi
+           ;;
+        powerpc-*amigaos*)
+           dnl No -pthread option, but link with -lpthread
+           PTHREAD=" -lpthread"
+           ;;
+        *)
+           CFLAGS="$CFLAGS -pthread"
+           ;;
+        esac
         AC_CHECK_LIB(pthread, pthread_create,
                      [USE_THREADS_POSIX=1],
                      [ CFLAGS="$save_CFLAGS"])
@@ -3675,17 +3905,23 @@ AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
        ]
 )
 if test "x$want_unix_sockets" != "xno"; then
-  AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
+  if test "x$curl_cv_native_windows" = "xyes"; then
+    USE_UNIX_SOCKETS=1
     AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
-    AC_SUBST(USE_UNIX_SOCKETS, [1])
     curl_unix_sockets_msg="enabled"
-  ], [
-    if test "x$want_unix_sockets" = "xyes"; then
-      AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!])
-    fi
-  ], [
-    #include <sys/un.h>
-  ])
+  else
+    AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
+      AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
+      AC_SUBST(USE_UNIX_SOCKETS, [1])
+      curl_unix_sockets_msg="enabled"
+    ], [
+      if test "x$want_unix_sockets" = "xyes"; then
+        AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!])
+      fi
+    ], [
+      #include <sys/un.h>
+    ])
+  fi
 fi
 
 dnl ************************************************************
@@ -3885,7 +4121,26 @@ AS_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]),
   *) AC_MSG_RESULT(yes)
        ;;
   esac ],
-       AC_MSG_RESULT(no)
+       AC_MSG_RESULT(yes)
+)
+
+dnl ************************************************************
+dnl switch on/off headers-api
+dnl
+AC_MSG_CHECKING([whether to support headers-api])
+AC_ARG_ENABLE(headers-api,
+AS_HELP_STRING([--enable-headers-api],[Enable headers-api support])
+AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]),
+[ case "$enableval" in
+  no) AC_MSG_RESULT(no)
+       curl_headers_msg="no      (--enable-headers-api)"
+       AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api])
+       ;;
+  *)
+       AC_MSG_RESULT(yes)
+       ;;
+  esac ],
+       AC_MSG_RESULT(yes)
 )
 
 dnl only check for HSTS if there's SSL present
@@ -3948,6 +4203,38 @@ if test "x$want_ech" != "xno"; then
   fi
 fi
 
+dnl *************************************************************
+dnl WebSockets
+dnl
+AC_MSG_CHECKING([whether to support WebSockets])
+AC_ARG_ENABLE(websockets,
+AS_HELP_STRING([--enable-websockets],[Enable WebSockets support])
+AS_HELP_STRING([--disable-websockets],[Disable WebSockets support]),
+[ case "$enableval" in
+  no)
+     AC_MSG_RESULT(no)
+     ;;
+  *)
+     if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
+         AC_MSG_RESULT(yes)
+         curl_ws_msg="enabled"
+         AC_DEFINE_UNQUOTED(USE_WEBSOCKETS, [1], [enable websockets support])
+         SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WS"
+         if test "x$SSL_ENABLED" = "x1"; then
+           SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS WSS"
+         fi
+         experimental="$experimental Websockets"
+     else
+         dnl websockets requires >32 bit curl_off_t
+         AC_MSG_RESULT(no)
+         AC_MSG_WARN([Websockets disabled due to lack of >32 bit curl_off_t])
+     fi
+     ;;
+  esac ],
+     AC_MSG_RESULT(no)
+)
+
+
 dnl ************************************************************
 dnl hiding of library internal symbols
 dnl
@@ -4083,7 +4370,8 @@ if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
 fi
 
-if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then
+if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1" \
+    -o "x$USE_MSH3" = "x1"; then
   SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3"
 fi
 
@@ -4110,6 +4398,23 @@ if test ${ac_cv_sizeof_curl_off_t} -gt 4; then
   fi
 fi
 
+if test "$tst_atomic" = "yes"; then
+  SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+else
+  AC_COMPILE_IFELSE([
+    AC_LANG_PROGRAM([[
+      #include <windows.h>
+    ]],[[
+      #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600)
+      #error
+      #endif
+    ]])
+  ],[
+     SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe"
+  ],[
+  ])
+fi
+
 dnl replace spaces with newlines
 dnl sort the lines
 dnl replace the newlines back to spaces
@@ -4246,6 +4551,7 @@ AC_CONFIG_FILES([Makefile \
            lib/Makefile \
            scripts/Makefile \
            lib/libcurl.vers \
+           lib/libcurl.plist \
            tests/Makefile \
            tests/certs/Makefile \
            tests/certs/scripts/Makefile \
@@ -4302,11 +4608,13 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
   RTMP:             ${curl_rtmp_msg}
   PSL:              ${curl_psl_msg}
   Alt-svc:          ${curl_altsvc_msg}
+  Headers API:      ${curl_headers_msg}
   HSTS:             ${curl_hsts_msg}
   HTTP1:            ${curl_h1_msg}
   HTTP2:            ${curl_h2_msg}
   HTTP3:            ${curl_h3_msg}
   ECH:              ${curl_ech_msg}
+  WebSockets:       ${curl_ws_msg}
   Protocols:        ${SUPPORT_PROTOCOLS}
   Features:         ${SUPPORT_FEATURES}
 ])
index 8b4a29a9a395c66643c8abeeb28fbb913c19855f..f3e51617f550c288445589240014b5b20a865131 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2001 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2001 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
-prefix=@prefix@
+prefix="@prefix@"
 exec_prefix=@exec_prefix@
 includedir=@includedir@
 cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@
@@ -172,7 +174,7 @@ while test $# -gt 0; do
 
     --static-libs)
         if test "X@ENABLE_STATIC@" != "Xno" ; then
-          echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@
+          echo "@libdir@/libcurl.@libext@" @LDFLAGS@ @LIBCURL_LIBS@
         else
           echo "curl was built with static libraries disabled" >&2
           exit 1
index 25437d6f9aa0c8674c99d3d11ef759d7e7a0ba3c..560b43748ac066b210065be93147bfb2cc2db73a 100644 (file)
@@ -10,11 +10,11 @@ curl features support for the Alt-Svc: HTTP header.
 
 ## Standard
 
-[RFC 7838](https://tools.ietf.org/html/rfc7838)
+[RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838)
 
 # Alt-Svc cache file format
 
-This a text based file with one line per entry and each line consists of nine
+This is a text based file with one line per entry and each line consists of nine
 space separated fields.
 
 ## Example
index 01e4de8a17d791039848994a3b17a55eee07b461..c397c53c2beb1a331b34621180488808dba5d6dd 100644 (file)
@@ -20,7 +20,7 @@ C++: [curlpp](https://github.com/jpbarrette/curlpp/) Written by Jean-Philippe Ba
 [curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++
 Requests](https://github.com/libcpr/cpr) by Huu Nguyen
 
-[Ch](https://chcurl.sourceforge.io/) Written by Stephen Nestinger and Jonathan Rogado
+[Ch](https://chcurl.sourceforge.net/) Written by Stephen Nestinger and Jonathan Rogado
 
 Cocoa: [BBHTTP](https://github.com/biasedbit/BBHTTP) written by Bruno de Carvalho
 [curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood
@@ -31,7 +31,7 @@ Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo
 
 [Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev
 
-[Dylan](https://dylanlibs.sourceforge.io/) Written by Chris Double
+[Dylan](https://dylanlibs.sourceforge.net/) Written by Chris Double
 
 [Eiffel](https://iron.eiffel.com/repository/20.11/package/ABEF6975-37AC-45FD-9C67-52D10BA0669B) Written by Eiffel Software
 
@@ -41,7 +41,7 @@ Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo
 
 [Ferite](https://web.archive.org/web/20150102192018/ferite.org/) Written by Paul Querna
 
-[Gambas](https://gambas.sourceforge.io/)
+[Gambas](https://gambas.sourceforge.net/)
 
 [glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer
 
@@ -53,6 +53,8 @@ Go: [go-curl](https://github.com/andelf/go-curl) by ShuYu Wang
 
 [Haskell](https://hackage.haskell.org/package/curl) Written by Galois, Inc
 
+[Hollywood](https://www.hollywood-mal.com/download.html) hURL by Andreas Falkenhahn
+
 [Java](https://github.com/pjlegato/curl-java)
 
 [Julia](https://github.com/JuliaWeb/LibCURL.jl) Written by Amit Murthy
@@ -92,11 +94,11 @@ Bailiff and Bálint Szilakszi,
 
 [Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
 
-[Q](https://q-lang.sourceforge.io/) The libcurl module is part of the default install
+[Q](https://q-lang.sourceforge.net/) The libcurl module is part of the default install
 
 [R](https://cran.r-project.org/package=curl)
 
-[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling
+[Rexx](https://rexxcurl.sourceforge.net/) Written Mark Hessling
 
 [Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
 
@@ -117,7 +119,7 @@ Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford,
 
 [SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov
 
-[SPL](https://web.archive.org/web/20210203022158/http://www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf
+[SPL](https://web.archive.org/web/20210203022158/www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf
 
 [Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García
 
@@ -125,7 +127,7 @@ Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford,
 
 [Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti
 
-[wxWidgets](https://wxcode.sourceforge.io/components/wxcurl/) Written by Casey O'Donnell
+[wxWidgets](https://wxcode.sourceforge.net/components/wxcurl/) Written by Casey O'Donnell
 
 [XBLite](https://web.archive.org/web/20060426150418/perso.wanadoo.fr/xblite/libraries.html) Written by David Szafranski
 
index 2697919a178de1323ffe4decb5aea70b3211b084..14f41b38bd9e9c364593eec3edb4056e4425ae3a 100644 (file)
@@ -6,19 +6,19 @@ when the reference is invalidated. Once referenced, a buffer cannot be
 reallocated.
 
 A data length is stored within the reference for binary data handling
-purpose; it is not used by the bufref API.
+purposes; it is not used by the bufref API.
 
 The `struct bufref` is used to hold data referencing a buffer. The members of
 that structure **MUST NOT** be accessed or modified without using the dedicated
 bufref API.
 
-## init
+## `init`
 
 ```c
 void Curl_bufref_init(struct bufref *br);
 ```
 
-Initialises a `bufref` structure. This function **MUST** be called before any
+Initializes a `bufref` structure. This function **MUST** be called before any
 other operation is performed on the structure.
 
 Upon completion, the referenced buffer is `NULL` and length is zero.
@@ -26,16 +26,16 @@ Upon completion, the referenced buffer is `NULL` and length is zero.
 This function may also be called to bypass referenced buffer destruction while
 invalidating the current reference.
 
-## free
+## `free`
 
 ```c
 void Curl_bufref_free(struct bufref *br);
 ```
 
 Destroys the previously referenced buffer using its destructor and
-reinitialises the structure for a possible subsequent reuse.
+reinitializes the structure for a possible subsequent reuse.
 
-## set
+## `set`
 
 ```c
 void Curl_bufref_set(struct bufref *br, const void *buffer, size_t length,
@@ -43,13 +43,13 @@ void Curl_bufref_set(struct bufref *br, const void *buffer, size_t length,
 ```
 
 Releases the previously referenced buffer, then assigns the new `buffer` to
-the structure, associated with its `destructor` function. The later can be
+the structure, associated with its `destructor` function. The latter can be
 specified as `NULL`: this will be the case when the referenced buffer is
 static.
 
-if `buffer` is NULL, `length`must be zero.
+if `buffer` is NULL, `length` must be zero.
 
-## memdup
+## `memdup`
 
 ```c
 CURLcode Curl_bufref_memdup(struct bufref *br, const void *data, size_t length);
@@ -59,12 +59,12 @@ Releases the previously referenced buffer, then duplicates the `length`-byte
 `data` into a buffer allocated via `malloc()` and references the latter
 associated with destructor `curl_free()`.
 
-An additional trailing byte is allocated and set to zero as a possible
-string zero-terminator; it is not counted in the stored length.
+An additional trailing byte is allocated and set to zero as a possible string
+null-terminator; it is not counted in the stored length.
 
 Returns `CURLE_OK` if successful, else `CURLE_OUT_OF_MEMORY`.
 
-## ptr
+## `ptr`
 
 ```c
 const unsigned char *Curl_bufref_ptr(const struct bufref *br);
@@ -72,7 +72,7 @@ const unsigned char *Curl_bufref_ptr(const struct bufref *br);
 
 Returns a `const unsigned char *` to the referenced buffer.
 
-## len
+## `len`
 
 ```c
 size_t Curl_bufref_len(const struct bufref *br);
index 25159fb3dfc6486929bdc3d42029b5fb663a4342..aa8ee8957273c38358e54fe000e6756f9e7164e0 100644 (file)
@@ -4,80 +4,75 @@ The curl project runs a bug bounty program in association with
 [HackerOne](https://www.hackerone.com) and the [Internet Bug
 Bounty](https://internetbugbounty.org).
 
-# How does it work?
+## How does it work?
 
 Start out by posting your suspected security vulnerability directly to [curl's
 HackerOne program](https://hackerone.com/curl).
 
 After you have reported a security issue, it has been deemed credible, and a
 patch and advisory has been made public, you may be eligible for a bounty from
-this program.
+this program. See the [SECURITY-PROCESS](SECURITY-PROCESS.md) document for how
+we work with security issues.
 
-See all details at [https://hackerone.com/curl](https://hackerone.com/curl)
-
-This bounty is relying on funds from sponsors. If you use curl professionally,
-consider help funding this! See
-[https://opencollective.com/curl](https://opencollective.com/curl) for
-details.
-
-# What are the reward amounts?
+## What are the reward amounts?
 
 The curl project offers monetary compensation for reported and published
 security vulnerabilities. The amount of money that is rewarded depends on how
 serious the flaw is determined to be.
 
-We offer reward money *up to* a certain amount per severity. The curl security
-team determines the severity of each reported flaw on a case by case basis and
-the exact amount rewarded to the reporter is then decided.
+Since 2021, the Bug Bounty is managed in association with the Internet Bug
+Bounty and they will set the reward amounts. If it would turn out that they
+set amounts that are way lower than we can accept, the curl project intends to
+"top up" rewards.
 
-Check out the current award amounts at [https://hackerone.com/curl](https://hackerone.com/curl)
+In 2022, typical "Medium" rated vulnerabilities have been rewarded 2,400 USD
+each.
 
-# Who is eligible for a reward?
+## Who is eligible for a reward?
 
 Everyone and anyone who reports a security problem in a released curl version
 that has not already been reported can ask for a bounty.
 
+Dedicated - paid for - security audits that are performed in collaboration
+with curl developers are not eligible for bounties.
+
 Vulnerabilities in features that are off by default and documented as
 experimental are not eligible for a reward.
 
 The vulnerability has to be fixed and publicly announced (by the curl project)
 before a bug bounty will be considered.
 
+Once the vulnerability has been published by curl, the researcher can request
+their bounty from the [Internet Bug Bounty](https://hackerone.com/ibb).
+
 Bounties need to be requested within twelve months from the publication of the
 vulnerability.
 
-# Product vulnerabilities only
+## Product vulnerabilities only
 
 This bug bounty only concerns the curl and libcurl products and thus their
 respective source codes - when running on existing hardware. It does not
-include documentation, websites, or other infrastructure.
+include curl documentation, curl websites, or other curl related
+infrastructure.
 
 The curl security team is the sole arbiter if a reported flaw is subject to a
 bounty or not.
 
-# How are vulnerabilities graded?
+## How are vulnerabilities graded?
 
 The grading of each reported vulnerability that makes a reward claim will be
 performed by the curl security team. The grading will be based on the CVSS
 (Common Vulnerability Scoring System) 3.0.
 
-# How are reward amounts determined?
-
-The curl security team first gives the vulnerability a score, as mentioned
-above, and based on that level we set an amount depending on the specifics of
-the individual case. Other sponsors of the program might also get involved and
-can raise the amounts depending on the particular issue.
-
-# What happens if the bounty fund is drained?
+## How are reward amounts determined?
 
-The bounty fund depends on sponsors. If we pay out more bounties than we add,
-the fund will eventually drain. If that end up happening, we will simply not
-be able to pay out as high bounties as we would like and hope that we can
-convince new sponsors to help us top up the fund again.
+The curl security team gives the vulnerability a score or severity level, as
+mentioned above. The actual monetary reward amount is decided and paid by the
+Internet Bug Bounty..
 
-# Regarding taxes, etc. on the bounties
+## Regarding taxes, etc. on the bounties
 
-In the event that the individual receiving a curl bug bounty needs to pay
-taxes on the reward money, the responsibility lies with the receiver. The
-curl project or its security team never actually receive any of this money,
-hold the money, or pay out the money.
+In the event that the individual receiving a bug bounty needs to pay taxes on
+the reward money, the responsibility lies with the receiver. The curl project
+or its security team never actually receive any of this money, hold the money,
+or pay out the money.
index 1be0934275623917d0eeebd4ef6c6221df551ed3..9d18ffe9fa1e4e79f20cf1e93b41e81e2641f104 100644 (file)
@@ -3,7 +3,7 @@
 ## There are still bugs
 
  Curl and libcurl keep being developed. Adding features and changing code
- means that bugs will sneak in, no matter how hard we try not to.
+ means that bugs will sneak in, no matter how hard we try to keep them out.
 
  Of course there are lots of bugs left. And lots of misfeatures.
 
@@ -44,7 +44,7 @@
 ## What to report
 
  When reporting a bug, you should include all information that will help us
- understand what's wrong, what you expected to happen and how to repeat the
+ understand what is wrong, what you expected to happen and how to repeat the
  bad behavior. You therefore need to tell us:
 
  - your operating system's name and version number
@@ -65,7 +65,7 @@
  debug dump with your bug report. The output you get by using the `-v` or
  `--trace` options.
 
- If curl crashed, causing a core dump (in unix), there is hardly any use to
+ If curl crashed, causing a core dump (in Unix), there is hardly any use to
  send that huge file to anyone of us. Unless we have the same system setup as
  you, we cannot do much with it. Instead, we ask you to get a stack trace and
  send that (much smaller) output to us instead.
 
  The list that is presented is the stack trace. If everything worked, it is
  supposed to contain the chain of functions that were called when curl
- crashed. Include the stack trace with your detailed bug report. it will help a
+ crashed. Include the stack trace with your detailed bug report, it will help a
  lot.
 
 ## Bugs in libcurl bindings
  experimental build or similar, to get this confirmed or not.
 
  At times people insist that they cannot upgrade to a modern curl version, but
- instead they "just want the bug fixed". That is fine, just do not count on us
+ instead, they "just want the bug fixed". That is fine, just do not count on us
  spending many cycles on trying to identify which single commit, if that is
  even possible, that at some point in the past fixed the problem you are now
  experiencing.
 ## What happens on first filing
 
  When a new issue is posted in the issue tracker or on the mailing list, the
- team of developers first need to see the report. Maybe they took the day off,
+ team of developers first needs to see the report. Maybe they took the day off,
  maybe they are off in the woods hunting. Have patience. Allow at least a few
  days before expecting someone to have responded.
 
- In the issue tracker you can expect that some labels will be set on the issue
+ In the issue tracker, you can expect that some labels will be set on the issue
  to help categorize it.
 
 ## First response
 
 ## Not reproducible
 
- For problems that we cannot reproduce and cannot understand even after having
- gotten all the info we need and having studied the source code over again,
- are really hard to solve so then we may require further work from you who
- actually see or experience the problem.
+ We may require further work from you who actually see or experience the 
+ problem if we cannot reproduce it and cannot understand it even after having
+ gotten all the info we need and having studied the source code over again.
 
 ## Unresponsive
 
- If the problem have not been understood or reproduced, and there's nobody
+ If the problem have not been understood or reproduced, and there is nobody
  responding to follow-up questions or questions asking for clarifications or
  for discussing possible ways to move forward with the task, we take that as a
  strong suggestion that the bug is unimportant.
  tracker.
 
  The `TODO` document is full of ideas and suggestions of what we can add or
- fix one day. you are always encouraged and free to grab one of those items and
+ fix one day. You are always encouraged and free to grab one of those items and
  take up a discussion with the curl development team on how that could be
  implemented or provided in the project so that you can work on ticking it odd
  that document.
 ## Closing off stalled bugs
 
  The [issue and pull request trackers](https://github.com/curl/curl) only
- holds "active" entries open (using a non-precise definition of what active
+ hold "active" entries open (using a non-precise definition of what active
  actually is, but they are at least not completely dead). Those that are
  abandoned or in other ways dormant will be closed and sometimes added to
  `TODO` and `KNOWN_BUGS` instead.
index a9b69f9bf160f3f0abea4a07295498818a453883..0406a7f6b8d287d7a6dfb7f612d48accaeb1f573 100644 (file)
@@ -9,16 +9,16 @@ check that it adheres to our [Source Code Style guide](CODE_STYLE.md).
 
 ## Command line options
 
-`-W[file]` skip that file and excludes it from being checked. Helpful
+`-W[file]` skip that file and exclude it from being checked. Helpful
 when, for example, one of the files is generated.
 
 `-D[dir]` directory name to prepend to file names when accessing them.
 
 `-h` shows the help output, that also lists all recognized warnings
 
-## What does checksrc warn for?
+## What does `checksrc` warn for?
 
-checksrc does not check and verify the code against the entire style guide.
+`checksrc` does not check and verify the code against the entire style guide.
 The script is an effort to detect the most common mistakes and syntax mistakes
 that contributors make before they get accustomed to our code style. Heck,
 many of us regulars do the mistakes too and this script helps us keep the code
@@ -27,7 +27,7 @@ in shape.
     checksrc.pl -h
 
 Lists how to use the script and it lists all existing warnings it has and
-problems it detects. At the time of this writing, the existing checksrc
+problems it detects. At the time of this writing, the existing `checksrc`
 warnings are:
 
 - `ASSIGNWITHINCONDITION`: Assignment within a conditional expression. The
@@ -41,7 +41,7 @@ warnings are:
    more appropriate `char *name` style. The asterisk should sit right next to
    the name without a space in between.
 
-- `BADCOMMAND`: There's a bad `!checksrc!` instruction in the code. See the
+- `BADCOMMAND`: There's a bad `checksrc` instruction in the code. See the
    **Ignore certain warnings** section below for details.
 
 - `BANNEDFUNC`: A banned function was used. The functions sprintf, vsprintf,
@@ -56,7 +56,7 @@ warnings are:
 
 - `COMMANOSPACE`: a comma without following space
 
-- `COPYRIGHT`: the file is missing a copyright statement!
+- `COPYRIGHT`: the file is missing a copyright statement
 
 - `CPPCOMMENTS`: `//` comment detected, that is not C89 compliant
 
@@ -113,14 +113,14 @@ warnings are:
 
 - `SPACESEMICOLON`: there was a space before semicolon, ` ;`.
 
-- `TABS`: TAB characters are not allowed!
+- `TABS`: TAB characters are not allowed
 
 - `TRAILINGSPACE`: Trailing whitespace on the line
 
 - `TYPEDEFSTRUCT`: we frown upon (most) typedefed structs
 
-- `UNUSEDIGNORE`: a checksrc inlined warning ignore was asked for but not used,
-   that is an ignore that should be removed or changed to get used.
+- `UNUSEDIGNORE`: a `checksrc` inlined warning ignore was asked for but not
+   used, that is an ignore that should be removed or changed to get used.
 
 ### Extended warnings
 
@@ -139,17 +139,16 @@ Currently these are the extended warnings which can be enabled:
 
 ## Ignore certain warnings
 
-Due to the nature of the source code and the flaws of the checksrc tool, there
-is sometimes a need to ignore specific warnings. checksrc allows a few
+Due to the nature of the source code and the flaws of the `checksrc` tool,
+there is sometimes a need to ignore specific warnings. `checksrc` allows a few
 different ways to do this.
 
 ### Inline ignore
 
 You can control what to ignore within a specific source file by providing
-instructions to checksrc in the source code itself. You need a magic marker
-that is `!checksrc!` followed by the instruction. The instruction can ask to
-ignore a specific warning N number of times or you ignore all of them until
-you mark the end of the ignored section.
+instructions to `checksrc` in the source code itself. See examples below. The
+instruction can ask to ignore a specific warning a specific number of times or
+you ignore all of them until you mark the end of the ignored section.
 
 Inline ignores are only done for that single specific source code file.
 
index 64a821fd197342269d4ac434a2a39d9a95a2ef46..e5e5def196a1e0763b8875c30ddf0ff866d416bb 100644 (file)
@@ -6,7 +6,8 @@ and
 [`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
 users can control which ciphers to consider when negotiating TLS connections.
 
-TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+ with options
+TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+, and since
+curl 7.85 for Schannel with options
 [`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
 and
 [`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
@@ -50,7 +51,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
 `ADH-RC4-MD5`
 `ADH-DES-CBC3-SHA`
 
-### AES ciphersuites from RFC3268, extending TLS v1.0
+### AES cipher suites from RFC3268, extending TLS v1.0
 
 `AES128-SHA`
 `AES256-SHA`
@@ -65,7 +66,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
 `ADH-AES128-SHA`
 `ADH-AES256-SHA`
 
-### SEED ciphersuites from RFC4162, extending TLS v1.0
+### SEED cipher suites from RFC4162, extending TLS v1.0
 
 `SEED-SHA`
 `DH-DSS-SEED-SHA`
@@ -74,7 +75,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
 `DHE-RSA-SEED-SHA`
 `ADH-SEED-SHA`
 
-### GOST ciphersuites, extending TLS v1.0
+### GOST cipher suites, extending TLS v1.0
 
 `GOST94-GOST89-GOST89`
 `GOST2001-GOST89-GOST89`
@@ -147,7 +148,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
 `ECDHE-ECDSA-AES128-CCM8`
 `ECDHE-ECDSA-AES256-CCM8`
 
-### Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2
+### Camellia HMAC-Based cipher suites from RFC6367, extending TLS v1.2
 
 `ECDHE-ECDSA-CAMELLIA128-SHA256`
 `ECDHE-ECDSA-CAMELLIA256-SHA384`
@@ -176,7 +177,7 @@ When specifying multiple cipher names, separate them with colon (`:`).
 `des`
 `desede3`
 
-###  SSL3/TLS cipher suites
+### SSL3/TLS cipher suites
 
 `rsa_rc4_128_md5`
 `rsa_rc4_128_sha`
@@ -457,7 +458,7 @@ maps them to the following case-insensitive names.
 ## Schannel
 
 Schannel allows the enabling and disabling of encryption algorithms, but not
-specific ciphersuites. They are
+specific cipher suites. They are
 [defined](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) by
 Microsoft.
 
@@ -516,7 +517,75 @@ and the request will fail.
 `CALG_ECDH_EPHEM`,
 
 As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name
-to [constrain the set of available ciphers as specified in the schannel
+to [constrain the set of available ciphers as specified in the Schannel
 documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022).
-Note that the supported ciphers in this case follows the OS version, so if you
+Note that the supported ciphers in this case follow the OS version, so if you
 are running an outdated OS you might still be supporting weak ciphers.
+
+### TLS 1.3 cipher suites
+
+(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)
+
+`TLS_AES_256_GCM_SHA384`
+`TLS_AES_128_GCM_SHA256`
+`TLS_CHACHA20_POLY1305_SHA256`
+`TLS_AES_128_CCM_8_SHA256`
+`TLS_AES_128_CCM_SHA256`
+
+## BearSSL
+
+BearSSL ciphers can be specified by either the OpenSSL name (`ECDHE-RSA-AES128-GCM-SHA256`) or the IANA name (`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`).
+
+Since BearSSL 0.1:
+
+`DES-CBC3-SHA`
+`AES128-SHA`
+`AES256-SHA`
+`AES128-SHA256`
+`AES256-SHA256`
+`AES128-GCM-SHA256`
+`AES256-GCM-SHA384`
+`ECDH-ECDSA-DES-CBC3-SHA`
+`ECDH-ECDSA-AES128-SHA`
+`ECDH-ECDSA-AES256-SHA`
+`ECDHE-ECDSA-DES-CBC3-SHA`
+`ECDHE-ECDSA-AES128-SHA`
+`ECDHE-ECDSA-AES256-SHA`
+`ECDH-RSA-DES-CBC3-SHA`
+`ECDH-RSA-AES128-SHA`
+`ECDH-RSA-AES256-SHA`
+`ECDHE-RSA-DES-CBC3-SHA`
+`ECDHE-RSA-AES128-SHA`
+`ECDHE-RSA-AES256-SHA`
+`ECDHE-ECDSA-AES128-SHA256`
+`ECDHE-ECDSA-AES256-SHA384`
+`ECDH-ECDSA-AES128-SHA256`
+`ECDH-ECDSA-AES256-SHA384`
+`ECDHE-RSA-AES128-SHA256`
+`ECDHE-RSA-AES256-SHA384`
+`ECDH-RSA-AES128-SHA256`
+`ECDH-RSA-AES256-SHA384`
+`ECDHE-ECDSA-AES128-GCM-SHA256`
+`ECDHE-ECDSA-AES256-GCM-SHA384`
+`ECDH-ECDSA-AES128-GCM-SHA256`
+`ECDH-ECDSA-AES256-GCM-SHA384`
+`ECDHE-RSA-AES128-GCM-SHA256`
+`ECDHE-RSA-AES256-GCM-SHA384`
+`ECDH-RSA-AES128-GCM-SHA256`
+`ECDH-RSA-AES256-GCM-SHA384`
+
+Since BearSSL 0.2:
+
+`ECDHE-RSA-CHACHA20-POLY1305`
+`ECDHE-ECDSA-CHACHA20-POLY1305`
+
+Since BearSSL 0.6:
+
+`AES128-CCM`
+`AES256-CCM`
+`AES128-CCM8`
+`AES256-CCM8`
+`ECDHE-ECDSA-AES128-CCM`
+`ECDHE-ECDSA-AES256-CCM`
+`ECDHE-ECDSA-AES128-CCM8`
+`ECDHE-ECDSA-AES256-CCM8`
index b3230ec52aa782ad48c1538dc7f34bc1d0e2b5e8..97101a482da4d9ef10c2b1fc25b18c973cfcb4f5 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #add_subdirectory(examples)
 add_subdirectory(libcurl)
index 20d1be849dbba24bdc4be522bd506d0abe931d64..0776d30a08be8a6bb507c90441a4dbda210f27c1 100644 (file)
@@ -70,7 +70,7 @@ on final or release builds.
 Can the mallocs be avoided? Do not introduce mallocs in any hot paths. If
 there are (new) mallocs, can they be combined into fewer calls?
 
-Are all allocations handled in errorpaths to avoid leaks and crashes?
+Are all allocations handled in error paths to avoid leaks and crashes?
 
 ## Thread-safety
 
@@ -151,12 +151,12 @@ Maybe use of `realloc()` should rather use the dynbuf functions?
 Do not allow new code that grows buffers without using dynbuf.
 
 Use of C functions that rely on a terminating zero must only be used on data
-that really do have a zero terminating zero.
+that really do have a null-terminating zero.
 
 ## Dangerous "data styles"
 
 Make extra precautions and verify that memory buffers that need a terminating
-zero always have exactly that. Buffers *without* a zero terminator must not be
+zero always have exactly that. Buffers *without* a null-terminator must not be
 used as input to string functions.
 
 # Commit messages
@@ -164,5 +164,5 @@ used as input to string functions.
 Tightly coupled with a code review is making sure that the commit message is
 good. It is the responsibility of the person who merges the code to make sure
 that the commit message follows our standard (detailed in the
-[CONTRIBUTE.md](CONTRIBUTE.md) document). This includes making sure the PR
+[CONTRIBUTE](CONTRIBUTE.md) document). This includes making sure the PR
 identifies related issues and giving credit to reporters and helpers.
index 530d4004dacafde2c3e2e204981c308f6d7e7c53..5481aa506cd842fcd7c04f751d23835a0a1be2a0 100644 (file)
@@ -9,8 +9,9 @@ style is more important than individual contributors having their own personal
 tastes satisfied.
 
 Our C code has a few style rules. Most of them are verified and upheld by the
-`lib/checksrc.pl` script. Invoked with `make checksrc` or even by default by
-the build system when built after `./configure --enable-debug` has been used.
+`scripts/checksrc.pl` script. Invoked with `make checksrc` or even by default
+by the build system when built after `./configure --enable-debug` has been
+used.
 
 It is normally not a problem for anyone to follow the guidelines, as you just
 need to copy the style already used in the source code and there are no
index 16ea8fed1e072e7865ab0d39a7e5407b6be67d70..43a747df54e193aa6e2810af1c3b2c7695b35ba1 100644 (file)
@@ -4,9 +4,7 @@ This document is intended to offer guidelines on how to best contribute to the
 curl project. This concerns new features as well as corrections to existing
 flaws or bugs.
 
-## Learning curl
-
-### Join the Community
+## Join the Community
 
 Skip over to [https://curl.se/mail/](https://curl.se/mail/) and join
 the appropriate mailing list(s). Read up on details before you post
@@ -23,7 +21,7 @@ If you are at all interested in the code side of things, consider clicking
 'watch' on the [curl repo on GitHub](https://github.com/curl/curl) to be
 notified of pull requests and new issues posted there.
 
-### License and copyright
+## License and copyright
 
 When contributing with code, you agree to put your changes and new code under
 the same license curl and libcurl is already using unless stated and agreed
@@ -46,7 +44,7 @@ patch/code to us. We will credit you for your changes as far as possible, to
 give credit but also to keep a trace back to who made what changes. Please
 always provide us with your full real name when contributing,
 
-### What To Read
+## What To Read
 
 Source code, the man pages, the [INTERNALS
 document](https://curl.se/dev/internals.html),
@@ -124,7 +122,7 @@ If you do not have test cases or perhaps you have done something that is hard
 to write tests for, do explain exactly how you have otherwise tested and
 verified your changes.
 
-## Sharing Your Changes
+## Submit Your Changes
 
 ### How to get your changes into the main sources
 
@@ -133,12 +131,17 @@ GitHub](https://github.com/curl/curl/pulls), but you can also send your plain
 patch to [the curl-library mailing
 list](https://curl.se/mail/list.cgi?list=curl-library).
 
-Either way, your change will be reviewed and discussed there and you will be
-expected to correct flaws pointed out and update accordingly, or the change
-risks stalling and eventually just getting deleted without action. As a
-submitter of a change, you are the owner of that change until it has been merged.
+If you opt to post a patch on the mailing list, chances are someone will
+convert it into a pull request for you, to have the CI jobs verify it proper
+before it can be merged. Be prepared that some feedback on the proposed change
+might then come on GitHub.
+
+Your change will be reviewed and discussed and you will be expected to correct
+flaws pointed out and update accordingly, or the change risks stalling and
+eventually just getting deleted without action. As a submitter of a change,
+you are the owner of that change until it has been merged.
 
-Respond on the list or on github about the change and answer questions and/or
+Respond on the list or on GitHub about the change and answer questions and/or
 fix nits/flaws. This is important. We will take lack of replies as a sign that
 you are not anxious to get your patch accepted and we tend to simply drop such
 changes.
@@ -154,12 +157,12 @@ git commit that is easy to merge and they are easy to track and not that easy
 to lose in the flood of many emails, like they sometimes do on the mailing
 lists.
 
-Every pull request submitted will automatically be
-tested in several different ways. [See CI.md for more
+Every pull request submitted will automatically be tested in several different
+ways. [See the CI document for more
 information](https://github.com/curl/curl/blob/master/tests/CI.md).
 
 Sometimes the tests fail due to a dependency service temporarily being offline
-or otherwise unavailable, eg. package downloads. In this case you can just
+or otherwise unavailable, e.g. package downloads. In this case you can just
 try to update your pull requests to rerun the tests later as described below.
 
 You can update your pull requests by pushing new commits or force-pushing
@@ -169,15 +172,21 @@ actual content changed also allows you to retrigger the tests for that commit.
 When you adjust your pull requests after review, consider squashing the
 commits so that we can review the full updated version more easily.
 
-### Making quality patches
+A pull request sent to the project might get labeled `needs-votes` by a
+project maintainer. This label means that in addition to meeting all other
+checks and qualifications this pull request must also receive more "votes" of
+user support. More signs that people want this to happen. It could be in the
+form of messages saying so, or thumbs-up reactions on GitHub.
+
+### Making quality changes
 
 Make the patch against as recent source versions as possible.
 
-If you have followed the tips in this document and your patch still has not been
-incorporated or responded to after some weeks, consider resubmitting it to the
-list or better yet: change it to a pull request.
+If you have followed the tips in this document and your patch still has not
+been incorporated or responded to after some weeks, consider resubmitting it
+to the list or better yet: change it to a pull request.
 
-### Write good commit messages
+### Commit messages
 
 A short guide to how to write commit messages in the curl project.
 
@@ -236,7 +245,7 @@ can make patches out of your changes that are suitable for mailing:
 
     git format-patch remotes/origin/master
 
-This creates files in your local directory named NNNN-[name].patch for each
+This creates files in your local directory named `NNNN-[name].patch` for each
 commit.
 
 Now send those patches off to the curl-library list. You can of course opt to
@@ -258,17 +267,25 @@ can use diff recursively:
     diff -ur curl-original-dir curl-modified-sources-dir > my-fixes.diff
 
 The GNU diff and GNU patch tools exist for virtually all platforms, including
-all kinds of Unixes and Windows:
+all kinds of Unixes and Windows.
+
+### Useful resources
+ - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI)
 
-For unix-like operating systems:
+## Update copyright and license information
 
- - [https://savannah.gnu.org/projects/patch/](https://savannah.gnu.org/projects/patch/)
- - [https://www.gnu.org/software/diffutils/](https://www.gnu.org/software/diffutils/)
+There is a CI job called **REUSE compliance / check** that will run on every
+pull request and commit to verify that the *REUSE state* of all files are
+still fine.
 
-For Windows:
+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.
 
- - [https://gnuwin32.sourceforge.io/packages/patch.htm](https://gnuwin32.sourceforge.io/packages/patch.htm)
- - [https://gnuwin32.sourceforge.io/packages/diffutils.htm](https://gnuwin32.sourceforge.io/packages/diffutils.htm)
+We update copyright year ranges to end on the year of the most recent change
+of the individual file.
 
-### Useful resources
- - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI)
+You can manually verify the copyright and compliance status by running the
+`./scripts/copyright.pl` script in the root of the git repository.
index a2e75f198db51bc88ef5af925681e6c0878761cb..1548df6bc97f7485b87018cf86dfe9e2967da3f7 100644 (file)
 # Code defines to disable features and protocols
 
-## CURL_DISABLE_ALTSVC
+## `CURL_DISABLE_ALTSVC`
 
 Disable support for Alt-Svc: HTTP headers.
 
-## CURL_DISABLE_COOKIES
+## `CURL_DISABLE_COOKIES`
 
 Disable support for HTTP cookies.
 
-## CURL_DISABLE_CRYPTO_AUTH
+## `CURL_DISABLE_CRYPTO_AUTH`
 
 Disable support for authentication methods using crypto.
 
-## CURL_DISABLE_DICT
+## `CURL_DISABLE_DICT`
 
 Disable the DICT protocol
 
-## CURL_DISABLE_DOH
+## `CURL_DISABLE_DOH`
 
 Disable DNS-over-HTTPS
 
-## CURL_DISABLE_FILE
+## `CURL_DISABLE_FILE`
 
 Disable the FILE protocol
 
-## CURL_DISABLE_FTP
+## `CURL_DISABLE_FTP`
 
 Disable the FTP (and FTPS) protocol
 
-## CURL_DISABLE_GETOPTIONS
+## `CURL_DISABLE_GETOPTIONS`
 
 Disable the `curl_easy_options` API calls that lets users get information
 about existing options to `curl_easy_setopt`.
 
-## CURL_DISABLE_GOPHER
+## `CURL_DISABLE_GOPHER`
 
 Disable the GOPHER protocol.
 
-## CURL_DISABLE_HSTS
+## `CURL_DISABLE_HEADERS_API`
+
+Disable the HTTP header API.
+
+## `CURL_DISABLE_HSTS`
 
 Disable the HTTP Strict Transport Security support.
 
-## CURL_DISABLE_HTTP
+## `CURL_DISABLE_HTTP`
 
 Disable the HTTP(S) protocols. Note that this then also disable HTTP proxy
 support.
 
-## CURL_DISABLE_HTTP_AUTH
+## `CURL_DISABLE_HTTP_AUTH`
 
 Disable support for all HTTP authentication methods.
 
-## CURL_DISABLE_IMAP
+## `CURL_DISABLE_IMAP`
 
 Disable the IMAP(S) protocols.
 
-## CURL_DISABLE_LDAP
+## `CURL_DISABLE_LDAP`
 
 Disable the LDAP(S) protocols.
 
-## CURL_DISABLE_LDAPS
+## `CURL_DISABLE_LDAPS`
 
 Disable the LDAPS protocol.
 
-## CURL_DISABLE_LIBCURL_OPTION
+## `CURL_DISABLE_LIBCURL_OPTION`
 
 Disable the --libcurl option from the curl tool.
 
-## CURL_DISABLE_MIME
+## `CURL_DISABLE_MIME`
 
 Disable MIME support.
 
-## CURL_DISABLE_MQTT
+## `CURL_DISABLE_MQTT`
 
 Disable MQTT support.
 
-## CURL_DISABLE_NETRC
+## `CURL_DISABLE_NETRC`
 
 Disable the netrc parser.
 
-## CURL_DISABLE_NTLM
+## `CURL_DISABLE_NTLM`
 
 Disable support for NTLM.
 
-## CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
+## `CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG`
 
 Disable the auto load config support in the OpenSSL backend.
 
-## CURL_DISABLE_PARSEDATE
+## `CURL_DISABLE_PARSEDATE`
 
 Disable date parsing
 
-## CURL_DISABLE_POP3
+## `CURL_DISABLE_POP3`
 
 Disable the POP3 protocol
 
-## CURL_DISABLE_PROGRESS_METER
+## `CURL_DISABLE_PROGRESS_METER`
 
 Disable the built-in progress meter
 
-## CURL_DISABLE_PROXY
+## `CURL_DISABLE_PROXY`
 
 Disable support for proxies
 
-## CURL_DISABLE_RTSP
+## `CURL_DISABLE_RTSP`
 
 Disable the RTSP protocol.
 
-## CURL_DISABLE_SHUFFLE_DNS
+## `CURL_DISABLE_SHUFFLE_DNS`
 
 Disable the shuffle DNS feature
 
-## CURL_DISABLE_SMB
+## `CURL_DISABLE_SMB`
 
 Disable the SMB(S) protocols
 
-## CURL_DISABLE_SMTP
+## `CURL_DISABLE_SMTP`
 
 Disable the SMTP(S) protocols
 
-## CURL_DISABLE_SOCKETPAIR
+## `CURL_DISABLE_SOCKETPAIR`
 
-Disable the use of socketpair internally to allow waking up and canceling
-curl_multi_poll().
+Disable the use of `socketpair()` internally to allow waking up and canceling
+`curl_multi_poll()`.
 
-## CURL_DISABLE_TELNET
+## `CURL_DISABLE_TELNET`
 
 Disable the TELNET protocol
 
-## CURL_DISABLE_TFTP
+## `CURL_DISABLE_TFTP`
 
 Disable the TFTP protocol
 
-## CURL_DISABLE_VERBOSE_STRINGS
+## `CURL_DISABLE_VERBOSE_STRINGS`
 
 Disable verbose strings and error messages.
index d0d94d1ac103b2f1cca437e4757612e8e96e8bdc..80be68f7d581ae14ed978772a8ad0daf96106dde 100644 (file)
@@ -6,8 +6,43 @@ email the
 as soon as possible and explain to us why this is a problem for you and
 how your use case cannot be satisfied properly using a workaround.
 
-## Past removals
+## Support for systems without 64 bit data types
+
+curl will *require* support for a 64 bit data type (like `long long` or an
+alternative) to build. These days, few systems are used where no such type is
+around so the cost of maintaining this support is increasingly unnecessary to
+spent effort and time on, while supporting 32 bit values for some of those
+fields is complicated and hard to test.
+
+Adding this requirement will make the code simpler, easier to maintain and the
+test coverage better. It is a low price too, since virtually no users are
+still building curl on such systems.
+
+`long long` was not a standard type until C99, but has been supported by C89
+compilers since the 1990s.
+
+Starting in 8.0.0 (March 2023), the plan is to drop support.
+
+Starting in 7.86.0, building curl with configure requires the additional flag
+`--with-n64-deprecated` if the `curl_off_t` type on your system is smaller
+than 8 bytes, in an attempt to highlight these plans to affected users.
+
+## NSS
+
+We remove support for building curl with the NSS TLS library in August 2023.
+
+- There are few users left who use curl+NSS
+- NSS has few users outside of curl as well (primarily Firefox)
+- NSS is harder than ever to find documentation for
+- NSS was always "best" used with Red Hat Linux when they provided additional
+  features on top of the regular NSS that is not shipped by the vanilla library
+
+Starting in 7.82.0, building curl to use NSS configure requires the additional
+flag `--with-nss-deprecated` in an attempt to highlight these plans.
+
+## past removals
 
  - Pipelining
  - axTLS
  - PolarSSL
+ - NPN
index 16aca8a61c13ce5bbb6432a970eea7afdca3f976..41b022c4227d3bef77e237be2ac6f449b3b32a07 100644 (file)
@@ -9,17 +9,18 @@ The `struct dynbuf` is used to hold data for each instance of a dynamic
 buffer. The members of that struct **MUST NOT** be accessed or modified
 without using the dedicated dynbuf API.
 
-## init
+## `Curl_dyn_init`
 
 ```c
 void Curl_dyn_init(struct dynbuf *s, size_t toobig);
 ```
 
-This inits a struct to use for dynbuf and it cannot fail. The `toobig` value
-**must** be set to the maximum size we allow this buffer instance to grow to.
-The functions below will return `CURLE_OUT_OF_MEMORY` when hitting this limit.
+This initializes a struct to use for dynbuf and it cannot fail. The `toobig`
+value **must** be set to the maximum size we allow this buffer instance to
+grow to. The functions below will return `CURLE_OUT_OF_MEMORY` when hitting
+this limit.
 
-## free
+## `Curl_dyn_free`
 
 ```c
 void Curl_dyn_free(struct dynbuf *s);
@@ -28,7 +29,7 @@ void Curl_dyn_free(struct dynbuf *s);
 Free the associated memory and clean up. After a free, the `dynbuf` struct can
 be re-used to start appending new data to.
 
-## addn
+## `Curl_dyn_addn`
 
 ```c
 CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len);
@@ -36,7 +37,7 @@ CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len);
 
 Append arbitrary data of a given length to the end of the buffer.
 
-## add
+## `Curl_dyn_add`
 
 ```c
 CURLcode Curl_dyn_add(struct dynbuf *s, const char *str);
@@ -44,7 +45,7 @@ CURLcode Curl_dyn_add(struct dynbuf *s, const char *str);
 
 Append a C string to the end of the buffer.
 
-## addf
+## `Curl_dyn_addf`
 
 ```c
 CURLcode Curl_dyn_addf(struct dynbuf *s, const char *fmt, ...);
@@ -52,7 +53,7 @@ CURLcode Curl_dyn_addf(struct dynbuf *s, const char *fmt, ...);
 
 Append a `printf()`-style string to the end of the buffer.
 
-## vaddf
+## `Curl_dyn_vaddf`
 
 ```c
 CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap);
@@ -60,7 +61,7 @@ CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap);
 
 Append a `vprintf()`-style string to the end of the buffer.
 
-## reset
+## `Curl_dyn_reset`
 
 ```c
 void Curl_dyn_reset(struct dynbuf *s);
@@ -68,7 +69,7 @@ void Curl_dyn_reset(struct dynbuf *s);
 
 Reset the buffer length, but leave the allocation.
 
-## tail
+## `Curl_dyn_tail`
 
 ```c
 CURLcode Curl_dyn_tail(struct dynbuf *s, size_t length);
@@ -76,29 +77,30 @@ CURLcode Curl_dyn_tail(struct dynbuf *s, size_t length);
 
 Keep `length` bytes of the buffer tail (the last `length` bytes of the
 buffer). The rest of the buffer is dropped. The specified `length` must not be
-larger than the buffer length.
+larger than the buffer length. To instead keep the leading part, see
+`Curl_dyn_setlen()`.
 
-## ptr
+## `Curl_dyn_ptr`
 
 ```c
 char *Curl_dyn_ptr(const struct dynbuf *s);
 ```
 
-Returns a `char *` to the buffer if it has a length, otherwise a NULL. Since
-the buffer may be reallocated, this pointer should not be trusted or used
-anymore after the next buffer manipulation call.
+Returns a `char *` to the buffer if it has a length, otherwise may return
+NULL. Since the buffer may be reallocated, this pointer should not be trusted
+or used anymore after the next buffer manipulation call.
 
-## uptr
+## `Curl_dyn_uptr`
 
 ```c
 unsigned char *Curl_dyn_uptr(const struct dynbuf *s);
 ```
 
-Returns an `unsigned char *` to the buffer if it has a length, otherwise a
-NULL. Since the buffer may be reallocated, this pointer should not be trusted
-or used anymore after the next buffer manipulation call.
+Returns an `unsigned char *` to the buffer if it has a length, otherwise may
+return NULL. Since the buffer may be reallocated, this pointer should not be
+trusted or used anymore after the next buffer manipulation call.
 
-## len
+## `Curl_dyn_len`
 
 ```c
 size_t Curl_dyn_len(const struct dynbuf *s);
@@ -106,3 +108,13 @@ size_t Curl_dyn_len(const struct dynbuf *s);
 
 Returns the length of the buffer in bytes. Does not include the terminating
 zero byte.
+
+## `Curl_dyn_setlen`
+
+```c
+CURLcode Curl_dyn_setlen(struct dynbuf *s, size_t len);
+```
+
+Sets the new shorter length of the buffer in number of bytes. Keeps the
+leftmost set number of bytes, discards the rest. To instead keep the tail part
+of the buffer, see `Curl_dyn_tail()`.
index ce9a1b8e85e529d8766592cd7fd24a872b8da8c1..9aaa7ada11ccf8433a1efb2d9aba40c85a03b6b8 100644 (file)
@@ -20,4 +20,6 @@ Experimental support in curl means:
 
  - The Hyper HTTP backend
  - HTTP/3 support and options
- - CURLSSLOPT_NATIVE_CA (No configure option, feature built in when supported)
+ - `CURLSSLOPT_NATIVE_CA` (No configure option, feature built in when supported)
+ - The rustls backend
+ - WebSocket
index 30c889e4e282da9ad525e8fc5bffa083ee9a7fb1..c8ba7feb3d6fc5f22f6d91c14a06d3387a126f45 100644 (file)
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -14,11 +14,11 @@ FAQ
   1.5 Who makes curl?
   1.6 What do you get for making curl?
   1.7 What about CURL from curl.com?
-  1.8 I have a problem who do I mail?
+  1.8 I have a problem, who do I mail?
   1.9 Where do I buy commercial support for curl?
   1.10 How many are using curl?
   1.11 Why do you not update ca-bundle.crt
-  1.12 I have a problem who can I chat with?
+  1.12 I have a problem, who can I chat with?
   1.13 curl's ECCN number?
   1.14 How do I submit my patch?
   1.15 How do I port libcurl to my OS?
@@ -42,10 +42,10 @@ FAQ
   3.11 How do I POST with a different Content-Type?
   3.12 Why do FTP-specific features over HTTP proxy fail?
   3.13 Why do my single/double quotes fail?
-  3.14 Does curl support Javascript or PAC (automated proxy config)?
+  3.14 Does curl support JavaScript or PAC (automated proxy config)?
   3.15 Can I do recursive fetches with curl?
   3.16 What certificates do I need when I use SSL?
-  3.17 How do I list the root dir of an FTP server?
+  3.17 How do I list the root directory of an FTP server?
   3.18 Can I use curl to send a POST/PUT and not wait for a response?
   3.19 How do I get HTTP from a host using a specific IP address?
   3.20 How to SFTP from my user's home directory?
@@ -56,7 +56,7 @@ FAQ
   4.2 Why do I get problems when I use & or % in the URL?
   4.3 How can I use {, }, [ or ] to specify multiple URLs?
   4.4 Why do I get downloaded data even though the web page does not exist?
-  4.5 Why do I get return code XXX from a HTTP server?
+  4.5 Why do I get return code XXX from an HTTP server?
    4.5.1 "400 Bad Request"
    4.5.2 "401 Unauthorized"
    4.5.3 "403 Forbidden"
@@ -66,7 +66,7 @@ FAQ
   4.6 Can you tell me what error code 142 means?
   4.7 How do I keep user names and passwords secret in curl command lines?
   4.8 I found a bug
-  4.9 curl cannot authenticate to the server that requires NTLM?
+  4.9 curl cannot authenticate to a server that requires NTLM?
   4.10 My HTTP request using HEAD, PUT or DELETE does not work
   4.11 Why do my HTTP range requests return the full document?
   4.12 Why do I get "certificate verify failed" ?
@@ -136,7 +136,8 @@ FAQ
 
     A client-side URL transfer library, supporting DICT, FILE, FTP, FTPS,
     GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S,
-    RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP.
+    RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS
+    and WSS.
 
     libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading,
     Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password
@@ -144,9 +145,9 @@ FAQ
 
     libcurl is highly portable, it builds and works identically on numerous
     platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HP-UX,
-    IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOS, Mac
-    OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF,
-    Android, Minix, IBM TPF and more...
+    IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, macOS,
+    Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF, Android,
+    Minix, IBM TPF and more...
 
     libcurl is free, thread-safe, IPv6 compatible, feature rich, well
     supported and fast.
@@ -200,8 +201,8 @@ FAQ
 
   curl is not a program for a single operating system. curl exists, compiles,
   builds and runs under a wide range of operating systems, including all
-  modern Unixes (and a bunch of older ones too), Windows, Amiga, BeOS, OS/2,
-  OS X, QNX etc.
+  modern Unixes (and a bunch of older ones too), Windows, Amiga, OS/2, macOS,
+  QNX etc.
 
   1.4 When will you make curl do XXXX ?
 
@@ -225,7 +226,7 @@ FAQ
   implement it for you, that is not a friendly attitude. We spend a
   considerable time already on maintaining and developing curl. In order to
   get more out of us, you should consider trading in some of your time and
-  effort in return. Simply go to the GitHub repo which resides at
+  effort in return. Simply go to the GitHub repository which resides at
   https://github.com/curl/curl, fork the project, and create pull requests
   with your proposed changes.
 
@@ -275,7 +276,7 @@ FAQ
   We recognize that we will be living in parallel with curl.com and wish them
   every success.
 
-  1.8 I have a problem whom do I mail?
+  1.8 I have a problem, who do I mail?
 
   Please do not mail any single individual unless you really need to. Keep
   curl-related questions on a suitable mailing list. All available mailing
@@ -294,7 +295,7 @@ FAQ
   issue private while we investigate, confirm it, work and validate a fix and
   agree on a time schedule for publication etc. That way we produce a fix in a
   timely manner before the flaw is announced to the world, reducing the impact
-  the problem risk having on existing users.
+  the problem risks having on existing users.
 
   Security issues can also be taking to the curl security team by emailing
   security at curl.se (closed list of receivers, mails are not disclosed).
@@ -327,7 +328,7 @@ FAQ
   In the cURL project we have decided not to attempt to keep this file updated
   (or even present) since deciding what to add to a ca cert bundle is an
   undertaking we have not been ready to accept, and the one we can get from
-  Mozilla is perfectly fine so there's no need to duplicate that work.
+  Mozilla is perfectly fine so there is no need to duplicate that work.
 
   Today, with many services performed over HTTPS, every operating system
   should come with a default ca cert bundle that can be deemed somewhat
@@ -339,9 +340,9 @@ FAQ
   Firefox (by running 'make ca-bundle), or by using our online service setup
   for this purpose: https://curl.se/docs/caextract.html
 
-  1.12 I have a problem who can I chat with?
+  1.12 I have a problem who, can I chat with?
 
-  There's a bunch of friendly people hanging out in the #curl channel on the
+  There is a bunch of friendly people hanging out in the #curl channel on the
   IRC network libera.chat. If you are polite and nice, chances are good that
   you can get -- or provide -- help instantly.
 
@@ -421,7 +422,7 @@ FAQ
   backends.
 
   curl can be built to use one of the following SSL alternatives: OpenSSL,
-  libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, MesaLink, Secure
+  libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, Secure
   Transport (native iOS/OS X), Schannel (native Windows), GSKit (native IBM
   i), BearSSL, or Rustls. They all have their pros and cons, and we try to
   maintain a comparison of them here: https://curl.se/docs/ssl-compared.html
@@ -434,7 +435,7 @@ FAQ
 
   3.1 curl: (1) SSL is disabled, https: not supported
 
-  If you get this output when trying to get anything from a https:// server,
+  If you get this output when trying to get anything from an https:// server,
   it means that the instance of curl/libcurl that you are using was built
   without support for this protocol.
 
@@ -493,10 +494,10 @@ FAQ
 
   To curl, all contents are alike. It does not matter how the page was
   generated. It may be ASP, PHP, Perl, shell-script, SSI or plain HTML
-  files. There's no difference to curl and it does not even know what kind of
+  files. There is no difference to curl and it does not even know what kind of
   language that generated the page.
 
-  See also item 3.14 regarding javascript.
+  See also item 3.14 regarding JavaScript.
 
   3.7 Can I use curl to delete/rename a file through FTP?
 
@@ -564,8 +565,8 @@ FAQ
 
   3.12 Why do FTP-specific features over HTTP proxy fail?
 
-  Because when you use a HTTP proxy, the protocol spoken on the network will
-  be HTTP, even if you specify a FTP URL. This effectively means that you
+  Because when you use an HTTP proxy, the protocol spoken on the network will
+  be HTTP, even if you specify an FTP URL. This effectively means that you
   normally cannot use FTP-specific features such as FTP upload and FTP quote
   etc.
 
@@ -588,7 +589,14 @@ FAQ
   Exactly what kind of quotes and how to do this is entirely up to the shell
   or command line interpreter that you are using. For most unix shells, you
   can more or less pick either single (') or double (") quotes. For
-  Windows/DOS prompts I believe you are forced to use double (") quotes.
+  Windows/DOS command prompts you must use double (") quotes, and if the
+  option string contains inner double quotes you can escape them with a
+  backslash.
+
+  For Windows powershell the arguments are not always passed on as expected
+  because curl is not a powershell script. You may or may not be able to use
+  single quotes. To escape inner double quotes seems to require a
+  backslash-backtick escape sequence and the outer quotes as double quotes.
 
   Please study the documentation for your particular environment. Examples in
   the curl docs will use a mix of both of these as shown above. You must
@@ -597,27 +605,27 @@ FAQ
   Remember that curl works and runs on more operating systems than most single
   individuals have ever tried.
 
-  3.14 Does curl support Javascript or PAC (automated proxy config)?
+  3.14 Does curl support JavaScript or PAC (automated proxy config)?
 
-  Many web pages do magic stuff using embedded Javascript. curl and libcurl
+  Many web pages do magic stuff using embedded JavaScript. curl and libcurl
   have no built-in support for that, so it will be treated just like any other
   contents.
 
-  .pac files are a netscape invention and are sometimes used by organizations
+  .pac files are a Netscape invention and are sometimes used by organizations
   to allow them to differentiate which proxies to use. The .pac contents is
-  just a Javascript program that gets invoked by the browser and that returns
-  the name of the proxy to connect to. Since curl does not support Javascript,
+  just a JavaScript program that gets invoked by the browser and that returns
+  the name of the proxy to connect to. Since curl does not support JavaScript,
   it cannot support .pac proxy configuration either.
 
-  Some workarounds usually suggested to overcome this Javascript dependency:
+  Some workarounds usually suggested to overcome this JavaScript dependency:
 
-  Depending on the Javascript complexity, write up a script that translates it
+  Depending on the JavaScript complexity, write up a script that translates it
   to another language and execute that.
 
-  Read the Javascript code and rewrite the same logic in another language.
+  Read the JavaScript code and rewrite the same logic in another language.
 
-  Implement a Javascript interpreter, people have successfully used the
-  Mozilla Javascript engine in the past.
+  Implement a JavaScript interpreter, people have successfully used the
+  Mozilla JavaScript engine in the past.
 
   Ask your admins to stop this, for a static proxy setup or similar.
 
@@ -668,10 +676,10 @@ FAQ
   refused access. You then need to explicitly disable the verification to
   connect to the server.
 
-  3.17 How do I list the root dir of an FTP server?
+  3.17 How do I list the root directory of an FTP server?
 
   There are two ways. The way defined in the RFC is to use an encoded slash
-  in the first path part. List the "/tmp" dir like this:
+  in the first path part. List the "/tmp" directory like this:
 
      curl ftp://ftp.sunet.se/%2ftmp/
 
@@ -737,7 +745,7 @@ FAQ
   In normal circumstances, -X should hardly ever be used.
 
   By default you use curl without explicitly saying which request method to
-  use when the URL identifies a HTTP transfer. If you just pass in a URL like
+  use when the URL identifies an HTTP transfer. If you just pass in a URL like
   "curl http://example.com" it will use GET. If you use -d or -F curl will use
   POST, -I will cause a HEAD and -T will make it a PUT.
 
@@ -765,7 +773,7 @@ FAQ
 
   4.2 Why do I get problems when I use & or % in the URL?
 
-  In general unix shells, the & symbol is treated specially and when used, it
+  In general Unix shells, the & symbol is treated specially and when used, it
   runs the specified command in the background. To safely send the & as a part
   of a URL, you should quote the entire URL by using single (') or double (")
   quotes around it. Similar problems can also occur on some shells with other
@@ -807,7 +815,7 @@ FAQ
   By using the --fail option you can tell curl explicitly to not get any data
   if the HTTP return code does not say success.
 
-  4.5 Why do I get return code XXX from a HTTP server?
+  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
   read the RFC for exact details:
@@ -829,7 +837,7 @@ FAQ
     4.5.4 "404 Not Found"
 
     The server has not found anything matching the Request-URI. No indication
-    is given of whether the condition is temporary or permanent.
+    is given as to whether the condition is temporary or permanent.
 
     4.5.5 "405 Method Not Allowed"
 
@@ -892,14 +900,11 @@ FAQ
   If there is a bug, read the BUGS document first. Then report it as described
   in there.
 
-  4.9 curl cannot authenticate to the server that requires NTLM?
+  4.9 curl cannot authenticate to a server that requires NTLM?
 
   NTLM support requires OpenSSL, GnuTLS, mbedTLS, NSS, Secure Transport, or
   Microsoft Windows libraries at build-time to provide this functionality.
 
-  NTLM is a Microsoft proprietary protocol. Proprietary formats are evil. You
-  should not use such ones.
-
   4.10 My HTTP request using HEAD, PUT or DELETE does not work
 
   Many web servers allow or demand that the administrator configures the
@@ -925,7 +930,7 @@ FAQ
 
   To completely disable the certificate verification, use -k. This does
   however enable man-in-the-middle attacks and makes the transfer INSECURE.
-  We strongly advice against doing this for more than experiments.
+  We strongly advise against doing this for more than experiments.
 
   If you get this failure with a CA cert bundle installed and used, the
   server's certificate might not be signed by one of the CA's in your CA
@@ -959,10 +964,10 @@ FAQ
   curl supports HTTP redirects well (see item 3.8). Browsers generally support
   at least two other ways to perform redirects that curl does not:
 
-  Meta tags. You can write a HTML tag that will cause the browser to redirect
+  Meta tags. You can write an HTML tag that will cause the browser to redirect
   to another given URL after a certain time.
 
-  Javascript. You can write a Javascript program embedded in a HTML page that
+  JavaScript. You can write a JavaScript program embedded in an HTML page that
   redirects the browser to another given URL.
 
   There is no way to make curl follow these redirects. You must either
@@ -978,7 +983,7 @@ FAQ
   the control connection and will therefore immediately connect and try to
   speak SSL. FTPS:// connections default to port 990.
 
-  To use explicit FTPS, you use a FTP:// URL and the --ftp-ssl option (or one
+  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
   standard FTP port 21 by default.
@@ -1196,7 +1201,7 @@ FAQ
   dynamic import symbols. If you are using Visual Studio, you need to instead
   add CURL_STATICLIB in the "Preprocessor Definitions" section.
 
-  If you get linker error like "unknown symbol __imp__curl_easy_init ..." you
+  If you get linker error like "unknown symbol __imp__curl_easy_init ..." you
   have linked against the wrong (static) library. If you want to use the
   libcurl.dll and import lib, you do not need any extra CFLAGS, but use one of
   the import libraries below. These are the libraries produced by the various
@@ -1204,7 +1209,7 @@ FAQ
 
        Target:          static lib.   import lib for libcurl*.dll.
        -----------------------------------------------------------
-       MingW:           libcurl.a     libcurldll.a
+       MinGW:           libcurl.a     libcurldll.a
        MSVC (release):  libcurl.lib   libcurl_imp.lib
        MSVC (debug):    libcurld.lib  libcurld_imp.lib
        Borland:         libcurl.lib   libcurl_imp.lib
@@ -1212,7 +1217,7 @@ FAQ
   5.8 libcurl.so.X: open failed: No such file or directory
 
   This is an error message you might get when you try to run a program linked
-  with a shared version of libcurl and your run-time linker (ld.so) could not
+  with a shared version of libcurl and your runtime linker (ld.so) could not
   find the shared library named libcurl.so.X. (Where X is the number of the
   current libcurl ABI, typically 3 or 4).
 
@@ -1221,13 +1226,13 @@ FAQ
   They are usually:
 
   * Add an option to the linker command line that specify the hard-coded path
-    the run-time linker should check for the lib (usually -R)
+    the runtime linker should check for the lib (usually -R)
 
   * Set an environment variable (LD_LIBRARY_PATH for example) where ld.so
     should check for libs
 
   * Adjust the system's config to check for libs in the directory where you have
-    put the dir (like Linux's /etc/ld.so.conf)
+    put the library (like Linux's /etc/ld.so.conf)
 
   'man ld.so' and 'man ld' will tell you more details
 
@@ -1325,15 +1330,16 @@ FAQ
   to list the files.
 
   The follow-up question tends to be how is a program supposed to parse the
-  directory listing. How does it know what's a file and what's a dir 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 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. Also, both LIST
-  and NLST tend to hide unix-style hidden files (those that start with a dot)
-  by default so you need to do "LIST -a" or similar to see them.
+  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
+  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.
+  Also, both LIST and NLST tend to hide unix-style hidden files (those that
+  start with a dot) by default so you need to do "LIST -a" or similar to see
+  them.
 
   Example - List only directories.
   ftp.funet.fi supports MLSD and ftp.kernel.org does not:
@@ -1368,11 +1374,11 @@ FAQ
   5.17 Can I write a server with libcurl?
 
   No. libcurl offers no functions or building blocks to build any kind of
-  internet protocol server. libcurl is only a client-side library. For server
+  Internet protocol server. libcurl is only a client-side library. For server
   libraries, you need to continue your search elsewhere but there exist many
   good open source ones out there for most protocols you could want a server
   for. There are also really good stand-alone servers that have been tested
-  and proven for many years. There's no need for you to reinvent them.
+  and proven for many years. There is no need for you to reinvent them.
 
   5.18 Does libcurl use threads?
 
@@ -1505,7 +1511,7 @@ FAQ
 
  8.1 Why does curl use C89?
 
- As with everything in curl, there's a history and we keep using what we have
+ As with everything in curl, there is a history and we keep using what we have
  used before until someone brings up the subject and argues for and works on
  changing it.
 
@@ -1535,5 +1541,5 @@ FAQ
  stable, we will never risk anything by rewriting a lot of things in one go.
  That said, we can certainly offer more and more optional backends written in
  other languages, as long as those backends can be plugged in at build-time.
- Back-ends can be written in any language, but should probably provide APIs
+ Backends can be written in any language, but should probably provide APIs
  usable from C to ease integration and transition.
index a52d5da3a50cd7f6abea78de999c295ab330da28..52608c08e36f44322b564f93c26e1af04cffe96d 100644 (file)
@@ -7,7 +7,7 @@
  - range "globbing" support: [0-13], {one,two,three}
  - multiple file upload on a single command line
  - custom maximum transfer rate
- - redirectable stderr
+ - redirect stderr
  - parallel transfers
 
 ## libcurl
@@ -22,7 +22,7 @@
  - "standard" proxy environment variables support
  - compiles on win32 (reported builds on 70+ operating systems)
  - selectable network interface for outgoing traffic
- - IPv6 support on unix and Windows
+ - IPv6 support on Unix and Windows
  - happy eyeballs dual-stack connects
  - persistent connections
  - SOCKS 4 + 5 support, with or without local name resolving
@@ -31,7 +31,7 @@
  - replaceable memory functions (malloc, free, realloc, etc)
  - asynchronous name resolving (6)
  - both a push and a pull style interface
- - international domain names (11)
+ - international domain names (10)
 
 ## HTTP
 
@@ -51,7 +51,7 @@
  - maximum amount of redirects to follow
  - custom HTTP request
  - cookie get/send fully parsed
- - reads/writes the netscape cookie file format
+ - reads/writes the Netscape cookie file format
  - custom headers (replace/remove internally generated headers)
  - custom user-agent string
  - custom referrer string
@@ -62,7 +62,7 @@
  - retrieve file modification date
  - Content-Encoding support for deflate and gzip
  - "Transfer-Encoding: chunked" support in uploads
- - automatic data compression (12)
+ - automatic data compression (11)
 
 ## HTTPS (1)
 
@@ -78,7 +78,7 @@
 
  - download
  - authentication
- - Kerberos 5 (13)
+ - Kerberos 5 (12)
  - active/passive using PORT, EPRT, PASV or EPSV
  - single file size information (compare to HTTP HEAD)
  - 'type=' URL support
 ## POP3S (1)
 
  - implicit `pop3s://` support
- - explicit "STLS" usage to "upgrade" plain `pop3://` connections to use SSL
+ - explicit `STLS` usage to "upgrade" plain `pop3://` connections to use SSL
  - via http-proxy
 
 ## IMAP
  - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9),
    Kerberos 5 (4) and External.
  - list the folders of a mailbox
- - select a mailbox with support for verifying the UIDVALIDITY
+ - select a mailbox with support for verifying the `UIDVALIDITY`
  - fetch emails with support for specifying the UID and SECTION
  - upload emails via the append command
  - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS,
 
 ## MQTT
 
- - Subscribe to and publish topics using url scheme `mqtt://broker/topic`
+ - Subscribe to and publish topics using URL scheme `mqtt://broker/topic`
 
 ## Footnotes
 
   6. requires c-ares
   7. requires libssh2, libssh or wolfSSH
   8. requires libssh2 or libssh
-  9. requires OpenSSL, GnuTLS, mbedTLS, NSS, yassl, Secure Transport or SSPI
+  9. requires OpenSSL, GnuTLS, mbedTLS, NSS, Secure Transport or SSPI
      (native Windows)
-  10. -
-  11. requires libidn2 or Windows
-  12. requires libz, brotli and/or zstd
-  13. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
+  10. requires libidn2 or Windows
+  11. requires libz, brotli and/or zstd
+  12. requires a GSS-API implementation (such as Heimdal or MIT Kerberos)
index 08fe2a481f640769078a152e933ae152b1f3f32b..f45aaa24cfecbad83e0e934be4a893a75ed4519c 100644 (file)
@@ -8,7 +8,7 @@ This project was started by and has to some extent been pushed forward over
 the years with Daniel Stenberg as the driving force. It matches a standard
 BDFL (Benevolent Dictator For Life) style project.
 
-This setup has been used due to convenience and the fact that is has worked
+This setup has been used due to convenience and the fact that it has worked
 fine this far. It is not because someone thinks of it as a superior project
 leadership model. It will also only continue working as long as Daniel manages
 to listen in to what the project and the general user population wants and
@@ -45,7 +45,7 @@ non-profit organization that holds on to funds for us. This fund is then used
 for paying the curl security bug bounties, to reimburse project related
 expenses etc.
 
-Donations to the project can also come in form of server hosting, providing
+Donations to the project can also come in the form of server hosting, providing
 services and paying for people to work on curl related code etc. Usually, such
 donations are services paid for directly by the sponsors.
 
@@ -116,7 +116,7 @@ admin of all things curl related server stuff, but Björn Stenberg and Linus
 Feltzing serve as backup admins for when Daniel is gone or unable.
 
 The primary server is paid for by Haxx. The machine is physically located in a
-server bunker in Stockholm Sweden, operated by the company Portlane.
+server bunker in Stockholm Sweden, operated by the company Glesys.
 
 The website contents are served to the web via Fastly and Daniel is the
 primary curl contact with Fastly.
@@ -152,7 +152,7 @@ within the area of personal expertise and experience.
 
 ### Merge advice
 
-When you are merging patches/PRs...
+When you are merging patches/pull requests...
 
 - make sure the commit messages follow our template
 - squash patch sets into a few logical commits even if the PR did not, if
index 439f727650ee5b923e0a04fa6292bf789874f016..eabf808106a5d4c5e0193864b47bae3242dcf501 100644 (file)
@@ -84,4 +84,4 @@ the specific implementation. Either way is fine.
 We offer [guidelines](https://curl.se/dev/contribute.html) that are
 suitable to be familiar with before you decide to contribute to curl. If
 you are used to open source development, you will probably not find many
-surprises in there.
+surprises there.
index 2beaa25797d200b55c07de80b26ccc1bf7615e0b..5a142b4b27b414c09021c25e77b878882c5192a8 100644 (file)
@@ -24,7 +24,7 @@ new maintainer of the project.
 HttpGet 0.3 was released in January 1997 and now it accepted HTTP URLs on the
 command line.
 
-HttpGet 1.0 was released on April 8th 1997 with brand new HTTP proxy support.
+HttpGet 1.0 was released on April 8 1997 with brand new HTTP proxy support.
 
 We soon found and fixed support for getting currencies over GOPHER. Once FTP
 download support was added, the name of the project was changed and urlget 2.0
@@ -130,7 +130,7 @@ August: The curl website gets 8000 visits weekly. Curl Corporation contacted
 Daniel to discuss "the name issue". After Daniel's reply, they have never
 since got back in touch again.
 
-September: libcurl 7.9 introduces cookie jar and curl_formadd(). During the
+September: libcurl 7.9 introduces cookie jar and `curl_formadd()`. During the
 forthcoming 7.9.x releases, we introduced the multi interface slowly and
 without many whistles.
 
@@ -145,7 +145,7 @@ June: the curl website gets 13000 visits weekly. curl and libcurl is
 35000 lines of code. Reported successful compiles on more than 40 combinations
 of CPUs and operating systems.
 
-To estimate number of users of the curl tool or libcurl library is next to
+To estimate the number of users of the curl tool or libcurl library is next to
 impossible. Around 5000 downloaded packages each week from the main site gives
 a hint, but the packages are mirrored extensively, bundled with numerous OS
 distributions and otherwise retrieved as part of other software.
@@ -179,16 +179,16 @@ January: curl 7.11.0 introduced large file support.
 June: curl 7.12.0 introduced IDN support. 10 official web mirrors.
 
 This release bumped the major SONAME to 3 due to the removal of the
-curl_formparse() function
+`curl_formparse()` function
 
 August: Curl and libcurl 7.12.1
 
     Public curl release number:                82
-    Releases counted from the very beginning: 109
+    Releases counted from the beginning:      109
     Available command line options:            96
     Available curl_easy_setopt() options:     120
     Number of public functions in libcurl:     36
-    Amount of public website mirrors:         12
+    Amount of public website mirrors:          12
     Number of known libcurl bindings:          26
 
 2005
@@ -288,7 +288,7 @@ April: added the cyassl backend (later renamed to WolfSSL)
  July: Added support for Schannel (native Windows TLS backend) and Darwin SSL
  (Native Mac OS X and iOS TLS backend).
 
- Supports metalink
+ Supports Metalink
 
  October: SSH-agent support.
 
@@ -406,9 +406,27 @@ April: added the cyassl backend (later renamed to WolfSSL)
 
  November: the website moves to curl.se. The website serves 10TB data monthly.
 
+ December: alt-svc support
+
 2021
 ----
 
- February 3: curl 7.75.0 ships with support for Hyper is a HTTP backend
+ February 3: curl 7.75.0 ships with support for Hyper as an HTTP backend
 
  March 31: curl 7.76.0 ships with support for rustls
+
+ July: HSTS is supported
+
+2022
+----
+
+ March: added --json, removed mesalink support
+
+    Public curl releases:         206
+    Command line options:         245
+    curl_easy_setopt() options:   295
+    Public functions in libcurl:  86
+    Contributors:                 2601
+
+ The curl.se website serves 16,500 GB/month over 462M requests, the
+ official docker image has been pulled 4,098,015,431 times.
index f63cfe32301894a27fb45d3f92eefd73f556387c..e541024936e61afafbde4d72ec502f7e435a930b 100644 (file)
@@ -5,7 +5,7 @@ HTTP Strict-Transport-Security. Added as experimental in curl
 
 ## Standard
 
-[HTTP Strict Transport Security](https://tools.ietf.org/html/rfc6797)
+[HTTP Strict Transport Security](https://datatracker.ietf.org/doc/html/rfc6797)
 
 ## Behavior
 
@@ -19,7 +19,7 @@ HTTP-only requests to a host name present in the cache will get internally
  - `CURLOPT_HSTS` - specify file name where to store the HSTS cache on close
   (and possibly read from at startup)
 
-## curl cmdline options
+## curl command line options
 
  - `--hsts [filename]` - enable HSTS, use the file as HSTS cache. If filename
    is `""` (no length) then no file will be used, only in-memory cache.
@@ -32,13 +32,11 @@ For each hsts entry:
 
     [host name] "YYYYMMDD HH:MM:SS"
 
-The `[host name]` is dot-prefixed if it is a includeSubDomain.
+The `[host name]` is dot-prefixed if it includes subdomains.
 
 The time stamp is when the entry expires.
 
-I considered using wget's file format for the HSTS cache. However, they store the time stamp as the epoch (number of seconds since 1970) and I strongly disagree with using that format. Instead I opted to use a format similar to the curl alt-svc cache file format.
-
 ## Possible future additions
 
- - `CURLOPT_HSTS_PRELOAD` - provide a set of preloaded HSTS host names
+ - `CURLOPT_HSTS_PRELOAD` - provide a set of HSTS host names to load first
  - ability to save to something else than a file
index c7c116b1024a574b0f29d520e5f855c9fbb7ee29..939e9fab2ff96987f1e9da363ff435733000ce5c 100644 (file)
@@ -2,7 +2,7 @@
 
 ## Cookie overview
 
-  Cookies are `name=contents` pairs that a HTTP server tells the client to
+  Cookies are `name=contents` pairs that an HTTP server tells the client to
   hold and then the client sends back those to the server on subsequent
   requests to the same domains and paths for which the cookies were set.
 
   In 2011, [RFC6265](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://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00),
+  [proposed](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00),
   and in 2017, another update was
-  [drafted](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01)
+  [drafted](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-alone-01)
   to deprecate modification of 'secure' cookies from non-secure origins. Both
   of these drafts have been incorporated into a proposal to
-  [replace](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-02)
+  [replace](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02)
   RFC6265. Cookie prefixes and secure cookie modification protection has been
   implemented by curl.
 
   sharing the cookies with browsers, only to see browsers move away from that
   format. Modern browsers no longer use it, while curl still does.
 
-  The netscape cookie file format stores one cookie per physical line in the
+  The Netscape cookie file format stores one cookie per physical line in the
   file with a bunch of associated meta data, each field separated with
-  TAB. That file is called the cookiejar in curl terminology.
+  TAB. That file is called the cookie jar in curl terminology.
 
-  When libcurl saves a cookiejar, it creates a file header of its own in which
-  there is a URL mention that will link to the web version of this document.
+  When libcurl saves a cookie jar, it creates a file header of its own in
+  which there is a URL mention that will link to the web version of this
+  document.
 
 ## Cookie file format
 
@@ -74,8 +75,8 @@
   `-b, --cookie`
 
   tell curl a file to read cookies from and start the cookie engine, or if it
-  is not a file it will pass on the given string. -b name=var works and so does
-  -b cookiefile.
+  is not a file it will pass on the given string. `-b name=var` works and so
+  does `-b cookiefile`.
 
   `-j, --junk-session-cookies`
 
   `CURLOPT_COOKIEJAR`
 
   Tell libcurl to activate the cookie engine, and when the easy handle is
-  closed save all known cookies to the given cookiejar file. Write-only.
+  closed save all known cookies to the given cookie jar file. Write-only.
 
   `CURLOPT_COOKIELIST`
 
   Provide detailed information about a single cookie to add to the internal
-  storage of cookies. Pass in the cookie as a HTTP header with all the details
-  set, or pass in a line from a netscape cookie file. This option can also be
-  used to flush the cookies etc.
+  storage of cookies. Pass in the cookie as an HTTP header with all the
+  details set, or pass in a line from a Netscape cookie file. This option can
+  also be used to flush the cookies etc.
+
+  `CURLOPT_COOKIESESSION`
+
+  Tell libcurl to ignore all cookies it is about to load that are session
+  cookies.
 
   `CURLINFO_COOKIELIST`
 
   Extract cookie information from the internal cookie storage as a linked
   list.
 
-## Cookies with javascript
+## Cookies with JavaScript
 
-  These days a lot of the web is built up by javascript. The webbrowser loads
-  complete programs that render the page you see. These javascript programs
+  These days a lot of the web is built up by JavaScript. The web browser loads
+  complete programs that render the page you see. These JavaScript programs
   can also set and access cookies.
 
   Since curl and libcurl are plain HTTP clients without any knowledge of or
-  capability to handle javascript, such cookies will not be detected or used.
+  capability to handle JavaScript, such cookies will not be detected or used.
 
   Often, if you want to mimic what a browser does on such websites, you can
   record web browser HTTP traffic when using such a site and then repeat the
index 27af3129cdcfd65371aec9ae7d14f2d99a08c952..a15bb3108e7ee34524d150d1e5c18f91cbf94a7a 100644 (file)
@@ -35,35 +35,16 @@ Over an https:// URL
 --------------------
 
 If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use
-ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce
-an option that will cause libcurl to fail if not possible to use HTTP/2.
+ALPN to negotiate which protocol to continue with. Possibly introduce an
+option that will cause libcurl to fail if not possible to use HTTP/2.
 
 `CURL_HTTP_VERSION_2TLS` was added in 7.47.0 as a way to ask libcurl to prefer
 HTTP/2 for HTTPS but stick to 1.1 by default for plain old HTTP connections.
 
-ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is
-for a similar purpose, was made prior to ALPN and is used for SPDY so early
-HTTP/2 servers are implemented using NPN before ALPN support is widespread.
+ALPN is the TLS extension that HTTP/2 is expected to use.
 
-`CURLOPT_SSL_ENABLE_ALPN` and `CURLOPT_SSL_ENABLE_NPN` are offered to allow
-applications to explicitly disable ALPN or NPN.
-
-SSL libs
---------
-
-The challenge is the ALPN and NPN support and all our different SSL
-backends. You may need a fairly updated SSL library version for it to provide
-the necessary TLS features. Right now we support:
-
-  - OpenSSL:          ALPN and NPN
-  - libressl:         ALPN and NPN
-  - BoringSSL:        ALPN and NPN
-  - NSS:              ALPN and NPN
-  - GnuTLS:           ALPN
-  - mbedTLS:          ALPN
-  - Schannel:         ALPN
-  - wolfSSL:          ALPN
-  - Secure Transport: ALPN
+`CURLOPT_SSL_ENABLE_ALPN` is offered to allow applications to explicitly
+disable ALPN.
 
 Multiplexing
 ------------
@@ -77,13 +58,13 @@ To take advantage of multiplexing, you need to use the multi interface and set
 attempt to re-use existing HTTP/2 connections and just add a new stream over
 that when doing subsequent parallel requests.
 
-While libcurl sets up a connection to a HTTP server there is a period during
-which it does not know if it can pipeline or do multiplexing and if you add new
-transfers in that period, libcurl will default to start new connections for
-those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0), you
-can ask that a transfer should rather wait and see in case there's a
+While libcurl sets up a connection to an HTTP server there is a period during
+which it does not know if it can pipeline or do multiplexing and if you add
+new transfers in that period, libcurl will default to start new connections
+for those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0),
+you can ask that a transfer should rather wait and see in case there's a
 connection for the same host in progress that might end up being possible to
-multiplex on. It favours keeping the number of connections low to the cost of
+multiplex on. It favors keeping the number of connections low to the cost of
 slightly longer time to first byte transferred.
 
 Applications
@@ -118,4 +99,4 @@ can use that hint to create a new connection asynchronously. For libcurl, we
 may introduce a way to bring such clues to the application and/or let a
 subsequent request use the alternate route automatically.
 
-[Detailed in RFC 7838](https://tools.ietf.org/html/rfc7838)
+[Detailed in RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838)
index 3c713b045ad19cbea8d9d5e7e7c9215f2ddd6e0c..26141bb75f172eb775b5872f28f00c5045df88da 100644 (file)
@@ -5,10 +5,6 @@
 [HTTP/3 Explained](https://http3-explained.haxx.se/en/) - the online free
 book describing the protocols involved.
 
-[QUIC implementation](https://github.com/curl/curl/wiki/QUIC-implementation) -
-the wiki page describing the plan for how to support QUIC and HTTP/3 in curl
-and libcurl.
-
 [quicwg.org](https://quicwg.org/) - home of the official protocol drafts
 
 ## QUIC libraries
@@ -19,13 +15,15 @@ QUIC libraries we are experimenting with:
 
 [quiche](https://github.com/cloudflare/quiche)
 
+[msquic](https://github.com/microsoft/msquic) & [msh3](https://github.com/nibanks/msh3)
+
 ## Experimental
 
 HTTP/3 and QUIC support in curl is considered **EXPERIMENTAL** until further
 notice. It needs to be enabled at build-time.
 
 Further development and tweaking of the HTTP/3 support in curl will happen in
-in the master branch using pull-requests, just like ordinary changes.
+the master branch using pull-requests, just like ordinary changes.
 
 # ngtcp2 version
 
@@ -108,7 +106,48 @@ Build curl
      % git clone https://github.com/curl/curl
      % cd curl
      % autoreconf -fi
-     % ./configure --without-openssl --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
+     % ./configure --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
+     % make
+     % make install
+
+## Build with wolfSSL
+
+Build wolfSSL
+
+     % git clone https://github.com/wolfSSL/wolfssl.git
+     % cd wolfssl
+     % autoreconf -fi
+     % ./configure --prefix=<somewhere1> --enable-quic --enable-session-ticket --enable-earlydata --enable-psk --enable-harden --enable-altcertchains
+     % make
+     % make install
+
+Build nghttp3
+
+     % cd ..
+     % git clone https://github.com/ngtcp2/nghttp3
+     % cd nghttp3
+     % autoreconf -fi
+     % ./configure --prefix=<somewhere2> --enable-lib-only
+     % make
+     % make install
+
+Build ngtcp2 (once https://github.com/ngtcp2/ngtcp2/pull/505 is merged)
+
+     % cd ..
+     % git clone 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
+     % make
+     % make install
+
+Build curl
+
+     % cd ..
+     % git clone https://github.com/curl/curl
+     % cd curl
+     % autoreconf -fi
+     % ./configure --with-wolfssl=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3>
      % make
      % make install
 
@@ -136,6 +175,60 @@ Build curl:
 
  If `make install` results in `Permission denied` error, you will need to prepend it with `sudo`.
 
+# msh3 (msquic) version
+
+## Build Linux (with quictls fork of OpenSSL)
+
+Build msh3:
+
+     % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3
+     % cd msh3 && mkdir build && cd build
+     % cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
+     % cmake --build .
+     % cmake --install .
+
+Build curl:
+
+     % git clone https://github.com/curl/curl
+     % cd curl
+     % autoreconf -fi
+     % ./configure LDFLAGS="-Wl,-rpath,/usr/local/lib" --with-msh3=/usr/local --with-openssl
+     % make
+     % make install
+
+Run from `/usr/local/bin/curl`.
+
+## Build Windows
+
+Build msh3:
+
+     % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3
+     % cd msh3 && mkdir build && cd build
+     % cmake -G 'Visual Studio 17 2022' -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
+     % cmake --build . --config Release
+     % cmake --install . --config Release
+
+**Note** - On Windows, Schannel will be used for TLS support by default. If
+you with to use (the quictls fork of) OpenSSL, specify the `-DQUIC_TLS=openssl`
+option to the generate command above. Also note that OpenSSL brings with it an
+additional set of build dependencies not specified here.
+
+Build curl (in [Visual Studio Command prompt](../winbuild/README.md#open-a-command-prompt)):
+
+     % git clone https://github.com/curl/curl
+     % cd curl/winbuild
+     % nmake /f Makefile.vc mode=dll WITH_MSH3=dll MSH3_PATH="C:/Program Files/msh3" MACHINE=x64
+
+**Note** - If you encounter a build error with `tool_hugehelp.c` being missing,
+rename `tool_hugehelp.c.cvs` in the same directory to `tool_hugehelp.c` and
+then run `nmake` again.
+
+Run in the `C:/Program Files/msh3/lib` directory, copy `curl.exe` to that
+directory, or copy `msquic.dll` and `msh3.dll` from that directory to the
+`curl.exe` directory. For example:
+
+     % C:\Program Files\msh3\lib> F:\curl\builds\libcurl-vc-x64-release-dll-ipv6-sspi-schannel-msh3\bin\curl.exe --http3 https://www.google.com
+
 # `--http3`
 
 Use HTTP/3 directly:
@@ -157,18 +250,18 @@ Check out the [list of known HTTP3 bugs](https://curl.se/docs/knownbugs.html#HTT
 This is not advice on how to run anything in production. This is for
 development and experimenting.
 
-## Preqreqs
+## Prerequisite(s)
 
 An existing local HTTP/1.1 server that hosts files. Preferably also a few huge
-ones.  You can easily create huge local files like `truncate -s=8G 8GB` - they
-are huge but do not occupy that much space on disk since they're just a big
-hole.
+ones. You can easily create huge local files like `truncate -s=8G 8GB` - they
+are huge but do not occupy that much space on disk since they are just big
+holes.
 
 In my Debian setup I just installed **apache2**. It runs on port 80 and has a
 document root in `/var/www/html`. I can get the 8GB file from it with `curl
 localhost/8GB -o dev/null`
 
-In this description we setup and run a HTTP/3 reverse-proxy in front of the
+In this description we setup and run an HTTP/3 reverse-proxy in front of the
 HTTP/1 server.
 
 ## Setup
@@ -198,26 +291,21 @@ that exists in curl's test dir.
 
 ### Caddy
 
-[Install caddy](https://caddyserver.com/docs/install), you can even put the
-single binary in a separate directory if you prefer.
+[Install Caddy](https://caddyserver.com/docs/install). For easiest use, the binary
+should be either in your PATH or your current directory.
 
-In the same directory you put caddy, create a `Caddyfile` with the following
-content to run a HTTP/3 reverse-proxy on port 7443:
+Create a `Caddyfile` with the following content:
 ~~~
-{
-    auto_https disable_redirects
-       servers :7443 {
-               protocol {
-                       experimental_http3
-               }
-       }
-}
-
 localhost:7443 {
-       reverse_proxy localhost:80
+       respond "Hello, world! You're using {http.request.proto}"
 }
 ~~~
 
-Then run caddy:
+Then run Caddy:
 
     ./caddy start
+
+Making requests to `https://localhost:7443` should tell you which protocol is being used.
+
+You can change the hard-coded response to something more useful by replacing `respond`
+with `reverse_proxy` or `file_server`, for example: `reverse_proxy localhost:80`
index 0ca1ce1d4faa8a6b1febf7f8fb8e10e91a7f8c2d..ad23a9039d8bb6b9e1604bdacef12bb8a4915d5b 100644 (file)
@@ -18,17 +18,22 @@ The C API for Hyper is brand new and is still under development.
 
 ## build curl with hyper
 
-Build hyper and enable the C API:
+Since March 3 2022, hyper needs the nightly rustc to build, which you may need
+to install first with:
+
+     % rustup toolchain install nightly
+
+Then build hyper and enable its C API like this:
 
      % git clone https://github.com/hyperium/hyper
      % cd hyper
-     % RUSTFLAGS="--cfg hyper_unstable_ffi" cargo build --features client,http1,http2,ffi
+     % RUSTFLAGS="--cfg hyper_unstable_ffi" cargo +nightly rustc --features client,http1,http2,ffi -Z unstable-options --crate-type cdylib
 
 Build curl to use hyper's C API:
 
      % git clone https://github.com/curl/curl
      % cd curl
-     % ./buildconf
+     % autoreconf -fi
      % ./configure --with-hyper=<hyper dir>
      % make
 
@@ -51,8 +56,9 @@ The hyper backend does not support
 - `CURLOPT_IGNORE_CONTENT_LENGTH`
 - `--raw` and disabling `CURLOPT_HTTP_TRANSFER_DECODING`
 - RTSP
-- hyper is much stricter about what HTTP header contents it allow in requests
+- hyper is much stricter about what HTTP header contents it allows
 - HTTP/0.9
+- HTTP/2 upgrade using HTTP:// URLs. Aka 'h2c'
 
 ## Remaining issues
 
index 6079123bab3abba56f656f13e3e0f8041113463d..801ec44e81e6c2ce2a4c7e1656940224e06ee77c 100644 (file)
@@ -17,7 +17,9 @@ You can download and install curl and libcurl using the [vcpkg](https://github.c
     ./vcpkg integrate install
     vcpkg install curl[tool]
 
-The curl port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
+The curl port in vcpkg is kept up to date by Microsoft team members and
+community contributors. If the version is out of date, please [create an issue
+or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
 
 ## Building from git
 
@@ -84,9 +86,9 @@ work:
 
     CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure
 
-If you have shared SSL libs installed in a directory where your run-time
+If you have shared SSL libs installed in a directory where your runtime
 linker does not find them (which usually causes configure failures), you can
-provide this option to gcc to set a hard-coded path to the run-time linker:
+provide this option to gcc to set a hard-coded path to the runtime linker:
 
     LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure --with-openssl
 
@@ -111,23 +113,22 @@ want to alter it, you can select how to deal with each individual library.
 
 ## Select TLS backend
 
-These options are provided to select TLS backend to use.
+These options are provided to select the TLS backend to use.
 
  - AmiSSL: `--with-amissl`
  - BearSSL: `--with-bearssl`
  - GnuTLS: `--with-gnutls`.
  - mbedTLS: `--with-mbedtls`
- - MesaLink: `--with-mesalink`
  - NSS: `--with-nss`
  - OpenSSL: `--with-openssl` (also for BoringSSL and libressl)
  - rustls: `--with-rustls`
- - schannel: `--with-schannel`
- - secure transport: `--with-secure-transport`
+ - Schannel: `--with-schannel`
+ - Secure Transport: `--with-secure-transport`
  - wolfSSL: `--with-wolfssl`
 
 # Windows
 
-## Building Windows DLLs and C run-time (CRT) linkage issues
+## Building Windows DLLs and C runtime (CRT) linkage issues
 
  As a general rule, building a DLL with static CRT linkage is highly
  discouraged, and intermixing CRTs in the same app is something to avoid at
@@ -141,16 +142,16 @@ These options are provided to select TLS backend to use.
  - [Run-Time Library Compiler Options](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library)
  - [Potential Errors Passing CRT Objects Across DLL Boundaries](https://docs.microsoft.com/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries)
 
-If your app is misbehaving in some strange way, or it is suffering from
-memory corruption, before asking for further help, please try first to
-rebuild every single library your app uses as well as your app using the
-debug multithreaded dynamic C runtime.
+If your app is misbehaving in some strange way, or it is suffering from memory
+corruption, before asking for further help, please try first to rebuild every
+single library your app uses as well as your app using the debug
+multi-threaded dynamic C runtime.
 
  If you get linkage errors read section 5.7 of the FAQ document.
 
-## MingW32
+## MinGW32
 
-Make sure that MinGW32's bin dir is in the search path, for example:
+Make sure that MinGW32's bin directory is in the search path, for example:
 
 ```cmd
 set PATH=c:\mingw32\bin;%PATH%
@@ -171,31 +172,34 @@ adjust as necessary. It is also possible to override these paths with
 environment variables, for example:
 
 ```cmd
-set ZLIB_PATH=c:\zlib-1.2.8
-set OPENSSL_PATH=c:\openssl-1.0.2c
-set LIBSSH2_PATH=c:\libssh2-1.6.0
+set ZLIB_PATH=c:\zlib-1.2.12
+set OPENSSL_PATH=c:\openssl-3.0.5
+set LIBSSH2_PATH=c:\libssh2-1.10.0
 ```
 
-It is also possible to build with other LDAP SDKs than MS LDAP; currently
-it is possible to build with native Win32 OpenLDAP, or with the Novell CLDAP
-SDK. If you want to use these you need to set these vars:
+It is also possible to build with other LDAP installations than MS LDAP;
+currently it is possible to build with native Win32 OpenLDAP, or with the
+*Novell CLDAP* SDK. If you want to use these you need to set these vars:
 
 ```cmd
-set LDAP_SDK=c:\openldap
-set USE_LDAP_OPENLDAP=1
+set CPPFLAGS=-Ic:/openldap/include -DCURL_HAS_OPENLDAP_LDAPSDK
+set LDFLAGS=-Lc:/openldap/lib
+set LIBS=-lldap -llber
 ```
 
 or for using the Novell SDK:
 
 ```cmd
-set USE_LDAP_NOVELL=1
+set CPPFLAGS=-Ic:/openldapsdk/inc -DCURL_HAS_NOVELL_LDAPSDK
+set LDFLAGS=-Lc:/openldapsdk/lib/mscvc
+set LIBS=-lldapsdk -lldapssl -lldapx
 ```
 
 If you want to enable LDAPS support then set LDAPS=1.
 
 ## Cygwin
 
-Almost identical to the unix installation. Run the configure script in the
+Almost identical to the Unix installation. Run the configure script in the
 curl source tree root with `sh configure`. Make sure you have the `sh`
 executable in `/bin/` or you will see the configure fail toward the end.
 
@@ -208,7 +212,7 @@ environment, therefore, you cannot use the various disable-protocol options of
 the configure utility on this platform.
 
 You can use specific defines to disable specific protocols and features. See
-[CURL-DISABLE.md](CURL-DISABLE.md) for the full list.
+[CURL-DISABLE](CURL-DISABLE.md) for the full list.
 
 If you want to set any of these defines you have the following options:
 
@@ -218,25 +222,23 @@ If you want to set any of these defines you have the following options:
  - Modify the "Preprocessor Definitions" in the libcurl project
 
 Note: The pre-processor settings can be found using the Visual Studio IDE
-under "Project -> Settings -> C/C++ -> General" in VC6 and "Project ->
-Properties -> Configuration Properties -> C/C++ -> Preprocessor" in later
-versions.
+under "Project -> Properties -> Configuration Properties -> C/C++ ->
+Preprocessor".
 
 ## Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds
 
 In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is
-necessary to make definition of preprocessor symbol `USE_LWIPSOCK` visible to
-libcurl and curl compilation processes. To set this definition you have the
-following alternatives:
+necessary to make the definition of the preprocessor symbol `USE_LWIPSOCK`
+visible to libcurl and curl compilation processes. To set this definition you
+have the following alternatives:
 
  - Modify `lib/config-win32.h` and `src/config-win32.h`
  - Modify `winbuild/Makefile.vc`
  - Modify the "Preprocessor Definitions" in the libcurl project
 
 Note: The pre-processor settings can be found using the Visual Studio IDE
-under "Project -> Settings -> C/C++ -> General" in VC6 and "Project ->
-Properties -> Configuration Properties -> C/C++ -> Preprocessor" in later
-versions.
+under "Project -> Properties -> Configuration Properties -> C/C++ ->
+Preprocessor".
 
 Once that libcurl has been built with BSD-style lwIP TCP/IP stack support, in
 order to use it with your program it is mandatory that your program includes
@@ -244,13 +246,11 @@ lwIP header file `<lwip/opt.h>` (or another lwIP header that includes this)
 before including any libcurl header. Your program does not need the
 `USE_LWIPSOCK` preprocessor definition which is for libcurl internals only.
 
-Compilation has been verified with [lwIP
-1.4.0](https://download.savannah.gnu.org/releases/lwip/lwip-1.4.0.zip) and
-[contrib-1.4.0](https://download.savannah.gnu.org/releases/lwip/contrib-1.4.0.zip).
+Compilation has been verified with lwIP 1.4.0.
 
 This BSD-style lwIP TCP/IP stack support must be considered experimental given
 that it has been verified that lwIP 1.4.0 still needs some polish, and libcurl
-might yet need some additional adjustment, caveat emptor.
+might yet need some additional adjustment.
 
 ## Important static libcurl usage note
 
@@ -270,8 +270,7 @@ Windows you should choose another SSL backend such as OpenSSL.
 
 On modern Apple operating systems, curl can be built to use Apple's SSL/TLS
 implementation, Secure Transport, instead of OpenSSL. To build with Secure
-Transport for SSL/TLS, use the configure option `--with-secure-transport`. (It
-is not necessary to use the option `--without-openssl`.)
+Transport for SSL/TLS, use the configure option `--with-secure-transport`.
 
 When Secure Transport is in use, the curl options `--cacert` and `--capath`
 and their libcurl equivalents, will be ignored, because Secure Transport uses
@@ -324,11 +323,12 @@ make -j8
 make install
 ```
 
-In all above, the built libraries and executables can be found in `artifacts` folder.
+In all above, the built libraries and executables can be found in the
+`artifacts` folder.
 
 # Android
 
-When building curl for Android it's recommended to use a Linux environment
+When building curl for Android it's recommended to use a Linux/macOS environment
 since using curl's `configure` script is the easiest way to build curl
 for Android. Before you can build curl for Android, you need to install the
 Android NDK first. This can be done using the SDK Manager that is part of
@@ -338,16 +338,16 @@ launching `configure`. On macOS, those variables could look like this to compile
 for `aarch64` and API level 29:
 
 ```bash
-export NDK=~/Library/Android/sdk/ndk/20.1.5948944
-export HOST_TAG=darwin-x86_64
-export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG
-export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
-export AS=$TOOLCHAIN/bin/aarch64-linux-android-as
-export CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang
-export CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++
-export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
-export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
-export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
+export ANDROID_NDK_HOME=~/Library/Android/sdk/ndk/25.1.8937393 # Point into your NDK.
+export HOST_TAG=darwin-x86_64 # Same tag for Apple Silicon. Other OS values here: https://developer.android.com/ndk/guides/other_build_systems#overview
+export TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$HOST_TAG
+export AR=$TOOLCHAIN/bin/llvm-ar
+export AS=$TOOLCHAIN/bin/llvm-as
+export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
+export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
+export LD=$TOOLCHAIN/bin/ld
+export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
+export STRIP=$TOOLCHAIN/bin/llvm-strip
 ```
 
 When building on Linux or targeting other API levels or architectures, you need
@@ -363,11 +363,10 @@ OpenSSL, follow the OpenSSL build instructions and then install `libssl.a` and
 `$TOOLCHAIN/sysroot/usr/include`. Now you can build curl for Android using
 OpenSSL like this:
 
-    ./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sysroot/usr"
-
-Note, however, that you must target at least Android M (API level 23) or `configure`
-will not be able to detect OpenSSL since `stderr` (and the like) were not defined
-before Android M.
+```bash
+LIBS="-lssl -lcrypto -lc++" # For OpenSSL/BoringSSL. In general, you'll need to the SSL/TLS layer's transtive dependencies if you're linking statically.
+./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sysroot/usr"
+```
 
 # IBM i
 
@@ -385,12 +384,12 @@ For IBM i (formerly OS/400), you can use curl in two different ways:
 There are some additional limitations and quirks with curl on this platform;
 they affect both environments.
 
-## Multithreading notes
+## Multi-threading notes
 
 By default, jobs in IBM i will not start with threading enabled. (Exceptions
 include interactive PASE sessions started by `QP2TERM` or SSH.) If you use
-curl in an environment without threading when options like async DNS were
-enabled, you will get messages like:
+curl in an environment without threading when options like asynchronous DNS
+were enabled, you will get messages like:
 
 ```
 getaddrinfo() thread failed to start
@@ -410,9 +409,9 @@ Download and unpack the curl package.
 
 Set environment variables to point to the cross-compile toolchain and call
 configure with any options you need. Be sure and specify the `--host` and
-`--build` parameters at configuration time. The following script is an
-example of cross-compiling for the IBM 405GP PowerPC processor using the
-toolchain from MonteVista for Hardhat Linux.
+`--build` parameters at configuration time. The following script is an example
+of cross-compiling for the IBM 405GP PowerPC processor using the toolchain on
+Linux.
 
 ```bash
 #! /bin/sh
@@ -464,7 +463,7 @@ know your application is not going to need. Besides specifying the
 use, here are some other flags that can reduce the size of the library by
 disabling support for some feature:
 
- - `--disable-alt-svc` (HTTP Alt-Srv)
+ - `--disable-alt-svc` (HTTP Alt-Svc)
  - `--disable-ares` (the C-ARES DNS library)
  - `--disable-cookies` (HTTP cookies)
  - `--disable-crypto-auth` (cryptographic authentication)
@@ -481,8 +480,8 @@ disabling support for some feature:
  - `--disable-ntlm-wb` (NTLM WinBind)
  - `--disable-progress-meter` (graphical progress meter in library)
  - `--disable-proxy` (HTTP and SOCKS proxies)
- - `--disable-pthreads` (multithreading)
- - `--disable-socketpair` (socketpair for async name resolving)
+ - `--disable-pthreads` (multi-threading)
+ - `--disable-socketpair` (socketpair for asynchronous name resolving)
  - `--disable-threaded-resolver`  (threaded name resolver)
  - `--disable-tls-srp` (Secure Remote Password authentication for TLS)
  - `--disable-unix-sockets` (UNIX sockets)
@@ -525,11 +524,11 @@ the `--disable` statements suggested above. Use will cause tests relying on
 those features to fail. The test harness can be manually forced to skip the
 relevant tests by specifying certain key words on the `runtests.pl` command
 line. Following is a list of appropriate key words for those configure options
-that aren't automatically detected:
+that are not automatically detected:
 
  - `--disable-cookies`          !cookies
- - `--disable-dateparse`        !RETRY-AFTER !CURLOPT_TIMECONDITION !CURLINFO_FILETIME !If-Modified-Since !getdate !-z
- - `--disable-libcurl-option`   !--libcurl
+ - `--disable-dateparse`        !RETRY-AFTER !`CURLOPT_TIMECONDITION` !`CURLINFO_FILETIME` !`If-Modified-Since` !`curl_getdate` !`-z`
+ - `--disable-libcurl-option`   !`--libcurl`
  - `--disable-verbose`          !verbose\ logs
 
 # PORTS
index dbae5a223516063f08e8561b9cc4d9007b4a3d64..30cce8c981af88f4308461cc7e53ba84942b5c28 100644 (file)
@@ -1,77 +1,10 @@
-curl internals
-==============
+# curl internals
 
- - [Intro](#intro)
- - [git](#git)
- - [Portability](#Portability)
- - [Windows vs Unix](#winvsunix)
- - [Library](#Library)
-   - [`Curl_connect`](#Curl_connect)
-   - [`multi_do`](#multi_do)
-   - [`Curl_readwrite`](#Curl_readwrite)
-   - [`multi_done`](#multi_done)
-   - [`Curl_disconnect`](#Curl_disconnect)
- - [HTTP(S)](#http)
- - [FTP](#ftp)
- - [Kerberos](#kerberos)
- - [TELNET](#telnet)
- - [FILE](#file)
- - [SMB](#smb)
- - [LDAP](#ldap)
- - [Email](#email)
- - [General](#general)
- - [Persistent Connections](#persistent)
- - [multi interface/non-blocking](#multi)
- - [SSL libraries](#ssl)
- - [Library Symbols](#symbols)
- - [Return Codes and Informationals](#returncodes)
- - [AP/ABI](#abi)
- - [Client](#client)
- - [Memory Debugging](#memorydebug)
- - [Test Suite](#test)
- - [Asynchronous name resolves](#asyncdns)
-   - [c-ares](#cares)
- - [`curl_off_t`](#curl_off_t)
- - [curlx](#curlx)
- - [Content Encoding](#contentencoding)
- - [`hostip.c` explained](#hostip)
- - [Track Down Memory Leaks](#memoryleak)
- - [`multi_socket`](#multi_socket)
- - [Structs in libcurl](#structs)
-   - [Curl_easy](#Curl_easy)
-   - [connectdata](#connectdata)
-   - [Curl_multi](#Curl_multi)
-   - [Curl_handler](#Curl_handler)
-   - [conncache](#conncache)
-   - [Curl_share](#Curl_share)
-   - [CookieInfo](#CookieInfo)
+The canonical libcurl internals documentation is now in the [everything
+curl](https://everything.curl.dev/internals) book. This file lists supported
+versions of libs, tools and operating systems.
 
-<a name="intro"></a>
-Intro
-=====
-
- This project is split in two. The library and the client. The client part
- uses the library, but the library is designed to allow other applications to
- use it.
-
- The largest amount of code and complexity is in the library part.
-
-
-<a name="git"></a>
-git
-===
-
- All changes to the sources are committed to the git repository as soon as
- they are somewhat verified to work. Changes shall be committed as independently
- as possible so that individual changes can be easily spotted and tracked
- afterwards.
-
- Tagging shall be used extensively, and by the time we release new archives we
- should tag the sources with a name similar to the released version number.
-
-<a name="Portability"></a>
-Portability
-===========
+## Portability
 
  We write curl and libcurl to compile with C89 compilers. On 32-bit and up
  machines. Most of libcurl assumes more or less POSIX compliance but that is
@@ -81,8 +14,9 @@ Portability
  want it to remain functional and buildable with these and later versions
  (older versions may still work but is not what we work hard to maintain):
 
-Dependencies
-------------
+## Dependencies
+
+ We aim to support these or later versions.
 
  - OpenSSL      0.9.7
  - GnuTLS       3.1.10
@@ -91,7 +25,7 @@ Dependencies
  - c-ares       1.16.0
  - libidn2      2.0.0
  - wolfSSL      2.0.0
- - openldap     2.0
+ - OpenLDAP     2.0
  - MIT Kerberos 1.2.4
  - GSKit        V5R3M0
  - NSS          3.14.x
@@ -99,12 +33,11 @@ Dependencies
  - nghttp2      1.12.0
  - WinSock      2.2 (on Windows 95+ and Windows CE .NET 4.1+)
 
-Operating Systems
------------------
+## Operating Systems
 
  On systems where configure runs, we aim at working on them all - if they have
- a suitable C compiler. On systems that do not run configure, we strive to keep
- curl running correctly on:
+ a suitable C compiler. On systems that do not run configure, we strive to
keep curl running correctly on:
 
  - Windows      98
  - AS/400       V5R3M0
@@ -112,8 +45,7 @@ Operating Systems
  - Windows CE   ?
  - TPF          ?
 
-Build tools
------------
+## Build tools
 
  When writing code (mostly for generating stuff included in release tarballs)
  we use a few "build tools" and we make sure that we remain functional with
@@ -126,981 +58,12 @@ Build tools
  - perl         5.004
  - roffit       0.5
  - groff        ? (any version that supports `groff -Tps -man [in] [out]`)
- - ps2pdf (gs)  ?
-
-<a name="winvsunix"></a>
-Windows vs Unix
-===============
-
- There are a few differences in how to program curl the Unix way compared to
- the Windows way. Perhaps the four most notable details are:
-
- 1. Different function names for socket operations.
-
-   In curl, this is solved with defines and macros, so that the source looks
-   the same in all places except for the header file that defines them. The
-   macros in use are `sclose()`, `sread()` and `swrite()`.
-
- 2. Windows requires a couple of init calls for the socket stuff.
-
-   That is taken care of by the `curl_global_init()` call, but if other libs
-   also do it etc there might be reasons for applications to alter that
-   behavior.
-
-   We require WinSock version 2.2 and load this version during global init.
-
- 3. The file descriptors for network communication and file operations are
-    not as easily interchangeable as in Unix.
-
-   We avoid this by not trying any funny tricks on file descriptors.
-
- 4. When writing data to stdout, Windows makes end-of-lines the DOS way, thus
-    destroying binary data, although you do want that conversion if it is
-    text coming through... (sigh)
-
-   We set stdout to binary under windows
-
- Inside the source code, We make an effort to avoid `#ifdef [Your OS]`. All
- conditionals that deal with features *should* instead be in the format
- `#ifdef HAVE_THAT_WEIRD_FUNCTION`. Since Windows cannot run configure scripts,
- we maintain a `curl_config-win32.h` file in lib directory that is supposed to
- look exactly like a `curl_config.h` file would have looked like on a Windows
- machine.
-
- Generally speaking: always remember that this will be compiled on dozens of
- operating systems. Do not walk on the edge.
-
-<a name="Library"></a>
-Library
-=======
-
- (See [Structs in libcurl](#structs) for the separate section describing all
- major internal structs and their purposes.)
-
- There are plenty of entry points to the library, namely each publicly defined
- function that libcurl offers to applications. All of those functions are
- rather small and easy-to-follow. All the ones prefixed with `curl_easy` are
- put in the `lib/easy.c` file.
-
- `curl_global_init()` and `curl_global_cleanup()` should be called by the
- application to initialize and clean up global stuff in the library. As of
- today, it can handle the global SSL initialization if SSL is enabled and it
- can initialize the socket layer on Windows machines. libcurl itself has no
- "global" scope.
-
- All printf()-style functions use the supplied clones in `lib/mprintf.c`. This
- makes sure we stay absolutely platform independent.
-
- [ `curl_easy_init()`][2] allocates an internal struct and makes some
- initializations. The returned handle does not reveal internals. This is the
- `Curl_easy` struct which works as an "anchor" struct for all `curl_easy`
- functions. All connections performed will get connect-specific data allocated
- that should be used for things related to particular connections/requests.
-
- [`curl_easy_setopt()`][1] takes three arguments, where the option stuff must
- be passed in pairs: the parameter-ID and the parameter-value. The list of
- options is documented in the man page. This function mainly sets things in
- the `Curl_easy` struct.
-
- `curl_easy_perform()` is just a wrapper function that makes use of the multi
- API. It basically calls `curl_multi_init()`, `curl_multi_add_handle()`,
- `curl_multi_wait()`, and `curl_multi_perform()` until the transfer is done
- and then returns.
-
- Some of the most important key functions in `url.c` are called from
- `multi.c` when certain key steps are to be made in the transfer operation.
-
-<a name="Curl_connect"></a>
-Curl_connect()
---------------
-
-   Analyzes the URL, it separates the different components and connects to the
-   remote host. This may involve using a proxy and/or using SSL. The
-   `Curl_resolv()` function in `lib/hostip.c` is used for looking up host
-   names (it does then use the proper underlying method, which may vary
-   between platforms and builds).
-
-   When `Curl_connect` is done, we are connected to the remote site. Then it
-   is time to tell the server to get a document/file. `Curl_do()` arranges
-   this.
-
-   This function makes sure there's an allocated and initiated `connectdata`
-   struct that is used for this particular connection only (although there may
-   be several requests performed on the same connect). A bunch of things are
-   initialized/inherited from the `Curl_easy` struct.
-
-<a name="multi_do"></a>
-multi_do()
----------
-
-   `multi_do()` makes sure the proper protocol-specific function is called.
-   The functions are named after the protocols they handle.
-
-   The protocol-specific functions of course deal with protocol-specific
-   negotiations and setup. When they are ready to start the actual file
-   transfer they call the `Curl_setup_transfer()` function (in
-   `lib/transfer.c`) to setup the transfer and returns.
-
-   If this DO function fails and the connection is being re-used, libcurl will
-   then close this connection, setup a new connection and re-issue the DO
-   request on that. This is because there is no way to be perfectly sure that
-   we have discovered a dead connection before the DO function and thus we
-   might wrongly be re-using a connection that was closed by the remote peer.
-
-<a name="Curl_readwrite"></a>
-Curl_readwrite()
-----------------
-
-   Called during the transfer of the actual protocol payload.
-
-   During transfer, the progress functions in `lib/progress.c` are called at
-   frequent intervals (or at the user's choice, a specified callback might get
-   called). The speedcheck functions in `lib/speedcheck.c` are also used to
-   verify that the transfer is as fast as required.
-
-<a name="multi_done"></a>
-multi_done()
------------
-
-   Called after a transfer is done. This function takes care of everything
-   that has to be done after a transfer. This function attempts to leave
-   matters in a state so that `multi_do()` should be possible to call again on
-   the same connection (in a persistent connection case). It might also soon
-   be closed with `Curl_disconnect()`.
-
-<a name="Curl_disconnect"></a>
-Curl_disconnect()
------------------
-
-   When doing normal connections and transfers, no one ever tries to close any
-   connections so this is not normally called when `curl_easy_perform()` is
-   used. This function is only used when we are certain that no more transfers
-   are going to be made on the connection. It can be also closed by force, or
-   it can be called to make sure that libcurl does not keep too many
-   connections alive at the same time.
-
-   This function cleans up all resources that are associated with a single
-   connection.
-
-<a name="http"></a>
-HTTP(S)
-=======
-
- HTTP offers a lot and is the protocol in curl that uses the most lines of
- code. There is a special file `lib/formdata.c` that offers all the
- multipart post functions.
-
- base64-functions for user+password stuff (and more) is in `lib/base64.c`
- and all functions for parsing and sending cookies are found in
- `lib/cookie.c`.
-
- HTTPS uses in almost every case the same procedure as HTTP, with only two
- exceptions: the connect procedure is different and the function used to read
- or write from the socket is different, although the latter fact is hidden in
- the source by the use of `Curl_read()` for reading and `Curl_write()` for
- writing data to the remote server.
-
- `http_chunks.c` contains functions that understands HTTP 1.1 chunked transfer
- encoding.
-
- An interesting detail with the HTTP(S) request, is the `Curl_add_buffer()`
- series of functions we use. They append data to one single buffer, and when
- the building is finished the entire request is sent off in one single write.
- This is done this way to overcome problems with flawed firewalls and lame
- servers.
-
-<a name="ftp"></a>
-FTP
-===
-
- The `Curl_if2ip()` function can be used for getting the IP number of a
- specified network interface, and it resides in `lib/if2ip.c`.
-
- `Curl_ftpsendf()` is used for sending FTP commands to the remote server. It
- was made a separate function to prevent us programmers from forgetting that
- they must be CRLF terminated. They must also be sent in one single `write()`
- to make firewalls and similar happy.
-
-<a name="kerberos"></a>
-Kerberos
-========
-
- Kerberos support is mainly in `lib/krb5.c` but also `curl_sasl_sspi.c` and
- `curl_sasl_gssapi.c` for the email protocols and `socks_gssapi.c` and
- `socks_sspi.c` for SOCKS5 proxy specifics.
-
-<a name="telnet"></a>
-TELNET
-======
-
- Telnet is implemented in `lib/telnet.c`.
-
-<a name="file"></a>
-FILE
-====
-
- The `file://` protocol is dealt with in `lib/file.c`.
-
-<a name="smb"></a>
-SMB
-===
 
- The `smb://` protocol is dealt with in `lib/smb.c`.
-
-<a name="ldap"></a>
-LDAP
-====
-
- Everything LDAP is in `lib/ldap.c` and `lib/openldap.c`.
-
-<a name="email"></a>
-Email
-======
-
- The email related source code is in `lib/imap.c`, `lib/pop3.c` and
- `lib/smtp.c`.
-
-<a name="general"></a>
-General
-=======
-
- URL encoding and decoding, called escaping and unescaping in the source code,
- is found in `lib/escape.c`.
-
- While transferring data in `Transfer()` a few functions might get used.
- `curl_getdate()` in `lib/parsedate.c` is for HTTP date comparisons (and
- more).
-
- `lib/getenv.c` offers `curl_getenv()` which is for reading environment
- variables in a neat platform independent way. That is used in the client, but
- also in `lib/url.c` when checking the proxy environment variables. Note that
- contrary to the normal unix `getenv()`, this returns an allocated buffer that
- must be `free()`ed after use.
-
- `lib/netrc.c` holds the `.netrc` parser.
-
- `lib/timeval.c` features replacement functions for systems that do not have
- `gettimeofday()` and a few support functions for timeval conversions.
-
- A function named `curl_version()` that returns the full curl version string
- is found in `lib/version.c`.
-
-<a name="persistent"></a>
-Persistent Connections
-======================
-
- The persistent connection support in libcurl requires some considerations on
- how to do things inside of the library.
-
- - The `Curl_easy` struct returned in the [`curl_easy_init()`][2] call
-   must never hold connection-oriented data. It is meant to hold the root data
-   as well as all the options etc that the library-user may choose.
-
- - The `Curl_easy` struct holds the "connection cache" (an array of
-   pointers to `connectdata` structs).
-
- - This enables the 'curl handle' to be reused on subsequent transfers.
-
- - When libcurl is told to perform a transfer, it first checks for an already
-   existing connection in the cache that we can use. Otherwise it creates a
-   new one and adds that to the cache. If the cache is full already when a new
-   connection is added, it will first close the oldest unused one.
-
- - When the transfer operation is complete, the connection is left
-   open. Particular options may tell libcurl not to, and protocols may signal
-   closure on connections and then they will not be kept open, of course.
-
- - When `curl_easy_cleanup()` is called, we close all still opened connections,
-   unless of course the multi interface "owns" the connections.
-
- The curl handle must be re-used in order for the persistent connections to
- work.
-
-<a name="multi"></a>
-multi interface/non-blocking
-============================
-
- The multi interface is a non-blocking interface to the library. To make that
- interface work as well as possible, no low-level functions within libcurl
- must be written to work in a blocking manner. (There are still a few spots
- violating this rule.)
-
- One of the primary reasons we introduced c-ares support was to allow the name
- resolve phase to be perfectly non-blocking as well.
-
- The FTP and the SFTP/SCP protocols are examples of how we adapt and adjust
- the code to allow non-blocking operations even on multi-stage command-
- response protocols. They are built around state machines that return when
- they would otherwise block waiting for data. The DICT, LDAP and TELNET
- protocols are crappy examples and they are subject for rewrite in the future
- to better fit the libcurl protocol family.
-
-<a name="ssl"></a>
-SSL libraries
-=============
-
- Originally libcurl supported SSLeay for SSL/TLS transports, but that was then
- extended to its successor OpenSSL but has since also been extended to several
- other SSL/TLS libraries and we expect and hope to further extend the support
- in future libcurl versions.
-
- To deal with this internally in the best way possible, we have a generic SSL
- function API as provided by the `vtls/vtls.[ch]` system, and they are the only
- SSL functions we must use from within libcurl. vtls is then crafted to use
- the appropriate lower-level function calls to whatever SSL library that is in
- use. For example `vtls/openssl.[ch]` for the OpenSSL library.
-
-<a name="symbols"></a>
 Library Symbols
 ===============
 
  All symbols used internally in libcurl must use a `Curl_` prefix if they are
  used in more than a single file. Single-file symbols must be made static.
- Public ("exported") symbols must use a `curl_` prefix. (There are exceptions,
- but they are to be changed to follow this pattern in future versions.) Public
- API functions are marked with `CURL_EXTERN` in the public header files so
- that all others can be hidden on platforms where this is possible.
-
-<a name="returncodes"></a>
-Return Codes and Informationals
-===============================
-
- I have made things simple. Almost every function in libcurl returns a CURLcode,
- that must be `CURLE_OK` if everything is OK or otherwise a suitable error
- code as the `curl/curl.h` include file defines. The place that detects an
- error must use the `Curl_failf()` function to set the human-readable error
- description.
-
- In aiding the user to understand what's happening and to debug curl usage, we
- must supply a fair number of informational messages by using the
- `Curl_infof()` function. Those messages are only displayed when the user
- explicitly asks for them. They are best used when revealing information that
- is not otherwise obvious.
-
-<a name="abi"></a>
-API/ABI
-=======
-
- We make an effort to not export or show internals or how internals work, as
- that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI
- for our promise to users.
-
-<a name="client"></a>
-Client
-======
-
- `main()` resides in `src/tool_main.c`.
-
- `src/tool_hugehelp.c` is automatically generated by the `mkhelp.pl` perl
- script to display the complete "manual" and the `src/tool_urlglob.c` file
- holds the functions used for the URL-"globbing" support. Globbing in the
- sense that the `{}` and `[]` expansion stuff is there.
-
- The client mostly sets up its `config` struct properly, then
- it calls the `curl_easy_*()` functions of the library and when it gets back
- control after the `curl_easy_perform()` it cleans up the library, checks
- status and exits.
-
- When the operation is done, the `ourWriteOut()` function in `src/writeout.c`
- may be called to report about the operation. That function is mostly using the
- `curl_easy_getinfo()` function to extract useful information from the curl
- session.
-
- It may loop and do all this several times if many URLs were specified on the
- command line or config file.
-
-<a name="memorydebug"></a>
-Memory Debugging
-================
-
- The file `lib/memdebug.c` contains debug-versions of a few functions.
- Functions such as `malloc()`, `free()`, `fopen()`, `fclose()`, etc that
- somehow deal with resources that might give us problems if we "leak" them.
- The functions in the memdebug system do nothing fancy, they do their normal
- function and then log information about what they just did. The logged data
- can then be analyzed after a complete session,
-
- `memanalyze.pl` is the perl script present in `tests/` that analyzes a log
- file generated by the memory tracking system. It detects if resources are
- allocated but never freed and other kinds of errors related to resource
- management.
-
- Internally, definition of preprocessor symbol `DEBUGBUILD` restricts code
- which is only compiled for debug enabled builds. And symbol `CURLDEBUG` is
- used to differentiate code which is _only_ used for memory
- tracking/debugging.
-
- Use `-DCURLDEBUG` when compiling to enable memory debugging, this is also
- switched on by running configure with `--enable-curldebug`. Use
- `-DDEBUGBUILD` when compiling to enable a debug build or run configure with
- `--enable-debug`.
-
- `curl --version` will list 'Debug' feature for debug enabled builds, and
- will list 'TrackMemory' feature for curl debug memory tracking capable
- builds. These features are independent and can be controlled when running
- the configure script. When `--enable-debug` is given both features will be
- enabled, unless some restriction prevents memory tracking from being used.
-
-<a name="test"></a>
-Test Suite
-==========
-
- The test suite is placed in its own subdirectory directly off the root in the
- curl archive tree, and it contains a bunch of scripts and a lot of test case
- data.
-
- The main test script is `runtests.pl` that will invoke test servers like
- `httpserver.pl` and `ftpserver.pl` before all the test cases are performed.
- The test suite currently only runs on Unix-like platforms.
-
- you will find a description of the test suite in the `tests/README` file, and
- the test case data files in the `tests/FILEFORMAT` file.
-
- The test suite automatically detects if curl was built with the memory
- debugging enabled, and if it was, it will detect memory leaks, too.
-
-<a name="asyncdns"></a>
-Asynchronous name resolves
-==========================
-
- libcurl can be built to do name resolves asynchronously, using either the
- normal resolver in a threaded manner or by using c-ares.
-
-<a name="cares"></a>
-[c-ares][3]
-------
-
-### Build libcurl to use a c-ares
-
-1. ./configure --enable-ares=/path/to/ares/install
-2. make
-
-### c-ares on win32
-
- First I compiled c-ares. I changed the default C runtime library to be the
- single-threaded rather than the multi-threaded (this seems to be required to
- prevent linking errors later on). Then I simply build the areslib project
- (the other projects adig/ahost seem to fail under MSVC).
-
- Next was libcurl. I opened `lib/config-win32.h` and I added a:
- `#define USE_ARES 1`
-
- Next thing I did was I added the path for the ares includes to the include
- path, and the libares.lib to the libraries.
-
- Lastly, I also changed libcurl to be single-threaded rather than
- multi-threaded, again this was to prevent some duplicate symbol errors. I'm
- not sure why I needed to change everything to single-threaded, but when I
- did not I got redefinition errors for several CRT functions (`malloc()`,
- `stricmp()`, etc.)
-
-<a name="curl_off_t"></a>
-`curl_off_t`
-==========
-
- `curl_off_t` is a data type provided by the external libcurl include
- headers. It is the type meant to be used for the [`curl_easy_setopt()`][1]
- options that end with LARGE. The type is 64-bit large on most modern
- platforms.
-
-<a name="curlx"></a>
-curlx
-=====
-
- The libcurl source code offers a few functions by source only. They are not
- part of the official libcurl API, but the source files might be useful for
- others so apps can optionally compile/build with these sources to gain
- additional functions.
-
- We provide them through a single header file for easy access for apps:
- `curlx.h`
-
-`curlx_strtoofft()`
--------------------
-   A macro that converts a string containing a number to a `curl_off_t` number.
-   This might use the `curlx_strtoll()` function which is provided as source
-   code in strtoofft.c. Note that the function is only provided if no
-   `strtoll()` (or equivalent) function exist on your platform. If `curl_off_t`
-   is only a 32-bit number on your platform, this macro uses `strtol()`.
-
-Future
-------
-
- Several functions will be removed from the public `curl_` name space in a
- future libcurl release. They will then only become available as `curlx_`
- functions instead. To make the transition easier, we already today provide
- these functions with the `curlx_` prefix to allow sources to be built
- properly with the new function names. The concerned functions are:
-
- - `curlx_getenv`
- - `curlx_strequal`
- - `curlx_strnequal`
- - `curlx_mvsnprintf`
- - `curlx_msnprintf`
- - `curlx_maprintf`
- - `curlx_mvaprintf`
- - `curlx_msprintf`
- - `curlx_mprintf`
- - `curlx_mfprintf`
- - `curlx_mvsprintf`
- - `curlx_mvprintf`
- - `curlx_mvfprintf`
-
-<a name="contentencoding"></a>
-Content Encoding
-================
-
-## About content encodings
-
- [HTTP/1.1][4] specifies that a client may request that a server encode its
- response. This is usually used to compress a response using one (or more)
- encodings from a set of commonly available compression techniques. These
- schemes include `deflate` (the zlib algorithm), `gzip`, `br` (brotli) and
- `compress`. A client requests that the server perform an encoding by including
- an `Accept-Encoding` header in the request document. The value of the header
- should be one of the recognized tokens `deflate`, ... (there's a way to
- register new schemes/tokens, see sec 3.5 of the spec). A server MAY honor
- the client's encoding request. When a response is encoded, the server
- includes a `Content-Encoding` header in the response. The value of the
- `Content-Encoding` header indicates which encodings were used to encode the
- data, in the order in which they were applied.
-
- It's also possible for a client to attach priorities to different schemes so
- that the server knows which it prefers. See sec 14.3 of RFC 2616 for more
- information on the `Accept-Encoding` header. See sec
- [3.1.2.2 of RFC 7231][15] for more information on the `Content-Encoding`
- header.
-
-## Supported content encodings
-
- The `deflate`, `gzip` and `br` content encodings are supported by libcurl.
- Both regular and chunked transfers work fine. The zlib library is required
- for the `deflate` and `gzip` encodings, while the brotli decoding library is
- for the `br` encoding.
-
-## The libcurl interface
-
- To cause libcurl to request a content encoding use:
-
-  [`curl_easy_setopt`][1](curl, [`CURLOPT_ACCEPT_ENCODING`][5], string)
-
- where string is the intended value of the `Accept-Encoding` header.
-
- Currently, libcurl does support multiple encodings but only
- understands how to process responses that use the `deflate`, `gzip` and/or
- `br` content encodings, so the only values for [`CURLOPT_ACCEPT_ENCODING`][5]
- that will work (besides `identity`, which does nothing) are `deflate`,
- `gzip` and `br`. If a response is encoded using the `compress` or methods,
- libcurl will return an error indicating that the response could
- not be decoded. If `<string>` is NULL no `Accept-Encoding` header is
- generated. If `<string>` is a zero-length string, then an `Accept-Encoding`
- header containing all supported encodings will be generated.
-
- The [`CURLOPT_ACCEPT_ENCODING`][5] must be set to any non-NULL value for
- content to be automatically decoded. If it is not set and the server still
- sends encoded content (despite not having been asked), the data is returned
- in its raw form and the `Content-Encoding` type is not checked.
-
-## The curl interface
-
- Use the [`--compressed`][6] option with curl to cause it to ask servers to
- compress responses using any format supported by curl.
-
-<a name="hostip"></a>
-`hostip.c` explained
-====================
-
- The main compile-time defines to keep in mind when reading the `host*.c`
- source file are these:
-
-## `CURLRES_IPV6`
-
- this host has `getaddrinfo()` and family, and thus we use that. The host may
- not be able to resolve IPv6, but we do not really have to take that into
- account. Hosts that are not IPv6-enabled have `CURLRES_IPV4` defined.
-
-## `CURLRES_ARES`
-
- is defined if libcurl is built to use c-ares for asynchronous name
- resolves. This can be Windows or \*nix.
-
-## `CURLRES_THREADED`
-
- is defined if libcurl is built to use threading for asynchronous name
- resolves. The name resolve will be done in a new thread, and the supported
- asynch API will be the same as for ares-builds. This is the default under
- (native) Windows.
-
- If any of the two previous are defined, `CURLRES_ASYNCH` is defined too. If
- libcurl is not built to use an asynchronous resolver, `CURLRES_SYNCH` is
- defined.
-
-## `host*.c` sources
-
- The `host*.c` sources files are split up like this:
-
- - `hostip.c`      - method-independent resolver functions and utility functions
- - `hostasyn.c`    - functions for asynchronous name resolves
- - `hostsyn.c`     - functions for synchronous name resolves
- - `asyn-ares.c`   - functions for asynchronous name resolves using c-ares
- - `asyn-thread.c` - functions for asynchronous name resolves using threads
- - `hostip4.c`     - IPv4 specific functions
- - `hostip6.c`     - IPv6 specific functions
-
- The `hostip.h` is the single united header file for all this. It defines the
- `CURLRES_*` defines based on the `config*.h` and `curl_setup.h` defines.
-
-<a name="memoryleak"></a>
-Track Down Memory Leaks
-=======================
-
-## Single-threaded
-
-  Please note that this memory leak system is not adjusted to work in more
-  than one thread. If you want/need to use it in a multi-threaded app. Please
-  adjust accordingly.
-
-## Build
-
-  Rebuild libcurl with `-DCURLDEBUG` (usually, rerunning configure with
-  `--enable-debug` fixes this). `make clean` first, then `make` so that all
-  files are actually rebuilt properly. It will also make sense to build
-  libcurl with the debug option (usually `-g` to the compiler) so that
-  debugging it will be easier if you actually do find a leak in the library.
-
-  This will create a library that has memory debugging enabled.
-
-## Modify Your Application
-
-  Add a line in your application code:
-
-```c
-  curl_dbg_memdebug("dump");
-```
-
-  This will make the malloc debug system output a full trace of all resource
-  using functions to the given file name. Make sure you rebuild your program
-  and that you link with the same libcurl you built for this purpose as
-  described above.
-
-## Run Your Application
-
-  Run your program as usual. Watch the specified memory trace file grow.
-
-  Make your program exit and use the proper libcurl cleanup functions etc. So
-  that all non-leaks are returned/freed properly.
-
-## Analyze the Flow
-
-  Use the `tests/memanalyze.pl` perl script to analyze the dump file:
-
-    tests/memanalyze.pl dump
-
-  This now outputs a report on what resources that were allocated but never
-  freed etc. This report is fine for posting to the list.
-
-  If this does not produce any output, no leak was detected in libcurl. Then
-  the leak is mostly likely to be in your code.
-
-<a name="multi_socket"></a>
-`multi_socket`
-==============
-
- Implementation of the `curl_multi_socket` API
-
- The main ideas of this API are simply:
-
- 1. The application can use whatever event system it likes as it gets info
-    from libcurl about what file descriptors libcurl waits for what action
-    on. (The previous API returns `fd_sets` which is `select()`-centric).
-
- 2. When the application discovers action on a single socket, it calls
-    libcurl and informs that there was action on this particular socket and
-    libcurl can then act on that socket/transfer only and not care about
-    any other transfers. (The previous API always had to scan through all
-    the existing transfers.)
-
- The idea is that [`curl_multi_socket_action()`][7] calls a given callback
- with information about what socket to wait for what action on, and the
- callback only gets called if the status of that socket has changed.
-
- We also added a timer callback that makes libcurl call the application when
- the timeout value changes, and you set that with [`curl_multi_setopt()`][9]
- and the [`CURLMOPT_TIMERFUNCTION`][10] option. To get this to work,
- Internally, there's an added struct to each easy handle in which we store
- an "expire time" (if any). The structs are then "splay sorted" so that we
- can add and remove times from the linked list and yet somewhat swiftly
- figure out both how long there is until the next nearest timer expires
- and which timer (handle) we should take care of now. Of course, the upside
- of all this is that we get a [`curl_multi_timeout()`][8] that should also
- work with old-style applications that use [`curl_multi_perform()`][11].
-
- We created an internal "socket to easy handles" hash table that given
- a socket (file descriptor) returns the easy handle that waits for action on
- that socket. This hash is made using the already existing hash code
- (previously only used for the DNS cache).
-
- To make libcurl able to report plain sockets in the socket callback, we had
- to re-organize the internals of the [`curl_multi_fdset()`][12] etc so that
- the conversion from sockets to `fd_sets` for that function is only done in
- the last step before the data is returned. I also had to extend c-ares to
- get a function that can return plain sockets, as that library too returned
- only `fd_sets` and that is no longer good enough. The changes done to c-ares
- are available in c-ares 1.3.1 and later.
-
-<a name="structs"></a>
-Structs in libcurl
-==================
-
-This section should cover 7.32.0 pretty accurately, but will make sense even
-for older and later versions as things do not change drastically that often.
-
-<a name="Curl_easy"></a>
-## Curl_easy
-
-  The `Curl_easy` struct is the one returned to the outside in the external API
-  as a `CURL *`. This is usually known as an easy handle in API documentations
-  and examples.
-
-  Information and state that is related to the actual connection is in the
-  `connectdata` struct. When a transfer is about to be made, libcurl will
-  either create a new connection or re-use an existing one. The particular
-  connectdata that is used by this handle is pointed out by
-  `Curl_easy->easy_conn`.
-
-  Data and information that regard this particular single transfer is put in
-  the `SingleRequest` sub-struct.
-
-  When the `Curl_easy` struct is added to a multi handle, as it must be in
-  order to do any transfer, the `->multi` member will point to the `Curl_multi`
-  struct it belongs to. The `->prev` and `->next` members will then be used by
-  the multi code to keep a linked list of `Curl_easy` structs that are added to
-  that same multi handle. libcurl always uses multi so `->multi` *will* point
-  to a `Curl_multi` when a transfer is in progress.
-
-  `->mstate` is the multi state of this particular `Curl_easy`. When
-  `multi_runsingle()` is called, it will act on this handle according to which
-  state it is in. The mstate is also what tells which sockets to return for a
-  specific `Curl_easy` when [`curl_multi_fdset()`][12] is called etc.
-
-  The libcurl source code generally use the name `data` for the variable that
-  points to the `Curl_easy`.
-
-  When doing multiplexed HTTP/2 transfers, each `Curl_easy` is associated with
-  an individual stream, sharing the same connectdata struct. Multiplexing
-  makes it even more important to keep things associated with the right thing!
-
-<a name="connectdata"></a>
-## connectdata
-
-  A general idea in libcurl is to keep connections around in a connection
-  "cache" after they have been used in case they will be used again and then
-  re-use an existing one instead of creating a new as it creates a significant
-  performance boost.
-
-  Each `connectdata` identifies a single physical connection to a server. If
-  the connection cannot be kept alive, the connection will be closed after use
-  and then this struct can be removed from the cache and freed.
-
-  Thus, the same `Curl_easy` can be used multiple times and each time select
-  another `connectdata` struct to use for the connection. Keep this in mind,
-  as it is then important to consider if options or choices are based on the
-  connection or the `Curl_easy`.
-
-  Functions in libcurl will assume that `connectdata->data` points to the
-  `Curl_easy` that uses this connection (for the moment).
-
-  As a special complexity, some protocols supported by libcurl require a
-  special disconnect procedure that is more than just shutting down the
-  socket. It can involve sending one or more commands to the server before
-  doing so. Since connections are kept in the connection cache after use, the
-  original `Curl_easy` may no longer be around when the time comes to shut down
-  a particular connection. For this purpose, libcurl holds a special dummy
-  `closure_handle` `Curl_easy` in the `Curl_multi` struct to use when needed.
-
-  FTP uses two TCP connections for a typical transfer but it keeps both in
-  this single struct and thus can be considered a single connection for most
-  internal concerns.
-
-  The libcurl source code generally use the name `conn` for the variable that
-  points to the connectdata.
-
-<a name="Curl_multi"></a>
-## Curl_multi
-
-  Internally, the easy interface is implemented as a wrapper around multi
-  interface functions. This makes everything multi interface.
-
-  `Curl_multi` is the multi handle struct exposed as `CURLM *` in external
-  APIs.
-
-  This struct holds a list of `Curl_easy` structs that have been added to this
-  handle with [`curl_multi_add_handle()`][13]. The start of the list is
-  `->easyp` and `->num_easy` is a counter of added `Curl_easy`s.
-
-  `->msglist` is a linked list of messages to send back when
-  [`curl_multi_info_read()`][14] is called. Basically a node is added to that
-  list when an individual `Curl_easy`'s transfer has completed.
-
-  `->hostcache` points to the name cache. It is a hash table for looking up
-  name to IP. The nodes have a limited life time in there and this cache is
-  meant to reduce the time for when the same name is wanted within a short
-  period of time.
-
-  `->timetree` points to a tree of `Curl_easy`s, sorted by the remaining time
-  until it should be checked - normally some sort of timeout. Each `Curl_easy`
-  has one node in the tree.
-
-  `->sockhash` is a hash table to allow fast lookups of socket descriptor for
-  which `Curl_easy` uses that descriptor. This is necessary for the
-  `multi_socket` API.
-
-  `->conn_cache` points to the connection cache. It keeps track of all
-  connections that are kept after use. The cache has a maximum size.
-
-  `->closure_handle` is described in the `connectdata` section.
-
-  The libcurl source code generally use the name `multi` for the variable that
-  points to the `Curl_multi` struct.
-
-<a name="Curl_handler"></a>
-## Curl_handler
-
-  Each unique protocol that is supported by libcurl needs to provide at least
-  one `Curl_handler` struct. It defines what the protocol is called and what
-  functions the main code should call to deal with protocol specific issues.
-  In general, there's a source file named `[protocol].c` in which there's a
-  `struct Curl_handler Curl_handler_[protocol]` declared. In `url.c` there's
-  then the main array with all individual `Curl_handler` structs pointed to
-  from a single array which is scanned through when a URL is given to libcurl
-  to work with.
-
-  The concrete function pointer prototypes can be found in `lib/urldata.h`.
-
-  `->scheme` is the URL scheme name, usually spelled out in uppercase. That is
-  "HTTP" or "FTP" etc. SSL versions of the protocol need their own
-  `Curl_handler` setup so HTTPS separate from HTTP.
-
-  `->setup_connection` is called to allow the protocol code to allocate
-  protocol specific data that then gets associated with that `Curl_easy` for
-  the rest of this transfer. It gets freed again at the end of the transfer.
-  It will be called before the `connectdata` for the transfer has been
-  selected/created. Most protocols will allocate its private `struct
-  [PROTOCOL]` here and assign `Curl_easy->req.p.[protocol]` to it.
-
-  `->connect_it` allows a protocol to do some specific actions after the TCP
-  connect is done, that can still be considered part of the connection phase.
-
-  Some protocols will alter the `connectdata->recv[]` and
-  `connectdata->send[]` function pointers in this function.
-
-  `->connecting` is similarly a function that keeps getting called as long as
-  the protocol considers itself still in the connecting phase.
-
-  `->do_it` is the function called to issue the transfer request. What we call
-  the DO action internally. If the DO is not enough and things need to be kept
-  getting done for the entire DO sequence to complete, `->doing` is then
-  usually also provided. Each protocol that needs to do multiple commands or
-  similar for do/doing need to implement their own state machines (see SCP,
-  SFTP, FTP). Some protocols (only FTP and only due to historical reasons) has
-  a separate piece of the DO state called `DO_MORE`.
-
-  `->doing` keeps getting called while issuing the transfer request command(s)
-
-  `->done` gets called when the transfer is complete and DONE. That is after the
-  main data has been transferred.
-
-  `->do_more` gets called during the `DO_MORE` state. The FTP protocol uses
-  this state when setting up the second connection.
-
-  `->proto_getsock`
-  `->doing_getsock`
-  `->domore_getsock`
-  `->perform_getsock`
-  Functions that return socket information. Which socket(s) to wait for which
-  I/O action(s) during the particular multi state.
-
-  `->disconnect` is called immediately before the TCP connection is shutdown.
-
-  `->readwrite` gets called during transfer to allow the protocol to do extra
-  reads/writes
-
-  `->attach` attaches a transfer to the connection.
-
-  `->defport` is the default report TCP or UDP port this protocol uses
-
-  `->protocol` is one or more bits in the `CURLPROTO_*` set. The SSL versions
-  have their "base" protocol set and then the SSL variation. Like
-  "HTTP|HTTPS".
-
-  `->flags` is a bitmask with additional information about the protocol that will
-  make it get treated differently by the generic engine:
-
-  - `PROTOPT_SSL` - will make it connect and negotiate SSL
-
-  - `PROTOPT_DUAL` - this protocol uses two connections
-
-  - `PROTOPT_CLOSEACTION` - this protocol has actions to do before closing the
-    connection. This flag is no longer used by code, yet still set for a bunch
-    of protocol handlers.
-
-  - `PROTOPT_DIRLOCK` - "direction lock". The SSH protocols set this bit to
-    limit which "direction" of socket actions that the main engine will
-    concern itself with.
-
-  - `PROTOPT_NONETWORK` - a protocol that does not use network (read `file:`)
-
-  - `PROTOPT_NEEDSPWD` - this protocol needs a password and will use a default
-    one unless one is provided
-
-  - `PROTOPT_NOURLQUERY` - this protocol cannot handle a query part on the URL
-    (?foo=bar)
-
-<a name="conncache"></a>
-## conncache
-
-  Is a hash table with connections for later re-use. Each `Curl_easy` has a
-  pointer to its connection cache. Each multi handle sets up a connection
-  cache that all added `Curl_easy`s share by default.
-
-<a name="Curl_share"></a>
-## Curl_share
-
-  The libcurl share API allocates a `Curl_share` struct, exposed to the
-  external API as `CURLSH *`.
-
-  The idea is that the struct can have a set of its own versions of caches and
-  pools and then by providing this struct in the `CURLOPT_SHARE` option, those
-  specific `Curl_easy`s will use the caches/pools that this share handle
-  holds.
-
-  Then individual `Curl_easy` structs can be made to share specific things
-  that they otherwise would not, such as cookies.
-
-  The `Curl_share` struct can currently hold cookies, DNS cache and the SSL
-  session cache.
-
-<a name="CookieInfo"></a>
-## CookieInfo
-
-  This is the main cookie struct. It holds all known cookies and related
-  information. Each `Curl_easy` has its own private `CookieInfo` even when
-  they are added to a multi handle. They can be made to share cookies by using
-  the share API.
-
-
-[1]: https://curl.se/libcurl/c/curl_easy_setopt.html
-[2]: https://curl.se/libcurl/c/curl_easy_init.html
-[3]: https://c-ares.org/
-[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
-[5]: https://curl.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
-[6]: https://curl.se/docs/manpage.html#--compressed
-[7]: https://curl.se/libcurl/c/curl_multi_socket_action.html
-[8]: https://curl.se/libcurl/c/curl_multi_timeout.html
-[9]: https://curl.se/libcurl/c/curl_multi_setopt.html
-[10]: https://curl.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
-[11]: https://curl.se/libcurl/c/curl_multi_perform.html
-[12]: https://curl.se/libcurl/c/curl_multi_fdset.html
-[13]: https://curl.se/libcurl/c/curl_multi_add_handle.html
-[14]: https://curl.se/libcurl/c/curl_multi_info_read.html
-[15]: https://tools.ietf.org/html/rfc7231#section-3.1.2.2
+ Public ("exported") symbols must use a `curl_` prefix. Public API functions
+ are marked with `CURL_EXTERN` in the public header files so that all others
+ can be hidden on platforms where this is possible.
index 20f60a9129e643396a07b64e604d7c0842140455..6cbcd51defbb9afb45ff24a428fbba9621f15cd0 100644 (file)
@@ -34,6 +34,7 @@ problems may have been fixed or changed somewhat since this was written.
  2.10 Store TLS context per transfer instead of per connection
  2.11 Schannel TLS 1.2 handshake bug in old Windows versions
  2.12 FTPS with Schannel times out file list operation
+ 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
  2.14 Secure Transport disabling hostname validation also disables SNI
  2.15 Renegotiate from server may cause hang for OpenSSL backend
 
@@ -61,6 +62,8 @@ problems may have been fixed or changed somewhat since this was written.
  5.10 curl hangs on SMB upload over stdin
  5.11 configure --with-gssapi with Heimdal is ignored on macOS
  5.12 flaky Windows CI builds
+ 5.13 long paths are not fully supported on Windows
+ 5.14 Windows Unicode builds use homedir in current locale
 
  6. Authentication
  6.1 NTLM authentication and unicode
@@ -75,6 +78,7 @@ problems may have been fixed or changed somewhat since this was written.
  6.10 curl never completes Negotiate over HTTP
  6.11 Negotiate on Windows fails
  6.12 cannot use Secure Transport with Crypto Token Kit
+ 6.13 Negotiate against Hadoop HDFS
 
  7. FTP
  7.1 FTP without or slow 220 response
@@ -88,6 +92,7 @@ problems may have been fixed or changed somewhat since this was written.
  7.9 Passive transfer tries only one IP address
  7.10 FTPS needs session reuse
  7.11 FTPS upload data loss with TLS 1.3
+ 7.12 FTPS directory listing hangs on Windows with Schannel
 
  8. TELNET
  8.1 TELNET and time limitations do not work
@@ -97,6 +102,7 @@ problems may have been fixed or changed somewhat since this was written.
  9.1 SFTP does not do CURLOPT_POSTQUOTE correct
  9.2 wolfssh: publickey auth does not work
  9.3 Remote recursive folder creation with SFTP
+ 9.4 libssh blocking and infinite loop problem
 
  10. SOCKS
  10.3 FTPS over SOCKS
@@ -108,14 +114,11 @@ problems may have been fixed or changed somewhat since this was written.
  11.3 Disconnects do not do verbose
  11.4 HTTP test server 'connection-monitor' problems
  11.5 Connection information when using TCP Fast Open
- 11.6 slow connect to localhost on Windows
  11.7 signal-based resolver timeouts
  11.8 DoH leaks memory after followlocation
  11.9 DoH does not inherit all transfer options
  11.10 Blocking socket operations in non-blocking API
  11.11 A shared connection cache is not thread-safe
- 11.12 'no_proxy' string-matches IPv6 numerical addresses
- 11.13 wakeup socket disconnect causes havoc
  11.14 Multi perform hangs waiting for threaded resolver
  11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing
  11.16 libcurl uses renames instead of locking for atomic operations
@@ -143,13 +146,13 @@ problems may have been fixed or changed somewhat since this was written.
  15.7 generated .pc file contains strange entries
  15.8 libcurl.pc uses absolute library paths
  15.9 cert paths autodetected when cross-compiling
- 15.10 libspsl is not supported
+ 15.10 libpsl is not supported
  15.11 ExternalProject_Add does not set CURL_CA_PATH
  15.12 cannot enable LDAPS on Windows
  15.13 CMake build with MIT Kerberos does not work
+ 15.14 cmake build is not thread-safe
 
  16. Applications
- 16.1 pulseUI VPN client
 
  17. HTTP/2
  17.1 Excessive HTTP/2 packets with TCP_NODELAY
@@ -160,13 +163,8 @@ problems may have been fixed or changed somewhat since this was written.
 
  18. HTTP/3
  18.1 If the HTTP/3 server closes connection during upload curl hangs
- 18.2 Uploading HTTP/3 files gets interrupted at certain file sizes
- 18.3 HTTP/3 download is 5x times slower than HTTP/2
- 18.4 Downloading with HTTP/3 produces broken files
- 18.5 HTTP/3 download with quiche halts after a while
- 18.6 HTTP/3 multipart POST with quiche fails
- 18.7 HTTP/3 quiche upload large file fails
- 18.8 HTTP/3 does not support client certs
+ 18.2 Transfer closed with n bytes remaining to read
+ 18.4 timeout when reusing a http3 connection
  18.9 connection migration does not work
 
 ==============================================================================
@@ -196,7 +194,7 @@ problems may have been fixed or changed somewhat since this was written.
  something beyond ascii but currently libcurl will only pass in the verbatim
  string the app provides. There are several browsers that already do this
  encoding. The key seems to be the updated draft to RFC2231:
- https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
+ https://datatracker.ietf.org/doc/html/draft-reschke-rfc2231-in-http-02
 
 1.5 Expect-100 meets 417
 
@@ -213,7 +211,7 @@ problems may have been fixed or changed somewhat since this was written.
 
 1.7 Deflate error after all content was received
 
- There's a situation where we can get an error in a HTTP response that is
+ There's a situation where we can get an error in an HTTP response that is
  compressed, when that error is detected after all the actual body contents
  have been received and delivered to the application. This is tricky, but is
  ultimately a broken server.
@@ -232,14 +230,13 @@ problems may have been fixed or changed somewhat since this was written.
 
 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM
 
- I'm using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
- option of curl_formadd(). I have noticed that if the connection drops at just
- the right time, the POST is reattempted without the data from the file. It
- seems like the file stream position is not getting reset to the beginning of
- the file. I found the CURLOPT_SEEKFUNCTION option and set that with a
- function that performs an fseek() on the FILE*. However, setting that did not
- seem to fix the issue or even get called. See
- https://github.com/curl/curl/issues/768
+ When using libcurl to POST form data using a FILE* with the CURLFORM_STREAM
+ option of curl_formadd(). I notice that if the connection drops at just the
+ right time, the POST is reattempted without the data from the file. It seems
+ like the file stream position is not getting reset to the beginning of the
+ file. I found the CURLOPT_SEEKFUNCTION option and set that with a function
+ that performs an fseek() on the FILE*. However, setting that did not seem to
+ fix the issue or even get called. See https://github.com/curl/curl/issues/768
 
 
 2. TLS
@@ -338,6 +335,10 @@ problems may have been fixed or changed somewhat since this was written.
  expires." - the same command line seems to work with other TLS backends and
  other operating systems. See https://github.com/curl/curl/issues/5284.
 
+2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel
+
+ https://github.com/curl/curl/issues/8741
+
 2.14 Secure Transport disabling hostname validation also disables SNI
 
  SNI is the hostname that is sent by the TLS library to the server as part of
@@ -543,6 +544,25 @@ problems may have been fixed or changed somewhat since this was written.
 
  See https://github.com/curl/curl/issues/6972
 
+5.13 long paths are not fully supported on Windows
+
+ curl on Windows cannot access long paths (paths longer than 260 characters).
+ However, as a workaround, the Windows path prefix \\?\ which disables all path
+ interpretation may work to allow curl to access the path. For example:
+ \\?\c:\longpath.
+
+ See https://github.com/curl/curl/issues/8361
+
+5.14 Windows Unicode builds use homedir in current locale
+
+ The Windows Unicode builds of curl use the current locale, but expect Unicode
+ UTF-8 encoded paths for internal use such as open, access and stat. The user's
+ home directory is retrieved via curl_getenv in the current locale and not as
+ UTF-8 encoded Unicode.
+
+ See https://github.com/curl/curl/pull/7252 and
+     https://github.com/curl/curl/pull/7281
+
 6. Authentication
 
 6.1 NTLM authentication and unicode
@@ -627,7 +647,7 @@ problems may have been fixed or changed somewhat since this was written.
 
 6.11 Negotiate on Windows fails
 
- When using --negotiate (or NTLM) with curl on Windows, SSL/TSL handshake
+ When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake
  fails despite having a valid kerberos ticket cached. Works without any issue
  in Unix/Linux.
 
@@ -637,11 +657,15 @@ problems may have been fixed or changed somewhat since this was written.
 
  https://github.com/curl/curl/issues/7048
 
+6.13 Negotiate authentication against Hadoop HDFS
+
+ https://github.com/curl/curl/issues/8264
+
 7. FTP
 
 7.1 FTP without or slow 220 response
 
- If a connection is made to a FTP server but the server then just never sends
+ If a connection is made to an FTP server but the server then just never sends
  the 220 response or otherwise is dead slow, libcurl will not acknowledge the
  connection timeout during that phase but only the "real" timeout - which may
  surprise users as it is probably considered to be the connect phase to most
@@ -751,6 +775,10 @@ problems may have been fixed or changed somewhat since this was written.
 
  https://github.com/curl/curl/issues/6149
 
+7.12 FTPS directory listing hangs on Windows with Schannel
+
+ https://github.com/curl/curl/issues/9161
+
 8. TELNET
 
 8.1 TELNET and time limitations do not work
@@ -786,10 +814,18 @@ problems may have been fixed or changed somewhat since this was written.
 9.3 Remote recursive folder creation with SFTP
 
  On this servers, the curl fails to create directories on the remote server
- even when CURLOPT_FTP_CREATE_MISSING_DIRS option is set.
+ even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set.
 
  See https://github.com/curl/curl/issues/5204
 
+9.4 libssh blocking and infinite loop problem
+
+ In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to
+ blocking mode. If the network is suddenly disconnected during sftp
+ transmission, curl will be stuck, even if curl is configured with a timeout.
+
+ https://github.com/curl/curl/issues/8632
+
 
 10. SOCKS
 
@@ -808,7 +844,7 @@ problems may have been fixed or changed somewhat since this was written.
 
  Curl sends DNS requests for hostnames with a .onion TLD. This leaks
  information about what the user is attempting to access, and violates this
- requirement of RFC7686: https://tools.ietf.org/html/rfc7686
+ requirement of RFC7686: https://datatracker.ietf.org/doc/html/rfc7686
 
  Issue: https://github.com/curl/curl/issues/543
 
@@ -852,20 +888,6 @@ problems may have been fixed or changed somewhat since this was written.
  See https://github.com/curl/curl/issues/1332 and
  https://github.com/curl/curl/issues/4296
 
-11.6 slow connect to localhost on Windows
-
- When connecting to "localhost" on Windows, curl will resolve the name for
- both ipv4 and ipv6 and try to connect to both happy eyeballs-style. Something
- in there does however make it take 200 milliseconds to succeed - which is the
- HAPPY_EYEBALLS_TIMEOUT define exactly. Lowering that define speeds up the
- connection, suggesting a problem in the HE handling.
-
- If we can *know* that we are talking to a local host, we should lower the
- happy eyeballs delay timeout for IPv6 (related: hardcode the "localhost"
- addresses, mentioned in TODO). Possibly we should reduce that delay for all.
-
- https://github.com/curl/curl/issues/2281
-
 11.7 signal-based resolver timeouts
 
  libcurl built without an asynchronous resolver library uses alarm() to time
@@ -908,25 +930,6 @@ problems may have been fixed or changed somewhat since this was written.
 
  See https://github.com/curl/curl/issues/4915 and lib1541.c
 
-11.12 'no_proxy' string-matches IPv6 numerical addresses
-
- This has the downside that "::1" for example does not match "::0:1" even
- though they are in fact the same address.
-
- See https://github.com/curl/curl/issues/5745
-
-11.13 wakeup socket disconnect causes havoc
-
- waking an iPad breaks the wakeup socket pair, triggering a POLLIN event and
- resulting in SOCKERRNO being set to ENOTCONN.
-
- This condition, and other possible error conditions on the wakeup socket, are
- not handled, so the condition remains on the FD and curl_multi_poll will
- never block again.
-
- See https://github.com/curl/curl/issues/6132 and
- https://github.com/curl/curl/pull/6133
-
 11.14 Multi perform hangs waiting for threaded resolver
 
  If a threaded resolver takes a long time to complete, libcurl can be blocked
@@ -940,7 +943,7 @@ problems may have been fixed or changed somewhat since this was written.
 
  When libcurl creates sockets with socketpair(), those are not "exposed" in
  CURLOPT_OPENSOCKETFUNCTION and therefore might surprise and be unknown to
- applications that expects and wants all sockets known beforehand. One way to
+ applications that expect and want all sockets known beforehand. One way to
  address this issue is to introduce a CURLOPT_OPENSOCKETPAIRFUNCTION callback.
 
  https://github.com/curl/curl/issues/5747
@@ -958,10 +961,10 @@ problems may have been fixed or changed somewhat since this was written.
 
 12.1 OpenLDAP hangs after returning results
 
- By configuration defaults, openldap automatically chase referrals on
+ By configuration defaults, OpenLDAP automatically chase referrals on
  secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
  should monitor all socket descriptors involved. Currently, these secondary
- descriptors are not monitored, causing openldap library to never receive
+ descriptors are not monitored, causing OpenLDAP library to never receive
  data from them.
 
  As a temporary workaround, disable referrals chasing by configuration.
@@ -1070,7 +1073,7 @@ problems may have been fixed or changed somewhat since this was written.
 
  See https://github.com/curl/curl/issues/6178
 
-15.10 libspsl is not supported
+15.10 libpsl is not supported
 
  See https://github.com/curl/curl/issues/6214
 
@@ -1096,20 +1099,16 @@ problems may have been fixed or changed somewhat since this was written.
 
  https://github.com/curl/curl/issues/6904
 
-16. Applications
+15.14 cmake build is not thread-safe
 
-16.1 pulseUI VPN client
+ The cmake build does not check for and verify presence of a working Atomic
+ type, which then makes curl_global_init() to not build thread-safe on
+ non-Windows platforms.
 
- This application crashes at startup with libcurl 7.74.0 (and presumably later
- versions too) after we cleaned up OpenSSL initialization. Since this is the
- only known application to do this, we suspect it is related to something they
- are doing in their setup that is not kosher. We have not been able to get in
- contact with them nor got any technical details to help us debug this
- further.
+ Bug: https://github.com/curl/curl/issues/8973
+ Partial fix: https://github.com/curl/curl/pull/8982
 
- See
- https://community.pulsesecure.net/t5/Pulse-Desktop-Clients/Linux-Pulse-Client-does-not-work-with-curl-7-74/m-p/44378
- and https://github.com/curl/curl/issues/6306
+16. Applications
 
 17. HTTP/2
 
@@ -1154,35 +1153,18 @@ problems may have been fixed or changed somewhat since this was written.
 
  See https://github.com/curl/curl/issues/6606
 
-18.2 Uploading HTTP/3 files gets interrupted at certain file sizes
-
- See https://github.com/curl/curl/issues/6510
-
-18.3 HTTP/3 download is 5x times slower than HTTP/2
-
- See https://github.com/curl/curl/issues/6494
-
-18.4 Downloading with HTTP/3 produces broken files
-
- See https://github.com/curl/curl/issues/7351
-
-18.5 HTTP/3 download with quiche halts after a while
-
- See https://github.com/curl/curl/issues/7339
-
-18.6 HTTP/3 multipart POST with quiche fails
-
- https://github.com/curl/curl/issues/7125
+18.2 Transfer closed with n bytes remaining to read
 
-18.7 HTTP/3 quiche upload large file fails
+ HTTP/3 transfers with the Jetty HTTP/3 server seem to not work.
 
- https://github.com/curl/curl/issues/7532
+ https://github.com/curl/curl/issues/8523
 
-18.8 HTTP/3 does not support client certs
+18.4 timeout when reusing a http3 connection
 
- aka "mutual authentication".
+ HTTP/3 with quiche seems to not work and always timeout a subsequent transfer
+ that reuses an already established connection
 
- https://github.com/curl/curl/issues/7625
+ https://github.com/curl/curl/issues/8764
 
 18.9 connection migration does not work
 
index eef37d3398a9bdcf7af842eee0e04228a46a7f3b..ccd3e01f9c450b964ec7f03b079def24afdd54d2 100644 (file)
@@ -45,7 +45,7 @@ MAIL ETIQUETTE
 
   1.2 Netiquette
 
-  Netiquette is a common term for how to behave on the internet. Of course, in
+  Netiquette is a common term for how to behave on the Internet. Of course, in
   each particular group and subculture there will be differences in what is
   acceptable and what is considered good manners.
 
@@ -105,7 +105,7 @@ MAIL ETIQUETTE
   messages"
 
   No matter what, we NEVER EVER respond to trolls or spammers on the list. If
-  you believe the list admin should do something in particular, contact him/her
+  you believe the list admin should do something in particular, contact them
   off-list. The subject will be taken care of as much as possible to prevent
   repeated offenses, but responding on the list to such messages never leads to
   anything good and only puts the light even more on the offender: which was
@@ -195,7 +195,7 @@ MAIL ETIQUETTE
   Many mail programs and web archivers use information within mails to keep
   them together as "threads", as collections of posts that discuss a certain
   subject. If you do not intend to reply on the same or similar subject, do not
-  just hit reply on an existing mail and change subject, create a new mail.
+  just hit reply on an existing mail and change the subject, create a new mail.
 
   2.2 Reply to the List
 
@@ -277,9 +277,9 @@ MAIL ETIQUETTE
   one of the hints was what solved your problems. The guys who write answers
   feel good to know that they provided a good answer and that you fixed the
   problem. Far too often, the person who asked the question is never heard from
-  again, and we never get to know if he/she is gone because the problem was
+  again, and we never get to know if they are gone because the problem was
   solved or perhaps because the problem was unsolvable.
 
   Getting the solution posted also helps other users that experience the same
   problem(s). They get to see (possibly in the web archives) that the
-  suggested fixes actually has helped at least one person.
+  suggested fixes actually have helped at least one person.
index e472565199fab7a45a81f07631954b53397a4e59..0d565796fa00a7c31fda5261ee4e14c0b0531425 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 AUTOMAKE_OPTIONS = foreign no-dependencies
@@ -89,7 +91,8 @@ EXTRA_DIST =                                    \
  TODO                                           \
  TheArtOfHttpScripting.md                       \
  URL-SYNTAX.md                                  \
- VERSIONS.md
+ VERSIONS.md                                    \
+ WEBSOCKET.md
 
 MAN2HTML= roffit $< >$@
 
index b49cef9e78a90a3887c2c5b0d82793bee93b92b5..2c3fb230c394df061f4f34d093340789a55a80a5 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = { \
@@ -111,15 +113,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = docs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -301,6 +301,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -318,6 +319,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -375,6 +377,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -393,12 +396,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -465,7 +469,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -537,7 +540,8 @@ EXTRA_DIST = \
  TODO                                           \
  TheArtOfHttpScripting.md                       \
  URL-SYNTAX.md                                  \
- VERSIONS.md
+ VERSIONS.md                                    \
+ WEBSOCKET.md
 
 MAN2HTML = roffit $< >$@
 SUFFIXES = .1 .html .pdf
index 334215d30d6393e89146002afe27e6f3036f1662..a8b227d3c0b010e92160df1c5b5c025799641e28 100644 (file)
@@ -1,11 +1,11 @@
 # Adding a new protocol?
 
-Every once in a while someone comes up with the idea of adding support for yet
+Every once in a while, someone comes up with the idea of adding support for yet
 another protocol to curl. After all, curl already supports 25 something
 protocols and it is the Internet transfer machine for the world.
 
 In the curl project we love protocols and we love supporting many protocols
-and do it well.
+and doing it well.
 
 So how do you proceed to add a new protocol and what are the requirements?
 
@@ -98,7 +98,7 @@ will try to debug something five years from now can figure out functionality a
 little easier!
 
 The protocol specification itself should be freely available without requiring
-any NDA or similar.
+a non-disclosure agreement or similar.
 
 ## Do not compare
 
index 325e64f9bbdca5274fa6c72d3feb197d7c2be174..8ab477862be36e5ae4d198f726f4e6af9a2000d2 100644 (file)
@@ -27,8 +27,8 @@ completely different than the regular one used for each single transfer.
  o total time all transfers are expected to take (if sizes are known)
  o current time the transfers have spent so far
  o estimated time left (if sizes are known)
- o current transfer speed (the faster of UL/DL speeds measured over the last
-   few seconds)
+ o current transfer speed (the faster of upload/download speeds measured over
+   the last few seconds)
 
 Example:
 
index 9aa29dc0e01e8dddc202eb8e45aa7d12864b0cea..776bebe8324086b3e4077b5e3d32ed3d55e0a7da 100644 (file)
@@ -16,14 +16,14 @@ in the source code repo
   tag and we use underscores instead of dots in the version number. Make sure
   the tag is GPG signed (using -s).
 
-- run "./maketgz 7.34.0" to build the release tarballs. It is important that
+- run `./maketgz 7.34.0` to build the release tarballs. It is important that
   you run this on a machine with the correct set of autotools etc installed
   as this is what then will be shipped and used by most users on \*nix like
   systems.
 
 - push the git commits and the new tag
 
-- gpg sign the 4 tarballs as maketgz suggests
+- GPG sign the 4 tarballs as `maketgz` suggests
 
 - upload the 8 resulting files to the primary download directory
 
@@ -89,18 +89,30 @@ of common public holidays or when the lead release manager is away traveling,
 the release date can be moved forwards or backwards a full week. This is then
 advertised well in advance.
 
+Critical problems
+-----------------
+
+We can break the release cycle and do a patch release at any point if a
+critical enough problem is reported. There is no exact definition of how to
+assess such criticality, but if an issue is highly disturbing or has a
+security impact on a large enough share of the user population it might
+qualify.
+
+If you think an issue qualifies, bring it to the curl-library mailing list and
+push for it.
+
 Coming dates
 ------------
 
 Based on the description above, here are some planned release dates (at the
 time of this writing):
 
-- January 5, 2022 (7.81.0)
-- March 2, 2022
-- April 27, 2022
-- June 22, 2022
-- August 17, 2022
-- October 12, 2022
-- December 7, 2022
-- February 1, 2023
-- March 20, 2023 (8.0.0)
+- October 26, 2022 (7.86.0)
+- December 21, 2022
+- February 15, 2023 (last version 7 release, no feature window after)
+- March 20, 2023 (8.0.0 - curl 25 years)
+- April 17, 2023
+- July 12, 2023
+- September 6, 2023
+- November 1, 2023
+- December 27, 2023
index 79e8b03a2b7ea2b25fba0a0473017f071bb61541..e48c21b58df148f91764c04fbed3d918b8b10faa 100644 (file)
@@ -14,7 +14,7 @@ eventually remove the "experimental" label from this functionality.
 
 As a DNS version of alt-svc and also a pre-requisite for ECH (see below).
 
-See: https://tools.ietf.org/html/draft-ietf-dnsop-svcb-https-02
+See: https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-02
 
 ## ECH (Encrypted Client Hello - formerly known as ESNI)
 
index 17faa20e7cc5964773e7cadacc693f662e4f7c00..4b49b5cf79c4990b0cb2845394663b281ef55a8b 100644 (file)
@@ -21,6 +21,6 @@ Now configure and build curl with rustls:
 
     % git clone https://github.com/curl/curl
     % cd curl
-    % ./buildconf
+    % autoreconf -fi
     % ./configure --with-rustls=${HOME}/rustls-ffi-built
     % make
index f13d6d3aa9f98cb5669590ac154405d72fd0837a..96d6bec42e8466fb281269bcb2952831962f4be6 100644 (file)
@@ -1,11 +1,9 @@
-curl security process
-=====================
+# curl security process
 
 This document describes how security vulnerabilities should be handled in the
 curl project.
 
-Publishing Information
-----------------------
+## Publishing Information
 
 All known and public curl or libcurl related vulnerabilities are listed on
 [the curl website security page](https://curl.se/docs/security.html).
@@ -13,22 +11,21 @@ All known and public curl or libcurl related vulnerabilities are listed on
 Security vulnerabilities **should not** be entered in the project's public bug
 tracker.
 
-Vulnerability Handling
-----------------------
+## Vulnerability Handling
 
 The typical process for handling a new security vulnerability is as follows.
 
 No information should be made public about a vulnerability until it is
-formally announced at the end of this process. That means, for example that a
+formally announced at the end of this process. That means, for example, that a
 bug tracker entry must NOT be created to track the issue since that will make
 the issue public and it should not be discussed on any of the project's public
-mailing lists. Also messages associated with any commits should not make any
+mailing lists. Messages associated with any commits should not make any
 reference to the security nature of the commit if done prior to the public
 announcement.
 
 - The person discovering the issue, the reporter, reports the vulnerability on
-  [https://hackerone.com/curl](https://hackerone.com/curl). Issues filed there
-  reach a handful of selected and trusted people.
+  [HackerOne](https://hackerone.com/curl). Issues filed there reach a handful
+  of selected and trusted people.
 
 - Messages that do not relate to the reporting or managing of an undisclosed
   security vulnerability in curl or libcurl are ignored and no further action
@@ -38,11 +35,12 @@ announcement.
   that a human has seen the report.
 
 - The security team investigates the report and either rejects it or accepts
-  it.
+  it. See below for examples of problems that are not considered
+  vulnerabilities.
 
 - If the report is rejected, the team writes to the reporter to explain why.
 
-- If the report is accepted, the team writes to the reporter to let him/her
+- If the report is accepted, the team writes to the reporter to let them
   know it is accepted and that they are working on a fix.
 
 - The security team discusses the problem, works out a fix, considers the
@@ -68,7 +66,7 @@ announcement.
   should ideally contain the CVE number.
 
 - The security team also decides on and delivers a monetary reward to the
-  reporter as per the bug-bounty polices.
+  reporter as per the bug-bounty policies.
 
 - No more than 10 days before release, inform
   [distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros)
@@ -92,8 +90,7 @@ announcement.
 - The security web page on the website should get the new vulnerability
   mentioned.
 
-security (at curl dot se)
-------------------------------
+## security (at curl dot se)
 
 This is a private mailing list for discussions on and about curl security
 issues.
@@ -103,39 +100,115 @@ might ask you to join the list or you can ask to join it. It really is not a
 formal process. We basically only require that you have a long-term presence
 in the curl project and you have shown an understanding for the project and
 its way of working. You must have been around for a good while and you should
-have no plans in vanishing in the near future.
+have no plans of vanishing in the near future.
 
 We do not make the list of participants public mostly because it tends to vary
 somewhat over time and a list somewhere will only risk getting outdated.
 
-Publishing Security Advisories
-------------------------------
+## Publishing Security Advisories
 
 1. Write up the security advisory, using markdown syntax. Use the same
    subtitles as last time to maintain consistency.
 
 2. Name the advisory file after the allocated CVE id.
 
-3. Add a line on the top of the array in `curl-www/docs/vuln.pm'.
+3. Add a line on the top of the array in `curl-www/docs/vuln.pm`.
 
-4. Put the new advisory markdown file in the curl-www/docs/ directory. Add it
-   to the git repo.
+4. Put the new advisory markdown file in the `curl-www/docs/` directory. Add it
+   to the git repository.
 
 5. Run `make` in your local web checkout and verify that things look fine.
 
 6. On security advisory release day, push the changes on the curl-www
    repository's remote master branch.
 
-Hackerone
----------
+## HackerOne
 
 Request the issue to be disclosed. If there are sensitive details present in
 the report and discussion, those should be redacted from the disclosure. The
 default policy is to disclose as much as possible as soon as the vulnerability
 has been published.
 
-Bug Bounty
-----------
+## Bug Bounty
 
 See [BUG-BOUNTY](https://curl.se/docs/bugbounty.html) for details on the
 bug bounty program.
+
+# Not security issues
+
+This is an incomplete list of issues that are not considered vulnerabilities.
+
+## Small memory leaks
+
+We do not consider a small memory leak a security problem; even if the amount
+of allocated memory grows by a small amount every now and then. Long-living
+applications and services already need to have counter-measures and deal with
+growing memory usage, be it leaks or just increased use. A small memory or
+resource leak is then expected to *not* cause a security problem.
+
+Of course there can be a discussion if a leak is small or not. A large leak
+can be considered a security problem due to the DOS risk. If leaked memory
+contains sensitive data it might also qualify as a security problem.
+
+## Never-ending transfers
+
+We do not consider flaws that cause a transfer to never end to be a security
+problem. There are already several benign and likely reasons for transfers to
+stall and never end, so applications that cannot deal with never-ending
+transfers already need to have counter-measures established.
+
+If the problem avoids the regular counter-measures when it causes a never-
+ending transfer, it might be a security problem.
+
+## Not practically possible
+
+If the flaw or vulnerability cannot practically get executed on existing
+hardware it is not a security problem.
+
+## API misuse
+
+If a reported issue only triggers by an application using the API in a way
+that is not documented to work or even documented to not work, it is probably
+not going to be considered a security problem. We only guarantee secure and
+proper functionality when the APIs are used as expected and documented.
+
+There can be a discussion about what the documentation actually means and how
+to interpret the text, which might end up with us still agreeing that it is a
+security problem.
+
+## Local attackers already present
+
+When an issue can only be attacked or misused by an attacker present on the
+local system or network, the bar is raised. If a local user wrongfully has
+elevated rights on your system enough to attack curl, they can probably
+already do much worse harm and the problem is not really in curl.
+
+## Experiments
+
+Vulnerabilities in features which are off by default (in the build) and
+documented as experimental, are not eligible for a reward and we do not
+consider them security problems.
+
+## URL inconsistencies
+
+URL parser inconsistencies between browsers and curl are expected and are not
+considered security vulnerabilities. The WHATWG URL Specification and RFC
+3986+ (the plus meaning that it is an extended version) [are not completely
+interoperable](https://github.com/bagder/docs/blob/master/URL-interop.md).
+
+Obvious parser bugs can still be vulnerabilities of course.
+
+## Visible command line arguments
+
+The curl command blanks the contents of a number of command line arguments to
+prevent them from appearing in process listings. It does not blank all
+arguments even if some of them that are not blanked might contain sensitive
+data. We consider this functionality a best-effort and omissions are not
+security vulnerabilities.
+
+ - not all systems allow the arguments to be blanked in the first place
+ - since curl blanks the argument itself they will be readable for a short
+   moment no matter what
+ - virtually every argument can contain sensitive data, depending on use
+ - blanking all arguments would make it impractical for users to differentiate
+   curl command lines in process listings
index 3ba601aaa22561df25b5d6ca212b69feb5b13d4b..29f400a597f735d59c32bb186205b78d0505846e 100644 (file)
   ago.
 
   There are several known reasons why a connection that involves SSL might
-  fail. This is a document that attempts to details the most common ones and
+  fail. This is a document that attempts to detail the most common ones and
   how to mitigate them.
 
 ## CA certs
 
   CA certs are used to digitally verify the server's certificate. You need a
-  "ca bundle" for this. See lots of more details on this in the SSLCERTS
+  "ca bundle" for this. See lots of more details on this in the `SSLCERTS`
   document.
 
 ## CA bundle missing intermediate certificates
@@ -59,7 +59,7 @@
   ciphers from its default set (slightly depending on SSL backend in use).
 
   You may have to explicitly provide an alternative list of ciphers for curl
-  to use to allow the server to use a WEAK cipher for you.
+  to use to allow the server to use a weak cipher for you.
 
   Note that these weak ciphers are identified as flawed. For example, this
   includes symmetric ciphers with less than 128 bit keys and RC4.
@@ -68,9 +68,8 @@
   support the legacy handshakes and algorithms used by those versions, so we
   advice against building curl to use Schannel on really old Windows versions.
 
-  References:
-
-  https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
+  Reference: [Prohibiting RC4 Cipher
+  Suites](https://datatracker.ietf.org/doc/html/draft-popov-tls-prohibiting-rc4-01)
 
 ## Allow BEAST
 
index ad0a981325f24ca472d6c024aab654bb7becf530..7f2f735570e9b7aec0b20b0d11cc189e15068642 100644 (file)
@@ -6,7 +6,6 @@ SSL is TLS
 
 SSL is the old name. It is called TLS these days.
 
-
 Native SSL
 ----------
 
@@ -21,15 +20,16 @@ It is about trust
 -----------------
 
 This system is about trust. In your local CA certificate store you have certs
-from *trusted* Certificate Authorities that you then can use to verify that the
-server certificates you see are valid. they are signed by one of the CAs you
-trust.
+from *trusted* Certificate Authorities that you then can use to verify that
+the server certificates you see are valid. They are signed by one of the
+certificate authorities you trust.
 
-Which CAs do you trust? You can decide to trust the same set of companies your
-operating system trusts, or the set one of the known browsers trust. That is
-basically trust via someone else you trust. You should just be aware that
-modern operating systems and browsers are setup to trust *hundreds* of
-companies and recent years several such CAs have been found untrustworthy.
+Which certificate authorities do you trust? You can decide to trust the same
+set of companies your operating system trusts, or the set one of the known
+browsers trust. That is basically trust via someone else you trust. You should
+just be aware that modern operating systems and browsers are setup to trust
+*hundreds* of companies and in recent years several certificate authorities
+have been found untrustworthy.
 
 Certificate Verification
 ------------------------
@@ -39,8 +39,8 @@ by using a CA certificate store that the SSL library can use to make sure the
 peer's server certificate is valid.
 
 If you communicate with HTTPS, FTPS or other TLS-using servers using
-certificates that are signed by CAs present in the store, you can be sure
-that the remote server really is the one it claims to be.
+certificates in the CA store, you can be sure that the remote server really is
+the one it claims to be.
 
 If the remote server uses a self-signed certificate, if you do not install a CA
 cert store, if the server uses a certificate signed by a CA that is not
@@ -51,30 +51,31 @@ server, do one of the following:
  1. Tell libcurl to *not* verify the peer. With libcurl you disable this with
     `curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);`
 
-    With the curl command line tool, you disable this with -k/--insecure.
+    With the curl command line tool, you disable this with `-k`/`--insecure`.
 
  2. Get a CA certificate that can verify the remote server and use the proper
     option to point out this CA cert for verification when connecting. For
     libcurl hackers: `curl_easy_setopt(curl, CURLOPT_CAINFO, cacert);`
 
-    With the curl command line tool: --cacert [file]
+    With the curl command line tool: `--cacert [file]`
 
  3. Add the CA cert for your server to the existing default CA certificate
     store. The default CA certificate store can be changed at compile time with
     the following configure options:
 
-    --with-ca-bundle=FILE: use the specified file as CA certificate store. CA
-    certificates need to be concatenated in PEM format into this file.
+    `--with-ca-bundle=FILE`: use the specified file as the CA certificate
+    store. CA certificates need to be concatenated in PEM format into this
+    file.
 
-    --with-ca-path=PATH: use the specified path as CA certificate store. CA
+    `--with-ca-path=PATH`: use the specified path as CA certificate store. CA
     certificates need to be stored as individual PEM files in this directory.
     You may need to run c_rehash after adding files there.
 
-    If neither of the two options is specified, configure will try to auto-detect
-    a setting. It's also possible to explicitly not hardcode any default store
-    but rely on the built in default the crypto library may provide instead.
-    You can achieve that by passing both --without-ca-bundle and
-    --without-ca-path to the configure script.
+    If neither of the two options is specified, configure will try to
+    auto-detect a setting. It's also possible to explicitly not set any
+    default store but rely on the built in default the crypto library may
+    provide instead. You can achieve that by passing both
+    `--without-ca-bundle` and `--without-ca-path` to the configure script.
 
     If you use Internet Explorer, this is one way to get extract the CA cert
     for a particular server:
@@ -83,22 +84,21 @@ server, do one of the following:
      - Find out where the CA certificate is kept (Certificate>
        Authority Information Access>URL)
      - Get a copy of the crt file using curl
-     - Convert it from crt to PEM using the openssl tool:
-       openssl x509 -inform DES -in yourdownloaded.crt \
-       -out outcert.pem -text
-     - Add the 'outcert.pem' to the CA certificate store or use it stand-alone
+     - Convert it from crt to PEM using the OpenSSL tool:
+       `openssl x509 -inform DES -in yourdownloaded.crt -out outcert.pem -text`
+     - Add the `outcert.pem` to the CA certificate store or use it stand-alone
        as described below.
 
-    If you use the 'openssl' tool, this is one way to get extract the CA cert
+    If you use the `openssl` tool, this is one way to get extract the CA cert
     for a particular server:
 
      - `openssl s_client -showcerts -servername server -connect server:443 > cacert.pem`
      - type "quit", followed by the "ENTER" key
      - The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE"
        markers.
-     - If you want to see the data in the certificate, you can do: "openssl
-       x509 -inform PEM -in certfile -text -out certdata" where certfile is
-       the cert you extracted from logfile. Look in certdata.
+     - If you want to see the data in the certificate, you can do: `openssl
+       x509 -inform PEM -in certfile -text -out certdata` where `certfile` is
+       the cert you extracted from logfile. Look in `certdata`.
      - If you want to trust the certificate, you can add it to your CA
        certificate store or use it stand-alone as described. Just remember that
        the security is no better than the way you obtained the certificate.
@@ -132,18 +132,20 @@ Certificate Verification with NSS
 
 If libcurl was built with NSS support, then depending on the OS distribution,
 it is probably required to take some additional steps to use the system-wide
-CA cert db. RedHat ships with an additional module, libnsspem.so, which
+CA cert db. Red Hat ships with an additional module, libnsspem.so, which
 enables NSS to read the OpenSSL PEM CA bundle. On openSUSE you can install
-p11-kit-nss-trust which makes NSS use the system wide CA certificate store. NSS
-also has a new [database format](https://wiki.mozilla.org/NSS_Shared_DB).
-
-Starting with version 7.19.7, libcurl automatically adds the 'sql:' prefix to
-the certdb directory (either the hardcoded default /etc/pki/nssdb or the
-directory configured with SSL_DIR environment variable). To check which certdb
-format your distribution provides, examine the default certdb location:
-/etc/pki/nssdb; the new certdb format can be identified by the filenames
-cert9.db, key4.db, pkcs11.txt; filenames of older versions are cert8.db,
-key3.db, secmod.db.
+p11-kit-nss-trust which makes NSS use the system wide CA certificate
+store. NSS also has a new [database
+format](https://wiki.mozilla.org/NSS_Shared_DB).
+
+Starting with version 7.19.7, libcurl automatically adds the `sql:` prefix to
+the certificate database directory (either the set default `/etc/pki/nssdb` or
+the directory configured with the `SSL_DIR` environment variable). To check
+which certificate database format your distribution provides, examine the
+default certificate database location: `/etc/pki/nssdb`; the new certificate
+database format can be identified by the filenames `cert9.db`, `key4.db`,
+`pkcs11.txt`; filenames of older versions are `cert8.db`, `key3.db`,
+`secmod.db`.
 
 Certificate Verification with Schannel and Secure Transport
 -----------------------------------------------------------
index e29cbeedf6c898a0ad090b31823d9d8282320e4f..b898341c95af638ee394e62d6837c5854b0dcc6b 100644 (file)
@@ -6,6 +6,8 @@
 
 0xee on github
 0xflotus on github
+12932 on github
+1337vt on github
 1ocalhost on github
 3dyd on github
 3eka on github
@@ -28,6 +30,7 @@ Adam Langley
 Adam Light
 Adam Marcionek
 Adam Piggott
+Adam Rosenfield
 Adam Sampson
 Adam Tkac
 Adnan Khan
@@ -37,7 +40,9 @@ Adrian Peniak
 Adrian Schuur
 Adriano Meirelles
 afrind on github
+Aftab Alam
 ahodesuka on github
+ajak in #curl
 Ajit Dhumale
 Akhil Kedia
 Aki Koskinen
@@ -98,6 +103,7 @@ Alexander Sinditskiy
 Alexander Traud
 Alexander V. Tikhonov
 Alexander Zhuravlev
+Alexandre Bury
 Alexandre Pion
 Alexey Borzov
 Alexey Eremikhin
@@ -142,6 +148,7 @@ Andreas Rieke
 Andreas Roth
 Andreas Schneider
 Andreas Schuldei
+Andreas Sommer
 Andreas Streichardt
 Andreas Wurf
 Andrei Benea
@@ -171,6 +178,7 @@ Andrew Moise
 Andrew Potter
 Andrew Robbins
 Andrew Wansink
+Andrey Alifanov
 Andrey Gursky
 Andrey Labunets
 Andrii Moiseiev
@@ -182,6 +190,7 @@ Andy Serpa
 Andy Tsouladze
 Angus Mackay
 anio on github
+anon00000000 on github
 anshnd on github
 Antarpreet Singh
 Anthon Pang
@@ -193,6 +202,7 @@ Anthony Ramine
 Anthony Shaw
 Antoine Aubert
 Antoine Calando
+Antoine Pietri
 Anton Bychkov
 Anton Gerasimov
 Anton Kalmykov
@@ -228,6 +238,7 @@ Augustus Saunders
 Austin Green
 Avery Fay
 awesomenode on github
+Axel Chong
 Axel Morawietz
 Axel Tillequin
 Ayoub Boudhar
@@ -237,6 +248,7 @@ Bachue Zhou
 Balaji Parasuram
 Balaji S Rao
 Balaji Salunke
+Balakrishnan Balasubramanian
 Balazs Kovacsics
 Balint Szilakszi
 Barry Abrahamson
@@ -266,6 +278,7 @@ Benjamin Gerard
 Benjamin Gilbert
 Benjamin Johnson
 Benjamin Kircher
+Benjamin Loison
 Benjamin Riefenstahl
 Benjamin Ritcey
 Benjamin Sergeant
@@ -311,8 +324,10 @@ bobmitchell1956 on github
 Bodo Bergmann
 Bogdan Nicula
 Boris Rasin
+Boris Verkhovskiy
 Brad Burdick
 Brad Fitzpatrick
+Brad Forschinger
 Brad Harder
 Brad Hards
 Brad King
@@ -349,6 +364,7 @@ Bruno Thomsen
 Bryan Henderson
 Bryan Kemp
 bsammon on github
+bsergean on github
 Bubu on github
 buzo-ffm on github
 bxac on github
@@ -359,12 +375,14 @@ Calvin Buckley
 Cameron Cawley
 Cameron Kaiser
 Cameron MacMinn
+Cameron Will
 Camille Moncelier
 Cao ZhenXiang
 Caolan McNamara
 Captain Basil
 Carie Pointer
 Carl Zogheib
+Carlo Alberto
 Carlo Cannas
 Carlo Marcelo Arenas Belón
 Carlo Teubner
@@ -376,9 +394,11 @@ Catalin Patulea
 causal-agent on github
 cbartl on github
 cclauss on github
+Cering on github
 Cesar Eduardo Barros
 Chad Monroe
 Chandrakant Bagul
+Charles Cazabon
 Charles Kerr
 Charles Romestant
 Chen Prog
@@ -418,10 +438,12 @@ Christophe Demory
 Christophe Dervieux
 Christophe Legry
 Christopher Conroy
+Christopher Degawa
 Christopher Head
 Christopher Palow
 Christopher R. Palmer
 Christopher Reid
+Christopher Sauer
 Christopher Stone
 Chungtsun Li
 Ciprian Badescu
@@ -444,10 +466,12 @@ coinhubs on github
 Colby Ranger
 Colin Blair
 Colin Hogben
+Colin Leroy
 Colin O'Dell
 Colin Watson
 Colm Buckley
 Constantine Sapuntzakis
+coralw on github
 Cory Benfield
 Cory Nelson
 Costya Shulyupin
@@ -501,10 +525,12 @@ Daniel Carpenter
 Daniel Cater
 Daniel Egger
 Daniel Gustafsson
+Daniel Hallberg
 Daniel Hwang
 Daniel Jeliński
 Daniel Johnson
 Daniel Kahn Gillmor
+Daniel Katz
 Daniel Krügler
 Daniel Kurečka
 Daniel Lee Hwang
@@ -520,6 +546,7 @@ Daniel Silverstone
 Daniel Steinberg
 Daniel Stenberg
 Daniel Theron
+Daniel Valenzuela
 Daniel Woelfel
 Daphne Luong
 Dario Nieuwenhuis
@@ -542,6 +569,7 @@ David Binderman
 David Blaikie
 David Bohman
 David Byron
+David Carlier
 David Cohen
 David Cook
 David Demelier
@@ -564,6 +592,7 @@ David LeBlanc
 David Lopes
 David Lord
 David McCreedy
+David McLaughlin
 David Odin
 David Phillips
 David Rosenstrauch
@@ -578,6 +607,7 @@ David Walser
 David Woodhouse
 David Wright
 David Yan
+Davide Cassioli
 davidedec on github
 dbrowndan on github
 dEajL3kA on github
@@ -635,9 +665,12 @@ Dmitry S. Baikov
 Dmitry Wagin
 dnivras on github
 Dolbneff A.V
+Domen Kožar
 Domenico Andreoli
 Dominick Meglio
 Dominik Hölzl
+Dominik Klemba
+Dominik Thalhammer
 Dominique Leuenberger
 Don J Olmstead
 Dongliang Mu
@@ -659,6 +692,7 @@ Duane Cathey
 Duncan Mac-Vicar Prett
 Duncan Wilcox
 Dustin Boswell
+Dustin Howett
 Dusty Mabe
 Duy Phan Thanh
 Dwarakanath Yadavalli
@@ -676,6 +710,7 @@ Eddie Lumpkin
 Edgaras Janušauskas
 Edin Kadribasic
 Edmond Yu
+Edoardo Lolletti
 Eduard Bloch
 Edward Kimmel
 Edward Rudd
@@ -684,6 +719,7 @@ Edward Thomson
 Eelco Dolstra
 Eetu Ojanen
 Egon Eckert
+Egor Pugin
 Ehren Bendler
 Eldar Zaitov
 elelel on github
@@ -693,13 +729,17 @@ Elia Tufarolo
 Elliot Saba
 Ellis Pritchard
 Elmira A Semenova
+Elms
+Eloy Degen
 elsamuko on github
 emanruse on github
 Emanuele Bovisio
+Emanuele Torre
 Emil Engler
 Emil Lerner
 Emil Romanus
 Emiliano Ida
+Emilio López
 Emmanuel Tychon
 Enrico Scholz
 Enrik Berkhan
@@ -744,19 +784,22 @@ Evan Jordan
 Evangelos Foutras
 Even Rouault
 Evert Pot
-Evgeny Grin
+Evgeny Grin (Karlson2k)
 Evgeny Turnaev
 eXeC64 on github
 Eygene Ryabinkin
 Eylem Ugurel
+Fabian Fischer
 Fabian Frank
 Fabian Hiernaux
 Fabian Keil
 Fabian Ruff
+Fabian Yamaguchi
 Fabrice Fontaine
 Fabrizio Ammollo
 Fahim Chandurwala
 Faizur Rahman
+Farzin on github
 Fawad Mirza
 fds242 on github
 Federico Bianchi
@@ -770,10 +813,12 @@ Felix von Leitner
 Felix Yan
 Feng Tu
 Fernando Muñoz
+Filip Lundgren
 Filip Salomonsson
 Firefox OS
 Flameborn on github
 Flavio Medeiros
+Florian Kohnhäuser
 Florian Pritz
 Florian Schoppmann
 Florian Van Heghe
@@ -782,6 +827,7 @@ Florin Petriuc
 Forrest Cahoon
 Francisco Moraes
 Francisco Munoz
+Francisco Olarte
 Francisco Sedano
 Francois Petitjean
 Francois Rivard
@@ -796,6 +842,7 @@ Frank Van Uffelen
 František Kučera
 François Charlier
 François Rigault
+Frazer Smith
 Fred Machado
 Fred New
 Fred Noz
@@ -811,7 +858,9 @@ Gabriel Simmer
 Gabriel Sjoberg
 Gambit Communications
 Ganesh Kamath
+gaoxingwang on github
 Garrett Holmstrom
+Garrett Squire
 Gary Maxwell
 Gaurav Malhotra
 Gautam Kachroo
@@ -886,6 +935,7 @@ Gustaf Hui
 Gustavo Grieco
 Guy Poizat
 GwanYeong Kim
+Gwen Shapira
 Gwenole Beauchesne
 Gökhan Şengün
 Götz Babin-Ebell
@@ -909,6 +959,7 @@ Hao Wu
 Hardeep Singh
 Haris Okanovic
 Harold Stuart
+Harry Sarson
 Harry Sintonen
 Harshal Pradhan
 Hauke Duden
@@ -923,12 +974,16 @@ Helwing Lutz
 Hendrik Visage
 Henri Gomez
 Henrik Gaßmann
+Henrik Holst
 Henrik Storner
 Henry Ludemann
 Henry Roeland
 Herve Amblard
+HexTheDragon
 Hidemoto Nakada
+highmtworks on github
 Himanshu Gupta
+Hiroki Kurosawa
 Ho-chi Chen
 Hoi-Ho Chan
 Hongli Lai
@@ -945,6 +1000,7 @@ huzunhao on github
 hydra3333 on github
 Hzhijun
 iammrtau on github
+Ian Blanes
 Ian D Allen
 Ian Fette
 Ian Ford
@@ -966,9 +1022,11 @@ Ikko Ashimine
 Ilguiz Latypov
 Ilja van Sprundel
 Illarion Taev
+illusory-dream on github
 Ilya Kosarev
 imilli on github
 Immanuel Gregoire
+ImpatientHippo on GitHub
 Inca R
 infinnovation-dev on github
 Ingmar Runge
@@ -984,6 +1042,7 @@ Isaiah Norton
 Ishan SinghLevett
 Ithubg on github
 Ivan Avdeev
+Ivan Tsybulin
 IvanoG on github
 Ivo Bellin Salarin
 iz8mbw on github
@@ -996,10 +1055,12 @@ Jacob Barthelmeh
 Jacob Hoffman-Andrews
 Jacob Meuser
 Jacob Moshenko
+Jacob Tolar
 Jactry Zeng
 Jad Chamcham
 Jaime Fullaondo
 jakirkham on github
+Jakub Bochenski
 Jakub Wilk
 Jakub Zakrzewski
 James Atwill
@@ -1029,7 +1090,9 @@ Jan Mazur
 Jan Schaumann
 Jan Schmidt
 Jan Van Boghout
+Jan Venekamp
 Jan Verbeek
+Jan-Piet Mens
 JanB on github
 Janne Johansson
 Jared Jennings
@@ -1050,6 +1113,7 @@ Javier G. Sogo
 Javier Navarro
 Javier Sixto
 Jay Austin
+Jay Dommaschk
 Jayesh A Shah
 Jaz Fresh
 Jean Fabrice
@@ -1076,6 +1140,7 @@ Jeff Weber
 Jeffrey Tolar
 Jeffrey Walton
 jeffrson on github
+Jenny Heino
 Jens Finkhaeuser
 Jens Rantil
 Jens Schleusener
@@ -1103,7 +1168,10 @@ Jesse Chisholm
 Jesse Noller
 Jesse Tan
 jethrogb on github
+jhoyla on github
 Jie He
+Jilayne Lovejoy
+Jim Beveridge
 Jim Drash
 Jim Freeman
 Jim Fuller
@@ -1139,6 +1207,7 @@ Johannes G. Kristinsson
 Johannes Lesr
 Johannes Schindelin
 John A. Bristor
+John Bampton
 John Bradshaw
 John Butterfield
 John Coffey
@@ -1149,6 +1218,7 @@ John Dennis
 John Dunn
 John E. Malmberg
 John Gardiner Myers
+John H. Ayad
 John Hascall
 John Janssen
 John Joseph Bachir
@@ -1185,6 +1255,7 @@ Jon Travis
 Jon Turner
 Jon Wilkes
 Jonas Forsman
+Jonas Haag
 Jonas Minnberg
 Jonas Schnelli
 Jonas Vautherin
@@ -1197,6 +1268,7 @@ Jonathan Nieder
 Jonathan Watt
 Jonathan Wernberg
 Jongki Suwandi
+jonny112 on github
 Joombalaya on github
 Joonas Kuorilehto
 Jordan Brown
@@ -1209,13 +1281,13 @@ Josh Kapell
 Josh Soref
 joshhe on github
 Joshua Kwan
+Joshua Root
 Joshua Swink
 Josie Huddleston
 Josip Medved
 Josue Andrade Gomes
 José Joaquín Atria
 Jozef Kralik
-JP Mens
 Juan Barreto
 Juan F. Codagnone
 Juan Ignacio Hervás
@@ -1239,13 +1311,16 @@ Jun-ya Kato
 jungle-boogie on github
 Junho Choi
 Jurij Smakov
+jurisuk on github
 Juro Bystricky
+justchen1369 on github
 Justin Clift
 Justin Ehlert
 Justin Fletcher
 Justin Karneges
 Justin Maggard
 jveazey on github
+jvvprasad78 on github
 jzinn on github
 János Fekete
 Jérémy Rocher
@@ -1257,6 +1332,7 @@ ka7 on github
 Kael1117 on github
 Kai Engert
 Kai Noda
+Kai Pastor
 Kai Sommerfeld
 Kai-Uwe Rommel
 Kalle Vahlman
@@ -1264,6 +1340,7 @@ Kamil Dudka
 Kane York
 Kang Lin
 Kang-Jin Lee
+Kantanat Wannapaka
 Kari Pahula
 Karl Chen
 Karl Moerder
@@ -1275,9 +1352,11 @@ Katsuhiko YOSHIDA
 Kazuho Oku
 Kees Cook
 Kees Dekker
+Keitagit-kun on github
 Keith MacDonald
 Keith McGuigan
 Keith Mok
+Kelly Kaoudis
 Ken Brown
 Ken Hirsch
 Ken Rastatter
@@ -1286,6 +1365,7 @@ Kenny To
 Kent Boortz
 Kerem Kat
 Keshav Krity
+Kevin Adler
 Kevin Baughman
 Kevin Burke
 Kevin Fisk
@@ -1313,6 +1393,7 @@ Koichi Shiraishi
 kokke on github
 Konstantin Isakov
 Konstantin Kushnir
+KotlinIsland on github
 kotoriのねこ
 kouzhudong on github
 Kovalkov Dmitrii
@@ -1328,6 +1409,7 @@ Kristoffer Gleditsch
 Kunal Chandarana
 Kunal Ekawde
 Kurt Fankhauser
+Kushal Das
 Kwon-Young Choi
 Kyle Abramowitz
 Kyle Edwards
@@ -1360,6 +1442,8 @@ Laurie Clark-Michalek
 Lawrence Gripper
 Lawrence Matthews
 Lawrence Wagerfield
+Leah Neukirchen
+Leandro Coutinho
 Legoff Vincent
 Lehel Bernadt
 Leif W
@@ -1377,6 +1461,8 @@ Leonardo Taccari
 Leszek Kubik
 Li Xinwei
 Liam Healy
+Liam Warfield
+LigH-de on github
 lijian996 on github
 Lijo Antony
 lilongyan-huawei on github
@@ -1389,6 +1475,7 @@ Linus Nielsen Feltzing
 Linus Nordberg
 Lior Kaplan
 Lisa Xu
+Litter White
 Liviu Chircu
 Liza Alenchery
 lllaffer on github
@@ -1418,10 +1505,12 @@ Luke Amery
 Luke Call
 Luke Dashjr
 Luke Granger-Brown
+luminixinc on github
 Luo Jinghua
 Luong Dinh Dung
 Luz Paz
 Luật Nguyễn
+lwthiker on github
 Lyman Epp
 Lyndon Hill
 M.R.T on github
@@ -1461,11 +1550,13 @@ Marcin Gryszkalis
 Marcin Konicki
 Marco Deckel
 Marco G. Salvagno
+Marco Kamner
 Marco Maggi
 Marcos Diazr
 Marcus Hoffmann
 Marcus Klein
 Marcus Sundberg
+Marcus T
 Marcus Webster
 Marian Klymov
 Mario Schroeder
@@ -1475,6 +1566,7 @@ Mark Davies
 Mark Dodgson
 Mark Hamilton
 Mark Incley
+Mark Itzcovitz
 Mark Karpeles
 Mark Lentczner
 Mark Nottingham
@@ -1514,8 +1606,10 @@ Martin Lemke
 Martin Skinner
 Martin Staael
 Martin Storsjö
+Martin Strunz
 Martin V
 Martin Vejnár
+Martin Ågren
 Marty Kuhrt
 Maruko
 Masaya Suzuki
@@ -1523,9 +1617,11 @@ masbug on github
 Massimiliano Fantuzzi
 Massimiliano Ziccardi
 Massimo Callegari
+MasterInQuestion on github
 Mateusz Loskot
 Mathias Axelsson
 Mathias Gumz
+Mathieu Carbonneaux
 Mathieu Legare
 Matias N. Goldberg
 Mats Lidell
@@ -1538,6 +1634,7 @@ Matt McClure
 Matt Veenstra
 Matt Witherspoon
 Matt Wixson
+Matteo Baccan
 Matteo Bignotti
 Matteo Bignottignotti
 Matteo Rocco
@@ -1545,6 +1642,7 @@ Matthew Blain
 Matthew Clarke
 Matthew Hall
 Matthew Kerwin
+Matthew Thompson
 Matthew Whitehead
 Matthias Bolte
 Matthias Gatto
@@ -1558,6 +1656,7 @@ Max Dymond
 Max Katsev
 Max Kellermann
 Max Khon
+Max Mehl
 Max Peal
 Max Savenkov
 Max Zettlmeißl
@@ -1568,6 +1667,8 @@ Maxime Larocque
 Maxime Legros
 mbeifuss on github
 mccormickt12 on github
+Median Median Stride
+mehatzri on github
 Mehmet Bozkurt
 Mekonikum
 Melissa Mears
@@ -1584,10 +1685,12 @@ Michael Calmer
 Michael Cronenworth
 Michael Curtis
 Michael Day
+Michael Drake
 Michael Felt
 Michael Forney
 Michael Gmelin
 Michael Goffioul
+Michael Heimpold
 Michael Hordijk
 Michael Jahn
 Michael Jerris
@@ -1610,6 +1713,7 @@ Michael Smith
 Michael Stapelberg
 Michael Steuer
 Michael Stillwell
+Michael Trebilcock
 Michael Vittiglio
 Michael Wallner
 Michal Bonino
@@ -1677,8 +1781,10 @@ Muhammed Yavuz Nuzumlalı
 Murugan Balraj
 Muz Dima
 Myk Taylor
+n0name321 on github
 Nach M. S.
 Nagai H
+Nao Yonashiro
 naost3rn on github
 Nate Prewitt
 Nathan Coulter
@@ -1689,6 +1795,7 @@ Nathaniel R. Lewis
 Nathaniel Waisbrot
 Naveen Chandran
 Naveen Noel
+Neal McBurnett
 Neal Poole
 nedres on github
 neex on github
@@ -1698,6 +1805,7 @@ Neil Bowers
 Neil Dunbar
 Neil Kolban
 Neil Spring
+neutric on github
 nevv on HackerOne/curl
 Niall O'Reilly
 niallor on github
@@ -1705,6 +1813,8 @@ nian6324 on github
 nianxuejie on github
 Nic Roets
 Nicholas Maniscalco
+Nick Banks
+Nick Coghlan
 Nick Draffen
 Nick Gimbrone
 Nick Humfrey
@@ -1720,6 +1830,7 @@ Nicolas Grekas
 Nicolas Guillier
 Nicolas Morey-Chaisemartin
 Nicolas Sterchele
+Niels Martignène
 Niels van Tongeren
 Nikita Schmidt
 Nikitinskit Dmitriy
@@ -1745,6 +1856,7 @@ Norbert Kett
 Norbert Novotny
 nosajsnikta on github
 NTMan on Github
+Nuru on github
 Octavio Schroeder
 Ofer
 Okhin Vasilij
@@ -1760,12 +1872,14 @@ Oli Kingshott
 Oliver Gondža
 Oliver Graute
 Oliver Kuckertz
+Oliver Roberts
 Oliver Schindler
 Oliver Urbann
 Olivier Berger
 Olivier Brunel
 Omar Ramadan
 omau on github
+opensignature on github
 Orange Tsai
 Oren Souroujon
 Oren Tirosh
@@ -1821,6 +1935,7 @@ Paul Nolan
 Paul Oliver
 Paul Querna
 Paul Saab
+Paul Seligman
 Paul Vixie
 Paulo Roberto Tomasi
 Pavel Cenek
@@ -1834,6 +1949,7 @@ Pavel Volgarev
 Pavol Markovic
 Pawel A. Gajda
 Pawel Kierski
+Paweł Kowalski
 Paweł Wegner
 Pedro Larroy
 Pedro Monreal
@@ -1850,6 +1966,7 @@ Peter Bray
 Peter Forret
 Peter Frühberger
 Peter Gal
+Peter Goodman
 Peter Heuchert
 Peter Hjalmarsson
 Peter Korsgaard
@@ -1876,6 +1993,7 @@ Petr Bahula
 Petr Novak
 Petr Pisar
 Petr Voytsik
+Petr Štetiar
 Phil Blundell
 Phil Crump
 Phil E. Taylor
@@ -1884,6 +2002,7 @@ Phil Lisiecki
 Phil Pellouchoud
 Philip Craig
 Philip Gladstone
+Philip Heiduck
 Philip Langdale
 Philip Prindeville
 Philipp Klaus Krause
@@ -1899,6 +2018,7 @@ Pierre Joye
 Pierre Yager
 Pierre Ynard
 Pierre-Yves Bigourdan
+Pierrick Charron
 Piotr Dobrogost
 Piotr Komborski
 Po-Chuan Hsieh
@@ -1908,7 +2028,10 @@ Poul T Lomholt
 Pramod Sharma
 Prash Dush
 Praveen Pvs
+Prithvi MK
+privetryan on github
 Priyanka Shah
+ProceduralMan on github
 Przemysław Tomaszewski
 pszemus on github
 puckipedia on github
@@ -1918,6 +2041,7 @@ Quagmire
 Quanah Gibson-Mount
 Quentin Balland
 Quinn Slack
+r-a-sattarov on github
 R. Dennis Steed
 Radek Zajic
 Radoslav Georgiev
@@ -1972,8 +2096,10 @@ Rene Bernhardt
 Rene Rebe
 Reuven Wachtfogel
 Reza Arbab
+Rianov Viacheslav
 Ricardo Cadime
 Ricardo Gomes
+Ricardo M. Correia
 Ricardo Martins
 Rich Burridge
 Rich FitzJohn
@@ -2016,6 +2142,7 @@ Rider Linden
 RiderALT on github
 Rikard Falkeborn
 rl1987 on github
+Rob Boeckermann
 Rob Cotrone
 Rob Crittenden
 Rob Davies
@@ -2023,8 +2150,12 @@ Rob Jones
 Rob Sanders
 Rob Stanzel
 Rob Ward
+RobBotic1 on github
+Robby Simpson
 Robert A. Monat
 Robert B. Harris
+Robert Brose
+Robert Charles Muir
 Robert D. Young
 Robert Dunaj
 Robert Foreman
@@ -2037,6 +2168,7 @@ Robert Ronto
 Robert Schumann
 Robert Weaver
 Robert Wruck
+Robin A. Meade
 Robin Cornelius
 Robin Douine
 Robin Johnson
@@ -2067,6 +2199,7 @@ Ron Eldor
 Ron Parker
 Ron Zapp
 Ronnie Mose
+Rosen Penev
 Rosimildo da Silva
 Ross Burton
 Roy Bellingan
@@ -2091,6 +2224,7 @@ Ryan Sleevi
 Ryan Winograd
 ryancaicse on github
 Ryuichi KAWAMATA
+rzrymiak on github
 Rémy Léone
 S. Moonesamy
 Sai Ram Kunala
@@ -2113,12 +2247,15 @@ Samuel Thibault
 Samuel Tranchet
 Sander Gates
 Sandor Feldi
+Sandro Jaeckel
 Santhana Todatry
 Santino Keupp
 Saqib Ali
 Sara Golemon
 Saran Neti
 Sascha Swiercy
+Sascha Zengler
+Satadru Pramanik
 Saul good
 Saurav Babu
 sayrer on github
@@ -2139,9 +2276,11 @@ Sebastian Haglund
 Sebastian Mundry
 Sebastian Pohlschmidt
 Sebastian Rasmussen
+Sebastian Sterk
 Senthil Raja Velu
 Sergei Kuzmin
 Sergei Nikulov
+Sergey Bronnikov
 Sergey Markelov
 Sergey Ogryzkov
 Sergey Tatarincev
@@ -2156,8 +2295,10 @@ Serj Kalichev
 Seshubabu Pasam
 Seth Mos
 Sevan Janiyan
+Sgharat on github
 Sh Diao
 Shachaf Ben-Kiki
+ShadowZzj on github
 Shailesh Kapse
 Shankar Jadhavar
 Shao Shuchao
@@ -2165,6 +2306,7 @@ Sharad Gupta
 Shard
 Sharon Brizinov
 Shaun Jackman
+Shaun Mirani
 Shawn Landden
 Shawn Poulson
 Shikha Sharma
@@ -2174,9 +2316,11 @@ shithappens2016 on github
 Shlomi Fish
 Shmulik Regev
 Siddhartha Prakash Jain
+siddharthchhabrap on github
 Sidney San Martín
 Siegfried Gyuricsko
 silveja1 on github
+Simon Berger
 Simon Chalifoux
 Simon Dick
 Simon H.
@@ -2197,6 +2341,7 @@ Spezifant on github
 Spiridonoff A.V
 Spoon Man
 Spork Schivago
+ssdbest on github
 sspiri on github
 sstruchtrup on github
 Stadler Stephan
@@ -2205,6 +2350,7 @@ Stan van de Burgt
 Stanislav Ivochkin
 Stanislav Zidek
 Stathis Kapnidis
+Stav Nir
 steelman on github
 Stefan Agner
 Stefan Bühler
@@ -2231,6 +2377,7 @@ Stephan Lagerholm
 Stephan Mühlstrasser
 Stephan Szabo
 Stephane Pellegrino
+Stephen Boost
 Stephen Brokenshire
 Stephen Collyer
 Stephen Kick
@@ -2254,10 +2401,12 @@ Steven Gu
 Steven M. Schweda
 Steven Parkes
 Steven Penny
+Stewart Gebbie
 Stian Soiland-Reyes
 Stoned Elipot
 stootill on github
 Stuart Henderson
+Sukanya Hanumanthu
 SumatraPeter on github
 Sune Ahlgren
 Sunny Bean
@@ -2280,10 +2429,12 @@ Tae Hyoung Ahn
 Taiyu Len
 Taneli Vähäkangas
 Tanguy Fautre
+Taras Kushnir
 tarek112 on github
 Tatsuhiro Tsujikawa
 tawmoto on github
 tbugfinder on github
+Ted Lyngmo
 Teemu Yli-Elsila
 Temprimus
 Terri Oda
@@ -2291,14 +2442,17 @@ Terry Wu
 thanhchungbtc on github
 The Infinnovation team
 TheAssassin on github
+TheKnarf on github
 Theodore Dubois
 therealhirudo on github
+Thiago Suchorski
 tholin on github
 Thomas Bouzerar
 Thomas Braun
 Thomas Danielsson
 Thomas Gamper
 Thomas Glanzmann
+Thomas Guillem
 Thomas J. Moore
 Thomas Klausner
 Thomas L. Shinnick
@@ -2310,6 +2464,7 @@ Thomas Schwinge
 Thomas Tonino
 Thomas van Hesteren
 Thomas Vegas
+Thomas Weißschuh
 Thorsten Schöning
 Tiit Pikma
 Till Maas
@@ -2348,8 +2503,10 @@ Tobias Hintze
 Tobias Lindgren
 Tobias Markus
 Tobias Nießen
+Tobias Nygren
 Tobias Nyholm
 Tobias Rundström
+Tobias Schaefer
 Tobias Stoeckmann
 Toby Peterson
 Todd A Ouska
@@ -2359,6 +2516,7 @@ Todd Short
 Todd Vierling
 Tom Benoist
 Tom Donovan
+Tom Eccles
 Tom G. Christensen
 Tom Grace
 Tom Greenslade
@@ -2400,6 +2558,7 @@ Toshio Kuratomi
 Toshiyuki Maezawa
 tpaukrt on github
 Traian Nicolescu
+Trail of Bits
 Travis Burtrum
 Travis Obenhaus
 Trivikram Kamat
@@ -2416,6 +2575,7 @@ Ulf Samuelsson
 Ulrich Doehner
 Ulrich Telle
 Ulrich Zadow
+updatede on github
 UrsusArctos on github
 User Sg
 ustcqidi on github
@@ -2428,6 +2588,7 @@ Valerii Zapodovnikov
 vanillajonathan on github
 Varnavas Papaioannou
 Vasiliy Faronov
+Vasiliy Ulyanov
 Vasily Lobaskin
 Vasy Okhin
 Venkat Akella
@@ -2451,6 +2612,7 @@ Vincent Sanders
 Vincent Torri
 vitaha85 on github
 Vitaly Varyvdin
+vl409 on github
 Vlad Grachov
 Vlad Ureche
 Vladimir Grishchenko
@@ -2459,12 +2621,14 @@ Vladimir Lazarenko
 Vladimir Panteleev
 Vladimir Varlamov
 Vlastimil Ovčáčík
+vlubart on github
 Vojtech Janota
 Vojtech Minarik
 Vojtěch Král
 Volker Schmid
 Vsevolod Novikov
 vshmuk on hackerone
+vvb2060 on github
 Vyron Tsingaras
 W. Mark Kubacki
 Waldek Kozba
@@ -2485,6 +2649,7 @@ Wham Bang
 Wilfredo Sanchez
 Will Dietz
 Will Roberts
+Willem Hoek
 Willem Sparreboom
 William A. Rowe Jr
 William Ahern
@@ -2492,8 +2657,10 @@ William Desportes
 wmsch on github
 wncboy on github
 Wojciech Zwiefka
+Wolf Vollprecht
 Wouter Van Rooy
 Wu Yongzheng
+Wu Zheng
 Wyatt O'Day
 Wyatt OʼDay
 x2018 on github
@@ -2502,6 +2669,7 @@ XhmikosR on github
 XhstormR on github
 Xiang Xiao
 Xiangbin Li
+Xiaoke Wang
 Xiaoyin Liu
 XmiliaH on github
 xnynx on github
@@ -2519,6 +2687,7 @@ ygthien on github
 Yi Huang
 Yiming Jing
 Yingwei Liu
+yiyuaner on github
 Ymir1711 on github
 Yonggang Luo
 Yongkang Huang
@@ -2529,6 +2698,7 @@ Yu Xin
 Yukihiro Kawada
 Yun SangHo
 Yuri Slobodyanyuk
+Yuriy Chernyshov
 Yuriy Sosov
 Yusuke Nakamura
 Yves Arrouye
@@ -2542,6 +2712,7 @@ zelinchen on github
 Zenju on github
 Zero King
 Zhang Xiuhua
+zhanghu on xiaomi
 Zhao Yisha
 Zhaoyang Wu
 Zhibiao Wu
@@ -2553,6 +2724,7 @@ Zvi Har'El
 zzq1015 on github
 Ádler Jonas Gross
 Érico Nogueira
+Érico Nogueira Rolim
 İsmail Dönmez
 Łukasz Domeradzki
 Štefan Kremeň
@@ -2562,3 +2734,4 @@ zzq1015 on github
 ウさん
 不确定
 加藤郁之
+梦终无痕
index f9052c7be9310c9eb0d64bc04ab1ea5a10a459a9..32910443572a2b5fc1b743a50b110fe6fdecd8ee 100644 (file)
--- a/docs/TODO
+++ b/docs/TODO
@@ -30,7 +30,6 @@
  1.11 minimize dependencies with dynamically loaded modules
  1.12 updated DNS server while running
  1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION
- 1.14 Typesafe curl_easy_setopt()
  1.15 Monitor connections in the connection pool
  1.16 Try to URL encode given URL
  1.17 Add support for IRIs
@@ -40,9 +39,7 @@
  1.21 netrc caching and sharing
  1.22 CURLINFO_PAUSE_STATE
  1.23 Offer API to flush the connection pool
- 1.24 TCP Fast Open for windows
  1.25 Expose tried IP addresses that failed
- 1.27 hardcode the "localhost" addresses
  1.28 FD_CLOEXEC
  1.29 Upgrade to websockets
  1.30 config file parsing
  4.1 HOST
  4.2 Alter passive/active on failure and retry
  4.3 Earlier bad letter detection
+ 4.4 Support CURLOPT_PREQUOTE for dir listings too
  4.5 ASCII support
  4.6 GSSAPI via Windows SSPI
  4.7 STAT for LIST without data connection
- 4.8 Option to ignore private IP addresses in PASV response
 
  5. HTTP
- 5.1 Better persistency for HTTP 1.0
+ 5.1 Provide the error body from a CONNNECT response
  5.2 Set custom client ip when using haproxy protocol
  5.3 Rearrange request header order
  5.4 Allow SAN names in HTTP/2 server push
  6.1 ditch stdin
  6.2 ditch telnet-specific select
  6.3 feature negotiation debug data
+ 6.4 exit immediately upon connection if stdin is /dev/null
 
  7. SMTP
+ 7.1 Passing NOTIFY option to CURLOPT_MAIL_RCPT
  7.2 Enhanced capability support
  7.3 Add CURLOPT_MAIL_CLIENT option
 
  13.4 Cache/share OpenSSL contexts
  13.5 Export session ids
  13.6 Provide callback for cert verification
+ 13.7 Less memory massaging with Schannel
  13.8 Support DANE
  13.9 TLS record padding
  13.10 Support Authority Information Access certificate extension (AIA)
  13.11 Support intermediate & root pinning for PINNEDPUBLICKEY
+ 13.12 Reduce CA certificate bundle reparsing
  13.13 Make sure we forbid TLS 1.3 post-handshake authentication
  13.14 Support the clienthello extension
 
  17. SSH protocols
  17.1 Multiplexing
  17.2 Handle growing SFTP files
+ 17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519
  17.4 Support CURLOPT_PREQUOTE
  17.5 SSH over HTTPS proxy with more backends
+ 17.6 SFTP with SCP://
 
  18. Command line tool
  18.1 sync
  18.2 glob posts
- 18.3 prevent file overwriting
  18.4 --proxycommand
  18.5 UTF-8 filenames in Content-Disposition
  18.6 Option to make -Z merge lined based outputs on stdout
- 18.7 at least N milliseconds between requests
  18.8 Consider convenience options for JSON and XML?
  18.9 Choose the name of file in braces for complex URLs
  18.10 improve how curl works in a windows console window
  20.5 Add support for concurrent connections
  20.6 Use the RFC6265 test suite
  20.7 Support LD_PRELOAD on macOS
- 20.8 Run web-platform-tests url tests
- 20.9 Bring back libssh tests on Travis
+ 20.8 Run web-platform-tests URL tests
 
  21. MQTT
  21.1 Support rate-limiting
 
 1.1 TFO support on Windows
 
+ libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and
+ Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
+ and we should add support for it.
+
  TCP Fast Open is supported on several platforms but not on Windows. Work on
  this was once started but never finished.
 
 
  See https://github.com/curl/curl/issues/2734
 
-1.14 Typesafe curl_easy_setopt()
-
- One of the most common problems in libcurl using applications is the lack of
- type checks for curl_easy_setopt() which happens because it accepts varargs
- and thus can take any type.
-
- One possible solution to this is to introduce a few different versions of the
- setopt version for the different kinds of data you can set.
-
-  curl_easy_set_num() - sets a long value
-
-  curl_easy_set_large() - sets a curl_off_t value
-
-  curl_easy_set_ptr() - sets a pointer
-
-  curl_easy_set_cb() - sets a callback PLUS its callback data
-
 1.15 Monitor connections in the connection pool
 
  libcurl's connection cache or pool holds a number of open connections for the
  reuse purpose it is verified that it is still alive.
 
  Those connections may get closed by the server side for idleness or they may
- get a HTTP/2 ping from the peer to verify that they are still alive. By adding
- monitoring of the connections while in the pool, libcurl can detect dead
- connections (and close them) better and earlier, and it can handle HTTP/2
- pings to keep such ones alive even when not actively doing transfers on them.
+ get an HTTP/2 ping from the peer to verify that they are still alive. By
+ adding monitoring of the connections while in the pool, libcurl can detect
+ dead connections (and close them) better and earlier, and it can handle
+ HTTP/2 pings to keep such ones alive even when not actively doing transfers
+ on them.
 
 1.16 Try to URL encode given URL
 
  An API could allow a forced flush or just a forced loop that would properly
  close all connections that have been closed by the server already.
 
-1.24 TCP Fast Open for windows
-
- libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and
- Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607
- and we should add support for it.
-
 1.25 Expose tried IP addresses that failed
 
- When libcurl fails to connect to a host, it should be able to offer the
- application the list of IP addresses that were used in the attempt.
+ When libcurl fails to connect to a host, it could offer the application the
+ addresses that were used in the attempt. Source + dest IP, source + dest port
+ and protocol (UDP or TCP) for each failure. Possibly as a callback. Perhaps
+ also provide "reason".
 
  https://github.com/curl/curl/issues/2126
 
-1.27 hardcode the "localhost" addresses
-
- There's this new spec getting adopted that says "localhost" should always and
- unconditionally be a local address and not get resolved by a DNS server. A
- fine way for curl to fix this would be to simply hard-code the response to
- 127.0.0.1 and/or ::1 (depending on what IP versions that are requested). This
- is what the browsers probably will do with this hostname.
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=1220810
-
- https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
-
 1.28 FD_CLOEXEC
 
  It sets the close-on-exec flag for the file descriptor, which causes the file
  HOST is a command for a client to tell which host name to use, to offer FTP
  servers named-based virtual hosting:
 
- https://tools.ietf.org/html/rfc7151
+ https://datatracker.ietf.org/doc/html/rfc7151
 
 4.2 Alter passive/active on failure and retry
 
  Make the detection of (bad) %0d and %0a codes in FTP URL parts earlier in the
  process to avoid doing a resolve and connect in vain.
 
+4.4 Support CURLOPT_PREQUOTE for dir listings too
+
+ The lack of support is mostly an oversight and requires the FTP state machine
+ to get updated to get fixed.
+
+ https://github.com/curl/curl/issues/8602
+
 4.5 ASCII support
 
  FTP ASCII transfers do not follow RFC959. They do not convert the data
 
  This is not detailed in any FTP specification.
 
-4.8 Option to ignore private IP addresses in PASV response
-
- Some servers respond with and some other FTP client implementations can
- ignore private (RFC 1918 style) IP addresses when received in PASV responses.
- To consider for libcurl as well. See https://github.com/curl/curl/issues/1455
-
 5. HTTP
 
-5.1 Better persistency for HTTP 1.0
+5.1 Provide the error body from a CONNNECT response
 
- "Better" support for persistent connections over HTTP 1.0
- https://curl.se/bug/feature.cgi?id=1089001
+ When curl receives a body response from a CONNECT request to a proxy, it will
+ always just read and ignore it. It would make some users happy if curl
+ instead optionally would be able to make that responsible available. Via a new
+ callback? Through some other means?
+
+ See https://github.com/curl/curl/issues/9513
 
 5.2 Set custom client ip when using haproxy protocol
 
 
  Add telnet feature negotiation data to the debug callback as header data.
 
+6.4 exit immediately upon connection if stdin is /dev/null
+
+ If it did, curl could be used to probe if there's an server there listening
+ on a specific port. That is, the following command would exit immediately
+ after the connection is established with exit code 0:
+
+    curl -s --connect-timeout 2 telnet://example.com:80 </dev/null
 
 7. SMTP
 
+7.1 Passing NOTIFY option to CURLOPT_MAIL_RCPT
+
+ Is there a way to pass the NOTIFY option to the CURLOPT_MAIL_RCPT option ?  I
+ set a string that already contains a bracket. For instance something like
+ that: curl_slist_append( recipients, "<foo@bar> NOTIFY=SUCCESS,FAILURE" );
+
+ https://github.com/curl/curl/issues/8232
+
 7.2 Enhanced capability support
 
  Add the ability, for an application that uses libcurl, to obtain the list of
  certificate, but this does not seem to be exposed in the libcurl APIs. Could
  it be? There's so much that could be done if it were.
 
+13.7 Less memory massaging with Schannel
+
+ The Schannel backend does a lot of custom memory management we would rather
+ avoid: the repeated alloc + free in sends and the custom memory + realloc
+ system for encrypted and decrypted data. That should be avoided and reduced
+ for 1) efficiency and 2) safety.
+
 13.8 Support DANE
 
  DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL
  Adding this feature would make curls pinning 100% compatible to HPKP and
  allow more flexible pinning.
 
+13.12 Reduce CA certificate bundle reparsing
+
+ When using the OpenSSL backend, curl will load and reparse the CA bundle at
+ the creation of the "SSL context" when it sets up a connection to do a TLS
+ handshake. A more effective way would be to somehow cache the CA bundle to
+ avoid it having to be repeatedly reloaded and reparsed.
+
+ See https://github.com/curl/curl/issues/9379
+
 13.13 Make sure we forbid TLS 1.3 post-handshake authentication
 
  RFC 8740 explains how using HTTP/2 must forbid the use of TLS 1.3
  that previously (in older TLS version) were not set. The clienthello
  extension adds padding to avoid that size range.
 
- https://tools.ietf.org/html/rfc7685
+ https://datatracker.ietf.org/doc/html/rfc7685
  https://github.com/curl/curl/issues/2299
 
 14. GnuTLS
 
  https://github.com/curl/curl/issues/4344
 
+17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519
+
+ The libssh2 backend in curl is limited to only reading keys from id_rsa and
+ id_dsa, which makes it fail connecting to servers that use more modern key
+ types.
+
+ https://github.com/curl/curl/issues/8586
+
 17.4 Support CURLOPT_PREQUOTE
 
  The two other QUOTE options are supported for SFTP, but this was left out for
  functionality with the libssh2 backend. Presumably, this support
  can/could be added for the other backends as well.
 
+17.6 SFTP with SCP://
+
+ OpenSSH 9 switched their 'scp' tool to speak SFTP under the hood. Going
+ forward it might be worth having curl or libcurl attempt SFTP if SCP fails to
+ follow suite.
+
 18. Command line tool
 
 18.1 sync
  Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'.
  This is easily scripted though.
 
-18.3 prevent file overwriting
-
- Add an option that prevents curl from overwriting existing local files. When
- used, and there already is an existing file with the target file name
- (either -O or -o), a number should be appended (and increased if already
- existing). So that index.html becomes first index.html.1 and then
- index.html.2 etc.
-
 18.4 --proxycommand
 
  Allow the user to make curl run a command and use its stdio to make requests
 
  https://github.com/curl/curl/issues/5175
 
-18.7 at least N milliseconds between requests
-
- Allow curl command lines issue a lot of request against services that limit
- users to no more than N requests/second or similar. Could be implemented with
- an option asking that at least a certain time has elapsed since the previous
- request before the next one will be performed. Example:
-
-    $ curl "https://example.com/api?input=[1-1000]" -d yadayada --after 500
-
- See https://github.com/curl/curl/issues/3920
-
 18.8 Consider convenience options for JSON and XML?
 
  Could we add `--xml` or `--json` to add headers needed to call rest API:
 18.21 retry on the redirected-to URL
 
  When curl is told to --retry a failed transfer and follows redirects, it
- might get a HTTP 429 response from the redirected-to URL and not the original
- one, which then could make curl decide to rather retry the transfer on that
- URL only instead of the original operation to the original URL.
+ might get an HTTP 429 response from the redirected-to URL and not the
+ original one, which then could make curl decide to rather retry the transfer
on that URL only instead of the original operation to the original URL.
 
  Perhaps extra emphasized if the original transfer is a large POST that
  redirects to a separate GET, and that GET is what gets the 529
  properly. Look into making the preload support in runtests.pl portable such
  that it uses DYLD_INSERT_LIBRARIES on macOS.
 
-20.8 Run web-platform-tests url tests
+20.8 Run web-platform-tests URL tests
 
- Run web-platform-tests url tests and compare results with browsers on wpt.fyi
+ Run web-platform-tests URL tests and compare results with browsers on wpt.fyi
 
  It would help us find issues to fix and help us document where our parser
  differs from the WHATWG URL spec parsers.
 
  See https://github.com/curl/curl/issues/4477
 
-20.9 Bring back libssh tests on Travis
-
- In https://github.com/curl/curl/pull/7012 we remove the libssh builds and
- tests from Travis CI due to them not working. This should be remedied and
- libssh builds be brought back.
-
-
 21. MQTT
 
 21.1 Support rate-limiting
index 83b0905dc37cf7187966899857da3bb6627fd240..7d0d77e66acf0b9faa51e4c1c146e6014e6a335f 100644 (file)
@@ -30,7 +30,7 @@
  request a particular action, and then the server replies a few text lines
  before the actual requested content is sent to the client.
 
- The client, curl, sends a HTTP request. The request contains a method (like
+ The client, curl, sends an HTTP request. The request contains a method (like
  GET, POST, HEAD etc), a number of request headers and sometimes a request
  body. The HTTP server responds with a status line (indicating if things went
  well), response headers and most often also a response body. The "body" part
  want to know the amount of milliseconds between two points in a transfer. For
  those, and other similar situations, the
  [`--trace-time`](https://curl.se/docs/manpage.html#--trace-time) option
- is what you need. it will prepend the time to each trace output line:
+ is what you need. It will prepend the time to each trace output line:
 
     curl --trace-ascii d.txt --trace-time http://example.com/
 
 ## See the Response
 
  By default curl sends the response to stdout. You need to redirect it
- somewhere to avoid that, most often that is done with ` -o` or `-O`.
+ somewhere to avoid that, most often that is done with `-o` or `-O`.
 
 # URL
 
@@ -74,7 +74,7 @@
 
  The Uniform Resource Locator format is how you specify the address of a
  particular resource on the Internet. You know these, you have seen URLs like
- https://curl.se or https://yourbank.com a million times. RFC 3986 is the
+ https://curl.se or https://example.com a million times. RFC 3986 is the
  canonical spec. And yeah, the formal name is not URL, it is URI.
 
 ## Host
  The port number you specify in the URL is the number that the server uses to
  offer its services. Sometimes you may use a proxy, and then you may
  need to specify that proxy's port number separately from what curl needs to
- connect to the server. Like when using a HTTP proxy on port 4321:
+ connect to the server. Like when using an HTTP proxy on port 4321:
 
     curl --proxy http://proxy.example.org:4321 http://remote.example.org/
 
 
  A single curl command line may involve one or many URLs. The most common case
  is probably to just use one, but you can specify any amount of URLs. Yes
- any. No limits. you will then get requests repeated over and over for all the
+ any. No limits. You will then get requests repeated over and over for all the
  given URLs.
 
- Example, send two GETs:
+ Example, send two GET requests:
 
     curl http://url1.example.com http://url2.example.com
 
 
 ## Forms explained
 
- Forms are the general way a website can present a HTML page with fields for
+ Forms are the general way a website can present an HTML page with fields for
  the user to enter data in, and then press some kind of 'OK' or 'Submit'
  button to get that data sent to the server. The server then typically uses
  the posted data to decide how to act. Like using the entered words to search
  And to use curl to post this form with the same data filled in as before, we
  could do it like:
 
-    curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when.cgi
+    curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when/junk.cgi
 
  This kind of POST will use the Content-Type
  `application/x-www-form-urlencoded` and is the most widely used POST kind.
 
 ## Figure Out What A POST Looks Like
 
- When you are about fill in a form and send to a server by using curl instead
of a browser, you are of course interested in sending a POST exactly the way
- your browser does.
+ When you are about to fill in a form and send it to a server by using curl
instead of a browser, you are of course interested in sending a POST exactly
the way your browser does.
 
  An easy way to get to see this, is to save the HTML page with the form on
  your local disk, modify the 'method' to a GET, and press the submit button
 
 ## PUT
 
- Perhaps the best way to upload data to a HTTP server is to use PUT. Then
+ Perhaps the best way to upload data to an HTTP server is to use PUT. Then
  again, this of course requires that someone put a program or script on the
- server end that knows how to receive a HTTP PUT stream.
+ server end that knows how to receive an HTTP PUT stream.
 
- Put a file to a HTTP server with curl:
+ Put a file to an HTTP server with curl:
 
     curl --upload-file uploadfile http://www.example.com/receive.cgi
 
 
 ## Proxy Authentication
 
- Sometimes your HTTP access is only available through the use of a HTTP
- proxy. This seems to be especially common at various companies. A HTTP proxy
+ Sometimes your HTTP access is only available through the use of an HTTP
+ proxy. This seems to be especially common at various companies. An HTTP proxy
  may require its own user and password to allow the client to get through to
  the Internet. To specify those with curl, run something like:
 
 
 ## Referer
 
- A HTTP request may include a 'referer' field (yes it is misspelled), which
+ An HTTP request may include a 'referer' field (yes it is misspelled), which
  can be used to tell from which URL the client got to this particular
  resource. Some programs/scripts check the referer field of requests to verify
  that this was not arriving from an external site or an unknown page. While
  applications use this information to decide how to display pages. Silly web
  programmers try to make different pages for users of different browsers to
  make them look the best possible for their particular browsers. They usually
- also do different kinds of javascript, vbscript etc.
+ also do different kinds of JavaScript etc.
 
  At times, you will see that getting a page with curl will not return the same
  page that you see when getting the page with your browser. Then you know it
  If you use curl to POST to a site that immediately redirects you to another
  page, you can safely use
  [`--location`](https://curl.se/docs/manpage.html#-L) (`-L`) and
- `--data`/`--form` together. curl will only use POST in the first request, and
+ `--data`/`--form` together. Curl will only use POST in the first request, and
  then revert to GET in the following operations.
 
 ## Other redirects
 
- Browser typically support at least two other ways of redirects that curl
+ Browsers typically support at least two other ways of redirects that curl
  does not: first the html may contain a meta refresh tag that asks the browser
  to load a specific URL after a set number of seconds, or it may use
javascript to do it.
JavaScript to do it.
 
 # Cookies
 
  SSL. SSL encrypts all the data that is sent and received over the network and
  thus makes it harder for attackers to spy on sensitive information.
 
- SSL (or TLS as the latest version of the standard is called) offers a
- truckload of advanced features to allow all those encryptions and key
- infrastructure mechanisms encrypted HTTP requires.
+ SSL (or TLS as the current version of the standard is called) offers a set of
+ advanced features to do secure transfers over HTTP.
 
  Curl supports encrypted fetches when built to use a TLS library and it can be
  built to use one out of a fairly large set of libraries - `curl -V` will show
- which one your curl was built to use (if any!). To get a page from a HTTPS
+ which one your curl was built to use (if any!). To get a page from an HTTPS
  server, simply run curl like:
 
     curl https://secure.example.com
  side certificates. All certificates are locked with a pass phrase, which you
  need to enter before the certificate can be used by curl. The pass phrase
  can be specified on the command line or if not, entered interactively when
- curl queries for it. Use a certificate with curl on a HTTPS server like:
+ curl queries for it. Use a certificate with curl on an HTTPS server like:
 
     curl --cert mycert.pem https://secure.example.com
 
  verified.
 
  More about server certificate verification and ca cert bundles can be read in
- the [SSLCERTS document](https://curl.se/docs/sslcerts.html).
+ the [`SSLCERTS` document](https://curl.se/docs/sslcerts.html).
 
  At times you may end up with your own CA cert store and then you can tell
  curl to use that to verify the server's certificate:
  Doing fancy stuff, you may need to add or change elements of a single curl
  request.
 
- For example, you can change the POST request to a PROPFIND and send the data
- as `Content-Type: text/xml` (instead of the default Content-Type) like this:
+ For example, you can change the POST method to `PROPFIND` and send the data
+ as `Content-Type: text/xml` (instead of the default `Content-Type`) like
+ this:
 
     curl --data "<xml>" --header "Content-Type: text/xml" \
       --request PROPFIND example.com
 
  You can delete a default header by providing one without content. Like you
- can ruin the request by chopping off the Host: header:
+ can ruin the request by chopping off the `Host:` header:
 
     curl --header "Host:" http://www.example.com
 
  make sure you got there through their login page) so you should make a habit
  of first getting the login-form page to capture the cookies set there.
 
- Some web-based login systems feature various amounts of javascript, and
+ Some web-based login systems feature various amounts of JavaScript, and
  sometimes they use such code to set or modify cookie contents. Possibly they
  do that to prevent programmed logins, like this manual describes how to...
  Anyway, if reading the code is not enough to let you repeat the behavior
  manually, capturing the HTTP requests done by your browsers and analyzing the
  sent cookies is usually a working method to work out how to shortcut the
javascript need.
JavaScript need.
 
  In the actual `<form>` tag for the login, lots of sites fill-in
  random/session or otherwise secretly generated hidden tags and you may need
index 6ebf86bd472e8014e7e166ea306cdb4110591d7a..691fcceacd66cf0a8bce45a1fa1af5fe83207952 100644 (file)
@@ -5,7 +5,7 @@
 The official "URL syntax" is primarily defined in these two different
 specifications:
 
- - [RFC 3986](https://tools.ietf.org/html/rfc3986) (although URL is called
+ - [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) (although URL is called
    "URI" in there)
  - [The WHATWG URL Specification](https://url.spec.whatwg.org/)
 
@@ -153,7 +153,7 @@ since it often means passing around the password in plain text and is thus a
 security risk.
 
 URLs for IMAP, POP3 and SMTP also support *login options* as part of the
-userinfo field. they are provided as a semicolon after the password and then
+userinfo field. They are provided as a semicolon after the password and then
 the options.
 
 ## Hostname
@@ -220,7 +220,7 @@ directory listing for the root / home directory will be returned.
 
 FTP servers typically put the user in its "home directory" after login, which
 then differs between users. To explicitly specify the root directory of an FTP
-server start the path with double slash `//` or `/%2f` (2F is the hexadecimal
+server, start the path with double slash `//` or `/%2f` (2F is the hexadecimal
 value of the ascii code for the slash).
 
 ## FILE
@@ -259,7 +259,7 @@ A folder list on the user's inbox:
 
     imap://user:password@mail.example.com/INBOX
 
-Select the user's inbox and fetch message with uid = 1:
+Select the user's inbox and fetch message with `uid = 1`:
 
     imap://user:password@mail.example.com/INBOX/;UID=1
 
@@ -289,26 +289,26 @@ subject line:
 
     imap://user:password@mail.example.com/INBOX?SUBJECT%20shadows
 
-Searching via the query part of the URL `?` is a search request for the results
-to be returned as message sequence numbers (MAILINDEX). It is possible to make
-a search request for results to be returned as unique ID numbers (UID) by using
-a custom curl request via `-X`. UID numbers are unique per session (and
-multiple sessions when UIDVALIDITY is the same). For example, if you are
-searching for `"foo bar"` in header+body (TEXT) and you want the matching
-MAILINDEX numbers returned then you could search via URL:
+Searching via the query part of the URL `?` is a search request for the
+results to be returned as message sequence numbers (`MAILINDEX`). It is
+possible to make a search request for results to be returned as unique ID
+numbers (`UID`) by using a custom curl request via `-X`. `UID` numbers are
+unique per session (and multiple sessions when `UIDVALIDITY` is the same). For
+example, if you are searching for `"foo bar"` in header+body (`TEXT`) and you
+want the matching `MAILINDEX` numbers returned then you could search via URL:
 
     imap://user:password@mail.example.com/INBOX?TEXT%20%22foo%20bar%22
 
-.. but if you wanted matching UID numbers you would have to use a custom request:
+If you want matching `UID` numbers you have to use a custom request:
 
     imap://user:password@mail.example.com/INBOX -X "UID SEARCH TEXT \"foo bar\""
 
 For more information about IMAP commands please see RFC 9051. For more
 information about the individual components of an IMAP URL please see RFC 5092.
 
-* Note old curl versions would FETCH by message sequence number when UID was
-specified in the URL. That was a bug fixed in 7.62.0, which added MAILINDEX to
-FETCH by mail sequence number.
+* Note old curl versions would `FETCH` by message sequence number when `UID`
+was specified in the URL. That was a bug fixed in 7.62.0, which added
+`MAILINDEX` to `FETCH` by mail sequence number.
 
 ## LDAP
 
@@ -317,21 +317,21 @@ Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field is
 separated by a question mark and when that field is not required an empty
 string with the question mark separator should be included.
 
-Search for the DN as `My Organisation`:
+Search for the `DN` as `My Organization`:
 
-    ldap://ldap.example.com/o=My%20Organisation
+    ldap://ldap.example.com/o=My%20Organization
 
-the same search but will only return postalAddress attributes:
+the same search but will only return `postalAddress` attributes:
 
-    ldap://ldap.example.com/o=My%20Organisation?postalAddress
+    ldap://ldap.example.com/o=My%20Organization?postalAddress
 
-Search for an empty DN and request information about the
+Search for an empty `DN` and request information about the
 `rootDomainNamingContext` attribute for an Active Directory server:
 
     ldap://ldap.example.com/?rootDomainNamingContext
 
 For more information about the individual components of a LDAP URL please
-see [RFC 4516](https://tools.ietf.org/html/rfc4516).
+see [RFC 4516](https://datatracker.ietf.org/doc/html/rfc4516).
 
 ## POP3
 
index de0b0d4f852c7adacd22e8cd19d3a1f83d59b726..0ec9cd518ab8912e4356f5d531831ca3dc89869f 100644 (file)
@@ -1,7 +1,7 @@
 Version Numbers and Releases
 ============================
 
- Curl is not only curl. Curl is also libcurl. they are actually individually
+ Curl is not only curl. Curl is also libcurl. They are actually individually
  versioned, but they usually follow each other closely.
 
  The version numbering is always built up using the same system:
@@ -37,7 +37,7 @@ Version Numbers and Releases
 
  As a service to any application that might want to support new libcurl
  features while still being able to build with older versions, all releases
- have the libcurl version stored in the curl/curlver.h file using a static
+ have the libcurl version stored in the `curl/curlver.h` file using a static
  numbering scheme that can be used for comparison. The version number is
  defined as:
 
@@ -45,10 +45,10 @@ Version Numbers and Releases
 #define LIBCURL_VERSION_NUM 0xXXYYZZ
 ```
 
- Where XX, YY and ZZ are the main version, release and patch numbers in
+ Where `XX`, `YY` and `ZZ` are the main version, release and patch numbers in
  hexadecimal. All three number fields are always represented using two digits
  (eight bits each). 1.2 would appear as "0x010200" while version 9.11.7
- appears as "0x090b07".
+ appears as `0x090b07`.
 
  This 6-digit hexadecimal number is always a greater number in a more recent
  release. It makes comparisons with greater than and less than work.
diff --git a/docs/WEBSOCKET.md b/docs/WEBSOCKET.md
new file mode 100644 (file)
index 0000000..25b1e52
--- /dev/null
@@ -0,0 +1,121 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
+# WebSocket in curl
+
+## API
+
+The WebSocket API is described in the individual man pages for the new API.
+
+WebSocket with libcurl can be done two ways.
+
+1. Get the WebSocket frames from the server sent to the write callback. You
+   can then respond with `curl_ws_send()` from within the callback (or outside
+   of it).
+
+2. Set `CURLOPT_CONNECT_ONLY` to 2L (new for WebSocket), which makes libcurl
+   do a HTTP GET + `Upgrade:` request plus response in the
+   `curl_easy_perform()` call before it returns and then you can use
+   `curl_ws_recv()` and `curl_ws_send()` to receive and send WebSocket frames
+   from and to the server.
+
+The new options to `curl_easy_setopt()`:
+
+ `CURLOPT_WS_OPTIONS` - to control specific behavior. `CURLWS_RAW_MODE` makes
+ libcurl provide all WebSocket traffic raw in the callback.
+
+The new function calls:
+
+ `curl_ws_recv()` - receive a WebSocket frame
+
+ `curl_ws_send()` - send a WebSocket frame
+
+ `curl_ws_meta()` - return WebSocket metadata within a write callback
+
+## Max frame size
+
+The current implementation only supports frame sizes up to a max (64K right
+now). This is because the API delivers full frames and it then cannot manage
+the full 2^63 bytes size.
+
+If we decide we need to support (much) larger frames than 64K, we need to
+adjust the API accordingly to be able to deliver partial frames in both
+directions.
+
+## Errors
+
+If the given WebSocket URL (using `ws://` or `wss://`) fails to get upgraded
+via a 101 response code and instead gets another response code back from the
+HTTP server - the transfer will return `CURLE_HTTP_RETURNED_ERROR` for that
+transfer. Note then that even 2xx response codes are then considered error
+since it failed to provide a WebSocket transfer.
+
+## Test suite
+
+I looked for an existing small WebSocket server implementation with maximum
+flexibility to dissect and cram into the test suite but I ended up deciding
+that extending the existing test suite server sws to deal with WebSocket
+might be the better way.
+
+- This server is already integrated and working in the test suite
+
+- We want maximum control and ability to generate broken protocol and negative
+  tests as well. A dumber and simpler TCP server could then be easier to
+  massage into this than a "proper" WebSocket server.
+
+## Command line tool WebSocket
+
+The plan is to make curl do WebSocket similar to telnet/nc. That part of the
+work has not been started.
+
+Ideas:
+
+ - Read stdin and send off as messages. Consider newline as end of fragment.
+   (default to text? offer option to set binary)
+ - Respond to PINGs automatically
+ - Issue PINGs at some default interval (option to switch off/change interval?)
+ - Allow `-d` to specify (initial) data to send (should the format allow for
+   multiple separate frames?)
+ - Exit after N messages received, where N can be zero.
+
+## Future work
+
+- Verify the Sec-WebSocket-Accept response. It requires a sha-1 function.
+- Verify Sec-WebSocket-Extensions and Sec-WebSocket-Protocol in the response
+- Make WebSocket work with hyper
+- Consider a `curl_ws_poll()`
+- Make sure WebSocket code paths are fuzzed
+- Add client-side PING interval
+- Provide option to disable PING-PONG automation
+- Support compression (`CURLWS_COMPRESS`)
+
+## Why not libWebSocket
+
+[libWebSocket](https://libWebSocket.org/) is said to be a solid, fast and
+efficient WebSocket library with a vast amount of users. My plan was
+originally to build upon it to skip having to implement the low level parts of
+WebSocket myself.
+
+Here are the reasons why I have decided to move forward with WebSocket in
+curl **without using libWebSocket**:
+
+- doxygen generated docs only makes them hard to navigate. No tutorial, no
+  clearly written explanatory pages for specific functions.
+
+- seems (too) tightly integrated with a specific TLS library, while we want to
+  support WebSocket with whatever TLS library libcurl was already made to
+  work with.
+
+- seems (too) tightly integrated with event libraries
+
+- the references to threads and thread-pools in code and APIs indicate too
+  much logic for our purposes
+
+- "bloated" - it is a *huge* library that is actually more lines of code than
+  libcurl itself
+
+- WebSocket is a fairly simple protocol on the network/framing layer so
+  making a homegrown handling of it should be fine
index ae25c5c4ac071f1a251ad5733a136a779cb45a2b..fe7870f5d799bff0bcee7e2381cfcb803b627e04 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 set(MANPAGE "${CURL_BINARY_DIR}/docs/curl.1")
 
index e3f5681a2fddc4835375a6c0cc5674fe97e5cf60..b760a9ad82821ce1cf988a52790f92bdd97a1d9a 100644 (file)
@@ -1,3 +1,9 @@
+<!--
+  Copyright (C) 2000 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+
+  SPDX-License-Identifier: curl
+-->
+
 # curl man page generator
 
 This is the curl man page generator. It generates a single nroff man page
@@ -17,18 +23,22 @@ Each file has a set of meta-data and a body of text.
 
 ### Meta-data
 
-    Short: (single letter, without dash)
-    Long: (long form name, without dashes)
+    Added: (version number in which this was added)
     Arg: (the argument the option takes)
+    c: (copyright line)
+    Example: (example command line, without "curl" and can use `$URL`)
+    Experimental: yes (if so)
+    Help: (short text for the --help output for this option)
+    Long: (long form name, without dashes)
     Magic: (description of "magic" options)
-    Tags: (space separated list)
-    Protocols: (space separated list for which protocols this option works)
-    Added: (version number in which this was added)
+    Multi: single/append/boolean/mutex (if used more than once)
     Mutexed: (space separated list of options this overrides, no dashes)
+    Protocols: (space separated list for which protocols this option works)
     Requires: (space separated list of features this requires, no dashes)
     See-also: (space separated list of related options, no dashes)
-    Help: (short text for the --help output for this option)
-    Example: (example command line, without "curl" and can use `$URL`)
+    Short: (single letter, without dash)
+    SPDX-License-Identifier: curl
+    Tags: (space separated list)
     --- (end of meta-data)
 
 ### Body
index f416d553e3d3971d8898cf9349bb3f8cc564f344..df38e192a732a4c1f523fb040c78b86bec827177 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 AUTOMAKE_OPTIONS = foreign no-dependencies
index 045ee5e6d0b1ca8902b8f696171267030b3584f0..4450fa73a81ad2abb8265b3e4caeac9b128ab034 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #***************************************************************************
@@ -43,7 +45,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -56,6 +58,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Shared between Makefile.am and CMakeLists.txt
 VPATH = @srcdir@
@@ -134,15 +138,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = docs/cmdline-opts
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -236,6 +238,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -253,6 +256,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -310,6 +314,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -328,12 +333,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -400,7 +406,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -498,6 +503,7 @@ DPAGES = \
   interface.d \
   ipv4.d \
   ipv6.d \
+  json.d \
   junk-session-cookies.d \
   keepalive-time.d \
   key-type.d \
@@ -526,6 +532,7 @@ DPAGES = \
   next.d \
   no-alpn.d \
   no-buffer.d \
+  no-clobber.d \
   no-keepalive.d \
   no-npn.d \
   no-progress-meter.d \
@@ -583,12 +590,14 @@ DPAGES = \
   quote.d \
   random-file.d \
   range.d \
+  rate.d \
   raw.d \
   referer.d \
   remote-header-name.d \
   remote-name-all.d \
   remote-name.d \
   remote-time.d \
+  remove-on-error.d \
   request-target.d \
   request.d \
   resolve.d \
index f8b5711271c454d2ea1910b85813ab477f2de41e..350fa9fa7c790d502b81e076ec12d206f1618c06 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Shared between Makefile.am and CMakeLists.txt
 
@@ -111,6 +113,7 @@ DPAGES = \
   interface.d \
   ipv4.d \
   ipv6.d \
+  json.d \
   junk-session-cookies.d \
   keepalive-time.d \
   key-type.d \
@@ -139,6 +142,7 @@ DPAGES = \
   next.d \
   no-alpn.d \
   no-buffer.d \
+  no-clobber.d \
   no-keepalive.d \
   no-npn.d \
   no-progress-meter.d \
@@ -196,12 +200,14 @@ DPAGES = \
   quote.d \
   random-file.d \
   range.d \
+  rate.d \
   raw.d \
   referer.d \
   remote-header-name.d \
   remote-name-all.d \
   remote-name.d \
   remote-time.d \
+  remove-on-error.d \
   request-target.d \
   request.d \
   resolve.d \
index fcd2d94c980b542d48147e0cd67082ee206b40bd..32cd5e2099a7d1e254efb7cf3043c987cd2afa71 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: abstract-unix-socket
 Arg: <path>
 Help: Connect via abstract Unix domain socket
@@ -6,6 +8,7 @@ Protocols: HTTP
 Category: connection
 See-also: unix-socket
 Example: --abstract-unix-socket socketpath $URL
+Multi: single
 ---
 Connect through an abstract Unix domain socket, instead of using the network.
 Note: netstat shows the path of an abstract socket prefixed with '@', however
index 3ad223049496df126453ba89c6391b50a5c2f3d0..6689d605ca584bcc8715b0a5bd6bea0477afcb16 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: alt-svc
 Arg: <file name>
 Protocols: HTTPS
@@ -6,6 +8,7 @@ Added: 7.64.1
 Category: http
 See-also: resolve connect-to
 Example: --alt-svc svc.txt $URL
+Multi: append
 ---
 This option enables the alt-svc parser in curl. If the file name points to an
 existing alt-svc cache file, that will be used. After a completed transfer,
index 10923417246b5dcb2f1109dabe9ee99acdde2c76..cc871b6e2f34ad9f963e2f8613c3be80101c8422 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: anyauth
 Help: Pick any authentication method
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: proxy-anyauth basic digest
 Category: http proxy auth
 Example: --anyauth --user me:pwd $URL
 Added: 7.10.6
+Multi: mutex
 ---
 Tells curl to figure out authentication method by itself, and use the most
 secure one the remote site claims to support. This is done by first doing a
index 7ea02d70861db4b0219b44113eeef6610a65df92..b1eab78cfe5c0961dc1c1705bd66c28bb3bdf99a 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: a
 Long: append
 Help: Append to target file when uploading
@@ -6,6 +8,7 @@ Category: ftp sftp
 See-also: range continue-at
 Example: --upload-file local --append ftp://example.com/
 Added: 4.8
+Multi: boolean
 ---
 When used in an upload, this makes curl append to the target file instead of
 overwriting it. If the remote file does not exist, it will be created. Note
index c13b8da76451e2dd2874abafa086357c7320dda6..7f69c03ab426ca246e2b7b86a1ff91d8764476cf 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: aws-sigv4
 Arg: <provider1[:provider2[:region[:service]]]>
 Help: Use AWS V4 signature authentication
@@ -5,6 +7,7 @@ Category: auth http
 Added: 7.75.0
 See-also: basic user
 Example: --aws-sigv4 "aws:amz:east-2:es" --user "key:secret" $URL
+Multi: single
 ---
 Use AWS V4 signature authentication in the transfer.
 
index abab7d0683882f3510a05fedcf254cb8f0025a6d..ca873b8bb62dece2afabadbb124a308d9aba85fb 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: basic
 Help: Use HTTP Basic Authentication
 See-also: proxy-basic
@@ -5,6 +7,7 @@ Protocols: HTTP
 Category: auth
 Example: -u name:password --basic $URL
 Added: 7.10.6
+Multi: mutex
 ---
 Tells curl to use HTTP Basic authentication with the remote host. This is the
 default and this option is usually pointless, unless you use it to override a
index e066471c6cfc5a558bfbdc6c355a603b6c87a489..1f86b0e967026b6a6283b17bbe6fbf250960e55a 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: cacert
 Arg: <file>
 Help: CA certificate to verify peer against
@@ -6,6 +8,7 @@ Category: tls
 See-also: capath insecure
 Example: --cacert CA-file.txt $URL
 Added: 7.5
+Multi: single
 ---
 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
@@ -33,5 +36,3 @@ preferred method of verifying the peer's certificate chain.
 with libcurl 7.60 or later. This option is supported for backward
 compatibility with other SSL engines; instead it is recommended to use
 Windows' store of root certificates (the default for Schannel).
-
-If this option is used several times, the last one will be used.
index 7f879a2a4b9a3673d30725509a3929c17ea02e7f..552c05a3cfb8e92619dce0bf45cc5f61af909cec 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: capath
 Arg: <dir>
 Help: CA directory to verify peer against
@@ -6,14 +8,14 @@ Category: tls
 See-also: cacert insecure
 Example: --capath /local/directory $URL
 Added: 7.9.8
+Multi: single
 ---
 Tells curl to use the specified certificate directory to verify the
 peer. Multiple paths can be provided by separating them with ":" (e.g.
-\&"path1:path2:path3"). The certificates must be in PEM format, and if curl is
+"path1:path2:path3"). The certificates must be in PEM format, and if curl is
 built against OpenSSL, the directory must have been processed using the
 c_rehash utility supplied with OpenSSL. Using --capath can allow
 OpenSSL-powered curl to make SSL-connections much more efficiently than using
 --cacert if the --cacert file contains many CA certificates.
 
-If this option is set, the default capath value will be ignored, and if it is
-used several times, the last one will be used.
+If this option is set, the default capath value will be ignored.
index c3b9bdb361360761e89c959497774757e578b8f6..83241dba2fc82728f5a126e2d84fb99ca804b8c8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: cert-status
 Protocols: TLS
 Added: 7.41.0
@@ -5,12 +7,13 @@ Help: Verify the status of the server cert via OCSP-staple
 Category: tls
 See-also: pinnedpubkey
 Example: --cert-status $URL
+Multi: boolean
 ---
 Tells curl to verify the status of the server certificate by using the
 Certificate Status Request (aka. OCSP stapling) TLS extension.
 
 If this option is enabled and the server sends an invalid (e.g. expired)
-response, if the response suggests that the server certificate has been revoked,
-or no response at all is received, the verification fails.
+response, if the response suggests that the server certificate has been
+revoked, or no response at all is received, the verification fails.
 
 This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
index a31f40ef53a2c203498fdac2771c52b33c382081..13643fb53bbdc8562a1cfd7130e8c74e1f39cf44 100644 (file)
@@ -1,13 +1,18 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: cert-type
 Protocols: TLS
 Arg: <type>
-Help: Certificate type (DER/PEM/ENG)
+Help: Certificate type (DER/PEM/ENG/P12)
 See-also: cert key key-type
 Category: tls
 Example: --cert-type PEM --cert file $URL
 Added: 7.9.3
+Multi: single
 ---
 Tells curl what type the provided client certificate is using. PEM, DER, ENG
-and P12 are recognized types. If not specified, PEM is assumed.
+and P12 are recognized types.
 
-If this option is used several times, the last one will be used.
+The default type depends on the TLS backend and is usually PEM, however for
+Secure Transport and Schannel it is P12. If --cert is a pkcs11: URI then ENG is
+the default type.
index 0e8776e2ef20ca352d30a3ad40f079cff0626625..54c5cb0a0c5d54152a56105060b6ef791a999fa8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: E
 Long: cert
 Arg: <certificate[:password]>
@@ -7,24 +9,29 @@ See-also: cert-type key key-type
 Category: tls
 Example: --cert certfile --key keyfile $URL
 Added: 5.0
+Multi: single
 ---
 Tells curl to use the specified client certificate file when getting a file
 with HTTPS, FTPS or another SSL-based protocol. The certificate must be in
 PKCS#12 format if using Secure Transport, or PEM format if using any other
 engine. If the optional password is not specified, it will be queried for on
-the terminal. Note that this option assumes a \&"certificate" file that is the
-private key and the client certificate concatenated! See --cert and --key to
+the terminal. Note that this option assumes a certificate file that is the
+private key and the client certificate concatenated. See --cert and --key to
 specify them independently.
 
+In the <certificate> portion of the argument, you must escape the character ":"
+as "\\:" so that it is not recognized as the password delimiter. Similarly, you
+must escape the character "\\" as "\\\\" so that it is not recognized as an
+escape character.
+
 If curl is built against the NSS SSL library then this option can tell
 curl the nickname of the certificate to use within the NSS database defined
 by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the
 NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be
-loaded. If you want to use a file from the current directory, please precede
-it with "./" prefix, in order to avoid confusion with a nickname. If the
-nickname contains ":", it needs to be preceded by "\\" so that it is not
-recognized as password delimiter. If the nickname contains "\\", it needs to
-be escaped as "\\\\" so that it is not recognized as an escape character.
+loaded.
+
+If you provide a path relative to the current directory, you must prefix the
+path with "./" in order to avoid confusion with an NSS database nickname.
 
 If curl is built against OpenSSL library, and the engine pkcs11 is available,
 then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in
@@ -49,5 +56,3 @@ usually a SHA-1 hex string which you can see in certificate details. Following
 store locations are supported: CurrentUser, LocalMachine, CurrentService,
 Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
 LocalMachineEnterprise.
-
-If this option is used several times, the last one will be used.
index 24d3d5863c99c5739c33a8fcc0e1512621647415..e64a3f6a0110a77770b7b4e5e81e48bf0d4424de 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ciphers
 Arg: <list of ciphers>
 Help: SSL ciphers to use
@@ -6,10 +8,9 @@ Category: tls
 See-also: tlsv1.3
 Example: --ciphers ECDHE-ECDSA-AES256-CCM8 $URL
 Added: 7.9
+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
-
-If this option is used several times, the last one will be used.
index 0d198578b86ade67c9d1e8d7059f4901104aff15..0521a2ba4bc4a1447ca347986902ece8e8fbbdac 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: compressed-ssh
 Help: Enable SSH compression
 Protocols: SCP SFTP
@@ -5,6 +7,7 @@ Added: 7.56.0
 Category: scp ssh
 See-also: compressed
 Example: --compressed-ssh sftp://example.com/
+Multi: boolean
 ---
 Enables built-in SSH compression.
 This is a request, not an order; the server may or may not do it.
index 8e8db97ccb67b1d4e246c1d4b55804df865c0ac4..f3b03c6728b59dfa7d8471a3b0b9021cf1560723 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: compressed
 Help: Request compressed response
 Protocols: HTTP
@@ -5,6 +7,7 @@ Category: http
 Example: --compressed $URL
 See-also: compressed-ssh
 Added: 7.10
+Multi: boolean
 ---
 Request a compressed response using one of the algorithms curl supports, and
 automatically decompress the content. Headers are not modified.
index b24a87e1cf372d14d8fefc4e92580ecbeef360ec..84456f627c59e112f8fb39be312c5bc6c9b51586 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: config
 Arg: <file>
 Help: Read config from a file
@@ -6,6 +8,7 @@ Category: curl
 Example: --config file.txt $URL
 Added: 4.10
 See-also: disable
+Multi: append
 ---
 Specify a text file to read curl arguments from. The command line arguments
 found in the text file will be used as if they were provided on the command
@@ -64,9 +67,10 @@ config file is checked for in the following places in this order:
 
 6) Windows: "%USERPROFILE%\\Application Data\\.curlrc"
 
-7) Non-windows: use getpwuid to find the home directory
+7) Non-Windows: use getpwuid to find the home directory
 
-8) On windows, if it finds no .curlrc file in the sequence described above, it
+8) On Windows, if it finds no .curlrc file in the sequence described above, it
 checks for one in the same dir the curl executable is placed.
 
-This option can be used multiple times to load multiple config files.
+On Windows two filenames are checked per location: .curlrc and _curlrc,
+preferring the former. Older versions on Windows checked for _curlrc only.
index 89152baa3241b89f38b2db3c6ee3b804b1783078..6a2889d2168423d307c642a37fd69335f7a57167 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: connect-timeout
 Arg: <fractional seconds>
 Help: Maximum time allowed for connection
@@ -6,10 +8,9 @@ Category: connection
 Example: --connect-timeout 20 $URL
 Example: --connect-timeout 3.14 $URL
 Added: 7.7
+Multi: single
 ---
 Maximum time in seconds that you allow curl's connection to take.  This only
 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.
-
-If this option is used several times, the last one will be used.
index ebea9b9daed6d79b6cedab42dbb55c0154193758..040ea19dd20cab014d3c63a1c19cc9a21074b041 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: connect-to
 Arg: <HOST1:PORT1:HOST2:PORT2>
 Help: Connect to host
@@ -5,6 +7,7 @@ Added: 7.49.0
 See-also: resolve header
 Category: connection
 Example: --connect-to example.com:443:example.net:8443 $URL
+Multi: append
 ---
 
 For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead.
@@ -19,5 +22,3 @@ request's original host/port".
 A "host" specified to this option is compared as a string, so it needs to
 match the name used in request URL. It can be either numerical such as
 "127.0.0.1" or the full host name such as "example.org".
-
-This option can be used many times to add many connect rules.
index b66116c8e9b028d3102b7976cdd3d6c076cd597f..726171a4120b26141c22f593d38aa6998957b504 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: C
 Long: continue-at
 Arg: <offset>
@@ -7,6 +9,7 @@ Category: connection
 Example: -C - $URL
 Example: -C 400 $URL
 Added: 4.8
+Multi: single
 ---
 Continue/Resume a previous file transfer at the given offset. The given offset
 is the exact number of bytes that will be skipped, counting from the beginning
@@ -15,5 +18,3 @@ uploads, the FTP server command SIZE will not be used by curl.
 
 Use "-C -" to tell curl to automatically find out where/how to resume the
 transfer. It then uses the given output/input files to figure that out.
-
-If this option is used several times, the last one will be used.
index 0a02c05b59c084e1575253728f42ee679c46a521..2f3b8e9e65c0a047a8b59264ee0f38d2b3082adf 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: c
 Long: cookie-jar
 Arg: <filename>
@@ -8,6 +10,7 @@ Example: -c store-here.txt $URL
 Example: -c store-here.txt -b read-these $URL
 Added: 7.9
 See-also: cookie
+Multi: single
 ---
 Specify to which file you want curl to write all cookies after a completed
 operation. Curl writes all cookies from its in-memory cookie storage to the
@@ -24,6 +27,3 @@ If the cookie jar cannot be created or written to, the whole curl operation
 will not fail or even report an error clearly. Using --verbose will get a
 warning displayed, but that is the only visible feedback you get about this
 possibly lethal situation.
-
-If this option is used several times, the last specified file name will be
-used.
index ab4b2793bcbdcdb3ff42e25bbbb9dfd6f91c9761..2b736539e4ceca6863eed4776fcf90bbd70c2d88 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: b
 Long: cookie
 Arg: <data|filename>
@@ -8,10 +10,14 @@ Example: -b cookiefile $URL
 Example: -b cookiefile -c cookiefile $URL
 See-also: cookie-jar junk-session-cookies
 Added: 4.9
+Multi: append
 ---
-Pass the data to the HTTP server in the Cookie header. It is supposedly
-the data previously received from the server in a "Set-Cookie:" line. The
-data should be in the format "NAME1=VALUE1; NAME2=VALUE2".
+Pass the data to the HTTP server in the Cookie header. It is supposedly the
+data previously received from the server in a "Set-Cookie:" line. The data
+should be in the format "NAME1=VALUE1; NAME2=VALUE2". This makes curl use the
+cookie header with this content explicitly in all outgoing request(s). If
+multiple requests are done due to authentication, followed redirects or
+similar, they will all get this cookie passed on.
 
 If no '=' symbol is used in the argument, it is instead treated as a filename
 to read previously stored cookie from. This option also activates the cookie
@@ -31,8 +37,6 @@ cookie is not sent since the domain will never match. To address this, set a
 domain in Set-Cookie line (doing that will include sub-domains) or preferably:
 use the Netscape format.
 
-This option can be used multiple times.
-
 Users often want to both read cookies from a file and write updated cookies
 back to a file, so using both --cookie and --cookie-jar in the same command
 line is common.
index 5d20659034d928f2c54acca32a4089e86291125a..01b7ccf92be487c35d42f5a4ed206669007969e6 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: create-dirs
 Help: Create necessary local directory hierarchy
 Category: curl
 Example: --create-dirs --output local/dir/file $URL
 Added: 7.10.3
 See-also: ftp-create-dirs output-dir
+Multi: boolean
 ---
 When used in conjunction with the --output option, curl will create the
 necessary local directory hierarchy as needed. This option creates the
index 429b5ee33ce40b18affcc90e34558226dbc6436c..32e6e84bf04a680c6fa269d04ade1c4434ba5fd8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: create-file-mode
 Arg: <mode>
 Help: File mode for created files
@@ -6,11 +8,10 @@ Category: sftp scp file upload
 See-also: ftp-create-dirs
 Added: 7.75.0
 Example: --create-file-mode 0777 -T localfile sftp://example.com/new
+Multi: single
 ---
 When curl is used to create files remotely using one of the supported
 protocols, this option allows the user to set which 'mode' to set on the file
 at creation time, instead of the default 0644.
 
 This option takes an octal number as argument.
-
-If this option is used several times, the last one will be used.
index 3772fcf2c9b7d6ade57e8fc48c92f4147e83cb4a..f19a5b25da57b51256fa57d6a5aaebd79f628f68 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: crlf
 Help: Convert LF to CRLF in upload
 Protocols: FTP SMTP
@@ -5,6 +7,7 @@ Category: ftp smtp
 Example: --crlf -T file ftp://example.com/
 Added: 5.7
 See-also: use-ascii
+Multi: boolean
 ---
 Convert LF to CRLF in upload. Useful for MVS (OS/390).
 
index 1fdc125751a6fa43489f4a15c082903469d3d027..deb54e1249fb49003c93cf09f1825e368f1edee4 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: crlfile
 Arg: <file>
 Protocols: TLS
@@ -6,8 +8,7 @@ Added: 7.19.7
 Category: tls
 Example: --crlfile rejects.txt $URL
 See-also: cacert capath
+Multi: single
 ---
 Provide a file using PEM format with a Certificate Revocation List that may
 specify peer certificates that are to be considered revoked.
-
-If this option is used several times, the last one will be used.
index b4cb43f0456dba131d2d4b634a12f1f34752002f..84f1291d8c1da44bfb80749d3f96039a2a0c30b5 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: curves
 Arg: <algorithm list>
 Help: (EC) TLS key exchange algorithm(s) to request
@@ -6,6 +8,7 @@ Added: 7.73.0
 Category: tls
 Example: --curves X25519 $URL
 See-also: ciphers
+Multi: single
 ---
 Tells curl to request specific curves to use during SSL session establishment
 according to RFC 8422, 5.1.  Multiple algorithms can be provided by separating
index 52366dc43dae48b8d62156c4b90f12d16ad2dc2b..4f9bdb1d3c67d6f949f5809ec7fc02fe6353dc3f 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: data-ascii
 Arg: <data>
 Help: HTTP POST ASCII data
@@ -6,5 +8,6 @@ Category: http post upload
 Example: --data-ascii @file $URL
 Added: 7.2
 See-also: data-binary data-raw data-urlencode
+Multi: append
 ---
 This is just an alias for --data.
index 32152ee60686d08c53717fa86cea92cfe6617207..c1c9b20d14f20609e09462e13235f8bab4bc39a5 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: data-binary
 Arg: <data>
 Help: HTTP POST binary data
@@ -6,6 +8,7 @@ Category: http post upload
 Example: --data-binary @filename $URL
 Added: 7.2
 See-also: data-ascii
+Multi: append
 ---
 This posts data exactly as specified with no extra processing whatsoever.
 
index b8cd0f72117dec56dd80ebb17c1afb59f7bd3cb7..8ec29fad88ea62a1c779447e01ef205a8185d4d0 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: data-raw
 Arg: <data>
 Protocols: HTTP
@@ -7,6 +9,7 @@ See-also: data
 Category: http post upload
 Example: --data-raw "hello" $URL
 Example: --data-raw "@at@at@" $URL
+Multi: append
 ---
 This posts data similarly to --data but without the special
 interpretation of the @ character.
index c9cecec51631284e15d0844eb125208d4bc05b34..e9adc4563335e0115f9353f53b01a0423f5c970c 100644 (file)
@@ -1,6 +1,8 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: data-urlencode
 Arg: <data>
-Help: HTTP POST data url encoded
+Help: HTTP POST data URL encoded
 Protocols: HTTP
 See-also: data data-raw
 Added: 7.18.0
@@ -9,6 +11,7 @@ Example: --data-urlencode name=val $URL
 Example: --data-urlencode =encodethis $URL
 Example: --data-urlencode name@file $URL
 Example: --data-urlencode @fileonly $URL
+Multi: append
 ---
 This posts data, similar to the other --data options with the exception
 that this performs URL-encoding.
index 682314c022c85ea470e0fef47ae62e1289a992fd..628b150693d5fe8fc36af9414c12f91cc082927c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: data
 Short: d
 Arg: <data>
@@ -10,6 +12,7 @@ Example: -d "name=curl" $URL
 Example: -d "name=curl" -d "tool=cmdline" $URL
 Example: -d @filename $URL
 Added: 4.0
+Multi: append
 ---
 Sends the specified data in a POST request to the HTTP server, in the same way
 that a browser does when a user has filled in an HTML form and presses the
@@ -23,12 +26,12 @@ the @ character. To post data purely binary, you should instead use the
 
 If any of these options is used more than once on the same command line, the
 data pieces specified will be merged with a separating &-symbol. Thus, using
-\&'-d name=daniel -d skill=lousy' would generate a post chunk that looks like
-\&'name=daniel&skill=lousy'.
+'-d name=daniel -d skill=lousy' would generate a post chunk that looks like
+'name=daniel&skill=lousy'.
 
 If you start the data with the letter @, the rest should be a file name to
 read the data from, or - if you want curl to read the data from stdin. Posting
-data from a file named \&'foobar' would thus be done with --data @foobar. When
+data from a file named 'foobar' would thus be done with --data @foobar. When
 --data is told to read from a file like that, carriage returns and newlines
 will be stripped out. If you do not want the @ character to have a special
 interpretation use --data-raw instead.
index 858ff0406f564b4906c98430b98cba5ae543338f..c4659d844cbaf75eddcd85e0bb25f98c5e82b4ab 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: delegation
 Arg: <LEVEL>
 Help: GSS-API delegation permission
@@ -6,6 +8,7 @@ Category: auth
 Example: --delegation "none" $URL
 Added: 7.22.0
 See-also: insecure ssl
+Multi: single
 ---
 Set LEVEL to tell the server what it is allowed to delegate when it
 comes to user credentials.
@@ -18,5 +21,3 @@ service ticket, which is a matter of realm policy.
 .IP "always"
 Unconditionally allow the server to delegate.
 .RE
-
-If this option is used several times, the last one will be used.
index 4feb8505dbd25512af61bb005a02c01e21ffa55d..c42486f040f3e557a8014d4dae78bd5b00c5000e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: digest
 Help: Use HTTP Digest Authentication
 Protocols: HTTP
@@ -6,9 +8,8 @@ See-also: user proxy-digest anyauth
 Category: proxy auth http
 Example: -u name:password --digest $URL
 Added: 7.10.6
+Multi: boolean
 ---
 Enables HTTP Digest authentication. This is an authentication scheme that
 prevents the password from being sent over the wire in clear text. Use this in
 combination with the normal --user option to set user name and password.
-
-If this option is used several times, only the first one is used.
index 6b82f13760f290b1a80d89b588343c50affffc21..8a21fed8dc12236805f8ac1c1aa23489fc9385d1 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: disable-eprt
 Help: Inhibit using EPRT or LPRT
 Protocols: FTP
@@ -5,6 +7,7 @@ Category: ftp
 Example: --disable-eprt ftp://example.com/
 Added: 7.10.5
 See-also: disable-epsv ftp-port
+Multi: boolean
 ---
 Tell curl to disable the use of the EPRT and LPRT commands when doing active
 FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT
index 4684726261ed6bd8888eb7f5f68127e467ee9cfc..3f58f508c7bc63d19b24b4caca8e2e065c12b9f7 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: disable-epsv
 Help: Inhibit using EPSV
 Protocols: FTP
@@ -5,6 +7,7 @@ Category: ftp
 Example: --disable-epsv ftp://example.com/
 Added: 7.9.2
 See-also: disable-eprt ftp-port
+Multi: boolean
 ---
 Tell curl to disable the use of the EPSV command when doing passive FTP
 transfers. Curl will normally always first attempt to use EPSV before
index e417571f17261132efaecce3901d81bd9ebdc7b2..4ce33cd612a58e6e5a85a46a95c846cac772e723 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: disable
 Short: q
 Help: Disable .curlrc
@@ -5,6 +7,7 @@ Category: curl
 Example: -q $URL
 Added: 5.0
 See-also: config
+Multi: boolean
 ---
 If used as the first parameter on the command line, the *curlrc* config
 file will not be read and used. See the --config for details on the default
index f3122aea56918abf511a5a8ff232d094542b9d06..3e1de348a8b930355c775be32ea15960fe6ff853 100644 (file)
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: disallow-username-in-url
-Help: Disallow username in url
+Help: Disallow username in URL
 Protocols: HTTP
 Added: 7.61.0
 See-also: proto
 Category: curl http
 Example: --disallow-username-in-url $URL
+Multi: boolean
 ---
-This tells curl to exit if passed a url containing a username. This is probably
-most useful when the URL is being provided at run-time or similar.
+This tells curl to exit if passed a URL containing a username. This is probably
+most useful when the URL is being provided at runtime or similar.
index fec7927eb6ec8edd263a75e2610511388f66bce0..8cd4d134748da54f40466a41b6a9d6cf782db066 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: dns-interface
 Arg: <interface>
 Help: Interface to use for DNS requests
@@ -7,6 +9,7 @@ Added: 7.33.0
 Requires: c-ares
 Category: dns
 Example: --dns-interface eth0 $URL
+Multi: single
 ---
 Tell curl to send outgoing DNS requests through <interface>. This option is a
 counterpart to --interface (which does not affect DNS). The supplied string
index e09153ab494d3d6293dc8598cef2309439dbd55f..358bec368d56f2131baccc2c0c85c5191f41e263 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: dns-ipv4-addr
 Arg: <address>
 Help: IPv4 address to use for DNS requests
@@ -7,9 +9,8 @@ Added: 7.33.0
 Requires: c-ares
 Category: dns
 Example: --dns-ipv4-addr 10.1.2.3 $URL
+Multi: single
 ---
 Tell curl to bind to <ip-address> when making IPv4 DNS requests, so that
 the DNS requests originate from this address. The argument should be a
 single IPv4 address.
-
-If this option is used several times, the last one will be used.
index 954cb98b321d1b1428c4c510b8bd12ca6ce5ab30..9452656868b36831a8c3b56cd8d47dffd77b2bba 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: dns-ipv6-addr
 Arg: <address>
 Help: IPv6 address to use for DNS requests
@@ -7,9 +9,8 @@ Added: 7.33.0
 Requires: c-ares
 Category: dns
 Example: --dns-ipv6-addr 2a04:4e42::561 $URL
+Multi: single
 ---
 Tell curl to bind to <ip-address> when making IPv6 DNS requests, so that
 the DNS requests originate from this address. The argument should be a
 single IPv6 address.
-
-If this option is used several times, the last one will be used.
index 8a2341528b2f1c79fcf3bad4a84931a5dc2f05ab..ff07051227a209a75e2ab7a38b3fe48f64475c07 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: dns-servers
 Arg: <addresses>
 Help: DNS server addrs to use
@@ -6,10 +8,9 @@ Added: 7.33.0
 Category: dns
 Example: --dns-servers 192.168.0.1,192.168.0.2 $URL
 See-also: dns-interface dns-ipv4-addr
+Multi: single
 ---
 Set the list of DNS servers to be used instead of the system default.
 The list of IP addresses should be separated with commas. Port numbers
 may also optionally be given as *:<port-number>* after each IP
 address.
-
-If this option is used several times, the last one will be used.
index 0846ccb7707ca315ecc1e76a807d5fb46a9f640c..534c79529c33ab3fedc105b0a789653182ab5fec 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: doh-cert-status
 Help: Verify the status of the DoH server cert via OCSP-staple
 Added: 7.76.0
 Category: dns tls
 Example: --doh-cert-status --doh-url https://doh.example $URL
 See-also: doh-insecure
+Multi: boolean
 ---
 Same as --cert-status but used for DoH (DNS-over-HTTPS).
index 9430bd4d0944026563b00a1dee915031f3ba02b3..30c44bba3950520f0c565e09da5e284952c8f360 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: doh-insecure
 Help: Allow insecure DoH server connections
 Added: 7.76.0
 Category: dns tls
 Example: --doh-insecure --doh-url https://doh.example $URL
 See-also: doh-url
+Multi: boolean
 ---
 Same as --insecure but used for DoH (DNS-over-HTTPS).
index c64cca289a80136f4074d2a3e4b6572b0e5bee97..4717a6ac6b7f57789dbe448e703c731e46bbc96c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: doh-url
 Arg: <URL>
 Help: Resolve host names over DoH
@@ -5,6 +7,7 @@ Added: 7.62.0
 Category: dns
 Example: --doh-url https://doh.example $URL
 See-also: doh-insecure
+Multi: single
 ---
 Specifies which DNS-over-HTTPS (DoH) server to use to resolve hostnames,
 instead of using the default name resolver mechanism. The URL must be HTTPS.
@@ -14,4 +17,5 @@ name lookups take place over SSL. However, the certificate verification
 settings are not inherited and can be controlled separately via
 --doh-insecure and --doh-cert-status.
 
-If this option is used several times, the last one will be used.
+This option is unset if an empty string "" is used as the URL. (Added in
+7.85.0)
index 8c617b92c611d02a695c2b28a5e99afd044787d0..3dabac85e65c17f54025032cf8fad8d559751894 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: dump-header
 Short: D
 Arg: <filename>
@@ -7,11 +9,10 @@ See-also: output
 Category: http ftp
 Example: --dump-header store.txt $URL
 Added: 5.7
+Multi: single
 ---
 Write the received protocol headers to the specified file. If no headers are
 received, the use of this option will create an empty file.
 
 When used in FTP, the FTP server response lines are considered being "headers"
 and thus are saved there.
-
-If this option is used several times, the last one will be used.
index cd3450a214a7ef24f32ebbea9aa61aa9fc2aae00..b6661c7736c431eb6886aa77e4f5d238bf66cf6c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: egd-file
 Arg: <file>
 Help: EGD socket path for random data
@@ -6,6 +8,10 @@ See-also: random-file
 Category: tls
 Example: --egd-file /random/here $URL
 Added: 7.7
+Multi: single
 ---
+Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
 Specify the path name to the Entropy Gathering Daemon socket. The socket is
 used to seed the random engine for SSL connections.
index 6382dfdab3412415a791a2d23e665cd901f3aef5..58578ea8fbe4154060afe8b900a0abdc7c79e870 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: engine
 Arg: <name>
 Help: Crypto engine to use
@@ -6,7 +8,8 @@ Category: tls
 Example: --engine flavor $URL
 Added: 7.9.3
 See-also: ciphers curves
+Multi: single
 ---
 Select the OpenSSL crypto engine to use for cipher operations. Use --engine
 list to print a list of build-time supported engines. Note that not all (and
-possibly none) of the engines may be available at run-time.
+possibly none) of the engines may be available at runtime.
index 494633f5cdc0bc8a7aa2d23dc3481802925ba288..12c786790471759ce0f3da3bb6b6b5e180e0188f 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: etag-compare
 Arg: <file>
 Help: Pass an ETag from a file as a custom header
@@ -6,6 +8,7 @@ Added: 7.68.0
 Category: http
 Example: --etag-compare etag.txt $URL
 See-also: etag-save time-cond
+Multi: single
 ---
 This option makes a conditional HTTP request for the specific ETag read
 from the given file by sending a custom If-None-Match header using the
index 5cce0ee1ce9167241d6fc858716e87aad473e199..2f44c0f7dd26f8de310cd980e704ba43a20364b1 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: etag-save
 Arg: <file>
 Help: Parse ETag from a request and save it to a file
@@ -6,6 +8,7 @@ Added: 7.68.0
 Category: http
 Example: --etag-save storetag.txt $URL
 See-also: etag-compare
+Multi: single
 ---
 This option saves an HTTP ETag to the specified file. An ETag is a
 caching related header, usually returned in a response.
index 8855edd0b7237caaba221c46ecff9e04462b767f..93e3c633e1d484d2ccb0252ea27cb61d0024adb8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: expect100-timeout
 Arg: <seconds>
 Help: How long to wait for 100-continue
@@ -6,6 +8,7 @@ Added: 7.47.0
 See-also: connect-timeout
 Category: http
 Example: --expect100-timeout 2.5 -T file $URL
+Multi: single
 ---
 Maximum time in seconds that you allow curl to wait for a 100-continue
 response when curl emits an Expects: 100-continue header in its request. By
index fc3e45aef7316e9df68a999748b17ea8a95f5333..cedc884f8633f6f49383aa2e467a8af6be026f72 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: fail-early
 Help: Fail on first transfer error, do not continue
 Added: 7.52.0
 Category: curl
 Example: --fail-early $URL https://two.example
 See-also: fail fail-with-body
+Multi: boolean
 ---
 Fail and exit on the first detected transfer error.
 
index 9b8c7db4ef13fc72e1a09cdf2f98d3bc987c8451..adf5294f44f06d9c1952673ed0848f5506caff76 100644 (file)
@@ -1,10 +1,14 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: fail-with-body
 Protocols: HTTP
 Help: Fail on HTTP errors but save the body
 Category: http output
 Added: 7.76.0
 See-also: fail
+Mutexed: fail
 Example: --fail-with-body $URL
+Multi: boolean
 ---
 Return an error on server errors where the HTTP response code is 400 or
 greater). In normal cases when an HTTP server fails to deliver a document, it
index 47adafbb9bcd6bc8f89b2cf7228de18766afe5d1..66c08fa5046528620a2de172b0c1de32e670afec 100644 (file)
@@ -1,17 +1,21 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: fail
 Short: f
 Protocols: HTTP
-Help: Fail silently (no output at all) on HTTP errors
+Help: Fail fast with no output on HTTP errors
 See-also: fail-with-body
 Category: important http
 Example: --fail $URL
+Mutexed: fail-with-body
 Added: 4.0
+Multi: boolean
 ---
-Fail silently (no output at all) on server errors. This is mostly done to
-enable scripts etc to better deal with failed attempts. In normal cases
-when an HTTP server fails to deliver a document, it returns an HTML document
-stating so (which often also describes why and more). This flag will prevent
-curl from outputting that and return error 22.
+Fail fast with no output at all on server errors. This is useful to enable
+scripts and users to better deal with failed attempts. In normal cases when an
+HTTP server fails to deliver a document, it returns an HTML document stating
+so (which often also describes why and more). This flag will prevent curl from
+outputting that and return error 22.
 
 This method is not fail-safe and there are occasions where non-successful
 response codes will slip through, especially when authentication is involved
index 4fe4eaa7ba9038d070149318cfc0f0a215eeac53..b617a6b6764a899599dc88be4a9e87045deba809 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: false-start
 Help: Enable TLS False Start
 Protocols: TLS
@@ -5,6 +7,7 @@ Added: 7.42.0
 Category: tls
 Example: --false-start $URL
 See-also: tcp-fastopen
+Multi: boolean
 ---
 Tells curl to use false start during the TLS handshake. False start is a mode
 where a TLS client will start sending application data before verifying the
index 5fcd9ac1d0c97a51a2cbce29437d2fa573bdfffe..b399741e231dd1cb640e94eb4bed64f076c941d3 100644 (file)
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: form-escape
 Help: Escape multipart form field/file names using backslash
 Protocols: HTTP
 See-also: form
 Added: 7.81.0
-Category: http post
-Example: --form-escape --form 'field\\name=curl' 'file=@load"this' $URL
+Category: http upload
+Example: --form-escape -F 'field\\name=curl' -F 'file=@load"this' $URL
+Multi: single
 ---
 Tells curl to pass on names of multipart form fields and files using
 backslash-escaping instead of percent-encoding.
index 4b5b0d64c15d787389396cd47ba063988c56416e..a2c450b17d48214683047fa931544a242f52b6f1 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: form-string
 Help: Specify multipart MIME data
 Protocols: HTTP SMTP IMAP
@@ -6,9 +8,10 @@ See-also: form
 Category: http upload
 Example: --form-string "data" $URL
 Added: 7.13.2
+Multi: append
 ---
 Similar to --form except that the value string for the named parameter is used
-literally. Leading \&'@' and \&'<' characters, and the \&';type=' string in
+literally. Leading '@' and '<' characters, and the ';type=' string in
 the value have no special meaning. Use this in preference to --form if
 there's any possibility that the string value may accidentally trigger the
-\&'@' or \&'<' features of --form.
+'@' or '<' features of --form.
index 12012daa66652fd011799c15f821f776f30b99e3..3954fdaf6b24ddf7441eb6e1da8b768048d15e7d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: form
 Short: F
 Arg: <name=content>
@@ -8,6 +10,7 @@ Category: http upload
 Example: --form "name=curl" --form "file=@loadthis" $URL
 Added: 5.0
 See-also: data form-string form-escape
+Multi: append
 ---
 For HTTP protocol family, this lets curl emulate a filled-in form in which a
 user has pressed the submit button. This causes curl to POST data using the
@@ -32,7 +35,7 @@ be effectively read at transmission time; since the full size is unknown
 before the transfer starts, such data is sent as chunks by HTTP and rejected
 by IMAP.
 
-Example: send an image to an HTTP server, where \&'profile' is the name of the
+Example: send an image to an HTTP server, where 'profile' is the name of the
 form-field to which the file portrait.jpg will be the input:
 
  curl -F profile=@portrait.jpg https://example.com/upload.cgi
@@ -130,5 +133,3 @@ base64 attached file:
       -F '=@localfile;encoder=base64' ... smtp://example.com
 
 See further examples and details in the MANUAL.
-
-This option can be used multiple times.
index e47b44cb4edc58c43a70da61b46af6c9b7cc4f5c..f71773f14e662421275e38967748a1d3d20a63e3 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-account
 Arg: <data>
 Help: Account data string
@@ -6,8 +8,7 @@ Added: 7.13.0
 Category: ftp auth
 Example: --ftp-account "mr.robot" ftp://example.com/
 See-also: user
+Multi: single
 ---
 When an FTP server asks for "account data" after user name and password has
 been provided, this data is sent off using the ACCT command.
-
-If this option is used several times, the last one will be used.
index fdf3b417aeeb424337d8ef543071c0a88a1772c3..22e5b4f92ccbb11dd21264cb6a84ba0e11ce84b8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-alternative-to-user
 Arg: <command>
 Help: String to replace USER [name]
@@ -6,6 +8,7 @@ Added: 7.15.5
 Category: ftp
 Example: --ftp-alternative-to-user "U53r" ftp://example.com
 See-also: ftp-account user
+Multi: single
 ---
 If authenticating with the USER and PASS commands fails, send this command.
 When connecting to Tumbleweed's Secure Transport server over FTPS using a
index 9b8595011d968f46eb2e25561f70afba4e023f05..7cf3e1c7904daac45743e1a93788c505d4bece0b 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-create-dirs
 Protocols: FTP SFTP
 Help: Create the remote dirs if not present
@@ -5,6 +7,7 @@ See-also: create-dirs
 Category: ftp sftp curl
 Example: --ftp-create-dirs -T file ftp://example.com/remote/path/file
 Added: 7.10.7
+Multi: boolean
 ---
 When an FTP or SFTP URL/operation uses a path that does not currently exist on
 the server, the standard behavior of curl is to fail. Using this option, curl
index 0d69356c69c3b8d4137f64d24144aaf134ad0d32..d745cca32b2c30ec58012f7256d5dc5d38b10e73 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-method
 Arg: <method>
 Help: Control CWD usage
@@ -8,6 +10,7 @@ Example: --ftp-method multicwd ftp://example.com/dir1/dir2/file
 Example: --ftp-method nocwd ftp://example.com/dir1/dir2/file
 Example: --ftp-method singlecwd ftp://example.com/dir1/dir2/file
 See-also: list-only
+Multi: single
 ---
 Control what method curl should use to reach a file on an FTP(S)
 server. The method argument should be one of the following alternatives:
@@ -21,6 +24,6 @@ curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full
 path to the server for all these commands. This is the fastest behavior.
 .IP singlecwd
 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
+"normally" (like in the multicwd case). This is somewhat more standards
 compliant than 'nocwd' but without the full penalty of 'multicwd'.
 .RE
index 8c6c9799f155e00d0d909fda8d1bf123e770ea89..d6b4bfd9f1758e1225ebed60206b599243b8debb 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-pasv
 Help: Use PASV/EPSV instead of PORT
 Protocols: FTP
@@ -5,14 +7,14 @@ Added: 7.11.0
 See-also: disable-epsv
 Category: ftp
 Example: --ftp-pasv ftp://example.com/
+Multi: boolean
 ---
 Use passive mode for the data connection. Passive is the internal default
 behavior, but using this option can be used to override a previous --ftp-port
 option.
 
-If this option is used several times, only the first one is used. Undoing an
-enforced passive really is not doable but you must then instead enforce the
-correct --ftp-port again.
+Reversing an enforced passive really is not doable but you must then instead
+enforce the correct --ftp-port again.
 
 Passive mode means that curl will try the EPSV command first and then PASV,
 unless --disable-epsv is used.
index cb6ab2a938b62e4065a269aedbd57a2761c6116f..4f660bd9efce6590b8f1a8d8cda7618ff8635287 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-port
 Arg: <address>
 Help: Use PORT instead of PASV
@@ -9,6 +11,7 @@ Example: -P - ftp:/example.com
 Example: -P eth0 ftp:/example.com
 Example: -P 192.168.0.2 ftp:/example.com
 Added: 4.0
+Multi: single
 ---
 Reverses the default initiator/listener roles when connecting with FTP. This
 option makes curl use active mode. curl then tells the server to connect back
@@ -27,11 +30,10 @@ make curl pick the same IP address that is already used for the control
 connection
 .RE
 
-If this option is used several times, the last one will be used. 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++.
+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++.
 
-You can also append \&":[start]-[end]\&" to the right of the address, to tell
+You can also append ":[start]-[end]\&" to the right of the address, to tell
 curl what TCP port range to use. That means you specify a port range, from a
 lower to a higher number. A single number works as well, but do note that it
 increases the risk of failure since the port may not be available.
index 8d9d7749c5d541bbfd5580230306d5d44cbb3717..f31cc562595a11bb3d504355a2dc305ff39080bc 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-pret
 Help: Send PRET before PASV
 Protocols: FTP
@@ -5,6 +7,7 @@ Added: 7.20.0
 Category: ftp
 Example: --ftp-pret ftp://example.com/
 See-also: ftp-port ftp-pasv
+Multi: boolean
 ---
 Tell curl to send a PRET command before PASV (and EPSV). Certain FTP servers,
 mainly drftpd, require this non-standard command for directory listings as
index 36f9e6da13c608c73959fc56a71694162e946726..af9eb7d57c239f6127e8889c4cca4002dd459411 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-skip-pasv-ip
 Help: Skip the IP address for PASV
 Protocols: FTP
@@ -5,6 +7,7 @@ Added: 7.14.2
 See-also: ftp-pasv
 Category: ftp
 Example: --ftp-skip-pasv-ip ftp://example.com/
+Multi: boolean
 ---
 Tell curl to not use the IP address the server suggests in its response
 to curl's PASV command when curl connects the data connection. Instead curl
index 15ad1f54b00fab4fc6e45bc64ab383e7107eac63..e738b55baba2325515905f09285a4fd5e2a45bc9 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-ssl-ccc-mode
 Arg: <active/passive>
 Help: Set CCC mode
@@ -6,6 +8,7 @@ Added: 7.16.2
 See-also: ftp-ssl-ccc
 Category: ftp tls
 Example: --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/
+Multi: boolean
 ---
 Sets the CCC mode. The passive mode will not initiate the shutdown, but
 instead wait for the server to do it, and will not reply to the shutdown from
index bfaf431bbb3dee250f9b72bb43d288ac7d18068e..c6c0bfa4c24141588bad0bf2c48a739cb2a21302 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-ssl-ccc
 Help: Send CCC after authenticating
 Protocols: FTP
@@ -5,6 +7,7 @@ See-also: ssl ftp-ssl-ccc-mode
 Added: 7.16.1
 Category: ftp tls
 Example: --ftp-ssl-ccc ftps://example.com/
+Multi: boolean
 ---
 Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after
 authenticating. The rest of the control channel communication will be
index 7221b996bc4813e48119a34b56eaba69a7b27d54..6bdc5806d1a882d88ee72574ef74466231812600 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ftp-ssl-control
 Help: Require SSL/TLS for FTP login, clear for transfer
 Protocols: FTP
@@ -5,6 +7,7 @@ Added: 7.16.0
 Category: ftp tls
 Example: --ftp-ssl-control ftp://example.com
 See-also: ssl
+Multi: boolean
 ---
 Require SSL/TLS for the FTP login, clear for transfer.  Allows secure
 authentication, but non-encrypted data transfers for efficiency.  Fails the
index 3d15f1b545f55409c9d4a7af5843a99983d64ba7..fe3e43e06f99a8f0deaa64ac45d7217a1f47bdd9 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 =begin comment
@@ -101,19 +103,24 @@ sub printdesc {
             print ".fi\n"; # fill-in
         }
         # skip lines starting with space (examples)
-        if($d =~ /^[^ ]/) {
+        if($d =~ /^[^ ]/ && $d =~ /--/) {
             for my $k (keys %optlong) {
                 my $l = manpageify($k);
-                $d =~ s/--$k([^a-z0-9_-])/$l$1/;
+                $d =~ s/--\Q$k\E([^a-z0-9_-])([^a-zA-Z0-9_])/$l$1$2/;
             }
         }
         # quote "bare" minuses in the output
         $d =~ s/( |\\fI|^)--/$1\\-\\-/g;
         $d =~ s/([ -]|\\fI|^)-/$1\\-/g;
         # handle single quotes first on the line
-        $d =~ s/(\s*)\'/$1\\(aq/;
+        $d =~ s/^(\s*)\'/$1\\(aq/;
+        # handle double quotes first on the line
+        $d =~ s/^(\s*)\"/$1\\(dq/;
         print $d;
     }
+    if($exam) {
+        print ".fi\n"; # fill-in
+    }
 }
 
 sub seealso {
@@ -192,9 +199,13 @@ sub single {
     my $requires;
     my $category;
     my $seealso;
+    my $copyright;
+    my $spdx;
     my @examples; # there can be more than one
     my $magic; # cmdline special option
     my $line;
+    my $multi;
+    my $experimental;
     while(<F>) {
         $line++;
         if(/^Short: *(.)/i) {
@@ -233,6 +244,18 @@ sub single {
         elsif(/^Example: *(.*)/i) {
             push @examples, $1;
         }
+        elsif(/^Multi: *(.*)/i) {
+            $multi=$1;
+        }
+        elsif(/^Experimental: yes/i) {
+            $experimental=1;
+        }
+        elsif(/^C: (.*)/i) {
+            $copyright=$1;
+        }
+        elsif(/^SPDX-License-Identifier: (.*)/i) {
+            $spdx=$1;
+        }
         elsif(/^Help: *(.*)/i) {
             ;
         }
@@ -241,6 +264,10 @@ sub single {
                 print STDERR "ERROR: no 'Long:' in $f\n";
                 return 1;
             }
+            if($multi !~ /(single|append|boolean|mutex)/) {
+                print STDERR "ERROR: bad 'Multi:' in $f\n";
+                return 1;
+            }
             if(!$category) {
                 print STDERR "ERROR: no 'Category:' in $f\n";
                 return 2;
@@ -257,6 +284,14 @@ sub single {
                 print STDERR "$f:$line:1:ERROR: no 'See-also:' field present\n";
                 return 2;
             }
+            if(!$copyright) {
+                print STDERR "$f:$line:1:ERROR: no 'C:' field present\n";
+                return 2;
+            }
+            if(!$spdx) {
+                print STDERR "$f:$line:1:ERROR: no 'SPDX-License-Identifier:' field present\n";
+                return 2;
+            }
             last;
         }
         else {
@@ -303,9 +338,35 @@ sub single {
         print ".SH DESCRIPTION\n";
     }
 
+    if($experimental) {
+        print "**WARNING**: this option is experimental. Do not use in production.\n\n";
+    }
+
     printdesc(@desc);
     undef @desc;
 
+    if($multi eq "single") {
+        print "\nIf --$long is provided several times, the last set ".
+            "value will be used.\n";
+    }
+    elsif($multi eq "append") {
+        print "\n--$long can be used several times in a command line\n";
+    }
+    elsif($multi eq "boolean") {
+        my $rev = "no-$long";
+        # for options that start with "no-" the reverse is then without
+        # the no- prefix
+        if($long =~ /^no-/) {
+            $rev = $long;
+            $rev =~ s/^no-//;
+        }
+        print "\nProviding --$long multiple times has no extra effect.\n".
+            "Disable it again with --$rev.\n";
+    }
+    elsif($multi eq "mutex") {
+        print "\nProviding --$long multiple times has no extra effect.\n";
+    }
+
     my @foot;
     if($seealso) {
         my @m=split(/ /, $seealso);
@@ -346,7 +407,8 @@ sub single {
             my $l = manpageify($k);
             $mstr .= sprintf "%s$l", $mstr?" and ":"";
         }
-        push @foot, overrides($standalone, "This option overrides $mstr. ");
+        push @foot, overrides($standalone,
+                              "This option is mutually exclusive to $mstr. ");
     }
     if($examples[0]) {
         my $s ="";
@@ -457,6 +519,8 @@ sub listhelp {
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_help.h"
index 3920d686cf2ef4c62a695acbed1f2b970e111316..fbfbe867289abb29a9c3c9168f406c3ef5a01931 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: get
 Short: G
 Help: Put the post data in the URL and use GET
@@ -7,6 +9,7 @@ Example: --get -d "tool=curl" -d "age=old" $URL
 Example: --get -I -d "tool=curl" $URL
 Added: 7.8.1
 See-also: data request
+Multi: boolean
 ---
 When used, this option will make all data specified with --data, --data-binary
 or --data-urlencode to be used in an HTTP GET request instead of the POST
@@ -15,7 +18,3 @@ with a '?' separator.
 
 If used in combination with --head, the POST data will instead be appended to
 the URL with a HEAD request.
-
-If this option is used several times, only the first one is used. This is
-because undoing a GET does not make sense, but you should then instead enforce
-the alternative method you prefer.
index 7660c8b71870cc670a0117eef115a3f44b88d688..ff84ad01d1fd695a075b79a8ec6e36a1736984a2 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: globoff
 Short: g
 Help: Disable URL sequences and ranges using {} and []
@@ -5,6 +7,7 @@ Category: curl
 Example: -g "https://example.com/{[]}}}}"
 Added: 7.6
 See-also: config disable
+Multi: boolean
 ---
 This option switches off the "URL globbing parser". When you set this option,
 you can specify URLs that contain the letters {}[] without having curl itself
index 6897a69a55608e6ab3b185c099e05a3bf282a590..c5f10f6db8bfb0cbc806d171ff9bbdb6ca9fb4f0 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: happy-eyeballs-timeout-ms
 Arg: <milliseconds>
 Help: Time for IPv6 before trying IPv4
@@ -5,6 +7,7 @@ Added: 7.59.0
 Category: connection
 Example: --happy-eyeballs-timeout-ms 500 $URL
 See-also: max-time connect-timeout
+Multi: single
 ---
 Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
 addresses for dual-stack hosts, giving IPv6 a head-start of the specified
@@ -16,5 +19,3 @@ The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
 "It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
 balance human factors against network load." libcurl currently defaults to
 200 ms. Firefox and Chrome currently default to 300 ms.
-
-If this option is used several times, the last one will be used.
index 792db6766b9b66a05fc6667fd13e36f0cb8ec0bc..b2129e6eb69b93174c29e341424eadc990d44906 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: haproxy-protocol
 Help: Send HAProxy PROXY protocol v1 header
 Protocols: HTTP
@@ -5,6 +7,7 @@ Added: 7.60.0
 Category: http proxy
 Example: --haproxy-protocol $URL
 See-also: proxy
+Multi: boolean
 ---
 Send a HAProxy PROXY protocol v1 header at the beginning of the
 connection. This is used by some load balancers and reverse proxies to
index c659337ff690759d586475bcc0f9bbbd3a89e4cb..31de19aca5ae46c80e89e84521b262699d35282d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: head
 Short: I
 Help: Show document info only
@@ -6,6 +8,7 @@ Category: http ftp file
 Example: -I $URL
 Added: 4.0
 See-also: get verbose trace-ascii
+Multi: boolean
 ---
 Fetch the headers only! HTTP-servers feature the command HEAD which this uses
 to get nothing but the header of a document. When used on an FTP or FILE file,
index 143f426cf9cc83e3ce94530dca68f6209c0b447a..a64873fcbea04c3b3a149fe33d6576eba03699ff 100644 (file)
@@ -1,25 +1,34 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: header
 Short: H
 Arg: <header/@file>
 Help: Pass custom header(s) to server
-Protocols: HTTP
-Category: http
+Protocols: HTTP IMAP SMTP
+Category: http imap smtp
 See-also: user-agent referer
 Example: -H "X-First-Name: Joe" $URL
 Example: -H "User-Agent: yes-please/2000" $URL
 Example: -H "Host:" $URL
 Added: 5.0
+Multi: append
 ---
-Extra header to include in the request when sending HTTP to a server. You may
-specify any number of extra headers. Note that if you should add a custom
-header that has the same name as one of the internal ones curl would use, your
-externally set header will be used instead of the internal one. This allows
-you to make even trickier stuff than curl would normally do. You should not
-replace internally set headers without knowing perfectly well what you are
-doing. Remove an internal header by giving a replacement without content on
-the right side of the colon, as in: -H \&"Host:". If you send the custom
-header with no-value then its header must be terminated with a semicolon, such
-as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".
+Extra header to include in information sent. When used within an HTTP request,
+it is added to the regular request headers.
+
+For an IMAP or SMTP MIME uploaded mail built with --form options, it is
+prepended to the resulting MIME document, effectively including it at the mail
+global level. It does not affect raw uploaded mails (Added in 7.56.0).
+
+You may specify any number of extra headers. Note that if you should add a
+custom header that has the same name as one of the internal ones curl would
+use, your externally set header will be used instead of the internal one.
+This allows you to make even trickier stuff than curl would normally do. You
+should not replace internally set headers without knowing perfectly well what
+you are doing. Remove an internal header by giving a replacement without
+content on the right side of the colon, as in: -H "Host:". If you send the
+custom header with no-value then its header must be terminated with a
+semicolon, such as \-H "X-Custom-Header;" to send "X-Custom-Header:".
 
 curl will make sure that each header you add/replace is sent with the proper
 end-of-line marker, you should thus **not** add that as a part of the header
@@ -30,15 +39,18 @@ This option can take an argument in @filename style, which then adds a header
 for each line in the input file. Using @- will make curl read the header file
 from stdin. Added in 7.55.0.
 
-You need --proxy-header to send custom headers intended for a HTTP
+Please note that most anti-spam utilities check the presence and value of
+several MIME mail headers: these are "From:", "To:", "Date:" and "Subject:"
+among others and should be added with this option.
+
+You need --proxy-header to send custom headers intended for an HTTP
 proxy. Added in 7.37.0.
 
-Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
+Passing on a "Transfer-Encoding: chunked" header when doing an HTTP request
 with a request body, will make curl send the data using chunked encoding.
 
-**WARNING**: headers set with this option will be set in all requests - even
-after redirects are followed, like when told with --location. This can lead to
-the header being sent to other hosts than the original host, so sensitive
-headers should be used with caution combined with following redirects.
-
-This option can be used multiple times to add/replace/remove multiple headers.
+**WARNING**: headers set with this option will be set in all HTTP requests
+- even after redirects are followed, like when told with --location. This can
+lead to the header being sent to other hosts than the original host, so
+sensitive headers should be used with caution combined with following
+redirects.
index 664c040a831d48bc148bf67dd4880ff987d01c2d..7d835a3816d27d0d04f4bcb069f5bbcfbd6667a3 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: help
 Arg: <category>
 Short: h
@@ -6,6 +8,7 @@ Category: important curl
 Example: --help all
 Added: 4.0
 See-also: verbose
+Multi: boolean
 ---
 Usage help. This lists all commands of the <category>.
 If no arg was provided, curl will display the most important
index d3ea6b6f4058a7e664198bbdd3c19500460c0212..966bbca27f6a3f0b133ac51c384fdf3d057a438c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: hostpubmd5
 Arg: <md5>
 Help: Acceptable MD5 hash of the host public key
@@ -6,6 +8,7 @@ Added: 7.17.1
 Category: sftp scp
 Example: --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
 See-also: hostpubsha256
+Multi: single
 ---
 Pass a string containing 32 hexadecimal digits. The string should
 be the 128 bit MD5 checksum of the remote host's public key, curl will refuse
index 2330d1a3645b3a5071d665cde077c615a4c990a3..c952485042a46de5fb6503177313dba04c8697c8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: hostpubsha256
 Arg: <sha256>
 Help: Acceptable SHA256 hash of the host public key
@@ -6,6 +8,7 @@ Added: 7.80.0
 Category: sftp scp
 Example: --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
 See-also: hostpubmd5
+Multi: single
 ---
 Pass a string containing a Base64-encoded SHA256 hash of the remote
 host's public key. Curl will refuse the connection with the host
index 65526f050a9010b92e41d1415ac3e67e3aa38876..ec251acbe193806e0140e08f3151020a79239cdf 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: hsts
 Arg: <file name>
 Protocols: HTTPS
@@ -6,6 +8,7 @@ Added: 7.74.0
 Category: http
 Example: --hsts cache.txt $URL
 See-also: proto
+Multi: append
 ---
 This option enables HSTS for the transfer. If the file name points to an
 existing HSTS cache file, that will be used. After a completed transfer, the
index 5797b2d7d6ef876d1dbb1deaddae29e0ae571516..58dec5577d41c5b93549afdcaa94b74518182e50 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: http0.9
 Tags: Versions
 Protocols: HTTP
@@ -6,6 +8,7 @@ Category: http
 Example: --http0.9 $URL
 Added: 7.64.0
 See-also: http1.1 http2 http3
+Multi: boolean
 ---
 Tells curl to be fine with HTTP version 0.9 response.
 
index 84e390055ad5472a641744b8d222c3eaf8dea58a..3f8277edda8fad17b9ddbff622d1eac7950769bf 100644 (file)
@@ -1,13 +1,16 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: 0
 Long: http1.0
 Tags: Versions
 Protocols: HTTP
 Added: 7.9.1
-Mutexed: http1.1 http2
+Mutexed: http1.1 http2 http2-prior-knowledge http3
 Help: Use HTTP 1.0
 Category: http
 Example: --http1.0 $URL
 See-also: http0.9 http1.1
+Multi: mutex
 ---
 Tells curl to use HTTP version 1.0 instead of using its internally preferred
 HTTP version.
index 84b2c59d84d68d7cc8b5df6f9ca26d2023a674b1..2057553098932b1c2da77b3e7c86448e91d64378 100644 (file)
@@ -1,11 +1,14 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: http1.1
 Tags: Versions
 Protocols: HTTP
 Added: 7.33.0
-Mutexed: http1.0 http2
+Mutexed: http1.0 http2 http2-prior-knowledge http3
 Help: Use HTTP 1.1
 Category: http
 Example: --http1.1 $URL
-See-also: http1.1 http0.9
+See-also: http1.0 http0.9
+Multi: mutex
 ---
 Tells curl to use HTTP version 1.1.
index 4e944672937480572143eb5488a6aa8e564981a7..eb79c9f36485e748115de481788cdba3053fc8df 100644 (file)
@@ -1,13 +1,16 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: http2-prior-knowledge
 Tags: Versions
 Protocols: HTTP
 Added: 7.49.0
-Mutexed: http1.1 http1.0 http2
+Mutexed: http1.1 http1.0 http2 http3
 Requires: HTTP/2
 Help: Use HTTP 2 without HTTP/1.1 Upgrade
 Category: http
 Example: --http2-prior-knowledge $URL
 See-also: http2 http3
+Multi: boolean
 ---
 Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
 Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
index 2a85db600d756b15724d8178429b97bf85c59181..e247b649c606d8ab6e8f900d552fb1abb4139ce3 100644 (file)
@@ -1,14 +1,17 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: http2
 Tags: Versions
 Protocols: HTTP
 Added: 7.33.0
-Mutexed: http1.1 http1.0 http2-prior-knowledge
+Mutexed: http1.1 http1.0 http2-prior-knowledge http3
 Requires: HTTP/2
 See-also: no-alpn
 Help: Use HTTP 2
 See-also: http1.1 http3
 Category: http
 Example: --http2 $URL
+Multi: mutex
 ---
 Tells curl to use HTTP version 2.
 
@@ -17,3 +20,7 @@ handshake. curl does this by default.
 
 For HTTP, this means curl will attempt to upgrade the request to HTTP/2 using
 the Upgrade: request header.
+
+When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
+higher even though that is required by the specification. A user can add this
+version requirement with --tlsv1.2.
index f6c92b39a60c8eaeca78a5f33c00cf6bda90b1d4..7f5b8eb5a8c9243fd9a37c7c35d4d2790087e2d4 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: http3
 Tags: Versions
 Protocols: HTTP
@@ -8,9 +10,9 @@ Help: Use HTTP v3
 See-also: http1.1 http2
 Category: http
 Example: --http3 $URL
+Multi: mutex
+Experimental: yes
 ---
-**WARNING**: this option is experimental. Do not use in production.
-
 Tells curl to use HTTP version 3 directly to the host and port number used in
 the URL. A normal HTTP/3 transaction will be done to a host and then get
 redirected via Alt-Svc, but this option allows a user to circumvent that when
index 4844ecafd6495246a7eb8d8c3d496f91b2f7c1d8..eda4bd0163b7d698d6ddd3b1d4f109812fbb81ca 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ignore-content-length
 Help: Ignore the size of the remote resource
 Protocols: FTP HTTP
@@ -5,6 +7,7 @@ Category: http ftp
 Example: --ignore-content-length $URL
 Added: 7.14.1
 See-also: ftp-skip-pasv-ip
+Multi: boolean
 ---
 For HTTP, Ignore the Content-Length header. This is particularly useful for
 servers running Apache 1.x, which will report incorrect Content-Length for
index 85831f845cac3f317e546276d9d3077918f0fdd1..9e9649b7ef3dc26bbde4c4c4dbae2535164e1c35 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: include
 Short: i
 Help: Include protocol response headers in the output
@@ -5,6 +7,7 @@ See-also: verbose
 Category: important verbose
 Example: -i $URL
 Added: 4.8
+Multi: boolean
 ---
 Include the HTTP response headers in the output. The HTTP response headers can
 include things like server name, cookies, date of the document, HTTP version
index 90c1c0802a5ca33a081878fe11234cac1c07cc43..c75817efcce2076c778df06beefcad15fd12e871 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: insecure
 Short: k
 Help: Allow insecure server connections
@@ -6,6 +8,7 @@ See-also: proxy-insecure cacert capath
 Category: tls sftp scp
 Example: --insecure $URL
 Added: 7.10
+Multi: boolean
 ---
 By default, every secure connection curl makes is verified to be secure before
 the transfer takes place. This option makes curl skip the verification step
@@ -20,6 +23,6 @@ See this online resource for further details:
 
 For SFTP and SCP, this option makes curl skip the *known_hosts* verification.
 *known_hosts* is a file normally stored in the user's home directory in the
-\&.ssh subdirectory, which contains host names and their public keys.
+".ssh" subdirectory, which contains host names and their public keys.
 
 **WARNING**: using this option makes the transfer insecure.
index fb21ea2f12bf09634e3059571d8789a4ca35e41c..275f6151ca2fd8aba10e2d580f18d8174a417353 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: interface
 Arg: <name>
 Help: Use network INTERFACE (or address)
@@ -5,14 +7,13 @@ See-also: dns-interface
 Category: connection
 Example: --interface eth0 $URL
 Added: 7.3
+Multi: single
 ---
 Perform an operation using a specified interface. You can enter interface
 name, IP address or host name. An example could look like:
 
  curl --interface eth0:1 https://www.example.com/
 
-If this option is used several times, the last one will be used.
-
 On Linux it can be used to specify a VRF, but the binary needs to either
 have CAP_NET_RAW or to be run as root. More information about Linux VRF:
 https://www.kernel.org/doc/Documentation/networking/vrf.txt
index a5cae4eb4bb8911ee773fd6a159cea3194c1c747..8a3e35e7334c38479025d94191b38240117fe5f6 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: 4
 Long: ipv4
 Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
 Help: Resolve names to IPv4 addresses
 Category: connection dns
 Example: --ipv4 $URL
+Multi: boolean
 ---
-This option tells curl to resolve names to IPv4 addresses only, and not for
-example try IPv6.
+This option tells curl to use IPv4 addresses only, and not for example try
+IPv6.
index 869c66896029f06dc5e1b1c8304ea4ad3adfd783..16c47f178b111388dac4c3df1b0a859211c486a3 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: 6
 Long: ipv6
 Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
 Help: Resolve names to IPv6 addresses
 Category: connection dns
 Example: --ipv6 $URL
+Multi: boolean
 ---
-This option tells curl to resolve names to IPv6 addresses only, and not for
-example try IPv4.
+This option tells curl to use IPv6 addresses only, and not for example try
+IPv4.
diff --git a/docs/cmdline-opts/json.d b/docs/cmdline-opts/json.d
new file mode 100644 (file)
index 0000000..d2ea553
--- /dev/null
@@ -0,0 +1,35 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: json
+Arg: <data>
+Help: HTTP POST JSON
+Protocols: HTTP
+See-also: data-binary data-raw
+Mutexed: form head upload-file
+Category: http post upload
+Example: --json '{ "drink": "coffe" }' $URL
+Example: --json '{ "drink":' --json ' "coffe" }' $URL
+Example: --json @prepared $URL
+Example: --json @- $URL < json.txt
+Added: 7.82.0
+Multi: append
+---
+Sends the specified JSON data in a POST request to the HTTP server. --json
+works as a shortcut for passing on these three options:
+
+ --data [arg]
+ --header "Content-Type: application/json"
+ --header "Accept: application/json"
+
+There is **no verification** that the passed in data is actual JSON or that
+the syntax is correct.
+
+If you start the data with the letter @, the rest should be a file name to
+read the data from, or a single dash (-) if you want curl to read the data
+from stdin. Posting data from a file named 'foobar' would thus be done with
+--json @foobar and to instead read the data from stdin, use --json @-.
+
+If this option is used more than once on the same command line, the additional
+data pieces will be concatenated to the previous before sending.
+
+The headers this option sets can be overridden with --header as usual.
index cbc2692408ec4001baa7ff3a938b492dd279c689..7816125fa52a3e0de909f40ae058c6d192f8f2c8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: junk-session-cookies
 Short: j
 Help: Ignore session cookies read from file
@@ -6,6 +8,7 @@ See-also: cookie cookie-jar
 Category: http
 Example: --junk-session-cookies -b cookies.txt $URL
 Added: 7.9.7
+Multi: boolean
 ---
 When curl is told to read cookies from a given file, this option will make it
 discard all "session cookies". This will basically have the same effect as if
index cdc150aa796a7e8160e866f78684bdf63baf87a7..9667633b973d91afa699c7bc42b8c73177295fc4 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: keepalive-time
 Arg: <seconds>
 Help: Interval time for keepalive probes
@@ -5,12 +7,15 @@ Added: 7.18.0
 Category: connection
 Example: --keepalive-time 20 $URL
 See-also: no-keepalive max-time
+Multi: single
 ---
 This option sets the time a connection needs to remain idle before sending
 keepalive probes and the time between individual keepalive probes. It is
 currently effective on operating systems offering the TCP_KEEPIDLE and
-TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This
-option has no effect if --no-keepalive is used.
+TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more).
+Keepalives are used by the TCP stack to detect broken networks on idle
+connections. The number of missed keepalive probes before declaring the
+connection down is OS dependent and is commonly 9 or 10. This option has no
+effect if --no-keepalive is used.
 
-If this option is used several times, the last one will be used. If
-unspecified, the option defaults to 60 seconds.
+If unspecified, the option defaults to 60 seconds.
index 7a073a803b864f975fd3acaec8e226906981911d..83ab99b947cbd954423c7fb7743442dd1e371141 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: key-type
 Arg: <type>
 Help: Private key file type (DER/PEM/ENG)
@@ -6,8 +8,7 @@ Category: tls
 Example: --key-type DER --key here $URL
 Added: 7.9.3
 See-also: key
+Multi: single
 ---
 Private key file type. Specify which type your --key provided private key
 is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.
-
-If this option is used several times, the last one will be used.
index 8d9c1136cbe1d0dae30cb6d12df887a509795d7e..3e07c8ed10247be4f5ac9cdfe9d6d8d011185ce9 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: key
 Arg: <key>
 Protocols: TLS SSH
@@ -6,10 +8,11 @@ Category: tls ssh
 Example: --cert certificate --key here $URL
 Added: 7.9.3
 See-also: key-type cert
+Multi: single
 ---
 Private key file name. Allows you to provide your private key in this separate
 file. For SSH, if not specified, curl tries the following candidates in order:
-\&'~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
+'~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
 
 If curl is built against OpenSSL library, and the engine pkcs11 is available,
 then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a
@@ -18,4 +21,7 @@ PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option will be set
 as "pkcs11" if none was provided and the --key-type option will be set as
 "ENG" if none was provided.
 
-If this option is used several times, the last one will be used.
+If curl is built against Secure Transport or Schannel then this option is
+ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
+to be already present in the keychain or PKCS#12 file containing the
+certificate.
index ad2d8f679be504f61d0138e83cbf6fa6bd4e6483..b2375ee79599f206745b5940010d61429511d846 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: krb
 Arg: <level>
 Help: Enable Kerberos with security <level>
@@ -7,9 +9,8 @@ Category: ftp
 Example: --krb clear ftp://example.com/
 Added: 7.3
 See-also: delegation ssl
+Multi: single
 ---
 Enable Kerberos authentication and use. The level must be entered and should
 be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a
 level that is not one of these, 'private' will instead be used.
-
-If this option is used several times, the last one will be used.
index 752eda31a17bbd122e2e18f2f0342fa1807cabf7..da845d93998951c920ebd63ae12071363f5fa1de 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: libcurl
 Arg: <file>
 Help: Dump libcurl equivalent code of this command line
@@ -5,6 +7,7 @@ Added: 7.16.1
 Category: curl
 Example: --libcurl client.c $URL
 See-also: verbose
+Multi: single
 ---
 Append this option to any ordinary curl command line, and you will get
 libcurl-using C source code written to the file that does the equivalent
@@ -12,6 +15,3 @@ of what your command-line operation does!
 
 This option is global and does not need to be specified for each use of
 --next.
-
-If this option is used several times, the last given file name will be
-used.
index 9594dfee21072d0153ffabfae789cb809888a196..0a1e4cf60ed07f66396f4c972b8a0f0044602343 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: limit-rate
 Arg: <speed>
 Help: Limit transfer speed to RATE
@@ -7,6 +9,7 @@ Example: --limit-rate 1000 $URL
 Example: --limit-rate 10M $URL
 Added: 7.10
 See-also: speed-limit speed-time
+Multi: single
 ---
 Specify the maximum transfer rate you want curl to use - for both downloads
 and uploads. This feature is useful if you have a limited pipe and you would like
@@ -24,5 +27,3 @@ the set threshold over a period of multiple seconds.
 If you also use the --speed-limit option, that option will take precedence and
 might cripple the rate-limiting slightly, to help keeping the speed-limit
 logic working.
-
-If this option is used several times, the last one will be used.
index 4fb2f6b9b237f55fa322e5ac0a58e480b015130e..d84974f499336b14074ebbf2f45156d1a95e96eb 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: list-only
 Short: l
 Protocols: FTP POP3
@@ -6,6 +8,7 @@ Added: 4.0
 Category: ftp pop3
 Example: --list-only ftp://example.com/dir/
 See-also: quote request
+Multi: boolean
 ---
 (FTP)
 When listing an FTP directory, this switch forces a name-only view. This is
index fd157d93c07867becf127a92b37f4b730986ff29..e889ee443cb6b15cb6d5c9ed4b6fe745c2d33489 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: local-port
 Arg: <num/range>
 Help: Force use of RANGE for local port numbers
@@ -5,6 +7,7 @@ Added: 7.15.2
 Category: connection
 Example: --local-port 1000-3000 $URL
 See-also: globoff
+Multi: single
 ---
 Set a preferred single number or range (FROM-TO) of local port numbers to use
 for the connection(s).  Note that port numbers by nature are a scarce resource
index 0277aa7b5853e817495d5feb112372a37b485a72..8d19416d70010aac750b24557464f83fe04e7d83 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: location-trusted
 Help: Like --location, and send auth to other hosts
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: user
 Category: http auth
 Example: --location-trusted -u user:password $URL
 Added: 7.10.4
+Multi: boolean
 ---
 Like --location, but will allow sending the name + password to all hosts that
 the site may redirect to. This may or may not introduce a security breach if
index e694dfad182f9c2f0ccaf2750ea5e79f314c0527..c3b2b5d82fe72ade63a2d65b38841950eb8fb0af 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: location
 Short: L
 Help: Follow redirects
@@ -6,6 +8,7 @@ Category: http
 Example: -L $URL
 Added: 4.9
 See-also: resolve alt-svc
+Multi: boolean
 ---
 If the server reports that the requested page has moved to a different
 location (indicated with a Location: header and a 3XX response code), this
index 4c53db3fdaf9274038772b67679d6f732d077c82..e9e07a3ef53da025ff0394d4fb132537b51cba2f 100644 (file)
@@ -1,11 +1,14 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: login-options
 Arg: <options>
-Protocols: IMAP POP3 SMTP
+Protocols: IMAP LDAP POP3 SMTP
 Help: Server login options
 Added: 7.34.0
 Category: imap pop3 smtp auth
 Example: --login-options 'AUTH=*' imap://example.com
 See-also: user
+Multi: single
 ---
 Specify the login options to use during server authentication.
 
@@ -13,5 +16,3 @@ 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
-
-If this option is used several times, the last one will be used.
index 49a02d5baa709d5af12ef17c552e9645d7144e95..e215575be0ff656ab27988be7af41175516a7156 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: mail-auth
 Arg: <address>
 Protocols: SMTP
@@ -6,6 +8,7 @@ Added: 7.25.0
 See-also: mail-rcpt mail-from
 Category: smtp
 Example: --mail-auth user@example.come -T mail smtp://example.com/
+Multi: single
 ---
 Specify a single address. This will be used to specify the authentication
 address (identity) of a submitted message that is being relayed to another
index be0547c9f2fa71a7a3966630492b0d4ab1a7ef2b..c96193840a5ea72669d58e4e4d9e6631f9bd1768 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: mail-from
 Arg: <address>
 Help: Mail from this address
@@ -6,5 +8,6 @@ Added: 7.20.0
 See-also: mail-rcpt mail-auth
 Category: smtp
 Example: --mail-from user@example.com -T mail smtp://example.com/
+Multi: single
 ---
 Specify a single address that the given mail should get sent from.
index 12296afdc183bcd808bdd2a24f24d7159e232722..d14b9e8f012301f813fa6ce677da9b0bd3feb503 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: mail-rcpt-allowfails
 Help: Allow RCPT TO command to fail for some recipients
 Protocols: SMTP
@@ -5,6 +7,7 @@ Added: 7.69.0
 Category: smtp
 Example: --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com
 See-also: mail-rcpt
+Multi: boolean
 ---
 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
index 8a3b43c154f607bfdf00481602002856cbac0e40..d1e6a156157e049784fd5ad2fad65aca8f6a31e0 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: mail-rcpt
 Arg: <address>
 Help: Mail to this address
@@ -6,6 +8,7 @@ Added: 7.20.0
 Category: smtp
 Example: --mail-rcpt user@example.net smtp://example.com
 See-also: mail-rcpt-allowfails
+Multi: append
 ---
 Specify a single email address, user name or mailing list name. Repeat this
 option several times to send to multiple recipients.
index 9674a465d3f66cd8a87f07883ee3d1046d306d93..e6d439713562ec4ba7ebf529323fb27a1d4c65f9 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: manual
 Short: M
 Help: Display the full manual
@@ -5,5 +7,6 @@ Category: curl
 Example: --manual
 Added: 5.2
 See-also: verbose libcurl trace
+Multi: boolean
 ---
 Manual. Display the huge help text.
index 9e3abca426629d3699f7ba322750a8bac1b56ce3..822252e82fb955cb3189e0e98bfd80f49b85156e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: max-filesize
 Arg: <bytes>
 Help: Maximum file size to download
@@ -6,6 +8,7 @@ See-also: limit-rate
 Category: connection
 Example: --max-filesize 100K $URL
 Added: 7.10.8
+Multi: single
 ---
 Specify the maximum size (in bytes) of a file to download. If the file
 requested is larger than this value, the transfer will not start and curl will
index a0b549399d2593f1fab94e29664d6fc6677eba81..f8434748e690735d4feeafd7f3b191645ee005a5 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: max-redirs
 Arg: <num>
 Help: Maximum number of redirects allowed
@@ -6,9 +8,8 @@ Category: http
 Example: --max-redirs 3 --location $URL
 Added: 7.5
 See-also: location
+Multi: single
 ---
 Set maximum number of redirections to follow. When --location is used, to
 prevent curl from following too many redirects, by default, the limit is
 set to 50 redirects. Set this option to -1 to make it unlimited.
-
-If this option is used several times, the last one will be used.
index 7246f613497dcc1dc68ce25967a340dde02f79e5..8efef1279679a97113735d8676a5c2c06ca7a5a4 100644 (file)
@@ -1,17 +1,22 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: max-time
 Short: m
 Arg: <fractional seconds>
 Help: Maximum time allowed for transfer
-See-also: connect-timeout
+See-also: connect-timeout retry-max-time
 Category: connection
 Example: --max-time 10 $URL
 Example: --max-time 2.92 $URL
 Added: 4.0
+Multi: single
 ---
-Maximum time in seconds that you allow the whole operation to take.  This is
+Maximum time in seconds that you allow each transfer to take.  This is
 useful for preventing your batch jobs from hanging for hours due to slow
 networks or links going down.  Since 7.32.0, this option accepts decimal
 values, but the actual timeout will decrease in accuracy as the specified
 timeout increases in decimal precision.
 
-If this option is used several times, the last one will be used.
+If you enable retrying the transfer (--retry) then the maximum time counter is
+reset each time the transfer is retried. You can use --retry-max-time to limit
+the retry time.
index f1c0aeefe17c5bb723fce726c47f10d7cd6fca1e..2a05228aed82a8326f638e3a2674250320b07479 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: metalink
 Help: Process given URLs as metalink XML file
 Added: 7.27.0
 Category: misc
 Example: --metalink file $URL
 See-also: parallel
+Multi: single
 ---
 This option was previously used to specify a metalink resource. Metalink
 support has been disabled in curl since 7.78.0 for security reasons.
index 69a0e6c661a927f8597c587816d2643f91aade69..727f8982668f507541897489adb84be7744491fd 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: negotiate
 Help: Use HTTP Negotiate (SPNEGO) authentication
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: basic ntlm anyauth proxy-negotiate
 Category: auth http
 Example: --negotiate -u : $URL
 Added: 7.10.6
+Multi: mutex
 ---
 Enables Negotiate (SPNEGO) authentication.
 
index 7af727fb14c28ac1156c1afb1696676f9b7d9668..f50c0ed34e677ca95e2b6c3aee0f596017329ea6 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: netrc-file
 Help: Specify FILE for netrc
 Arg: <filename>
@@ -6,10 +8,10 @@ Mutexed: netrc
 Category: curl
 Example: --netrc-file netrc $URL
 See-also: netrc user config
+Multi: single
 ---
 This option is similar to --netrc, except that you provide the path (absolute
 or relative) to the netrc file that curl should use. You can only specify one
-netrc file per invocation. If several --netrc-file options are provided,
-the last one will be used.
+netrc file per invocation.
 
 It will abide by --netrc-optional if specified.
index 5f6fea626aa4c0678177499bde821b7463936bf0..6d96acf6c5cd07871545734fe7d0a22de134ea26 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: netrc-optional
 Help: Use either .netrc or URL
 Mutexed: netrc
@@ -5,6 +7,7 @@ See-also: netrc-file
 Category: curl
 Example: --netrc-optional $URL
 Added: 7.9.8
+Multi: boolean
 ---
 Similar to --netrc, but this option makes the .netrc usage **optional**
 and not mandatory as the --netrc option does.
index 02497f78091d19d1feb5cf0d74b513472b67e6cd..7f109f7ada03f0bd52951b731295efaa7e277950 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: netrc
 Short: n
 Help: Must read .netrc for user name and password
@@ -5,6 +7,7 @@ Category: curl
 Example: --netrc $URL
 Added: 4.6
 See-also: netrc-file config user
+Multi: boolean
 ---
 Makes curl scan the *.netrc* (*_netrc* on Windows) file in the user's home
 directory for login name and password. This is typically used for FTP on
@@ -15,9 +18,9 @@ neither world- nor group-readable). The environment variable "HOME" is used
 to find the home directory.
 
 A quick and simple example of how to setup a *.netrc* to allow curl to FTP to
-the machine host.domain.com with user name \&'myself' and password \&'secret'
+the machine host.domain.com with user name 'myself' and password 'secret'
 could look similar to:
 
  machine host.domain.com
  login myself
- password secret"
+ password secret
index d3da64f5459da64ffc28822767673c0944ff733a..49a3d2e2e702c805c58b9f81188501491342ab29 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: :
 Long: next
 Tags:
@@ -9,6 +11,7 @@ Category: curl
 Example: $URL --next -d postthis www2.example.com
 Example: -I $URL --next https://example.net/
 See-also: parallel config
+Multi: append
 ---
 Tells curl to use a separate operation for the following URL and associated
 options. This allows you to send several URL requests, each with their own
@@ -21,6 +24,4 @@ options include --verbose, --trace, --trace-ascii and --fail-early.
 
 For example, you can do both a GET and a POST in a single command line:
 
-.nf
  curl www1.example.com --next -d postthis www2.example.com
-.fi
index bc620763235414806f9bf8dc777bf152e606eb2a..8f01f4af4ffc032471c871d3e0d2034ae635e8e2 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: no-alpn
 Tags: HTTP/2
 Protocols: HTTPS
@@ -7,6 +9,7 @@ Requires: TLS
 Help: Disable the ALPN TLS extension
 Category: tls http
 Example: --no-alpn $URL
+Multi: boolean
 ---
 Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built
 with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
index c356eb34d92226f189b349ec5a9825599052bf54..2de48c97c1e9fa3ddbe2527c14a730dc4bbadb1e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: no-buffer
 Short: N
 Help: Disable buffering of the output stream
@@ -5,11 +7,9 @@ Category: curl
 Example: --no-buffer $URL
 Added: 6.5
 See-also: progress-bar
+Multi: boolean
 ---
 Disables the buffering of the output stream. In normal work situations, curl
 will use a standard buffered output stream that will have the effect that it
 will output the data in chunks, not necessarily exactly when the data arrives.
 Using this option will disable that buffering.
-
-Note that this is the negated option name documented. You can thus use
---buffer to enforce the buffering.
diff --git a/docs/cmdline-opts/no-clobber.d b/docs/cmdline-opts/no-clobber.d
new file mode 100644 (file)
index 0000000..d8fc3f1
--- /dev/null
@@ -0,0 +1,19 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: no-clobber
+Help: Do not overwrite files that already exist
+Category: curl output
+Added: 7.83.0
+See-also: output remote-name
+Example: --no-clobber --output local/dir/file $URL
+Multi: boolean
+---
+When used in conjunction with the --output, --remote-header-name,
+--remote-name, or --remote-name-all options, curl avoids overwriting files
+that already exist. Instead, a dot and a number gets appended to the name
+of the file that would be created, up to filename.100 after which it will not
+create any file.
+
+Note that this is the negated option name documented.  You can thus use
+--clobber to enforce the clobbering, even if --remote-header-name or -J is
+specified.
index d65a3bd21579cccfff00b5a327bb604a3edd8afc..0f44646473bb4dc2b951b939cfb9ce5899c76992 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: no-keepalive
 Help: Disable TCP keepalive on the connection
 Category: connection
 Example: --no-keepalive $URL
 Added: 7.18.0
 See-also: keepalive-time
+Multi: boolean
 ---
 Disables the use of keepalive messages on the TCP connection. curl otherwise
 enables them by default.
index 7a9239d361c6b2d554167f8acf5fb2b35de881af..97314e8ccf111619d0e55957f78c7f26d22a8448 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: no-npn
 Tags: Versions HTTP/2
 Protocols: HTTPS
@@ -8,7 +10,10 @@ Requires: TLS
 Help: Disable the NPN TLS extension
 Category: tls http
 Example: --no-npn $URL
+Multi: boolean
 ---
+In curl 7.86.0 and later, curl never uses NPN.
+
 Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
 with an SSL library that supports NPN. NPN is used by a libcurl that supports
 HTTP/2 to negotiate HTTP/2 support with the server during https sessions.
index 9c7413eeb9d160bf857ce854b4d5618970bbdbf8..9a298c44cc9ff00aa531e5685ee6c535280d84bd 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: no-progress-meter
 Help: Do not show the progress meter
 See-also: verbose silent
 Added: 7.67.0
 Category: verbose
 Example: --no-progress-meter -o store $URL
+Multi: boolean
 ---
 Option to switch off the progress meter output without muting or otherwise
 affecting warning and informational messages like --silent does.
index 1b771857bf185f1f69a633c0a5246b1469fec8eb..b3e51b216639c2964d76bc78b11ecf0517577e78 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: no-sessionid
 Help: Disable SSL session-ID reusing
 Protocols: TLS
@@ -5,6 +7,7 @@ Added: 7.16.0
 Category: tls
 Example: --no-sessionid $URL
 See-also: insecure
+Multi: boolean
 ---
 Disable curl's use of SSL session-ID caching. By default all transfers are
 done using the cache. Note that while nothing should ever get hurt by
index 0ed39077958788d77c9e6477574b86f0083e9b09..c28e897eb3d378e3ae1b37e25284b164302c4876 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: noproxy
 Arg: <no-proxy-list>
 Help: List of hosts which do not use proxy
@@ -5,6 +7,7 @@ Added: 7.19.4
 Category: proxy
 Example: --noproxy "www.example" $URL
 See-also: proxy
+Multi: single
 ---
 Comma-separated list of hosts for which not to use a proxy, if one is
 specified. The only wildcard is a single * character, which matches all hosts,
@@ -15,4 +18,4 @@ not www.notlocal.com.
 
 Since 7.53.0, This option overrides the environment variables that disable the
 proxy ('no_proxy' and 'NO_PROXY'). If there's an environment variable
-disabling a proxy, you can set the noproxy list to \&"" to override it.
+disabling a proxy, you can set the noproxy list to "" to override it.
index c8e72c325a39178a74ab91b53d758166e058c257..7317adc785dce6c5ed7ae1aff2d6afda2010227c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ntlm-wb
 Help: Use HTTP NTLM authentication with winbind
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: ntlm proxy-ntlm
 Category: auth http
 Example: --ntlm-wb -u user:password $URL
 Added: 7.22.0
+Multi: mutex
 ---
 Enables NTLM much in the style --ntlm does, but hand over the authentication
 to the separate binary ntlmauth application that is executed when needed.
index 658218a101ef62d44555a2e28389642f2ab25b69..9e1a996873c0f353a5a362f93594000646b62eb1 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ntlm
 Help: Use HTTP NTLM authentication
 Mutexed: basic negotiate digest anyauth
@@ -7,6 +9,7 @@ Requires: TLS
 Category: auth http
 Example: --ntlm -u user:password $URL
 Added: 7.10.6
+Multi: mutex
 ---
 Enables NTLM authentication. The NTLM authentication method was designed by
 Microsoft and is used by IIS web servers. It is a proprietary protocol,
index e5ed0e87f63d95f731c1f07f784543ec23520017..6b639cba000d8a73da147830393cb06510a7d56f 100644 (file)
@@ -1,16 +1,17 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: oauth2-bearer
 Help: OAuth 2 Bearer Token
 Arg: <token>
-Protocols: IMAP POP3 SMTP HTTP
+Protocols: IMAP LDAP POP3 SMTP HTTP
 Category: auth
 Example: --oauth2-bearer "mF_9.B5f-4.1JqM" $URL
 Added: 7.33.0
 See-also: basic ntlm digest
+Multi: single
 ---
 Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
 is used in conjunction with the user name which can be specified as part of
 the --url or --user options.
 
 The Bearer Token and user name are formatted according to RFC 6750.
-
-If this option is used several times, the last one will be used.
index 230ebeea5828c47b2a83b5ae19ae03396fc4c55a..5c53c7fdc27ce0b40069db1080a9859cf0fe2e8c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: output-dir
 Arg: <dir>
 Help: Directory to save files in
@@ -5,8 +7,8 @@ Added: 7.73.0
 See-also: remote-name remote-header-name
 Category: curl
 Example: --output-dir "tmp" -O $URL
+Multi: single
 ---
-
 This option specifies the directory in which files should be stored, when
 --remote-name or --output are used.
 
@@ -15,6 +17,3 @@ command line, up until the first --next.
 
 If the specified target directory does not exist, the operation will fail
 unless --create-dirs is also used.
-
-If this option is used multiple times, the last specified directory will be
-used.
index 15ddd525aaec68e39bbacf99048416abf42fb0f7..e3005d587cfcc1f28c7c45840a1f72e44f3232ed 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: output
 Arg: <file>
 Short: o
@@ -9,6 +11,7 @@ Example: "http://{one,two}.example.com" -o "file_#1.txt"
 Example: "http://{site,host}.host[1-5].com" -o "#1_#2"
 Example: -o file $URL -o file2 https://example.net
 Added: 4.0
+Multi: append
 ---
 Write output to <file> instead of stdout. If you are using {} or [] to fetch
 multiple documents, you should quote the URL and you can use '#' followed by a
index edd756f0f54602227583c0b870411bcec1d98d46..c8a65be04f389b1aab82ba6b27fd31e49073f410 100644 (file)
@@ -22,7 +22,7 @@ SMTP, LDAP, etc.
 Sets the proxy server to use if no protocol-specific proxy is set.
 .IP "NO_PROXY <comma-separated list of hosts/domains>"
 list of host names that should not go through any proxy. If set to an asterisk
-\&'*' only, it matches all hosts. Each name in this list is matched as either
+'*' only, it matches all hosts. Each name in this list is matched as either
 a domain name which contains the hostname, or the hostname itself.
 
 This environment variable disables use of the proxy even when specified with
@@ -60,7 +60,7 @@ invoked. Setting a name that is not a built-in alternative will make curl
 stay with the default.
 
 SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
-mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
+nss, openssl, rustls, schannel, secure-transport, wolfssl
 .IP "HOME <dir>"
 If set, this is used to find the home directory when that is needed. Like when
 looking for the default .curlrc. \fBCURL_HOME\fP and \fBXDG_CONFIG_HOME\fP
@@ -113,6 +113,8 @@ Makes it the equivalent of --socks5-hostname
 There are a bunch of different error codes and their corresponding error
 messages that may appear under error conditions. At the time of this writing,
 the exit codes are:
+.IP 0
+Success. The operation completed successfully according to the instructions.
 .IP 1
 Unsupported protocol. This build of curl has no support for this protocol.
 .IP 2
@@ -164,7 +166,7 @@ failed.
 .IP 21
 FTP quote error. A quote command returned error from the server.
 .IP 22
-HTTP page not retrieved. The requested url was not found or returned another
+HTTP page not retrieved. The requested URL was not found or returned another
 error with the HTTP error code being 400 or above. This return code only
 appears if --fail is used.
 .IP 23
@@ -215,8 +217,6 @@ option to curl that was passed on to libcurl and rejected. Read up in the
 manual!
 .IP 49
 Malformed telnet option.
-.IP 51
-The peer's SSL certificate or SSH MD5 fingerprint was not OK.
 .IP 52
 The server did not reply anything, which here is considered an error.
 .IP 53
@@ -235,8 +235,6 @@ Could not use specified SSL cipher.
 Peer certificate cannot be authenticated with known CA certificates.
 .IP 61
 Unrecognized transfer encoding.
-.IP 62
-Invalid LDAP URL.
 .IP 63
 Maximum file size exceeded.
 .IP 64
@@ -261,10 +259,6 @@ Unknown TFTP transfer ID.
 File already exists (TFTP).
 .IP 74
 No such user (TFTP).
-.IP 75
-Character conversion failed.
-.IP 76
-Character conversion functions required.
 .IP 77
 Problem reading the SSL CA cert (path? access rights?).
 .IP 78
index 900d21d84e37c5950b3e10dc415dea94891381cb..1737ab5bd06477d0bee12330542dbf300266b54f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
 .\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
@@ -31,7 +33,7 @@ curl \- transfer a URL
 **curl** is a tool for transferring data from or to a server. It supports these
 protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,
 LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP,
-SMTPS, TELNET or TFTP. The command is designed to work without user
+SMTPS, TELNET, TFTP, WS and WSS. The command is designed to work without user
 interaction.
 
 curl offers a busload of useful tricks like proxy support, user
index 4f7468de658df107006bf977b923e37c91b8cced..e202214c19cc6173643ca646d02212b3b1868dae 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: parallel-immediate
 Help: Do not wait for multiplexing (with --parallel)
 Added: 7.68.0
 See-also: parallel parallel-max
 Category: connection curl
 Example: --parallel-immediate -Z $URL -o file1 $URL -o file2
+Multi: boolean
 ---
 When doing parallel transfers, this option will instruct curl that it should
 rather prefer opening up more connections in parallel at once rather than
index 1f22fcb7d23af9ea5033048fceccabe10b545455..7bdd1b8f47cbc2ea9b9ff1c12b841535ee8886eb 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: parallel-max
 Arg: <num>
 Help: Maximum concurrency for parallel transfers
@@ -5,6 +7,7 @@ Added: 7.66.0
 See-also: parallel
 Category: connection curl
 Example: --parallel-max 100 -Z $URL ftp://example.com/
+Multi: single
 ---
 When asked to do parallel transfers, using --parallel, this option controls
 the maximum amount of transfers to do simultaneously.
index f2ccaa78e6de107900951a0f1d7170c9732ba8d5..83c5cc5bde1ac2b82d68a8072dc15c6482e6d6eb 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: Z
 Long: parallel
 Help: Perform transfers in parallel
@@ -5,6 +7,7 @@ Added: 7.66.0
 Category: connection curl
 Example: --parallel $URL -o file1 $URL -o file2
 See-also: next verbose
+Multi: boolean
 ---
 Makes curl perform its transfers in parallel as compared to the regular serial
 manner.
index 621754d613d24448fbe10616beebd47424219374..a81c348926bbe7a96c47a93577c0151bcd0dda90 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: pass
 Arg: <phrase>
 Help: Pass phrase for the private key
@@ -6,7 +8,6 @@ Category: ssh tls auth
 Example: --pass secret --key file $URL
 Added: 7.9.3
 See-also: key user
+Multi: single
 ---
 Passphrase for the private key.
-
-If this option is used several times, the last one will be used.
index 3a82c44099c30101fad95dc4cf05b151028c072e..45c161b6dfe22857a178958441232ee90d01d306 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: path-as-is
 Help: Do not squash .. sequences in URL path
 Added: 7.42.0
 Category: curl
 Example: --path-as-is https://example.com/../../etc/passwd
 See-also: request-target
+Multi: boolean
 ---
 Tell curl to not handle sequences of /../ or /./ in the given URL
 path. Normally curl will squash or merge them according to standards but with
index b47c42a8fdd27788df7e5c1ad9d1f4b71da9e4ef..3ac48469017ecba24ba3e9950393b9edfe7ea53c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: pinnedpubkey
 Arg: <hashes>
 Help: FILE/HASHES Public key to verify peer against
@@ -7,6 +9,7 @@ Example: --pinnedpubkey keyfile $URL
 Example: --pinnedpubkey 'sha256//ce118b51897f4452dc' $URL
 Added: 7.39.0
 See-also: hostpubsha256
+Multi: single
 ---
 Tells curl to use the specified public key file (or hashes) to verify the
 peer. This can be a path to a file which contains a single public key in PEM
@@ -33,5 +36,3 @@ sha256 support:
 7.47.0: mbedtls
 
 Other SSL backends not supported.
-
-If this option is used several times, the last one will be used.
index 744ef5813ad727324f0066e694ce130911e2e173..0de2e519ed862fe239cb15ea4ff5408314ca80fa 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: post301
 Help: Do not switch to GET after following a 301
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: post302 post303 location
 Added: 7.17.1
 Category: http post
 Example: --post301 --location -d "data" $URL
+Multi: boolean
 ---
 Tells curl to respect RFC 7231/6.4.2 and not convert POST requests into GET
 requests when following a 301 redirection. The non-RFC behavior is ubiquitous
index 2c6d4b615c56f1c85782091e33b2e473a51fa31b..4a42c79d00ddd00167e66fe83100ca3b5f2fd900 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: post302
 Help: Do not switch to GET after following a 302
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: post301 post303 location
 Added: 7.19.1
 Category: http post
 Example: --post302 --location -d "data" $URL
+Multi: boolean
 ---
 Tells curl to respect RFC 7231/6.4.3 and not convert POST requests into GET
 requests when following a 302 redirection. The non-RFC behavior is ubiquitous
index a2fec18c4be196187e352ea55635912f4354bae5..79c891687f2e023dbbb2a1f48c7f769b550a9b36 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: post303
 Help: Do not switch to GET after following a 303
 Protocols: HTTP
@@ -5,6 +7,7 @@ See-also: post302 post301 location
 Added: 7.26.0
 Category: http post
 Example: --post303 --location -d "data" $URL
+Multi: boolean
 ---
 Tells curl to violate RFC 7231/6.4.4 and not convert POST requests into GET
 requests when following 303 redirections. A server may require a POST to
index e5dfb7f949042380119f72c3da3b3aa0815c132c..5be20712bbda023a764ba3817bc1d6c02e1a9741 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: preproxy
 Arg: [protocol://]host[:port]
 Help: Use this proxy first
@@ -5,6 +7,7 @@ Added: 7.52.0
 Category: proxy
 Example: --preproxy socks5://proxy.example -x http://http.example $URL
 See-also: proxy socks5
+Multi: single
 ---
 Use the specified SOCKS proxy before connecting to an HTTP or HTTPS --proxy. In
 such a case curl first connects to the SOCKS proxy and then connects (through
@@ -21,5 +24,3 @@ If the port number is not specified in the proxy string, it is assumed to be
 User and password that might be provided in the proxy string are URL decoded
 by curl. This allows you to pass in special characters such as @ by using %40
 or pass in a colon with %3a.
-
-If this option is used several times, the last one will be used.
index 549acb9b1da9e2474d01e2b41923685ee956079b..5c87023b8f9ba6ebc7ebe06c97a65a58cd7fe8dd 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: #
 Long: progress-bar
 Help: Display transfer progress as a bar
@@ -5,6 +7,7 @@ Category: verbose
 Example: -# -O $URL
 Added: 5.10
 See-also: styled-output
+Multi: boolean
 ---
 Make curl display transfer progress as a simple progress bar instead of the
 standard, more informational, meter.
index 86c59f5c60039a120de50c7261591d058ff7a5c8..bb8940f7ef5bae2d85fe1bf4b905abd8ed78acee 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proto-default
 Help: Use PROTOCOL for any URL missing a scheme
 Arg: <protocol>
@@ -5,6 +7,7 @@ Added: 7.45.0
 Category: connection curl
 Example: --proto-default https ftp.example.com
 See-also: proto proto-redir
+Multi: single
 ---
 Tells curl to use *protocol* for any URL missing a scheme name.
 
index d8cd296ffed297f8b06d1c0492b6f2296f983062..b6f0f0f3626f262785e1e7c8cee1ac239687a6d4 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proto-redir
 Arg: <protocols>
 Help: Enable/disable PROTOCOLS on redirect
@@ -5,6 +7,7 @@ Added: 7.20.2
 Category: connection curl
 Example: --proto-redir =http,https $URL
 See-also: proto
+Multi: single
 ---
 Tells curl to limit what protocols it may use on redirect. Protocols denied by
 --proto are not overridden by this option. See --proto for how protocols are
index 6ff52c41740f4446016f4b7ffa110e2573cec9d2..a24c0dbdcad3cb7b2d53213f3322f2ada3e3881b 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proto
 Arg: <protocols>
 Help: Enable/disable PROTOCOLS
@@ -5,10 +7,11 @@ See-also: proto-redir proto-default
 Added: 7.20.2
 Category: connection curl
 Example: --proto =http,https,sftp $URL
+Multi: single
 ---
 Tells curl to limit what protocols it may use for transfers. Protocols are
 evaluated left to right, are comma separated, and are each a protocol name or
-\&'all', optionally prefixed by zero or more modifiers. Available modifiers are:
+'all', optionally prefixed by zero or more modifiers. Available modifiers are:
 .RS
 .TP 3
 .B +
@@ -37,9 +40,9 @@ only enables http and https
 also only enables http and https
 .RE
 .IP
-Unknown protocols produce a warning. This allows scripts to safely rely on
-being able to disable potentially dangerous protocols, without relying upon
-support for that protocol being built into curl to avoid an error.
+Unknown and disabled protocols produce a warning. This allows scripts to
+safely rely on being able to disable potentially dangerous protocols, without
+relying upon support for that protocol being built into curl to avoid an error.
 
 This option can be used multiple times, in which case the effect is the same
 as concatenating the protocols into one instance of the option.
index 80f2b970125cb49fd23521df7377209da6d38491..c215ad7462b395ccbd8d0317274e2edd7b60977a 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-anyauth
 Help: Pick any proxy authentication method
 Added: 7.13.2
 See-also: proxy proxy-basic proxy-digest
 Category: proxy auth
 Example: --proxy-anyauth --proxy-user user:passwd -x proxy $URL
+Multi: mutex
 ---
 Tells curl to pick a suitable authentication method when communicating with
 the given HTTP proxy. This might cause an extra request/response round-trip.
index c651badc1009fb22a1ba3bd7d7677ce9f15758c8..3856c49f3bef726b66d3e339a8e81fe1fdf9ca60 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-basic
 Help: Use Basic authentication on the proxy
 See-also: proxy proxy-anyauth proxy-digest
 Category: proxy auth
 Example: --proxy-basic --proxy-user user:passwd -x proxy $URL
 Added: 7.12.0
+Multi: mutex
 ---
 Tells curl to use HTTP Basic authentication when communicating with the given
 proxy. Use --basic for enabling HTTP Basic with a remote host. Basic is the
index 5c3294475804a54ea315888b4ff1b7c46afff06b..a7c8e743bd3000ba89ef3fdf9908f676ad35f939 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-cacert
 Help: CA certificate to verify peer against for proxy
 Arg: <file>
@@ -5,5 +7,6 @@ Added: 7.52.0
 See-also: proxy-capath cacert capath proxy
 Category: proxy tls
 Example: --proxy-cacert CA-file.txt -x https://proxy $URL
+Multi: single
 ---
 Same as --cacert but used in HTTPS proxy context.
index 0429984f2a168adc1914916967309f9a78746350..e6113012b8c01842ca27636024ab2058645c8119 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-capath
 Help: CA directory to verify peer against for proxy
 Arg: <dir>
@@ -5,5 +7,6 @@ Added: 7.52.0
 See-also: proxy-cacert proxy capath
 Category: proxy tls
 Example: --proxy-capath /local/directory -x https://proxy $URL
+Multi: single
 ---
 Same as --capath but used in HTTPS proxy context.
index 9e09fdbbce059c0fd65d7357e41b39c97e429d12..2376acab426c1ba82c4dc95a641a359834483513 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-cert-type
 Arg: <type>
 Added: 7.52.0
@@ -5,5 +7,6 @@ Help: Client certificate type for HTTPS proxy
 Category: proxy tls
 Example: --proxy-cert-type PEM --proxy-cert file -x https://proxy $URL
 See-also: proxy-cert
+Multi: single
 ---
 Same as --cert-type but used in HTTPS proxy context.
index 5eae2a5495925180b900e9dc5b3544a6711fbbc7..cc2f8041bc33356c2021eb883962ed3a0dbf4a49 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-cert
 Arg: <cert[:passwd]>
 Help: Set client certificate for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls
 Example: --proxy-cert file -x https://proxy $URL
 See-also: proxy-cert-type
+Multi: single
 ---
 Same as --cert but used in HTTPS proxy context.
index aefcc92c0c2ec15c8949c6bd9eb6563914822073..1fdbb344327c9f915af4fb5d6a092329c5ff6621 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-ciphers
 Arg: <list>
 Help: SSL ciphers to use for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls
 Example: --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy $URL
 See-also: ciphers curves proxy
+Multi: single
 ---
 Same as --ciphers but used in HTTPS proxy context.
index 3dd0180754fd24202f7d150ccf9a67379dea6520..7e4ef24a95caf3b6774852ad2c7a62d63050e3bc 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-crlfile
 Arg: <file>
 Help: Set a CRL list for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls
 Example: --proxy-crlfile rejects.txt -x https://proxy $URL
 See-also: crlfile proxy
+Multi: single
 ---
 Same as --crlfile but used in HTTPS proxy context.
index 9677e92c570d0a8fdb5c897fcdc118b7d0511d00..f8a56fac9d283ebbc200b846d6cf07195154192c 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-digest
 Help: Use Digest authentication on the proxy
 See-also: proxy proxy-anyauth proxy-basic
 Category: proxy tls
 Example: --proxy-digest --proxy-user user:passwd -x proxy $URL
 Added: 7.12.0
+Multi: mutex
 ---
 Tells curl to use HTTP Digest authentication when communicating with the given
 proxy. Use --digest for enabling HTTP Digest with a remote host.
index 8ea209387733a41fe4b4c9034f8a05c976cdb2a9..c064b1ff86fb941eacf5d18bb748a1b96ad1627e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-header
 Arg: <header/@file>
 Help: Pass custom header(s) to proxy
@@ -8,6 +10,7 @@ Example: --proxy-header "X-First-Name: Joe" -x http://proxy $URL
 Example: --proxy-header "User-Agent: surprise" -x http://proxy $URL
 Example: --proxy-header "Host:" -x http://proxy $URL
 See-also: proxy
+Multi: append
 ---
 Extra header to include in the request when sending HTTP to a proxy. You may
 specify any number of extra headers. This is the equivalent option to --header
index 738d42286a44e7d84f8955d483cf0c564d46f9b4..7eb00244ee7297bd8323f7a4ce69311ba240e5f5 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-insecure
 Help: Do HTTPS proxy connections without verifying the proxy
 Added: 7.52.0
 Category: proxy tls
 Example: --proxy-insecure -x https://proxy $URL
 See-also: proxy insecure
+Multi: boolean
 ---
 Same as --insecure but used in HTTPS proxy context.
index 0194ba67c66d8049ec466675e476c8018a6408cd..7f4e51ef0fc8a44dfd8eb3440394d34f5482ecb0 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-key-type
 Arg: <type>
 Help: Private key file type for proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls
 Example: --proxy-key-type DER --proxy-key here -x https://proxy $URL
 See-also: proxy-key proxy
+Multi: single
 ---
 Same as --key-type but used in HTTPS proxy context.
index bf6868a436c2f54e80b46e398b3313339f61b597..01bd51aa6dbba0641997b42dbaa801f14465a660 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-key
 Help: Private key for HTTPS proxy
 Arg: <key>
@@ -5,5 +7,6 @@ Category: proxy tls
 Example: --proxy-key here -x https://proxy $URL
 Added: 7.52.0
 See-also: proxy-key-type proxy
+Multi: single
 ---
 Same as --key but used in HTTPS proxy context.
index 5085a7cb3aa023ad202a3ce26ba4b056f62ddb36..f0ca0b08a1ba5fc0eb9c5ac910cff5d486fa1c67 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-negotiate
 Help: Use HTTP Negotiate (SPNEGO) authentication on the proxy
 Added: 7.17.1
 See-also: proxy-anyauth proxy-basic
 Category: proxy auth
 Example: --proxy-negotiate --proxy-user user:passwd -x proxy $URL
+Multi: mutex
 ---
 Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating
 with the given proxy. Use --negotiate for enabling HTTP Negotiate (SPNEGO)
index 03d2d179c27299410d8e4455c2de012e53de2e1c..57cb9945dd846bdce14cb73611e23d50313aae17 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-ntlm
 Help: Use NTLM authentication on the proxy
 See-also: proxy-negotiate proxy-anyauth
 Category: proxy auth
 Example: --proxy-ntlm --proxy-user user:passwd -x http://proxy $URL
 Added: 7.10.7
+Multi: mutex
 ---
 Tells curl to use HTTP NTLM authentication when communicating with the given
 proxy. Use --ntlm for enabling NTLM with a remote host.
index a513991d07b384794c83e8507801f486b388d6ba..733e62615de7488034a8bf2bc2468207ababd643 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-pass
 Arg: <phrase>
 Help: Pass phrase for the private key for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls auth
 Example: --proxy-pass secret --proxy-key here -x https://proxy $URL
 See-also: proxy proxy-key
+Multi: single
 ---
 Same as --pass but used in HTTPS proxy context.
index 4e168ef6c156dbfa76b0be11d45bbc2a4f1089d3..4f139af6077104c2f60ccc3f7a22361501353682 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-pinnedpubkey
 Arg: <hashes>
 Help: FILE/HASHES public key to verify proxy with
@@ -7,6 +9,7 @@ Example: --proxy-pinnedpubkey keyfile $URL
 Example: --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' $URL
 Added: 7.59.0
 See-also: pinnedpubkey proxy
+Multi: single
 ---
 Tells curl to use the specified public key file (or hashes) to verify the
 proxy. This can be a path to a file which contains a single public key in PEM
@@ -17,5 +20,3 @@ When negotiating a TLS or SSL connection, the server sends a certificate
 indicating its identity. A public key is extracted from this certificate and
 if it does not exactly match the public key provided to this option, curl will
 abort the connection before sending or receiving any data.
-
-If this option is used several times, the last one will be used.
index 230b802d78c29a23bc2976c9f21fa792695bd274..02191afb09ebbf3d21ffe014e4feb5f074ec0cb7 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-service-name
 Arg: <name>
 Help: SPNEGO proxy service name
@@ -5,5 +7,6 @@ Added: 7.43.0
 Category: proxy tls
 Example: --proxy-service-name "shrubbery" -x proxy $URL
 See-also: service-name proxy
+Multi: single
 ---
 This option allows you to change the service name for proxy negotiation.
index d712429e3e07194b3c42950b4bc710aa78a77722..c5149f5979ac67f6dea316b3c267b78fb784407f 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-ssl-allow-beast
 Help: Allow security flaw for interop for HTTPS proxy
 Added: 7.52.0
 Category: proxy tls
 Example: --proxy-ssl-allow-beast -x https://proxy $URL
 See-also: ssl-allow-beast proxy
+Multi: boolean
 ---
 Same as --ssl-allow-beast but used in HTTPS proxy context.
index 77eb5352028cd480ed4b7ace6c5758463e39453f..21d09faa6c22675a216b0fea452963d3c24fca07 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-ssl-auto-client-cert
 Help: Use auto client certificate for proxy (Schannel)
 Added: 7.77.0
 Category: proxy tls
 Example: --proxy-ssl-auto-client-cert -x https://proxy $URL
 See-also: ssl-auto-client-cert proxy
+Multi: boolean
 ---
 Same as --ssl-auto-client-cert but used in HTTPS proxy context.
index 5ec835c7fe53e164e8a83b09f4d6ef84010b8878..90952ffadd67a90ad9cc291791de4e0750b0d653 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-tls13-ciphers
 Arg: <ciphersuite list>
 help: TLS 1.3 proxy cipher suites
@@ -6,6 +8,7 @@ Category: proxy tls
 Example: --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy $URL
 Added: 7.61.0
 See-also: tls13-ciphers curves
+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
@@ -16,5 +19,3 @@ ciphers. Read up on TLS 1.3 cipher suite details on this URL:
 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 --proxy-ciphers option.
-
-If this option is used several times, the last one will be used.
index 4d58af5a2b645a4adf72d84cc5f44ace79304b05..8ba7428e21b43c931223b52b9e5ccb34aa01a485 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-tlsauthtype
 Arg: <type>
 Help: TLS authentication type for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls auth
 Example: --proxy-tlsauthtype SRP -x https://proxy $URL
 See-also: proxy proxy-tlsuser
+Multi: single
 ---
 Same as --tlsauthtype but used in HTTPS proxy context.
index 6b41ed3c996dce56fa7204285ab9c081247e07dd..ba232e68a7d77132c2cde295be947fc04b0396c9 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-tlspassword
 Arg: <string>
 Help: TLS password for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls auth
 Example: --proxy-tlspassword passwd -x https://proxy $URL
 See-also: proxy proxy-tlsuser
+Multi: single
 ---
 Same as --tlspassword but used in HTTPS proxy context.
index 8291ab26abe87da2bc825ea094078f8eb29ba6c1..944d87601ec22909ca4dff6c62a1fc5c63f74c5a 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-tlsuser
 Arg: <name>
 Help: TLS username for HTTPS proxy
@@ -5,5 +7,6 @@ Added: 7.52.0
 Category: proxy tls auth
 Example: --proxy-tlsuser smith -x https://proxy $URL
 See-also: proxy proxy-tlspassword
+Multi: single
 ---
 Same as --tlsuser but used in HTTPS proxy context.
index 7175e617415b30a3db904009033dd143528abadd..b6d039b151e4858a5b51aa4897c82cc1363f1446 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-tlsv1
 Help: Use TLSv1 for HTTPS proxy
 Added: 7.52.0
 Category: proxy tls auth
 Example: --proxy-tlsv1 -x https://proxy $URL
 See-also: proxy
+Multi: mutex
 ---
 Same as --tlsv1 but used in HTTPS proxy context.
index 81ed55be5512129608dd40ed6b0a3cf4b9c7506a..572cb06c0f02b861b7f53fc466e65475912c38c7 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy-user
 Short: U
 Arg: <user:password>
@@ -6,6 +8,7 @@ Category: proxy auth
 Example: --proxy-user name:pwd -x proxy $URL
 Added: 4.0
 See-also: proxy-pass
+Multi: single
 ---
 Specify the user name and password to use for proxy authentication.
 
@@ -18,5 +21,3 @@ process listings. This is not enough to protect credentials from possibly
 getting seen by other users on the same system as they will still be visible
 for a moment before cleared. Such sensitive data should be retrieved from a
 file instead or similar and never used in clear text in a command line.
-
-If this option is used several times, the last one will be used.
index 60674b5f89d20e08ec9f36d7f6acb6bf24a742ca..a3be835bf3a96fedb25ecaa1bae902edce3210b0 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy
 Short: x
 Arg: [protocol://]host[:port]
@@ -6,6 +8,7 @@ Category: proxy
 Example: --proxy http://proxy.example $URL
 Added: 4.0
 See-also: socks5 proxy-basic
+Multi: single
 ---
 Use the specified proxy.
 
@@ -14,6 +17,9 @@ specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
 socks5:// or socks5h:// to request a specific SOCKS version to be used.
 (Added in 7.21.7)
 
+Unix domain sockets are supported for socks proxy. Set localhost for the host
+part. e.g. socks5h://localhost/path/to/socket.sock
+
 HTTPS proxy support via https:// protocol prefix was added in 7.52.0 for
 OpenSSL, GnuTLS and NSS.
 
@@ -25,7 +31,7 @@ If the port number is not specified in the proxy string, it is assumed to be
 
 This option overrides existing environment variables that set the proxy to
 use. If there's an environment variable setting a proxy, you can set proxy to
-\&"" to override it.
+"" to override it.
 
 All operations that are performed over an HTTP proxy will transparently be
 converted to HTTP. It means that certain protocol specific operations might
@@ -39,5 +45,3 @@ or pass in a colon with %3a.
 The proxy host can be specified the same way as the proxy environment
 variables, including the protocol prefix (http://) and the embedded user +
 password.
-
-If this option is used several times, the last one will be used.
index 65faf4b35ff8a8a096a0857d52b9c60e7397d1c0..3f7b61331ad1694a344e3581e046d40d7cb40261 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxy1.0
 Arg: <host[:port]>
 Help: Use HTTP/1.0 proxy on given port
@@ -5,6 +7,7 @@ Category: proxy
 Example: --proxy1.0 -x http://proxy $URL
 Added: 7.19.4
 See-also: proxy socks5 preproxy
+Multi: mutex
 ---
 Use the specified HTTP 1.0 proxy. If the port number is not specified, it is
 assumed at port 1080.
index a62cbb6947d905842b9af38a29a40461e81bba23..ef2d56b2a71a042cee39b10812ef357595d56d13 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: proxytunnel
 Short: p
 Help: Operate through an HTTP proxy tunnel (using CONNECT)
@@ -5,6 +7,7 @@ See-also: proxy
 Category: proxy
 Example: --proxytunnel -x http://proxy $URL
 Added: 7.3
+Multi: boolean
 ---
 When an HTTP proxy is used --proxy, this option will make curl tunnel through
 the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and
index 277904912d89bdfc2416622d1fad47582b970585..2078982e20336cccfde910440a8ba8c20a05e146 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: pubkey
 Arg: <key>
 Protocols: SFTP SCP
@@ -6,12 +8,11 @@ Category: sftp scp auth
 Example: --pubkey file.pub sftp://example.com/
 Added: 7.16.2
 See-also: pass
+Multi: single
 ---
 Public key file name. Allows you to provide your public key in this separate
 file.
 
-If this option is used several times, the last one will be used.
-
 (As of 7.39.0, curl attempts to automatically extract the public key from the
 private key file, so passing this option is generally not required. Note that
 this public key extraction requires libcurl to be linked against a copy of
index 1f0f5ead0d2d2a8d6d39523eb85d1e1dbf86eace..96c4e1f172154719b71ef1f1050f3fc70f7d72da 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: quote
 Arg: <command>
 Short: Q
@@ -7,14 +9,18 @@ Category: ftp sftp
 Example: --quote "DELE file" ftp://example.com/foo
 Added: 5.3
 See-also: request
+Multi: append
 ---
 Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
 sent BEFORE the transfer takes place (just after the initial PWD command in an
 FTP transfer, to be exact). To make commands take place after a successful
-transfer, prefix them with a dash '-'. To make commands be sent after curl
-has changed the working directory, just before the transfer command(s), prefix
-the command with a '+' (this is only supported for FTP). You may specify any
-number of commands.
+transfer, prefix them with a dash '-'.
+
+(FTP only) To make commands be sent after curl has changed the working
+directory, just before the file transfer command(s), prefix the command with a
+'+'. This is not performed when a directory listing is performed.
+
+You may specify any number of commands.
 
 By default curl will stop at first failure. To make curl continue even if the
 command fails, prefix the command with an asterisk (*). Otherwise, if the
index fe56f574faa93a834c5f26ce2c59cadedc146c9e..ad0a558cc28c092a3d09c819069843dc77855167 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: random-file
 Arg: <file>
 Help: File for reading random data from
@@ -5,7 +7,10 @@ Category: misc
 Example: --random-file rubbish $URL
 Added: 7.7
 See-also: egd-file
+Multi: single
 ---
+Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
 Specify the path name to file containing what will be considered as random
-data. The data may be used to seed the random engine for SSL connections. See
-also the --egd-file option.
+data. The data may be used to seed the random engine for SSL connections.
index 7ebf843aa47df9c5cf24c5d65692378e61f3b7b5..f49d40472b7a8da18f7030bc11b839e3f085ee0d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: range
 Short: r
 Help: Retrieve only the bytes within RANGE
@@ -7,6 +9,7 @@ Category: http ftp sftp file
 Example: --range 22-44 $URL
 Added: 4.0
 See-also: continue-at append
+Multi: single
 ---
 Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
 server or a local FILE. Ranges can be specified in a number of ways.
@@ -36,7 +39,7 @@ response, which will be returned as-is by curl! Parsing or otherwise
 transforming this response is the responsibility of the caller.
 
 Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
-\&'start-stop' range syntax. If a non-digit character is given in the range,
+'start-stop' range syntax. If a non-digit character is given in the range,
 the server's response will be unspecified, depending on the server's
 configuration.
 
@@ -47,5 +50,3 @@ whole document.
 FTP and SFTP range downloads only support the simple 'start-stop' syntax
 (optionally with one of the numbers omitted). FTP use depends on the extended
 FTP command SIZE.
-
-If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/rate.d b/docs/cmdline-opts/rate.d
new file mode 100644 (file)
index 0000000..953f865
--- /dev/null
@@ -0,0 +1,34 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: rate
+Arg: <max request rate>
+Help: Request rate for serial transfers
+Category: connection
+Example: --rate 2/s $URL
+Example: --rate 3/h $URL
+Example: --rate 14/m $URL
+Added: 7.84.0
+See-also: limit-rate retry-delay
+Multi: single
+---
+Specify the maximum transfer frequency you allow curl to use - in number of
+transfer starts per time unit (sometimes called request rate). Without this
+option, curl will start the next transfer as fast as possible.
+
+If given several URLs and a transfer completes faster than the allowed rate,
+curl will wait until the next transfer is started to maintain the requested
+rate. This option has no effect when --parallel is used.
+
+The request rate is provided as "N/U" where N is an integer number and U is a
+time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd'
+/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
+is number of transfers per hour.
+
+If curl is told to allow 10 requests per minute, it will not start the next
+request until 6 seconds have elapsed since the previous transfer was started.
+
+This function uses millisecond resolution. If the allowed frequency is set
+more than 1000 per second, it will instead run unrestricted.
+
+When retrying transfers, enabled with --retry, the separate retry delay logic
+is used and not this setting.
index dcf77fc46fa058c9ffb65f1ee6203294c5d0149f..8e753c12653b7eabdc0ebd80adf087b743c97b3b 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: raw
 Help: Do HTTP "raw"; no transfer decoding
 Added: 7.16.2
@@ -5,6 +7,7 @@ Protocols: HTTP
 Category: http
 Example: --raw $URL
 See-also: tr-encoding
+Multi: boolean
 ---
 When used, it disables all internal HTTP decoding of content or transfer
 encodings and instead makes them passed on unaltered, raw.
index 10aa8297e0519a88c24db8c97949cf98aff9df2d..3740957ebd9a5b4dc6fa768d5ee5d8fb99d0262d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: referer
 Short: e
 Arg: <URL>
@@ -9,11 +11,10 @@ Example: --referer "https://fake.example" $URL
 Example: --referer "https://fake.example;auto" -L $URL
 Example: --referer ";auto" -L $URL
 Added: 4.0
+Multi: single
 ---
 Sends the "Referrer Page" information to the HTTP server. This can also be set
 with the --header flag of course. When used with --location you can append
 ";auto" to the --referer URL to make curl automatically set the previous URL
-when it follows a Location: header. The \&";auto" string can be used alone,
+when it follows a Location: header. The ";auto" string can be used alone,
 even if you do not set an initial --referer.
-
-If this option is used several times, the last one will be used.
index 00db0b455070e44b2ef1cdc5ceee942e629b4ddc..f97cf49a3e87f28777d4cc4d21b669909898c1f7 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: remote-header-name
 Short: J
 Protocols: HTTP
@@ -6,12 +8,18 @@ Category: output
 Example: -OJ https://example.com/file
 Added: 7.20.0
 See-also: remote-name
+Multi: boolean
 ---
 This option tells the --remote-name option to use the server-specified
-Content-Disposition filename instead of extracting a filename from the URL.
+Content-Disposition filename instead of extracting a filename from the URL. If
+the server-provided file name contains a path, that will be stripped off
+before the file name is used.
+
+The file is saved in the current directory, or in the directory specified with
+--output-dir.
 
 If the server specifies a file name and a file with that name already exists
-in the current working directory it will not be overwritten and an error will
+in the destination directory, it will not be overwritten and an error will
 occur. If the server does not specify a file name then this option has no
 effect.
 
index 80e8a0a2e296eea64a62b02d7e954c0b18efa0df..fa6a233bbfde340e7494bc985d99e46d1136f6df 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: remote-name-all
 Help: Use the remote file name for all URLs
 Added: 7.19.0
 Category: output
 Example: --remote-name-all ftp://example.com/file1 ftp://example.com/file2
 See-also: remote-name
+Multi: boolean
 ---
 This option changes the default action for all given URLs to be dealt with as
 if --remote-name were used for each one. So if you want to disable that for a
index c149c185c6a10460ac4c68115fdf3fca352cfa3b..4e51b12063a549a81d5323771d1a9fea7a975a32 100644 (file)
@@ -1,17 +1,20 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: remote-name
 Short: O
 Help: Write output to a file named as the remote file
 Category: important output
 Example: -O https://example.com/filename
 Added: 4.0
-See-also: remote-name-all
+See-also: remote-name-all output-dir remote-header-name
+Multi: append
 ---
 Write output to a local file named like the remote file we get. (Only the file
 part of the remote file is used, the path is cut off.)
 
 The file will be saved in the current working directory. If you want the file
 saved in a different directory, make sure you change the current working
-directory before invoking curl with this option.
+directory before invoking curl with this option or use --output-dir.
 
 The remote file name to use for saving is extracted from the given URL,
 nothing else, and if it already exists it will be overwritten. If you want the
index 5728737237bdcaa545ce7428b2ac4e327cae01f2..12bd8830689d445040347f0cd7142e7a49a139bc 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: remote-time
 Short: R
 Help: Set the remote file's time on the local output
@@ -5,6 +7,7 @@ Category: output
 Example: --remote-time -o foo $URL
 Added: 7.9
 See-also: remote-name time-cond
+Multi: boolean
 ---
 When used, this will make curl attempt to figure out the timestamp of the
 remote file, and if that is available make the local file get that same
diff --git a/docs/cmdline-opts/remove-on-error.d b/docs/cmdline-opts/remove-on-error.d
new file mode 100644 (file)
index 0000000..4ac1595
--- /dev/null
@@ -0,0 +1,15 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
+Long: remove-on-error
+Help: Remove output file on errors
+See-also: fail
+Category: curl
+Example: --remove-on-error -o output $URL
+Added: 7.83.0
+Multi: boolean
+---
+When curl returns an error when told to save output in a local file, this
+option removes that saved file before exiting. This prevents curl from
+leaving a partial file in the case of an error during transfer.
+
+If the output is not a file, this option has no effect.
index d901fd8871858f2448450fa64150ccb471a9e0bc..0ddcbc0b2d793ca7e8c82158fc3d18810fac1511 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: request-target
 Arg: <path>
 Help: Specify the target for this request
@@ -6,6 +8,7 @@ Added: 7.55.0
 Category: http
 Example: --request-target "*" -X OPTIONS $URL
 See-also: request
+Multi: single
 ---
 Tells curl to use an alternative "target" (path) instead of using the path as
 provided in the URL. Particularly useful when wanting to issue HTTP requests
index 9a97149fb4e282b6fde3e58d51f689be455bbb1a..c837f0987fda9ab84292dba53e6b3912f517b8a3 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: request
 Short: X
 Arg: <method>
@@ -7,6 +9,7 @@ Example: -X "DELETE" $URL
 Example: -X NLST ftp://example.com/
 Added: 6.0
 See-also: request-target
+Multi: single
 ---
 (HTTP) Specifies a custom request method to use when communicating with the
 HTTP server. The specified request method will be used instead of the method
@@ -40,5 +43,3 @@ Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0)
 
 (SMTP)
 Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0)
-
-If this option is used several times, the last one will be used.
index cbe2887389e44d1c2375a01909747d260e221ae9..f5592bc75fca2008d7defd8de647ce296026d977 100644 (file)
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: resolve
 Arg: <[+]host:port:addr[,addr]...>
 Help: Resolve the host+port to this address
 Added: 7.21.3
-Category: connection
+Category: connection dns
 Example: --resolve example.com:443:127.0.0.1 $URL
 See-also: connect-to alt-svc
+Multi: append
 ---
 Provide a custom address for a specific host and port pair. Using this, you
 can make the curl requests(s) use a specified address and prevent the
index 37fdfc73194e3d1c5d4dbe3c4749d51e2f7725bf..a1fb89e9dde69171092937cd392ef25d9ef4cd0d 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: retry-all-errors
 Help: Retry all errors (use with --retry)
 Added: 7.71.0
 Category: curl
 Example: --retry 5 --retry-all-errors $URL
 See-also: retry
+Multi: boolean
 ---
 Retry on any error. This option is used together with --retry.
 
index 13574e80c9373b81e64803977e7a913728f4b9c2..6916603d65ea494085aedb22d0c8763abadf39ef 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: retry-connrefused
 Help: Retry on connection refused (use with --retry)
 Added: 7.52.0
 Category: curl
 Example: --retry-connrefused --retry $URL
 See-also: retry retry-all-errors
+Multi: boolean
 ---
 In addition to the other conditions, consider ECONNREFUSED as a transient
 error too for --retry. This option is used together with --retry.
index c4970bc8c5de0f4759755f3d4b1aad6559ada22c..78d0aac2a8a4bb406774fe6477224d8947795b1e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: retry-delay
 Arg: <seconds>
 Help: Wait time between retries
@@ -5,10 +7,9 @@ Added: 7.12.3
 Category: curl
 Example: --retry-delay 5 --retry $URL
 See-also: retry
+Multi: single
 ---
 Make curl sleep this amount of time before each retry when a transfer has
 failed with a transient error (it changes the default backoff time algorithm
 between retries). This option is only interesting if --retry is also
 used. Setting this delay to zero will make curl use the default backoff time.
-
-If this option is used several times, the last one will be used.
index 88ce20f7ddc2921f1977d2ab0ecfa24a7571a8c9..2e132f94604e11c21fde42229c6765a0bfaf16a1 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: retry-max-time
 Arg: <seconds>
 Help: Retry only within this period
@@ -5,6 +7,7 @@ Added: 7.12.3
 Category: curl
 Example: --retry-max-time 30 --retry 10 $URL
 See-also: retry
+Multi: single
 ---
 The retry timer is reset before the first transfer attempt. Retries will be
 done as usual (see --retry) as long as the timer has not reached this given
@@ -12,5 +15,3 @@ limit. Notice that if the timer has not reached the limit, the request will be
 made and while performing, it may take longer than this given time period. To
 limit a single request's maximum time, use --max-time. Set this option to
 zero to not timeout retries.
-
-If this option is used several times, the last one will be used.
index 428a092e6a2e9d2b70d718209ba6be0392fd3da7..080825bf8e1dbcf1d1c2e5257831676b10681114 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: retry
 Arg: <num>
 Added: 7.12.3
@@ -5,6 +7,7 @@ Help: Retry request if transient problems occur
 Category: curl
 Example: --retry 7 $URL
 See-also: retry-max-time
+Multi: single
 ---
 If a transient error is returned when curl tries to perform a transfer, it
 will retry this number of times before giving up. Setting the number to 0
@@ -20,5 +23,3 @@ using --retry-delay you disable this exponential backoff algorithm. See also
 
 Since curl 7.66.0, curl will comply with the Retry-After: response header if
 one was present to know when to issue the next retry.
-
-If this option is used several times, the last one will be used.
index d80e30f52c4227b945ab82bd0d7d75f2d6083585..ff56ce9c27844629b545b65a92cef62b5d88b998 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: sasl-authzid
 Arg: <identity>
 Help: Identity for SASL PLAIN authentication
@@ -5,8 +7,9 @@ Added: 7.66.0
 Category: auth
 Example: --sasl-authzid zid imap://example.com/
 See-also: login-options
+Multi: single
 ---
-Use this authorisation identity (authzid), during SASL PLAIN authentication,
+Use this authorization identity (authzid), during SASL PLAIN authentication,
 in addition to the authentication identity (authcid) as specified by --user.
 
 If the option is not specified, the server will derive the authzid from the
index f1289fd76404d1bc60dd533d7a991f9178420e85..8fe3a60e26c9bca3777db227e2ffa571755f3848 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: sasl-ir
 Help: Enable initial response in SASL authentication
 Added: 7.31.0
 Category: auth
 Example: --sasl-ir imap://example.com/
 See-also: sasl-authzid
+Multi: boolean
 ---
 Enable initial response in SASL authentication.
index fd9cb436bb186805665eb085e398f835503bbb50..0cf9cef74fc423ed97fdae0ca5d8f44b5aedf85f 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: service-name
 Help: SPNEGO service name
 Arg: <name>
@@ -5,6 +7,7 @@ Added: 7.43.0
 Category: misc
 Example: --service-name sockd/server $URL
 See-also: negotiate proxy-service-name
+Multi: single
 ---
 This option allows you to change the service name for SPNEGO.
 
index c1af391d08516c67d0517369ef609cb6db396bd5..a31e07d9e7ca7db318bfa14bc5ae3a548f53ee5c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: show-error
 Short: S
 Help: Show error even when -s is used
@@ -5,6 +7,7 @@ See-also: no-progress-meter
 Category: curl
 Example: --show-error --silent $URL
 Added: 5.9
+Multi: boolean
 ---
 When used with --silent, it makes curl show an error message if it fails.
 
index 3834ee62cab6e281adcc8ce90305df88c4055616..b31fe5cf112970da5bb55ec93ca50df8db0282a9 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: silent
 Short: s
 Help: Silent mode
@@ -5,6 +7,7 @@ See-also: verbose stderr no-progress-meter
 Category: important verbose
 Example: -s $URL
 Added: 4.0
+Multi: boolean
 ---
 Silent or quiet mode. Do not show progress meter or error messages. Makes Curl
 mute. It will still output the data you ask for, potentially even to the
index a1fb1b34453afa9dc8b525693119955c3e1d20be..c99a134e4f00d9f8bebef059137e29a132f0dfb8 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks4
 Arg: <host[:port]>
 Help: SOCKS4 proxy on given host + port
@@ -5,11 +7,15 @@ Added: 7.15.2
 Category: proxy
 Example: --socks4 hostname:4096 $URL
 See-also: socks4a socks5 socks5-hostname
+Multi: single
 ---
 Use the specified SOCKS4 proxy. If the port number is not specified, it is
 assumed at port 1080. Using this socket type make curl resolve the host name
 and passing the address on to the proxy.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4://localhost/path/to/socket.sock
+
 This option overrides any previous use of --proxy, as they are mutually
 exclusive.
 
@@ -19,5 +25,3 @@ using a socks4:// protocol prefix. (Added in 7.21.7)
 Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
 --proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-
-If this option is used several times, the last one will be used.
index e39b968aab964ccf5b89096f801778b2753e8db7..e3afbaf6b160f630af4811af4302fdfc7004329f 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks4a
 Arg: <host[:port]>
 Help: SOCKS4a proxy on given host + port
@@ -5,10 +7,14 @@ Added: 7.18.0
 Category: proxy
 Example: --socks4a hostname:4096 $URL
 See-also: socks4 socks5 socks5-hostname
+Multi: single
 ---
 Use the specified SOCKS4a proxy. If the port number is not specified, it is
 assumed at port 1080. This asks the proxy to resolve the host name.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4a://localhost/path/to/socket.sock
+
 This option overrides any previous use of --proxy, as they are mutually
 exclusive.
 
@@ -18,5 +24,3 @@ using a socks4a:// protocol prefix. (Added in 7.21.7)
 Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
 --proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-
-If this option is used several times, the last one will be used.
index 2e62bec5add137cd226a1ef49f286ca6e3207b6d..1f4d5e33f8c61805735b1a63f193d54d13d35c27 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks5-basic
 Help: Enable username/password auth for SOCKS5 proxies
 Added: 7.55.0
 Category: proxy auth
 Example: --socks5-basic --socks5 hostname:4096 $URL
 See-also: socks5
+Multi: mutex
 ---
 Tells curl to use username/password authentication when connecting to a SOCKS5
 proxy.  The username/password authentication is enabled by default.  Use
index 09166df22d555b624d9013c187a9d1f82d2c3243..bc5d317359b91411c8bf07082c5430c9663b9bba 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks5-gssapi-nec
 Help: Compatibility with NEC SOCKS5 server
 Added: 7.19.4
 Category: proxy auth
 Example: --socks5-gssapi-nec --socks5 hostname:4096 $URL
 See-also: socks5
+Multi: boolean
 ---
 As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
 says in section 4.3/4.4 it should be protected, but the NEC reference
index 5ce82ac3a43bf0b1151e36448471c854aa313853..218c0bf389144aa9cf09925d9aeab53fa1921c9d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks5-gssapi-service
 Arg: <name>
 Help: SOCKS5 proxy service name for GSS-API
@@ -5,6 +7,7 @@ Added: 7.19.4
 Category: proxy auth
 Example: --socks5-gssapi-service sockd --socks5 hostname:4096 $URL
 See-also: socks5
+Multi: single
 ---
 The default service name for a socks server is rcmd/server-fqdn. This option
 allows you to change it.
index 66209402046a0250e548ad43328d8c3a3bdcb19e..3a4fda21c62dd2c5e4b3c089d7faa99bed0ab84c 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks5-gssapi
 Help: Enable GSS-API auth for SOCKS5 proxies
 Added: 7.55.0
 Category: proxy auth
 Example: --socks5-gssapi --socks5 hostname:4096 $URL
 See-also: socks5
+Multi: boolean
 ---
 Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
 The GSS-API authentication is enabled by default (if curl is compiled with
index 6530429a9ee9c69c4fdbfbfa71f291c3646f6859..a5781370d7018f6f8f47c057c3baac193e84f562 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks5-hostname
 Arg: <host[:port]>
 Help: SOCKS5 proxy, pass host name to proxy
@@ -5,10 +7,14 @@ Added: 7.18.0
 Category: proxy
 Example: --socks5-hostname proxy.example:7000 $URL
 See-also: socks5 socks4a
+Multi: single
 ---
 Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
 the port number is not specified, it is assumed at port 1080.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5h://localhost/path/to/socket.sock
+
 This option overrides any previous use of --proxy, as they are mutually
 exclusive.
 
@@ -18,5 +24,3 @@ This option is superfluous since you can specify a socks5 hostname proxy with
 Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
 --proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
-
-If this option is used several times, the last one will be used.
index af1c05771230f1b9991e374500e70b668e04dd62..183b8c24d56a7fefd61ddfc400bd2c4ce86e780d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: socks5
 Arg: <host[:port]>
 Help: SOCKS5 proxy on given host + port
@@ -5,10 +7,14 @@ Added: 7.18.0
 Category: proxy
 Example: --socks5 proxy.example:7000 $URL
 See-also: socks5-hostname socks4a
+Multi: single
 ---
 Use the specified SOCKS5 proxy - but resolve the host name locally. If the
 port number is not specified, it is assumed at port 1080.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5://localhost/path/to/socket.sock
+
 This option overrides any previous use of --proxy, as they are mutually
 exclusive.
 
@@ -19,6 +25,4 @@ Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time
 --proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
 
-If this option is used several times, the last one will be used.
-
 This option (as well as --socks4) does not work with IPV6, FTPS or LDAP.
index c07b1d760f65f8cd9807da97794c4f8ff4cf92c4..878ca440df065dad9d6724116873b8a4697b38f6 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: speed-limit
 Short: Y
 Arg: <speed>
@@ -6,9 +8,8 @@ Category: connection
 Example: --speed-limit 300 --speed-time 10 $URL
 Added: 4.7
 See-also: speed-time limit-rate max-time
+Multi: single
 ---
-If a download is slower than this given speed (in bytes per second) for
+If a transfer is slower than this given speed (in bytes per second) for
 speed-time seconds it gets aborted. speed-time is set with --speed-time and is
 30 if not set.
-
-If this option is used several times, the last one will be used.
index 89cba59b60f8b4c40420265c376d048976b09094..1426b564805ed38ea70435e10d588e4e89704c25 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: speed-time
 Short: y
 Arg: <seconds>
@@ -6,12 +8,11 @@ Category: connection
 Example: --speed-limit 300 --speed-time 10 $URL
 Added: 4.7
 See-also: speed-limit limit-rate
+Multi: single
 ---
-If a download is slower than speed-limit bytes per second during a speed-time
-period, the download gets aborted. If speed-time is used, the default
+If a transfer runs slower than speed-limit bytes per second during a speed-time
+period, the transfer is aborted. If speed-time is used, the default
 speed-limit will be 1 unless set with --speed-limit.
 
-This option controls transfers and thus will not affect slow connects etc. If
-this is a concern for you, try the --connect-timeout option.
-
-If this option is used several times, the last one will be used.
+This option controls transfers (in both directions) but will not affect slow
+connects etc. If this is a concern for you, try the --connect-timeout option.
index 5a7fe995fcfbf10ab49ff5c671166e1014bed62c..2545d07badfe891002eb5c8959bdf5d351ab3331 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ssl-allow-beast
 Help: Allow security flaw to improve interop
 Added: 7.25.0
 Category: tls
 Example: --ssl-allow-beast $URL
 See-also: proxy-ssl-allow-beast insecure
+Multi: boolean
 ---
 This option tells curl to not work around a security flaw in the SSL3 and
 TLS1.0 protocols known as BEAST.  If this option is not used, the SSL layer
index 7581bdff688c18ca02e4bbf099ad3d9235abef15..617d20a64819bf376e40903e27bd240f11606748 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ssl-auto-client-cert
 Help: Use auto client certificate (Schannel)
 Added: 7.77.0
 See-also: proxy-ssl-auto-client-cert
 Category: tls
 Example: --ssl-auto-client-cert $URL
+Multi: boolean
 ---
 Tell libcurl to automatically locate and use a client certificate for
 authentication, when requested by the server. This option is only supported
index ba4b661f1a15f150a972a449e7c531ac6e98ebbd..ad036740f2f22b248023384722b472fc5700859f 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ssl-no-revoke
 Help: Disable cert revocation checks (Schannel)
 Added: 7.44.0
 Category: tls
 Example: --ssl-no-revoke $URL
 See-also: crlfile
+Multi: boolean
 ---
 (Schannel) This option tells curl to disable certificate revocation checks.
 WARNING: this option loosens the SSL security, and by using this flag you ask
index f8f23c9a058aa589ece7868f2b9a9af4fb5cc47c..cf81fb2291013c758cd870a65501fc2cb35aff56 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ssl-reqd
 Help: Require SSL/TLS
 Protocols: FTP IMAP POP3 SMTP LDAP
@@ -5,12 +7,13 @@ Added: 7.20.0
 Category: tls
 Example: --ssl-reqd ftp://example.com
 See-also: ssl insecure
+Multi: boolean
 ---
 Require SSL/TLS for the connection. Terminates the connection if the server
 does not support SSL/TLS.
 
 This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and rejected by the generic ldap backend if explicit
+by the OpenLDAP backend and rejected by the generic ldap backend if explicit
 TLS is required.
 
 This option was formerly known as --ftp-ssl-reqd.
index aad3ab0b4c74a08439fea8511f6488fdf03479e6..edf04cc0e130cd0c50a4ae601921447a31208cc6 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ssl-revoke-best-effort
 Help: Ignore missing/offline cert CRL dist points
 Added: 7.70.0
 Category: tls
 Example: --ssl-revoke-best-effort $URL
 See-also: crlfile insecure
+Multi: boolean
 ---
 (Schannel) This option tells curl to ignore certificate revocation checks when
 they failed due to missing/offline distribution points for the revocation check
index 83cac5c9d620578657faae5b0cead233fdfce335..31d46f883dd0bc259e544e60156b842f2b4bc3ce 100644 (file)
@@ -1,17 +1,23 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: ssl
 Help: Try SSL/TLS
 Protocols: FTP IMAP POP3 SMTP LDAP
 Added: 7.20.0
 Category: tls
 Example: --ssl pop3://example.com/
-See-also: insecure ciphers
+See-also: ssl-reqd insecure ciphers
+Multi: boolean
 ---
+Warning: this is considered an insecure option. Consider using --ssl-reqd
+instead to be sure curl upgrades to a secure connection.
+
 Try to use SSL/TLS for the connection. Reverts to a non-secure connection if
 the server does not support SSL/TLS. See also --ftp-ssl-control and --ssl-reqd
 for different levels of encryption required.
 
 This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and ignored by the generic ldap backend.
+by the OpenLDAP backend and ignored by the generic ldap backend.
 
 Please note that a server may close the connection if the negotiation does
 not succeed.
index f90596449045ed8e4db8f0f566231b098457f08c..fbda3fa1295f170d423989e69d8a370329090f04 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: 2
 Long: sslv2
 Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
 Help: Use SSLv2
 Category: tls
 Example: --sslv2 $URL
+Multi: mutex
 ---
 This option previously asked curl to use SSLv2, but starting in curl 7.77.0
 this instruction is ignored. SSLv2 is widely considered insecure (see RFC
index 6599531ce36192eb6644cfc52f939ae35c37c8d0..26f8e44b0cdb434837e75a2224db6a11970862fc 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: 3
 Long: sslv3
 Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
 Help: Use SSLv3
 Category: tls
 Example: --sslv3 $URL
+Multi: mutex
 ---
 This option previously asked curl to use SSLv3, but starting in curl 7.77.0
 this instruction is ignored. SSLv3 is widely considered insecure (see RFC
index 95b6604543070627c56bc25d7db8e07aba19edd5..e23f3cd145fe0e607a63d216c79a0a73571b491a 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: stderr
 Arg: <file>
 Help: Where to redirect stderr
@@ -5,11 +7,10 @@ See-also: verbose silent
 Category: verbose
 Example: --stderr output.txt $URL
 Added: 6.2
+Multi: single
 ---
 Redirect all writes to stderr to the specified file instead. If the file name
 is a plain '-', it is instead written to stdout.
 
 This option is global and does not need to be specified for each use of
 --next.
-
-If this option is used several times, the last one will be used.
index 364a18244241c0e6c4aba1ecd318ba4ef2934ba7..20e0114053e72790803abcf54a76aa809e98a082 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: styled-output
 Help: Enable styled output for HTTP headers
 Added: 7.61.0
 Category: verbose
 Example: --styled-output -I $URL
 See-also: head verbose
+Multi: boolean
 ---
 Enables the automatic use of bold font styles when writing HTTP headers to the
 terminal. Use --no-styled-output to switch them off.
index de465623be396949ec207bab5a8b7384ccc7c963..adde2499c882d816c62eaff2ef6c1fe7e1e9c1da 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: suppress-connect-headers
 Help: Suppress proxy CONNECT response headers
 See-also: dump-header include proxytunnel
 Category: proxy
 Example: --suppress-connect-headers --include -x proxy $URL
 Added: 7.54.0
+Multi: boolean
 ---
 When --proxytunnel is used and a CONNECT request is made do not output proxy
 CONNECT response headers. This option is meant to be used with --dump-header or
index 7b96b2d81a8dbc47a2a0dd828fc89901cc42ced5..155dfed94586c389b62cb8b8e9f4ca7264b62e3d 100644 (file)
@@ -1,8 +1,11 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tcp-fastopen
 Added: 7.49.0
 Help: Use TCP Fast Open
 Category: connection
 Example: --tcp-fastopen $URL
 See-also: false-start
+Multi: boolean
 ---
 Enable use of TCP Fast Open (RFC7413).
index a819b27fbda7242f0f385a6942e26812c9b069a1..cbb0a92bae4e2bdd431cb745a7f97218bf01633a 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tcp-nodelay
 Help: Use the TCP_NODELAY option
 Added: 7.11.2
 Category: connection
 Example: --tcp-nodelay $URL
 See-also: no-buffer
+Multi: boolean
 ---
 Turn on the TCP_NODELAY option. See the *curl_easy_setopt(3)* man page for
 details about this option.
index 50f0d4800d714e156fdc3423f34ebfa78c7de6d0..3e239e20f2b22039fba844992209cf2e31066fb2 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: telnet-option
 Short: t
 Arg: <opt=val>
@@ -6,6 +8,7 @@ Category: telnet
 Example: -t TTYPE=vt100 telnet://example.com/
 Added: 7.7
 See-also: config
+Multi: append
 ---
 Pass options to the telnet protocol. Supported options are:
 
index c180569a4dc817fad5b3cfcffe6c540165f9cdd4..9aaa9850df8119835138668287e411dc0981b432 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tftp-blksize
 Arg: <value>
 Help: Set TFTP BLKSIZE option
@@ -6,9 +8,8 @@ Added: 7.20.0
 Category: tftp
 Example: --tftp-blksize 1024 tftp://example.com/file
 See-also: tftp-no-options
+Multi: single
 ---
 Set TFTP BLKSIZE option (must be >512). This is the block size that curl will
 try to use when transferring data to or from a TFTP server. By default 512
 bytes will be used.
-
-If this option is used several times, the last one will be used.
index a90655a0239fc3b68a04678f8220b1da6b60cde1..8b252bd282d8e8c5889f083643561cc44b02ab18 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tftp-no-options
 Help: Do not send any TFTP options
 Protocols: TFTP
@@ -5,6 +7,7 @@ Added: 7.48.0
 Category: tftp
 Example: --tftp-no-options tftp://192.168.0.1/
 See-also: tftp-blksize
+Multi: boolean
 ---
 Tells curl not to send TFTP options requests.
 
index 602d66849c307a7b281fe25e5fdf33dd3bd45ca0..416b16527eee47446ada5e2ff368f5063a6a7a50 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: time-cond
 Short: z
 Arg: <time>
@@ -9,6 +11,7 @@ Example: -z "-Wed 01 Sep 2021 12:18:00" $URL
 Example: -z file $URL
 Added: 5.8
 See-also: etag-compare remote-time
+Multi: single
 ---
 Request a file that has been modified later than the given time and date, or
 one that has been modified before that time. The <date expression> can be all
@@ -19,5 +22,3 @@ instead. See the *curl_getdate(3)* man pages for date expression details.
 Start the date expression with a dash (-) to make it request for a document
 that is older than the given date/time, default is a document that is newer
 than the specified date/time.
-
-If this option is used several times, the last one will be used.
index 54431ac38154891a1a1151157ad10011ca891501..6a7375a703abb4cbb728ef372648c2a4fe2b7a23 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tls-max
 Arg: <VERSION>
 Tags: Versions
@@ -9,6 +11,7 @@ Help: Set maximum allowed TLS version
 Category: tls
 Example: --tls-max 1.2 $URL
 Example: --tls-max 1.3 --tlsv1.2 $URL
+Multi: single
 ---
 VERSION defines maximum supported TLS version. The minimum acceptable version
 is set by tlsv1.0, tlsv1.1, tlsv1.2 or tlsv1.3.
index ff3e5efdb9898ca455b3e3f2d5fc230658b769ef..60cbfe59ae817995d201392cc8f6d33a4360a80e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tls13-ciphers
 Arg: <ciphersuite list>
 help: TLS 1.3 cipher suites to use
@@ -6,6 +8,7 @@ Category: tls
 Example: --tls13-ciphers TLS_AES_128_GCM_SHA256 $URL
 Added: 7.61.0
 See-also: ciphers curves
+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
@@ -16,5 +19,3 @@ cipher suite details on this URL:
 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.
-
-If this option is used several times, the last one will be used.
index 1bee2a26833fa8d8a6665950928916587fe01882..23975399493f98073479087fec8ae00cee165c15 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlsauthtype
 Arg: <type>
 Help: TLS authentication type
@@ -5,6 +7,7 @@ Added: 7.21.4
 Category: tls auth
 Example: --tlsauthtype SRP $URL
 See-also: tlsuser
+Multi: single
 ---
 Set TLS authentication type. Currently, the only supported option is "SRP",
 for TLS-SRP (RFC 5054). If --tlsuser and --tlspassword are specified but
index a52e0e34efb08fe60ee093cef9c232ae1606e924..053751e7fa67c0e63ea83ce5217db5f98f4cb5ad 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlspassword
 Arg: <string>
 Help: TLS password
@@ -5,6 +7,7 @@ Added: 7.21.4
 Category: tls auth
 Example: --tlspassword pwd --tlsuser user $URL
 See-also: tlsuser
+Multi: single
 ---
 Set password for use with the TLS authentication method specified with
 --tlsauthtype. Requires that --tlsuser also be set.
index df5dd301f5c454db4f94b79482ad5d7fc3ff0391..a3f0d54cdd9956f7387ab6a55c6f5b7f7f01c91d 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlsuser
 Arg: <name>
 Help: TLS user name
@@ -5,6 +7,7 @@ Added: 7.21.4
 Category: tls auth
 Example: --tlspassword pwd --tlsuser user $URL
 See-also: tlspassword
+Multi: single
 ---
 Set username for use with the TLS authentication method specified with
 --tlsauthtype. Requires that --tlspassword also is set.
index 7c97c5093ae474fe19957b41eca774c9157ad73c..f5fe3bfb0b864331fe8fa11efdfcbdc1ef66cddf 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlsv1.0
 Help: Use TLSv1.0 or greater
 Protocols: TLS
@@ -5,6 +7,7 @@ Added: 7.34.0
 Category: tls
 Example: --tlsv1.0 $URL
 See-also: tlsv1.3
+Multi: mutex
 ---
 Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.
 
index 89bbb5ffb87d4d04aee16732cb3a6d87a88519cb..567254d70a353dce45a2d0cdaf4079dba014d6b0 100644 (file)
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlsv1.1
 Help: Use TLSv1.1 or greater
 Protocols: TLS
 Added: 7.34.0
 Category: tls
 Example: --tlsv1.1 $URL
-See-also: tlsv1.3
+See-also: tlsv1.3 tls-max
+Multi: mutex
 ---
 Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.
 
index 67376ee81d0b0c11758e815730047b54e2c3f9d1..df1b90be991e328eabc83af48d0752de66977235 100644 (file)
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlsv1.2
 Help: Use TLSv1.2 or greater
 Protocols: TLS
 Added: 7.34.0
 Category: tls
 Example: --tlsv1.2 $URL
-See-also: tlsv1.3
+See-also: tlsv1.3 tls-max
+Multi: mutex
 ---
 Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.
 
index 858bf295c2c6eee465f6dd08a38b4ea7353a56b2..d91b175d37aa8cea99c8a224658580dd69bd9eaf 100644 (file)
@@ -1,10 +1,13 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tlsv1.3
 Help: Use TLSv1.3 or greater
 Protocols: TLS
 Added: 7.52.0
 Category: tls
 Example: --tlsv1.3 $URL
-See-also: tlsv1.2
+See-also: tlsv1.2 tls-max
+Multi: mutex
 ---
 Forces curl to use TLS version 1.3 or later when connecting to a remote TLS
 server.
index a92b239de162fc50d57f7bb0d9b5b8b8a783a048..b958a809ec77cb5f3c20d17c9a057f66b0d1e2dd 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: 1
 Long: tlsv1
 Tags: Versions
@@ -9,6 +11,7 @@ See-also: http1.1 http2
 Help: Use TLSv1.0 or greater
 Category: tls
 Example: --tlsv1 $URL
+Multi: mutex
 ---
 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
index 4c25125a3ad98ad885e4919e14a8418b7a58dcf2..ca385ce53c525bbb264aa5c6b162b6e13ce2ee8c 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: tr-encoding
 Added: 7.21.6
 Help: Request compressed transfer encoding
@@ -5,6 +7,7 @@ Protocols: HTTP
 Category: http
 Example: --tr-encoding $URL
 See-also: compressed
+Multi: boolean
 ---
 Request a compressed Transfer-Encoding response using one of the algorithms
 curl supports, and uncompress the data while receiving it.
index 9ac86e17aff0635f260dd75fce6e2eb056ba7181..01484f9f647171c134cc4231410eb0c4e315c8dd 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: trace-ascii
 Arg: <file>
 Help: Like --trace, but without hex output
@@ -6,6 +8,7 @@ Category: verbose
 Example: --trace-ascii log.txt $URL
 Added: 7.9.7
 See-also: verbose trace
+Multi: single
 ---
 Enables a full trace dump of all incoming and outgoing data, including
 descriptive information, to the given output file. Use "-" as filename to have
@@ -17,5 +20,3 @@ for untrained humans.
 
 This option is global and does not need to be specified for each use of
 --next.
-
-If this option is used several times, the last one will be used.
index ea276c3885e1320c9059c9ff0aa79255f2874e7c..e769885443f060f556d9339f9aa8973a311f61eb 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: trace-time
 Help: Add time stamps to trace/verbose output
 Added: 7.14.0
 Category: verbose
 Example: --trace-time --trace-ascii output $URL
 See-also: trace verbose
+Multi: boolean
 ---
 Prepends a time stamp to each trace or verbose line that curl displays.
 
index 805afdd26e4c1d707ea2291edf1b8cff620e5f45..2f088ecb01d2b7a950bd532b15d76b3ca38c7961 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: trace
 Arg: <file>
 Help: Write a debug trace to FILE
@@ -6,6 +8,7 @@ Category: verbose
 Example: --trace log.txt $URL
 Added: 7.9.7
 See-also: trace-ascii trace-time
+Multi: single
 ---
 Enables a full trace dump of all incoming and outgoing data, including
 descriptive information, to the given output file. Use "-" as filename to have
@@ -14,5 +17,3 @@ stderr.
 
 This option is global and does not need to be specified for each use of
 --next.
-
-If this option is used several times, the last one will be used.
index fd001e32c895aa5da51e6bfad1038fc444e4933f..7d95a71df2fd289a7b45057263660ea3e6d9a649 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: unix-socket
 Arg: <path>
 Help: Connect through this Unix domain socket
@@ -6,5 +8,6 @@ Protocols: HTTP
 Category: connection
 See-also: abstract-unix-socket
 Example: --unix-socket socket-path $URL
+Multi: single
 ---
 Connect through this Unix domain socket, instead of using the network.
index 62fe6502ca3e023bd8a909c978ccf70e92b0cc68..3709896f65e73dfc4d42b7af7cfd9dbd304f6616 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: upload-file
 Short: T
 Arg: <file>
@@ -8,6 +10,7 @@ Example: -T "img[1-1000].png" ftp://ftp.example.com/
 Example: --upload-file "{file1,file2}" $URL
 Added: 4.0
 See-also: get head
+Multi: append
 ---
 This transfers the specified local file to the remote URL. If there is no file
 part in the specified URL, curl will append the local file name. NOTE that you
index f91ee009b27f1fa3921e28b7b1b276c170bcad46..5ec61b1dff567be62733ad1b55eec546b5df6a0e 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: url
 Arg: <url>
 Help: URL to work with
@@ -5,6 +7,7 @@ Category: curl
 Example: --url $URL
 Added: 7.5
 See-also: next config
+Multi: append
 ---
 Specify a URL to fetch. This option is mostly handy when you want to specify
 URL(s) in a config file.
@@ -15,8 +18,8 @@ name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
 used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
 setting a default protocol, see --proto-default for details.
 
-This option may be used any number of times. To control where this URL is
-written, use the --output or the --remote-name options.
+To control where this URL is written, use the --output or the --remote-name
+options.
 
 **WARNING**: On Windows, particular file:// accesses can be converted to
 network accesses by the operating system. Beware!
index d9d522421af82dda19951b8cba5aab544ae51947..569c7c6da9b72bee5e3537a13da2ac12c07154fe 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: B
 Long: use-ascii
 Help: Use ASCII/text transfer
@@ -6,6 +8,7 @@ Category: misc
 Example: -B ftp://example.com/README
 Added: 5.0
 See-also: crlf data-ascii
+Multi: boolean
 ---
 Enable ASCII transfer. For FTP, this can also be enforced by using a URL that
 ends with ";type=A". This option causes data sent to stdout to be in text mode
index 2412b9b2ac04500bb7c402060434782c0e38b5da..3f2b65d1ae26891e965eb16daccfa000945c2e40 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: A
 Long: user-agent
 Arg: <name>
@@ -7,6 +9,7 @@ Category: important http
 Example: -A "Agent 007" $URL
 Added: 4.5.1
 See-also: header proxy-header
+Multi: single
 ---
 Specify the User-Agent string to send to the HTTP server. To encode blanks in
 the string, surround the string with single quote marks. This header can also
@@ -15,5 +18,3 @@ be set with the --header or the --proxy-header options.
 If you give an empty argument to --user-agent (""), it will remove the header
 completely from the request. If you prefer a blank header, you can set it to a
 single space (" ").
-
-If this option is used several times, the last one will be used.
index 144704edd53e2ed616aa5a53b6338a402e2bc416..930df83cc271621ebeddcd0be6b24e0fb13266e7 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: user
 Short: u
 Arg: <user:password>
@@ -6,6 +8,7 @@ Category: important auth
 Example: -u user:secret $URL
 Added: 4.0
 See-also: netrc config
+Multi: single
 ---
 Specify the user name and password to use for server authentication. Overrides
 --netrc and --netrc-optional.
@@ -39,5 +42,3 @@ If you use a Windows SSPI-enabled curl binary and perform Kerberos V5,
 Negotiate, NTLM or Digest authentication then you can tell curl to select
 the user name and password from your environment by specifying a single colon
 with this option: "-u :".
-
-If this option is used several times, the last one will be used.
index 26e00e716ecf5a0422c26e2e087c7e369cb9a4ce..7122f7d248d8043c3569886cc98e87be82f4c7e0 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Short: v
 Long: verbose
 Mutexed: trace trace-ascii
@@ -6,6 +8,7 @@ See-also: include
 Category: important verbose
 Example: --verbose $URL
 Added: 4.0
+Multi: boolean
 ---
 Makes curl verbose during the operation. Useful for debugging and seeing
 what's going on "under the hood". A line starting with '>' means "header data"
index 7d380777485caac74ad6eba26fc1e223d2327919..032e2e2dbb3718975f84df8b1a7a196bc69ca4bd 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: version
 Short: V
 Help: Show version number and quit
@@ -5,6 +7,7 @@ Category: important curl
 Example: --version
 Added: 4.0
 See-also: help manual
+Multi: boolean
 ---
 Displays information about curl and the libcurl version it uses.
 
index 9a57c3dbcb5d7c74e139667d4cf5e80633000f84..8ca1746d08266d9acfd45f4fbaa4b4eaf07329c1 100644 (file)
@@ -1,3 +1,5 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: write-out
 Short: w
 Arg: <format>
@@ -6,6 +8,7 @@ Category: verbose
 Example: -w '%{http_code}\\n' $URL
 Added: 6.5
 See-also: verbose head
+Multi: single
 ---
 Make curl display information on stdout after a completed transfer. The format
 is a string that may contain plain text mixed with any number of
@@ -22,6 +25,11 @@ output a newline by using \\n, a carriage return with \\r and a tab space with
 The output will be written to standard output, but this can be switched to
 standard error by using %{stderr}.
 
+Output HTTP headers from the most recent request by using \fB%header{name}\fP
+where \fBname\fP is the case insensitive name of the header (without the
+trailing colon). The header contents are exactly as sent over the network,
+with leading and trailing whitespace trimmed. Added in curl 7.84.0.
+
 .B NOTE:
 The %-symbol is a special symbol in the win32-environment, where all
 occurrences of % must be doubled when using this option.
@@ -48,6 +56,15 @@ option. (Added in 7.26.0)
 The initial path curl ended up in when logging on to the remote FTP
 server. (Added in 7.15.4)
 .TP
+.B header_json
+A JSON object with all HTTP response headers from the recent transfer. Values
+are provided as arrays, since in the case of multiple headers there can be
+multiple values.
+
+The header names provided in lowercase, listed in order of appearance over the
+wire. Except for duplicated headers. They are grouped on the first occurrence
+of that header, each value is presented in the JSON array.
+.TP
 .B http_code
 The numerical response code that was found in the last retrieved HTTP(S) or
 FTP(s) transfer.
@@ -77,7 +94,7 @@ Number of new connects made in the recent transfer. (Added in 7.12.3)
 .TP
 .B num_headers
 The number of response headers in the most recent request (restarted at each
- redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
+redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
 .TP
 .B num_redirects
 Number of redirects that were followed in the request. (Added in 7.12.3)
@@ -190,4 +207,3 @@ The URL that was fetched last. This is most meaningful if you have told curl
 to follow location: headers.
 .RE
 .IP
-If this option is used several times, the last one will be used.
index 51ca834802afd81381b57cbed5a71278407a6190..9f1a6cf8a60425109016b61198a5eaa72be640fc 100644 (file)
@@ -1,9 +1,12 @@
+c: Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+SPDX-License-Identifier: curl
 Long: xattr
 Help: Store metadata in extended file attributes
 Category: misc
 Example: --xattr -o storage $URL
 Added: 7.21.3
 See-also: remote-time write-out verbose
+Multi: boolean
 ---
 When saving output to a file, this option tells curl to store certain file
 metadata in extended file attributes. Currently, the URL is stored in the
index 773e05c9bb396237d0481c03cec07d3e2897b60c..6a7fa86aa7d881f2bec1a9602192e43432be17fa 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl-config 1 "November 04, 2020" "Curl 7.81.0" "curl-config manual"
+.TH curl-config 1 "September 20, 2022" "Curl 7.86.0" "curl-config manual"
 
 .SH NAME
 curl-config \- Get information about a libcurl installation
@@ -61,9 +63,9 @@ on. The prefix is set with "configure --prefix".
 .IP "--protocols"
 Lists what particular protocols the installed libcurl was built to support. At
 the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
-TELNET, LDAP, DICT. Do not assume any particular order. The protocols will
-be listed using uppercase and are separated by newlines. There may be none,
-one, or several protocols in the list. (Added in 7.13.0)
+TELNET, LDAP, DICT and many more. Do not assume any particular order. The
+protocols will be listed using uppercase and are separated by newlines. There
+may be none, one, or several protocols in the list. (Added in 7.13.0)
 .IP "--ssl-backends"
 Lists the SSL backends that were enabled when libcurl was built. It might be
 no, one or several names. If more than one name, they will appear
@@ -81,23 +83,24 @@ major, minor, and patch. So that libcurl 7.7.4 would appear as 070704 and libcur
 omitted. (This option was broken in the 7.15.0 release.)
 .SH "EXAMPLES"
 What linker options do I need when I link with libcurl?
-
+.nf
   $ curl-config --libs
-
+.fi
 What compiler options do I need when I compile using libcurl functions?
-
+.nf
   $ curl-config --cflags
-
+.fi
 How do I know if libcurl was built with SSL support?
-
+.nf
   $ curl-config --feature | grep SSL
-
+.fi
 What's the installed libcurl version?
-
+.nf
   $ curl-config --version
-
+.fi
 How do I build a single file with a one-line command?
-
+.nf
   $ `curl-config --cc --cflags` -o example example.c `curl-config --libs`
+.fi
 .SH "SEE ALSO"
 .BR curl (1)
index f504a5741f8b79f1ee5626c4aace06a5077e5831..18d2cf07c5f4ac2924106c2238e0525efeea7eeb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 \- 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 \- 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
 .\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
 .\"
-.TH curl 1 "January 03 2022" "curl 7.81.0" "curl Manual"
+.TH curl 1 "October 23 2022" "curl 7.86.0" "curl Manual"
 .SH NAME
 curl \- transfer a URL
 .SH SYNOPSIS
@@ -31,7 +33,7 @@ curl \- transfer a URL
 \fBcurl\fP is a tool for transferring data from or to a server. It supports these
 protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,
 LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP,
-SMTPS, TELNET or TFTP. The command is designed to work without user
+SMTPS, TELNET, TFTP, WS and WSS. The command is designed to work without user
 interaction.
 
 curl offers a busload of useful tricks like proxy support, user
@@ -49,28 +51,28 @@ You can specify multiple URLs or parts of URLs by writing part sets within
 braces and quoting the URL as in:
 
 .nf
-  "http://site.{one,two,three}.com"
+  \(dqhttp://site.{one,two,three}.com"
 .fi
 
 or you can get sequences of alphanumeric series by using [] as in:
 
 .nf
-  "ftp://ftp.example.com/file[1-100].txt"
+  \(dqftp://ftp.example.com/file[1-100].txt"
 .fi
 
 .nf
-  "ftp://ftp.example.com/file[001-100].txt"    (with leading zeros)
+  \(dqftp://ftp.example.com/file[001-100].txt"    (with leading zeros)
 .fi
 
 .nf
-  "ftp://ftp.example.com/file[a-z].txt"
+  \(dqftp://ftp.example.com/file[a-z].txt"
 .fi
 
 Nested sequences are not supported, but you can use several ones next to each
 other:
 
 .nf
-  "http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
+  \(dqhttp://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
 .fi
 
 You can specify any amount of URLs on the command line. They will be fetched
@@ -81,23 +83,23 @@ You can specify a step counter for the ranges to get every Nth number or
 letter:
 
 .nf
-  "http://example.com/file[1-100:10].txt"
+  \(dqhttp://example.com/file[1-100:10].txt"
 .fi
 
 .nf
-  "http://example.com/file[a-z:2].txt"
+  \(dqhttp://example.com/file[a-z:2].txt"
 .fi
 
 When using [] or {} sequences when invoked from a command line prompt, you
 probably have to put the full URL within double quotes to avoid the shell from
 interfering with it. This also goes for other characters treated special, like
-for example \(aq&', '?' and '*'.
+for example '&', '?' and '*'.
 
 Provide the IPv6 zone index in the URL with an escaped percentage sign and the
 interface name. Like in
 
 .nf
-  "http://[fe80::3%25eth0]/"
+  \(dqhttp://[fe80::3%25eth0]/"
 .fi
 
 If you specify URL without protocol:// prefix, curl will attempt to guess what
@@ -116,8 +118,8 @@ specified on a single command line and cannot be used between separate curl
 invocations.
 .SH OUTPUT
 If not told otherwise, curl writes the received data to stdout. It can be
-instructed to instead save that data into a local file, using the \fI\-o, \-\-output\fP or
-\fI\-O, \-\-remote-name\fP options. If curl is given multiple URLs to transfer on the
+instructed to instead save that data into a local file, using the \-\-output or
+\-\-remote-name options. If curl is given multiple URLs to transfer on the
 command line, it similarly needs multiple options for where to save them.
 
 curl does not parse or otherwise "understand" the content it gets or writes as
@@ -185,22 +187,22 @@ do an operation and it is about to write data to the terminal, it
 mixing progress meter and response data.
 
 If you want a progress meter for HTTP POST or PUT requests, you need to
-redirect the response output to a file, using shell redirect (>), \fI\-o, \-\-output\fP or
+redirect the response output to a file, using shell redirect (>), \-\-output or
 similar.
 
 This does not apply to FTP upload as that operation does not spit out any
 response data to the terminal.
 
-If you prefer a progress "bar" instead of the regular meter, \fI\-#, \-\-progress-bar\fP is
+If you prefer a progress "bar" instead of the regular meter, \-\-progress-bar is
 your friend. You can also disable the progress meter completely with the
-\fI\-s, \-\-silent\fP option.
+\-\-silent option.
 .SH OPTIONS
 Options start with one or two dashes. Many of the options require an
 additional value next to them.
 
 The short "single-dash" form of the options, \-d for example, may be used with
 or without a space between it and its value, although a space is a recommended
-separator. The long "double-dash" form, \fI\-d, \-\-data\fP for example, requires a space
+separator. The long "double-dash" form, \-\-data for example, requires a space
 between it and its value.
 
 Short version options that do not need any additional values can be used
@@ -213,9 +215,11 @@ prefix it with "no-". However, in this list we mostly only list and show the
 \-\-option version of them.
 .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 \(aq@', however
+Note: netstat shows the path of an abstract socket prefixed with '@', however
 the <path> argument should not have this leading character.
 
+If --abstract-unix-socket is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --abstract-unix-socket socketpath https://example.com
@@ -233,6 +237,8 @@ just handle the cache in memory.
 If this option is used several times, curl will load contents from all the
 files but the last one will be used for saving.
 
+--alt-svc can be used several times in a command line
+
 Example:
 .nf
  curl --alt-svc svc.txt https://example.com
@@ -246,13 +252,15 @@ request and checking the response-headers, thus possibly inducing an extra
 network round-trip. This is used instead of setting a specific authentication
 method, which you can do with \fI\-\-basic\fP, \fI\-\-digest\fP, \fI\-\-ntlm\fP, and \fI\-\-negotiate\fP.
 
-Using \fI\-\-anyauth\fP is not recommended if you do uploads from stdin, since it may
+Using \-\-anyauth is not recommended if you do uploads from stdin, since it may
 require data to be sent twice and then the client must be able to rewind. If
 the need should arise when uploading from stdin, the upload operation will
 fail.
 
 Used together with \fI\-u, \-\-user\fP.
 
+Providing --anyauth multiple times has no extra effect.
+
 Example:
 .nf
  curl --anyauth --user me:pwd https://example.com
@@ -264,6 +272,9 @@ See also \fI--proxy-anyauth\fP, \fI--basic\fP and \fI--digest\fP.
 overwriting it. If the remote file does not exist, it will be created. Note
 that this flag is ignored by some SFTP servers (including OpenSSH).
 
+Providing --append multiple times has no extra effect.
+Disable it again with --no-append.
+
 Example:
 .nf
  curl --upload-file local --append ftp://example.com/
@@ -283,6 +294,8 @@ the endpoint.
 The service argument is a string that points to a function provided by a cloud
 (service-code) when the service name is omitted from the endpoint.
 
+If --aws-sigv4 is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --aws-sigv4 "aws:amz:east-2:es" --user "key:secret" https://example.com
@@ -297,6 +310,8 @@ previously set option that sets a different authentication method (such as
 
 Used together with \fI\-u, \-\-user\fP.
 
+Providing --basic multiple times has no extra effect.
+
 Example:
 .nf
  curl -u name:password --basic https://example.com
@@ -309,7 +324,7 @@ may contain multiple CA certificates. The certificate(s) must be in PEM
 format. Normally curl is built to use a default file for this, so this option
 is typically used to alter that default file.
 
-curl recognizes the environment variable named \(aqCURL_CA_BUNDLE' if it is
+curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is
 set, and uses the given path as a path to a CA cert bundle. This option
 overrides that variable.
 
@@ -324,14 +339,14 @@ If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
 option is supported for backward compatibility with other SSL engines, but it
 should not be set. If the option is not set, then curl will use the
 certificates in the system and user Keychain to verify the peer, which is the
-preferred method of verifying the peer\(aqs certificate chain.
+preferred method of verifying the peer's certificate chain.
 
 (Schannel only) This option is supported for Schannel in Windows 7 or later
 with libcurl 7.60 or later. This option is supported for backward
 compatibility with other SSL engines; instead it is recommended to use
-Windows\(aq store of root certificates (the default for Schannel).
+Windows' store of root certificates (the default for Schannel).
 
-If this option is used several times, the last one will be used.
+If --cacert is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -342,14 +357,15 @@ See also \fI--capath\fP and \fI-k, --insecure\fP.
 .IP "\-\-capath <dir>"
 (TLS) Tells curl to use the specified certificate directory to verify the
 peer. Multiple paths can be provided by separating them with ":" (e.g.
-\&"path1:path2:path3"). The certificates must be in PEM format, and if curl is
+\(dqpath1:path2:path3"). The certificates must be in PEM format, and if curl is
 built against OpenSSL, the directory must have been processed using the
-c_rehash utility supplied with OpenSSL. Using \fI\-\-capath\fP can allow
+c_rehash utility supplied with OpenSSL. Using \-\-capath can allow
 OpenSSL-powered curl to make SSL-connections much more efficiently than using
-\fI\-\-cacert\fP if the \-\-cacert file contains many CA certificates.
+\-\-cacert if the \-\-cacert file contains many CA certificates.
 
-If this option is set, the default capath value will be ignored, and if it is
-used several times, the last one will be used.
+If this option is set, the default capath value will be ignored.
+
+If --capath is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -362,11 +378,14 @@ See also \fI--cacert\fP and \fI-k, --insecure\fP.
 Certificate Status Request (aka. OCSP stapling) TLS extension.
 
 If this option is enabled and the server sends an invalid (e.g. expired)
-response, if the response suggests that the server certificate has been revoked,
-or no response at all is received, the verification fails.
+response, if the response suggests that the server certificate has been
+revoked, or no response at all is received, the verification fails.
 
 This is currently only implemented in the OpenSSL, GnuTLS and NSS backends.
 
+Providing --cert-status multiple times has no extra effect.
+Disable it again with --no-cert-status.
+
 Example:
 .nf
  curl --cert-status https://example.com
@@ -375,9 +394,13 @@ Example:
 See also \fI--pinnedpubkey\fP. Added in 7.41.0.
 .IP "\-\-cert-type <type>"
 (TLS) Tells curl what type the provided client certificate is using. PEM, DER, ENG
-and P12 are recognized types. If not specified, PEM is assumed.
+and P12 are recognized types.
 
-If this option is used several times, the last one will be used.
+The default type depends on the TLS backend and is usually PEM, however for
+Secure Transport and Schannel it is P12. If \-\-cert is a pkcs11: URI then ENG is
+the default type.
+
+If --cert-type is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -390,26 +413,30 @@ See also \fI-E, --cert\fP, \fI--key\fP and \fI--key-type\fP.
 with HTTPS, FTPS or another SSL-based protocol. The certificate must be in
 PKCS#12 format if using Secure Transport, or PEM format if using any other
 engine. If the optional password is not specified, it will be queried for on
-the terminal. Note that this option assumes a \&"certificate" file that is the
-private key and the client certificate concatenated! See \fI\-E, \-\-cert\fP and \fI\-\-key\fP to
+the terminal. Note that this option assumes a certificate file that is the
+private key and the client certificate concatenated. See \-\-cert and \-\-key to
 specify them independently.
 
+In the <certificate> portion of the argument, you must escape the character ":"
+as "\\:" so that it is not recognized as the password delimiter. Similarly, you
+must escape the character "\\" as "\\\\" so that it is not recognized as an
+escape character.
+
 If curl is built against the NSS SSL library then this option can tell
 curl the nickname of the certificate to use within the NSS database defined
 by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the
 NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be
-loaded. If you want to use a file from the current directory, please precede
-it with "./" prefix, in order to avoid confusion with a nickname. If the
-nickname contains ":", it needs to be preceded by "\\" so that it is not
-recognized as password delimiter. If the nickname contains "\\", it needs to
-be escaped as "\\\\" so that it is not recognized as an escape character.
+loaded.
+
+If you provide a path relative to the current directory, you must prefix the
+path with "./" in order to avoid confusion with an NSS database nickname.
 
 If curl is built against OpenSSL library, and the engine pkcs11 is available,
 then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in
 a PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
-PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP option will be set
-as "pkcs11" if none was provided and the \fI\-\-cert-type\fP option will be set as
-"ENG" if none was provided.
+PKCS#11 URI. If a PKCS#11 URI is provided, then the \-\-engine option will be set
+as "pkcs11" if none was provided and the \-\-cert-type option will be set as
+\(dqENG" if none was provided.
 
 (iOS and macOS only) If curl is built against Secure Transport, then the
 certificate string can either be the name of a certificate/private key in the
@@ -420,15 +447,15 @@ precede it with "./" prefix, in order to avoid confusion with a nickname.
 (Schannel only) Client certificates must be specified by a path
 expression to a certificate store. (Loading PFX is not supported; you can
 import it to a store first). You can use
-"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
+\(dq<store location>\\<store name>\\<thumbprint>" to refer to a certificate
 in the system certificates store, for example,
-"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
+\(dqCurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
 usually a SHA-1 hex string which you can see in certificate details. Following
 store locations are supported: CurrentUser, LocalMachine, CurrentService,
 Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
 LocalMachineEnterprise.
 
-If this option is used several times, the last one will be used.
+If --cert is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -444,7 +471,7 @@ specify valid ciphers. Read up on SSL cipher list details on this URL:
  https://curl.se/docs/ssl-ciphers.html
 .fi
 
-If this option is used several times, the last one will be used.
+If --ciphers is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -456,6 +483,9 @@ See also \fI--tlsv1.3\fP.
 (SCP SFTP) Enables built-in SSH compression.
 This is a request, not an order; the server may or may not do it.
 
+Providing --compressed-ssh multiple times has no extra effect.
+Disable it again with --no-compressed-ssh.
+
 Example:
 .nf
  curl --compressed-ssh sftp://example.com/
@@ -470,6 +500,9 @@ If this option is used and the server sends an unsupported encoding, curl will
 report an error. This is a request, not an order; the server may or may not
 deliver data compressed.
 
+Providing --compressed multiple times has no extra effect.
+Disable it again with --no-compressed.
+
 Example:
 .nf
  curl --compressed https://example.com
@@ -493,15 +526,15 @@ must be enclosed within quotes. Within double quotes, the following escape
 sequences are available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash
 preceding any other letter is ignored.
 
-If the first column of a config line is a \(aq#' character, the rest of the line
+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.
 
-Specify the filename to \fI\-K, \-\-config\fP as \(aq-' to make curl read the file from stdin.
+Specify the filename to \-\-config as '-' to make curl read the file from stdin.
 
 Note that to be able to specify a URL in the config file, you need to specify
-it using the \fI\-\-url\fP option, and not by simply writing the URL on its own
+it using the \-\-url option, and not by simply writing the URL on its own
 line. So, it could look similar to this:
 
 url = "https://curl.se/docs/"
@@ -522,8 +555,8 @@ url = "https://curl.se/docs/"
  # \-\-\- End of example file \-\-\-
 .fi
 
-When curl is invoked, it (unless \fI\-q, \-\-disable\fP is used) checks for a default
-config file and uses it if found, even when \fI\-K, \-\-config\fP is used. The default
+When curl is invoked, it (unless \-\-disable is used) checks for a default
+config file and uses it if found, even when \-\-config is used. The default
 config file is checked for in the following places in this order:
 
 1) "$CURL_HOME/.curlrc"
@@ -538,12 +571,15 @@ config file is checked for in the following places in this order:
 
 6) Windows: "%USERPROFILE%\\Application Data\\.curlrc"
 
-7) Non-windows: use getpwuid to find the home directory
+7) Non-Windows: use getpwuid to find the home directory
 
-8) On windows, if it finds no .curlrc file in the sequence described above, it
+8) On Windows, if it finds no .curlrc file in the sequence described above, it
 checks for one in the same dir the curl executable is placed.
 
-This option can be used multiple times to load multiple config files.
+On Windows two filenames are checked per location: .curlrc and _curlrc,
+preferring the former. Older versions on Windows checked for _curlrc only.
+
+--config can be used several times in a command line
 
 Example:
 .nf
@@ -552,12 +588,12 @@ Example:
 
 See also \fI-q, --disable\fP.
 .IP "\-\-connect-timeout <fractional seconds>"
-Maximum time in seconds that you allow curl\(aqs connection to take.  This only
+Maximum time in seconds that you allow curl's connection to take.  This only
 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.
 
-If this option is used several times, the last one will be used.
+If --connect-timeout is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -575,13 +611,13 @@ establish the network connection. It does NOT affect the hostname/port that is
 used for TLS/SSL (e.g. SNI, certificate verification) or for the application
 protocols. "HOST1" and "PORT1" may be the empty string, meaning "any
 host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the
-request\(aqs original host/port".
+request's original host/port".
 
 A "host" specified to this option is compared as a string, so it needs to
 match the name used in request URL. It can be either numerical such as
-"127.0.0.1" or the full host name such as "example.org".
+\(dq127.0.0.1" or the full host name such as "example.org".
 
-This option can be used many times to add many connect rules.
+--connect-to can be used several times in a command line
 
 Example:
 .nf
@@ -598,7 +634,7 @@ uploads, the FTP server command SIZE will not be used by curl.
 Use "-C \-" to tell curl to automatically find out where/how to resume the
 transfer. It then uses the given output/input files to figure that out.
 
-If this option is used several times, the last one will be used.
+If --continue-at is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -616,16 +652,15 @@ you set the file name to a single dash, "-", the cookies will be written to
 stdout.
 
 This command line option will activate the cookie engine that makes curl
-record and use cookies. Another way to activate it is to use the \fI\-b, \-\-cookie\fP
+record and use cookies. Another way to activate it is to use the \-\-cookie
 option.
 
 If the cookie jar cannot be created or written to, the whole curl operation
-will not fail or even report an error clearly. Using \fI\-v, \-\-verbose\fP will get a
+will not fail or even report an error clearly. Using \-\-verbose will get a
 warning displayed, but that is the only visible feedback you get about this
 possibly lethal situation.
 
-If this option is used several times, the last specified file name will be
-used.
+If --cookie-jar is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -635,34 +670,37 @@ Examples:
 
 See also \fI-b, --cookie\fP.
 .IP "\-b, \-\-cookie <data|filename>"
-(HTTP) Pass the data to the HTTP server in the Cookie header. It is supposedly
-the data previously received from the server in a "Set-Cookie:" line. The
-data should be in the format "NAME1=VALUE1; NAME2=VALUE2".
-
-If no \(aq=' symbol is used in the argument, it is instead treated as a filename
+(HTTP) Pass the data to the HTTP server in the Cookie header. It is supposedly the
+data previously received from the server in a "Set-Cookie:" line. The data
+should be in the format "NAME1=VALUE1; NAME2=VALUE2". This makes curl use the
+cookie header with this content explicitly in all outgoing request(s). If
+multiple requests are done due to authentication, followed redirects or
+similar, they will all get this cookie passed on.
+
+If no '=' symbol is used in the argument, it is instead treated as a filename
 to read previously stored cookie from. This option also activates the cookie
 engine which will make curl record incoming cookies, which may be handy if
-you are using this in combination with the \fI\-L, \-\-location\fP option or do multiple URL
+you are using this in combination with the \-\-location option or do multiple URL
 transfers on the same invoke. If the file name is exactly a minus ("-"), curl
 will instead read the contents from stdin.
 
 The file format of the file to read cookies from should be plain HTTP headers
 (Set-Cookie style) or the Netscape/Mozilla cookie file format.
 
-The file specified with \fI\-b, \-\-cookie\fP is only used as input. No cookies will be
-written to the file. To store cookies, use the \fI\-c, \-\-cookie-jar\fP option.
+The file specified with \-\-cookie is only used as input. No cookies will be
+written to the file. To store cookies, use the \-\-cookie-jar option.
 
 If you use the Set-Cookie file format and do not specify a domain then the
 cookie is not sent since the domain will never match. To address this, set a
 domain in Set-Cookie line (doing that will include sub-domains) or preferably:
 use the Netscape format.
 
-This option can be used multiple times.
-
 Users often want to both read cookies from a file and write updated cookies
-back to a file, so using both \fI\-b, \-\-cookie\fP and \fI\-c, \-\-cookie-jar\fP in the same command
+back to a file, so using both \-\-cookie and \-\-cookie-jar in the same command
 line is common.
 
+--cookie can be used several times in a command line
+
 Examples:
 .nf
  curl -b cookiefile https://example.com
@@ -671,9 +709,9 @@ Examples:
 
 See also \fI-c, --cookie-jar\fP and \fI-j, --junk-session-cookies\fP.
 .IP "\-\-create-dirs"
-When used in conjunction with the \fI\-o, \-\-output\fP option, curl will create the
+When used in conjunction with the \-\-output option, curl will create the
 necessary local directory hierarchy as needed. This option creates the
-directories mentioned with the \fI\-o, \-\-output\fP option, nothing else. If the \-\-output
+directories mentioned with the \-\-output option, nothing else. If the \-\-output
 file name uses no directory, or if the directories it mentions already exist,
 no directories will be created.
 
@@ -681,6 +719,9 @@ Created dirs are made with mode 0750 on unix style file systems.
 
 To create remote directories when using FTP or SFTP, try \fI\-\-ftp-create-dirs\fP.
 
+Providing --create-dirs multiple times has no extra effect.
+Disable it again with --no-create-dirs.
+
 Example:
 .nf
  curl --create-dirs --output local/dir/file https://example.com
@@ -689,12 +730,12 @@ Example:
 See also \fI--ftp-create-dirs\fP and \fI--output-dir\fP.
 .IP "\-\-create-file-mode <mode>"
 (SFTP SCP FILE) When curl is used to create files remotely using one of the supported
-protocols, this option allows the user to set which \(aqmode' to set on the file
+protocols, this option allows the user to set which 'mode' to set on the file
 at creation time, instead of the default 0644.
 
 This option takes an octal number as argument.
 
-If this option is used several times, the last one will be used.
+If --create-file-mode is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -707,6 +748,9 @@ See also \fI--ftp-create-dirs\fP. Added in 7.75.0.
 
 (SMTP added in 7.40.0)
 
+Providing --crlf multiple times has no extra effect.
+Disable it again with --no-crlf.
+
 Example:
 .nf
  curl --crlf -T file ftp://example.com/
@@ -717,7 +761,7 @@ See also \fI-B, --use-ascii\fP.
 (TLS) Provide a file using PEM format with a Certificate Revocation List that may
 specify peer certificates that are to be considered revoked.
 
-If this option is used several times, the last one will be used.
+If --crlfile is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -731,13 +775,15 @@ according to RFC 8422, 5.1.  Multiple algorithms can be provided by separating
 them with ":" (e.g.  "X25519:P-521").  The parameter is available identically
 in the "openssl s_client/s_server" utilities.
 
-\fI\-\-curves\fP allows a OpenSSL powered curl to make SSL-connections with exactly
+\-\-curves allows a OpenSSL powered curl to make SSL-connections with exactly
 the (EC) curve requested by the client, avoiding nontransparent client/server
 negotiations.
 
 If this option is set, the default curves list built into openssl will be
 ignored.
 
+If --curves is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --curves X25519 https://example.com
@@ -747,6 +793,8 @@ See also \fI--ciphers\fP. Added in 7.73.0.
 .IP "\-\-data-ascii <data>"
 (HTTP) This is just an alias for \fI\-d, \-\-data\fP.
 
+--data-ascii can be used several times in a command line
+
 Example:
 .nf
  curl --data-ascii @file https://example.com
@@ -757,10 +805,10 @@ See also \fI--data-binary\fP, \fI--data-raw\fP and \fI--data-urlencode\fP.
 (HTTP) This posts data exactly as specified with no extra processing whatsoever.
 
 If you start the data with the letter @, the rest should be a filename. Data
-is posted in a similar manner as \fI\-d, \-\-data\fP does, except that newlines and
+is posted in a similar manner as \-\-data does, except that newlines and
 carriage returns are preserved and conversions are never done.
 
-Like \fI\-d, \-\-data\fP the default content-type sent to the server is
+Like \-\-data the default content-type sent to the server is
 application/x-www-form-urlencoded. If you want the data to be treated as
 arbitrary binary data by the server then set the content-type to octet-stream:
 \-H "Content-Type: application/octet-stream".
@@ -768,6 +816,8 @@ arbitrary binary data by the server then set the content-type to octet-stream:
 If this option is used several times, the ones following the first will append
 data as described in \fI\-d, \-\-data\fP.
 
+--data-binary can be used several times in a command line
+
 Example:
 .nf
  curl --data-binary @filename https://example.com
@@ -775,9 +825,11 @@ Example:
 
 See also \fI--data-ascii\fP.
 .IP "\-\-data-raw <data>"
-(HTTP) This posts data similarly to \fI\-d, \-\-data\fP but without the special
+(HTTP) This posts data similarly to \-\-data but without the special
 interpretation of the @ character.
 
+--data-raw can be used several times in a command line
+
 Examples:
 .nf
  curl --data-raw "hello" https://example.com
@@ -786,7 +838,7 @@ Examples:
 
 See also \fI-d, --data\fP. Added in 7.43.0.
 .IP "\-\-data-urlencode <data>"
-(HTTP) This posts data, similar to the other \fI\-d, \-\-data\fP options with the exception
+(HTTP) This posts data, similar to the other \-\-data options with the exception
 that this performs URL-encoding.
 
 To be CGI-compliant, the <data> part should begin with a \fIname\fP followed
@@ -813,6 +865,8 @@ sign appended, resulting in \fIname=urlencoded-file-content\fP. Note that the
 name is expected to be URL-encoded already.
 .RE
 
+--data-urlencode can be used several times in a command line
+
 Examples:
 .nf
  curl --data-urlencode name=val https://example.com
@@ -828,22 +882,24 @@ that a browser does when a user has filled in an HTML form and presses the
 submit button. This will cause curl to pass the data to the server using the
 content-type application/x-www-form-urlencoded. Compare to \fI\-F, \-\-form\fP.
 
-\fI\-\-data-raw\fP is almost the same but does not have a special interpretation of
+\-\-data-raw is almost the same but does not have a special interpretation of
 the @ character. To post data purely binary, you should instead use the
-\fI\-\-data-binary\fP option. To URL-encode the value of a form field you may use
+\-\-data-binary option. To URL-encode the value of a form field you may use
 \fI\-\-data-urlencode\fP.
 
 If any of these options is used more than once on the same command line, the
 data pieces specified will be merged with a separating &-symbol. Thus, using
-\&\(aq-d name=daniel \-d skill=lousy' would generate a post chunk that looks like
-\&\(aqname=daniel&skill=lousy'.
+\(aq-d name=daniel \-d skill=lousy' would generate a post chunk that looks like
+\(aqname=daniel&skill=lousy'.
 
 If you start the data with the letter @, the rest should be a file name to
 read the data from, or \- if you want curl to read the data from stdin. Posting
-data from a file named \&\(aqfoobar' would thus be done with \fI\-d, \-\-data\fP @foobar. When
-\fI\-d, \-\-data\fP is told to read from a file like that, carriage returns and newlines
+data from a file named 'foobar' would thus be done with \fI\-d, \-\-data\fP @foobar. When
+\-\-data is told to read from a file like that, carriage returns and newlines
 will be stripped out. If you do not want the @ character to have a special
-interpretation use \fI\-\-data-raw\fP instead.
+interpretation use \-\-data-raw instead.
+
+--data can be used several times in a command line
 
 Examples:
 .nf
@@ -852,7 +908,7 @@ Examples:
  curl -d @filename https://example.com
 .fi
 
-See also \fI--data-binary\fP, \fI--data-urlencode\fP and \fI--data-raw\fP. This option overrides \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
+See also \fI--data-binary\fP, \fI--data-urlencode\fP and \fI--data-raw\fP. This option is mutually exclusive to \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
 .IP "\-\-delegation <LEVEL>"
 (GSS/kerberos) Set LEVEL to tell the server what it is allowed to delegate when it
 comes to user credentials.
@@ -866,7 +922,7 @@ service ticket, which is a matter of realm policy.
 Unconditionally allow the server to delegate.
 .RE
 
-If this option is used several times, the last one will be used.
+If --delegation is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -877,16 +933,17 @@ See also \fI-k, --insecure\fP and \fI--ssl\fP.
 .IP "\-\-digest"
 (HTTP) Enables HTTP Digest authentication. This is an authentication scheme that
 prevents the password from being sent over the wire in clear text. Use this in
-combination with the normal \fI\-u, \-\-user\fP option to set user name and password.
+combination with the normal \-\-user option to set user name and password.
 
-If this option is used several times, only the first one is used.
+Providing --digest multiple times has no extra effect.
+Disable it again with --no-digest.
 
 Example:
 .nf
  curl -u name:password --digest https://example.com
 .fi
 
-See also \fI-u, --user\fP, \fI--proxy-digest\fP and \fI--anyauth\fP. This option overrides \fI--basic\fP and \fI--ntlm\fP and \fI--negotiate\fP.
+See also \fI-u, --user\fP, \fI--proxy-digest\fP and \fI--anyauth\fP. This option is mutually exclusive to \fI--basic\fP and \fI--ntlm\fP and \fI--negotiate\fP.
 .IP "\-\-disable-eprt"
 (FTP) Tell curl to disable the use of the EPRT and LPRT commands when doing active
 FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT
@@ -902,7 +959,10 @@ If the server is accessed using IPv6, this option will have no effect as EPRT
 is necessary then.
 
 Disabling EPRT only changes the active behavior. If you want to switch to
-passive mode you need to not use \fI\-P, \-\-ftp-port\fP or force it with \fI\-\-ftp-pasv\fP.
+passive mode you need to not use \-\-ftp-port or force it with \fI\-\-ftp-pasv\fP.
+
+Providing --disable-eprt multiple times has no extra effect.
+Disable it again with --no-disable-eprt.
 
 Example:
 .nf
@@ -924,6 +984,9 @@ necessary then.
 Disabling EPSV only changes the passive behavior. If you want to switch to
 active mode you need to use \fI\-P, \-\-ftp-port\fP.
 
+Providing --disable-epsv multiple times has no extra effect.
+Disable it again with --no-disable-epsv.
+
 Example:
 .nf
  curl --disable-epsv ftp://example.com/
@@ -932,9 +995,12 @@ Example:
 See also \fI--disable-eprt\fP and \fI-P, --ftp-port\fP.
 .IP "\-q, \-\-disable"
 If used as the first parameter on the command line, the \fIcurlrc\fP config
-file will not be read and used. See the \fI\-K, \-\-config\fP for details on the default
+file will not be read and used. See the \-\-config for details on the default
 config file search path.
 
+Providing --disable multiple times has no extra effect.
+Disable it again with --no-disable.
+
 Example:
 .nf
  curl -q https://example.com
@@ -942,8 +1008,11 @@ Example:
 
 See also \fI-K, --config\fP.
 .IP "\-\-disallow-username-in-url"
-(HTTP) This tells curl to exit if passed a url containing a username. This is probably
-most useful when the URL is being provided at run-time or similar.
+(HTTP) This tells curl to exit if passed a URL containing a username. This is probably
+most useful when the URL is being provided at runtime or similar.
+
+Providing --disallow-username-in-url multiple times has no extra effect.
+Disable it again with --no-disallow-username-in-url.
 
 Example:
 .nf
@@ -956,6 +1025,8 @@ See also \fI--proto\fP. Added in 7.61.0.
 counterpart to \fI\-\-interface\fP (which does not affect DNS). The supplied string
 must be an interface name (not an address).
 
+If --dns-interface is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --dns-interface eth0 https://example.com
@@ -967,7 +1038,7 @@ See also \fI--dns-ipv4-addr\fP and \fI--dns-ipv6-addr\fP. \fI--dns-interface\fP
 the DNS requests originate from this address. The argument should be a
 single IPv4 address.
 
-If this option is used several times, the last one will be used.
+If --dns-ipv4-addr is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -980,7 +1051,7 @@ See also \fI--dns-interface\fP and \fI--dns-ipv6-addr\fP. \fI--dns-ipv4-addr\fP
 the DNS requests originate from this address. The argument should be a
 single IPv6 address.
 
-If this option is used several times, the last one will be used.
+If --dns-ipv6-addr is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -994,7 +1065,7 @@ The list of IP addresses should be separated with commas. Port numbers
 may also optionally be given as \fI:<port-number>\fP after each IP
 address.
 
-If this option is used several times, the last one will be used.
+If --dns-servers is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1003,7 +1074,10 @@ Example:
 
 See also \fI--dns-interface\fP and \fI--dns-ipv4-addr\fP. \fI--dns-servers\fP requires that the underlying libcurl was built to support c-ares. Added in 7.33.0.
 .IP "\-\-doh-cert-status"
-Same as \fI\-\-cert-status\fP but used for DoH (DNS-over-HTTPS).
+Same as \-\-cert-status but used for DoH (DNS-over-HTTPS).
+
+Providing --doh-cert-status multiple times has no extra effect.
+Disable it again with --no-doh-cert-status.
 
 Example:
 .nf
@@ -1012,7 +1086,10 @@ Example:
 
 See also \fI--doh-insecure\fP. Added in 7.76.0.
 .IP "\-\-doh-insecure"
-Same as \fI\-k, \-\-insecure\fP but used for DoH (DNS-over-HTTPS).
+Same as \-\-insecure but used for DoH (DNS-over-HTTPS).
+
+Providing --doh-insecure multiple times has no extra effect.
+Disable it again with --no-doh-insecure.
 
 Example:
 .nf
@@ -1027,9 +1104,12 @@ instead of using the default name resolver mechanism. The URL must be HTTPS.
 Some SSL options that you set for your transfer will apply to DoH since the
 name lookups take place over SSL. However, the certificate verification
 settings are not inherited and can be controlled separately via
-\fI\-\-doh-insecure\fP and \fI\-\-doh-cert-status\fP.
+\-\-doh-insecure and \fI\-\-doh-cert-status\fP.
+
+This option is unset if an empty string "" is used as the URL. (Added in
+7.85.0)
 
-If this option is used several times, the last one will be used.
+If --doh-url is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1044,7 +1124,7 @@ received, the use of this option will create an empty file.
 When used in FTP, the FTP server response lines are considered being "headers"
 and thus are saved there.
 
-If this option is used several times, the last one will be used.
+If --dump-header is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1053,9 +1133,14 @@ Example:
 
 See also \fI-o, --output\fP.
 .IP "\-\-egd-file <file>"
-(TLS) Specify the path name to the Entropy Gathering Daemon socket. The socket is
+(TLS) Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
+Specify the path name to the Entropy Gathering Daemon socket. The socket is
 used to seed the random engine for SSL connections.
 
+If --egd-file is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --egd-file /random/here https://example.com
@@ -1063,9 +1148,11 @@ Example:
 
 See also \fI--random-file\fP.
 .IP "\-\-engine <name>"
-(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \fI\-\-engine\fP
+(TLS) Select the OpenSSL crypto engine to use for cipher operations. Use \-\-engine
 list to print a list of build-time supported engines. Note that not all (and
-possibly none) of the engines may be available at run-time.
+possibly none) of the engines may be available at runtime.
+
+If --engine is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1082,10 +1169,12 @@ For correct results, make sure that the specified file contains only a
 single line with the desired ETag. An empty file is parsed as an empty
 ETag.
 
-Use the option \fI\-\-etag-save\fP to first save the ETag from a response, and
+Use the option \-\-etag-save to first save the ETag from a response, and
 then use this option to compare against the saved ETag in a subsequent
 request.
 
+If --etag-compare is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --etag-compare etag.txt https://example.com
@@ -1098,6 +1187,8 @@ caching related header, usually returned in a response.
 
 If no ETag is sent by the server, an empty file is created.
 
+If --etag-save is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --etag-save storetag.txt https://example.com
@@ -1110,6 +1201,8 @@ response when curl emits an Expects: 100-continue header in its request. By
 default curl will wait one second. This option accepts decimal values! When
 curl stops waiting, it will continue as if the response has been received.
 
+If --expect100-timeout is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --expect100-timeout 2.5 -T file https://example.com
@@ -1121,7 +1214,7 @@ Fail and exit on the first detected transfer error.
 
 When curl is used to do multiple transfers on the command line, it will
 attempt to operate on each given URL, one by one. By default, it will ignore
-errors if there are more URLs given and the last URL\(aqs success will determine
+errors if there are more URLs given and the last URL's success will determine
 the error code curl returns. So early failures will be "hidden" by subsequent
 successful transfers.
 
@@ -1132,9 +1225,12 @@ line. This way, no transfer failures go undetected by scripts and similar.
 This option is global and does not need to be specified for each use of \fI\-:, \-\-next\fP.
 
 This option does not imply \fI\-f, \-\-fail\fP, which causes transfers to fail due to the
-server\(aqs HTTP status code. You can combine the two options, however note \fI\-f, \-\-fail\fP
+server's HTTP status code. You can combine the two options, however note \-\-fail
 is not global and is therefore contained by \fI\-:, \-\-next\fP.
 
+Providing --fail-early multiple times has no extra effect.
+Disable it again with --no-fail-early.
+
 Example:
 .nf
  curl --fail-early https://example.com https://two.example
@@ -1148,41 +1244,50 @@ returns an HTML document stating so (which often also describes why and
 more). This flag will still allow curl to output and save that content but
 also to return error 22.
 
-This is an alternative option to \fI\-f, \-\-fail\fP which makes curl fail for the same
+This is an alternative option to \-\-fail which makes curl fail for the same
 circumstances but without saving the content.
 
+Providing --fail-with-body multiple times has no extra effect.
+Disable it again with --no-fail-with-body.
+
 Example:
 .nf
  curl --fail-with-body https://example.com
 .fi
 
-See also \fI-f, --fail\fP. Added in 7.76.0.
+See also \fI-f, --fail\fP. This option is mutually exclusive to \fI-f, --fail\fP. Added in 7.76.0.
 .IP "\-f, \-\-fail"
-(HTTP) Fail silently (no output at all) on server errors. This is mostly done to
-enable scripts etc to better deal with failed attempts. In normal cases
-when an HTTP server fails to deliver a document, it returns an HTML document
-stating so (which often also describes why and more). This flag will prevent
-curl from outputting that and return error 22.
+(HTTP) Fail fast with no output at all on server errors. This is useful to enable
+scripts and users to better deal with failed attempts. In normal cases when an
+HTTP server fails to deliver a document, it returns an HTML document stating
+so (which often also describes why and more). This flag will prevent curl from
+outputting that and return error 22.
 
 This method is not fail-safe and there are occasions where non-successful
 response codes will slip through, especially when authentication is involved
 (response codes 401 and 407).
 
+Providing --fail multiple times has no extra effect.
+Disable it again with --no-fail.
+
 Example:
 .nf
  curl --fail https://example.com
 .fi
 
-See also \fI--fail-with-body\fP.
+See also \fI--fail-with-body\fP. This option is mutually exclusive to \fI--fail-with-body\fP.
 .IP "\-\-false-start"
 (TLS) Tells curl to use false start during the TLS handshake. False start is a mode
 where a TLS client will start sending application data before verifying the
-server\(aqs Finished message, thus saving a round trip when performing a full
+server's Finished message, thus saving a round trip when performing a full
 handshake.
 
 This is currently only implemented in the NSS and Secure Transport (on iOS 7.0
 or later, or OS X 10.9 or later) backends.
 
+Providing --false-start multiple times has no extra effect.
+Disable it again with --no-false-start.
+
 Example:
 .nf
  curl --false-start https://example.com
@@ -1193,18 +1298,22 @@ See also \fI--tcp-fastopen\fP. Added in 7.42.0.
 (HTTP) Tells curl to pass on names of multipart form fields and files using
 backslash-escaping instead of percent-encoding.
 
+If --form-escape is provided several times, the last set value will be used.
+
 Example:
 .nf
- curl --form-escape --form 'field\\name=curl' 'file=@load"this' https://example.com
+ curl --form-escape -F 'field\\name=curl' -F 'file=@load"this' https://example.com
 .fi
 
 See also \fI-F, --form\fP. Added in 7.81.0.
 .IP "\-\-form-string <name=string>"
-(HTTP SMTP IMAP) Similar to \fI\-F, \-\-form\fP except that the value string for the named parameter is used
-literally. Leading \&\(aq@' and \&'<' characters, and the \&';type=' string in
-the value have no special meaning. Use this in preference to \fI\-F, \-\-form\fP if
-there\(aqs any possibility that the string value may accidentally trigger the
-\&\(aq@' or \&'<' features of \fI\-F, \-\-form\fP.
+(HTTP SMTP IMAP) Similar to \-\-form except that the value string for the named parameter is used
+literally. Leading '@' and '<' characters, and the ';type=' string in
+the value have no special meaning. Use this in preference to \-\-form if
+there's any possibility that the string value may accidentally trigger the
+\(aq@' or '<' features of \fI\-F, \-\-form\fP.
+
+--form-string can be used several times in a command line
 
 Example:
 .nf
@@ -1220,7 +1329,7 @@ Content-Type multipart/form-data according to RFC 2388.
 For SMTP and IMAP protocols, this is the means to compose a multipart mail
 message to transmit.
 
-This enables uploading of binary files etc. To force the \(aqcontent' part to be
+This enables uploading of binary files etc. To force the 'content' part to be
 a file, prefix the file name with an @ sign. To just get the content part from
 a file, prefix the file name with the symbol <. The difference between @ and <
 is then that @ makes a file get attached in the post as a file upload, while
@@ -1230,13 +1339,13 @@ file.
 Tell curl to read content from stdin instead of a file by using \- as
 filename. This goes for both @ and < constructs. When stdin is used, the
 contents is buffered in memory first by curl to determine its size and allow a
-possible resend. Defining a part\(aqs data from a named non-regular file (such
+possible resend. Defining a part's data from a named non-regular file (such
 as a named pipe or similar) is unfortunately not subject to buffering and will
 be effectively read at transmission time; since the full size is unknown
 before the transfer starts, such data is sent as chunks by HTTP and rejected
 by IMAP.
 
-Example: send an image to an HTTP server, where \&\(aqprofile' is the name of the
+Example: send an image to an HTTP server, where 'profile' is the name of the
 form-field to which the file portrait.jpg will be the input:
 
 .nf
@@ -1256,7 +1365,7 @@ text field, but get the contents for it from a local file:
  curl \-F "story=<hugefile.txt" https://example.com/
 .fi
 
-You can also tell curl what Content-Type to use by using \(aqtype=', in a manner
+You can also tell curl what Content-Type to use by using 'type=', in a manner
 similar to:
 
 .nf
@@ -1276,7 +1385,7 @@ filename=, like this:
  curl \-F "file=@localfile;filename=nameinpost" example.com
 .fi
 
-If filename/path contains \(aq,' or ';', it must be quoted by double-quotes like:
+If filename/path contains ',' or ';', it must be quoted by double-quotes like:
 
 .nf
  curl \-F "file=@\\"local,file\\";filename=\\"name;in;post\\"" example.com
@@ -1285,7 +1394,7 @@ If filename/path contains \(aq,' or ';', it must be quoted by double-quotes like
 or
 
 .nf
- curl \-F \(aqfile=@"local,file";filename="name;in;post"' example.com
+ curl \-F 'file=@"local,file";filename="name;in;post"' example.com
 .fi
 
 Note that if a filename/path is quoted by double-quotes, any double-quote
@@ -1295,7 +1404,7 @@ Quoting must also be applied to non-file data if it contains semicolons,
 leading/trailing spaces or leading double quotes:
 
 .nf
- curl \-F \(aqcolors="red; green; blue";type=text/x-myapp' example.com
+ curl \-F 'colors="red; green; blue";type=text/x-myapp' example.com
 .fi
 
 You can add custom headers to the field by setting headers=, like
@@ -1312,7 +1421,7 @@ or
 
 The headers= keyword may appear more that once and above notes about quoting
 apply. When headers are read from a file, Empty lines and lines starting
-with \(aq#' are comments and ignored; each header can be folded by splitting
+with '#' are comments and ignored; each header can be folded by splitting
 between two words and starting the continuation line with a space; embedded
 carriage-returns and trailing spaces are stripped.
 Here is an example of a header file contents:
@@ -1332,20 +1441,20 @@ To support sending multipart mail messages, the syntax is extended as follows:
 .br
 \- name can be omitted: the equal sign is the first character of the argument,
 .br
-\- if data starts with \(aq(', this signals to start a new multipart: it can be
+\- if data starts with '(', this signals to start a new multipart: it can be
 followed by a content type specification.
 .br
-\- a multipart can be terminated with a \(aq=)' argument.
+\- a multipart can be terminated with a '=)' argument.
 
 Example: the following command sends an SMTP mime email consisting in an
 inline part in two alternative formats: plain text and HTML. It attaches a
 text file:
 
 .nf
- curl \-F \(aq=(;type=multipart/alternative' \\
-      \-F \(aq=plain text message' \\
-      \-F \(aq= <body>HTML message</body>;type=text/html' \\
-      \-F \(aq=)' \-F '=@textfile.txt' ...  smtp://example.com
+ curl \-F '=(;type=multipart/alternative' \\
+      \-F '=plain text message' \\
+      \-F '= <body>HTML message</body>;type=text/html' \\
+      \-F '=)' \-F '=@textfile.txt' ...  smtp://example.com
 .fi
 
 Data can be encoded for transfer using encoder=. Available encodings are
@@ -1359,25 +1468,25 @@ Example: send multipart mail with a quoted-printable text message and a
 base64 attached file:
 
 .nf
- curl \-F \(aq=text message;encoder=quoted-printable' \\
-      \-F \(aq=@localfile;encoder=base64' ... smtp://example.com
+ curl \-F '=text message;encoder=quoted-printable' \\
+      \-F '=@localfile;encoder=base64' ... smtp://example.com
 .fi
 
 See further examples and details in the MANUAL.
 
-This option can be used multiple times.
+--form can be used several times in a command line
 
 Example:
 .nf
  curl --form "name=curl" --form "file=@loadthis" https://example.com
 .fi
 
-See also \fI-d, --data\fP, \fI--form-string\fP and \fI--form-escape\fP. This option overrides \fI-d, --data\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
+See also \fI-d, --data\fP, \fI--form-string\fP and \fI--form-escape\fP. This option is mutually exclusive to \fI-d, --data\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP.
 .IP "\-\-ftp-account <data>"
 (FTP) When an FTP server asks for "account data" after user name and password has
 been provided, this data is sent off using the ACCT command.
 
-If this option is used several times, the last one will be used.
+If --ftp-account is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1387,10 +1496,12 @@ Example:
 See also \fI-u, --user\fP.
 .IP "\-\-ftp-alternative-to-user <command>"
 (FTP) If authenticating with the USER and PASS commands fails, send this command.
-When connecting to Tumbleweed\(aqs Secure Transport server over FTPS using a
+When connecting to Tumbleweed's Secure Transport server over FTPS using a
 client certificate, using "SITE AUTH" will tell the server to retrieve the
 username from the certificate.
 
+If --ftp-alternative-to-user is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --ftp-alternative-to-user "U53r" ftp://example.com
@@ -1402,6 +1513,9 @@ See also \fI--ftp-account\fP and \fI-u, --user\fP.
 the server, the standard behavior of curl is to fail. Using this option, curl
 will instead attempt to create missing directories.
 
+Providing --ftp-create-dirs multiple times has no extra effect.
+Disable it again with --no-ftp-create-dirs.
+
 Example:
 .nf
  curl --ftp-create-dirs -T file ftp://example.com/remote/path/file
@@ -1421,10 +1535,12 @@ curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full
 path to the server for all these commands. This is the fastest behavior.
 .IP singlecwd
 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 \(aqnocwd' but without the full penalty of 'multicwd'.
+\(dqnormally" (like in the multicwd case). This is somewhat more standards
+compliant than 'nocwd' but without the full penalty of 'multicwd'.
 .RE
 
+If --ftp-method is provided several times, the last set value will be used.
+
 Examples:
 .nf
  curl --ftp-method multicwd ftp://example.com/dir1/dir2/file
@@ -1435,15 +1551,17 @@ Examples:
 See also \fI-l, --list-only\fP.
 .IP "\-\-ftp-pasv"
 (FTP) Use passive mode for the data connection. Passive is the internal default
-behavior, but using this option can be used to override a previous \fI\-P, \-\-ftp-port\fP
+behavior, but using this option can be used to override a previous \-\-ftp-port
 option.
 
-If this option is used several times, only the first one is used. Undoing an
-enforced passive really is not doable but you must then instead enforce the
-correct \fI\-P, \-\-ftp-port\fP again.
+Reversing an enforced passive really is not doable but you must then instead
+enforce the correct \-\-ftp-port again.
 
 Passive mode means that curl will try the EPSV command first and then PASV,
-unless \fI\-\-disable-epsv\fP is used.
+unless \-\-disable-epsv is used.
+
+Providing --ftp-pasv multiple times has no extra effect.
+Disable it again with --no-ftp-pasv.
 
 Example:
 .nf
@@ -1454,12 +1572,12 @@ See also \fI--disable-epsv\fP.
 .IP "\-P, \-\-ftp-port <address>"
 (FTP) Reverses the default initiator/listener roles when connecting with FTP. This
 option makes curl use active mode. curl then tells the server to connect back
-to the client\(aqs specified address and port, while passive mode asks the server
+to the client's specified address and port, while passive mode asks the server
 to setup an IP address and port for it to connect to. <address> should be one
 of:
 .RS
 .IP interface
-e.g. "eth0" to specify which interface\(aqs IP address you want to use (Unix only)
+e.g. "eth0" to specify which interface's IP address you want to use (Unix only)
 .IP "IP address"
 e.g. "192.168.10.1" to specify the exact IP address
 .IP "host name"
@@ -1469,16 +1587,17 @@ make curl pick the same IP address that is already used for the control
 connection
 .RE
 
-If this option is used several times, the last one will be used. 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++.
+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++.
 
-You can also append \&":[start]-[end]\&" to the right of the address, to tell
+You can also append ":[start]-[end]\&" to the right of the address, to tell
 curl what TCP port range to use. That means you specify a port range, from a
 lower to a higher number. A single number works as well, but do note that it
 increases the risk of failure since the port may not be available.
 
 
+If --ftp-port is provided several times, the last set value will be used.
+
 Examples:
 .nf
  curl -P - ftp:/example.com
@@ -1492,6 +1611,9 @@ See also \fI--ftp-pasv\fP and \fI--disable-eprt\fP.
 mainly drftpd, require this non-standard command for directory listings as
 well as up and downloads in PASV mode.
 
+Providing --ftp-pret multiple times has no extra effect.
+Disable it again with --no-ftp-pret.
+
 Example:
 .nf
  curl --ftp-pret ftp://example.com/
@@ -1500,7 +1622,7 @@ Example:
 See also \fI-P, --ftp-port\fP and \fI--ftp-pasv\fP.
 .IP "\-\-ftp-skip-pasv-ip"
 (FTP) Tell curl to not use the IP address the server suggests in its response
-to curl\(aqs PASV command when curl connects the data connection. Instead curl
+to curl's PASV command when curl connects the data connection. Instead curl
 will re-use the same IP address it already uses for the control
 connection.
 
@@ -1508,6 +1630,9 @@ Since curl 7.74.0 this option is enabled by default.
 
 This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
 
+Providing --ftp-skip-pasv-ip multiple times has no extra effect.
+Disable it again with --no-ftp-skip-pasv-ip.
+
 Example:
 .nf
  curl --ftp-skip-pasv-ip ftp://example.com/
@@ -1520,6 +1645,9 @@ instead wait for the server to do it, and will not reply to the shutdown from
 the server. The active mode initiates the shutdown and waits for a reply from
 the server.
 
+Providing --ftp-ssl-ccc-mode multiple times has no extra effect.
+Disable it again with --no-ftp-ssl-ccc-mode.
+
 Example:
 .nf
  curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/
@@ -1532,6 +1660,9 @@ authenticating. The rest of the control channel communication will be
 unencrypted. This allows NAT routers to follow the FTP transaction. The
 default mode is passive.
 
+Providing --ftp-ssl-ccc multiple times has no extra effect.
+Disable it again with --no-ftp-ssl-ccc.
+
 Example:
 .nf
  curl --ftp-ssl-ccc ftps://example.com/
@@ -1543,6 +1674,9 @@ See also \fI--ssl\fP and \fI--ftp-ssl-ccc-mode\fP.
 authentication, but non-encrypted data transfers for efficiency.  Fails the
 transfer if the server does not support SSL/TLS.
 
+Providing --ftp-ssl-control multiple times has no extra effect.
+Disable it again with --no-ftp-ssl-control.
+
 Example:
 .nf
  curl --ftp-ssl-control ftp://example.com
@@ -1550,17 +1684,16 @@ Example:
 
 See also \fI--ssl\fP.
 .IP "\-G, \-\-get"
-When used, this option will make all data specified with \fI\-d, \-\-data\fP, \fI\-\-data-binary\fP
-or \fI\-\-data-urlencode\fP to be used in an HTTP GET request instead of the POST
+When used, this option will make all data specified with \fI\-d, \-\-data\fP, \-\-data-binary
+or \-\-data-urlencode to be used in an HTTP GET request instead of the POST
 request that otherwise would be used. The data will be appended to the URL
-with a \(aq?' separator.
+with a '?' separator.
 
 If used in combination with \fI\-I, \-\-head\fP, the POST data will instead be appended to
 the URL with a HEAD request.
 
-If this option is used several times, only the first one is used. This is
-because undoing a GET does not make sense, but you should then instead enforce
-the alternative method you prefer.
+Providing --get multiple times has no extra effect.
+Disable it again with --no-get.
 
 Examples:
 .nf
@@ -1576,6 +1709,9 @@ you can specify URLs that contain the letters {}[] without having curl itself
 interpret them. Note that these letters are not normal legal URL contents but
 they should be encoded according to the URI standard.
 
+Providing --globoff multiple times has no extra effect.
+Disable it again with --no-globoff.
+
 Example:
 .nf
  curl -g "https://example.com/{[]}}}}"
@@ -1590,11 +1726,11 @@ time, then a connection attempt is made to the IPv4 address in parallel. The
 first connection to be established is the one that is used.
 
 The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
-"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
+\(dqIt is RECOMMENDED that connection attempts be paced 150-250 ms apart to
 balance human factors against network load." libcurl currently defaults to
 200 ms. Firefox and Chrome currently default to 300 ms.
 
-If this option is used several times, the last one will be used.
+If --happy-eyeballs-timeout-ms is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1605,11 +1741,14 @@ See also \fI-m, --max-time\fP and \fI--connect-timeout\fP. Added in 7.59.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
-indicate the client\(aqs true IP address and port.
+indicate the client's true IP address and port.
 
 This option is primarily useful when sending test requests to a service that
 expects this header.
 
+Providing --haproxy-protocol multiple times has no extra effect.
+Disable it again with --no-haproxy-protocol.
+
 Example:
 .nf
  curl --haproxy-protocol https://example.com
@@ -1621,6 +1760,9 @@ See also \fI-x, --proxy\fP. Added in 7.60.0.
 to get nothing but the header of a document. When used on an FTP or FILE file,
 curl displays the file size and last modification time only.
 
+Providing --head multiple times has no extra effect.
+Disable it again with --no-head.
+
 Example:
 .nf
  curl -I https://example.com
@@ -1628,16 +1770,22 @@ Example:
 
 See also \fI-G, --get\fP, \fI-v, --verbose\fP and \fI--trace-ascii\fP.
 .IP "\-H, \-\-header <header/@file>"
-(HTTP) Extra header to include in the request when sending HTTP to a server. You may
-specify any number of extra headers. Note that if you should add a custom
-header that has the same name as one of the internal ones curl would use, your
-externally set header will be used instead of the internal one. This allows
-you to make even trickier stuff than curl would normally do. You should not
-replace internally set headers without knowing perfectly well what you are
-doing. Remove an internal header by giving a replacement without content on
-the right side of the colon, as in: \-H \&"Host:". If you send the custom
-header with no-value then its header must be terminated with a semicolon, such
-as \-H \&"X-Custom-Header;" to send "X-Custom-Header:".
+(HTTP IMAP SMTP) Extra header to include in information sent. When used within an HTTP request,
+it is added to the regular request headers.
+
+For an IMAP or SMTP MIME uploaded mail built with \-\-form options, it is
+prepended to the resulting MIME document, effectively including it at the mail
+global level. It does not affect raw uploaded mails (Added in 7.56.0).
+
+You may specify any number of extra headers. Note that if you should add a
+custom header that has the same name as one of the internal ones curl would
+use, your externally set header will be used instead of the internal one.
+This allows you to make even trickier stuff than curl would normally do. You
+should not replace internally set headers without knowing perfectly well what
+you are doing. Remove an internal header by giving a replacement without
+content on the right side of the colon, as in: \-H "Host:". If you send the
+custom header with no-value then its header must be terminated with a
+semicolon, such as \-H "X-Custom-Header;" to send "X-Custom-Header:".
 
 curl will make sure that each header you add/replace is sent with the proper
 end-of-line marker, you should thus \fBnot\fP add that as a part of the header
@@ -1648,18 +1796,23 @@ This option can take an argument in @filename style, which then adds a header
 for each line in the input file. Using @- will make curl read the header file
 from stdin. Added in 7.55.0.
 
-You need \fI\-\-proxy-header\fP to send custom headers intended for a HTTP
+Please note that most anti-spam utilities check the presence and value of
+several MIME mail headers: these are "From:", "To:", "Date:" and "Subject:"
+among others and should be added with this option.
+
+You need \-\-proxy-header to send custom headers intended for an HTTP
 proxy. Added in 7.37.0.
 
-Passing on a "Transfer-Encoding: chunked" header when doing a HTTP request
+Passing on a "Transfer-Encoding: chunked" header when doing an HTTP request
 with a request body, will make curl send the data using chunked encoding.
 
-\fBWARNING\fP: headers set with this option will be set in all requests \- even
-after redirects are followed, like when told with \fI\-L, \-\-location\fP. This can lead to
-the header being sent to other hosts than the original host, so sensitive
-headers should be used with caution combined with following redirects.
+\fBWARNING\fP: headers set with this option will be set in all HTTP requests
+\- even after redirects are followed, like when told with \fI\-L, \-\-location\fP. This can
+lead to the header being sent to other hosts than the original host, so
+sensitive headers should be used with caution combined with following
+redirects.
 
-This option can be used multiple times to add/replace/remove multiple headers.
+--header can be used several times in a command line
 
 Examples:
 .nf
@@ -1677,6 +1830,9 @@ If the argument "all" was provided, curl will display all options available.
 If the argument "category" was provided, curl will display all categories and
 their meanings.
 
+Providing --help multiple times has no extra effect.
+Disable it again with --no-help.
+
 Example:
 .nf
  curl --help all
@@ -1685,9 +1841,11 @@ Example:
 See also \fI-v, --verbose\fP.
 .IP "\-\-hostpubmd5 <md5>"
 (SFTP SCP) Pass a string containing 32 hexadecimal digits. The string should
-be the 128 bit MD5 checksum of the remote host\(aqs public key, curl will refuse
+be the 128 bit MD5 checksum of the remote host's public key, curl will refuse
 the connection with the host unless the md5sums match.
 
+If --hostpubmd5 is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/
@@ -1696,9 +1854,11 @@ Example:
 See also \fI--hostpubsha256\fP.
 .IP "\-\-hostpubsha256 <sha256>"
 (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash of the remote
-host\(aqs public key. Curl will refuse the connection with the host
+host's public key. Curl will refuse the connection with the host
 unless the hashes match.
 
+If --hostpubsha256 is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/
@@ -1716,6 +1876,8 @@ just handle HSTS in memory.
 If this option is used several times, curl will load contents from all the
 files but the last one will be used for saving.
 
+--hsts can be used several times in a command line
+
 Example:
 .nf
  curl --hsts cache.txt https://example.com
@@ -1731,6 +1893,9 @@ simply transparently downgrade \- if allowed.
 
 Since curl 7.66.0, HTTP/0.9 is disabled by default.
 
+Providing --http0.9 multiple times has no extra effect.
+Disable it again with --no-http0.9.
+
 Example:
 .nf
  curl --http0.9 https://example.com
@@ -1741,33 +1906,40 @@ See also \fI--http1.1\fP, \fI--http2\fP and \fI--http3\fP. Added in 7.64.0.
 (HTTP) Tells curl to use HTTP version 1.0 instead of using its internally preferred
 HTTP version.
 
+Providing --http1.0 multiple times has no extra effect.
+
 Example:
 .nf
  curl --http1.0 https://example.com
 .fi
 
-See also \fI--http0.9\fP and \fI--http1.1\fP. This option overrides \fI--http1.1\fP and \fI--http2\fP.
+See also \fI--http0.9\fP and \fI--http1.1\fP. This option is mutually exclusive to \fI--http1.1\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP and \fI--http3\fP.
 .IP "\-\-http1.1"
 (HTTP) Tells curl to use HTTP version 1.1.
 
+Providing --http1.1 multiple times has no extra effect.
+
 Example:
 .nf
  curl --http1.1 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http0.9\fP. This option overrides \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.33.0.
+See also \fI-0, --http1.0\fP and \fI--http0.9\fP. This option is mutually exclusive to \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP and \fI--http3\fP. Added in 7.33.0.
 .IP "\-\-http2-prior-knowledge"
 (HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1
 Upgrade. It requires prior knowledge that the server supports HTTP/2 straight
 away. HTTPS requests will still do HTTP/2 the standard way with negotiated
 protocol version in the TLS handshake.
 
+Providing --http2-prior-knowledge multiple times has no extra effect.
+Disable it again with --no-http2-prior-knowledge.
+
 Example:
 .nf
  curl --http2-prior-knowledge https://example.com
 .fi
 
-See also \fI--http2\fP and \fI--http3\fP. \fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP. Added in 7.49.0.
+See also \fI--http2\fP and \fI--http3\fP. \fI--http2-prior-knowledge\fP requires that the underlying libcurl was built to support HTTP/2. This option is mutually exclusive to \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http3\fP. Added in 7.49.0.
 .IP "\-\-http2"
 (HTTP) Tells curl to use HTTP version 2.
 
@@ -1777,14 +1949,20 @@ handshake. curl does this by default.
 For HTTP, this means curl will attempt to upgrade the request to HTTP/2 using
 the Upgrade: request header.
 
+When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
+higher even though that is required by the specification. A user can add this
+version requirement with \fI\-\-tlsv1.2\fP.
+
+Providing --http2 multiple times has no extra effect.
+
 Example:
 .nf
  curl --http2 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP. Added in 7.33.0.
+See also \fI--http1.1\fP and \fI--http3\fP. \fI--http2\fP requires that the underlying libcurl was built to support HTTP/2. This option is mutually exclusive to \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2-prior-knowledge\fP and \fI--http3\fP. Added in 7.33.0.
 .IP "\-\-http3"
-(HTTP) \fBWARNING\fP: this option is experimental. Do not use in production.
+(HTTP) **WARNING**: this option is experimental. Do not use in production.
 
 Tells curl to use HTTP version 3 directly to the host and port number used in
 the URL. A normal HTTP/3 transaction will be done to a host and then get
@@ -1794,12 +1972,14 @@ you know that the target speaks HTTP/3 on the given host and port.
 This option will make curl fail if a QUIC connection cannot be established, it
 cannot fall back to a lower HTTP version on its own.
 
+Providing --http3 multiple times has no extra effect.
+
 Example:
 .nf
  curl --http3 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option overrides \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI--http3\fP requires that the underlying libcurl was built to support HTTP/3. This option is mutually exclusive to \fI--http1.1\fP and \fI-0, --http1.0\fP and \fI--http2\fP and \fI--http2-prior-knowledge\fP. Added in 7.66.0.
 .IP "\-\-ignore-content-length"
 (FTP HTTP) For HTTP, Ignore the Content-Length header. This is particularly useful for
 servers running Apache 1.x, which will report incorrect Content-Length for
@@ -1810,6 +1990,9 @@ downloading a file.
 
 This option does not work for HTTP if libcurl was built to use hyper.
 
+Providing --ignore-content-length multiple times has no extra effect.
+Disable it again with --no-ignore-content-length.
+
 Example:
 .nf
  curl --ignore-content-length https://example.com
@@ -1821,7 +2004,10 @@ Include the HTTP response headers in the output. The HTTP response headers can
 include things like server name, cookies, date of the document, HTTP version
 and more...
 
-To view the request headers, consider the \fI\-v, \-\-verbose\fP option.
+To view the request headers, consider the \-\-verbose option.
+
+Providing --include multiple times has no extra effect.
+Disable it again with --no-include.
 
 Example:
 .nf
@@ -1835,7 +2021,7 @@ the transfer takes place. This option makes curl skip the verification step
 and proceed without checking.
 
 When this option is not used for protocols using TLS, curl verifies the
-server\(aqs TLS certificate before it continues: that the certificate contains
+server's TLS certificate before it continues: that the certificate contains
 the right name which matches the host name used in the URL and that the
 certificate has been signed by a CA certificate present in the cert store.
 See this online resource for further details:
@@ -1844,11 +2030,14 @@ See this online resource for further details:
 .fi
 
 For SFTP and SCP, this option makes curl skip the \fIknown_hosts\fP verification.
-\fIknown_hosts\fP is a file normally stored in the user\(aqs home directory in the
-\&.ssh subdirectory, which contains host names and their public keys.
+\fIknown_hosts\fP is a file normally stored in the user's home directory in the
+\(dq.ssh" subdirectory, which contains host names and their public keys.
 
 \fBWARNING\fP: using this option makes the transfer insecure.
 
+Providing --insecure multiple times has no extra effect.
+Disable it again with --no-insecure.
+
 Example:
 .nf
  curl --insecure https://example.com
@@ -1863,12 +2052,12 @@ name, IP address or host name. An example could look like:
  curl \-\-interface eth0:1 https://www.example.com/
 .fi
 
-If this option is used several times, the last one will be used.
-
 On Linux it can be used to specify a VRF, but the binary needs to either
 have CAP_NET_RAW or to be run as root. More information about Linux VRF:
 https://www.kernel.org/doc/Documentation/networking/vrf.txt
 
+If --interface is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --interface eth0 https://example.com
@@ -1876,31 +2065,74 @@ Example:
 
 See also \fI--dns-interface\fP.
 .IP "\-4, \-\-ipv4"
-This option tells curl to resolve names to IPv4 addresses only, and not for
-example try IPv6.
+This option tells curl to use IPv4 addresses only, and not for example try
+IPv6.
+
+Providing --ipv4 multiple times has no extra effect.
+Disable it again with --no-ipv4.
 
 Example:
 .nf
  curl --ipv4 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-6, --ipv6\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. This option is mutually exclusive to \fI-6, --ipv6\fP.
 .IP "\-6, \-\-ipv6"
-This option tells curl to resolve names to IPv6 addresses only, and not for
-example try IPv4.
+This option tells curl to use IPv6 addresses only, and not for example try
+IPv4.
+
+Providing --ipv6 multiple times has no extra effect.
+Disable it again with --no-ipv6.
 
 Example:
 .nf
  curl --ipv6 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http2\fP. This option overrides \fI-4, --ipv4\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. This option is mutually exclusive to \fI-4, --ipv4\fP.
+.IP "\-\-json <data>"
+(HTTP) Sends the specified JSON data in a POST request to the HTTP server. \-\-json
+works as a shortcut for passing on these three options:
+
+.nf
+ \-\-data [arg]
+ \-\-header "Content-Type: application/json"
+ \-\-header "Accept: application/json"
+.fi
+
+There is \fI\fPno verification\fI\fP that the passed in data is actual JSON or that
+the syntax is correct.
+
+If you start the data with the letter @, the rest should be a file name to
+read the data from, or a single dash (-) if you want curl to read the data
+from stdin. Posting data from a file named 'foobar' would thus be done with
+\fI\-\-json\fP @foobar and to instead read the data from stdin, use \-\-json @-.
+
+If this option is used more than once on the same command line, the additional
+data pieces will be concatenated to the previous before sending.
+
+The headers this option sets can be overridden with \-\-header as usual.
+
+--json can be used several times in a command line
+
+Examples:
+.nf
+ curl --json '{ "drink": "coffe" }' https://example.com
+ curl --json '{ "drink":' --json ' "coffe" }' https://example.com
+ curl --json @prepared https://example.com
+ curl --json @- https://example.com < json.txt
+.fi
+
+See also \fI--data-binary\fP and \fI--data-raw\fP. This option is mutually exclusive to \fI-F, --form\fP and \fI-I, --head\fP and \fI-T, --upload-file\fP. Added in 7.82.0.
 .IP "\-j, \-\-junk-session-cookies"
 (HTTP) When curl is told to read cookies from a given file, this option will make it
 discard all "session cookies". This will basically have the same effect as if
 a new session is started. Typical browsers always discard session cookies when
 they are closed down.
 
+Providing --junk-session-cookies multiple times has no extra effect.
+Disable it again with --no-junk-session-cookies.
+
 Example:
 .nf
  curl --junk-session-cookies -b cookies.txt https://example.com
@@ -1911,11 +2143,15 @@ See also \fI-b, --cookie\fP and \fI-c, --cookie-jar\fP.
 This option sets the time a connection needs to remain idle before sending
 keepalive probes and the time between individual keepalive probes. It is
 currently effective on operating systems offering the TCP_KEEPIDLE and
-TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This
-option has no effect if \fI\-\-no-keepalive\fP is used.
+TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more).
+Keepalives are used by the TCP stack to detect broken networks on idle
+connections. The number of missed keepalive probes before declaring the
+connection down is OS dependent and is commonly 9 or 10. This option has no
+effect if \-\-no-keepalive is used.
+
+If unspecified, the option defaults to 60 seconds.
 
-If this option is used several times, the last one will be used. If
-unspecified, the option defaults to 60 seconds.
+If --keepalive-time is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1924,10 +2160,10 @@ Example:
 
 See also \fI--no-keepalive\fP and \fI-m, --max-time\fP.
 .IP "\-\-key-type <type>"
-(TLS) Private key file type. Specify which type your \fI\-\-key\fP provided private key
+(TLS) Private key file type. Specify which type your \-\-key provided private key
 is. DER, PEM, and ENG are supported. If not specified, PEM is assumed.
 
-If this option is used several times, the last one will be used.
+If --key-type is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1938,16 +2174,21 @@ See also \fI--key\fP.
 .IP "\-\-key <key>"
 (TLS SSH) Private key file name. Allows you to provide your private key in this separate
 file. For SSH, if not specified, curl tries the following candidates in order:
-\&\(aq~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
+\(aq~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
 
 If curl is built against OpenSSL library, and the engine pkcs11 is available,
 then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a
 PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a
-PKCS#11 URI. If a PKCS#11 URI is provided, then the \fI\-\-engine\fP option will be set
-as "pkcs11" if none was provided and the \fI\-\-key-type\fP option will be set as
-"ENG" if none was provided.
+PKCS#11 URI. If a PKCS#11 URI is provided, then the \-\-engine option will be set
+as "pkcs11" if none was provided and the \-\-key-type option will be set as
+\(dqENG" if none was provided.
 
-If this option is used several times, the last one will be used.
+If curl is built against Secure Transport or Schannel then this option is
+ignored for TLS protocols (HTTPS, etc). Those backends expect the private key
+to be already present in the keychain or PKCS#12 file containing the
+certificate.
+
+If --key is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1957,10 +2198,10 @@ Example:
 See also \fI--key-type\fP and \fI-E, --cert\fP.
 .IP "\-\-krb <level>"
 (FTP) Enable Kerberos authentication and use. The level must be entered and should
-be one of \(aqclear', 'safe', 'confidential', or 'private'. Should you use a
-level that is not one of these, \(aqprivate' will instead be used.
+be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a
+level that is not one of these, 'private' will instead be used.
 
-If this option is used several times, the last one will be used.
+If --krb is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1976,8 +2217,7 @@ of what your command-line operation does!
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
-If this option is used several times, the last given file name will be
-used.
+If --libcurl is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -1992,18 +2232,18 @@ your transfer not to use your entire bandwidth. To make it slower than it
 otherwise would be.
 
 The given speed is measured in bytes/second, unless a suffix is appended.
-Appending \(aqk' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
-megabytes, while \(aqg' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P)
+Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it
+megabytes, while 'g' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P)
 are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G.
 
 The rate limiting logic works on averaging the transfer speed to no more than
 the set threshold over a period of multiple seconds.
 
-If you also use the \fI\-Y, \-\-speed-limit\fP option, that option will take precedence and
+If you also use the \-\-speed-limit option, that option will take precedence and
 might cripple the rate-limiting slightly, to help keeping the speed-limit
 logic working.
 
-If this option is used several times, the last one will be used.
+If --limit-rate is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -2030,9 +2270,12 @@ to be performed instead of RETR. This is particularly useful if the user wants
 to see if a specific message-id exists on the server and what size it is.
 
 Note: When combined with \fI\-X, \-\-request\fP, this option can be used to send a UIDL
-command instead, so the user may use the email\(aqs unique identifier rather than
+command instead, so the user may use the email's unique identifier rather than
 its message-id to make the request.
 
+Providing --list-only multiple times has no extra effect.
+Disable it again with --no-list-only.
+
 Example:
 .nf
  curl --list-only ftp://example.com/dir/
@@ -2045,6 +2288,8 @@ for the connection(s).  Note that port numbers by nature are a scarce resource
 that will be busy at times so setting this range to something too narrow might
 cause unnecessary connection setup failures.
 
+If --local-port is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --local-port 1000-3000 https://example.com
@@ -2057,6 +2302,9 @@ the site may redirect to. This may or may not introduce a security breach if
 the site redirects you to a site to which you will send your authentication
 info (which is plaintext in the case of HTTP Basic authentication).
 
+Providing --location-trusted multiple times has no extra effect.
+Disable it again with --no-location-trusted.
+
 Example:
 .nf
  curl --location-trusted -u user:password https://example.com
@@ -2067,12 +2315,12 @@ See also \fI-u, --user\fP.
 (HTTP) If the server reports that the requested page has moved to a different
 location (indicated with a Location: header and a 3XX response code), this
 option will make curl redo the request on the new place. If used together with
-\fI\-i, \-\-include\fP or \fI\-I, \-\-head\fP, headers from all requested pages will be shown. When
+\-\-include or \fI\-I, \-\-head\fP, headers from all requested pages will be shown. When
 authentication is used, curl only sends its credentials to the initial
 host. If a redirect takes curl to a different host, it will not be able to
-intercept the user+password. See also \fI\-\-location-trusted\fP on how to change
+intercept the user+password. See also \-\-location-trusted on how to change
 this. You can limit the amount of redirects to follow by using the
-\fI\-\-max-redirs\fP option.
+\-\-max-redirs option.
 
 When curl follows a redirect and if the request is a POST, it will send the
 following request with a GET if the HTTP response was 301, 302, or 303. If the
@@ -2080,11 +2328,14 @@ response code was any other 3xx code, curl will re-send the following request
 using the same unmodified method.
 
 You can tell curl to not change POST requests to GET after a 30x response by
-using the dedicated options for that: \fI\-\-post301\fP, \fI\-\-post302\fP and \fI\-\-post303\fP.
+using the dedicated options for that: \fI\-\-post301\fP, \-\-post302 and \fI\-\-post303\fP.
 
-The method set with \fI\-X, \-\-request\fP overrides the method curl would otherwise select
+The method set with \-\-request overrides the method curl would otherwise select
 to use.
 
+Providing --location multiple times has no extra effect.
+Disable it again with --no-location.
+
 Example:
 .nf
  curl -L https://example.com
@@ -2092,14 +2343,14 @@ Example:
 
 See also \fI--resolve\fP and \fI--alt-svc\fP.
 .IP "\-\-login-options <options>"
-(IMAP POP3 SMTP) Specify the login options to use during server authentication.
+(IMAP LDAP POP3 SMTP) Specify the login options to use during server authentication.
 
 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
 
-If this option is used several times, the last one will be used.
+If --login-options is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2112,6 +2363,8 @@ See also \fI-u, --user\fP. Added in 7.34.0.
 address (identity) of a submitted message that is being relayed to another
 server.
 
+If --mail-auth is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --mail-auth user@example.come -T mail smtp://example.com/
@@ -2121,6 +2374,8 @@ See also \fI--mail-rcpt\fP and \fI--mail-from\fP.
 .IP "\-\-mail-from <address>"
 (SMTP) Specify a single address that the given mail should get sent from.
 
+If --mail-from is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --mail-from user@example.com -T mail smtp://example.com/
@@ -2132,7 +2387,7 @@ See also \fI--mail-rcpt\fP and \fI--mail-auth\fP.
 conversation if at least one of the recipients causes RCPT TO command to
 return an error.
 
-The default behavior can be changed by passing \fI\-\-mail-rcpt-allowfails\fP
+The default behavior can be changed by passing \-\-mail-rcpt-allowfails
 command-line option which will make curl ignore errors and proceed with the
 remaining valid recipients.
 
@@ -2140,6 +2395,9 @@ 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.
 
+Providing --mail-rcpt-allowfails multiple times has no extra effect.
+Disable it again with --no-mail-rcpt-allowfails.
+
 Example:
 .nf
  curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com
@@ -2158,6 +2416,8 @@ 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 in 7.34.0)
 
+--mail-rcpt can be used several times in a command line
+
 Example:
 .nf
  curl --mail-rcpt user@example.net smtp://example.com
@@ -2167,6 +2427,9 @@ See also \fI--mail-rcpt-allowfails\fP.
 .IP "\-M, \-\-manual"
 Manual. Display the huge help text.
 
+Providing --manual multiple times has no extra effect.
+Disable it again with --no-manual.
+
 Example:
 .nf
  curl --manual
@@ -2178,13 +2441,15 @@ See also \fI-v, --verbose\fP, \fI--libcurl\fP and \fI--trace\fP.
 requested is larger than this value, the transfer will not start and curl will
 return with exit code 63.
 
-A size modifier may be used. For example, Appending \(aqk' or 'K' will count the
-number as kilobytes, \(aqm' or 'M' makes it megabytes, while 'g' or 'G' makes it
+A size modifier may be used. For example, Appending 'k' or 'K' will count the
+number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it
 gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0)
 
 \fBNOTE\fP: The file size is not always known prior to download, and for such
 files this option has no effect even if the file transfer ends up being larger
 than this given limit.
+If --max-filesize is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --max-filesize 100K https://example.com
@@ -2192,11 +2457,11 @@ Example:
 
 See also \fI--limit-rate\fP.
 .IP "\-\-max-redirs <num>"
-(HTTP) Set maximum number of redirections to follow. When \fI\-L, \-\-location\fP is used, to
+(HTTP) Set maximum number of redirections to follow. When \-\-location is used, to
 prevent curl from following too many redirects, by default, the limit is
 set to 50 redirects. Set this option to \-1 to make it unlimited.
 
-If this option is used several times, the last one will be used.
+If --max-redirs is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2205,13 +2470,17 @@ Example:
 
 See also \fI-L, --location\fP.
 .IP "\-m, \-\-max-time <fractional seconds>"
-Maximum time in seconds that you allow the whole operation to take.  This is
+Maximum time in seconds that you allow each transfer to take.  This is
 useful for preventing your batch jobs from hanging for hours due to slow
 networks or links going down.  Since 7.32.0, this option accepts decimal
 values, but the actual timeout will decrease in accuracy as the specified
 timeout increases in decimal precision.
 
-If this option is used several times, the last one will be used.
+If you enable retrying the transfer (\fI\-\-retry\fP) then the maximum time counter is
+reset each time the transfer is retried. You can use \-\-retry-max-time to limit
+the retry time.
+
+If --max-time is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -2219,11 +2488,13 @@ Examples:
  curl --max-time 2.92 https://example.com
 .fi
 
-See also \fI--connect-timeout\fP.
+See also \fI--connect-timeout\fP and \fI--retry-max-time\fP.
 .IP "\-\-metalink"
 This option was previously used to specify a metalink resource. Metalink
 support has been disabled in curl since 7.78.0 for security reasons.
 
+If --metalink is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --metalink file https://example.com
@@ -2234,14 +2505,16 @@ See also \fI-Z, --parallel\fP.
 (HTTP) Enables Negotiate (SPNEGO) authentication.
 
 This option requires a library built with GSS-API or SSPI support. Use
-\fI\-V, \-\-version\fP to see if your curl supports GSS-API/SSPI or SPNEGO.
+\-\-version to see if your curl supports GSS-API/SSPI or SPNEGO.
 
-When using this option, you must also provide a fake \fI\-u, \-\-user\fP option to activate
-the authentication code properly. Sending a \(aq-u :' is enough as the user name
-and password from the \fI\-u, \-\-user\fP option are not actually used.
+When using this option, you must also provide a fake \-\-user option to activate
+the authentication code properly. Sending a '-u :' is enough as the user name
+and password from the \-\-user option are not actually used.
 
 If this option is used several times, only the first one is used.
 
+Providing --negotiate multiple times has no extra effect.
+
 Example:
 .nf
  curl --negotiate -u : https://example.com
@@ -2251,29 +2524,33 @@ See also \fI--basic\fP, \fI--ntlm\fP, \fI--anyauth\fP and \fI--proxy-negotiate\f
 .IP "\-\-netrc-file <filename>"
 This option is similar to \fI\-n, \-\-netrc\fP, except that you provide the path (absolute
 or relative) to the netrc file that curl should use. You can only specify one
-netrc file per invocation. If several \fI\-\-netrc-file\fP options are provided,
-the last one will be used.
+netrc file per invocation.
+
+It will abide by \-\-netrc-optional if specified.
 
-It will abide by \fI\-\-netrc-optional\fP if specified.
+If --netrc-file is provided several times, the last set value will be used.
 
 Example:
 .nf
  curl --netrc-file netrc https://example.com
 .fi
 
-See also \fI-n, --netrc\fP, \fI-u, --user\fP and \fI-K, --config\fP. This option overrides \fI-n, --netrc\fP.
+See also \fI-n, --netrc\fP, \fI-u, --user\fP and \fI-K, --config\fP. This option is mutually exclusive to \fI-n, --netrc\fP.
 .IP "\-\-netrc-optional"
 Similar to \fI\-n, \-\-netrc\fP, but this option makes the .netrc usage \fBoptional\fP
-and not mandatory as the \fI\-n, \-\-netrc\fP option does.
+and not mandatory as the \-\-netrc option does.
+
+Providing --netrc-optional multiple times has no extra effect.
+Disable it again with --no-netrc-optional.
 
 Example:
 .nf
  curl --netrc-optional https://example.com
 .fi
 
-See also \fI--netrc-file\fP. This option overrides \fI-n, --netrc\fP.
+See also \fI--netrc-file\fP. This option is mutually exclusive to \fI-n, --netrc\fP.
 .IP "\-n, \-\-netrc"
-Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user\(aqs home
+Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's home
 directory for login name and password. This is typically used for FTP on
 Unix. If used with HTTP, curl will enable user authentication. See
 \fInetrc(5)\fP and \fIftp(1)\fP for details on the file format. Curl will not
@@ -2282,13 +2559,17 @@ neither world- nor group-readable). The environment variable "HOME" is used
 to find the home directory.
 
 A quick and simple example of how to setup a \fI.netrc\fP to allow curl to FTP to
-the machine host.domain.com with user name \&\(aqmyself' and password \&'secret'
+the machine host.domain.com with user name 'myself' and password 'secret'
 could look similar to:
 
 .nf
  machine host.domain.com
  login myself
- password secret"
+ password secret
+.fi
+
+Providing --netrc multiple times has no extra effect.
+Disable it again with --no-netrc.
 
 Example:
 .nf
@@ -2302,17 +2583,17 @@ options. This allows you to send several URL requests, each with their own
 specific options, for example, such as different user names or custom requests
 for each.
 
-\fI\-:, \-\-next\fP will reset all local options and only global ones will have their
-values survive over to the operation following the \fI\-:, \-\-next\fP instruction. Global
-options include \fI\-v, \-\-verbose\fP, \fI\-\-trace\fP, \fI\-\-trace-ascii\fP and \fI\-\-fail-early\fP.
+\-\-next will reset all local options and only global ones will have their
+values survive over to the operation following the \-\-next instruction. Global
+options include \fI\-v, \-\-verbose\fP, \fI\-\-trace\fP, \-\-trace-ascii and \fI\-\-fail-early\fP.
 
 For example, you can do both a GET and a POST in a single command line:
 
-.nf
 .nf
  curl www1.example.com \-\-next \-d postthis www2.example.com
 .fi
-.fi
+
+--next can be used several times in a command line
 
 Examples:
 .nf
@@ -2326,6 +2607,9 @@ See also \fI-Z, --parallel\fP and \fI-K, --config\fP. Added in 7.36.0.
 with an SSL library that supports ALPN. ALPN is used by a libcurl that supports
 HTTP/2 to negotiate HTTP/2 support with the server during https sessions.
 
+Providing --no-alpn multiple times has no extra effect.
+Disable it again with --alpn.
+
 Example:
 .nf
  curl --no-alpn https://example.com
@@ -2338,8 +2622,8 @@ will use a standard buffered output stream that will have the effect that it
 will output the data in chunks, not necessarily exactly when the data arrives.
 Using this option will disable that buffering.
 
-Note that this is the negated option name documented. You can thus use
-\-\-buffer to enforce the buffering.
+Providing --no-buffer multiple times has no extra effect.
+Disable it again with --buffer.
 
 Example:
 .nf
@@ -2347,6 +2631,26 @@ Example:
 .fi
 
 See also \fI-#, --progress-bar\fP.
+.IP "\-\-no-clobber"
+When used in conjunction with the \fI\-o, \-\-output\fP, \fI\-J, \-\-remote-header-name\fP,
+\fI\-O, \-\-remote-name\fP, or \-\-remote-name-all options, curl avoids overwriting files
+that already exist. Instead, a dot and a number gets appended to the name
+of the file that would be created, up to filename.100 after which it will not
+create any file.
+
+Note that this is the negated option name documented.  You can thus use
+\-\-clobber to enforce the clobbering, even if \-\-remote-header-name or \-J is
+specified.
+
+Providing --no-clobber multiple times has no extra effect.
+Disable it again with --clobber.
+
+Example:
+.nf
+ curl --no-clobber --output local/dir/file https://example.com
+.fi
+
+See also \fI-o, --output\fP and \fI-O, --remote-name\fP. Added in 7.83.0.
 .IP "\-\-no-keepalive"
 Disables the use of keepalive messages on the TCP connection. curl otherwise
 enables them by default.
@@ -2354,6 +2658,9 @@ enables them by default.
 Note that this is the negated option name documented. You can thus use
 \-\-keepalive to enforce keepalive.
 
+Providing --no-keepalive multiple times has no extra effect.
+Disable it again with --keepalive.
+
 Example:
 .nf
  curl --no-keepalive https://example.com
@@ -2361,10 +2668,15 @@ Example:
 
 See also \fI--keepalive-time\fP.
 .IP "\-\-no-npn"
-(HTTPS) Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
+(HTTPS) In curl 7.86.0 and later, curl never uses NPN.
+
+Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
 with an SSL library that supports NPN. NPN is used by a libcurl that supports
 HTTP/2 to negotiate HTTP/2 support with the server during https sessions.
 
+Providing --no-npn multiple times has no extra effect.
+Disable it again with --npn.
+
 Example:
 .nf
  curl --no-npn https://example.com
@@ -2373,11 +2685,14 @@ Example:
 See also \fI--no-alpn\fP and \fI--http2\fP. \fI--no-npn\fP requires that the underlying libcurl was built to support TLS. Added in 7.36.0.
 .IP "\-\-no-progress-meter"
 Option to switch off the progress meter output without muting or otherwise
-affecting warning and informational messages like \fI\-s, \-\-silent\fP does.
+affecting warning and informational messages like \-\-silent does.
 
 Note that this is the negated option name documented. You can thus use
 \-\-progress-meter to enable the progress meter again.
 
+Providing --no-progress-meter multiple times has no extra effect.
+Disable it again with --progress-meter.
+
 Example:
 .nf
  curl --no-progress-meter -o store https://example.com
@@ -2385,7 +2700,7 @@ Example:
 
 See also \fI-v, --verbose\fP and \fI-s, --silent\fP. Added in 7.67.0.
 .IP "\-\-no-sessionid"
-(TLS) Disable curl\(aqs use of SSL session-ID caching. By default all transfers are
+(TLS) Disable curl's use of SSL session-ID caching. By default all transfers are
 done using the cache. Note that while nothing should ever get hurt by
 attempting to reuse SSL session-IDs, there seem to be broken SSL
 implementations in the wild that may require you to disable this in order for
@@ -2394,6 +2709,9 @@ you to succeed.
 Note that this is the negated option name documented. You can thus use
 \-\-sessionid to enforce session-ID caching.
 
+Providing --no-sessionid multiple times has no extra effect.
+Disable it again with --sessionid.
+
 Example:
 .nf
  curl --no-sessionid https://example.com
@@ -2409,8 +2727,10 @@ example, local.com would match local.com, local.com:80, and www.local.com, but
 not www.notlocal.com.
 
 Since 7.53.0, This option overrides the environment variables that disable the
-proxy (\(aqno_proxy' and 'NO_PROXY'). If there's an environment variable
-disabling a proxy, you can set the noproxy list to \&"" to override it.
+proxy ('no_proxy' and 'NO_PROXY'). If there's an environment variable
+disabling a proxy, you can set the noproxy list to "" to override it.
+
+If --noproxy is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2419,9 +2739,11 @@ Example:
 
 See also \fI-x, --proxy\fP.
 .IP "\-\-ntlm-wb"
-(HTTP) Enables NTLM much in the style \fI\-\-ntlm\fP does, but hand over the authentication
+(HTTP) Enables NTLM much in the style \-\-ntlm does, but hand over the authentication
 to the separate binary ntlmauth application that is executed when needed.
 
+Providing --ntlm-wb multiple times has no extra effect.
+
 Example:
 .nf
  curl --ntlm-wb -u user:password https://example.com
@@ -2441,20 +2763,22 @@ If you want to enable NTLM for your proxy authentication, then use
 
 If this option is used several times, only the first one is used.
 
+Providing --ntlm multiple times has no extra effect.
+
 Example:
 .nf
  curl --ntlm -u user:password https://example.com
 .fi
 
-See also \fI--proxy-ntlm\fP. \fI--ntlm\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--basic\fP and \fI--negotiate\fP and \fI--digest\fP and \fI--anyauth\fP.
+See also \fI--proxy-ntlm\fP. \fI--ntlm\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI--basic\fP and \fI--negotiate\fP and \fI--digest\fP and \fI--anyauth\fP.
 .IP "\-\-oauth2-bearer <token>"
-(IMAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
+(IMAP LDAP POP3 SMTP HTTP) Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token
 is used in conjunction with the user name which can be specified as part of
-the \fI\-\-url\fP or \fI\-u, \-\-user\fP options.
+the \-\-url or \-\-user options.
 
 The Bearer Token and user name are formatted according to RFC 6750.
 
-If this option is used several times, the last one will be used.
+If --oauth2-bearer is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2463,18 +2787,16 @@ Example:
 
 See also \fI--basic\fP, \fI--ntlm\fP and \fI--digest\fP. Added in 7.33.0.
 .IP "\-\-output-dir <dir>"
-
 This option specifies the directory in which files should be stored, when
-\fI\-O, \-\-remote-name\fP or \fI\-o, \-\-output\fP are used.
+\-\-remote-name or \-\-output are used.
 
 The given output directory is used for all URLs and output options on the
 command line, up until the first \fI\-:, \-\-next\fP.
 
 If the specified target directory does not exist, the operation will fail
-unless \fI\-\-create-dirs\fP is also used.
+unless \-\-create-dirs is also used.
 
-If this option is used multiple times, the last specified directory will be
-used.
+If --output-dir is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2484,7 +2806,7 @@ Example:
 See also \fI-O, --remote-name\fP and \fI-J, --remote-header-name\fP. Added in 7.73.0.
 .IP "\-o, \-\-output <file>"
 Write output to <file> instead of stdout. If you are using {} or [] to fetch
-multiple documents, you should quote the URL and you can use \(aq#' followed by a
+multiple documents, you should quote the URL and you can use '#' followed by a
 number in the <file> specifier. That variable will be replaced with the current
 string for the URL being fetched. Like in:
 
@@ -2514,8 +2836,8 @@ written as
   curl example.com example.net \-o aa \-o bb
 .fi
 
-See also the \fI\-\-create-dirs\fP option to create the local directories
-dynamically. Specifying the output as \(aq-' (a single dash) will force the
+See also the \-\-create-dirs option to create the local directories
+dynamically. Specifying the output as '-' (a single dash) will force the
 output to be done to stdout.
 
 To suppress response bodies, you can redirect output to /dev/null:
@@ -2528,6 +2850,9 @@ Or for Windows use nul:
 
 .nf
   curl example.com \-o nul
+.fi
+
+--output can be used several times in a command line
 
 Examples:
 .nf
@@ -2547,6 +2872,9 @@ connection.
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
+Providing --parallel-immediate multiple times has no extra effect.
+Disable it again with --no-parallel-immediate.
+
 Example:
 .nf
  curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2
@@ -2562,6 +2890,8 @@ This option is global and does not need to be specified for each use of
 
 The default is 50.
 
+If --parallel-max is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --parallel-max 100 -Z https://example.com ftp://example.com/
@@ -2575,6 +2905,9 @@ manner.
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
+Providing --parallel multiple times has no extra effect.
+Disable it again with --no-parallel.
+
 Example:
 .nf
  curl --parallel https://example.com -o file1 https://example.com -o file2
@@ -2584,7 +2917,7 @@ See also \fI-:, --next\fP and \fI-v, --verbose\fP. Added in 7.66.0.
 .IP "\-\-pass <phrase>"
 (SSH TLS) Passphrase for the private key.
 
-If this option is used several times, the last one will be used.
+If --pass is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2597,6 +2930,9 @@ Tell curl to not handle sequences of /../ or /./ in the given URL
 path. Normally curl will squash or merge them according to standards but with
 this option set you tell it not to do that.
 
+Providing --path-as-is multiple times has no extra effect.
+Disable it again with --no-path-as-is.
+
 Example:
 .nf
  curl --path-as-is https://example.com/../../etc/passwd
@@ -2630,7 +2966,7 @@ sha256 support:
 
 Other SSL backends not supported.
 
-If this option is used several times, the last one will be used.
+If --pinnedpubkey is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -2646,6 +2982,9 @@ in web browsers, so curl does the conversion by default to maintain
 consistency. However, a server may require a POST to remain a POST after such
 a redirection. This option is meaningful only when using \fI\-L, \-\-location\fP.
 
+Providing --post301 multiple times has no extra effect.
+Disable it again with --no-post301.
+
 Example:
 .nf
  curl --post301 --location -d "data" https://example.com
@@ -2659,6 +2998,9 @@ in web browsers, so curl does the conversion by default to maintain
 consistency. However, a server may require a POST to remain a POST after such
 a redirection. This option is meaningful only when using \fI\-L, \-\-location\fP.
 
+Providing --post302 multiple times has no extra effect.
+Disable it again with --no-post302.
+
 Example:
 .nf
  curl --post302 --location -d "data" https://example.com
@@ -2671,6 +3013,9 @@ requests when following 303 redirections. A server may require a POST to
 remain a POST after a 303 redirection. This option is meaningful only when
 using \fI\-L, \-\-location\fP.
 
+Providing --post303 multiple times has no extra effect.
+Disable it again with --no-post303.
+
 Example:
 .nf
  curl --post303 --location -d "data" https://example.com
@@ -2694,7 +3039,7 @@ User and password that might be provided in the proxy string are URL decoded
 by curl. This allows you to pass in special characters such as @ by using %40
 or pass in a colon with %3a.
 
-If this option is used several times, the last one will be used.
+If --preproxy is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2706,7 +3051,7 @@ See also \fI-x, --proxy\fP and \fI--socks5\fP. Added in 7.52.0.
 Make curl display transfer progress as a simple progress bar instead of the
 standard, more informational, meter.
 
-This progress bar draws a single line of \(aq#' characters across the screen and
+This progress bar draws a single line of '#' characters across the screen and
 shows a percentage if the transfer size is known. For transfers without a
 known size, there will be space ship (-=o=-) that moves back and forth but
 only while data is being transferred, with a set of flying hash sign symbols on
@@ -2715,6 +3060,9 @@ top.
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
+Providing --progress-bar multiple times has no extra effect.
+Disable it again with --no-progress-bar.
+
 Example:
 .nf
  curl -# -O https://example.com
@@ -2730,7 +3078,9 @@ An unknown or unsupported protocol causes error
 This option does not change the default proxy protocol (http).
 
 Without this option set, curl guesses protocol based on the host name, see
-\fI\-\-url\fP for details.
+\-\-url for details.
+
+If --proto-default is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2740,7 +3090,7 @@ Example:
 See also \fI--proto\fP and \fI--proto-redir\fP. Added in 7.45.0.
 .IP "\-\-proto-redir <protocols>"
 Tells curl to limit what protocols it may use on redirect. Protocols denied by
-\fI\-\-proto\fP are not overridden by this option. See \-\-proto for how protocols are
+\-\-proto are not overridden by this option. See \-\-proto for how protocols are
 represented.
 
 Example, allow only HTTP and HTTPS on redirect:
@@ -2753,6 +3103,8 @@ By default curl will only allow HTTP, HTTPS, FTP and FTPS on redirect (since
 7.65.2). Specifying \fIall\fP or \fI+all\fP enables all protocols on redirects, which
 is not good for security.
 
+If --proto-redir is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --proto-redir =http,https https://example.com
@@ -2762,7 +3114,7 @@ See also \fI--proto\fP.
 .IP "\-\-proto <protocols>"
 Tells curl to limit what protocols it may use for transfers. Protocols are
 evaluated left to right, are comma separated, and are each a protocol name or
-\&\(aqall', optionally prefixed by zero or more modifiers. Available modifiers are:
+\(aqall', optionally prefixed by zero or more modifiers. Available modifiers are:
 .RS
 .TP 3
 .B +
@@ -2791,13 +3143,15 @@ only enables http and https
 also only enables http and https
 .RE
 .IP
-Unknown protocols produce a warning. This allows scripts to safely rely on
-being able to disable potentially dangerous protocols, without relying upon
-support for that protocol being built into curl to avoid an error.
+Unknown and disabled protocols produce a warning. This allows scripts to
+safely rely on being able to disable potentially dangerous protocols, without
+relying upon support for that protocol being built into curl to avoid an error.
 
 This option can be used multiple times, in which case the effect is the same
 as concatenating the protocols into one instance of the option.
 
+If --proto is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --proto =http,https,sftp https://example.com
@@ -2808,6 +3162,8 @@ See also \fI--proto-redir\fP and \fI--proto-default\fP.
 Tells curl to pick a suitable authentication method when communicating with
 the given HTTP proxy. This might cause an extra request/response round-trip.
 
+Providing --proxy-anyauth multiple times has no extra effect.
+
 Example:
 .nf
  curl --proxy-anyauth --proxy-user user:passwd -x proxy https://example.com
@@ -2816,9 +3172,11 @@ Example:
 See also \fI-x, --proxy\fP, \fI--proxy-basic\fP and \fI--proxy-digest\fP.
 .IP "\-\-proxy-basic"
 Tells curl to use HTTP Basic authentication when communicating with the given
-proxy. Use \fI\-\-basic\fP for enabling HTTP Basic with a remote host. Basic is the
+proxy. Use \-\-basic for enabling HTTP Basic with a remote host. Basic is the
 default authentication method curl uses with proxies.
 
+Providing --proxy-basic multiple times has no extra effect.
+
 Example:
 .nf
  curl --proxy-basic --proxy-user user:passwd -x proxy https://example.com
@@ -2826,7 +3184,9 @@ Example:
 
 See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-digest\fP.
 .IP "\-\-proxy-cacert <file>"
-Same as \fI\-\-cacert\fP but used in HTTPS proxy context.
+Same as \-\-cacert but used in HTTPS proxy context.
+
+If --proxy-cacert is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2835,7 +3195,9 @@ Example:
 
 See also \fI--proxy-capath\fP, \fI--cacert\fP, \fI--capath\fP and \fI-x, --proxy\fP. Added in 7.52.0.
 .IP "\-\-proxy-capath <dir>"
-Same as \fI\-\-capath\fP but used in HTTPS proxy context.
+Same as \-\-capath but used in HTTPS proxy context.
+
+If --proxy-capath is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2844,7 +3206,9 @@ Example:
 
 See also \fI--proxy-cacert\fP, \fI-x, --proxy\fP and \fI--capath\fP. Added in 7.52.0.
 .IP "\-\-proxy-cert-type <type>"
-Same as \fI\-\-cert-type\fP but used in HTTPS proxy context.
+Same as \-\-cert-type but used in HTTPS proxy context.
+
+If --proxy-cert-type is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2853,7 +3217,9 @@ Example:
 
 See also \fI--proxy-cert\fP. Added in 7.52.0.
 .IP "\-\-proxy-cert <cert[:passwd]>"
-Same as \fI\-E, \-\-cert\fP but used in HTTPS proxy context.
+Same as \-\-cert but used in HTTPS proxy context.
+
+If --proxy-cert is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2862,7 +3228,9 @@ Example:
 
 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.
+Same as \-\-ciphers but used in HTTPS proxy context.
+
+If --proxy-ciphers is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2871,7 +3239,9 @@ Example:
 
 See also \fI--ciphers\fP, \fI--curves\fP and \fI-x, --proxy\fP. Added in 7.52.0.
 .IP "\-\-proxy-crlfile <file>"
-Same as \fI\-\-crlfile\fP but used in HTTPS proxy context.
+Same as \-\-crlfile but used in HTTPS proxy context.
+
+If --proxy-crlfile is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2881,7 +3251,9 @@ Example:
 See also \fI--crlfile\fP and \fI-x, --proxy\fP. Added in 7.52.0.
 .IP "\-\-proxy-digest"
 Tells curl to use HTTP Digest authentication when communicating with the given
-proxy. Use \fI\-\-digest\fP for enabling HTTP Digest with a remote host.
+proxy. Use \-\-digest for enabling HTTP Digest with a remote host.
+
+Providing --proxy-digest multiple times has no extra effect.
 
 Example:
 .nf
@@ -2891,7 +3263,7 @@ Example:
 See also \fI-x, --proxy\fP, \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
 .IP "\-\-proxy-header <header/@file>"
 (HTTP) Extra header to include in the request when sending HTTP to a proxy. You may
-specify any number of extra headers. This is the equivalent option to \fI\-H, \-\-header\fP
+specify any number of extra headers. This is the equivalent option to \-\-header
 but is for proxy communication only like in CONNECT requests when you want a
 separate header sent to the proxy to what is sent to the actual remote host.
 
@@ -2909,6 +3281,8 @@ read the header file from stdin.
 
 This option can be used multiple times to add/replace/remove multiple headers.
 
+--proxy-header can be used several times in a command line
+
 Examples:
 .nf
  curl --proxy-header "X-First-Name: Joe" -x http://proxy https://example.com
@@ -2918,7 +3292,10 @@ Examples:
 
 See also \fI-x, --proxy\fP. Added in 7.37.0.
 .IP "\-\-proxy-insecure"
-Same as \fI\-k, \-\-insecure\fP but used in HTTPS proxy context.
+Same as \-\-insecure but used in HTTPS proxy context.
+
+Providing --proxy-insecure multiple times has no extra effect.
+Disable it again with --no-proxy-insecure.
 
 Example:
 .nf
@@ -2927,7 +3304,9 @@ Example:
 
 See also \fI-x, --proxy\fP and \fI-k, --insecure\fP. Added in 7.52.0.
 .IP "\-\-proxy-key-type <type>"
-Same as \fI\-\-key-type\fP but used in HTTPS proxy context.
+Same as \-\-key-type but used in HTTPS proxy context.
+
+If --proxy-key-type is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2936,7 +3315,9 @@ Example:
 
 See also \fI--proxy-key\fP and \fI-x, --proxy\fP. Added in 7.52.0.
 .IP "\-\-proxy-key <key>"
-Same as \fI\-\-key\fP but used in HTTPS proxy context.
+Same as \-\-key but used in HTTPS proxy context.
+
+If --proxy-key is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2946,9 +3327,11 @@ Example:
 See also \fI--proxy-key-type\fP and \fI-x, --proxy\fP. Added in 7.52.0.
 .IP "\-\-proxy-negotiate"
 Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating
-with the given proxy. Use \fI\-\-negotiate\fP for enabling HTTP Negotiate (SPNEGO)
+with the given proxy. Use \-\-negotiate for enabling HTTP Negotiate (SPNEGO)
 with a remote host.
 
+Providing --proxy-negotiate multiple times has no extra effect.
+
 Example:
 .nf
  curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com
@@ -2957,7 +3340,9 @@ Example:
 See also \fI--proxy-anyauth\fP and \fI--proxy-basic\fP.
 .IP "\-\-proxy-ntlm"
 Tells curl to use HTTP NTLM authentication when communicating with the given
-proxy. Use \fI\-\-ntlm\fP for enabling NTLM with a remote host.
+proxy. Use \-\-ntlm for enabling NTLM with a remote host.
+
+Providing --proxy-ntlm multiple times has no extra effect.
 
 Example:
 .nf
@@ -2966,7 +3351,9 @@ Example:
 
 See also \fI--proxy-negotiate\fP and \fI--proxy-anyauth\fP.
 .IP "\-\-proxy-pass <phrase>"
-Same as \fI\-\-pass\fP but used in HTTPS proxy context.
+Same as \-\-pass but used in HTTPS proxy context.
+
+If --proxy-pass is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -2985,7 +3372,7 @@ indicating its identity. A public key is extracted from this certificate and
 if it does not exactly match the public key provided to this option, curl will
 abort the connection before sending or receiving any data.
 
-If this option is used several times, the last one will be used.
+If --proxy-pinnedpubkey is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -2997,6 +3384,8 @@ See also \fI--pinnedpubkey\fP and \fI-x, --proxy\fP. Added in 7.59.0.
 .IP "\-\-proxy-service-name <name>"
 This option allows you to change the service name for proxy negotiation.
 
+If --proxy-service-name is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --proxy-service-name "shrubbery" -x proxy https://example.com
@@ -3004,7 +3393,10 @@ Example:
 
 See also \fI--service-name\fP and \fI-x, --proxy\fP. Added in 7.43.0.
 .IP "\-\-proxy-ssl-allow-beast"
-Same as \fI\-\-ssl-allow-beast\fP but used in HTTPS proxy context.
+Same as \-\-ssl-allow-beast but used in HTTPS proxy context.
+
+Providing --proxy-ssl-allow-beast multiple times has no extra effect.
+Disable it again with --no-proxy-ssl-allow-beast.
 
 Example:
 .nf
@@ -3013,7 +3405,10 @@ Example:
 
 See also \fI--ssl-allow-beast\fP and \fI-x, --proxy\fP. Added in 7.52.0.
 .IP "\-\-proxy-ssl-auto-client-cert"
-Same as \fI\-\-ssl-auto-client-cert\fP but used in HTTPS proxy context.
+Same as \-\-ssl-auto-client-cert but used in HTTPS proxy context.
+
+Providing --proxy-ssl-auto-client-cert multiple times has no extra effect.
+Disable it again with --no-proxy-ssl-auto-client-cert.
 
 Example:
 .nf
@@ -3032,9 +3427,9 @@ ciphers. Read up on TLS 1.3 cipher suite details on this URL:
 
 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\-\-proxy-ciphers\fP option.
+cipher suites by using the \-\-proxy-ciphers option.
 
-If this option is used several times, the last one will be used.
+If --proxy-tls13-ciphers is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3043,7 +3438,9 @@ Example:
 
 See also \fI--tls13-ciphers\fP and \fI--curves\fP. Added in 7.61.0.
 .IP "\-\-proxy-tlsauthtype <type>"
-Same as \fI\-\-tlsauthtype\fP but used in HTTPS proxy context.
+Same as \-\-tlsauthtype but used in HTTPS proxy context.
+
+If --proxy-tlsauthtype is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3052,7 +3449,9 @@ Example:
 
 See also \fI-x, --proxy\fP and \fI--proxy-tlsuser\fP. Added in 7.52.0.
 .IP "\-\-proxy-tlspassword <string>"
-Same as \fI\-\-tlspassword\fP but used in HTTPS proxy context.
+Same as \-\-tlspassword but used in HTTPS proxy context.
+
+If --proxy-tlspassword is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3061,7 +3460,9 @@ Example:
 
 See also \fI-x, --proxy\fP and \fI--proxy-tlsuser\fP. Added in 7.52.0.
 .IP "\-\-proxy-tlsuser <name>"
-Same as \fI\-\-tlsuser\fP but used in HTTPS proxy context.
+Same as \-\-tlsuser but used in HTTPS proxy context.
+
+If --proxy-tlsuser is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3070,7 +3471,9 @@ Example:
 
 See also \fI-x, --proxy\fP and \fI--proxy-tlspassword\fP. Added in 7.52.0.
 .IP "\-\-proxy-tlsv1"
-Same as \fI\-1, \-\-tlsv1\fP but used in HTTPS proxy context.
+Same as \-\-tlsv1 but used in HTTPS proxy context.
+
+Providing --proxy-tlsv1 multiple times has no extra effect.
 
 Example:
 .nf
@@ -3091,7 +3494,7 @@ getting seen by other users on the same system as they will still be visible
 for a moment before cleared. Such sensitive data should be retrieved from a
 file instead or similar and never used in clear text in a command line.
 
-If this option is used several times, the last one will be used.
+If --proxy-user is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3107,6 +3510,9 @@ specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://,
 socks5:// or socks5h:// to request a specific SOCKS version to be used.
 
 
+Unix domain sockets are supported for socks proxy. Set localhost for the host
+part. e.g. socks5h://localhost/path/to/socket.sock
+
 HTTPS proxy support via https:// protocol prefix was added in 7.52.0 for
 OpenSSL, GnuTLS and NSS.
 
@@ -3117,13 +3523,13 @@ If the port number is not specified in the proxy string, it is assumed to be
 1080.
 
 This option overrides existing environment variables that set the proxy to
-use. If there\(aqs an environment variable setting a proxy, you can set proxy to
-\&"" to override it.
+use. If there's an environment variable setting a proxy, you can set proxy to
+\(dq" to override it.
 
 All operations that are performed over an HTTP proxy will transparently be
 converted to HTTP. It means that certain protocol specific operations might
 not be available. This is not the case if you can tunnel through the proxy, as
-one with the \fI\-p, \-\-proxytunnel\fP option.
+one with the \-\-proxytunnel option.
 
 User and password that might be provided in the proxy string are URL decoded
 by curl. This allows you to pass in special characters such as @ by using %40
@@ -3133,7 +3539,7 @@ The proxy host can be specified the same way as the proxy environment
 variables, including the protocol prefix (http://) and the embedded user +
 password.
 
-If this option is used several times, the last one will be used.
+If --proxy is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3149,6 +3555,8 @@ The only difference between this and the HTTP proxy option \fI\-x, \-\-proxy\fP,
 attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol
 instead of the default HTTP 1.1.
 
+Providing --proxy1.0 multiple times has no extra effect.
+
 Example:
 .nf
  curl --proxy1.0 -x http://proxy https://example.com
@@ -3164,6 +3572,9 @@ wants to tunnel through to.
 To suppress proxy CONNECT response headers when curl is set to output headers
 use \fI\-\-suppress-connect-headers\fP.
 
+Providing --proxytunnel multiple times has no extra effect.
+Disable it again with --no-proxytunnel.
+
 Example:
 .nf
  curl --proxytunnel -x http://proxy https://example.com
@@ -3174,13 +3585,13 @@ See also \fI-x, --proxy\fP.
 (SFTP SCP) Public key file name. Allows you to provide your public key in this separate
 file.
 
-If this option is used several times, the last one will be used.
-
 (As of 7.39.0, curl attempts to automatically extract the public key from the
 private key file, so passing this option is generally not required. Note that
 this public key extraction requires libcurl to be linked against a copy of
 libssh2 1.2.8 or higher that is itself linked against OpenSSL.)
 
+If --pubkey is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --pubkey file.pub sftp://example.com/
@@ -3191,10 +3602,13 @@ See also \fI--pass\fP.
 (FTP SFTP) Send an arbitrary command to the remote FTP or SFTP server. Quote commands are
 sent BEFORE the transfer takes place (just after the initial PWD command in an
 FTP transfer, to be exact). To make commands take place after a successful
-transfer, prefix them with a dash \(aq-'. To make commands be sent after curl
-has changed the working directory, just before the transfer command(s), prefix
-the command with a \(aq+' (this is only supported for FTP). You may specify any
-number of commands.
+transfer, prefix them with a dash '-'.
+
+(FTP only) To make commands be sent after curl has changed the working
+directory, just before the file transfer command(s), prefix the command with a
+\(aq+'. This is not performed when a directory listing is performed.
+
+You may specify any number of commands.
 
 By default curl will stop at first failure. To make curl continue even if the
 command fails, prefix the command with an asterisk (*). Otherwise, if the
@@ -3249,6 +3663,8 @@ operand, provided it is empty.
 See ln.
 .RE
 
+--quote can be used several times in a command line
+
 Example:
 .nf
  curl --quote "DELE file" ftp://example.com/foo
@@ -3256,9 +3672,13 @@ Example:
 
 See also \fI-X, --request\fP.
 .IP "\-\-random-file <file>"
+Deprecated option. This option is ignored by curl since 7.84.0. Prior to that
+it only had an effect on curl if built to use old versions of OpenSSL.
+
 Specify the path name to file containing what will be considered as random
-data. The data may be used to seed the random engine for SSL connections. See
-also the \fI\-\-egd-file\fP option.
+data. The data may be used to seed the random engine for SSL connections.
+
+If --random-file is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3294,20 +3714,20 @@ specifies two separate 100-byte ranges(*) (HTTP)
 response, which will be returned as-is by curl! Parsing or otherwise
 transforming this response is the responsibility of the caller.
 
-Only digit characters (0-9) are valid in the \(aqstart' and 'stop' fields of the
-\&\(aqstart-stop' range syntax. If a non-digit character is given in the range,
-the server\(aqs response will be unspecified, depending on the server's
+Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the
+\(aqstart-stop' range syntax. If a non-digit character is given in the range,
+the server's response will be unspecified, depending on the server's
 configuration.
 
 You should also be aware that many HTTP/1.1 servers do not have this feature
 enabled, so that when you attempt to get a range, you will instead get the
 whole document.
 
-FTP and SFTP range downloads only support the simple \(aqstart-stop' syntax
+FTP and SFTP range downloads only support the simple 'start-stop' syntax
 (optionally with one of the numbers omitted). FTP use depends on the extended
 FTP command SIZE.
 
-If this option is used several times, the last one will be used.
+If --range is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3315,10 +3735,46 @@ Example:
 .fi
 
 See also \fI-C, --continue-at\fP and \fI-a, --append\fP.
+.IP "\-\-rate <max request rate>"
+Specify the maximum transfer frequency you allow curl to use \- in number of
+transfer starts per time unit (sometimes called request rate). Without this
+option, curl will start the next transfer as fast as possible.
+
+If given several URLs and a transfer completes faster than the allowed rate,
+curl will wait until the next transfer is started to maintain the requested
+rate. This option has no effect when \-\-parallel is used.
+
+The request rate is provided as "N/U" where N is an integer number and U is a
+time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd'
+/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided,
+is number of transfers per hour.
+
+If curl is told to allow 10 requests per minute, it will not start the next
+request until 6 seconds have elapsed since the previous transfer was started.
+
+This function uses millisecond resolution. If the allowed frequency is set
+more than 1000 per second, it will instead run unrestricted.
+
+When retrying transfers, enabled with \fI\-\-retry\fP, the separate retry delay logic
+is used and not this setting.
+
+If --rate is provided several times, the last set value will be used.
+
+Examples:
+.nf
+ curl --rate 2/s https://example.com
+ curl --rate 3/h https://example.com
+ curl --rate 14/m https://example.com
+.fi
+
+See also \fI--limit-rate\fP and \fI--retry-delay\fP. Added in 7.84.0.
 .IP "\-\-raw"
 (HTTP) When used, it disables all internal HTTP decoding of content or transfer
 encodings and instead makes them passed on unaltered, raw.
 
+Providing --raw multiple times has no extra effect.
+Disable it again with --no-raw.
+
 Example:
 .nf
  curl --raw https://example.com
@@ -3327,12 +3783,12 @@ Example:
 See also \fI--tr-encoding\fP.
 .IP "\-e, \-\-referer <URL>"
 (HTTP) Sends the "Referrer Page" information to the HTTP server. This can also be set
-with the \fI\-H, \-\-header\fP flag of course. When used with \fI\-L, \-\-location\fP you can append
-";auto" to the \fI\-e, \-\-referer\fP URL to make curl automatically set the previous URL
-when it follows a Location: header. The \&";auto" string can be used alone,
+with the \-\-header flag of course. When used with \-\-location you can append
+\(dq;auto" to the \-\-referer URL to make curl automatically set the previous URL
+when it follows a Location: header. The ";auto" string can be used alone,
 even if you do not set an initial \fI\-e, \-\-referer\fP.
 
-If this option is used several times, the last one will be used.
+If --referer is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -3343,21 +3799,29 @@ Examples:
 
 See also \fI-A, --user-agent\fP and \fI-H, --header\fP.
 .IP "\-J, \-\-remote-header-name"
-(HTTP) This option tells the \fI\-O, \-\-remote-name\fP option to use the server-specified
-Content-Disposition filename instead of extracting a filename from the URL.
+(HTTP) This option tells the \-\-remote-name option to use the server-specified
+Content-Disposition filename instead of extracting a filename from the URL. If
+the server-provided file name contains a path, that will be stripped off
+before the file name is used.
+
+The file is saved in the current directory, or in the directory specified with
+\fI\-\-output-dir\fP.
 
 If the server specifies a file name and a file with that name already exists
-in the current working directory it will not be overwritten and an error will
+in the destination directory, it will not be overwritten and an error will
 occur. If the server does not specify a file name then this option has no
 effect.
 
-There\(aqs no attempt to decode %-sequences (yet) in the provided file name, so
+There's no attempt to decode %-sequences (yet) in the provided file name, so
 this option may provide you with rather unexpected file names.
 
 \fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
 rogue server could send you the name of a DLL or other file that could be
 loaded automatically by Windows or some third party software.
 
+Providing --remote-header-name multiple times has no extra effect.
+Disable it again with --no-remote-header-name.
+
 Example:
 .nf
  curl -OJ https://example.com/file
@@ -3366,10 +3830,13 @@ Example:
 See also \fI-O, --remote-name\fP.
 .IP "\-\-remote-name-all"
 This option changes the default action for all given URLs to be dealt with as
-if \fI\-O, \-\-remote-name\fP were used for each one. So if you want to disable that for a
-specific URL after \fI\-\-remote-name-all\fP has been used, you must use "-o \-" or
+if \-\-remote-name were used for each one. So if you want to disable that for a
+specific URL after \-\-remote-name-all has been used, you must use "-o \-" or
 \-\-no-remote-name.
 
+Providing --remote-name-all multiple times has no extra effect.
+Disable it again with --no-remote-name-all.
+
 Example:
 .nf
  curl --remote-name-all ftp://example.com/file1 ftp://example.com/file2
@@ -3382,11 +3849,11 @@ part of the remote file is used, the path is cut off.)
 
 The file will be saved in the current working directory. If you want the file
 saved in a different directory, make sure you change the current working
-directory before invoking curl with this option.
+directory before invoking curl with this option or use \fI\-\-output-dir\fP.
 
 The remote file name to use for saving is extracted from the given URL,
 nothing else, and if it already exists it will be overwritten. If you want the
-server to be able to choose the file name refer to \fI\-J, \-\-remote-header-name\fP which
+server to be able to choose the file name refer to \-\-remote-header-name which
 can be used in addition to this option. If the server chooses a file name and
 that name already exists it will not be overwritten.
 
@@ -3395,29 +3862,52 @@ encoded parts of the name, they will end up as-is as file name.
 
 You may use this option as many times as the number of URLs you have.
 
+--remote-name can be used several times in a command line
+
 Example:
 .nf
  curl -O https://example.com/filename
 .fi
 
-See also \fI--remote-name-all\fP.
+See also \fI--remote-name-all\fP, \fI--output-dir\fP and \fI-J, --remote-header-name\fP.
 .IP "\-R, \-\-remote-time"
 When used, this will make curl attempt to figure out the timestamp of the
 remote file, and if that is available make the local file get that same
 timestamp.
 
+Providing --remote-time multiple times has no extra effect.
+Disable it again with --no-remote-time.
+
 Example:
 .nf
  curl --remote-time -o foo https://example.com
 .fi
 
 See also \fI-O, --remote-name\fP and \fI-z, --time-cond\fP.
+.IP "\-\-remove-on-error"
+When curl returns an error when told to save output in a local file, this
+option removes that saved file before exiting. This prevents curl from
+leaving a partial file in the case of an error during transfer.
+
+If the output is not a file, this option has no effect.
+
+Providing --remove-on-error multiple times has no extra effect.
+Disable it again with --no-remove-on-error.
+
+Example:
+.nf
+ curl --remove-on-error -o output https://example.com
+.fi
+
+See also \fI-f, --fail\fP. Added in 7.83.0.
 .IP "\-\-request-target <path>"
 (HTTP) Tells curl to use an alternative "target" (path) instead of using the path as
 provided in the URL. Particularly useful when wanting to issue HTTP requests
 without leading slash or other data that does not follow the regular URL
 pattern, like "OPTIONS *".
 
+If --request-target is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --request-target "*" -X OPTIONS https://example.com
@@ -3437,10 +3927,10 @@ requests are rather invoked by using dedicated command line options.
 
 This option only changes the actual word used in the HTTP request, it does not
 alter the way curl behaves. So for example if you want to make a proper HEAD
-request, using \-X HEAD will not suffice. You need to use the \fI\-I, \-\-head\fP option.
+request, using \-X HEAD will not suffice. You need to use the \-\-head option.
 
-The method string you set with \fI\-X, \-\-request\fP will be used for all requests, which
-if you for example use \fI\-L, \-\-location\fP may cause unintended side-effects when curl
+The method string you set with \-\-request will be used for all requests, which
+if you for example use \-\-location may cause unintended side-effects when curl
 does not change request method according to the HTTP 30x response codes \- and
 similar.
 
@@ -3458,7 +3948,7 @@ Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0)
 (SMTP)
 Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0)
 
-If this option is used several times, the last one will be used.
+If --request is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -3476,14 +3966,14 @@ the number used for the specific protocol the host will be used for. It means
 you need several entries if you want to provide address for the same host but
 different ports.
 
-By specifying \(aq*' as host you can tell curl to resolve any host and specific
-port pair to the specified address. Wildcard is resolved last so any \fI\-\-resolve\fP
+By specifying '*' as host you can tell curl to resolve any host and specific
+port pair to the specified address. Wildcard is resolved last so any \-\-resolve
 with a specific host and port will be used first.
 
-The provided address set by this option will be used even if \fI\-4, \-\-ipv4\fP or \fI\-6, \-\-ipv6\fP
+The provided address set by this option will be used even if \-\-ipv4 or \-\-ipv6
 is set to make curl use another IP version.
 
-By prefixing the host with a \(aq+' you can make the entry time out after curl's
+By prefixing the host with a '+' you can make the entry time out after curl's
 default timeout (1 minute). Note that this will only make sense for long
 running parallel transfers with a lot of files. In such cases, if this option
 is used curl will try to resolve the host as it normally would once the
@@ -3495,10 +3985,12 @@ Support for providing multiple IP addresses per entry was added in 7.59.0.
 
 Support for resolving with wildcard was added in 7.64.0.
 
-Support for the \(aq+' prefix was was added in 7.75.0.
+Support for the '+' prefix was was added in 7.75.0.
 
 This option can be used many times to add many host names to resolve.
 
+--resolve can be used several times in a command line
+
 Example:
 .nf
  curl --resolve example.com:443:127.0.0.1 https://example.com
@@ -3510,7 +4002,7 @@ Retry on any error. This option is used together with \fI\-\-retry\fP.
 
 This option is the "sledgehammer" of retrying. Do not use this option by
 default (eg in curlrc), there may be unintended consequences such as sending or
-receiving duplicate data. Do not use with redirected input or output. You\(aqd be
+receiving duplicate data. Do not use with redirected input or output. You'd be
 much better off handling your unique problems in shell script. Please read the
 example below.
 
@@ -3526,11 +4018,14 @@ duplicate data.
 By default curl will not error on an HTTP response code that indicates an HTTP
 error, if the transfer was successful. For example, if a server replies 404
 Not Found and the reply is fully received then that is not an error. When
-\fI\-\-retry\fP is used then curl will retry on some HTTP response codes that indicate
+\-\-retry is used then curl will retry on some HTTP response codes that indicate
 transient HTTP errors, but that does not include most 4xx response codes such
 as 404. If you want to retry on all response codes that indicate HTTP errors
 (4xx and 5xx) then combine with \fI\-f, \-\-fail\fP.
 
+Providing --retry-all-errors multiple times has no extra effect.
+Disable it again with --no-retry-all-errors.
+
 Example:
 .nf
  curl --retry 5 --retry-all-errors https://example.com
@@ -3541,6 +4036,9 @@ See also \fI--retry\fP. Added in 7.71.0.
 In addition to the other conditions, consider ECONNREFUSED as a transient
 error too for \fI\-\-retry\fP. This option is used together with \-\-retry.
 
+Providing --retry-connrefused multiple times has no extra effect.
+Disable it again with --no-retry-connrefused.
+
 Example:
 .nf
  curl --retry-connrefused --retry https://example.com
@@ -3550,10 +4048,10 @@ See also \fI--retry\fP and \fI--retry-all-errors\fP. Added in 7.52.0.
 .IP "\-\-retry-delay <seconds>"
 Make curl sleep this amount of time before each retry when a transfer has
 failed with a transient error (it changes the default backoff time algorithm
-between retries). This option is only interesting if \fI\-\-retry\fP is also
+between retries). This option is only interesting if \-\-retry is also
 used. Setting this delay to zero will make curl use the default backoff time.
 
-If this option is used several times, the last one will be used.
+If --retry-delay is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3566,10 +4064,10 @@ The retry timer is reset before the first transfer attempt. Retries will be
 done as usual (see \fI\-\-retry\fP) as long as the timer has not reached this given
 limit. Notice that if the timer has not reached the limit, the request will be
 made and while performing, it may take longer than this given time period. To
-limit a single request\(aqs maximum time, use \fI\-m, \-\-max-time\fP. Set this option to
+limit a single request's maximum time, use \fI\-m, \-\-max-time\fP. Set this option to
 zero to not timeout retries.
 
-If this option is used several times, the last one will be used.
+If --retry-max-time is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3587,13 +4085,13 @@ response code.
 When curl is about to retry a transfer, it will first wait one second and then
 for all forthcoming retries it will double the waiting time until it reaches
 10 minutes which then will be the delay between the rest of the retries. By
-using \fI\-\-retry-delay\fP you disable this exponential backoff algorithm. See also
-\fI\-\-retry-max-time\fP to limit the total time allowed for retries.
+using \-\-retry-delay you disable this exponential backoff algorithm. See also
+\-\-retry-max-time to limit the total time allowed for retries.
 
 Since curl 7.66.0, curl will comply with the Retry-After: response header if
 one was present to know when to issue the next retry.
 
-If this option is used several times, the last one will be used.
+If --retry is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3602,14 +4100,16 @@ Example:
 
 See also \fI--retry-max-time\fP.
 .IP "\-\-sasl-authzid <identity>"
-Use this authorisation identity (authzid), during SASL PLAIN authentication,
+Use this authorization identity (authzid), during SASL PLAIN authentication,
 in addition to the authentication identity (authcid) as specified by \fI\-u, \-\-user\fP.
 
 If the option is not specified, the server will derive the authzid from the
 authcid, but if specified, and depending on the server implementation, it may
-be used to access another user\(aqs inbox, that the user has been granted access
+be used to access another user's inbox, that the user has been granted access
 to, or a shared mailbox for example.
 
+If --sasl-authzid is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --sasl-authzid zid imap://example.com/
@@ -3619,6 +4119,9 @@ See also \fI--login-options\fP. Added in 7.66.0.
 .IP "\-\-sasl-ir"
 Enable initial response in SASL authentication.
 
+Providing --sasl-ir multiple times has no extra effect.
+Disable it again with --no-sasl-ir.
+
 Example:
 .nf
  curl --sasl-ir imap://example.com/
@@ -3628,7 +4131,9 @@ See also \fI--sasl-authzid\fP. Added in 7.31.0.
 .IP "\-\-service-name <name>"
 This option allows you to change the service name for SPNEGO.
 
-Examples: \fI\-\-negotiate\fP \fI\-\-service-name\fP sockd would use sockd/server-name.
+Examples: \fI\-\-negotiate\fP \-\-service-name sockd would use sockd/server-name.
+
+If --service-name is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3642,6 +4147,9 @@ When used with \fI\-s, \-\-silent\fP, it makes curl show an error message if it
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
+Providing --show-error multiple times has no extra effect.
+Disable it again with --no-show-error.
+
 Example:
 .nf
  curl --show-error --silent https://example.com
@@ -3653,9 +4161,12 @@ Silent or quiet mode. Do not show progress meter or error messages. Makes Curl
 mute. It will still output the data you ask for, potentially even to the
 terminal/stdout unless you redirect it.
 
-Use \fI\-S, \-\-show-error\fP in addition to this option to disable progress meter but
+Use \-\-show-error in addition to this option to disable progress meter but
 still show error messages.
 
+Providing --silent multiple times has no extra effect.
+Disable it again with --no-silent.
+
 Example:
 .nf
  curl -s https://example.com
@@ -3667,17 +4178,20 @@ Use the specified SOCKS4 proxy. If the port number is not specified, it is
 assumed at port 1080. Using this socket type make curl resolve the host name
 and passing the address on to the proxy.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4://localhost/path/to/socket.sock
+
 This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
 exclusive.
 
-This option is superfluous since you can specify a socks4 proxy with \fI\-x, \-\-proxy\fP
+This option is superfluous since you can specify a socks4 proxy with \-\-proxy
 using a socks4:// protocol prefix.
 
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
 
-If this option is used several times, the last one will be used.
+If --socks4 is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3689,17 +4203,20 @@ See also \fI--socks4a\fP, \fI--socks5\fP and \fI--socks5-hostname\fP.
 Use the specified SOCKS4a proxy. If the port number is not specified, it is
 assumed at port 1080. This asks the proxy to resolve the host name.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks4a://localhost/path/to/socket.sock
+
 This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
 exclusive.
 
-This option is superfluous since you can specify a socks4a proxy with \fI\-x, \-\-proxy\fP
+This option is superfluous since you can specify a socks4a proxy with \-\-proxy
 using a socks4a:// protocol prefix.
 
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
 
-If this option is used several times, the last one will be used.
+If --socks4a is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3710,7 +4227,9 @@ See also \fI--socks4\fP, \fI--socks5\fP and \fI--socks5-hostname\fP.
 .IP "\-\-socks5-basic"
 Tells curl to use username/password authentication when connecting to a SOCKS5
 proxy.  The username/password authentication is enabled by default.  Use
-\fI\-\-socks5-gssapi\fP to force GSS-API authentication to SOCKS5 proxies.
+\-\-socks5-gssapi to force GSS-API authentication to SOCKS5 proxies.
+
+Providing --socks5-basic multiple times has no extra effect.
 
 Example:
 .nf
@@ -3721,9 +4240,12 @@ See also \fI--socks5\fP. Added in 7.55.0.
 .IP "\-\-socks5-gssapi-nec"
 As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961
 says in section 4.3/4.4 it should be protected, but the NEC reference
-implementation does not. The option \fI\-\-socks5-gssapi-nec\fP allows the
+implementation does not. The option \-\-socks5-gssapi-nec allows the
 unprotected exchange of the protection mode negotiation.
 
+Providing --socks5-gssapi-nec multiple times has no extra effect.
+Disable it again with --no-socks5-gssapi-nec.
+
 Example:
 .nf
  curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com
@@ -3734,11 +4256,13 @@ See also \fI--socks5\fP.
 The default service name for a socks server is rcmd/server-fqdn. This option
 allows you to change it.
 
-Examples: \fI\-\-socks5\fP proxy-name \fI\-\-socks5-gssapi-service\fP sockd would use
-sockd/proxy-name \fI\-\-socks5\fP proxy-name \fI\-\-socks5-gssapi-service\fP sockd/real-name
+Examples: \-\-socks5 proxy-name \-\-socks5-gssapi-service sockd would use
+sockd/proxy-name \-\-socks5 proxy-name \-\-socks5-gssapi-service sockd/real-name
 would use sockd/real-name for cases where the proxy-name does not match the
 principal name.
 
+If --socks5-gssapi-service is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com
@@ -3748,9 +4272,12 @@ See also \fI--socks5\fP.
 .IP "\-\-socks5-gssapi"
 Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy.
 The GSS-API authentication is enabled by default (if curl is compiled with
-GSS-API support).  Use \fI\-\-socks5-basic\fP to force username/password authentication
+GSS-API support).  Use \-\-socks5-basic to force username/password authentication
 to SOCKS5 proxies.
 
+Providing --socks5-gssapi multiple times has no extra effect.
+Disable it again with --no-socks5-gssapi.
+
 Example:
 .nf
  curl --socks5-gssapi --socks5 hostname:4096 https://example.com
@@ -3761,17 +4288,20 @@ See also \fI--socks5\fP. Added in 7.55.0.
 Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If
 the port number is not specified, it is assumed at port 1080.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5h://localhost/path/to/socket.sock
+
 This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
 exclusive.
 
 This option is superfluous since you can specify a socks5 hostname proxy with
-\fI\-x, \-\-proxy\fP using a socks5h:// protocol prefix.
+\-\-proxy using a socks5h:// protocol prefix.
 
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
 
-If this option is used several times, the last one will be used.
+If --socks5-hostname is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3783,20 +4313,23 @@ See also \fI--socks5\fP and \fI--socks4a\fP.
 Use the specified SOCKS5 proxy \- but resolve the host name locally. If the
 port number is not specified, it is assumed at port 1080.
 
+To specify proxy on a unix domain socket, use localhost for host, e.g.
+socks5://localhost/path/to/socket.sock
+
 This option overrides any previous use of \fI\-x, \-\-proxy\fP, as they are mutually
 exclusive.
 
-This option is superfluous since you can specify a socks5 proxy with \fI\-x, \-\-proxy\fP
+This option is superfluous since you can specify a socks5 proxy with \-\-proxy
 using a socks5:// protocol prefix.
 
-Since 7.52.0, \fI\-\-preproxy\fP can be used to specify a SOCKS proxy at the same time
-\fI\-x, \-\-proxy\fP is used with an HTTP/HTTPS proxy. In such a case curl first connects to
+Since 7.52.0, \-\-preproxy can be used to specify a SOCKS proxy at the same time
+\-\-proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to
 the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy.
 
-If this option is used several times, the last one will be used.
-
 This option (as well as \fI\-\-socks4\fP) does not work with IPV6, FTPS or LDAP.
 
+If --socks5 is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --socks5 proxy.example:7000 https://example.com
@@ -3804,11 +4337,11 @@ Example:
 
 See also \fI--socks5-hostname\fP and \fI--socks4a\fP.
 .IP "\-Y, \-\-speed-limit <speed>"
-If a download is slower than this given speed (in bytes per second) for
-speed-time seconds it gets aborted. speed-time is set with \fI\-y, \-\-speed-time\fP and is
+If a transfer is slower than this given speed (in bytes per second) for
+speed-time seconds it gets aborted. speed-time is set with \-\-speed-time and is
 30 if not set.
 
-If this option is used several times, the last one will be used.
+If --speed-limit is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3817,14 +4350,14 @@ Example:
 
 See also \fI-y, --speed-time\fP, \fI--limit-rate\fP and \fI-m, --max-time\fP.
 .IP "\-y, \-\-speed-time <seconds>"
-If a download is slower than speed-limit bytes per second during a speed-time
-period, the download gets aborted. If speed-time is used, the default
+If a transfer runs slower than speed-limit bytes per second during a speed-time
+period, the transfer is aborted. If speed-time is used, the default
 speed-limit will be 1 unless set with \fI\-Y, \-\-speed-limit\fP.
 
-This option controls transfers and thus will not affect slow connects etc. If
-this is a concern for you, try the \fI\-\-connect-timeout\fP option.
+This option controls transfers (in both directions) but will not affect slow
+connects etc. If this is a concern for you, try the \-\-connect-timeout option.
 
-If this option is used several times, the last one will be used.
+If --speed-time is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3841,6 +4374,9 @@ SSL implementations.
 \fBWARNING\fP: this option loosens the SSL security, and by using this flag you
 ask for exactly that.
 
+Providing --ssl-allow-beast multiple times has no extra effect.
+Disable it again with --no-ssl-allow-beast.
+
 Example:
 .nf
  curl --ssl-allow-beast https://example.com
@@ -3855,6 +4391,9 @@ default behavior in libcurl with Schannel. Since the server can request any
 certificate that supports client authentication in the OS certificate store it
 could be a privacy violation and unexpected.
 
+Providing --ssl-auto-client-cert multiple times has no extra effect.
+Disable it again with --no-ssl-auto-client-cert.
+
 Example:
 .nf
  curl --ssl-auto-client-cert https://example.com
@@ -3866,6 +4405,9 @@ See also \fI--proxy-ssl-auto-client-cert\fP. Added in 7.77.0.
 WARNING: this option loosens the SSL security, and by using this flag you ask
 for exactly that.
 
+Providing --ssl-no-revoke multiple times has no extra effect.
+Disable it again with --no-ssl-no-revoke.
+
 Example:
 .nf
  curl --ssl-no-revoke https://example.com
@@ -3877,11 +4419,14 @@ See also \fI--crlfile\fP. Added in 7.44.0.
 does not support SSL/TLS.
 
 This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and rejected by the generic ldap backend if explicit
+by the OpenLDAP backend and rejected by the generic ldap backend if explicit
 TLS is required.
 
 This option was formerly known as \-\-ftp-ssl-reqd.
 
+Providing --ssl-reqd multiple times has no extra effect.
+Disable it again with --no-ssl-reqd.
+
 Example:
 .nf
  curl --ssl-reqd ftp://example.com
@@ -3893,6 +4438,9 @@ See also \fI--ssl\fP and \fI-k, --insecure\fP.
 they failed due to missing/offline distribution points for the revocation check
 lists.
 
+Providing --ssl-revoke-best-effort multiple times has no extra effect.
+Disable it again with --no-ssl-revoke-best-effort.
+
 Example:
 .nf
  curl --ssl-revoke-best-effort https://example.com
@@ -3900,12 +4448,15 @@ Example:
 
 See also \fI--crlfile\fP and \fI-k, --insecure\fP. Added in 7.70.0.
 .IP "\-\-ssl"
-(FTP IMAP POP3 SMTP LDAP) Try to use SSL/TLS for the connection. Reverts to a non-secure connection if
-the server does not support SSL/TLS. See also \fI\-\-ftp-ssl-control\fP and \fI\-\-ssl-reqd\fP
+(FTP IMAP POP3 SMTP LDAP) Warning: this is considered an insecure option. Consider using \-\-ssl-reqd
+instead to be sure curl upgrades to a secure connection.
+
+Try to use SSL/TLS for the connection. Reverts to a non-secure connection if
+the server does not support SSL/TLS. See also \-\-ftp-ssl-control and \-\-ssl-reqd
 for different levels of encryption required.
 
 This option is handled in LDAP since version 7.81.0. It is fully supported
-by the openldap backend and ignored by the generic ldap backend.
+by the OpenLDAP backend and ignored by the generic ldap backend.
 
 Please note that a server may close the connection if the negotiation does
 not succeed.
@@ -3913,42 +4464,49 @@ not succeed.
 This option was formerly known as \-\-ftp-ssl. That option
 name can still be used but will be removed in a future version.
 
+Providing --ssl multiple times has no extra effect.
+Disable it again with --no-ssl.
+
 Example:
 .nf
  curl --ssl pop3://example.com/
 .fi
 
-See also \fI-k, --insecure\fP and \fI--ciphers\fP.
+See also \fI--ssl-reqd\fP, \fI-k, --insecure\fP and \fI--ciphers\fP.
 .IP "\-2, \-\-sslv2"
 (SSL) This option previously asked curl to use SSLv2, but starting in curl 7.77.0
 this instruction is ignored. SSLv2 is widely considered insecure (see RFC
 6176).
 
+Providing --sslv2 multiple times has no extra effect.
+
 Example:
 .nf
  curl --sslv2 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http2\fP. \fI-2, --sslv2\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-3, --sslv3\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI-2, --sslv2\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI-3, --sslv3\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
 .IP "\-3, \-\-sslv3"
 (SSL) This option previously asked curl to use SSLv3, but starting in curl 7.77.0
 this instruction is ignored. SSLv3 is widely considered insecure (see RFC
 7568).
 
+Providing --sslv3 multiple times has no extra effect.
+
 Example:
 .nf
  curl --sslv3 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http2\fP. \fI-3, --sslv3\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI-2, --sslv2\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI-3, --sslv3\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI-2, --sslv2\fP and \fI-1, --tlsv1\fP and \fI--tlsv1.1\fP and \fI--tlsv1.2\fP.
 .IP "\-\-stderr <file>"
 Redirect all writes to stderr to the specified file instead. If the file name
-is a plain \(aq-', it is instead written to stdout.
+is a plain '-', it is instead written to stdout.
 
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
-If this option is used several times, the last one will be used.
+If --stderr is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -3963,6 +4521,9 @@ terminal. Use \-\-no-styled-output to switch them off.
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
+Providing --styled-output multiple times has no extra effect.
+Disable it again with --no-styled-output.
+
 Example:
 .nf
  curl --styled-output -I https://example.com
@@ -3970,10 +4531,13 @@ Example:
 
 See also \fI-I, --head\fP and \fI-v, --verbose\fP. Added in 7.61.0.
 .IP "\-\-suppress-connect-headers"
-When \fI\-p, \-\-proxytunnel\fP is used and a CONNECT request is made do not output proxy
-CONNECT response headers. This option is meant to be used with \fI\-D, \-\-dump-header\fP or
-\fI\-i, \-\-include\fP which are used to show protocol headers in the output. It has no
-effect on debug options such as \fI\-v, \-\-verbose\fP or \fI\-\-trace\fP, or any statistics.
+When \-\-proxytunnel is used and a CONNECT request is made do not output proxy
+CONNECT response headers. This option is meant to be used with \-\-dump-header or
+\-\-include which are used to show protocol headers in the output. It has no
+effect on debug options such as \-\-verbose or \fI\-\-trace\fP, or any statistics.
+
+Providing --suppress-connect-headers multiple times has no extra effect.
+Disable it again with --no-suppress-connect-headers.
 
 Example:
 .nf
@@ -3984,6 +4548,9 @@ See also \fI-D, --dump-header\fP, \fI-i, --include\fP and \fI-p, --proxytunnel\f
 .IP "\-\-tcp-fastopen"
 Enable use of TCP Fast Open (RFC7413).
 
+Providing --tcp-fastopen multiple times has no extra effect.
+Disable it again with --no-tcp-fastopen.
+
 Example:
 .nf
  curl --tcp-fastopen https://example.com
@@ -3997,6 +4564,9 @@ details about this option.
 Since 7.50.2, curl sets this option by default and you need to explicitly
 switch it off if you do not want it on.
 
+Providing --tcp-nodelay multiple times has no extra effect.
+Disable it again with --no-tcp-nodelay.
+
 Example:
 .nf
  curl --tcp-nodelay https://example.com
@@ -4012,6 +4582,8 @@ XDISPLOC=<X display> Sets the X display location.
 
 NEW_ENV=<var,val> Sets an environment variable.
 
+--telnet-option can be used several times in a command line
+
 Example:
 .nf
  curl -t TTYPE=vt100 telnet://example.com/
@@ -4023,7 +4595,7 @@ See also \fI-K, --config\fP.
 try to use when transferring data to or from a TFTP server. By default 512
 bytes will be used.
 
-If this option is used several times, the last one will be used.
+If --tftp-blksize is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -4035,9 +4607,12 @@ See also \fI--tftp-no-options\fP.
 (TFTP) Tells curl not to send TFTP options requests.
 
 This option improves interop with some legacy servers that do not acknowledge
-or properly implement TFTP options. When this option is used \fI\-\-tftp-blksize\fP is
+or properly implement TFTP options. When this option is used \-\-tftp-blksize is
 ignored.
 
+Providing --tftp-no-options multiple times has no extra effect.
+Disable it again with --no-tftp-no-options.
+
 Example:
 .nf
  curl --tftp-no-options tftp://192.168.0.1/
@@ -4055,7 +4630,7 @@ Start the date expression with a dash (-) to make it request for a document
 that is older than the given date/time, default is a document that is newer
 than the specified date/time.
 
-If this option is used several times, the last one will be used.
+If --time-cond is provided several times, the last set value will be used.
 
 Examples:
 .nf
@@ -4085,6 +4660,8 @@ Use up to TLSv1.2.
 Use up to TLSv1.3.
 .RE
 
+If --tls-max is provided several times, the last set value will be used.
+
 Examples:
 .nf
  curl --tls-max 1.2 https://example.com
@@ -4103,9 +4680,9 @@ cipher suite details on this URL:
 
 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.
+cipher suites by using the \-\-ciphers option.
 
-If this option is used several times, the last one will be used.
+If --tls13-ciphers is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -4115,11 +4692,13 @@ Example:
 See also \fI--ciphers\fP and \fI--curves\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
-\fI\-\-tlsauthtype\fP is not, then this option defaults to "SRP". This option works
+for TLS-SRP (RFC 5054). If \-\-tlsuser and \-\-tlspassword are specified but
+\-\-tlsauthtype is not, then this option defaults to "SRP". This option works
 only if the underlying libcurl is built with TLS-SRP support, which requires
 OpenSSL or GnuTLS with TLS-SRP support.
 
+If --tlsauthtype is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --tlsauthtype SRP https://example.com
@@ -4128,10 +4707,12 @@ Example:
 See also \fI--tlsuser\fP.
 .IP "\-\-tlspassword <string>"
 Set password for use with the TLS authentication method specified with
-\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlsuser\fP also be set.
+\fI\-\-tlsauthtype\fP. Requires that \-\-tlsuser also be set.
 
 This option does not work with TLS 1.3.
 
+If --tlspassword is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --tlspassword pwd --tlsuser user https://example.com
@@ -4140,10 +4721,12 @@ Example:
 See also \fI--tlsuser\fP.
 .IP "\-\-tlsuser <name>"
 Set username for use with the TLS authentication method specified with
-\fI\-\-tlsauthtype\fP. Requires that \fI\-\-tlspassword\fP also is set.
+\fI\-\-tlsauthtype\fP. Requires that \-\-tlspassword also is set.
 
 This option does not work with TLS 1.3.
 
+If --tlsuser is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --tlspassword pwd --tlsuser user https://example.com
@@ -4154,9 +4737,11 @@ See also \fI--tlspassword\fP.
 (TLS) Forces curl to use TLS version 1.0 or later when connecting to a remote TLS server.
 
 In old versions of curl this option was documented to allow _only_ TLS 1.0.
-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
+That behavior was inconsistent depending on the TLS library. Use \-\-tls-max if
 you want to set a maximum TLS version.
 
+Providing --tlsv1.0 multiple times has no extra effect.
+
 Example:
 .nf
  curl --tlsv1.0 https://example.com
@@ -4167,28 +4752,32 @@ See also \fI--tlsv1.3\fP. Added in 7.34.0.
 (TLS) Forces curl to use TLS version 1.1 or later when connecting to a remote TLS server.
 
 In old versions of curl this option was documented to allow _only_ TLS 1.1.
-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
+That behavior was inconsistent depending on the TLS library. Use \-\-tls-max if
 you want to set a maximum TLS version.
 
+Providing --tlsv1.1 multiple times has no extra effect.
+
 Example:
 .nf
  curl --tlsv1.1 https://example.com
 .fi
 
-See also \fI--tlsv1.3\fP. Added in 7.34.0.
+See also \fI--tlsv1.3\fP and \fI--tls-max\fP. Added in 7.34.0.
 .IP "\-\-tlsv1.2"
 (TLS) Forces curl to use TLS version 1.2 or later when connecting to a remote TLS server.
 
 In old versions of curl this option was documented to allow _only_ TLS 1.2.
-That behavior was inconsistent depending on the TLS library. Use \fI\-\-tls-max\fP if
+That behavior was inconsistent depending on the TLS library. Use \-\-tls-max if
 you want to set a maximum TLS version.
 
+Providing --tlsv1.2 multiple times has no extra effect.
+
 Example:
 .nf
  curl --tlsv1.2 https://example.com
 .fi
 
-See also \fI--tlsv1.3\fP. Added in 7.34.0.
+See also \fI--tlsv1.3\fP and \fI--tls-max\fP. Added in 7.34.0.
 .IP "\-\-tlsv1.3"
 (TLS) Forces curl to use TLS version 1.3 or later when connecting to a remote TLS
 server.
@@ -4198,26 +4787,33 @@ includes QUIC-using (HTTP/3) transfers.
 
 Note that TLS 1.3 is not supported by all TLS backends.
 
+Providing --tlsv1.3 multiple times has no extra effect.
+
 Example:
 .nf
  curl --tlsv1.3 https://example.com
 .fi
 
-See also \fI--tlsv1.2\fP. Added in 7.52.0.
+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
 server. That means TLS version 1.0 or higher
 
+Providing --tlsv1 multiple times has no extra effect.
+
 Example:
 .nf
  curl --tlsv1 https://example.com
 .fi
 
-See also \fI--http1.1\fP and \fI--http2\fP. \fI-1, --tlsv1\fP requires that the underlying libcurl was built to support TLS. This option overrides \fI--tlsv1.1\fP and \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
+See also \fI--http1.1\fP and \fI--http2\fP. \fI-1, --tlsv1\fP requires that the underlying libcurl was built to support TLS. This option is mutually exclusive to \fI--tlsv1.1\fP and \fI--tlsv1.2\fP and \fI--tlsv1.3\fP.
 .IP "\-\-tr-encoding"
 (HTTP) Request a compressed Transfer-Encoding response using one of the algorithms
 curl supports, and uncompress the data while receiving it.
 
+Providing --tr-encoding multiple times has no extra effect.
+Disable it again with --no-tr-encoding.
+
 Example:
 .nf
  curl --tr-encoding https://example.com
@@ -4236,20 +4832,23 @@ for untrained humans.
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
-If this option is used several times, the last one will be used.
+If --trace-ascii is provided several times, the last set value will be used.
 
 Example:
 .nf
  curl --trace-ascii log.txt https://example.com
 .fi
 
-See also \fI-v, --verbose\fP and \fI--trace\fP. This option overrides \fI--trace\fP and \fI-v, --verbose\fP.
+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-time"
 Prepends a time stamp to each trace or verbose line that curl displays.
 
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
+Providing --trace-time multiple times has no extra effect.
+Disable it again with --no-trace-time.
+
 Example:
 .nf
  curl --trace-time --trace-ascii output https://example.com
@@ -4265,17 +4864,19 @@ stderr.
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
-If this option is used several times, the last one will be used.
+If --trace is provided several times, the last set value will be used.
 
 Example:
 .nf
  curl --trace log.txt https://example.com
 .fi
 
-See also \fI--trace-ascii\fP and \fI--trace-time\fP. This option overrides \fI-v, --verbose\fP and \fI--trace-ascii\fP.
+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.
 .IP "\-\-unix-socket <path>"
 (HTTP) Connect through this Unix domain socket, instead of using the network.
 
+If --unix-socket is provided several times, the last set value will be used.
+
 Example:
 .nf
  curl --unix-socket socket-path https://example.com
@@ -4292,12 +4893,12 @@ this is used on an HTTP(S) server, the PUT command will be used.
 
 Use the file name "-" (a single dash) to use stdin instead of a given file.
 Alternately, the file name "." (a single period) may be specified instead of
-"-" to use stdin in non-blocking mode to allow reading server output while
+\(dq-" to use stdin in non-blocking mode to allow reading server output while
 stdin is being uploaded.
 
-You can specify one \fI\-T, \-\-upload-file\fP for each URL on the command line. Each
+You can specify one \-\-upload-file for each URL on the command line. Each
 \fI\-T, \-\-upload-file\fP + URL pair specifies what to upload and to where. curl also
-supports "globbing" of the \fI\-T, \-\-upload-file\fP argument, meaning that you can upload
+supports "globbing" of the \-\-upload-file argument, meaning that you can upload
 multiple files to a single URL by using the same URL globbing style supported
 in the URL.
 
@@ -4306,6 +4907,8 @@ formatted. It has to feature the necessary set of headers and mail body
 formatted correctly by the user as curl will not transcode nor encode it
 further in any way.
 
+--upload-file can be used several times in a command line
+
 Examples:
 .nf
  curl -T file https://example.com
@@ -4322,14 +4925,16 @@ If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
 then curl will make a guess based on the host. If the outermost sub-domain
 name matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be
 used, otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by
-setting a default protocol, see \fI\-\-proto-default\fP for details.
+setting a default protocol, see \-\-proto-default for details.
 
-This option may be used any number of times. To control where this URL is
-written, use the \fI\-o, \-\-output\fP or the \fI\-O, \-\-remote-name\fP options.
+To control where this URL is written, use the \-\-output or the \-\-remote-name
+options.
 
 \fBWARNING\fP: On Windows, particular file:// accesses can be converted to
 network accesses by the operating system. Beware!
 
+--url can be used several times in a command line
+
 Example:
 .nf
  curl --url https://example.com
@@ -4341,6 +4946,9 @@ See also \fI-:, --next\fP and \fI-K, --config\fP.
 ends with ";type=A". This option causes data sent to stdout to be in text mode
 for win32 systems.
 
+Providing --use-ascii multiple times has no extra effect.
+Disable it again with --no-use-ascii.
+
 Example:
 .nf
  curl -B ftp://example.com/README
@@ -4350,13 +4958,13 @@ See also \fI--crlf\fP and \fI--data-ascii\fP.
 .IP "\-A, \-\-user-agent <name>"
 (HTTP) Specify the User-Agent string to send to the HTTP server. To encode blanks in
 the string, surround the string with single quote marks. This header can also
-be set with the \fI\-H, \-\-header\fP or the \fI\-\-proxy-header\fP options.
+be set with the \-\-header or the \-\-proxy-header options.
 
 If you give an empty argument to \fI\-A, \-\-user-agent\fP (""), it will remove the header
 completely from the request. If you prefer a blank header, you can set it to a
 single space (" ").
 
-If this option is used several times, the last one will be used.
+If --user-agent is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -4366,7 +4974,7 @@ Example:
 See also \fI-H, --header\fP and \fI--proxy-header\fP.
 .IP "\-u, \-\-user <user:password>"
 Specify the user name and password to use for server authentication. Overrides
-\fI\-n, \-\-netrc\fP and \fI\-\-netrc-optional\fP.
+\-\-netrc and \fI\-\-netrc-optional\fP.
 
 If you simply specify the user name, curl will prompt for a password.
 
@@ -4398,7 +5006,7 @@ Negotiate, NTLM or Digest authentication then you can tell curl to select
 the user name and password from your environment by specifying a single colon
 with this option: "-u :".
 
-If this option is used several times, the last one will be used.
+If --user is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -4408,28 +5016,31 @@ Example:
 See also \fI-n, --netrc\fP and \fI-K, --config\fP.
 .IP "\-v, \-\-verbose"
 Makes curl verbose during the operation. Useful for debugging and seeing
-what\(aqs going on "under the hood". A line starting with '>' means "header data"
-sent by curl, \(aq<' means "header data" received by curl that is hidden in
-normal cases, and a line starting with \(aq*' means additional info provided by
+what's going on "under the hood". A line starting with '>' means "header data"
+sent by curl, '<' means "header data" received by curl that is hidden in
+normal cases, and a line starting with '*' means additional info provided by
 curl.
 
-If you only want HTTP headers in the output, \fI\-i, \-\-include\fP might be the option
+If you only want HTTP headers in the output, \-\-include might be the option
 you are looking for.
 
 If you think this option still does not give you enough details, consider using
-\fI\-\-trace\fP or \fI\-\-trace-ascii\fP instead.
+\-\-trace or \-\-trace-ascii instead.
 
 This option is global and does not need to be specified for each use of
 \fI\-:, \-\-next\fP.
 
-Use \fI\-s, \-\-silent\fP to make curl really quiet.
+Use \-\-silent to make curl really quiet.
+
+Providing --verbose multiple times has no extra effect.
+Disable it again with --no-verbose.
 
 Example:
 .nf
  curl --verbose https://example.com
 .fi
 
-See also \fI-i, --include\fP. This option overrides \fI--trace\fP and \fI--trace-ascii\fP.
+See also \fI-i, --include\fP. This option is mutually exclusive to \fI--trace\fP and \fI--trace-ascii\fP.
 .IP "\-V, \-\-version"
 Displays information about curl and the libcurl version it uses.
 
@@ -4506,6 +5117,9 @@ Unix sockets support is provided.
 Automatic decompression (via zstd) of compressed files over HTTP is supported.
 .RE
 
+Providing --version multiple times has no extra effect.
+Disable it again with --no-version.
+
 Example:
 .nf
  curl --version
@@ -4528,6 +5142,11 @@ output a newline by using \\n, a carriage return with \\r and a tab space with
 The output will be written to standard output, but this can be switched to
 standard error by using %{stderr}.
 
+Output HTTP headers from the most recent request by using \fB%header{name}\fP
+where \fBname\fP is the case insensitive name of the header (without the
+trailing colon). The header contents are exactly as sent over the network,
+with leading and trailing whitespace trimmed. Added in curl 7.84.0.
+
 .B NOTE:
 The %-symbol is a special symbol in the win32-environment, where all
 occurrences of % must be doubled when using this option.
@@ -4546,14 +5165,23 @@ The numerical exitcode of the transfer. (Added in 7.75.0)
 .TP
 .B filename_effective
 The ultimate filename that curl writes out to. This is only meaningful if curl
-is told to write to a file with the \fI\-O, \-\-remote-name\fP or \fI\-o, \-\-output\fP
-option. It\(aqs most useful in combination with the \fI\-J, \-\-remote-header-name\fP
+is told to write to a file with the \-\-remote-name or \-\-output
+option. It's most useful in combination with the \-\-remote-header-name
 option.
 .TP
 .B ftp_entry_path
 The initial path curl ended up in when logging on to the remote FTP
 server.
 .TP
+.B header_json
+A JSON object with all HTTP response headers from the recent transfer. Values
+are provided as arrays, since in the case of multiple headers there can be
+multiple values.
+
+The header names provided in lowercase, listed in order of appearance over the
+wire. Except for duplicated headers. They are grouped on the first occurrence
+of that header, each value is presented in the JSON array.
+.TP
 .B http_code
 The numerical response code that was found in the last retrieved HTTP(S) or
 FTP(s) transfer.
@@ -4583,9 +5211,7 @@ Number of new connects made in the recent transfer.
 .TP
 .B num_headers
 The number of response headers in the most recent request (restarted at each
-.nf
- redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
-.fi
+redirect). Note that the status line IS NOT a header. (Added in 7.73.0)
 .TP
 .B num_redirects
 Number of redirects that were followed in the request.
@@ -4595,12 +5221,12 @@ The rest of the output is only shown if the transfer returned a non-zero error
 (Added in 7.75.0)
 .TP
 .B proxy_ssl_verify_result
-The result of the HTTPS proxy\(aqs SSL peer certificate verification that was
+The result of the HTTPS proxy's SSL peer certificate verification that was
 requested. 0 means the verification was successful. (Added in 7.52.0)
 .TP
 .B redirect_url
-When an HTTP request was made without \fI\-L, \-\-location\fP to follow redirects (or when
-\fI\-\-max-redirs\fP is met), this variable will show the actual URL a redirect
+When an HTTP request was made without \-\-location to follow redirects (or when
+\-\-max-redirs is met), this variable will show the actual URL a redirect
 \fIwould\fP have gone to.
 .TP
 .B referer
@@ -4647,11 +5273,11 @@ The result of the SSL peer certificate verification that was requested. 0
 means the verification was successful.
 .TP
 .B stderr
-From this point on, the \fI\-w, \-\-write-out\fP output will be written to standard
+From this point on, the \-\-write-out output will be written to standard
 error. (Added in 7.63.0)
 .TP
 .B stdout
-From this point on, the \fI\-w, \-\-write-out\fP output will be written to standard output.
+From this point on, the \-\-write-out output will be written to standard output.
 This is the default, but can be used to switch back after switching to stderr.
 (Added in 7.63.0)
 .TP
@@ -4698,7 +5324,8 @@ The URL that was fetched last. This is most meaningful if you have told curl
 to follow location: headers.
 .RE
 .IP
-If this option is used several times, the last one will be used.
+
+If --write-out is provided several times, the last set value will be used.
 
 Example:
 .nf
@@ -4713,6 +5340,9 @@ xdg.origin.url attribute and, for HTTP, the content type is stored in
 the mime_type attribute. If the file system does not support extended
 attributes, a warning is issued.
 
+Providing --xattr multiple times has no extra effect.
+Disable it again with --no-xattr.
+
 Example:
 .nf
  curl --xattr -o storage https://example.com
@@ -4722,14 +5352,14 @@ See also \fI-R, --remote-time\fP, \fI-w, --write-out\fP and \fI-v, --verbose\fP.
 .SH FILES
 .I ~/.curlrc
 .RS
-Default config file, see \fI\-K, \-\-config\fP for details.
+Default config file, see \-\-config for details.
 .SH ENVIRONMENT
 The environment variables can be specified in lower case or upper case. The
 lower case version has precedence. http_proxy is an exception as it is only
 available in lower case.
 
 Using an environment variable to set the proxy has the same effect as using
-the \fI\-x, \-\-proxy\fP option.
+the \-\-proxy option.
 
 .IP "http_proxy [protocol://]<host>[:port]"
 Sets the proxy server to use for HTTP.
@@ -4743,11 +5373,11 @@ SMTP, LDAP, etc.
 Sets the proxy server to use if no protocol-specific proxy is set.
 .IP "NO_PROXY <comma-separated list of hosts/domains>"
 list of host names that should not go through any proxy. If set to an asterisk
-\&\(aq*' only, it matches all hosts. Each name in this list is matched as either
+\(aq*' only, it matches all hosts. Each name in this list is matched as either
 a domain name which contains the hostname, or the hostname itself.
 
 This environment variable disables use of the proxy even when specified with
-the \fI\-x, \-\-proxy\fP option. That is
+the \-\-proxy option. That is
 .B NO_PROXY=direct.example.com curl \-x http://proxy.example.com
 .B http://direct.example.com
 accesses the target URL directly, and
@@ -4769,7 +5399,7 @@ If set, the specified number of characters will be used as the terminal width
 when the alternative progress-bar is shown. If not set, curl will try to
 figure it out using other ways.
 .IP "CURL_CA_BUNDLE <file>"
-If set, will be used as the \fI\fI\-\-cacert\fP\fP value.
+If set, will be used as the \fI\-\-cacert\fP value.
 .IP "CURL_HOME <dir>"
 If set, is the first variable curl checks when trying to find its home
 directory. If not set, it continues to check \fBXDG_CONFIG_HOME\fP.
@@ -4781,7 +5411,7 @@ invoked. Setting a name that is not a built-in alternative will make curl
 stay with the default.
 
 SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
-mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
+nss, openssl, rustls, schannel, secure-transport, wolfssl
 .IP "HOME <dir>"
 If set, this is used to find the home directory when that is needed. Like when
 looking for the default .curlrc. \fBCURL_HOME\fP and \fBXDG_CONFIG_HOME\fP
@@ -4794,9 +5424,9 @@ files can become rather large. Works with both QUIC backends.
 .IP SHELL
 Used on VMS when trying to detect if using a DCL or a "unix" shell.
 .IP "SSL_CERT_DIR <dir>"
-If set, will be used as the \fI\fI\-\-capath\fP\fP value.
+If set, will be used as the \fI\-\-capath\fP value.
 .IP "SSL_CERT_FILE <path>"
-If set, will be used as the \fI\fI\-\-cacert\fP\fP value.
+If set, will be used as the \fI\-\-cacert\fP value.
 .IP "SSLKEYLOGFILE <file name>"
 If you set this environment variable to a file name, curl will store TLS
 secrets from its connections in that file when invoked to enable you to
@@ -4806,7 +5436,7 @@ BoringSSL, GnuTLS, NSS and wolfSSL.
 .IP "USERPROFILE <dir>"
 On Windows, this variable is used when trying to find the home directory. If
 the other, primary, variable are all unset. If set, curl will use the path
-"$USERPROFILE\\Application Data".
+\(dq$USERPROFILE\\Application Data".
 .IP "XDG_CONFIG_HOME <dir>"
 If \fBCURL_HOME\fP is not set, this variable is checked when looking for a
 default .curlrc file.
@@ -4823,17 +5453,19 @@ Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
 .IP "https://"
 Makes it treated as an \fBHTTPS\fP proxy.
 .IP "socks4://"
-Makes it the equivalent of \fI\-\-socks4\fP
+Makes it the equivalent of \-\-socks4
 .IP "socks4a://"
-Makes it the equivalent of \fI\-\-socks4a\fP
+Makes it the equivalent of \-\-socks4a
 .IP "socks5://"
-Makes it the equivalent of \fI\-\-socks5\fP
+Makes it the equivalent of \-\-socks5
 .IP "socks5h://"
-Makes it the equivalent of \fI\-\-socks5-hostname\fP
+Makes it the equivalent of \-\-socks5-hostname
 .SH EXIT CODES
 There are a bunch of different error codes and their corresponding error
 messages that may appear under error conditions. At the time of this writing,
 the exit codes are:
+.IP 0
+Success. The operation completed successfully according to the instructions.
 .IP 1
 Unsupported protocol. This build of curl has no support for this protocol.
 .IP 2
@@ -4885,9 +5517,9 @@ failed.
 .IP 21
 FTP quote error. A quote command returned error from the server.
 .IP 22
-HTTP page not retrieved. The requested url was not found or returned another
+HTTP page not retrieved. The requested URL was not found or returned another
 error with the HTTP error code being 400 or above. This return code only
-appears if \fI\-f, \-\-fail\fP is used.
+appears if \-\-fail is used.
 .IP 23
 Write error. Curl could not write data to a local filesystem or similar.
 .IP 25
@@ -4936,8 +5568,6 @@ option to curl that was passed on to libcurl and rejected. Read up in the
 manual!
 .IP 49
 Malformed telnet option.
-.IP 51
-The peer\(aqs SSL certificate or SSH MD5 fingerprint was not OK.
 .IP 52
 The server did not reply anything, which here is considered an error.
 .IP 53
@@ -4956,8 +5586,6 @@ Could not use specified SSL cipher.
 Peer certificate cannot be authenticated with known CA certificates.
 .IP 61
 Unrecognized transfer encoding.
-.IP 62
-Invalid LDAP URL.
 .IP 63
 Maximum file size exceeded.
 .IP 64
@@ -4982,10 +5610,6 @@ Unknown TFTP transfer ID.
 File already exists (TFTP).
 .IP 74
 No such user (TFTP).
-.IP 75
-Character conversion failed.
-.IP 76
-Character conversion functions required.
 .IP 77
 Problem reading the SSL CA cert (path? access rights?).
 .IP 78
@@ -5030,7 +5654,7 @@ is the protocol used for HTTP/3 transfers.
 More error codes will appear here in future releases. The existing ones
 are meant to never change.
 .SH BUGS
-If you experience any problems with curl, submit an issue in the project\(aqs bug
+If you experience any problems with curl, submit an issue in the project's bug
 tracker on GitHub: https://github.com/curl/curl/issues
 .SH AUTHORS / CONTRIBUTORS
 Daniel Stenberg is the main author, but the whole list of contributors is
index 9f45e4533d4771903e63fcc3742a701d5d4e9622..1739a9e78c6c787dcc87eebf936055d579e2683e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Download many files in parallel, in the same thread.
index 1da1e8dfd43ed3f7413521f8ac85330a9ce70331..6759d97f1edb744877c67353763640ac41bf4f8b 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 AUTOMAKE_OPTIONS = foreign nostdinc
 
 EXTRA_DIST = README.md Makefile.example Makefile.inc Makefile.m32 \
-  Makefile.netware makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
+  makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
 
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
@@ -67,4 +69,4 @@ CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
index e598d35dcfe685b4a56cac68c3950fa9c83554b2..b05ca8ee19593bc8d798c8e10b5202d9a9d962ff 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # What to call the final executable
index f61471472cd5b2eda5c94e8e44acc761f0c68b80..dc32d817a05f79400d243ee611386cec893dba97 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #***************************************************************************
@@ -43,7 +45,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -56,6 +58,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = { \
@@ -135,12 +139,12 @@ host_triplet = @host@
 check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
        anyauthput$(EXEEXT) certinfo$(EXEEXT) chkspeed$(EXEEXT) \
        cookie_interface$(EXEEXT) debug$(EXEEXT) \
-       externalsocket$(EXEEXT) fileupload$(EXEEXT) fopen$(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) http-post$(EXEEXT) \
+       getreferrer$(EXEEXT) headerapi$(EXEEXT) http-post$(EXEEXT) \
        http2-download$(EXEEXT) http2-pushinmemory$(EXEEXT) \
        http2-serverpush$(EXEEXT) http2-upload$(EXEEXT) http3$(EXEEXT) \
        http3-present$(EXEEXT) httpcustomheader$(EXEEXT) \
@@ -160,8 +164,8 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
        pop3-tls$(EXEEXT) pop3-top$(EXEEXT) pop3-uidl$(EXEEXT) \
        post-callback$(EXEEXT) postinmemory$(EXEEXT) postit2$(EXEEXT) \
        postit2-formadd$(EXEEXT) progressfunc$(EXEEXT) \
-       resolve$(EXEEXT) rtsp$(EXEEXT) sendrecv$(EXEEXT) \
-       sepheaders$(EXEEXT) sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \
+       resolve$(EXEEXT) sendrecv$(EXEEXT) sepheaders$(EXEEXT) \
+       sftpget$(EXEEXT) sftpuploadresume$(EXEEXT) \
        shared-connection-cache$(EXEEXT) simple$(EXEEXT) \
        simplepost$(EXEEXT) simplessl$(EXEEXT) smtp-authzid$(EXEEXT) \
        smtp-expn$(EXEEXT) smtp-mail$(EXEEXT) smtp-mime$(EXEEXT) \
@@ -170,15 +174,13 @@ check_PROGRAMS = 10-at-a-time$(EXEEXT) altsvc$(EXEEXT) \
        urlapi$(EXEEXT)
 subdir = docs/examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -271,12 +273,6 @@ fileupload_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@fileupload_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
-fopen_SOURCES = fopen.c
-fopen_OBJECTS = fopen.$(OBJEXT)
-fopen_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@fopen_DEPENDENCIES =  \
-@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@fopen_DEPENDENCIES = $(LIBDIR)/libcurl.la
 ftp_wildcard_SOURCES = ftp-wildcard.c
 ftp_wildcard_OBJECTS = ftp-wildcard.$(OBJEXT)
 ftp_wildcard_LDADD = $(LDADD)
@@ -361,6 +357,13 @@ getreferrer_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@getreferrer_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
+headerapi_SOURCES = headerapi.c
+headerapi_OBJECTS = headerapi.$(OBJEXT)
+headerapi_LDADD = $(LDADD)
+@USE_EXPLICIT_LIB_DEPS_FALSE@headerapi_DEPENDENCIES =  \
+@USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
+@USE_EXPLICIT_LIB_DEPS_TRUE@headerapi_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)
@@ -723,11 +726,6 @@ resolve_LDADD = $(LDADD)
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(LIBDIR)/libcurl.la
 @USE_EXPLICIT_LIB_DEPS_TRUE@resolve_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(LIBDIR)/libcurl.la
-rtsp_SOURCES = rtsp.c
-rtsp_OBJECTS = rtsp.$(OBJEXT)
-rtsp_LDADD = $(LDADD)
-@USE_EXPLICIT_LIB_DEPS_FALSE@rtsp_DEPENDENCIES = $(LIBDIR)/libcurl.la
-@USE_EXPLICIT_LIB_DEPS_TRUE@rtsp_DEPENDENCIES = $(LIBDIR)/libcurl.la
 sendrecv_SOURCES = sendrecv.c
 sendrecv_OBJECTS = sendrecv.$(OBJEXT)
 sendrecv_LDADD = $(LDADD)
@@ -881,13 +879,13 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
        ./$(DEPDIR)/certinfo.Po ./$(DEPDIR)/chkspeed.Po \
        ./$(DEPDIR)/cookie_interface.Po ./$(DEPDIR)/debug.Po \
        ./$(DEPDIR)/externalsocket.Po ./$(DEPDIR)/fileupload.Po \
-       ./$(DEPDIR)/fopen.Po ./$(DEPDIR)/ftp-wildcard.Po \
-       ./$(DEPDIR)/ftpget.Po ./$(DEPDIR)/ftpgetinfo.Po \
-       ./$(DEPDIR)/ftpgetresp.Po ./$(DEPDIR)/ftpsget.Po \
-       ./$(DEPDIR)/ftpupload.Po ./$(DEPDIR)/ftpuploadfrommem.Po \
-       ./$(DEPDIR)/ftpuploadresume.Po ./$(DEPDIR)/getinfo.Po \
-       ./$(DEPDIR)/getinmemory.Po ./$(DEPDIR)/getredirect.Po \
-       ./$(DEPDIR)/getreferrer.Po ./$(DEPDIR)/http-post.Po \
+       ./$(DEPDIR)/ftp-wildcard.Po ./$(DEPDIR)/ftpget.Po \
+       ./$(DEPDIR)/ftpgetinfo.Po ./$(DEPDIR)/ftpgetresp.Po \
+       ./$(DEPDIR)/ftpsget.Po ./$(DEPDIR)/ftpupload.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)/http2-download.Po \
        ./$(DEPDIR)/http2-pushinmemory.Po \
        ./$(DEPDIR)/http2-serverpush.Po ./$(DEPDIR)/http2-upload.Po \
@@ -915,9 +913,8 @@ am__depfiles_remade = ./$(DEPDIR)/10-at-a-time.Po \
        ./$(DEPDIR)/post-callback.Po ./$(DEPDIR)/postinmemory.Po \
        ./$(DEPDIR)/postit2-formadd.Po ./$(DEPDIR)/postit2.Po \
        ./$(DEPDIR)/progressfunc.Po ./$(DEPDIR)/resolve.Po \
-       ./$(DEPDIR)/rtsp.Po ./$(DEPDIR)/sendrecv.Po \
-       ./$(DEPDIR)/sepheaders.Po ./$(DEPDIR)/sftpget.Po \
-       ./$(DEPDIR)/sftpuploadresume.Po \
+       ./$(DEPDIR)/sendrecv.Po ./$(DEPDIR)/sepheaders.Po \
+       ./$(DEPDIR)/sftpget.Po ./$(DEPDIR)/sftpuploadresume.Po \
        ./$(DEPDIR)/shared-connection-cache.Po ./$(DEPDIR)/simple.Po \
        ./$(DEPDIR)/simplepost.Po ./$(DEPDIR)/simplessl.Po \
        ./$(DEPDIR)/smtp-authzid.Po ./$(DEPDIR)/smtp-expn.Po \
@@ -947,9 +944,9 @@ 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 \
-       fopen.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 \
+       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 \
@@ -962,30 +959,29 @@ SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c chkspeed.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 resolve.c rtsp.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 \
+       progressfunc.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
 DIST_SOURCES = 10-at-a-time.c altsvc.c anyauthput.c certinfo.c \
        chkspeed.c cookie_interface.c debug.c externalsocket.c \
-       fileupload.c fopen.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 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 \
-       resolve.c rtsp.c sendrecv.c sepheaders.c sftpget.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 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 \
@@ -1060,6 +1056,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -1077,6 +1074,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -1136,6 +1134,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -1154,12 +1153,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -1226,7 +1226,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -1234,7 +1233,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = foreign nostdinc
 EXTRA_DIST = README.md Makefile.example Makefile.inc Makefile.m32 \
-  Makefile.netware makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
+  makefile.dj $(COMPLICATED_EXAMPLES) .checksrc
 
 
 # Specify our include paths here, and do it relative to $(top_srcdir) and
@@ -1258,7 +1257,6 @@ COMPLICATED_EXAMPLES = \
   cacertinmem.c \
   crawler.c \
   curlgtk.c \
-  curlx.c \
   ephiperfifo.c \
   evhiperfifo.c \
   ghiper.c \
@@ -1270,7 +1268,6 @@ COMPLICATED_EXAMPLES = \
   multi-uv.c \
   multithread.c \
   opensslthreadlock.c \
-  sampleconv.c \
   sessioninfo.c \
   smooth-gtk-thread.c \
   synctime.c \
@@ -1363,10 +1360,6 @@ fileupload$(EXEEXT): $(fileupload_OBJECTS) $(fileupload_DEPENDENCIES) $(EXTRA_fi
        @rm -f fileupload$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(fileupload_OBJECTS) $(fileupload_LDADD) $(LIBS)
 
-fopen$(EXEEXT): $(fopen_OBJECTS) $(fopen_DEPENDENCIES) $(EXTRA_fopen_DEPENDENCIES) 
-       @rm -f fopen$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(fopen_OBJECTS) $(fopen_LDADD) $(LIBS)
-
 ftp-wildcard$(EXEEXT): $(ftp_wildcard_OBJECTS) $(ftp_wildcard_DEPENDENCIES) $(EXTRA_ftp_wildcard_DEPENDENCIES) 
        @rm -f ftp-wildcard$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(ftp_wildcard_OBJECTS) $(ftp_wildcard_LDADD) $(LIBS)
@@ -1415,6 +1408,10 @@ getreferrer$(EXEEXT): $(getreferrer_OBJECTS) $(getreferrer_DEPENDENCIES) $(EXTRA
        @rm -f getreferrer$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(getreferrer_OBJECTS) $(getreferrer_LDADD) $(LIBS)
 
+headerapi$(EXEEXT): $(headerapi_OBJECTS) $(headerapi_DEPENDENCIES) $(EXTRA_headerapi_DEPENDENCIES) 
+       @rm -f headerapi$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(headerapi_OBJECTS) $(headerapi_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)
@@ -1623,10 +1620,6 @@ resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEP
        @rm -f resolve$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(resolve_OBJECTS) $(resolve_LDADD) $(LIBS)
 
-rtsp$(EXEEXT): $(rtsp_OBJECTS) $(rtsp_DEPENDENCIES) $(EXTRA_rtsp_DEPENDENCIES) 
-       @rm -f rtsp$(EXEEXT)
-       $(AM_V_CCLD)$(LINK) $(rtsp_OBJECTS) $(rtsp_LDADD) $(LIBS)
-
 sendrecv$(EXEEXT): $(sendrecv_OBJECTS) $(sendrecv_DEPENDENCIES) $(EXTRA_sendrecv_DEPENDENCIES) 
        @rm -f sendrecv$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(sendrecv_OBJECTS) $(sendrecv_LDADD) $(LIBS)
@@ -1718,7 +1711,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.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)/fopen.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftp-wildcard.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpget.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ftpgetinfo.Po@am__quote@ # am--include-marker
@@ -1731,6 +1723,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getinmemory.Po@am__quote@ # am--include-marker
 @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)/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
@@ -1783,7 +1776,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/postit2.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progressfunc.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolve.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtsp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendrecv.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sepheaders.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sftpget.Po@am__quote@ # am--include-marker
@@ -1974,7 +1966,6 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/debug.Po
        -rm -f ./$(DEPDIR)/externalsocket.Po
        -rm -f ./$(DEPDIR)/fileupload.Po
-       -rm -f ./$(DEPDIR)/fopen.Po
        -rm -f ./$(DEPDIR)/ftp-wildcard.Po
        -rm -f ./$(DEPDIR)/ftpget.Po
        -rm -f ./$(DEPDIR)/ftpgetinfo.Po
@@ -1987,6 +1978,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/getinmemory.Po
        -rm -f ./$(DEPDIR)/getredirect.Po
        -rm -f ./$(DEPDIR)/getreferrer.Po
+       -rm -f ./$(DEPDIR)/headerapi.Po
        -rm -f ./$(DEPDIR)/http-post.Po
        -rm -f ./$(DEPDIR)/http2-download.Po
        -rm -f ./$(DEPDIR)/http2-pushinmemory.Po
@@ -2039,7 +2031,6 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/postit2.Po
        -rm -f ./$(DEPDIR)/progressfunc.Po
        -rm -f ./$(DEPDIR)/resolve.Po
-       -rm -f ./$(DEPDIR)/rtsp.Po
        -rm -f ./$(DEPDIR)/sendrecv.Po
        -rm -f ./$(DEPDIR)/sepheaders.Po
        -rm -f ./$(DEPDIR)/sftpget.Po
@@ -2113,7 +2104,6 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/debug.Po
        -rm -f ./$(DEPDIR)/externalsocket.Po
        -rm -f ./$(DEPDIR)/fileupload.Po
-       -rm -f ./$(DEPDIR)/fopen.Po
        -rm -f ./$(DEPDIR)/ftp-wildcard.Po
        -rm -f ./$(DEPDIR)/ftpget.Po
        -rm -f ./$(DEPDIR)/ftpgetinfo.Po
@@ -2126,6 +2116,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/getinmemory.Po
        -rm -f ./$(DEPDIR)/getredirect.Po
        -rm -f ./$(DEPDIR)/getreferrer.Po
+       -rm -f ./$(DEPDIR)/headerapi.Po
        -rm -f ./$(DEPDIR)/http-post.Po
        -rm -f ./$(DEPDIR)/http2-download.Po
        -rm -f ./$(DEPDIR)/http2-pushinmemory.Po
@@ -2178,7 +2169,6 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/postit2.Po
        -rm -f ./$(DEPDIR)/progressfunc.Po
        -rm -f ./$(DEPDIR)/resolve.Po
-       -rm -f ./$(DEPDIR)/rtsp.Po
        -rm -f ./$(DEPDIR)/sendrecv.Po
        -rm -f ./$(DEPDIR)/sepheaders.Po
        -rm -f ./$(DEPDIR)/sftpget.Po
@@ -2240,7 +2230,7 @@ uninstall-am:
 all: $(check_PROGRAMS)
 
 checksrc:
-       $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.c)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 028956f00b5b16ec11f50a07e74e1e6714a7316a..42247fe61d9f05a3b8445f530d2d58eb634fd133 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # These are all libcurl example programs to be test compiled
@@ -31,7 +33,6 @@ check_PROGRAMS = \
   debug \
   externalsocket \
   fileupload \
-  fopen \
   ftp-wildcard \
   ftpget \
   ftpgetinfo \
@@ -44,6 +45,7 @@ check_PROGRAMS = \
   getinmemory \
   getredirect \
   getreferrer \
+  headerapi \
   http-post \
   http2-download \
   http2-pushinmemory \
@@ -96,7 +98,6 @@ check_PROGRAMS = \
   postit2-formadd \
   progressfunc \
   resolve \
-  rtsp \
   sendrecv \
   sepheaders \
   sftpget \
@@ -123,7 +124,6 @@ COMPLICATED_EXAMPLES = \
   cacertinmem.c \
   crawler.c \
   curlgtk.c \
-  curlx.c \
   ephiperfifo.c \
   evhiperfifo.c \
   ghiper.c \
@@ -135,7 +135,6 @@ COMPLICATED_EXAMPLES = \
   multi-uv.c \
   multithread.c \
   opensslthreadlock.c \
-  sampleconv.c \
   sessioninfo.c \
   smooth-gtk-thread.c \
   synctime.c \
index ed1d17cd2f839c0a7c0fff5ff93589690de01427..0766082162c83c9fa6dbfbf7eb73263749cbdef2 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
-#***************************************************************************
-
-###########################################################################
-#
-## Makefile for building curl examples with MingW (GCC-3.2 or later)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1), zstd (1.4.5)
-##
-## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
+# SPDX-License-Identifier: curl
 #
-###########################################################################
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Zstandard sources.
-ifndef ZSTD_PATH
-ZSTD_PATH = ../../../zstd-1.4.5
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../../expat-2.1.0
-endif
-# Edit the path below to point to the base of your libxml2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../../libxml2-2.9.2
-endif
-# Edit the path below to point to the base of your libgsasl package.
-ifndef LIBGSASL_PATH
-LIBGSASL_PATH = ../../../libgsasl-1.10.0
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-ifndef LDAP_SDK
-LDAP_SDK = c:/novell/ndk/cldapsdk/win32
-endif
-# Edit the path below to point to the base of your nghttp2 package.
-ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../../nghttp2-1.0.0
-endif
-# Edit the path below to point to the base of your nghttp3 package.
-ifndef NGHTTP3_PATH
-NGHTTP3_PATH = ../../../nghttp3-1.0.0
-endif
-# Edit the path below to point to the base of your ngtcp2 package.
-ifndef NGTCP2_PATH
-NGTCP2_PATH = ../../../ngtcp2-1.0.0
-endif
-
-PROOT = ../..
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
-
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -O coff
-
-# Set environment var ARCH to your architecture to override autodetection.
-ifndef ARCH
-ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
-ARCH = w64
-else
-ARCH = w32
-endif
-endif
-
-ifeq ($(ARCH),w64)
-CFLAGS  += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS  += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
-
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL     = rm -f $1
-RMDIR   = rm -fr $1
-MKDIR   = mkdir -p $1
-COPY    = -cp -afv $1 $2
-#COPYR  = -cp -afr $1/* $2
-COPYR   = -rsync -aC $1/* $2
-TOUCH   = touch $1
-CAT     = cat
-ECHONL  = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL     = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR   = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL     = -del 2>NUL $(subst /,\,$1)
-RMDIR   = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR   = -md 2>NUL $(subst /,\,$1)
-COPY    = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR   = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH   = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT     = type
-ECHONL  = $(ComSpec) /c echo.
-endif
-
-########################################################
-## Nothing more to do below this line!
+#***************************************************************************
 
-ifneq ($(findstring -dyn,$(CFG)),)
-DYN = 1
-endif
-ifneq ($(findstring -ares,$(CFG)),)
-ARES = 1
-endif
-ifneq ($(findstring -rtmp,$(CFG)),)
-RTMP = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssh2,$(CFG)),)
-SSH2 = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssl,$(CFG)),)
-SSL = 1
-endif
-ifneq ($(findstring -zlib,$(CFG)),)
-ZLIB = 1
-endif
-ifneq ($(findstring -zstd,$(CFG)),)
-ZSTD = 1
-endif
-ifneq ($(findstring -brotli,$(CFG)),)
-BROTLI = 1
-endif
-ifneq ($(findstring -gsasl,$(CFG)),)
-GSASL = 1
-endif
-ifneq ($(findstring -idn2,$(CFG)),)
-IDN2 = 1
-endif
-ifneq ($(findstring -winidn,$(CFG)),)
-WINIDN = 1
-endif
-ifneq ($(findstring -sspi,$(CFG)),)
-SSPI = 1
-endif
-ifneq ($(findstring -ldaps,$(CFG)),)
-LDAPS = 1
-endif
-ifneq ($(findstring -ipv6,$(CFG)),)
-IPV6 = 1
-endif
-ifneq ($(findstring -schannel,$(CFG))$(findstring -winssl,$(CFG)),)
-SCHANNEL = 1
-SSPI = 1
-endif
-ifneq ($(findstring -nghttp2,$(CFG)),)
-NGHTTP2 = 1
-endif
-ifneq ($(findstring -nghttp3,$(CFG)),)
-NGHTTP3 = 1
-endif
-ifneq ($(findstring -ngtcp2,$(CFG)),)
-NGTCP2 = 1
-endif
+# Build libcurl via lib/Makefile.m32 first.
 
-# SSH2 and RTMP require an SSL library; assume OpenSSL if none specified
-ifneq ($(SSH2)$(RTMP),)
-  ifeq ($(SSL)$(SCHANNEL),)
-    SSL = 1
-  endif
-endif
+PROOT := ../..
 
-INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
+LDFLAGS  += -L$(PROOT)/lib
+LIBS     += -lcurl
 
-ifdef DYN
-  curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
-  curl_LDADD = -L$(PROOT)/lib -lcurldll
+ifeq ($(findstring -static,$(CFG)),)
+  curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
+  DYN := 1
 else
-  curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
-  curl_LDADD = -L$(PROOT)/lib -lcurl
-  CFLAGS += -DCURL_STATICLIB
+  curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
+  CPPFLAGS += -DCURL_STATICLIB
   LDFLAGS += -static
 endif
-ifdef ARES
-  ifndef DYN
-    curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
-  endif
-  CFLAGS += -DUSE_ARES
-  curl_LDADD += -L"$(LIBCARES_PATH)" -lcares
-endif
-ifdef RTMP
-  CFLAGS += -DUSE_LIBRTMP
-  curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
-endif
-ifdef NGHTTP2
-  CFLAGS += -DUSE_NGHTTP2
-  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
-endif
-ifdef SSH2
-  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
-  curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
-  ifdef SCHANNEL
-    ifndef DYN
-      curl_LDADD += -lbcrypt -lcrypt32
-    endif
-  endif
-endif
-ifdef SSL
-  ifdef NGHTTP3
-    CFLAGS += -DUSE_NGHTTP3
-    curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
-    ifdef NGTCP2
-      CFLAGS += -DUSE_NGTCP2
-      curl_LDADD += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
-    endif
-  endif
 
-  ifndef OPENSSL_INCLUDE
-    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
-      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
-    endif
-    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
-      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
-    endif
-  endif
-  ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
-    $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
-  endif
-  ifndef OPENSSL_LIBPATH
-    OPENSSL_LIBS = -lssl -lcrypto
-    ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
-      OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
-      ifdef DYN
-        OPENSSL_LIBS = -lssl32 -leay32
-      endif
-    endif
-    ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
-      OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
-    endif
-  endif
-  ifndef DYN
-    OPENSSL_LIBS += -lgdi32 -lcrypt32
-  endif
-  INCLUDES += -I"$(OPENSSL_INCLUDE)"
-  CFLAGS += -DUSE_OPENSSL
-  curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
-endif
-ifdef SCHANNEL
-  CFLAGS += -DUSE_SCHANNEL
-  curl_LDADD += -lcrypt32
-endif
-ifdef ZLIB
-  INCLUDES += -I"$(ZLIB_PATH)"
-  CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
-  curl_LDADD += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef ZSTD
-  INCLUDES += -I"$(ZSTD_PATH)/include"
-  CFLAGS += -DHAVE_ZSTD
-  curl_LDADD += -L"$(ZSTD_PATH)/lib"
-  ifdef ZSTD_LIBS
-    curl_LDADD += $(ZSTD_LIBS)
-  else
-    curl_LDADD += -lzstd
-  endif
-endif
-ifdef BROTLI
-  INCLUDES += -I"$(BROTLI_PATH)/include"
-  CFLAGS += -DHAVE_BROTLI
-  curl_LDADD += -L"$(BROTLI_PATH)/lib"
-  ifdef BROTLI_LIBS
-    curl_LDADD += $(BROTLI_LIBS)
-  else
-    curl_LDADD += -lbrotlidec
-  endif
-endif
-ifdef GSASL
-  CFLAGS += -DUSE_GSASL
-  curl_LDADD += -L"$(LIBGSASL_PATH)/lib" -lgsasl
-endif
-ifdef IDN2
-  CFLAGS += -DUSE_LIBIDN2
-  curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
-  CFLAGS += -DUSE_WIN32_IDN
-  curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef SSPI
-  CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef IPV6
-  CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
-  CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
-  CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
-  curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
-  CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
-  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
-  curl_LDADD += -lwldap32
-endif
-endif
-curl_LDADD += -lws2_32
+LIBS += -lws2_32
 
-# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
-include Makefile.inc
-
-check_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS)))
-check_PROGRAMS += ftpuploadresume.exe synctime.exe
+### Sources and targets
 
-.PRECIOUS: %.o
+# Provides check_PROGRAMS
+include Makefile.inc
 
+TARGETS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS) synctime))
+TOCLEAN := $(TARGETS:.exe=.o)
 
-all: $(check_PROGRAMS)
+### Local rules
 
 %.exe: %.o $(curl_DEPENDENCIES)
-       $(CC) $(LDFLAGS) -o $@ $< $(curl_LDADD)
-
-%.o: %.c
-       $(CC) $(INCLUDES) $(CFLAGS) -c $<
-
-%.res: %.rc
-       $(RC) $(RCFLAGS) -i $< -o $@
+       $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $< $(LIBS)
 
-clean:
-       @$(call DEL, $(check_PROGRAMS:.exe=.o))
+### Global script
 
-distclean vclean: clean
-       @$(call DEL, $(check_PROGRAMS))
+include $(PROOT)/lib/Makefile.m32
diff --git a/docs/examples/Makefile.netware b/docs/examples/Makefile.netware
deleted file mode 100644 (file)
index 3198e26..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2008 - 2020, 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.
-#
-###########################################################################
-#################################################################
-#
-## Makefile for building curl.nlm (NetWare version - gnu make)
-## Use: make -f Makefile.netware
-##
-## Comments to: Guenter Knauf
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../../libidn-1.32
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../../librtmp-2.4
-endif
-
-# Edit the path below to point to the base of your fbopenssl package.
-ifndef FBOPENSSL_PATH
-FBOPENSSL_PATH = ../../fbopenssl-0.4
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET  = examples
-VERSION = $(LIBCURL_VERSION)
-COPYR   = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR   = curl ($(LIBARCH))
-MTSAFE  = YES
-STACK   = 8192
-SCREEN  = Example Program
-# Comment the line below if you don't want to load protected automatically.
-# LDRING = 3
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
-  OPT = -O2
-  OBJDIR = release
-else
-  OPT = -g
-  OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
-  METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
-  # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
-  MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
-  CC = mwccnlm
-else
-  CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
-  LD = mwldnlm
-  LDFLAGS = -nostdlib $< $(PRELUDE) $(LDLIBS) -o $@ -commandfile
-  LIBEXT  = lib
-  CFLAGS  += -gccinc -inline off -opt nointrinsics -proc 586
-  CFLAGS  += -relax_pointers
-  #CFLAGS += -w on
-  ifeq ($(LIBARCH),LIBC)
-    ifeq ($(POSIXFL),1)
-      PRELUDE = $(NDK_LIBC)/imports/posixpre.o
-    else
-      PRELUDE = $(NDK_LIBC)/imports/libcpre.o
-    endif
-    CFLAGS += -align 4
-  else
-    # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
-    # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
-    PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
-    # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
-    CFLAGS += -align 1
-  endif
-else
-  LD = nlmconv
-  LDFLAGS = -T
-  LIBEXT  = a
-  CFLAGS  += -m32
-  CFLAGS  += -fno-builtin -fno-strict-aliasing
-  ifeq ($(findstring gcc,$(CC)),gcc)
-    CFLAGS += -fpcc-struct-return
-  endif
-  CFLAGS += -Wall # -pedantic
-  ifeq ($(LIBARCH),LIBC)
-    ifeq ($(POSIXFL),1)
-      PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
-    else
-      PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
-    endif
-  else
-    # PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
-    # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
-    # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
-    PRELUDE = $(NDK_ROOT)/pre/prelude.o
-    CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
-  endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../../include
-CURL_LIB = ../../lib
-
-INCLUDES = -I$(CURL_INC)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef LINK_STATIC
-  LDLIBS = $(CURL_LIB)/libcurl.$(LIBEXT)
-ifdef WITH_ARES
-  LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-else
-  MODULES = libcurl.nlm
-  IMPORTS = @$(CURL_LIB)/libcurl.imp
-endif
-ifdef WITH_SSH2
-  # INCLUDES += -I$(LIBSSH2_PATH)/include
-  ifdef LINK_STATIC
-    LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
-  else
-    MODULES += libssh2.nlm
-    IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
-  endif
-endif
-ifdef WITH_RTMP
-  # INCLUDES += -I$(LIBRTMP_PATH)
-ifdef LINK_STATIC
-  LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
-endif
-endif
-ifdef WITH_SSL
-  INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
-  LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
-  LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
-  IMPORTS += GetProcessSwitchCount RunningProcess
-else
-endif
-ifdef WITH_ZLIB
-  # INCLUDES += -I$(ZLIB_PATH)
-ifdef LINK_STATIC
-  LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
-else
-  MODULES += libz.nlm
-  IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
-endif
-endif
-ifdef WITH_IDN
-  # INCLUDES += -I$(LIBIDN_PATH)/include
-  LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
-endif
-
-ifeq ($(LIBARCH),LIBC)
-  INCLUDES += -I$(NDK_LIBC)/include
-  # INCLUDES += -I$(NDK_LIBC)/include/nks
-  # INCLUDES += -I$(NDK_LIBC)/include/winsock
-  CFLAGS += -D_POSIX_SOURCE
-else
-  INCLUDES += -I$(NDK_CLIB)/include/nlm
-  # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
-  # INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
-  XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
-  XDCOPT = -u
-endif
-ifdef XDCOPT
-  XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL  = '
-DS  = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS  = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-check_PROGRAMS := $(patsubst %,%.nlm,$(strip $(check_PROGRAMS)))
-
-.PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.def $(OBJDIR)/%.xdc
-
-
-all: prebuild $(check_PROGRAMS)
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc
-
-$(OBJDIR)/%.o: %.c
-       @echo Compiling $<
-       $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
-       @echo Creating $@
-       @$(AWK) -f ../../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all
-       @$(CP) $(check_PROGRAMS) $(INSTDIR)
-
-clean:
-       -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
-       -$(RM) $(check_PROGRAMS)
-
-$(OBJDIR) $(INSTDIR):
-       @$(MKDIR) $@
-
-%.nlm: $(OBJDIR)/%.o $(OBJDIR)/%.def $(XDCDATA)
-       @echo Linking $@
-       @-$(RM) $@
-       @$(LD) $(LDFLAGS) $(OBJDIR)/$(@:.nlm=.def)
-
-$(OBJDIR)/%.xdc: Makefile.netware
-       @echo Creating $@
-       @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
-       @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
-       @echo $(DL)# Do not edit this file - it is created by Make!$(DL) >> $@
-       @echo $(DL)# All your changes will be lost!!$(DL) >> $@
-       @echo $(DL)#$(DL) >> $@
-       @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
-       @echo $(DL)description "$(DESCR) $(notdir $(@:.def=)) Example"$(DL) >> $@
-       @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
-       @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
-       @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
-       @echo $(DL)screenname "$(DESCR) $(notdir $(@:.def=)) $(SCREEN)"$(DL) >> $@
-else
-       @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
-       @echo $(DL)debug$(DL) >> $@
-endif
-       @echo $(DL)threadname "_$(notdir $(@:.def=))"$(DL) >> $@
-ifdef XDCDATA
-       @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
-       @echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
-       @echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
-       @echo $(DL)start _Prelude$(DL) >> $@
-       @echo $(DL)exit _Stop$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
-       @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
-       @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-#      @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
-       @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
-       @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
-       @echo $(DL)flag_on 64$(DL) >> $@
-       @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
-       @echo $(DL)start POSIX_Start$(DL) >> $@
-       @echo $(DL)exit POSIX_Stop$(DL) >> $@
-       @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
-       @echo $(DL)start _LibCPrelude$(DL) >> $@
-       @echo $(DL)exit _LibCPostlude$(DL) >> $@
-       @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
-       @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
-       @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
-       @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-#      @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
-       @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
-       @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
-       @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
-       @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
-       @echo $(DL)input $(PRELUDE)$(DL) >> $@
-       @echo $(DL)input $(@:.def=.o)$(DL) >> $@
-ifdef LDLIBS
-       @echo $(DL)input $(LDLIBS)$(DL) >> $@
-endif
-       @echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
-endif
index 78577f84ff86782df8245c741456eea047ede0a0..c74dc9416c5020e1d0f7249472a444223858b57c 100644 (file)
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
 # libcurl examples
 
 This directory is for libcurl programming examples. They are meant to show
@@ -9,8 +15,9 @@ them for submission in future packages and on the website.
 
 ## Building
 
-The Makefile.example is an example makefile that could be used to build these
-examples. Just edit the file according to your system and requirements first.
+The `Makefile.example` is an example Makefile that could be used to build
+these examples. Just edit the file according to your system and requirements
+first.
 
 Most examples should build fine using a command line like this:
 
@@ -21,10 +28,10 @@ want you do reorganize them like:
 
     `curl-config --cc` -o example example.c `curl-config --cflags --libs`
 
-**Please** do not use the `curl.se` site as a test target for your
-libcurl applications/experiments. Even if some of the examples use that site
-as a URL at some places, it does not mean that the URLs work or that we expect
-you to actually torture our website with your tests!  Thanks.
+**Please** do not use the `curl.se` site as a test target for your libcurl
+applications/experiments. Even if some of the examples use that site as a URL
+at some places, it does not mean that the URLs work or that we expect you to
+actually torture our website with your tests. Thanks.
 
 ## Examples
 
index ffca057762f7e05b1a555ee283b6fbf6cfe49df1..7fa47c2c20a68fbdcf47342472a839d0c27720a4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP with Alt-Svc support
index f5db702f551a214581106f74c7ed6cb2c38b3516..b5764327c86ae7a639f6bb5087e382460f4a6c23 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP PUT upload with authentication using "any" method. libcurl picks the
 #include <curl/curl.h>
 
 #ifdef WIN32
-#  include <io.h>
-#  define READ_3RD_ARG unsigned int
+#  define FILENO(fp) _fileno(fp)
 #else
-#  include <unistd.h>
-#  define READ_3RD_ARG size_t
+#  define FILENO(fp) fileno(fp)
 #endif
 
 #if LIBCURL_VERSION_NUM < 0x070c03
  * type. It PUTs a file given as a command line argument to the URL also given
  * on the command line.
  *
- * Since libcurl 7.12.3, using "any" auth and POST/PUT requires a set ioctl
+ * Since libcurl 7.12.3, using "any" auth and POST/PUT requires a set seek
  * function.
  *
  * This example also uses its own read callback.
  */
 
-/* ioctl callback function */
-static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
+/* seek callback function */
+static int my_seek(void *userp, curl_off_t offset, int origin)
 {
-  int *fdp = (int *)userp;
-  int fd = *fdp;
-
-  (void)handle; /* not used in here */
-
-  switch(cmd) {
-  case CURLIOCMD_RESTARTREAD:
-    /* mr libcurl kindly asks as to rewind the read data stream to start */
-    if(-1 == lseek(fd, 0, SEEK_SET))
-      /* couldn't rewind */
-      return CURLIOE_FAILRESTART;
+  FILE *fp = (FILE *) userp;
 
-    break;
+  if(-1 == fseek(fp, (long) offset, origin))
+    /* couldn't seek */
+    return CURL_SEEKFUNC_CANTSEEK;
 
-  default: /* ignore unknown commands */
-    return CURLIOE_UNKNOWNCMD;
-  }
-  return CURLIOE_OK; /* success! */
+  return CURL_SEEKFUNC_OK; /* success! */
 }
 
 /* read callback function, fread() look alike */
@@ -83,10 +72,7 @@ static size_t read_callback(char *ptr, size_t size, size_t nmemb, void *stream)
   ssize_t retcode;
   unsigned long nread;
 
-  int *fdp = (int *)stream;
-  int fd = *fdp;
-
-  retcode = read(fd, ptr, (READ_3RD_ARG)(size * nmemb));
+  retcode = fread(ptr, size, nmemb, stream);
 
   if(retcode > 0) {
     nread = (unsigned long)retcode;
@@ -100,7 +86,7 @@ int main(int argc, char **argv)
 {
   CURL *curl;
   CURLcode res;
-  int hd;
+  FILE *fp;
   struct stat file_info;
 
   char *file;
@@ -113,8 +99,8 @@ int main(int argc, char **argv)
   url = argv[2];
 
   /* get the file size of the local file */
-  hd = open(file, O_RDONLY);
-  fstat(hd, &file_info);
+  fp = fopen(file, "rb");
+  fstat(FILENO(fp), &file_info);
 
   /* In windows, this will init the winsock stuff */
   curl_global_init(CURL_GLOBAL_ALL);
@@ -126,13 +112,13 @@ int main(int argc, char **argv)
     curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
     /* which file to upload */
-    curl_easy_setopt(curl, CURLOPT_READDATA, (void *)&hd);
+    curl_easy_setopt(curl, CURLOPT_READDATA, (void *) fp);
 
-    /* set the ioctl function */
-    curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
+    /* set the seek function */
+    curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, my_seek);
 
-    /* pass the file descriptor to the ioctl callback as well */
-    curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void *)&hd);
+    /* pass the file descriptor to the seek callback as well */
+    curl_easy_setopt(curl, CURLOPT_SEEKDATA, (void *) fp);
 
     /* enable "uploading" (which means PUT when doing HTTP) */
     curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
@@ -164,7 +150,7 @@ int main(int argc, char **argv)
     /* always cleanup */
     curl_easy_cleanup(curl);
   }
-  close(hd); /* close the local file */
+  fclose(fp); /* close the local file */
 
   curl_global_cleanup();
   return 0;
index 880b7b1fdb2e4bfe19d1dfab8418efdf84626f29..a16d319d2daafe3d1d70a85339d4d00cdc4768bf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * CA cert in memory with OpenSSL to get a HTTPS page.
index 6e622c46abd8c9f0b52c39fdc00aaf49dc2cd673..381ee51109efdd046c51208e6be0b1cbb3a4726a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Extract lots of TLS certificate info.
index 4c7136bf5ce7227c8de38ccf5ff45445e61f5f64..a467913a7b567f44239e1cd256d2eb44362d4bc6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Show transfer timing info after download completes.
@@ -35,7 +37,6 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <time.h>
 
 #include <curl/curl.h>
@@ -71,58 +72,66 @@ int main(int argc, char *argv[])
   if(argc > 1) {
     /* parse input parameters */
     for(argc--, argv++; *argv; argc--, argv++) {
-      if(strncasecmp(*argv, "-", 1) == 0) {
-        if(strncasecmp(*argv, "-H", 2) == 0) {
+      if(argv[0][0] == '-') {
+        switch(argv[0][1]) {
+        case 'h':
+        case 'H':
           fprintf(stderr,
                   "\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
                   appname);
           exit(1);
-        }
-        else if(strncasecmp(*argv, "-V", 2) == 0) {
+        case 'v':
+        case 'V':
           fprintf(stderr, "\r%s %s - %s\n",
                   appname, CHKSPEED_VERSION, curl_version());
           exit(1);
-        }
-        else if(strncasecmp(*argv, "-A", 2) == 0) {
+        case 'a':
+        case 'A':
           prtall = 1;
-        }
-        else if(strncasecmp(*argv, "-X", 2) == 0) {
+          break;
+        case 'x':
+        case 'X':
           prtsep = 1;
-        }
-        else if(strncasecmp(*argv, "-T", 2) == 0) {
+          break;
+        case 't':
+        case 'T':
           prttime = 1;
-        }
-        else if(strncasecmp(*argv, "-M=", 3) == 0) {
-          long m = strtol((*argv) + 3, NULL, 10);
-          switch(m) {
-          case 1:
-            url = URL_1M;
-            break;
-          case 2:
-            url = URL_2M;
+          break;
+        case 'm':
+        case 'M':
+          if(argv[0][2] == '=') {
+            long m = strtol((*argv) + 3, NULL, 10);
+            switch(m) {
+            case 1:
+              url = URL_1M;
+              break;
+            case 2:
+              url = URL_2M;
+              break;
+            case 5:
+              url = URL_5M;
+              break;
+            case 10:
+              url = URL_10M;
+              break;
+            case 20:
+              url = URL_20M;
+              break;
+            case 50:
+              url = URL_50M;
+              break;
+            case 100:
+              url = URL_100M;
+              break;
+            default:
+              fprintf(stderr, "\r%s: invalid parameter %s\n",
+                      appname, *argv + 3);
+              exit(1);
+            }
             break;
-          case 5:
-            url = URL_5M;
-            break;
-          case 10:
-            url = URL_10M;
-            break;
-          case 20:
-            url = URL_20M;
-            break;
-          case 50:
-            url = URL_50M;
-            break;
-          case 100:
-            url = URL_100M;
-            break;
-          default:
-            fprintf(stderr, "\r%s: invalid parameter %s\n",
-                    appname, *argv + 3);
-            exit(1);
           }
-        }
-        else {
+          /* FALLTHROUGH */
+        default:
           fprintf(stderr, "\r%s: invalid or unknown option %s\n",
                   appname, *argv);
           exit(1);
index 9168247cf09f6dc341d16bd31daee662886f3aea..62e9dd798a5f1dd818fe4446de6e63c95516ca51 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Import and export cookies with COOKIELIST.
index 59de99d7a8e716dd69ce15a3189389c87d175489..1859c274e545241b3ccb604590c26e8d21cf15df 100644 (file)
@@ -5,9 +5,20 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Web crawler based on curl and libxml2.
- * Copyright (C) 2018 - 2020 Jeroen Ooms <jeroenooms@gmail.com>
- * License: MIT
+ * Copyright (C) 2018 - 2022 Jeroen Ooms <jeroenooms@gmail.com>
+ *
+ * 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
  *
  * To compile:
  *   gcc crawler.c $(pkg-config --cflags --libs libxml-2.0 libcurl)
index c14e4823e8ad35e219eb886b4a9d13dcd169d819..756894121e4b6d6219a90d0184b6e057e499a1de 100644 (file)
@@ -1,12 +1,26 @@
-/*****************************************************************************
+/***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
  *                             / __| | | | |_) | |
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (c) 2000 - 2021 David Odin (aka DindinX) for MandrakeSoft
- */
+ * Copyright (c) 2000 - 2022 David Odin (aka DindinX) for MandrakeSoft
+ *
+ * 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 the libcurl in a gtk-threaded application
  * </DESC>
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
deleted file mode 100644 (file)
index 3e3e353..0000000
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
-  curlx.c  Authors: Peter Sylvester, Jean-Paul Merlin
-
-  This is a little program to demonstrate the usage of
-
-  - an ssl initialisation callback setting a user key and trustbases
-  coming from a pkcs12 file
-  - using an ssl application callback to find a URI in the
-  certificate presented during ssl session establishment.
-
-*/
-/* <DESC>
- * demonstrates use of SSL context callback, requires OpenSSL
- * </DESC>
- */
-
-/*
- * Copyright (c) 2003 - 2021 The OpenEvidence Project.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions, the following disclaimer,
- *    and the original OpenSSL and SSLeay Licences below.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions, the following disclaimer
- *    and the original OpenSSL and SSLeay Licences below in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgments:
- *    "This product includes software developed by the Openevidence Project
- *    for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
- *    This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (https://www.openssl.org/)"
- *    This product includes cryptographic software written by Eric Young
- *    (eay@cryptsoft.com).  This product includes software written by Tim
- *    Hudson (tjh@cryptsoft.com)."
- *
- * 4. The names "OpenEvidence Toolkit" and "OpenEvidence Project" must not be
- *    used to endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    openevidence-core@openevidence.org.
- *
- * 5. Products derived from this software may not be called "OpenEvidence"
- *    nor may "OpenEvidence" appear in their names without prior written
- *    permission of the OpenEvidence Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgments:
- *    "This product includes software developed by the OpenEvidence Project
- *    for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
- *    This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (https://www.openssl.org/)"
- *    This product includes cryptographic software written by Eric Young
- *    (eay@cryptsoft.com).  This product includes software written by Tim
- *    Hudson (tjh@cryptsoft.com)."
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenEvidence PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenEvidence PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (https://www.openssl.org/)
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com).  This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <curl/curl.h>
-#include <openssl/x509v3.h>
-#include <openssl/x509_vfy.h>
-#include <openssl/crypto.h>
-#include <openssl/lhash.h>
-#include <openssl/objects.h>
-#include <openssl/err.h>
-#include <openssl/evp.h>
-#include <openssl/x509.h>
-#include <openssl/pkcs12.h>
-#include <openssl/bio.h>
-#include <openssl/ssl.h>
-
-static const char *curlx_usage[]={
-  "usage: curlx args\n",
-  " -p12 arg         - tia  file ",
-  " -envpass arg     - environment variable which content the tia private"
-  " key password",
-  " -out arg         - output file (response)- default stdout",
-  " -in arg          - input file (request)- default stdin",
-  " -connect arg     - URL of the server for the connection ex:"
-  " www.openevidence.org",
-  " -mimetype arg    - MIME type for data in ex : application/timestamp-query"
-  " or application/dvcs -default application/timestamp-query",
-  " -acceptmime arg  - MIME type acceptable for the response ex : "
-  "application/timestamp-response or application/dvcs -default none",
-  " -accesstype arg  - an Object identifier in an AIA/SIA method, e.g."
-  " AD_DVCS or ad_timestamping",
-  NULL
-};
-
-/*
-
-./curlx -p12 psy.p12 -envpass XX -in request -verbose -accesstype AD_DVCS
--mimetype application/dvcs -acceptmime application/dvcs -out response
-
-*/
-
-/*
- * We use this ZERO_NULL to avoid picky compiler warnings,
- * when assigning a NULL pointer to a function pointer var.
- */
-
-#define ZERO_NULL 0
-
-/* This is a context that we pass to all callbacks */
-
-typedef struct sslctxparm_st {
-  unsigned char *p12file;
-  const char *pst;
-  PKCS12 *p12;
-  EVP_PKEY *pkey;
-  X509 *usercert;
-  STACK_OF(X509) * ca;
-  CURL *curl;
-  BIO *errorbio;
-  int accesstype;
-  int verbose;
-
-} sslctxparm;
-
-/* some helper function. */
-
-static char *ia5string(ASN1_IA5STRING *ia5)
-{
-  char *tmp;
-  if(!ia5 || !ia5->length)
-    return NULL;
-  tmp = OPENSSL_malloc(ia5->length + 1);
-  memcpy(tmp, ia5->data, ia5->length);
-  tmp[ia5->length] = 0;
-  return tmp;
-}
-
-/* A convenience routine to get an access URI. */
-static unsigned char *my_get_ext(X509 *cert, const int type,
-                                 int extensiontype)
-{
-  int i;
-  STACK_OF(ACCESS_DESCRIPTION) * accessinfo;
-  accessinfo =  X509_get_ext_d2i(cert, extensiontype, NULL, NULL);
-
-  if(!sk_ACCESS_DESCRIPTION_num(accessinfo))
-    return NULL;
-  for(i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
-    ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
-    if(OBJ_obj2nid(ad->method) == type) {
-      if(ad->location->type == GEN_URI) {
-        return ia5string(ad->location->d.ia5);
-      }
-      return NULL;
-    }
-  }
-  return NULL;
-}
-
-/* This is an application verification call back, it does not
-   perform any addition verification but tries to find a URL
-   in the presented certificate. If found, this will become
-   the URL to be used in the POST.
-*/
-
-static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
-{
-  sslctxparm * p = (sslctxparm *) arg;
-  int ok;
-
-  if(p->verbose > 2)
-    BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
-
-  ok = X509_verify_cert(ctx);
-  if(ok && ctx->cert) {
-    unsigned char *accessinfo;
-    if(p->verbose > 1)
-      X509_print_ex(p->errorbio, ctx->cert, 0, 0);
-
-    accessinfo = my_get_ext(ctx->cert, p->accesstype, NID_sinfo_access);
-    if(accessinfo) {
-      if(p->verbose)
-        BIO_printf(p->errorbio, "Setting URL from SIA to: %s\n", accessinfo);
-
-      curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
-    }
-    else if(accessinfo = my_get_ext(ctx->cert, p->accesstype,
-                                    NID_info_access)) {
-      if(p->verbose)
-        BIO_printf(p->errorbio, "Setting URL from AIA to: %s\n", accessinfo);
-
-      curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
-    }
-  }
-  if(p->verbose > 2)
-    BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with %d\n", ok);
-
-  return ok;
-}
-
-
-/* The SSL initialisation callback. The callback sets:
-   - a private key and certificate
-   - a trusted ca certificate
-   - a preferred cipherlist
-   - an application verification callback (the function above)
-*/
-
-static CURLcode sslctxfun(CURL *curl, void *sslctx, void *parm)
-{
-  sslctxparm *p = (sslctxparm *) parm;
-  SSL_CTX *ctx = (SSL_CTX *) sslctx;
-
-  if(!SSL_CTX_use_certificate(ctx, p->usercert)) {
-    BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n");
-    goto err;
-  }
-  if(!SSL_CTX_use_PrivateKey(ctx, p->pkey)) {
-    BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n");
-    goto err;
-  }
-
-  if(!SSL_CTX_check_private_key(ctx)) {
-    BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n");
-    goto err;
-  }
-
-  SSL_CTX_set_quiet_shutdown(ctx, 1);
-  SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
-  SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
-
-  X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx),
-                      sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
-
-  SSL_CTX_set_verify_depth(ctx, 2);
-  SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, ZERO_NULL);
-  SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);
-
-  return CURLE_OK;
-  err:
-  ERR_print_errors(p->errorbio);
-  return CURLE_SSL_CERTPROBLEM;
-
-}
-
-int main(int argc, char **argv)
-{
-  BIO* in = NULL;
-  BIO* out = NULL;
-
-  char *outfile = NULL;
-  char *infile = NULL;
-
-  int tabLength = 100;
-  char *binaryptr;
-  char *mimetype = NULL;
-  char *mimetypeaccept = NULL;
-  char *contenttype;
-  const char **pp;
-  unsigned char *hostporturl = NULL;
-  BIO *p12bio;
-  char **args = argv + 1;
-  unsigned char *serverurl;
-  sslctxparm p;
-  char *response;
-
-  CURLcode res;
-  struct curl_slist *headers = NULL;
-  int badarg = 0;
-
-  binaryptr = malloc(tabLength);
-
-  memset(&p, '\0', sizeof(p));
-  p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
-
-  curl_global_init(CURL_GLOBAL_DEFAULT);
-
-  /* we need some more for the P12 decoding */
-
-  OpenSSL_add_all_ciphers();
-  OpenSSL_add_all_digests();
-  ERR_load_crypto_strings();
-
-  while(*args && *args[0] == '-') {
-    if(!strcmp (*args, "-in")) {
-      if(args[1]) {
-        infile = *(++args);
-      }
-      else
-        badarg = 1;
-    }
-    else if(!strcmp (*args, "-out")) {
-      if(args[1]) {
-        outfile = *(++args);
-      }
-      else
-        badarg = 1;
-    }
-    else if(!strcmp (*args, "-p12")) {
-      if(args[1]) {
-        p.p12file = *(++args);
-      }
-      else
-        badarg = 1;
-    }
-    else if(strcmp(*args, "-envpass") == 0) {
-      if(args[1]) {
-        p.pst = getenv(*(++args));
-      }
-      else
-        badarg = 1;
-    }
-    else if(strcmp(*args, "-connect") == 0) {
-      if(args[1]) {
-        hostporturl = *(++args);
-      }
-      else
-        badarg = 1;
-    }
-    else if(strcmp(*args, "-mimetype") == 0) {
-      if(args[1]) {
-        mimetype = *(++args);
-      }
-      else
-        badarg = 1;
-    }
-    else if(strcmp(*args, "-acceptmime") == 0) {
-      if(args[1]) {
-        mimetypeaccept = *(++args);
-      }
-      else
-        badarg = 1;
-    }
-    else if(strcmp(*args, "-accesstype") == 0) {
-      if(args[1]) {
-        p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0));
-        if(p.accesstype == 0)
-          badarg = 1;
-      }
-      else
-        badarg = 1;
-    }
-    else if(strcmp(*args, "-verbose") == 0) {
-      p.verbose++;
-    }
-    else
-      badarg = 1;
-    args++;
-  }
-
-  if(!mimetype || !mimetypeaccept || !p.p12file)
-    badarg = 1;
-
-  if(badarg) {
-    for(pp = curlx_usage; (*pp != NULL); pp++)
-      BIO_printf(p.errorbio, "%s\n", *pp);
-    BIO_printf(p.errorbio, "\n");
-    goto err;
-  }
-
-  /* set input */
-
-  in = BIO_new(BIO_s_file());
-  if(!in) {
-    BIO_printf(p.errorbio, "Error setting input bio\n");
-    goto err;
-  }
-  else if(!infile)
-    BIO_set_fp(in, stdin, BIO_NOCLOSE|BIO_FP_TEXT);
-  else if(BIO_read_filename(in, infile) <= 0) {
-    BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
-    BIO_free(in);
-    goto err;
-  }
-
-  /* set output  */
-
-  out = BIO_new(BIO_s_file());
-  if(!out) {
-    BIO_printf(p.errorbio, "Error setting output bio.\n");
-    goto err;
-  }
-  else if(!outfile)
-    BIO_set_fp(out, stdout, BIO_NOCLOSE|BIO_FP_TEXT);
-  else if(BIO_write_filename(out, outfile) <= 0) {
-    BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
-    BIO_free(out);
-    goto err;
-  }
-
-
-  p.errorbio = BIO_new_fp(stderr, BIO_NOCLOSE);
-
-  p.curl = curl_easy_init();
-  if(!p.curl) {
-    BIO_printf(p.errorbio, "Cannot init curl lib\n");
-    goto err;
-  }
-
-  p12bio = BIO_new_file(p.p12file, "rb");
-  if(!p12bio) {
-    BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file);
-    goto err;
-  }
-  p.p12 = d2i_PKCS12_bio(p12bio, NULL);
-  if(!p.p12) {
-    BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file);
-    goto err;
-  }
-
-  p.ca = NULL;
-  if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
-    BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
-    goto err;
-  }
-
-  if(sk_X509_num(p.ca) <= 0) {
-    BIO_printf(p.errorbio, "No trustworthy CA given.%s\n", p.p12file);
-    goto err;
-  }
-
-  if(p.verbose > 1)
-    X509_print_ex(p.errorbio, p.usercert, 0, 0);
-
-  /* determine URL to go */
-
-  if(hostporturl) {
-    size_t len = strlen(hostporturl) + 9;
-    serverurl = malloc(len);
-    snprintf(serverurl, len, "https://%s", hostporturl);
-  }
-  else if(p.accesstype) { /* see whether we can find an AIA or SIA for a
-                             given access type */
-    serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access);
-    if(!serverurl) {
-      int j = 0;
-      BIO_printf(p.errorbio, "no service URL in user cert "
-                 "searching in others certificates\n");
-      for(j = 0; j<sk_X509_num(p.ca); j++) {
-        serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
-                               NID_info_access);
-        if(serverurl)
-          break;
-        serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
-                               NID_sinfo_access);
-        if(serverurl)
-          break;
-      }
-    }
-  }
-
-  if(!serverurl) {
-    BIO_printf(p.errorbio, "no service URL in certificates,"
-               " check '-accesstype (AD_DVCS | ad_timestamping)'"
-               " or use '-connect'\n");
-    goto err;
-  }
-
-  if(p.verbose)
-    BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
-
-  curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);
-
-  /* Now specify the POST binary data */
-
-  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
-  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
-
-  /* pass our list of custom made headers */
-
-  contenttype = malloc(15 + strlen(mimetype));
-  snprintf(contenttype, 15 + strlen(mimetype), "Content-type: %s", mimetype);
-  headers = curl_slist_append(headers, contenttype);
-  curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
-
-  if(p.verbose)
-    BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
-
-  {
-    FILE *outfp;
-    BIO_get_fp(out, &outfp);
-    curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
-  }
-
-  res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun);
-
-  if(res != CURLE_OK)
-    BIO_printf(p.errorbio, "%d %s=%d %d\n", __LINE__,
-               "CURLOPT_SSL_CTX_FUNCTION", CURLOPT_SSL_CTX_FUNCTION, res);
-
-  curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
-
-  {
-    char *ptr;
-    int lu; int i = 0;
-    while((lu = BIO_read(in, &binaryptr[i], tabLength-i)) >0) {
-      i += lu;
-      if(i == tabLength) {
-        tabLength += 100;
-        ptr = realloc(binaryptr, tabLength); /* should be more careful */
-        if(!ptr) {
-          /* out of memory */
-          BIO_printf(p.errorbio, "out of memory (realloc returned NULL)\n");
-          goto fail;
-        }
-        binaryptr = ptr;
-        ptr = NULL;
-      }
-    }
-    tabLength = i;
-  }
-  /* Now specify the POST binary data */
-
-  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
-  curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
-
-
-  /* Perform the request, res will get the return code */
-
-  BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
-             res = curl_easy_perform(p.curl));
-  {
-    curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
-    if(mimetypeaccept && p.verbose) {
-      if(!strcmp(mimetypeaccept, response))
-        BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
-                   response);
-      else
-        BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
-                   "mime type, it is %s instead of %s\n",
-                   response, mimetypeaccept);
-    }
-  }
-
-  /*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
-
-/* free the header list*/
-fail:
-  curl_slist_free_all(headers);
-
-  /* always cleanup */
-  curl_easy_cleanup(p.curl);
-
-  BIO_free(in);
-  BIO_free(out);
-  return (EXIT_SUCCESS);
-
-  err: BIO_printf(p.errorbio, "error");
-  exit(1);
-}
index 87492aa380794fd237587bf3ea2643509fa6a2a5..aeef8290a8bf1729c6081f3f80489578db4f708c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Show how CURLOPT_DEBUGFUNCTION can be used.
index af13169f30f3f629e409484dac0c33338fa64630..7079846fd7a8a5baf80e7e4b8ce980a4309f1530 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * multi socket API usage with epoll and timerfd
index 07cfada43b1185493086a738981bedb30ee9aa21..3c9ca57ddfc5035359cf3121d07c23d454188f6d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * multi socket interface together with libev
index 292a5962156718510681dc550e74d4610543313e..dfdd1c27593115d6a0772c3b2bac2cdb24450cfc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * An example demonstrating how an application can pass in a custom
index 81914b2c97a6870c12cfb6e4b5deae05d6a1e232..8d3e6cdf85f527deb61b589a7252a21506c29ba4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Upload to a file:// URL
diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c
deleted file mode 100644 (file)
index 02ab119..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-/*****************************************************************************
- *
- * This example source code introduces a c library buffered I/O interface to
- * URL reads it supports fopen(), fread(), fgets(), feof(), fclose(),
- * rewind(). Supported functions have identical prototypes to their normal c
- * lib namesakes and are preceaded by url_ .
- *
- * Using this code you can replace your program's fopen() with url_fopen()
- * and fread() with url_fread() and it become possible to read remote streams
- * instead of (only) local files. Local files (ie those that can be directly
- * fopened) will drop back to using the underlying clib implementations
- *
- * See the main() function at the bottom that shows an app that retrieves from
- * a specified url using fgets() and fread() and saves as two output files.
- *
- * Copyright (c) 2003 - 2021 Simtec Electronics
- *
- * Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
- * reference to original curl example code
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This example requires libcurl 7.9.7 or later.
- */
-/* <DESC>
- * implements an fopen() abstraction allowing reading from URLs
- * </DESC>
- */
-
-#include <stdio.h>
-#include <string.h>
-#ifndef WIN32
-#  include <sys/time.h>
-#endif
-#include <stdlib.h>
-#include <errno.h>
-
-#include <curl/curl.h>
-
-enum fcurl_type_e {
-  CFTYPE_NONE = 0,
-  CFTYPE_FILE = 1,
-  CFTYPE_CURL = 2
-};
-
-struct fcurl_data
-{
-  enum fcurl_type_e type;     /* type of handle */
-  union {
-    CURL *curl;
-    FILE *file;
-  } handle;                   /* handle */
-
-  char *buffer;               /* buffer to store cached data*/
-  size_t buffer_len;          /* currently allocated buffers length */
-  size_t buffer_pos;          /* end of data in buffer*/
-  int still_running;          /* Is background url fetch still in progress */
-};
-
-typedef struct fcurl_data URL_FILE;
-
-/* exported functions */
-URL_FILE *url_fopen(const char *url, const char *operation);
-int url_fclose(URL_FILE *file);
-int url_feof(URL_FILE *file);
-size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
-char *url_fgets(char *ptr, size_t size, URL_FILE *file);
-void url_rewind(URL_FILE *file);
-
-/* we use a global one for convenience */
-static CURLM *multi_handle;
-
-/* curl calls this routine to get more data */
-static size_t write_callback(char *buffer,
-                             size_t size,
-                             size_t nitems,
-                             void *userp)
-{
-  char *newbuff;
-  size_t rembuff;
-
-  URL_FILE *url = (URL_FILE *)userp;
-  size *= nitems;
-
-  rembuff = url->buffer_len - url->buffer_pos; /* remaining space in buffer */
-
-  if(size > rembuff) {
-    /* not enough space in buffer */
-    newbuff = realloc(url->buffer, url->buffer_len + (size - rembuff));
-    if(!newbuff) {
-      fprintf(stderr, "callback buffer grow failed\n");
-      size = rembuff;
-    }
-    else {
-      /* realloc succeeded increase buffer size*/
-      url->buffer_len += size - rembuff;
-      url->buffer = newbuff;
-    }
-  }
-
-  memcpy(&url->buffer[url->buffer_pos], buffer, size);
-  url->buffer_pos += size;
-
-  return size;
-}
-
-/* use to attempt to fill the read buffer up to requested number of bytes */
-static int fill_buffer(URL_FILE *file, size_t want)
-{
-  fd_set fdread;
-  fd_set fdwrite;
-  fd_set fdexcep;
-  struct timeval timeout;
-  int rc;
-  CURLMcode mc; /* curl_multi_fdset() return code */
-
-  /* only attempt to fill buffer if transactions still running and buffer
-   * does not exceed required size already
-   */
-  if((!file->still_running) || (file->buffer_pos > want))
-    return 0;
-
-  /* attempt to fill buffer */
-  do {
-    int maxfd = -1;
-    long curl_timeo = -1;
-
-    FD_ZERO(&fdread);
-    FD_ZERO(&fdwrite);
-    FD_ZERO(&fdexcep);
-
-    /* set a suitable timeout to fail on */
-    timeout.tv_sec = 60; /* 1 minute */
-    timeout.tv_usec = 0;
-
-    curl_multi_timeout(multi_handle, &curl_timeo);
-    if(curl_timeo >= 0) {
-      timeout.tv_sec = curl_timeo / 1000;
-      if(timeout.tv_sec > 1)
-        timeout.tv_sec = 1;
-      else
-        timeout.tv_usec = (curl_timeo % 1000) * 1000;
-    }
-
-    /* get file descriptors from the transfers */
-    mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
-
-    if(mc != CURLM_OK) {
-      fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
-      break;
-    }
-
-    /* On success the value of maxfd is guaranteed to be >= -1. We call
-       select(maxfd + 1, ...); specially in case of (maxfd == -1) there are
-       no fds ready yet so we call select(0, ...) --or Sleep() on Windows--
-       to sleep 100ms, which is the minimum suggested value in the
-       curl_multi_fdset() doc. */
-
-    if(maxfd == -1) {
-#ifdef _WIN32
-      Sleep(100);
-      rc = 0;
-#else
-      /* Portable sleep for platforms other than Windows. */
-      struct timeval wait = { 0, 100 * 1000 }; /* 100ms */
-      rc = select(0, NULL, NULL, NULL, &wait);
-#endif
-    }
-    else {
-      /* Note that on some platforms 'timeout' may be modified by select().
-         If you need access to the original value save a copy beforehand. */
-      rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &timeout);
-    }
-
-    switch(rc) {
-    case -1:
-      /* select error */
-      break;
-
-    case 0:
-    default:
-      /* timeout or readable/writable sockets */
-      curl_multi_perform(multi_handle, &file->still_running);
-      break;
-    }
-  } while(file->still_running && (file->buffer_pos < want));
-  return 1;
-}
-
-/* use to remove want bytes from the front of a files buffer */
-static int use_buffer(URL_FILE *file, size_t want)
-{
-  /* sort out buffer */
-  if(file->buffer_pos <= want) {
-    /* ditch buffer - write will recreate */
-    free(file->buffer);
-    file->buffer = NULL;
-    file->buffer_pos = 0;
-    file->buffer_len = 0;
-  }
-  else {
-    /* move rest down make it available for later */
-    memmove(file->buffer,
-            &file->buffer[want],
-            (file->buffer_pos - want));
-
-    file->buffer_pos -= want;
-  }
-  return 0;
-}
-
-URL_FILE *url_fopen(const char *url, const char *operation)
-{
-  /* this code could check for URLs or types in the 'url' and
-     basically use the real fopen() for standard files */
-
-  URL_FILE *file;
-  (void)operation;
-
-  file = calloc(1, sizeof(URL_FILE));
-  if(!file)
-    return NULL;
-
-  file->handle.file = fopen(url, operation);
-  if(file->handle.file)
-    file->type = CFTYPE_FILE; /* marked as URL */
-
-  else {
-    file->type = CFTYPE_CURL; /* marked as URL */
-    file->handle.curl = curl_easy_init();
-
-    curl_easy_setopt(file->handle.curl, CURLOPT_URL, url);
-    curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file);
-    curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, 0L);
-    curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback);
-
-    if(!multi_handle)
-      multi_handle = curl_multi_init();
-
-    curl_multi_add_handle(multi_handle, file->handle.curl);
-
-    /* lets start the fetch */
-    curl_multi_perform(multi_handle, &file->still_running);
-
-    if((file->buffer_pos == 0) && (!file->still_running)) {
-      /* if still_running is 0 now, we should return NULL */
-
-      /* make sure the easy handle is not in the multi handle anymore */
-      curl_multi_remove_handle(multi_handle, file->handle.curl);
-
-      /* cleanup */
-      curl_easy_cleanup(file->handle.curl);
-
-      free(file);
-
-      file = NULL;
-    }
-  }
-  return file;
-}
-
-int url_fclose(URL_FILE *file)
-{
-  int ret = 0;/* default is good return */
-
-  switch(file->type) {
-  case CFTYPE_FILE:
-    ret = fclose(file->handle.file); /* passthrough */
-    break;
-
-  case CFTYPE_CURL:
-    /* make sure the easy handle is not in the multi handle anymore */
-    curl_multi_remove_handle(multi_handle, file->handle.curl);
-
-    /* cleanup */
-    curl_easy_cleanup(file->handle.curl);
-    break;
-
-  default: /* unknown or supported type - oh dear */
-    ret = EOF;
-    errno = EBADF;
-    break;
-  }
-
-  free(file->buffer);/* free any allocated buffer space */
-  free(file);
-
-  return ret;
-}
-
-int url_feof(URL_FILE *file)
-{
-  int ret = 0;
-
-  switch(file->type) {
-  case CFTYPE_FILE:
-    ret = feof(file->handle.file);
-    break;
-
-  case CFTYPE_CURL:
-    if((file->buffer_pos == 0) && (!file->still_running))
-      ret = 1;
-    break;
-
-  default: /* unknown or supported type - oh dear */
-    ret = -1;
-    errno = EBADF;
-    break;
-  }
-  return ret;
-}
-
-size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
-{
-  size_t want;
-
-  switch(file->type) {
-  case CFTYPE_FILE:
-    want = fread(ptr, size, nmemb, file->handle.file);
-    break;
-
-  case CFTYPE_CURL:
-    want = nmemb * size;
-
-    fill_buffer(file, want);
-
-    /* check if there's data in the buffer - if not fill_buffer()
-     * either errored or EOF */
-    if(!file->buffer_pos)
-      return 0;
-
-    /* ensure only available data is considered */
-    if(file->buffer_pos < want)
-      want = file->buffer_pos;
-
-    /* xfer data to caller */
-    memcpy(ptr, file->buffer, want);
-
-    use_buffer(file, want);
-
-    want = want / size;     /* number of items */
-    break;
-
-  default: /* unknown or supported type - oh dear */
-    want = 0;
-    errno = EBADF;
-    break;
-
-  }
-  return want;
-}
-
-char *url_fgets(char *ptr, size_t size, URL_FILE *file)
-{
-  size_t want = size - 1;/* always need to leave room for zero termination */
-  size_t loop;
-
-  switch(file->type) {
-  case CFTYPE_FILE:
-    ptr = fgets(ptr, (int)size, file->handle.file);
-    break;
-
-  case CFTYPE_CURL:
-    fill_buffer(file, want);
-
-    /* check if there's data in the buffer - if not fill either errored or
-     * EOF */
-    if(!file->buffer_pos)
-      return NULL;
-
-    /* ensure only available data is considered */
-    if(file->buffer_pos < want)
-      want = file->buffer_pos;
-
-    /*buffer contains data */
-    /* look for newline or eof */
-    for(loop = 0; loop < want; loop++) {
-      if(file->buffer[loop] == '\n') {
-        want = loop + 1;/* include newline */
-        break;
-      }
-    }
-
-    /* xfer data to caller */
-    memcpy(ptr, file->buffer, want);
-    ptr[want] = 0;/* always null terminate */
-
-    use_buffer(file, want);
-
-    break;
-
-  default: /* unknown or supported type - oh dear */
-    ptr = NULL;
-    errno = EBADF;
-    break;
-  }
-
-  return ptr;/*success */
-}
-
-void url_rewind(URL_FILE *file)
-{
-  switch(file->type) {
-  case CFTYPE_FILE:
-    rewind(file->handle.file); /* passthrough */
-    break;
-
-  case CFTYPE_CURL:
-    /* halt transaction */
-    curl_multi_remove_handle(multi_handle, file->handle.curl);
-
-    /* restart */
-    curl_multi_add_handle(multi_handle, file->handle.curl);
-
-    /* ditch buffer - write will recreate - resets stream pos*/
-    free(file->buffer);
-    file->buffer = NULL;
-    file->buffer_pos = 0;
-    file->buffer_len = 0;
-
-    break;
-
-  default: /* unknown or supported type - oh dear */
-    break;
-  }
-}
-
-#define FGETSFILE "fgets.test"
-#define FREADFILE "fread.test"
-#define REWINDFILE "rewind.test"
-
-/* Small main program to retrieve from a url using fgets and fread saving the
- * output to two test files (note the fgets method will corrupt binary files if
- * they contain 0 chars */
-int main(int argc, char *argv[])
-{
-  URL_FILE *handle;
-  FILE *outf;
-
-  size_t nread;
-  char buffer[256];
-  const char *url;
-
-  if(argc < 2)
-    url = "http://192.168.7.3/testfile";/* default to testurl */
-  else
-    url = argv[1];/* use passed url */
-
-  /* copy from url line by line with fgets */
-  outf = fopen(FGETSFILE, "wb+");
-  if(!outf) {
-    perror("couldn't open fgets output file\n");
-    return 1;
-  }
-
-  handle = url_fopen(url, "r");
-  if(!handle) {
-    printf("couldn't url_fopen() %s\n", url);
-    fclose(outf);
-    return 2;
-  }
-
-  while(!url_feof(handle)) {
-    url_fgets(buffer, sizeof(buffer), handle);
-    fwrite(buffer, 1, strlen(buffer), outf);
-  }
-
-  url_fclose(handle);
-
-  fclose(outf);
-
-
-  /* Copy from url with fread */
-  outf = fopen(FREADFILE, "wb+");
-  if(!outf) {
-    perror("couldn't open fread output file\n");
-    return 1;
-  }
-
-  handle = url_fopen("testfile", "r");
-  if(!handle) {
-    printf("couldn't url_fopen() testfile\n");
-    fclose(outf);
-    return 2;
-  }
-
-  do {
-    nread = url_fread(buffer, 1, sizeof(buffer), handle);
-    fwrite(buffer, 1, nread, outf);
-  } while(nread);
-
-  url_fclose(handle);
-
-  fclose(outf);
-
-
-  /* Test rewind */
-  outf = fopen(REWINDFILE, "wb+");
-  if(!outf) {
-    perror("couldn't open fread output file\n");
-    return 1;
-  }
-
-  handle = url_fopen("testfile", "r");
-  if(!handle) {
-    printf("couldn't url_fopen() testfile\n");
-    fclose(outf);
-    return 2;
-  }
-
-  nread = url_fread(buffer, 1, sizeof(buffer), handle);
-  fwrite(buffer, 1, nread, outf);
-  url_rewind(handle);
-
-  buffer[0]='\n';
-  fwrite(buffer, 1, 1, outf);
-
-  nread = url_fread(buffer, 1, sizeof(buffer), handle);
-  fwrite(buffer, 1, nread, outf);
-
-  url_fclose(handle);
-
-  fclose(outf);
-
-  return 0;/* all done */
-}
index 14f5d5d3c31019642bab596b68f87d7ba8d299b2..9c1c913f1468bcba0fcdc0e3fb4070dd8dcc79ac 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * FTP wildcard pattern matching
@@ -77,7 +79,7 @@ int main(int argc, char **argv)
 
   /* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
 
-  /* set an URL containing wildcard pattern (only in the last part) */
+  /* set a URL containing wildcard pattern (only in the last part) */
   if(argc == 2)
     curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
   else
index ad9a383e7793ad25e34b14d767874bd65d4c19e7..3229dbf7b55607e6d15d73f68890d301f9b97043 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <stdio.h>
 
index 89ffe755a5c4fca8e3bf3559264fa8455da1cbaa..d95753d3e6a6b1dace07cb0e29927297f0655f6a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <stdio.h>
 #include <string.h>
@@ -44,7 +46,7 @@ int main(void)
   CURL *curl;
   CURLcode res;
   long filetime = -1;
-  double filesize = 0.0;
+  curl_off_t filesize = 0;
   const char *filename = strrchr(ftpurl, '/') + 1;
 
   curl_global_init(CURL_GLOBAL_DEFAULT);
@@ -70,10 +72,11 @@ int main(void)
         time_t file_time = (time_t)filetime;
         printf("filetime %s: %s", filename, ctime(&file_time));
       }
-      res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+      res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
                               &filesize);
-      if((CURLE_OK == res) && (filesize>0.0))
-        printf("filesize %s: %0.0f bytes\n", filename, filesize);
+      if((CURLE_OK == res) && (filesize>0))
+        printf("filesize %s: %" CURL_FORMAT_CURL_OFF_T " bytes\n",
+               filename, filesize);
     }
     else {
       /* we failed */
index 93945ed38ce5a55855efec2e6a40e8d971a4a783..1bee903db7603230d2bca47b8df6980f4a41cda9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <stdio.h>
 
index 9fcbceda80e750fd077124c4a9b1233b3195b89e..521ad5cb61589d923e1c6fbbbd4c065439fb4efe 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <stdio.h>
index 75356d86a3d68dfce59b324e0978d29e433c3d89..046166a43d2e2a9ba498eac2959b13ef15f74aaf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <stdio.h>
 #include <string.h>
index fbbc01b124976baf486a36c67f4c6ad7dddab705..b32020e809c36b49d4e322367c7ab6aea6605db7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * FTP upload a file from memory
index 50166bfef571a1663aeb8af2af2acfdc88565b2c..5014e3f2343fc1077e450b5b327bd5d05795a0ad 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Upload to FTP, resuming failed transfers.
@@ -84,7 +86,7 @@ static int upload(CURL *curlhandle, const char *remotepath,
   curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
 
   if(timeout)
-    curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
+    curl_easy_setopt(curlhandle, CURLOPT_SERVER_RESPONSE_TIMEOUT, timeout);
 
   curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
   curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);
index bd18384c0a1d9e28d84217a064105a6494c74f7c..d63b030aa448c97774e842d83c399e31e17692f5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Use getinfo to get content-type after completed transfer.
index fcb97eab019fe85b69f0067c2e0d881d9b98f3eb..085ece7b7e3dff523f0dd88f22d4e33143c1c605 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Shows how the write callback function can be used to download data into a
index 97da9431671a5838c8a6be32493a24996db07c40..85ea382b7f6e1272c3d7a6e97c462067bcf62bd7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Show how to extract Location: header and URL to redirect to.
index faefc619ab6de52532b7d5b288ef4962d741642f..d320c104d12404d636c245ff71d9ba2f41b3e673 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Show how to extract referrer header.
index 9ebc056fd0d695cb785088ff0374d9cc3a233f7e..e18ca6e5b8ebb321132a5a4f228cfd279ddac087 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * multi socket API usage together with with glib2
diff --git a/docs/examples/headerapi.c b/docs/examples/headerapi.c
new file mode 100644 (file)
index 0000000..58c8586
--- /dev/null
@@ -0,0 +1,81 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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>
+ * Extract headers post transfer with the header API
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
+{
+  /* take care of the data here, ignored in this example */
+  (void)data;
+  (void)userp;
+  return n*l;
+}
+
+int main(void)
+{
+  CURL *curl;
+
+  curl = curl_easy_init();
+  if(curl) {
+    CURLcode res;
+    struct curl_header *header;
+    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+    /* example.com is redirected, so we tell libcurl to follow redirection */
+    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+
+    /* this example just ignores the content */
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
+
+    /* 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));
+
+    if(CURLHE_OK == curl_easy_header(curl, "Content-Type", 0, CURLH_HEADER,
+                                     -1, &header))
+      printf("Got content-type: %s\n", header->value);
+
+    printf("All server headers:\n");
+    {
+      struct curl_header *h;
+      struct curl_header *prev = NULL;
+      do {
+        h = curl_easy_nextheader(curl, CURLH_HEADER, -1, prev);
+        if(h)
+          printf(" %s: %s (%u)\n", h->name, h->value, (int)h->amount);
+        prev = h;
+      } while(h);
+
+    }
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+  }
+  return 0;
+}
index 5af990071148653066d0e7a2dc770616db32e94b..ea0cdb18533335f22149414419a2719e90f09f76 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * multi socket API usage with libevent 2
index eb0c7297dd25d42e5a02b0ef0229bf02d7f61da2..b73157b8d3487393cb6473213e6e3c29c5d1ead1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 73ac6fb885f1ea05049489c401508eb84f0ac831..97e3eac731010f241c52336e1da9064f63bed8a1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Download a document and use libtidy to parse the HTML.
index 3baba6f64c9fb55d81fb753ba1c77bc200f5c6d0..b5c78f7969c1cfa03021c6870378a0f67758d2ae 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Get a web page, extract the title with libxml.
index 4807a731f2bf11d792e5b6d71dcf290a340a8df8..df0e5a7a40277ec03b5fe0fa4c680331c8cf2377 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * simple HTTP POST using the easy interface
index cb0ef13ac75945f7b2a515b3543f8c444072935d..e88f578cdf72e732c8e0d7efe04d929d8f41ace7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Multiplexed HTTP/2 downloads over a single connection
index a9c364859de38bbbfff85fc2c84b650250a95ae4..78273c9dbfd658633cac0dd397924c338f9b9a55 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP/2 server push. Receive all data in memory.
index b7c16371ad9322a256b00d87ef28b84b80fa7bac..f2793551667399faade39f844794f845b19d590f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP/2 server push
index 742177f69dc44370b50f609c9a9759eb938f03db..d0d54695eec9887c0fd86a2a7de23e587b633e7a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Multiplexed HTTP/2 uploads over a single connection
index f0dc7aa6c9f2754ff115004a9f3d13c0b906ad55..3e189203cd5f7a0195b3da6082caa32e07634e5e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Checks if HTTP/3 support is present in libcurl.
index 8553e3ac8f870809095a28f59ca5ad9e3c22eb7a..6463ccfd064d081a101153738c2a934ec5e49510 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Very simple HTTP/3 GET
index f431177f2d3db20e8b4128d0eee71439b64e027a..c72a474e0d093a14c4a02eb7e1edba96d9b90e20 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP request with custom modified, removed and added headers
index eb74eb9d780e44281bcd23507c1d6acda533bf0b..f8a5c43a68fed0431f3093a4043c4bbd58cabb36 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP PUT using CURLOPT_POSTFIELDS
@@ -35,8 +37,10 @@ static const char olivertwist[]=
   "small: to wit, a workhouse; and in this workhouse was born; on a day and "
   "date which I need not trouble myself to repeat, inasmuch as it can be of "
   "no possible consequence to the reader, in this stage of the business at "
-  "all events; the item of mortality whose name is prefixed to the head of "
-  "this chapter.";
+  "all events; the item of mortality whose name is prefixed";
+
+/* ... to the head of this chapter. String cut off to stick within the C90
+   509 byte limit. */
 
 /*
  * This example shows a HTTP PUT operation that sends a fixed buffer with
index 7fd027819572060c7b23b1ce44b116fbe9e1c504..00ad99cb7bae79380fa22f3f1650384a555de25c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP PUT with easy interface and read callback
index 675441a1776ad71f6b40e3e0e420f480f1fec252..7be330a8ea82e5eb04157ff6b2fe5d6edcea731b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Simple HTTPS GET
index 045f896b8b31358b04ce139afc15c9714a5bdb05..b66d8687edf3ec69bdc499dc7051984ee8e690aa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index cf8ea1084b54d08010ae41085441a26183427e84..62eca4a6850d6997d62bd8f97b083b69c7ccf38c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
@@ -45,7 +47,7 @@ int main(void)
     curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-    /* Set the authorisation identity (identity to act as) */
+    /* Set the authorization identity (identity to act as) */
     curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "shared-mailbox");
 
     /* Force PLAIN authentication */
index 08506c5521f1411dc53e7dc615d00b512ce7b2f2..81ec5be7096bfe42cd3e216eef7b54ca31129d3d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index edb7daa4ae4ea161d9d5a7ccd96653734f9dc46d..12e7113f3f6188d468226d7977e1d06e4e045b77 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 9eaf8d7265db6821ebfa7655d073176cb59bec30..467b06010d914dfa2e04bdf8a001f1cfbb5c6307 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 6bc1c94913d0dc11081aa28addb3c77842e60172..68cc636937553bdd72cd1bf28fb4f4b6b52549bc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index d8356e23ca36b2200b94cffac0e91dd31143484f..d6237c3860c00d4c3ceac2123c005379555c070e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 90b556d4713bc979807c48fbfd832814c1574287..85bddac07eaf07a40572fff44d3afdd84b6c598e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 0597edd7b6d2e635bb22cb43697603551392c949..1b22fa1e2d7349331c9fa7e5b42874244306f7a3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index d4ad958281076c49e6cbe0901b509a15dd24e540..3b5c633683d2ec3631e0dddf8c77a380cd369594 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 3cea5ca437b3e4eecd082a51168a0554641e9b6b..ee1a7772d99e279e1393136496c5a83c183eae65 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 2ef6941aae38b34b91c9a3680454af6d468dbbdb..7b175b27cf74985d21506580a1a926a9eb4c8bec 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index e43639e16583d93d169361b2b3ca154bd47cb9dd..5b0befbc211505e7a601985620fbe163ae6131e8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index fb45fc4036624f208cd39d9653c15089c2780051..6a4c756778a14021bf7f8fb6efe49b7096fcc176 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index d8b587d669ce60d3aaacce75fe039c31ff334650..dbebbc7227cc9580a1cb7fe281ccdf9de1ec6e34 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 3a1f05c0193e93c75dfd68c2269dc540f2ae1b46..9f0de669014180584f76e549249bea63baf3fd19 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 TOPDIR = ../..
index 58ad03f8160b9d044151ae62575021be6dce3543..813623865f26934971fa14a879f04a7bec0ebd99 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * A basic application source code using the multi interface doing two
@@ -104,11 +106,13 @@ int main(void)
     }
   }
 
-  curl_multi_cleanup(multi_handle);
-
-  /* Free the CURL handles */
-  for(i = 0; i<HANDLECOUNT; i++)
+  /* remove the transfers and cleanup the handles */
+  for(i = 0; i<HANDLECOUNT; i++) {
+    curl_multi_remove_handle(multi_handle, handles[i]);
     curl_easy_cleanup(handles[i]);
+  }
+
+  curl_multi_cleanup(multi_handle);
 
   return 0;
 }
index b173b724f54504592a701112bbaf4745fd1f74e4..16d5d56ca7718ba050cab5bff96140a49fd3c6b9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * multi interface and debug callback
index efcace0e74fa0f31b1b2de85cb954bff19b5b4e1..b9bba520d7ef122b2bbdb7f772a504bba7a94ea5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * multi interface code doing two parallel HTTP transfers
index 6da85134bd46651a5718fe9f00932ba45ca486e4..4f61f5e4bee5f14a2b6be332811553fcef14c7e7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index b9defd4529b85436c370be710035f212b164160c..e62de32ab58dbc930f6aa513bf9b47e25b7dfbe6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * using the multi interface to do a multipart formpost without blocking
  * </DESC>
  */
 
+/*
+ * Warning: this example uses the deprecated form api. See "multi-post.c"
+ *          for a similar example using the mime api.
+ */
+
 #include <stdio.h>
 #include <string.h>
 #include <sys/time.h>
@@ -47,14 +54,14 @@ int main(void)
   curl_formadd(&formpost,
                &lastptr,
                CURLFORM_COPYNAME, "sendfile",
-               CURLFORM_FILE, "postit2.c",
+               CURLFORM_FILE, "multi-formadd.c",
                CURLFORM_END);
 
   /* Fill in the filename field */
   curl_formadd(&formpost,
                &lastptr,
                CURLFORM_COPYNAME, "filename",
-               CURLFORM_COPYCONTENTS, "postit2.c",
+               CURLFORM_COPYCONTENTS, "multi-formadd.c",
                CURLFORM_END);
 
   /* Fill in the submit field too, even if this is rarely needed */
index 85ec55d0fb1a0b07b1999ad72eeeeb1dc58c9791..f9bc699dda3b36074219ae8c7697cac3b389838b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * A basic application source code using the multi interface doing two
index a7af0408ca22f151a7f0172d18221717e590f0a6..c141c68e91da40d821b43491949d913e5ca55405 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * using the multi interface to do a multipart formpost without blocking
index d7d1fb3ed0677e7715b86b7f824b3fb883d5128c..373ede34b14bb998a84267b030a1c81dd8f57c20 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * using the multi interface to do a single download
index f8985a8d717ab770d4451a471f38d685c9aba79b..fe7b357e818299b839868068c6cf50fe332a4357 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 003c312cdd4b0b8f6ec8511b5cf1470364512fe8..4f2c85574b470241fdf3e66cce6dafe1b167a091 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * A multi-threaded example that uses pthreads to fetch several files at once
index dac987ec63faae7c1ff2ebb4c8cb8ee1147546eb..a7de777ca289da0cc6b8661e1c2240e31cd228aa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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
index 0c84eeeb7b9840fcb726eba9490ad3c2b88212e2..d6682d70b299c5096e299da99121ea1dcdbe7db7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Basic URL API use.
index 390d7b19146c6a2a0a0b69da2116d1741432d33b..6ddfc40acf1132aa096cf132b0d26a356af5e72a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * re-using handles to do HTTP persistent connections
index f6b9fe87ae79901cc20ac641e17c97c8cbfe2204..8e0c2f2c6eb02e1980581269f3ece9c006aa08d1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
@@ -45,7 +47,7 @@ int main(void)
     curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
 
-    /* Set the authorisation identity (identity to act as) */
+    /* Set the authorization identity (identity to act as) */
     curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "shared-mailbox");
 
     /* Force PLAIN authentication */
index ff732d14c878619be6ee029a1c5166df77a78e29..d0281cb764125d1f1ffbbae24e55a4ee50cde5c3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 7ed072d5e23246ce54ed4af3aeb0065068801aeb..991ff24172fabcd1c2e9c03c8e32800a9055dceb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index c819aab0816177b44f9da0f8e1908735190ae30e..69a10885795b7a0ba5fbc361dd3defdb48e83dc2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index db385f2e46dbf3644cfe9e0501a08a119e2e80b5..a3ecb8821e1ecc2225d99c7f5e8a8b4f8b00bba2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 39b0e96a407edaff6d5d37ad0482203034106148..1df0657163f04536d09e808996bfd9f56bb21097 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index be492890c20b2072d123ec674951cf8a8e4a6f61..6f3455a699d2668cc8b4e3a405d2606534e0efc0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 7350dc964c38bde222db4d82f5b85eb4bc82d92b..3df35719d686f0085e32ffce9ad302d976a84820 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 496a3de2d6ccdeed386ceb2d48dc886d671744da..d58b5e49a8818e6611b941d20540cdcd0d20e880 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 696570b8d908a9579a7c22dc368c3271cada40a9..c63b43c73a147cdee1e07163f6643ff27c9e31b4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 3dc8a5a62abb8cfd6e2752d40af75e341588a9a9..308de3b441555ec57d8cbc4729e918117e4c05aa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index f9c8160365593460010800463caa7fd2951bcefb..dabcef0565769b9fb18054ac3db96fae446c52d4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 POST and provide the data through the read callback.
index d0f797042e6f49994d2dde55a01f08446d36159b..bbe145773b83f6cafca8f6de96c16d563f5c82bf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Make a HTTP POST with data from memory and receive response in memory.
index cef89f6c99b570ccbf2e215c83b9096049eaf469..502776960af59927fb71499a8a0fbb13ab7857f0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP Multipart formpost with file upload and two additional parts.
  * </DESC>
  */
-/* Example code that uploads a file name 'foo' to a remote script that accepts
+
+/*
+ * 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.
  *
+ * Warning: this example uses the deprecated form api. See "postit2.c"
+ *          for a similar example using the mime api.
+ *
  * The imaginary form we will fill in looks like:
  *
  * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
@@ -33,7 +40,6 @@
  * Enter file name: <input type="text" name="filename" size="30">
  * <input type="submit" value="send" name="submit">
  * </form>
- *
  */
 
 #include <stdio.h>
@@ -57,14 +63,14 @@ int main(int argc, char *argv[])
   curl_formadd(&formpost,
                &lastptr,
                CURLFORM_COPYNAME, "sendfile",
-               CURLFORM_FILE, "postit2.c",
+               CURLFORM_FILE, "postit2-formadd.c",
                CURLFORM_END);
 
   /* Fill in the filename field */
   curl_formadd(&formpost,
                &lastptr,
                CURLFORM_COPYNAME, "filename",
-               CURLFORM_COPYCONTENTS, "postit2.c",
+               CURLFORM_COPYCONTENTS, "postit2-formadd.c",
                CURLFORM_END);
 
 
index 923fead4af7e91e50fe4ed00fb520f38e3d225d5..5e9c609d3f7f82bd69021861a41aa05919144b60 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * HTTP Multipart formpost with file upload and two additional parts.
index 56889df668cef2b8213f2f6b5d600828e249fdbc..be32b67aa7b01c4755e8139bf4e4c6f3b8a99938 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Use the progress callbacks, old and/or new one depending on available
index 88e528568c4504e1cd83ace331272fd5d10b9595..40bdfb345be529b184ef3179a268caa0d922655e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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_RESOLVE to feed custom IP addresses for given host name + port
diff --git a/docs/examples/rtsp.c b/docs/examples/rtsp.c
deleted file mode 100644 (file)
index ca6bcfe..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Copyright (c) 2011 - 2021, Jim Hollinger
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *   * Neither the name of Jim Hollinger nor the names of its contributors
- *     may be used to endorse or promote products derived from this
- *     software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-/* <DESC>
- * A basic RTSP transfer
- * </DESC>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined (WIN32)
-#  include <conio.h>  /* _getch() */
-#else
-#  include <termios.h>
-#  include <unistd.h>
-
-static int _getch(void)
-{
-  struct termios oldt, newt;
-  int ch;
-  tcgetattr(STDIN_FILENO, &oldt);
-  newt = oldt;
-  newt.c_lflag &= ~( ICANON | ECHO);
-  tcsetattr(STDIN_FILENO, TCSANOW, &newt);
-  ch = getchar();
-  tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
-  return ch;
-}
-#endif
-
-#include <curl/curl.h>
-
-#define VERSION_STR  "V1.0"
-
-/* error handling macros */
-#define my_curl_easy_setopt(A, B, C)                               \
-  do {                                                             \
-    res = curl_easy_setopt((A), (B), (C));                         \
-    if(res != CURLE_OK)                                            \
-      fprintf(stderr, "curl_easy_setopt(%s, %s, %s) failed: %d\n", \
-              #A, #B, #C, res);                                    \
-  } while(0)
-
-#define my_curl_easy_perform(A)                                         \
-  do {                                                                  \
-    res = curl_easy_perform(A);                                         \
-    if(res != CURLE_OK)                                                 \
-      fprintf(stderr, "curl_easy_perform(%s) failed: %d\n", #A, res);   \
-  } while(0)
-
-/* send RTSP OPTIONS request */
-static void rtsp_options(CURL *curl, const char *uri)
-{
-  CURLcode res = CURLE_OK;
-  printf("\nRTSP: OPTIONS %s\n", uri);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_OPTIONS);
-  my_curl_easy_perform(curl);
-}
-
-
-/* send RTSP DESCRIBE request and write sdp response to a file */
-static void rtsp_describe(CURL *curl, const char *uri,
-                          const char *sdp_filename)
-{
-  CURLcode res = CURLE_OK;
-  FILE *sdp_fp = fopen(sdp_filename, "wb");
-  printf("\nRTSP: DESCRIBE %s\n", uri);
-  if(!sdp_fp) {
-    fprintf(stderr, "Could not open '%s' for writing\n", sdp_filename);
-    sdp_fp = stdout;
-  }
-  else {
-    printf("Writing SDP to '%s'\n", sdp_filename);
-  }
-  my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, sdp_fp);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_DESCRIBE);
-  my_curl_easy_perform(curl);
-  my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
-  if(sdp_fp != stdout) {
-    fclose(sdp_fp);
-  }
-}
-
-/* send RTSP SETUP request */
-static void rtsp_setup(CURL *curl, const char *uri, const char *transport)
-{
-  CURLcode res = CURLE_OK;
-  printf("\nRTSP: SETUP %s\n", uri);
-  printf("      TRANSPORT %s\n", transport);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_TRANSPORT, transport);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_SETUP);
-  my_curl_easy_perform(curl);
-}
-
-
-/* send RTSP PLAY request */
-static void rtsp_play(CURL *curl, const char *uri, const char *range)
-{
-  CURLcode res = CURLE_OK;
-  printf("\nRTSP: PLAY %s\n", uri);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_STREAM_URI, uri);
-  my_curl_easy_setopt(curl, CURLOPT_RANGE, range);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_PLAY);
-  my_curl_easy_perform(curl);
-
-  /* switch off using range again */
-  my_curl_easy_setopt(curl, CURLOPT_RANGE, NULL);
-}
-
-
-/* send RTSP TEARDOWN request */
-static void rtsp_teardown(CURL *curl, const char *uri)
-{
-  CURLcode res = CURLE_OK;
-  printf("\nRTSP: TEARDOWN %s\n", uri);
-  my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_TEARDOWN);
-  my_curl_easy_perform(curl);
-}
-
-
-/* convert url into an sdp filename */
-static void get_sdp_filename(const char *url, char *sdp_filename,
-                             size_t namelen)
-{
-  const char *s = strrchr(url, '/');
-  strcpy(sdp_filename, "video.sdp");
-  if(s) {
-    s++;
-    if(s[0] != '\0') {
-      snprintf(sdp_filename, namelen, "%s.sdp", s);
-    }
-  }
-}
-
-
-/* scan sdp file for media control attribute */
-static void get_media_control_attribute(const char *sdp_filename,
-                                        char *control)
-{
-  int max_len = 256;
-  char *s = malloc(max_len);
-  FILE *sdp_fp = fopen(sdp_filename, "rb");
-  control[0] = '\0';
-  if(sdp_fp) {
-    while(fgets(s, max_len - 2, sdp_fp)) {
-      sscanf(s, " a = control: %32s", control);
-    }
-    fclose(sdp_fp);
-  }
-  free(s);
-}
-
-
-/* main app */
-int main(int argc, char * const argv[])
-{
-#if 1
-  const char *transport = "RTP/AVP;unicast;client_port=1234-1235";  /* UDP */
-#else
-  /* TCP */
-  const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235";
-#endif
-  const char *range = "0.000-";
-  int rc = EXIT_SUCCESS;
-  char *base_name = NULL;
-
-  printf("\nRTSP request %s\n", VERSION_STR);
-  printf("    Project website: "
-    "https://github.com/BackupGGCode/rtsprequest\n");
-  printf("    Requires curl V7.20 or greater\n\n");
-
-  /* check command line */
-  if((argc != 2) && (argc != 3)) {
-    base_name = strrchr(argv[0], '/');
-    if(!base_name) {
-      base_name = strrchr(argv[0], '\\');
-    }
-    if(!base_name) {
-      base_name = argv[0];
-    }
-    else {
-      base_name++;
-    }
-    printf("Usage:   %s url [transport]\n", base_name);
-    printf("         url of video server\n");
-    printf("         transport (optional) specifier for media stream"
-           " protocol\n");
-    printf("         default transport: %s\n", transport);
-    printf("Example: %s rtsp://192.168.0.2/media/video1\n\n", base_name);
-    rc = EXIT_FAILURE;
-  }
-  else {
-    const char *url = argv[1];
-    char *uri = malloc(strlen(url) + 32);
-    char *sdp_filename = malloc(strlen(url) + 32);
-    char *control = malloc(strlen(url) + 32);
-    CURLcode res;
-    get_sdp_filename(url, sdp_filename, strlen(url) + 32);
-    if(argc == 3) {
-      transport = argv[2];
-    }
-
-    /* initialize curl */
-    res = curl_global_init(CURL_GLOBAL_ALL);
-    if(res == CURLE_OK) {
-      curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
-      CURL *curl;
-      fprintf(stderr, "    curl V%s loaded\n", data->version);
-
-      /* initialize this curl session */
-      curl = curl_easy_init();
-      if(curl) {
-        my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
-        my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
-        my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
-        my_curl_easy_setopt(curl, CURLOPT_URL, url);
-
-        /* request server options */
-        snprintf(uri, strlen(url) + 32, "%s", url);
-        rtsp_options(curl, uri);
-
-        /* request session description and write response to sdp file */
-        rtsp_describe(curl, uri, sdp_filename);
-
-        /* get media control attribute from sdp file */
-        get_media_control_attribute(sdp_filename, control);
-
-        /* setup media stream */
-        snprintf(uri, strlen(url) + 32, "%s/%s", url, control);
-        rtsp_setup(curl, uri, transport);
-
-        /* start playing media stream */
-        snprintf(uri, strlen(url) + 32, "%s/", url);
-        rtsp_play(curl, uri, range);
-        printf("Playing video, press any key to stop ...");
-        _getch();
-        printf("\n");
-
-        /* teardown session */
-        rtsp_teardown(curl, uri);
-
-        /* cleanup */
-        curl_easy_cleanup(curl);
-        curl = NULL;
-      }
-      else {
-        fprintf(stderr, "curl_easy_init() failed\n");
-      }
-      curl_global_cleanup();
-    }
-    else {
-      fprintf(stderr, "curl_global_init(%s) failed: %d\n",
-              "CURL_GLOBAL_ALL", res);
-    }
-    free(control);
-    free(sdp_filename);
-    free(uri);
-  }
-
-  return rc;
-}
diff --git a/docs/examples/sampleconv.c b/docs/examples/sampleconv.c
deleted file mode 100644 (file)
index 7aa169f..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-/* <DESC>
- * This is a simple example showing how a program on a non-ASCII platform
- * would invoke callbacks to do its own codeset conversions instead of
- * using the built-in iconv functions in libcurl.
- * </DESC>
- */
-/*
-
-   The IBM-1047 EBCDIC codeset is used for this example but the code
-   would be similar for other non-ASCII codesets.
-
-   Three callback functions are created below:
-        my_conv_from_ascii_to_ebcdic,
-        my_conv_from_ebcdic_to_ascii, and
-        my_conv_from_utf8_to_ebcdic
-
-   The "platform_xxx" calls represent platform-specific conversion routines.
-
- */
-
-#include <stdio.h>
-#include <curl/curl.h>
-
-static CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length)
-{
-  char *tempptrin, *tempptrout;
-  size_t bytes = length;
-  int rc;
-  tempptrin = tempptrout = buffer;
-  rc = platform_a2e(&tempptrin, &bytes, &tempptrout, &bytes);
-  if(rc == PLATFORM_CONV_OK) {
-    return CURLE_OK;
-  }
-  else {
-    return CURLE_CONV_FAILED;
-  }
-}
-
-static CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length)
-{
-  char *tempptrin, *tempptrout;
-  size_t bytes = length;
-  int rc;
-  tempptrin = tempptrout = buffer;
-  rc = platform_e2a(&tempptrin, &bytes, &tempptrout, &bytes);
-  if(rc == PLATFORM_CONV_OK) {
-    return CURLE_OK;
-  }
-  else {
-    return CURLE_CONV_FAILED;
-  }
-}
-
-static CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length)
-{
-  char *tempptrin, *tempptrout;
-  size_t bytes = length;
-  int rc;
-  tempptrin = tempptrout = buffer;
-  rc = platform_u2e(&tempptrin, &bytes, &tempptrout, &bytes);
-  if(rc == PLATFORM_CONV_OK) {
-    return CURLE_OK;
-  }
-  else {
-    return CURLE_CONV_FAILED;
-  }
-}
-
-int main(void)
-{
-  CURL *curl;
-
-  curl = curl_easy_init();
-  if(curl) {
-    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
-
-    /* use platform-specific functions for codeset conversions */
-    curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
-                     my_conv_from_ascii_to_ebcdic);
-    curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION,
-                     my_conv_from_ebcdic_to_ascii);
-    curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION,
-                     my_conv_from_utf8_to_ebcdic);
-
-    curl_easy_perform(curl);
-
-    /* always cleanup */
-    curl_easy_cleanup(curl);
-  }
-  return 0;
-}
index d8158466bb45acffab15d8eebb22b64943cee17a..7da740a095d3e6c63c763a86eac65d9493c5a5a5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * An example of curl_easy_send() and curl_easy_recv() usage.
index cf057069c0cae7777b2fdf07a83548b7af2f712e..a398d056888086486b02fc683099de3ac35df04f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Simple HTTP GET that stores the headers in a separate file
index 0d8d708075f0b3f4e32170d92ac8ff45a084c472..4a848b9fecdb9a32d9e179b3ebc843489774e4e9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Uses the CURLINFO_TLS_SESSION data.
index 3c74d2abc10c3e7b0278f59469eb7bd88c1c2707..05041b18b756a85356602b3804c72d01bd56d249 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Gets a file using an SFTP URL.
index 3ff58c4b19a1dedb1b8183464ed5b402c2ba5ed7..7c72e5d09223823e7d2ee177f34bafdeb403171a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Upload to SFTP, resuming a previously aborted transfer.
index 3c05c40d59bf3a3114a5278c125df11202128478..ac9eb549253a4f94cbbaad2b006b80c32c6e2a8a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Connection cache shared between easy handles with the share interface
index cf8dd3d49b5f59837f74165c12ca9feffca34051..38134c39408c604dd312e2217d77596897664a2f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Very simple HTTP GET
index 70252a41aa6048dfbfb08e075caa40c5dc0da1b0..95564d75fafa8515d3a9c08afd8765f9f551d0bf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Very simple HTTP POST
index f34ee47400a3472b8ff4bf1e1ab43105f42e9757..879672b3f4ffcbf199b0cbc0c9c0bbcd216b14bb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Shows HTTPS usage with client certs and optional ssl engine use.
index 231c0dd255aa223eeccb85382087367dc17c58eb..c9923746fdd9728ff517c1503e0485f7042b73e3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * A multi threaded application that uses a progress bar to show
index e3b95114b856415df336663b84112cac41bb88e2..d48a811c8cc54d08ef8709cf360dec6d774ed472 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
@@ -107,7 +109,7 @@ int main(void)
     curl_easy_setopt(curl, CURLOPT_USERNAME, "kurt");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "xipj3plmq");
 
-    /* Set the authorisation identity (identity to act as) */
+    /* Set the authorization identity (identity to act as) */
     curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID, "ursel");
 
     /* Force PLAIN authentication */
index f02b56d1d187276d24d5460879646c249363b6ad..6d9d4a4b8340675ffbd973a8d478284b29868eb7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index df50f80f6afc3f4d2c084a4552e27fd573395bdb..5f3fcfddb2ecb0399a2efde5ea3cf343f05d4776 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 91dfe0530767804aa9094f0ce7e41e37a93a45cc..ce95582b314702867e02b194a950672d6f7ce437 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 4ba7ecb609fbd884cb178bae20eb52eff033e88c..385827c0c8dd03e255e34095c04692d3370145e7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 099dedb6c2a5ef07606e93ad545e5e19ca785e86..70b204591705dd3551353d03214b6ac4f605fb6f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 41024b1dacf80ec9b27894d015e426c19988c1cd..e30f4788e299aa9269475af9040df6b40babeac8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index 3720351d315d7a9bb1ad2e282eddf7d3529d119c..e6815b6cb1501c369203cceebe01a7d2770f1aa3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* <DESC>
index f1f66d5276a3dbbeea373dfd9fc17f63c12a90bc..e07d1905e790bf52587aec21081c2cd167ee30f4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Shows HTTPS usage with client certs and optional ssl engine use.
index bdf047390d7c48791ed391d789f0569df163bcef..b617dd6ab6b3715615d3c0f7081c83f5157b77c3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Set your system time from a remote HTTP server's Date: header.
@@ -39,7 +41,7 @@
  *
  * Synchronising your computer clock via Internet time server usually relies
  * on DAYTIME, TIME, or NTP protocols. These protocols provide good accurate
- * time synchronisation but it does not work very well through a
+ * time synchronization but it does not work very well through a
  * firewall/proxy. Some adjustment has to be made to the firewall/proxy for
  * these protocols to work properly.
  *
index e594b813b0b9fb2cb11b54f035ee367f39c2bdd3..09292c49a041322119326563e2ff675d7301643a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Show the required mutex callback setups for GnuTLS and OpenSSL when using
index 949f8a13fb4ee42f215b009b1e10151253ff6e5d..c01bcf3e42b108cc7945ad63fa2e955a82368be5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Download a given URL into a local file named page.out.
index 0c67480a1bf8b5b003e564f93758e13a1cb864b0..11962abc59327830e136ce803f5cd0133b2fa1c2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Set working URL with CURLU *.
index a31cbfcec1b324ea6410c2f4e6de3036511b45e0..89a0c3c40d50b529fb13b4089036719dc00689f2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Use an in-memory user certificate and RSA key and retrieve an https page.
index 38f4ce82546bbb2c6b8de73d4b8f69940cbfc69e..aca37995a4d4395c09e292298e787f5210771afc 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # This script accepts a source file as input on the command line.
index 0a8bff3d5e8d68c77d03b2c1dff82bd58b99ec50..ae5963b95d359180a7f366c9319e8feb00edb11b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* <DESC>
  * Stream-parse a document using the streaming Expat parser.
index fcd6be44a4047e81e1895c79d89f5c2cf11a62f6..f03363327cf0a5930411742627a4b60858e91615 100644 (file)
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
 ABI - Application Binary Interface
 ==================================
 
@@ -20,11 +26,11 @@ ABI - Application Binary Interface
  we do not break the ABI so you can *always* upgrade to a later version without
  any loss or change in functionality.
 
-## Soname Bumps
+## SONAME Bumps
 
  Whenever there are changes done to the library that will cause an ABI
  breakage, that may require your application to get attention or possibly be
- changed to adhere to new things, we will bump the soname. Then the library
+ changed to adhere to new things, we will bump the SONAME. Then the library
  will get a different output name and thus can in fact be installed in
  parallel with an older installed lib (on most systems). Thus, old
  applications built against the previous ABI version will remain working and
@@ -33,8 +39,8 @@ ABI - Application Binary Interface
  During the first seven years of libcurl releases, there have only been four
  ABI breakages.
 
- We are determined to bump the SONAME as rarely as possible.  Ideally, we
never do it again.
+ We are determined to bump the SONAME as rarely as possible. Ideally, we never
+ do it again.
 
 ## Downgrades
 
@@ -44,11 +50,11 @@ ABI - Application Binary Interface
  that going backwards may get you in a situation where you pick a libcurl that
  does not support the options your application needs. Or possibly you even
  downgrade so far so you cross an ABI break border and thus a different
soname, and then your application may need to adapt to the modified ABI.
SONAME, and then your application may need to adapt to the modified ABI.
 
 ## History
 
- The previous major library soname number bumps (breaking backwards
+ The previous major library SONAME number bumps (breaking backwards
  compatibility) happened the following times:
 
  0 - libcurl 7.1,   August 2000
index 948a7212195097d0bea660ab478001b2ea319310..e90d9bbd5af6029a53483d17f8eb40860e9b4e11 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Load man_MANS from shared file
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
index 6905a7b24e8eac3b9f9465ff9303e39f8a18672a..aa0eda05a273fa241833437ae4d61fa3eae23db6 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 AUTOMAKE_OPTIONS = foreign no-dependencies
index 0189bc6525a2867969ef6b6877e91f164650f1e8..93e5067561db243a14b9290690ac324dd1372071 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #***************************************************************************
@@ -43,7 +45,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2008 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2008 - 2022, 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
@@ -56,6 +58,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # Shared between Makefile.am and CMakeLists.txt
@@ -136,15 +140,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = docs/libcurl
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -506,6 +508,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -523,6 +526,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -580,6 +584,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -598,12 +603,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -670,7 +676,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -683,7 +688,9 @@ man_MANS = \
  curl_easy_duphandle.3 \
  curl_easy_escape.3 \
  curl_easy_getinfo.3 \
+ curl_easy_header.3 \
  curl_easy_init.3 \
+ curl_easy_nextheader.3 \
  curl_easy_option_by_id.3 \
  curl_easy_option_by_name.3 \
  curl_easy_option_next.3 \
@@ -754,6 +761,9 @@ man_MANS = \
  curl_url_strerror.3 \
  curl_version.3 \
  curl_version_info.3 \
+ curl_ws_meta.3 \
+ curl_ws_recv.3 \
+ curl_ws_send.3 \
  libcurl-easy.3 \
  libcurl-env.3 \
  libcurl-errors.3 \
index 706d8b6baf46e0ec75cfcc9341b2c17d54f9121c..3e62ff0b04f9df4a60395ecd8abe77d4d395a03a 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2008 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2008 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # Shared between Makefile.am and CMakeLists.txt
@@ -27,7 +29,9 @@ man_MANS = \
  curl_easy_duphandle.3 \
  curl_easy_escape.3 \
  curl_easy_getinfo.3 \
+ curl_easy_header.3 \
  curl_easy_init.3 \
+ curl_easy_nextheader.3 \
  curl_easy_option_by_id.3 \
  curl_easy_option_by_name.3 \
  curl_easy_option_next.3 \
@@ -98,6 +102,9 @@ man_MANS = \
  curl_url_strerror.3 \
  curl_version.3 \
  curl_version_info.3 \
+ curl_ws_meta.3 \
+ curl_ws_recv.3 \
+ curl_ws_send.3 \
  libcurl-easy.3 \
  libcurl-env.3 \
  libcurl-errors.3 \
index 599c60c8f0e04dfea56a516c420bb068d8469b39..dec1f51ce1b9b7eb699b46c286c840c70aaf050b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_cleanup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_cleanup - End a libcurl easy handle
index 89cab565e9e687420ef0a6ddad28b1bb78c4705c..c0e0f498e60231b4c09d6ae1a014656d17807005 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_duphandle 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_duphandle 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_duphandle - Clone a libcurl session handle
index e1ff9714b6b4c2054967783671b5dc650976939c..0648cfdc6d09adeea3e2ed2ef80b34a76a854fe7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_escape 3 "December 06, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_escape 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_escape - URL encodes the given string
@@ -34,12 +36,16 @@ char *curl_easy_escape(CURL *curl, const char *string, int length);
 This function converts the given input \fIstring\fP to a URL encoded string
 and returns that as a new allocated string. All input characters that are not
 a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped"
-version (%NN where NN is a two-digit hexadecimal number).
+version (\fB%NN\fP where \fBNN\fP is a two-digit hexadecimal number).
 
 If \fIlength\fP is set to 0 (zero), \fIcurl_easy_escape(3)\fP uses strlen() on
 the input \fIstring\fP to find out the size. This function does not accept
 input strings longer than \fBCURL_MAX_INPUT_LENGTH\fP (8 MB).
 
+Since 7.82.0, the \fBcurl\fP parameter is ignored. Prior to that there was
+per-handle character conversion support for some very old operating systems
+such as TPF, but it was otherwise ignored.
+
 You must \fIcurl_free(3)\fP the returned string when you are done with it.
 .SH ENCODING
 libcurl is typically not aware of, nor does it care about, character
index 4cfc017bb2a857b2b295aed0501e23401bc18566..a053ff53becfc9397d1396a2c9b3bec89baa86af 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_getinfo 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_getinfo 3 "October 12, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_getinfo - extract information from a curl handle
@@ -202,7 +204,7 @@ See \fICURLINFO_LOCAL_PORT(3)\fP
 List of all known cookies.
 See \fICURLINFO_COOKIELIST(3)\fP
 .IP CURLINFO_LASTSOCKET
-Last socket used.
+(Deprecated) Last socket used.
 See \fICURLINFO_LASTSOCKET(3)\fP
 .IP CURLINFO_ACTIVESOCKET
 The session's active socket.
@@ -210,6 +212,12 @@ See \fICURLINFO_ACTIVESOCKET(3)\fP
 .IP CURLINFO_FTP_ENTRY_PATH
 The entry path after logging in to an FTP server.
 See \fICURLINFO_FTP_ENTRY_PATH(3)\fP
+.IP CURLINFO_CAPATH
+Get the default value for \fICURLOPT_CAPATH(3)\fP.
+See \fICURLINFO_CAPATH(3)\fP
+.IP CURLINFO_CAINFO
+Get the default value for \fICURLOPT_CAINFO(3)\fP.
+See \fICURLINFO_CAINFO(3)\fP
 .IP CURLINFO_CERTINFO
 Certificate chain.
 See \fICURLINFO_CERTINFO(3)\fP
@@ -236,7 +244,7 @@ See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP
 RTSP CSeq last received.
 See \fICURLINFO_RTSP_CSEQ_RECV(3)\fP
 .IP CURLINFO_PROTOCOL
-The protocol used for the connection. (Added in 7.52.0)
+(Deprecated) The protocol used for the connection. (Added in 7.52.0)
 See \fICURLINFO_PROTOCOL(3)\fP
 .IP CURLINFO_SCHEME
 The scheme used for the connection. (Added in 7.52.0)
diff --git a/docs/libcurl/curl_easy_header.3 b/docs/libcurl/curl_easy_header.3
new file mode 100644 (file)
index 0000000..35c59e6
--- /dev/null
@@ -0,0 +1,154 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_easy_header 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_easy_header - get an HTTP header
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLHcode curl_easy_header(CURL *easy,
+                           const char *name,
+                           size_t index,
+                           unsigned int origin,
+                           int request,
+                           struct curl_header **hout);
+.SH DESCRIPTION
+\fIcurl_easy_header(3)\fP returns a pointer to a "curl_header" struct in
+\fBhout\fP with data for the HTTP response header \fIname\fP. The case
+insensitive null-terminated header name should be specified without colon.
+
+\fIindex\fP 0 means asking for the first instance of the header. If the
+returned header struct has \fBamount\fP set larger than 1, it means there are
+more instances of the same header name available to get. Asking for a too big
+index makes \fBCURLHE_BADINDEX\fP get returned.
+
+The \fIorigin\fP argument is for specifying which headers to receive, as a
+single HTTP transfer might provide headers from several different places and
+they may then have different importance to the user and headers using the same
+name might be used. The \fIorigin\fP is a bitmask for what header sources you
+want. See the descriptions below.
+
+The \fIrequest\fP argument tells libcurl from which request you want headers
+from. A single transfer might consist of a series of HTTP requests and this
+argument lets you specify which particular individual request you want the
+headers from. 0 being the first request and then the number increases for
+further redirects or when multi-state authentication is used. Passing in -1 is
+a shortcut to "the last" request in the series, independently of the actual
+amount of requests used.
+
+libcurl stores and provides the actually used "correct" headers. If for
+example two headers with the same name arrive and the latter overrides the
+former, then only the latter will be provided. If the first header survives
+the second, then only the first one will be provided. An application using
+this API does not have to bother about multiple headers used wrongly.
+
+The memory for the returned struct is associated with the easy handle and
+subsequent calls to \fIcurl_easy_header(3)\fP will clobber the struct used in
+the previous calls for the same easy handle. Applications need to copy the
+data if it wants to keep it around. The memory used for the struct gets freed
+with calling \fIcurl_easy_cleanup(3)\fP of the easy handle.
+
+The first line in an HTTP response is called the status line. It is not
+considered a header by this function. Headers are the "name: value" lines
+following the status.
+
+This function can be used before (all) headers have been received and is fine
+to call from within libcurl callbacks. It will always return the state of the
+headers at the time it is called.
+.SH "The header struct"
+.nf
+struct curl_header {
+   char *name;
+   char *value;
+   size_t amount;
+   size_t index;
+   unsigned int origin;
+   void *anchor;
+};
+.fi
+
+The data \fBname\fP field points to, will be the same as the requested name
+but it might have a different case.
+
+The data \fBvalue\fP field points to, comes exactly as delivered over the
+network but with leading and trailing whitespace and newlines stripped
+off. The `value` data is null-terminated. For legacy HTTP/1 "folded headers",
+this API provides the full single value in an unfolded manner with a single
+whitespace between the lines.
+
+\fBamount\fP is how many headers using this name that exist, within the origin
+and request scope asked for.
+
+\fBindex\fP is the zero based entry number of this particular header, which in
+case this header was used more than once in the requested scope can be larger
+than 0 but is always less than \fBamount\fP.
+
+The \fBorigin\fP field in the "curl_header" struct has one of the origin bits
+set, indicating where from the header originates. At the time of this writing,
+there are 5 bits with defined use. The undocumented 27 remaining bits are
+reserved for future use and must not be assumed to have any particular value.
+
+\fBanchor\fP is a private handle used by libcurl internals. Do not modify.
+.SH ORIGINS
+.IP CURLH_HEADER
+The header arrived as a header from the server.
+.IP CURLH_TRAILER
+The header arrived as a trailer. A header that arrives after the body.
+.IP CURLH_CONNECT
+The header arrived in a CONNECT response. A CONNECT request is being done to
+setup a transfer "through" an HTTP(S) proxy.
+.IP CURLH_1XX
+The header arrived in an HTTP 1xx response. A 1xx response is an "intermediate"
+response that might happen before the "real" response.
+.IP CURLH_PSEUDO
+The header is an HTTP/2 or HTTP/3 pseudo header
+.SH EXAMPLE
+.nf
+struct curl_header *type;
+CURLHcode h =
+  curl_easy_header(easy, "Content-Type", 0, CURLH_HEADER, -1, &type);
+.fi
+.SH AVAILABILITY
+Added in 7.83.0. Officially supported since 7.84.0.
+.SH RETURN VALUE
+This function returns a CURLHcode indicating success or error.
+.IP "CURLHE_BADINDEX (1)"
+There is no header with the requested index.
+.IP "CURLHE_MISSING (2)"
+No such header exists.
+.IP "CURLHE_NOHEADERS (3)"
+No headers at all have been recorded.
+.IP "CURLHE_NOREQUEST (4)"
+There was no such request number.
+.IP "CURLHE_OUT_OF_MEMORY (5)"
+Out of resources
+.IP "CURLHE_BAD_ARGUMENT (6)"
+One or more of the given arguments are bad.
+.IP "CURLHE_NOT_BUILT_IN (7)"
+HTTP or the header API has been disabled in the build.
+.SH "SEE ALSO"
+.BR curl_easy_nextheader "(3), " curl_easy_perform "(3), "
+.BR CURLOPT_HEADERFUNCTION "(3), " CURLINFO_CONTENT_TYPE "(3) "
index e766ec0c7f6d3e06dc72e7c48eca5ad9b51370ec..7b63623443b06642480418ee197791f72ea811a7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_init 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_init 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_init - Start a libcurl easy session
diff --git a/docs/libcurl/curl_easy_nextheader.3 b/docs/libcurl/curl_easy_nextheader.3
new file mode 100644 (file)
index 0000000..d7ac7a2
--- /dev/null
@@ -0,0 +1,97 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_easy_nextheader 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_easy_nextheader - get the next HTTP header
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+struct curl_header *curl_easy_nextheader(CURL *easy,
+                                         unsigned int origin,
+                                         int request,
+                                         struct curl_header *prev);
+.fi
+.SH DESCRIPTION
+This function lets an application iterate over all previously received HTTP
+headers.
+
+The \fIorigin\fP argument is for specifying which headers to receive, as a
+single HTTP transfer might provide headers from several different places and
+they may then have different importance to the user and headers using the same
+name might be used. The \fIorigin\fP is a bitmask for what header sources you
+want. See the \fIcurl_easy_header(3)\fP man page for the origin descriptions.
+
+The \fIrequest\fP argument tells libcurl from which request you want headers
+from. A single transfer might consist of a series of HTTP requests and this
+argument lets you specify which particular individual request you want the
+headers from. 0 being the first request and then the number increases for
+further redirects or when multi-state authentication is used. Passing in -1 is
+a shortcut to "the last" request in the series, independently of the actual
+amount of requests used.
+
+It is suggested that you pass in the same \fBorigin\fP and \fBrequest\fP when
+iterating over a range of headers as changing the value mid-loop might give
+you unexpected results.
+
+If \fIprev\fP is NULL, this function returns a pointer to the first header
+stored within the given scope (origin + request).
+
+If \fIprev\fP is a pointer to a previously returned header struct,
+\fIcurl_easy_nextheader(3)\fP returns a pointer the next header stored within
+the given scope. This way, an application can iterate over all available
+headers.
+
+The memory for the struct this points to, is owned and managed by libcurl and
+is associated with the easy handle. Applications must copy the data if they
+want it to survive subsequent API calls or the life-time of the easy handle.
+.SH EXAMPLE
+.nf
+struct curl_header *prev = NULL;
+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);
+   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);
+   prev = h;
+}
+.fi
+.SH AVAILABILITY
+Added in 7.83.0. Officially supported since 7.84.0.
+.SH RETURN VALUE
+This function returns the next header, or NULL when there are no more
+(matching) headers or an error occurred.
+
+If this function returns NULL when \fIprev\fP was set to NULL, then there are
+no headers available within the scope to return.
+.SH "SEE ALSO"
+.BR curl_easy_header "(3), " curl_easy_perform "(3) "
index d2ae76aa56293c24a60dfa801d9438830beab46d..9951332c4b5d53709897984324d5f89bef177f39 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_option_by_id 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_option_by_id 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_option_by_id - find an easy setopt option by id
@@ -30,8 +32,8 @@ curl_easy_option_by_id - find an easy setopt option by id
 const struct curl_easyoption *curl_easy_option_by_id(CURLoption id);
 .fi
 .SH DESCRIPTION
-Given a CURLoption \fBid\fP, this function returns a pointer to the
-curl_easyoption struct, holding information about the
+Given a \fICURLoption\fP \fBid\fP, this function returns a pointer to the
+\fIcurl_easyoption\fP struct, holding information about the
 \fIcurl_easy_setopt(3)\fP option using that id. The option id is the CURLOPT_
 prefix ones provided in the standard curl/curl.h header file. This function
 will return the non-aliases version for the cases where there is an alias
@@ -48,7 +50,7 @@ if(opt) {
 .SH AVAILABILITY
 This function was added in libcurl 7.73.0
 .SH RETURN VALUE
-A pointer to the curl_easyoption struct for the option or NULL.
+A pointer to the \fIcurl_easyoption\fP struct for the option or NULL.
 .SH "SEE ALSO"
 .BR curl_easy_option_by_name "(3)," curl_easy_option_next "(3),"
 .BR curl_easy_setopt "(3),"
index e0378d4f1899bb2cba5f3f1223e2e4b71380bba9..66c08693b0591bb5f99cec04047d92fe8f63354b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_option_by_name 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_option_by_name 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_option_by_name - find an easy setopt option by name
@@ -30,10 +32,11 @@ curl_easy_option_by_name - find an easy setopt option by name
 const struct curl_easyoption *curl_easy_option_by_name(const char *name);
 .fi
 .SH DESCRIPTION
-Given a \fBname\fP, this function returns a pointer to the curl_easyoption
-struct, holding information about the \fIcurl_easy_setopt(3)\fP option using
-that name. The name should be specified without the "CURLOPT_" prefix and the
-name comparison is made case insensitive.
+Given a \fBname\fP, this function returns a pointer to the
+\fIcurl_easyoption\fP struct, holding information about the
+\fIcurl_easy_setopt(3)\fP option using that name. The name should be specified
+without the "CURLOPT_" prefix and the name comparison is made case
+insensitive.
 
 If libcurl has no option with the given name, this function returns NULL.
 .SH EXAMPLE
@@ -46,7 +49,7 @@ if(opt) {
 .SH AVAILABILITY
 This function was added in libcurl 7.73.0
 .SH RETURN VALUE
-A pointer to the curl_easyoption struct for the option or NULL.
+A pointer to the \fIcurl_easyoption\fP struct for the option or NULL.
 .SH "SEE ALSO"
 .BR curl_easy_option_next "(3)," curl_easy_option_by_id "(3),"
 .BR curl_easy_setopt "(3),"
index 3a5bb2a6aeacbc074cc381a460e35d2a2169f1d1..cea14a5b0a6d372a993b2e5ede624f05e0698a81 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_option_next 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_option_next 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_option_next - iterate over easy setopt options
@@ -32,7 +34,7 @@ typedef enum {
   CURLOT_VALUES,  /*      (a defined set or bitmask) */
   CURLOT_OFF_T,   /* curl_off_t (a range of values) */
   CURLOT_OBJECT,  /* pointer (void *) */
-  CURLOT_STRING,  /*         (char * to zero terminated buffer) */
+  CURLOT_STRING,  /*         (char * to null-terminated buffer) */
   CURLOT_SLIST,   /*         (struct curl_slist *) */
   CURLOT_CBPTR,   /*         (void * passed as-is to a callback) */
   CURLOT_BLOB,    /* blob (struct curl_blob *) */
@@ -52,7 +54,7 @@ const struct curl_easyoption *
 curl_easy_option_next(const struct curl_easyoption *prev);
 .fi
 .SH DESCRIPTION
-This function returns a pointer to the first or the next curl_easyoption
+This function returns a pointer to the first or the next \fIcurl_easyoption\fP
 struct, providing an ability to iterate over all known options for
 \fIcurl_easy_setopt(3)\fP in this instance of libcurl.
 
@@ -78,8 +80,8 @@ while(opt) {
 .SH AVAILABILITY
 This function was added in libcurl 7.73.0
 .SH RETURN VALUE
-A pointer to the curl_easyoption struct for the next option or NULL if no more
-options.
+A pointer to the \fIcurl_easyoption\fP struct for the next option or NULL if
+no more options.
 .SH "SEE ALSO"
 .BR curl_easy_option_by_name "(3)," curl_easy_option_by_id "(3),"
 .BR curl_easy_setopt "(3),"
index 6edea99f880c005996dede79d8699a21580aac10..eee478a093c17df2be023f6753d08813e4771c1f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_pause 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_pause 3 "September 05, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_pause - pause and unpause a connection
@@ -42,11 +44,13 @@ the transfer is unpaused.
 
 While it may feel tempting, take care and notice that you cannot call this
 function from another thread. To unpause, you may for example call it from the
-progress callback (\fICURLOPT_PROGRESSFUNCTION(3)\fP), which gets called at
-least once per second, even if the connection is paused.
+progress callback (\fICURLOPT_PROGRESSFUNCTION(3)\fP).
 
-When this function is called to unpause receiving, the chance is high that you
-will get your write callback called before this function returns.
+When this function is called to unpause receiving, the write callback might
+get called before this function returns to deliver cached content. When
+libcurl delivers such cached data to the write callback, it will be delivered
+as fast as possible, which may overstep the boundary set in
+\fICURLOPT_MAX_RECV_SPEED_LARGE(3)\fP etc.
 
 The \fBhandle\fP argument identifies the transfer you want to pause or
 unpause.
index 9999b816b3c69fb446d3f7ca6b6995379719b338..c6b3d76608aae7f484ffb03a423a1813b726fb6a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_perform 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_perform 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_perform - perform a blocking file transfer
@@ -73,7 +75,7 @@ if(curl) {
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
-CURLE_OK (0) means everything was ok, non-zero means an error occurred as
+CURLE_OK (0) means everything was OK, non-zero means an error occurred as
 .I <curl/curl.h>
 defines - see \fIlibcurl-errors(3)\fP. If the \fICURLOPT_ERRORBUFFER(3)\fP was
 set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in
index a7bc70e31dfa96e0ec18cc49866412d7401c761c..810faf515c0781f03b47a2b669d2b53e366b775f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_recv 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_recv 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_recv - receives raw data on an "easy" connection
@@ -35,7 +37,7 @@ This function receives raw data from the established connection. You may use
 it together with \fIcurl_easy_send(3)\fP to implement custom protocols using
 libcurl. This functionality can be particularly useful if you use proxies
 and/or SSL encryption: libcurl will take care of proxy negotiation and
-connection set-up.
+connection setup.
 
 \fBbuffer\fP is a pointer to your buffer that will get the received
 data. \fBbuflen\fP is the maximum amount of data you can get in that
index 29a3b7248b7715ae1f4ad96a8fc5d897f8f27604..85b11cf0bd45488a32b5ccc230fb57fa5d0ab860 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_reset 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_reset 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_reset - reset all options of a libcurl session handle
index 42eea4834f35d37ea6242e644904aa2195c03d9b..b7dd972513740fcfe5b74fccfc90d65b6df818db 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_send 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_send 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_send - sends raw data over an "easy" connection
@@ -36,7 +38,7 @@ This function sends arbitrary data over the established connection. You may
 use it together with \fIcurl_easy_recv(3)\fP to implement custom protocols
 using libcurl. This functionality can be particularly useful if you use
 proxies and/or SSL encryption: libcurl will take care of proxy negotiation and
-connection set-up.
+connection setup.
 
 \fBbuffer\fP is a pointer to the data of length \fBbuflen\fP that you want sent.
 The variable \fBn\fP points to will receive the number of sent bytes.
index fe113990b7bbd1ab1de6ce424b89a1ef781f97e9..b00079601e20e92d77a059978399c2cb0491d9ab 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_setopt 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_setopt 3 "October 12, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_setopt \- set options for a curl easy handle
@@ -82,9 +84,11 @@ Callback for reading data. See \fICURLOPT_READFUNCTION(3)\fP
 .IP CURLOPT_READDATA
 Data pointer to pass to the read callback. See \fICURLOPT_READDATA(3)\fP
 .IP CURLOPT_IOCTLFUNCTION
-Callback for I/O operations. See \fICURLOPT_IOCTLFUNCTION(3)\fP
+\fBDeprecated option\fP Callback for I/O operations.
+See \fICURLOPT_IOCTLFUNCTION(3)\fP
 .IP CURLOPT_IOCTLDATA
-Data pointer to pass to the I/O callback. See \fICURLOPT_IOCTLDATA(3)\fP
+\fBDeprecated option\fP Data pointer to pass to the I/O callback.
+See \fICURLOPT_IOCTLDATA(3)\fP
 .IP CURLOPT_SEEKFUNCTION
 Callback for seek operations. See \fICURLOPT_SEEKFUNCTION(3)\fP
 .IP CURLOPT_SEEKDATA
@@ -102,7 +106,8 @@ Callback for closing socket. See \fICURLOPT_CLOSESOCKETFUNCTION(3)\fP
 .IP CURLOPT_CLOSESOCKETDATA
 Data pointer to pass to the close socket callback. See \fICURLOPT_CLOSESOCKETDATA(3)\fP
 .IP CURLOPT_PROGRESSFUNCTION
-OBSOLETE callback for progress meter. See \fICURLOPT_PROGRESSFUNCTION(3)\fP
+\fBOBSOLETE\fP callback for progress meter.
+See \fICURLOPT_PROGRESSFUNCTION(3)\fP
 .IP CURLOPT_PROGRESSDATA
 Data pointer to pass to the progress meter callback. See \fICURLOPT_PROGRESSDATA(3)\fP
 .IP CURLOPT_XFERINFOFUNCTION
@@ -166,9 +171,14 @@ URL to work on. See \fICURLOPT_URL(3)\fP
 .IP CURLOPT_PATH_AS_IS
 Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS(3)\fP
 .IP CURLOPT_PROTOCOLS
-Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
+\fBDeprecated option\fP Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP
+.IP CURLOPT_PROTOCOLS_STR
+Allowed protocols. See \fICURLOPT_PROTOCOLS_STR(3)\fP
 .IP CURLOPT_REDIR_PROTOCOLS
-Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP
+\fBDeprecated option\fP Protocols to allow redirects to. See
+\fICURLOPT_REDIR_PROTOCOLS(3)\fP
+.IP CURLOPT_REDIR_PROTOCOLS_STR
+Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP
 .IP CURLOPT_DEFAULT_PROTOCOL
 Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP
 .IP CURLOPT_PROXY
@@ -188,7 +198,8 @@ Connect to a specific host and port. See \fICURLOPT_CONNECT_TO(3)\fP
 .IP CURLOPT_SOCKS5_AUTH
 Socks5 authentication methods. See \fICURLOPT_SOCKS5_AUTH(3)\fP
 .IP CURLOPT_SOCKS5_GSSAPI_SERVICE
-Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
+\fBDeprecated option\fP Socks5 GSSAPI service name.
+See \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
 .IP CURLOPT_SOCKS5_GSSAPI_NEC
 Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
 .IP CURLOPT_PROXY_SERVICE_NAME
@@ -206,7 +217,8 @@ Bind connection locally to port range. See \fICURLOPT_LOCALPORTRANGE(3)\fP
 .IP CURLOPT_DNS_CACHE_TIMEOUT
 Timeout for DNS cache. See \fICURLOPT_DNS_CACHE_TIMEOUT(3)\fP
 .IP CURLOPT_DNS_USE_GLOBAL_CACHE
-OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
+\fBOBSOLETE\fP Enable global DNS cache.
+See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
 .IP CURLOPT_DOH_URL
 Use this DoH server for name resolves. See \fICURLOPT_DOH_URL(3)\fP
 .IP CURLOPT_BUFFERSIZE
@@ -214,7 +226,7 @@ Ask for alternate buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
 .IP CURLOPT_PORT
 Port number to connect to. See \fICURLOPT_PORT(3)\fP
 .IP CURLOPT_TCP_FASTOPEN
-Enable TFO, TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
+Enable TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
 .IP CURLOPT_TCP_NODELAY
 Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
 .IP CURLOPT_ADDRESS_SCOPE
@@ -265,7 +277,7 @@ Proxy TLS authentication methods. See \fICURLOPT_PROXY_TLSAUTH_TYPE(3)\fP
 .IP CURLOPT_PROXYAUTH
 HTTP proxy authentication methods. See \fICURLOPT_PROXYAUTH(3)\fP
 .IP CURLOPT_SASL_AUTHZID
-SASL authorisation identity (identity to act as). See \fICURLOPT_SASL_AUTHZID(3)\fP
+SASL authorization identity (identity to act as). See \fICURLOPT_SASL_AUTHZID(3)\fP
 .IP CURLOPT_SASL_IR
 Enable SASL initial response. See \fICURLOPT_SASL_IR(3)\fP
 .IP CURLOPT_XOAUTH2_BEARER
@@ -288,7 +300,7 @@ Maximum number of redirects to follow. See \fICURLOPT_MAXREDIRS(3)\fP
 .IP CURLOPT_POSTREDIR
 How to act on redirects after POST. See \fICURLOPT_POSTREDIR(3)\fP
 .IP CURLOPT_PUT
-Issue an HTTP PUT request. See \fICURLOPT_PUT(3)\fP
+\fBDeprecated option\fP Issue an HTTP PUT request. See \fICURLOPT_PUT(3)\fP
 .IP CURLOPT_POST
 Issue an HTTP POST request. See \fICURLOPT_POST(3)\fP
 .IP CURLOPT_POSTFIELDS
@@ -300,7 +312,8 @@ The POST data is this big. See \fICURLOPT_POSTFIELDSIZE_LARGE(3)\fP
 .IP CURLOPT_COPYPOSTFIELDS
 Send a POST with this data - and copy it. See \fICURLOPT_COPYPOSTFIELDS(3)\fP
 .IP CURLOPT_HTTPPOST
-Multipart formpost HTTP POST. See \fICURLOPT_HTTPPOST(3)\fP
+\fBDeprecated option\fP Multipart formpost HTTP POST.
+See \fICURLOPT_HTTPPOST(3)\fP
 .IP CURLOPT_REFERER
 Referer: header. See \fICURLOPT_REFERER(3)\fP
 .IP CURLOPT_USERAGENT
@@ -396,15 +409,15 @@ Commands to run just before transfer. See \fICURLOPT_PREQUOTE(3)\fP
 .IP CURLOPT_APPEND
 Append to remote file. See \fICURLOPT_APPEND(3)\fP
 .IP CURLOPT_FTP_USE_EPRT
-Use EPTR. See \fICURLOPT_FTP_USE_EPRT(3)\fP
+Use EPRT. See \fICURLOPT_FTP_USE_EPRT(3)\fP
 .IP CURLOPT_FTP_USE_EPSV
 Use EPSV. See \fICURLOPT_FTP_USE_EPSV(3)\fP
 .IP CURLOPT_FTP_USE_PRET
 Use PRET. See \fICURLOPT_FTP_USE_PRET(3)\fP
 .IP CURLOPT_FTP_CREATE_MISSING_DIRS
 Create missing directories on the remote server. See \fICURLOPT_FTP_CREATE_MISSING_DIRS(3)\fP
-.IP CURLOPT_FTP_RESPONSE_TIMEOUT
-Timeout for FTP responses. See \fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP
+.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
+Timeout for server responses. See \fICURLOPT_SERVER_RESPONSE_TIMEOUT(3)\fP
 .IP CURLOPT_FTP_ALTERNATIVE_TO_USER
 Alternative to USER. See \fICURLOPT_FTP_ALTERNATIVE_TO_USER(3)\fP
 .IP CURLOPT_FTP_SKIP_PASV_IP
@@ -446,7 +459,7 @@ Resume a transfer. See \fICURLOPT_RESUME_FROM(3)\fP
 .IP CURLOPT_RESUME_FROM_LARGE
 Resume a transfer. See \fICURLOPT_RESUME_FROM_LARGE(3)\fP
 .IP CURLOPT_CURLU
-Set URL to work on with CURLU *. See \fICURLOPT_CURLU(3)\fP
+Set URL to work on with a URL handle. See \fICURLOPT_CURLU(3)\fP
 .IP CURLOPT_CUSTOMREQUEST
 Custom request/method. See \fICURLOPT_CUSTOMREQUEST(3)\fP
 .IP CURLOPT_FILETIME
@@ -563,7 +576,7 @@ Set key exchange curves. See \fICURLOPT_SSL_EC_CURVES(3)\fP
 .IP CURLOPT_SSL_ENABLE_ALPN
 Enable use of ALPN. See \fICURLOPT_SSL_ENABLE_ALPN(3)\fP
 .IP CURLOPT_SSL_ENABLE_NPN
-Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
+\fBOBSOLETE\fP Enable use of NPN. See \fICURLOPT_SSL_ENABLE_NPN(3)\fP
 .IP CURLOPT_SSLENGINE
 Use identifier with SSL engine. See \fICURLOPT_SSLENGINE(3)\fP
 .IP CURLOPT_SSLENGINE_DEFAULT
@@ -625,9 +638,10 @@ Set pinned SSL public key . See \fICURLOPT_PINNEDPUBLICKEY(3)\fP
 Set the proxy's pinned SSL public key. See
 \fICURLOPT_PROXY_PINNEDPUBLICKEY(3)\fP
 .IP CURLOPT_RANDOM_FILE
-Provide source for entropy random data. See \fICURLOPT_RANDOM_FILE(3)\fP
+\fBOBSOLETE\fP Provide source for entropy random data.
+See \fICURLOPT_RANDOM_FILE(3)\fP
 .IP CURLOPT_EGDSOCKET
-Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
+\fBOBSOLETE\fP Identify EGD socket for entropy. See \fICURLOPT_EGDSOCKET(3)\fP
 .IP CURLOPT_SSL_CIPHER_LIST
 Ciphers to use. See \fICURLOPT_SSL_CIPHER_LIST(3)\fP
 .IP CURLOPT_PROXY_SSL_CIPHER_LIST
@@ -665,6 +679,13 @@ File name with known hosts. See \fICURLOPT_SSH_KNOWNHOSTS(3)\fP
 Callback for known hosts handling. See \fICURLOPT_SSH_KEYFUNCTION(3)\fP
 .IP CURLOPT_SSH_KEYDATA
 Custom pointer to pass to ssh key callback. See \fICURLOPT_SSH_KEYDATA(3)\fP
+.IP CURLOPT_SSH_HOSTKEYFUNCTION
+Callback for checking host key handling. See \fICURLOPT_SSH_HOSTKEYFUNCTION(3)\fP
+.IP CURLOPT_SSH_HOSTKEYDATA
+Custom pointer to pass to ssh host key callback. See \fICURLOPT_SSH_HOSTKEYDATA(3)\fP
+.SH WEBSOCKET
+.IP CURLOPT_WS_OPTIONS
+Set WebSocket options. See \fICURLOPT_WS_OPTIONS(3)\fP
 .SH OTHER OPTIONS
 .IP CURLOPT_PRIVATE
 Private pointer to store. See \fICURLOPT_PRIVATE(3)\fP
index 27b588ec728522710bb6d7b3eef6fde6a0ac959a..59012aee4065e3556b7f15636e247bb934f79661 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_easy_strerror 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_strerror 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_strerror - return string describing error code
@@ -34,7 +36,7 @@ The \fIcurl_easy_strerror(3)\fP function returns a string describing the
 CURLcode error code passed in the argument \fIerrornum\fP.
 
 Typically applications also appreciate \fICURLOPT_ERRORBUFFER(3)\fP for more
-specific error descriptions generated at run-time.
+specific error descriptions generated at runtime.
 .SH EXAMPLE
 .nf
   /* Perform the request, res will get the return code */
index f501825fbbbf11fb3c4807f9ddf44121b7186970..e3bfea520d94946ea2dee91f7209180be84c45fb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_unescape 3 "December 06, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_unescape 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_unescape - URL decodes the given string
@@ -41,11 +43,14 @@ If the \fBlength\fP argument is set to 0 (zero), \fIcurl_easy_unescape(3)\fP
 will use strlen() on the input \fIurl\fP string to find out the size.
 
 If \fBoutlength\fP is non-NULL, the function will write the length of the
-returned string in the integer it points to. This allows an escaped string
-containing %00 to still get used properly after unescaping. Since this is a
-pointer to an \fIint\fP type, it can only return a value up to INT_MAX so no
-longer string can be unescaped if the string length is returned in this
-parameter.
+returned string in the integer it points to. This allows proper handling even
+for strings containing %00. Since this is a pointer to an \fIint\fP type, it
+can only return a value up to \fIINT_MAX\fP so no longer string can be
+returned in this parameter.
+
+Since 7.82.0, the \fBcurl\fP parameter is ignored. Prior to that there was
+per-handle character conversion support for some very old operating systems
+such as TPF, but it was otherwise ignored.
 
 You must \fIcurl_free(3)\fP the returned string when you are done with it.
 .SH EXAMPLE
index 75cdd160749352ec6d3c66367d42a68d81c3cefe..e08aca6c3c61260b47136909cbee3556b745b0bc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_upkeep 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_easy_upkeep 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_upkeep - Perform any connection upkeep checks.
index 47a23b7f310ef40b00d5a20f7b430ad3f7a976f8..f31c7654f0f72c170e9b5ebf20c3167c06344cb8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_escape 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_escape 3 "October 11, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_escape - URL encodes the given string
@@ -32,13 +34,13 @@ char *curl_escape(const char *url, int length);
 .SH DESCRIPTION
 Obsolete function. Use \fIcurl_easy_escape(3)\fP instead!
 
-This function will convert the given input string to an URL encoded string and
+This function will convert the given input string to a URL encoded string and
 return that as a new allocated string. All input characters that are not a-z,
-A-Z or 0-9 will be converted to their "URL escaped" version (%NN where NN is a
-two-digit hexadecimal number).
+A-Z or 0-9 will be converted to their "URL escaped" version (\fB%NN\fP where
+\fBNN\fP is a two-digit hexadecimal number).
 
-If the \fBlengthf\fP argument is set to 0, curl_escape() will use strlen() on
-the input \fBurl\fP string to find out the size.
+If the \fBlength\fP argument is set to 0, \fIcurl_escape(3)\fP will use
+strlen() on the input \fBurl\fP string to find out the size.
 
 You must \fIcurl_free(3)\fP the returned string when you are done with it.
 .SH EXAMPLE
index e8e45dab85bd02a46b338484b7082c49dac0e79b..26bf9d4416d30c8afb1ea8a0acd153ff656f08cd 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_formadd 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_formadd 3 "October 03, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_formadd - add a section to a multipart/formdata HTTP POST
+curl_formadd - add a section to a multipart form POST
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -31,15 +33,14 @@ CURLFORMcode curl_formadd(struct curl_httppost **firstitem,
                           struct curl_httppost **lastitem, ...);
 .fi
 .SH DESCRIPTION
-This function is deprecated. Do not use. See \fIcurl_mime_init(3)\fP instead.
+\fBThis function is deprecated.\fP Use \fIcurl_mime_init(3)\fP instead.
 
-curl_formadd() is used to append sections when building a multipart/formdata
-HTTP POST (sometimes referred to as RFC2388-style posts). Append one section
-at a time until you have added all the sections you want included and then you
-pass the \fIfirstitem\fP pointer as parameter to \fICURLOPT_HTTPPOST(3)\fP.
-\fIlastitem\fP is set after each \fIcurl_formadd(3)\fP call and on repeated
-invokes it should be left as set to allow repeated invokes to find the end of
-the list faster.
+curl_formadd() is used to append sections when building a multipart form
+post. Append one section at a time until you have added all the sections you
+want included and then you pass the \fIfirstitem\fP pointer as parameter to
+\fICURLOPT_HTTPPOST(3)\fP.  \fIlastitem\fP is set after each
+\fIcurl_formadd(3)\fP call and on repeated invokes it should be left as set to
+allow repeated invokes to find the end of the list faster.
 
 After the \fIlastitem\fP pointer follow the real arguments.
 
@@ -51,7 +52,7 @@ the function itself. You must call \fIcurl_formfree(3)\fP on the
 Using POST 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.
 
-First, there are some basics you need to understand about multipart/formdata
+First, there are some basics you need to understand about multipart form
 posts. Each part consists of at least a NAME and a CONTENTS part. If the part
 is made for file upload, there are also a stored CONTENT-TYPE and a FILENAME.
 Below, we will discuss what options you use to set these properties in the
@@ -64,14 +65,15 @@ parts.
 .IP CURLFORM_COPYNAME
 followed by a string which provides the \fIname\fP of this part. libcurl
 copies the string so your application does not need to keep it around after
-this function call. If the name is not NUL-terminated, you must set its length
-with \fBCURLFORM_NAMELENGTH\fP. The \fIname\fP is not allowed to contain
-zero-valued bytes. The copied data will be freed by \fIcurl_formfree(3)\fP.
+this function call. If the name is not null-terminated, you must set its
+length with \fBCURLFORM_NAMELENGTH\fP. The \fIname\fP is not allowed to
+contain zero-valued bytes. The copied data will be freed by
+\fIcurl_formfree(3)\fP.
 .IP CURLFORM_PTRNAME
 followed by a string which provides the \fIname\fP of this part. libcurl
 will use the pointer and refer to the data in your application, so you
 must make sure it remains until curl no longer needs it. If the name
-is not NUL-terminated, you must set its length with \fBCURLFORM_NAMELENGTH\fP.
+is not null-terminated, you must set its length with \fBCURLFORM_NAMELENGTH\fP.
 The \fIname\fP is not allowed to contain zero-valued bytes.
 .IP CURLFORM_COPYCONTENTS
 followed by a pointer to the contents of this part, the actual data
@@ -81,11 +83,11 @@ terminated, or if you would like it to contain zero bytes, you must
 set the length of the name with \fBCURLFORM_CONTENTSLENGTH\fP. The copied
 data will be freed by \fIcurl_formfree(3)\fP.
 .IP CURLFORM_PTRCONTENTS
-followed by a pointer to the contents of this part, the actual data
-to send away. libcurl will use the pointer and refer to the data in your
-application, so you must make sure it remains until curl no longer needs it.
-If the data is not NUL-terminated, or if you would like it to contain zero bytes,
-you must set its length  with \fBCURLFORM_CONTENTSLENGTH\fP.
+followed by a pointer to the contents of this part, the actual data to send
+away. libcurl will use the pointer and refer to the data in your application,
+so you must make sure it remains until curl no longer needs it.  If the data
+is not null-terminated, or if you would like it to contain zero bytes, you
+must set its length with \fBCURLFORM_CONTENTSLENGTH\fP.
 .IP CURLFORM_CONTENTLEN
 followed by a curl_off_t value giving the length of the contents. Note that
 for \fICURLFORM_STREAM\fP contents, this option is mandatory.
@@ -156,10 +158,10 @@ chunked encoded. (Option added in libcurl 7.18.2)
 .IP CURLFORM_ARRAY
 Another possibility to send options to curl_formadd() is the
 \fBCURLFORM_ARRAY\fP option, that passes a struct curl_forms array pointer as
-its value. Each curl_forms structure element has a CURLformoption and a char
-pointer. The final element in the array must be a CURLFORM_END. All available
-options can be used in an array, except the CURLFORM_ARRAY option itself. The
-last argument in such an array must always be \fBCURLFORM_END\fP.
+its value. Each curl_forms structure element has a \fICURLformoption\fP and a
+char pointer. The final element in the array must be a CURLFORM_END. All
+available options can be used in an array, except the CURLFORM_ARRAY option
+itself. The last argument in such an array must always be \fBCURLFORM_END\fP.
 .IP CURLFORM_CONTENTHEADER
 specifies extra headers for the form POST section. This takes a curl_slist
 prepared in the usual way using \fBcurl_slist_append\fP and appends the list
@@ -167,9 +169,10 @@ of headers to those libcurl automatically generates. The list must exist while
 the POST occurs, if you free it before the post completes you may experience
 problems.
 
-When you have passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using
-the \fICURLOPT_HTTPPOST(3)\fP option), you must not free the list until after
-you have called \fIcurl_easy_cleanup(3)\fP for the curl handle.
+When you have passed the \fIstruct curl_httppost\fP pointer to
+\fIcurl_easy_setopt(3)\fP (using the \fICURLOPT_HTTPPOST(3)\fP option), you
+must not free the list until after you have called \fIcurl_easy_cleanup(3)\fP
+for the curl handle.
 
 See example below.
 .SH EXAMPLE
@@ -258,7 +261,7 @@ actually sent: the effective data size can then not be automatically
 determined, resulting in a chunked encoding transfer. Backslashes and
 double quotes in field and file names are now escaped before transmission.
 .SH RETURN VALUE
-0 means everything was ok, non-zero means an error occurred corresponding
+0 means everything was OK, non-zero means an error occurred corresponding
 to a CURL_FORMADD_* constant defined in
 .I <curl/curl.h>
 .SH "SEE ALSO"
index 6b9ee953641a53d84d6bc687e651f87d63865ae3..4ce2e5429497fb083412e6dec1e052bab96ec897 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_formfree 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_formfree 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_formfree - free a previously build multipart/formdata HTTP POST chain
+curl_formfree - free a previously build multipart form post chain
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
index f1e5339010205f1b1b1c5a2938bf015946932896..41751263432c90a1bfc9e6e0ea293c24e1cf13de 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_formget 3 "October 31, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_formget 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_formget - serialize a previously built multipart/formdata HTTP POST chain
+curl_formget - serialize a previously built multipart form POST chain
 .SH SYNOPSIS
 .nf
 .B #include <curl/curl.h>
@@ -66,6 +68,6 @@ request as only then will libcurl get the actual read callback to use!
 This function was added in libcurl 7.15.5. The form API is deprecated in
 libcurl 7.56.0.
 .SH RETURN VALUE
-0 means everything was ok, non-zero means an error occurred
+0 means everything was OK, non-zero means an error occurred
 .SH "SEE ALSO"
 .BR curl_formadd "(3), " curl_mime_init "(3)"
index 1500ceb4bce7588b5a8eb954bf99eb8d27b395da..3526c9f0b7414dc4274e1d6503f9ae33fb431763 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_free 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_free 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_free - reclaim memory that has been obtained through a libcurl call
index 01f093640bf463934adfa4608ace259a392e7b66..46d9df1842eaae11578a18145e897e768a6e6833 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_getdate 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_getdate 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_getdate - Convert a date string to number of seconds
@@ -34,15 +36,19 @@ time_t curl_getdate(char *datestring, time_t *now);
 1st 1970 00:00:00 in the UTC time zone, for the date and time that the
 \fIdatestring\fP parameter specifies. The \fInow\fP parameter is not used,
 pass a NULL there.
+
+This function works with valid dates and does not always detect and reject
+wrong dates, such as February 30.
+
 .SH PARSING DATES AND TIMES
 A "date" is a string containing several items separated by whitespace. The
 order of the items is immaterial. A date string may contain many flavors of
 items:
 .TP 0.8i
 .B calendar date items
-Can be specified several ways. Month names can only be three-letter english
-abbreviations, numbers can be zero-prefixed and the year may use 2 or 4 digits.
-Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6.
+Can be specified several ways. Month names can only be three-letter English
+abbreviations, numbers can be zero-prefixed and the year may use 2 or 4
+digits.  Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6.
 .TP
 .B time of the day items
 This string specifies the time on a given day. You must specify it with 6
@@ -56,14 +62,13 @@ UTC. Supported formats include: -1200, MST, +0100.
 .TP
 .B day of the week items
 Specifies a day of the week. Days of the week may be spelled out in full
-(using english): `Sunday', `Monday', etc or they may be abbreviated to their
+(using English): `Sunday', `Monday', etc or they may be abbreviated to their
 first three letters. This is usually not info that adds anything.
 .TP
 .B pure numbers
 If a decimal number of the form YYYYMMDD appears, then YYYY is read as the
 year, MM as the month number and DD as the day of the month, for the specified
 calendar date.
-.PP
 .SH EXAMPLE
 .nf
  time_t t;
@@ -93,8 +98,8 @@ calendar date.
 .SH STANDARDS
 This parser handles date formats specified in RFC 822 (including the update in
 RFC 1123) using time zone name or time zone delta and RFC 850 (obsoleted by
-RFC 1036) and ANSI C's asctime() format. These formats are the only ones RFC
-7231 says HTTP applications may use.
+RFC 1036) and ANSI C's \fIasctime()\fP format. These formats are the only ones
+RFC 7231 says HTTP applications may use.
 .SH AVAILABILITY
 Always
 .SH RETURN VALUE
index d79bdc3577d1fc80ec8354905b653c26b01dcde4..30d70e24136e2a8634172a5ac354dc9252100a9d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_getenv 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_getenv 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_getenv - return value for environment name
@@ -44,9 +46,7 @@ You must \fIcurl_free(3)\fP the returned string when you are done with it.
   }
 .fi
 .SH AVAILABILITY
-This function will be removed from the public libcurl API in a near future. It
-will instead be made "available" by source code access only, and then as
-curlx_getenv().
+Always
 .SH RETURN VALUE
 A pointer to a null-terminated string or NULL if it failed to find the
 specified name.
index 9d9b59cede8fa2e65048203c1a629c87a33b59fd..efdb385172f4c6bb77fd16232eb0618f77879f7b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_global_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_cleanup 3 "June 15, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_global_cleanup - global libcurl cleanup
@@ -35,7 +37,11 @@ This function releases resources acquired by \fIcurl_global_init(3)\fP.
 You should call \fIcurl_global_cleanup(3)\fP once for each call you make to
 \fIcurl_global_init(3)\fP, after you are done using libcurl.
 
-\fBThis function is not thread safe.\fP You must not call it when any other
+This function is thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms).
+
+If this is not thread-safe, you must not call this function when any other
 thread in the program (i.e. a thread sharing the same memory) is running.
 This does not just mean no other thread that is using libcurl. Because
 \fIcurl_global_cleanup(3)\fP calls functions of other libraries that are
index 5eb2ff19b21bfd7dcb3a386f9572d662c87c57de..adce3048c5fb99bdff950138b7191fe5f796097b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_global_init 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_init 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_global_init - Global libcurl initialisation
+curl_global_init - Global libcurl initialization
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -45,16 +47,20 @@ In normal operation, you must specify CURL_GLOBAL_ALL. Do not use any other
 value unless you are familiar with it and mean to control internal operations
 of libcurl.
 
-\fBThis function is not thread safe.\fP You must not call it when any other
+This function is thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms).
+
+If this is not thread-safe, you must not call this function when any other
 thread in the program (i.e. a thread sharing the same memory) is running.
 This does not just mean no other thread that is using libcurl. Because
 \fIcurl_global_init(3)\fP calls functions of other libraries that are
 similarly thread unsafe, it could conflict with any other thread that uses
 these other libraries.
 
-If you are initializing libcurl from a Windows DLL you should not initialize it
-from DllMain or a static initializer because Windows holds the loader lock
-during that time and it could cause a deadlock.
+If you are initializing libcurl from a Windows DLL you should not initialize
+it from \fIDllMain\fP or a static initializer because Windows holds the loader
+lock during that time and it could cause a deadlock.
 
 See the description in \fIlibcurl(3)\fP of global environment requirements for
 details of how to use this function.
@@ -84,7 +90,7 @@ winsock has to be done by the application or you risk getting undefined
 behaviors. This option exists for when the initialization is handled outside
 of libcurl so there's no need for libcurl to do it again.
 .IP CURL_GLOBAL_NOTHING
-Initialise nothing extra. This sets no bit.
+Initialize nothing extra. This sets no bit.
 .IP CURL_GLOBAL_DEFAULT
 A sensible default. It will init both SSL and Win32. Right now, this equals
 the functionality of the \fBCURL_GLOBAL_ALL\fP mask.
index 2bc4fbc3a010ba6f4a417f12dc56318bb2faf1c2..6831cd0912babb83ed6462fc714dd13a4c2b477d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_global_init_mem 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_init_mem 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_global_init_mem - Global libcurl initialisation with memory callbacks
+curl_global_init_mem - Global libcurl initialization with memory callbacks
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -56,7 +58,7 @@ To replace realloc()
 To replace strdup()
 .IP "void *calloc_callback(size_t nmemb, size_t size);"
 To replace calloc()
-.RE
+.PP
 This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer
 to that man page for documentation.
 .SH CAUTION
@@ -71,7 +73,7 @@ screw things up for libcurl. Take care!
 .SH AVAILABILITY
 Added in 7.12.0
 .SH RETURN VALUE
-CURLE_OK (0) means everything was ok, non-zero means an error occurred as
+CURLE_OK (0) means everything was OK, non-zero means an error occurred as
 \fI<curl/curl.h>\fP defines - see \fIlibcurl-errors(3)\fP.
 .SH "SEE ALSO"
 .BR curl_global_init "(3), "
index e6547895fb0c7700ad13da9b98279ae355906562..9cb6773872c1fbeae746dd5388b2664ef5bfe995 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_global_sslset 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_global_sslset 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_global_sslset - Select SSL backend to use with libcurl
@@ -63,24 +65,28 @@ The backend can be identified by the \fIid\fP
 both \fIid\fP and \fIname\fP are specified, the \fIname\fP will be ignored.
 
 If neither \fIid\fP nor \fPname\fP are specified, the function will fail with
-CURLSSLSET_UNKNOWN_BACKEND and set the \fIavail\fP pointer to the
+\fBCURLSSLSET_UNKNOWN_BACKEND\fP and set the \fIavail\fP pointer to the
 NULL-terminated list of available backends. The available backends are those
 that this particular build of libcurl supports.
 
 Since libcurl 7.60.0, the \fIavail\fP pointer will always be set to the list
 of alternatives if non-NULL.
 
-Upon success, the function returns CURLSSLSET_OK.
+Upon success, the function returns \fBCURLSSLSET_OK\fP.
 
 If the specified SSL backend is not available, the function returns
-CURLSSLSET_UNKNOWN_BACKEND and sets the \fIavail\fP pointer to a
+\fBCURLSSLSET_UNKNOWN_BACKEND\fP and sets the \fIavail\fP pointer to a
 NULL-terminated list of available SSL backends. In this case, you may call the
 function again to try to select a different backend.
 
 The SSL backend can be set only once. If it has already been set, a subsequent
 attempt to change it will result in a \fBCURLSSLSET_TOO_LATE\fP.
 
-\fBThis function is not thread safe.\fP You must not call it when any other
+This function is thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the CURL_VERSION_THREADSAFE feature bit set
+(most platforms).
+
+If this is not thread-safe, you must not call this function when any other
 thread in the program (i.e. a thread sharing the same memory) is running.
 This does not just mean no other thread that is using libcurl.
 .SH EXAMPLE
@@ -100,7 +106,8 @@ This does not just mean no other thread that is using libcurl.
 This function was added in libcurl 7.56.0. Before this version, there was no
 support for choosing SSL backends at runtime.
 .SH RETURN VALUE
-If this function returns CURLSSLSET_OK, the backend was successfully selected.
+If this function returns \fICURLSSLSET_OK\fP, the backend was successfully
+selected.
 
 If the chosen backend is unknown (or support for the chosen backend has not
 been compiled into libcurl), the function returns
index b2b0f23a75c824ca2a8db51b01aacaa12f072468..2eaf90ceeab49ab5c7a6f45fa75df28453a84c68 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_addpart 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_addpart 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_addpart - append a new empty part to a mime structure
index 21e29c7274cdf422e948a9ed6173f116873c5911..e3a5d3d272ec4fc898b602a7e53485712aa11d1a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_data 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_data 3 "June 28, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_data - set a mime part's body data from memory
@@ -33,15 +35,18 @@ CURLcode curl_mime_data(curl_mimepart *part, const char *data,
 .SH DESCRIPTION
 \fIcurl_mime_data(3)\fP sets a mime part's body content from memory data.
 
-\fIdata\fP points to the data bytes: those are copied to the part and their
-storage may safely be reused after call.
-\fIdatasize\fP is the number of data bytes: it can be set to
+\fIpart\fP is the mime part to assign contents to, created with
+\fIcurl_mime_addpart(3)\fP.
+
+\fIdata\fP points to the data that gets copied by this function. The storage
+may safely be reused after the call.
+
+\fIdatasize\fP is the number of bytes \fIdata\fP points to. It can be set to
 \fICURL_ZERO_TERMINATED\fP to indicate \fIdata\fP is a null-terminated
 character string.
-\fIpart\fP is the part's to assign contents to.
 
-Setting a part's contents twice is valid: only the value set by the last call
-is retained. It is possible to unassign part's contents by setting
+Setting a part's contents multiple times is valid: only the value set by the
+last call is retained. It is possible to unassign part's contents by setting
 \fIdata\fP to NULL.
 
 Setting large data is memory consuming: one might consider using
index 5935d0dc8400ed536832e714a89192c7a6890a6f..cc7e51ed60c2f43dfc62b4af6b657c7abc322935 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_data_cb 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_data_cb 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_data_cb - set a callback-based data source for a mime part's body
index d033744c8e5b645459e57fa93a4b4c2bd564c661..fcdfbf19f2f532d111b50dfff132224d5065eacc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_encoder 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_encoder 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_encoder - set a mime part's encoder and content transfer encoding
@@ -38,8 +40,8 @@ transmitted.
 set to NULL to disable an encoder previously attached to the part. The encoding
 scheme storage may safely be reused after this function returns.
 
-Setting a part's encoder twice is valid: only the value set by the last call is
-retained.
+Setting a part's encoder multiple times is valid: only the value set by the
+last call is retained.
 
 Upon multipart rendering, the part's content is encoded according to the
 pertaining scheme and a corresponding \fI"Content-Transfer-Encoding"\fP header
@@ -66,7 +68,7 @@ not be used with other types of data.
 
 If the original data is already encoded in such a scheme, a custom
 \fIContent-Transfer-Encoding\fP header should be added with
-\FIcurl_mime_headers\fP() instead of setting a part encoder.
+\fIcurl_mime_headers\fP() instead of setting a part encoder.
 
 Encoding should not be applied to multiparts, thus the use of this
 function on a part with content set with \fIcurl_mime_subparts\fP() is
index 940619127819790d3f6bb4b7d7818091cbebe110..9d01cb3229bd6aa4d0c9a6cf4c653a862a599a27 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_filedata 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_filedata 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_filedata - set a mime part's body data from a file contents
@@ -53,8 +55,8 @@ If the file size cannot be determined before actually reading it (such as for
 a device or named pipe), the whole mime structure containing the part
 will be transferred as chunks by HTTP and rejected by IMAP.
 
-Setting a part's contents twice is valid: only the value set by the last call
-is retained.
+Setting a part's contents multiple times is valid: only the value set by the
+last call is retained.
 .SH EXAMPLE
 .nf
  curl_mime *mime;
index 332935aa24774fad12ad16646b20d2e2a30bcedc..33416b66842b7e0104dac8dbae874cb8e5d7bb3a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_filename 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_filename 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_filename - set a mime part's remote file name
@@ -43,7 +45,7 @@ to NULL to remove a previously attached remote file name.
 
 The remote file name string is copied into the part, thus the associated
 storage may safely be released or reused after call. Setting a part's file
-name twice is valid: only the value set by the last call is retained.
+name multiple times is valid: only the value set by the last call is retained.
 .SH EXAMPLE
 .nf
  curl_mime *mime;
index 50b109181f0969a0f519b7c2a22d71b29f43c92c..70a1691980c49b6df75460603ab42f0debcb9a28 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_free 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_free 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_free - free a previously built mime structure
@@ -35,9 +37,9 @@ with \fIcurl_mime_addpart(3)\fP and other mime-handling functions. This must
 be called when the data has been used, which typically means after
 \fIcurl_easy_perform(3)\fP has been called.
 
-The handle to free is the one you passed to
-the \fICURLOPT_MIMEPOST(3)\fP option: attached subparts mime structures must
-not be explicitly freed as they are by the top structure freeing.
+The handle to free is the one you passed to the \fICURLOPT_MIMEPOST(3)\fP
+option: attached sub part mime structures must not be explicitly freed as they
+are by the top structure freeing.
 
 \fBmime\fP is the handle as returned from a previous call to
 \fIcurl_mime_init(3)\fP and may be NULL.
index cccc2145d5f1b6a3269834f2728c13717a7b4e45..e7dde698adcb6ca95c67c050d2118ad941ef9cc8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_headers 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_headers 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_headers - set a mime part's custom headers
@@ -42,8 +44,8 @@ to remove a previously attached custom header list.
 replacement or mime structure deletion; in this case the list must not be
 freed explicitly.
 
-Setting a part's custom headers list twice is valid: only the value set by
-the last call is retained.
+Setting a part's custom headers list multiple times is valid: only the value
+set by the last call is retained.
 .SH EXAMPLE
 .nf
  struct curl_slist *headers = NULL;
index 12672f48298434c50f8cb831f4ae7368fdef906c..bfb6dfc241425723de356d9ea26b0d731af1635a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_init 3 "December 17, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_init 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_init - create a mime handle
index 7cd2edb603bb566270c0e1d9a070d3ff341780ec..3bed9891d13080c4cc52bb02a6e07d74d0bdf6dc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_name 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_name 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_name - set a mime part's name
@@ -38,9 +40,9 @@ fields are named.
 \fIname\fP points to the null-terminated name string.
 
 The name string is copied into the part, thus the associated storage may
-safely be released or reused after call. Setting a part's name twice is valid:
-only the value set by the last call is retained. It is possible to "unname" a
-part by setting \fIname\fP to NULL.
+safely be released or reused after call. Setting a part's name multiple times
+is valid: only the value set by the last call is retained. It is possible to
+reset the name of a part by setting \fIname\fP to NULL.
 .SH EXAMPLE
 .nf
  curl_mime *mime;
index 8f20109264e60a2f1dee2be942e5401dc980aa55..a86ddf772385d5764f5d30d30da968e49ed8c5af 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_subparts 3 "December 17, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_subparts 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_mime_subparts - set subparts of a multipart mime part
+curl_mime_subparts - set sub-parts of a multipart mime part
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -35,14 +37,14 @@ structure.
 
 \fIpart\fP is a handle to the multipart part.
 
-\fIsubparts\fP is a mime structure handle holding the subparts. After
+\fIsubparts\fP is a mime structure handle holding the sub-parts. After
 \fIcurl_mime_subparts\fP succeeds, the mime structure handle belongs to the
 multipart part and must not be freed explicitly. It may however be updated by
 subsequent calls to mime API functions.
 
-Setting a part's contents twice is valid: only the value set by the last call
-is retained. It is possible to unassign previous part's contents by setting
-\fIsubparts\fP to NULL.
+Setting a part's contents multiple times is valid: only the value set by the
+last call is retained. It is possible to unassign previous part's contents by
+setting \fIsubparts\fP to NULL.
 .SH EXAMPLE
 .nf
  /* The inline part is an alternative proposing the html and the text
index 137197dbac66752607f41aa8b9bfbf02c01b37a9..f759c74702aba4a942952355aeed949465fa7e9a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_mime_type 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_mime_type 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_type - set a mime part's content type
@@ -38,8 +40,8 @@ CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
 set to NULL to remove a previously attached mime type.
 
 The mime type string is copied into the part, thus the associated storage may
-safely be released or reused after call. Setting a part's type twice is valid:
-only the value set by the last call is retained.
+safely be released or reused after call. Setting a part's type multiple times
+is valid: only the value set by the last call is retained.
 
 In the absence of a mime type and if needed by the protocol specifications,
 a default mime type is determined by the context:
index c3532b07a95a3709d6ba5469f979121bfd8ecb29..5fb7997bd88290e275c0ecd47eaa2aaaa818dd9a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_printf 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_printf 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
@@ -63,9 +65,9 @@ The functions \fBcurl_mvprintf()\fP, \fBcurl_mvfprintf()\fP,
 \fBcurl_mvsprintf()\fP, \fBcurl_mvsnprintf()\fP are equivalent to the
 functions \fBcurl_mprintf()\fP, \fBcurl_mfprintf()\fP, \fBcurl_msprintf()\fP,
 \fBcurl_msnprintf()\fP, respectively, except that they are called with a
-va_list instead of a variable number of arguments. These functions do not
-call the va_end macro. Because they invoke the va_arg macro, the value of ap
-is undefined after the call.
+\fIva_list\fP instead of a variable number of arguments. These functions do
+not call the \fIva_end\fP macro. Because they invoke the \fIva_arg\fP macro,
+the value of \fIap\fP is undefined after the call.
 
 The functions \fBcurl_maprintf()\fP and \fBcurl_mvaprintf()\fP return the
 output string as pointer to a newly allocated memory area. The returned string
@@ -92,21 +94,21 @@ can also specify explicitly which argument is taken, at each place where an
 argument is required, by writing "%m$" instead of '%' and "*m$" instead
 of '*', where the decimal integer m denotes the position in the argument list
 of the desired argument, indexed starting from 1. Thus,
-
+.nf
     curl_mprintf("%*d", width, num);
-
+.fi
 and
-
+.nf
     curl_mprintf("%2$*1$d", width, num);
-
+.fi
 are equivalent. The second style allows repeated references to the same
 argument.
 
 If the style using '$' is used, it must be used throughout for all conversions
 taking an argument and all width and precision arguments, but it may be mixed
 with "%%" formats, which do not consume an argument. There may be no gaps in
-the numbers of argu‐ ments specified using '$'; for example, if arguments 1
-and 3 are specified, argument 2 must also be specified somewhere in the format
+the numbers of arguments specified using '$'; for example, if arguments 1 and
+3 are specified, argument 2 must also be specified somewhere in the format
 string.
 
 .SH "Flag characters"
@@ -138,17 +140,17 @@ minimum field width. If the converted value has fewer characters than the
 field width, it will be padded with spaces on the left (or right, if the
 left-adjustment flag has been given). Instead of a decimal digit string one
 may write "*" or "*m$" (for some decimal integer m) to specify that the field
-width is given in the next argument, or in the m-th argument, respec‐ tively,
-which must be of type int. A negative field width is taken as a '-' flag
-followed by a positive field width. In no case does a nonexistent or small
-field width cause truncation of a field; if the result of a conversion is
-wider than the field width, the field is expanded to contain the conversion
-result.
+width is given in the next argument, or in the \fIm-th\fP argument,
+respectively, which must be of type int. A negative field width is taken as
+a '-' flag followed by a positive field width. In no case does a nonexistent
+or small field width cause truncation of a field; if the result of a
+conversion is wider than the field width, the field is expanded to contain the
+conversion result.
 .SH "Precision"
 An optional precision in the form of a period ('.') followed by an optional
 decimal digit string. Instead of a decimal digit string one may write "*" or
 "*m$" (for some decimal integer m) to specify that the precision is given in
-the next argument, or in the m-th argument, respectively, which must be of
+the next argument, or in the \fIm-th\fP argument, respectively, which must be of
 type int. If the precision is given as just '.', the precision is taken to be
 zero. A negative precision is taken as if the precision were omitted. This
 gives the minimum number of digits to appear for \fBd\fP, \fBi\fP, \fBo\fP,
@@ -197,18 +199,18 @@ empty.
 .B o, u, x, X
 The unsigned int argument is converted to unsigned octal (o), unsigned decimal
 (u), or unsigned hexadecimal (\fBx\fP and \fBX\fP) notation. The letters
-abcdef are used for \fBx\fP conversions; the letters ABCDEF are used for
-\fBX\fP conversions. The precision, if any, gives the minimum number of digits
-that must appear; if the converted value requires fewer digits, it is padded
-on the left with zeros. The default precision is 1. When 0 is printed with
-an explicit precision 0, the output is empty.
+\fIabcdef\fP are used for \fBx\fP conversions; the letters \fIABCDEF\fP are
+used for \fBX\fP conversions. The precision, if any, gives the minimum number
+of digits that must appear; if the converted value requires fewer digits, it
+is padded on the left with zeros. The default precision is 1. When 0 is
+printed with an explicit precision 0, the output is empty.
 .TP
 .B e, E
-The double argument is rounded and output in the style "[-]d.ddde±dd"
+The double argument is rounded and output in the style \fB"[-]d.ddde±dd"\fP
 .TP
 .B f, F
-The double argument is rounded and output to decimal notiation in the style
-[-]ddd.ddd.
+The double argument is rounded and output to decimal notation in the style
+\fB"[-]ddd.ddd"\fP.
 .TP
 .B g, G
 The double argument is converted in style f or e.
@@ -218,12 +220,12 @@ The int argument is converted to an unsigned char, and the resulting character
 is written.
 .TP
 .B s
-The const char * argument is expected to be a pointer to an array of character
-type (pointer to a string). Characters from the array are written up to (but
-not including) a terminating null byte. If a precision is specified, no more
-than the number specified are written. If a precision is given, no null byte
-need be present; if the precision is not specified, or is greater than the
-size of the array, the array must contain a terminating null byte.
+The \fIconst char *\fP argument is expected to be a pointer to an array of
+character type (pointer to a string). Characters from the array are written up
+to (but not including) a terminating null byte. If a precision is specified,
+no more than the number specified are written. If a precision is given, no
+null byte need be present; if the precision is not specified, or is greater
+than the size of the array, the array must contain a terminating null byte.
 .TP
 .B p
 The \fIvoid *\fP pointer argument is printed in hexadecimal.
index 1582b43f0ed04321f603bb1c6fa0631b14578f34..119476e39d6f9525b191e3a5169f0bab349049f2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_add_handle 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_add_handle 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_add_handle - add an easy handle to a multi session
@@ -76,7 +78,7 @@ first the easy handle and then the multi handle:
   curl_multi_add_handle(multi_handle, http_handle2);
 .fi
 .SH AVAILABILITY
-ADded in 7.9.6
+Added in 7.9.6
 .SH RETURN VALUE
 CURLMcode type, general libcurl multi interface error code.
 .SH "SEE ALSO"
index 892285bd4d4070287fe243c691cbefa3aa138691..945dc956f36791702d1c81352e42a1d7c94c4be0 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_assign 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_assign 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_assign \- set data to associate with an internal socket
@@ -49,6 +51,8 @@ The idea here being that this association (socket to private pointer) is
 something that just about every application that uses this API will need and
 then libcurl can just as well do it since it already has an internal hash
 table lookup for this.
+
+It is acceptable to call this function from your multi callback functions.
 .SH EXAMPLE
 .nf
  /* make our struct pointer associated with socket fd */
index 51655a6eb32fd5ac6e41ef6705682929321c8372..dd2b01762506d2003d7d2b6e4f1032a331489766 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_cleanup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_cleanup - close down a multi session
index 354fd3ccd6aff962fb36ac24b70dd28edeefdf05..9ca4345812ee35408ef8861aa7268fb55a89baa2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_fdset 3 "October 31, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_fdset 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_fdset - extracts file descriptor information from a multi handle
@@ -35,23 +37,23 @@ CURLMcode curl_multi_fdset(CURLM *multi_handle,
 .ad
 .SH DESCRIPTION
 This function extracts file descriptor information from a given multi_handle.
-libcurl returns its fd_set sets. The application can use these to select() on,
-but be sure to FD_ZERO them before calling this function as
+libcurl returns its \fIfd_set\fP sets. The application can use these to
+select() on, but be sure to \fIFD_ZERO\fP them before calling this function as
 \fIcurl_multi_fdset(3)\fP only adds its own descriptors, it does not zero or
 otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should
 be called as soon as one of them is ready to be read from or written to.
 
 If the \fIread_fd_set\fP argument is not a null pointer, it points to an
-object of type fd_set that on returns specifies the file descriptors to be
-checked for being ready to read.
+object of type \fBfd_set\fP that on returns specifies the file descriptors to
+be checked for being ready to read.
 
 If the \fIwrite_fd_set\fP argument is not a null pointer, it points to an
-object of type fd_set that on return specifies the file descriptors to be
-checked for being ready to write.
+object of type \fBfd_set\fP that on return specifies the file descriptors to
+be checked for being ready to write.
 
 If the \fIexc_fd_set\fP argument is not a null pointer, it points to an object
-of type fd_set that on return specifies the file descriptors to be checked for
-error conditions pending.
+of type \fBfd_set\fP that on return specifies the file descriptors to be
+checked for error conditions pending.
 
 If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
 this function returns. Otherwise it will contain the highest descriptor number
@@ -66,16 +68,17 @@ conditions to find a suitable value.
 
 When doing select(), you should use \fIcurl_multi_timeout(3)\fP to figure out
 how long to wait for action. Call \fIcurl_multi_perform(3)\fP even if no
-activity has been seen on the fd_sets after the timeout expires as otherwise
-internal retries and timeouts may not work as you would think and want.
+activity has been seen on the \fBfd_sets\fP after the timeout expires as
+otherwise internal retries and timeouts may not work as you would think and
+want.
 
 If one of the sockets used by libcurl happens to be larger than what can be
-set in an fd_set, which on POSIX systems means that the file descriptor is
-larger than FD_SETSIZE, then libcurl will try to not set it. Setting a too
-large file descriptor in an fd_set implies an out of bounds write which can
-cause crashes, or worse. The effect of NOT storing it will possibly save you
-from the crash, but will make your program NOT wait for sockets it should wait
-for...
+set in an \fBfd_set\fP, which on POSIX systems means that the file descriptor
+is larger than \fBFD_SETSIZE\fP, then libcurl will try to not set it. Setting
+a too large file descriptor in an \fBfd_set\fP implies an out of bounds write
+which can cause crashes, or worse. The effect of NOT storing it will possibly
+save you from the crash, but will make your program NOT wait for sockets it
+should wait for...
 .SH EXAMPLE
 .nf
  /* get file descriptors from the transfers */
@@ -92,7 +95,7 @@ for...
 .SH AVAILABILITY
 Added in 7.9.6
 .SH RETURN VALUE
-CURLMcode type, general libcurl multi interface error code. See
+\fBCURLMcode\fP type, general libcurl multi interface error code. See
 \fIlibcurl-errors(3)\fP
 .SH "SEE ALSO"
 .BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
index e2d7cbe2afd0e240d679e85dd399bedbe60a0b3c..1feee6a625c687445538897899c6f7a76f721eae 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_info_read 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_info_read 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_multi_info_read - read multi stack informationals
+curl_multi_info_read - read multi stack information
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -30,10 +32,10 @@ curl_multi_info_read - read multi stack informationals
 CURLMsg *curl_multi_info_read(CURLM *multi_handle, int *msgs_in_queue);
 .fi
 .SH DESCRIPTION
-Ask the multi handle if there are any messages/informationals from the
-individual transfers. Messages may include informationals such as an error
-code from the transfer or just the fact that a transfer is completed. More
-details on these should be written down as well.
+Ask the multi handle if there are any messages from the individual
+transfers. Messages may include information such as an error code from the
+transfer or just the fact that a transfer is completed. More details on these
+should be written down as well.
 
 Repeated calls to this function will return a new struct each time, until a
 NULL is returned as a signal that there is no more to get at this point. The
@@ -49,10 +51,10 @@ is emptied.
 calling \fIcurl_multi_cleanup(3)\fP, \fIcurl_multi_remove_handle(3)\fP or
 \fIcurl_easy_cleanup(3)\fP.
 
-The 'CURLMsg' struct is simple and only contains basic information. If more
-involved information is wanted, the particular "easy handle" is present in
-that struct and can be used in subsequent regular \fIcurl_easy_getinfo(3)\fP
-calls (or similar):
+The \fICURLMsg\fP struct is simple and only contains basic information. If
+more involved information is wanted, the particular "easy handle" is present
+in that struct and can be used in subsequent regular
+\fIcurl_easy_getinfo(3)\fP calls (or similar):
 
 .nf
  struct CURLMsg {
index 3b0acdf2541b8107bedd3cad8f98bf03363efedf..a2e4b26a1021f72b3ac3f21965dad21a394f1ff1 100644 (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_multi_init 3 "January 04, 2022" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_init 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_init - create a multi handle
@@ -30,9 +32,9 @@ curl_multi_init - create a multi handle
 CURLM *curl_multi_init();
 .fi
 .SH DESCRIPTION
-This function returns a CURLM handle to be used as input to all the other
-multi-functions, sometimes referred to as a multi handle in some places in the
-documentation. This init call MUST have a corresponding call to
+This function returns a pointer to a \fICURLM\fP handle to be used as input to
+all the other multi-functions, sometimes referred to as a multi handle in some
+places in the documentation. This init call MUST have a corresponding call to
 \fIcurl_multi_cleanup(3)\fP when the operation is complete.
 .SH EXAMPLE
 .nf
index 8123c19e72bc345f593e3b92669f2d6bf5c4946f..2edef0c86f98914fd8eebe50fae06b92fd514d5b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_perform 3 "December 09, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_perform 3 "August 15, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_multi_perform - reads/writes available data from each easy handle
+curl_multi_perform - reads/writes available data from easy handles
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -31,7 +33,7 @@ CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles);
 .fi
 .SH DESCRIPTION
 This function performs transfers on all the added handles that need attention
-in an non-blocking fashion. The easy handles have previously been added to the
+in a non-blocking fashion. The easy handles have previously been added to the
 multi handle with \fIcurl_multi_add_handle(3)\fP.
 
 When an application has found out there's data available for the multi_handle
index cd2e9fd8f5b77a974a523e753795c2ffff11b739..4d59d1f2cdd97c4ed5b06032727b83d2ed185f63 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_poll 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_poll 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_poll - polls on all easy handles in a multi handle
@@ -42,7 +44,8 @@ shorter expiry time than \fItimeout_ms\fP, that shorter time will be used
 instead to make sure timeout accuracy is reasonably kept.
 
 The calling application may pass additional curl_waitfd structures which are
-similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
+similar to \fIpoll(2)\fP's \fIpollfd\fP structure to be waited on in the same
+call.
 
 On completion, if \fInumfds\fP is non-NULL, it will be populated with the
 total number of file descriptors on which interesting events occurred. This
index e254365dcc64f349b86ed8b40b127c9fdff4591b..3a873b9950a46576136e67566ee41d4a5e7f34b8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_remove_handle 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_remove_handle 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_remove_handle - remove an easy handle from a multi session
index b12c67637327e159c2d18429fa2440e3fe44cc46..d4818550df03a4a7b26f492a7467d4b68e70c985 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_setopt 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_setopt 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_setopt \- set options for a curl multi handle
index 351b423a24fa3f3766fcd04c1118a65d70711516..c075e0f376a6444e4859060795df634753cf80e1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_socket 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_socket 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_socket \- reads/writes available data
@@ -67,68 +69,6 @@ equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to
 Force libcurl to (re-)check all its internal sockets and transfers instead of
 just a single one by calling \fIcurl_multi_socket_all(3)\fP. Note that there
 should not be any reason to use this function.
-.SH CALLBACK
-The socket \fBcallback\fP function uses a prototype like this
-.nf
-  int curl_socket_callback(CURL *easy,      /* easy handle */
-                           curl_socket_t s, /* socket */
-                           int action,      /* see values below */
-                           void *userp,    /* private callback pointer */
-                           void *socketp); /* private socket pointer */
-.fi
-The callback MUST return 0.
-
-The \fIeasy\fP argument is a pointer to the easy handle that deals with this
-particular socket. Note that a single handle may work with several sockets
-simultaneously.
-
-The \fIs\fP argument is the actual socket value as you use it within your
-system.
-
-The \fIaction\fP argument to the callback has one of five values:
-.RS
-.IP "CURL_POLL_NONE (0)"
-register, not interested in readiness (yet)
-.IP "CURL_POLL_IN (1)"
-register, interested in read readiness
-.IP "CURL_POLL_OUT (2)"
-register, interested in write readiness
-.IP "CURL_POLL_INOUT (3)"
-register, interested in both read and write readiness
-.IP "CURL_POLL_REMOVE (4)"
-unregister
-.RE
-
-The \fIsocketp\fP argument is a private pointer you have previously set with
-\fIcurl_multi_assign(3)\fP to be associated with the \fIs\fP socket. If no
-pointer has been set, socketp will be NULL. This argument is of course a
-service to applications that want to keep certain data or structs that are
-strictly associated to the given socket.
-
-The \fIuserp\fP argument is a private pointer you have previously set with
-\fIcurl_multi_setopt(3)\fP and the \fICURLMOPT_SOCKETDATA(3)\fP option.
-.SH "TYPICAL USAGE"
-1. Create a multi handle
-
-2. Set the socket callback with \fICURLMOPT_SOCKETFUNCTION(3)\fP
-
-3. Set the timeout callback with \fICURLMOPT_TIMERFUNCTION(3)\fP, to get to
-know what timeout value to use when waiting for socket activities.
-
-4. Add easy handles with curl_multi_add_handle()
-
-5. Provide some means to manage the sockets libcurl is using, so you can check
-them for activity. This can be done through your application code, or by way
-of an external library such as libevent or glib.
-
-6. Wait for activity on any of libcurl's sockets, use the timeout value your
-callback has been told
-
-7, When activity is detected, call curl_multi_socket_action() for the
-socket(s) that got action. If no activity is detected and the timeout expires,
-call \fIcurl_multi_socket_action(3)\fP with \fICURL_SOCKET_TIMEOUT\fP
-
-8. Go back to step 6.
 .SH EXAMPLE
 .nf
 /* the event-library gets told when there activity on the socket 'fd',
index d4cd41ea6f0d56ee21e930e747571e63912de4ee..600c2cbd9b68f15011d0a5d443060fe63169d7a8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_socket_action 3 "December 09, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_socket_action 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_socket_action \- reads/writes available data given an action
index 721bc3fd093bb3c23632487b4f24691f35f9ac2c..7a341be3875a9a25c83db76c4ab96f845e10bedf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_strerror 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_strerror 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_strerror - return string describing error code
@@ -28,8 +30,8 @@ curl_multi_strerror - return string describing error code
 .B #include <curl/curl.h>
 .BI "const char *curl_multi_strerror(CURLMcode " errornum ");"
 .SH DESCRIPTION
-The curl_multi_strerror() function returns a string describing the CURLMcode
-error code passed in the argument \fIerrornum\fP.
+The curl_multi_strerror() function returns a string describing the
+\fICURLMcode\fP error code passed in the argument \fIerrornum\fP.
 .SH EXAMPLE
 .nf
 int still_running;
index 4fda0325cbdfef9b89fedd787f899ce0baff552c..be04c38a668c59548d85cfb6f4e52127d826f75f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_timeout 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_timeout 3 "July 14, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_timeout \- how long to wait for action before proceeding
@@ -44,9 +46,9 @@ The timeout value returned in the long \fBtimeout\fP points to, is in number
 of milliseconds at this moment. If 0, it means you should proceed immediately
 without waiting for anything. If it returns -1, there's no timeout at all set.
 
-An application that uses the multi_socket API SHOULD NOT use this function, but
-SHOULD instead use \fIcurl_multi_setopt(3)\fP and its
-\fPCURLMOPT_TIMERFUNCTION\fP option for proper and desired behavior.
+An application that uses the multi_socket API SHOULD NOT use this function,
+but SHOULD instead use the \fICURLMOPT_TIMERFUNCTION(3)\fP option for proper
+and desired behavior.
 
 Note: if libcurl returns a -1 timeout here, it just means that libcurl
 currently has no stored timeout value. You must not wait too long (more than a
@@ -68,9 +70,11 @@ timeout.tv_usec = (timeo % 1000) * 1000;
 select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
 .fi
 .SH TYPICAL USAGE
-Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
-figure out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP or
-by a previous call to \fIcurl_multi_socket(3)\fP.
+Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. Figure
+out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP.
+
+When there is activity or timeout, call \fIcurl_multi_perform(3)\fP and then
+loop - until all transfers are complete.
 .SH AVAILABILITY
 This function was added in libcurl 7.15.4.
 .SH RETURN VALUE
index 3205fdfb1f72bb82d09675cc6b7bca459bc506f7..d48711a84db5e1886efafaa846a3957e5d74dddb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_wait 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_wait 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_wait - polls on all easy handles in a multi handle
@@ -41,8 +43,9 @@ Alternatively, if the multi handle has a pending internal timeout that has a
 shorter expiry time than \fItimeout_ms\fP, that shorter time will be used
 instead to make sure timeout accuracy is reasonably kept.
 
-The calling application may pass additional curl_waitfd structures which are
-similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call.
+The calling application may pass additional \fIcurl_waitfd\fP structures which
+are similar to \fIpoll(2)\fP's \fIpollfd\fP structure to be waited on in the
+same call.
 
 On completion, if \fInumfds\fP is non-NULL, it will be populated with the
 total number of file descriptors on which interesting events occurred. This
@@ -65,14 +68,14 @@ struct curl_waitfd {
 };
 .fi
 .IP CURL_WAIT_POLLIN
-Bit flag to curl_waitfd.events indicating the socket should poll on read
+Bit flag to \fIcurl_waitfd.events\fP indicating the socket should poll on read
 events such as new data received.
 .IP CURL_WAIT_POLLPRI
-Bit flag to curl_waitfd.events indicating the socket should poll on high
+Bit flag to \fIcurl_waitfd.events\fP indicating the socket should poll on high
 priority read events such as out of band data.
 .IP CURL_WAIT_POLLOUT
-Bit flag to curl_waitfd.events indicating the socket should poll on write
-events such as the socket being clear to write without blocking.
+Bit flag to \fIcurl_waitfd.events\fP indicating the socket should poll on
+write events such as the socket being clear to write without blocking.
 .SH EXAMPLE
 .nf
 CURL *easy_handle;
index c6f7df0dae92a76fbb756ccf5d41c9a7580c043a..929710cc37dbe3dcb8943b3452e6468889af776f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_multi_wakeup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_multi_wakeup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_wakeup - wakes up a sleeping curl_multi_poll call
index 89c0ffa76a83087024ee490c1a975725789c3731..9d67aea4abbff937b43f9ace585365c06d6b9965 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_share_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_cleanup 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_share_cleanup - Clean up a shared object
@@ -37,7 +39,7 @@ Passing in a NULL pointer in \fIshare_handle\fP will make this function return
 immediately with no action.
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
   /* use the share, then ... */
index f43974401d4e202f7abb8d05331da9c2d4868ee9..656c81b7bc1b038d6a8c946009b1fcaf9e20c8cb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_share_init 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_init 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_share_init - Create a shared object
@@ -30,17 +32,18 @@ curl_share_init - Create a shared object
 CURLSH *curl_share_init();
 .fi
 .SH DESCRIPTION
-This function returns a CURLSH handle to be used as input to all the other
-share-functions, sometimes referred to as a share handle in some places in the
-documentation. This init call MUST have a corresponding call to
-\fIcurl_share_cleanup\fP when all operations using the share are complete.
+This function returns a pointer to a \fICURLSH\fP handle to be used as input
+to all the other share-functions, sometimes referred to as a share handle in
+some places in the documentation. This init call MUST have a corresponding
+call to \fIcurl_share_cleanup(3)\fP when all operations using the share are
+complete.
 
 This \fIshare handle\fP is what you pass to curl using the
 \fICURLOPT_SHARE(3)\fP option with \fIcurl_easy_setopt(3)\fP, to make that
 specific curl handle use the data in this share.
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
   if(sh)
index 977b24a332a56376d3520540a0bd8eca0ed8fb70..711fcd17a77e11a271d9792e4415a15b1b29a613 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_share_setopt 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_setopt 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_share_setopt - Set options for a shared object
@@ -44,7 +46,7 @@ See \fICURLSHOPT_UNSHARE(3)\fP.
 See \fICURLSHOPT_USERDATA(3)\fP.
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
   if(sh)
index ef31edefbf49e0f62d527f51c4cc5ed616402a19..83850b044509b071518b568d40589eac3db7a16d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_share_strerror 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_share_strerror 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_share_strerror - return string describing error code
@@ -28,11 +30,11 @@ curl_share_strerror - return string describing error code
 .B #include <curl/curl.h>
 .BI "const char *curl_share_strerror(CURLSHcode " errornum ");"
 .SH DESCRIPTION
-The curl_share_strerror() function returns a string describing the CURLSHcode
-error code passed in the argument \fIerrornum\fP.
+The \fIcurl_share_strerror(3)\fP function returns a string describing the
+\fICURLSHcode\fP error code passed in the argument \fIerrornum\fP.
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT);
   if(sh)
index 4dd734d1ba7608de5573565cc0b676ea8b8892f4..e30019f3432bec82257a58a67df047346946ab71 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_slist_append 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_slist_append 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_slist_append - add a string to an slist
index ba84e62748614b3698ee834f9f90ab722a82234f..f1ac4dc15020626c3e5bd561cafa3fa687c99ae3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_slist_free_all 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_slist_free_all 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_slist_free_all - free an entire curl_slist list
index 0eb8fbcb21de85c7c9438d27c62649352f85dcb7..78d11252aab815b790e1ef4f4623b8e79c3a3586 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_strequal 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_strequal 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_strequal, curl_strnequal - case insensitive string comparisons
@@ -38,7 +40,7 @@ of the characters. It returns a non-zero (TRUE) integer if the strings are
 identical.
 .sp
 The \fBcurl_strnequal()\fP function is similar, except it only compares the
-first \fIlenght\fP characters of \fIstr1\fP.
+first \fIlength\fP characters of \fIstr1\fP.
 .sp
 These functions are provided by libcurl to enable applications to compare
 strings in a truly portable manner. There are no standard portable case
@@ -51,9 +53,7 @@ if(curl_strnequal(name, input, 5))
   printf("Name and input matches in the 5 first bytes\\n");
 .fi
 .SH AVAILABILITY
-These functions will be removed from the public libcurl API in a near
-future. They will instead be made "available" by source code access only, and
-then as curlx_strequal() and curlx_strenqual().
+Always
 .SH RETURN VALUE
 Non-zero if the strings are identical. Zero if they are not.
 .SH "SEE ALSO"
index 036dcdf097855026a39620af86d9c21608b34131..9133b7fac62cc996e0213ebbf53a4325b5b8f88b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_unescape 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_unescape 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_unescape - URL decodes the given string
@@ -37,8 +39,8 @@ string" and return that as a new allocated string. All input characters that
 are URL encoded (%XX where XX is a two-digit hexadecimal number) will be
 converted to their plain text versions.
 
-If the 'length' argument is set to 0, curl_unescape() will use strlen() on the
-input 'url' string to find out the size.
+If the 'length' argument is set to 0, \fIcurl_unescape(3)\fP will use strlen()
+on the input \fBurl\fP string to find out the size.
 
 You must \fIcurl_free(3)\fP the returned string when you are done with it.
 .SH EXAMPLE
@@ -61,4 +63,4 @@ be removed in a future release.
 .SH RETURN VALUE
 A pointer to a null-terminated string or NULL if it failed.
 .SH "SEE ALSO"
-.br curl_easy_escape "(3)," curl_easy_unescape "(3)," curl_free "(3)," RFC 2396
+.BR curl_easy_escape "(3)," curl_easy_unescape "(3)," curl_free "(3)," RFC 2396
index c89b68566b4dd209154566ea1c64df2d87ae2992..e423233e7175d0a5225454bbd2950faf3dd1e528 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_url 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_url - returns a new CURLU handle
+curl_url - returns a new URL handle
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -30,8 +32,8 @@ curl_url - returns a new CURLU handle
 CURLU *curl_url();
 .fi
 .SH DESCRIPTION
-This function will allocates and returns a pointer to a fresh CURLU handle, to
-be used for further use of the URL API.
+This function will allocates and returns a pointer to a fresh \fICURLU\fP
+handle, to be used for further use of the URL API.
 .SH EXAMPLE
 .nf
   CURLUcode rc;
index 90c22690f6afc5626e1e2c663a94e6197801c6fc..ab6353439cb44c91e6b7501fd6ef5d8f57c4036f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_url_cleanup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_cleanup 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_url_cleanup - free a CURLU handle
+curl_url_cleanup - free the URL handle
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -30,7 +32,7 @@ curl_url_cleanup - free a CURLU handle
 void curl_url_cleanup(CURLU *handle);
 .fi
 .SH DESCRIPTION
-Frees all the resources associated with the given CURLU handle!
+Frees all the resources associated with the given \fICURLU\fP handle!
 .SH EXAMPLE
 .nf
   CURLU *url = curl_url();
index 6ac0ccfa086f5426dff9727da65b8e589d1c3844..5fcfa52da9683d060fc4cb8f3c9cecd8cfdc78fb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_url_dup 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_dup 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_url_dup - duplicate a CURLU handle
+curl_url_dup - duplicate a URL handle
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -30,9 +32,9 @@ curl_url_dup - duplicate a CURLU handle
 CURLU *curl_url_dup(CURLU *inhandle);
 .fi
 .SH DESCRIPTION
-Duplicates a given CURLU \fIinhandle\fP and all its contents and returns a
-pointer to a new CURLU handle. The new handle also needs to be freed with
-\fIcurl_url_cleanup(3)\fP.
+Duplicates a given \fICURLU\fP \fIinhandle\fP and all its contents and returns
+a pointer to a new \fICURLU\fP handle. The new handle also needs to be freed
+with \fIcurl_url_cleanup(3)\fP.
 .SH EXAMPLE
 .nf
   CURLUcode rc;
index d28f53b301560786ace2902d8507ab15212c7905..f3c9c3d53ca518c430e78a0f63b56b3be747bba4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_url_get 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_get 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_url_get - extract a part from a URL
@@ -85,7 +87,7 @@ Scheme cannot be URL decoded on get.
 .IP CURLUPART_PASSWORD
 .IP CURLUPART_OPTIONS
 .IP CURLUPART_HOST
-The host name. If it is an IPv6 numeric address, the zoneid will not be part
+The host name. If it is an IPv6 numeric address, the zone id will not be part
 of it but is provided separately in \fICURLUPART_ZONEID\fP. IPv6 numerical
 addresses are returned within brackets ([]).
 .IP CURLUPART_ZONEID
index 8504b55acc2e8e89477d0631800fd5ce95a4f9aa..19d4037299a2a03519acd4cc8282ccf303006bd6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_url_set 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_set 3 "September 30, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_url_set - set a URL part
@@ -45,7 +47,13 @@ The application does not have to keep \fIcontent\fP around after a successful
 call.
 
 Setting a part to a NULL pointer will effectively remove that part's contents
-from the CURLU handle.
+from the \fICURLU\fP handle.
+
+By default, this API only accepts URLs using schemes for protocols that are
+supported built-in. To make libcurl parse URLs generically even for schemes it
+does not know about, the \fBCURLU_NON_SUPPORT_SCHEME\fP flags bit must be
+set. Otherwise, this function returns \fICURLUE_UNSUPPORTED_SCHEME\fP on URL
+schemes it does not recognize.
 
 The \fIflags\fP argument is a bitmask with independent features.
 .SH PARTS
@@ -80,21 +88,24 @@ 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.
 .IP CURLUPART_QUERY
 The query part will also get spaces converted to pluses when asked to URL
-encode on set with the CURLU_URLENCODE bit.
+encode on set with the \fICURLU_URLENCODE\fP bit.
 
-If used together with the \fICURLU_APPENDQUERY\fP bit, the provided part will
-be appended on the end of the existing query - and if the previous part did not
-end with an ampersand (&), an ampersand will be inserted before the new
-appended part.
-
-When \fICURLU_APPENDQUERY\fP is used together with \fICURLU_URLENCODE\fP, the
-first '=' symbol will not be URL encoded.
+If used together with the \fICURLU_APPENDQUERY\fP bit, the provided part is
+appended on the end of the existing query.
 
 The question mark in the URL is not part of the actual query contents.
 .IP CURLUPART_FRAGMENT
 The hash sign in the URL is not part of the actual fragment contents.
 .SH FLAGS
 The flags argument is zero, one or more bits set in a bitmask.
+.IP CURLU_APPENDQUERY
+Can be used when setting the \fICURLUPART_QUERY\fP component. The provided new
+part will then instead be appended at the end of the existing query - and if
+the previous part did not end with an ampersand (&), an ampersand gets
+inserted before the new appended part.
+
+When \fICURLU_APPENDQUERY\fP is used together with \fICURLU_URLENCODE\fP, the
+first '=' symbol will not be URL encoded.
 .IP CURLU_NON_SUPPORT_SCHEME
 If set, allows \fIcurl_url_set(3)\fP to set a non-supported scheme.
 .IP CURLU_URLENCODE
@@ -136,7 +147,7 @@ When space is used and allowed in a URL, it will be stored as-is unless
 \fICURLU_URLENCODE\fP is also set, which then makes libcurl URL-encode the
 space before stored. This affects how the URL will be constructed when
 \fIcurl_url_get(3)\fP is subsequently used to extract the full URL or
-individual parts.
+individual parts. (Added in 7.78.0)
 .SH EXAMPLE
 .nf
   CURLUcode rc;
@@ -152,8 +163,8 @@ individual parts.
 .SH AVAILABILITY
 Added in 7.62.0. CURLUPART_ZONEID was added in 7.65.0.
 .SH RETURN VALUE
-Returns a CURLUcode error value, which is CURLUE_OK (0) if everything went
-fine. See the \fIlibcurl-errors(3)\fP man page for the full list with
+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
index c88cc073c8800bd26572d07623117ffc8af79bd8..f76f34aded88c0e89a93b1c71791177ce7dda85a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_url_strerror 3 "November 04, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_url_strerror 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_url_strerror - return string describing error code
index 023290f864693659363ff91908ba124436cfc785..b3b3588bf61bc79ed2229de945614f9bdb496608 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH curl_version 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_version 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 curl_version - returns the libcurl version string
index 925804c1874a0c097a819e04e756143bed4df495..a8f2f1695b741bad354c5470ba9779250be82905 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH curl_version_info 3 "November 26, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH curl_version_info 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-curl_version_info - returns run-time libcurl version info
+curl_version_info - returns runtime libcurl version info
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -173,8 +175,8 @@ supports IPv6
 .IP CURL_VERSION_KERBEROS4
 supports Kerberos V4 (when using FTP). Legacy bit. Deprecated since 7.33.0.
 .IP CURL_VERSION_KERBEROS5
-supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy
-(Added in 7.40.0)
+supports Kerberos V5 authentication for FTP, IMAP, LDAP, POP3, SMTP and
+SOCKSv5 proxy. (Added in 7.40.0)
 .IP CURL_VERSION_LARGEFILE
 libcurl was built with support for large files. (Added in 7.11.1)
 .IP CURL_VERSION_UNICODE
@@ -205,6 +207,9 @@ libcurl was built with support for SSPI. This is only available on Windows and
 makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and
 Digest authentication. It also allows libcurl to use the current user
 credentials without the app having to pass them on. (Added in 7.13.2)
+.IP CURL_VERSION_THREADSAFE
+libcurl was built with thread-safety support (Atomic or SRWLOCK) to protect
+curl initialization. (Added in 7.84.0) See \fIlibcurl-thread(3)\fP
 .IP CURL_VERSION_TLSAUTH_SRP
 libcurl was built with support for TLS-SRP (in one or more of the built-in TLS
 backends). (Added in 7.21.4)
@@ -214,7 +219,7 @@ libcurl was built with support for Unix domain sockets.
 .RE
 \fIssl_version\fP is an ASCII string for the TLS library name + version
 used. If libcurl has no SSL support, this is NULL. For example "Schannel",
-\&"SecureTransport" or "OpenSSL/1.1.0g".
+\&"Secure Transport" or "OpenSSL/1.1.0g".
 
 \fIssl_version_num\fP is always 0.
 
diff --git a/docs/libcurl/curl_ws_meta.3 b/docs/libcurl/curl_ws_meta.3
new file mode 100644 (file)
index 0000000..451551e
--- /dev/null
@@ -0,0 +1,120 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_ws_meta 3 "October 03, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_ws_meta - meta data WebSocket information
+.SH SYNOPSIS
+.nf
+#include <curl/easy.h>
+
+struct curl_ws_frame {
+  int age;              /* zero */
+  int flags;            /* See the CURLWS_* defines */
+  curl_off_t offset;    /* the offset of this data into the frame */
+  curl_off_t bytesleft; /* number of pending bytes left of the payload */
+};
+
+struct curl_ws_frame *curl_ws_meta(CURL *curl);
+.fi
+.SH DESCRIPTION
+This function call is EXPERIMENTAL.
+
+When the write callback (\fICURLOPT_WRITEFUNCTION(3)\fP) is invoked on
+received WebSocket traffic, \fIcurl_ws_meta(3)\fP can be called from within
+the callback to provide additional information about the current frame.
+
+This function only works from within the callback, and only when receiving
+WebSocket data.
+
+This function requires an easy handle as input argument for libcurl to know
+what transfer the question is about, but as there is no such pointer provided
+to the callback by libcurl itself, applications that want to use
+\fIcurl_ws_meta(3)\fP need to pass it on to the callback on its own.
+
+.SH "struct fields"
+.IP age
+This field specify the age of this struct. It is always zero for now.
+.IP flags
+This is a bitmask with individual bits set that describes the WebSocket
+data. See the list below.
+.IP offset
+When this frame is a continuation of fragment data already delivered, this is
+the offset into the final fragment where this piece belongs.
+.IP bytesleft
+If this is not a complete fragment, the \fIbytesleft\fP field informs about
+how many additional bytes are expected to arrive before this fragment is
+complete.
+.SH FLAGS
+.IP CURLWS_TEXT
+The buffer contains text data. Note that this makes a difference to WebSocket
+but libcurl itself will not make any verification of the content or
+precautions that you actually receive valid UTF-8 content.
+.IP CURLWS_BINARY
+This is binary data.
+.IP CURLWS_CONT
+This is not the final fragment of the message, it implies that there will be
+another fragment coming as part of the same message.
+.IP CURLWS_CLOSE
+This transfer is now closed.
+.IP CURLWS_PING
+This as an incoming ping message, that expects a pong response.
+.SH EXAMPLE
+.nf
+
+/* we pass a pointer to this struct to the callback */
+struct customdata {
+  CURL *easy;
+  void *ptr;
+};
+
+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);
+
+  /* m->flags tells us about the traffic */
+}
+
+{
+  struct customdata custom;
+  custom.easy = easy;
+  custom.ptr = NULL;
+  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+  curl_easy_setopt(curl, CURLOPT_WRITEDATA, &custom);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.86.0.
+.SH RETURN VALUE
+This function returns a pointer to a \fIcurl_ws_frame\fP struct with
+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), "
diff --git a/docs/libcurl/curl_ws_recv.3 b/docs/libcurl/curl_ws_recv.3
new file mode 100644 (file)
index 0000000..a7152ae
--- /dev/null
@@ -0,0 +1,61 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_ws_recv 3 "October 03, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_ws_recv - receive WebSocket data
+.SH SYNOPSIS
+.nf
+#include <curl/easy.h>
+
+CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
+                      size_t *recv, struct curl_ws_frame **meta);
+.fi
+.SH DESCRIPTION
+This function call is EXPERIMENTAL.
+
+Retrieves as much as possible of a received WebSocket data fragment into the
+\fBbuffer\fP, but not more than \fBbuflen\fP bytes. \fIrecv\fP is set to the
+number of bytes actually stored.
+
+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.
+.SH EXAMPLE
+.nf
+
+.fi
+.SH AVAILABILITY
+Added in 7.86.0.
+.SH RETURN VALUE
+
+.SH "SEE ALSO"
+.BR curl_easy_setopt "(3), " curl_easy_perform "(3), "
+.BR curl_easy_getinfo "(3), "
+.BR curl_ws_send "(3) "
diff --git a/docs/libcurl/curl_ws_send.3 b/docs/libcurl/curl_ws_send.3
new file mode 100644 (file)
index 0000000..628d358
--- /dev/null
@@ -0,0 +1,91 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_ws_send 3 "October 07, 2022" "libcurl 7.86.0" "libcurl Manual"
+
+.SH NAME
+curl_ws_send - send WebSocket data
+.SH SYNOPSIS
+.nf
+#include <curl/easy.h>
+
+CURLcode curl_ws_send(CURL *curl, const void *buffer, size_t buflen,
+                      size_t *sent, curl_off_t fragsize,
+                      unsigned int flags);
+.fi
+.SH DESCRIPTION
+This function call is EXPERIMENTAL.
+
+Send the specific message fragment over an established WebSocket
+connection. The \fIbuffer\fP holds the data to send and it is \fIbuflen\fP
+number of payload bytes in that memory area.
+
+\fIsent\fP is returned as the number of payload bytes actually sent.
+
+To send a (huge) fragment using multiple calls with partial content per
+invoke, set the \fICURLWS_OFFSET\fP bit and the \fIfragsize\fP argument as the
+total expected size for the first part, then set the \fICURLWS_OFFSET\fP with
+a zero \fIfragsize\fP for the following parts.
+
+If not sending a partial fragment or if this is raw mode, \fIfragsize\fP
+should be set to zero.
+
+If \fBCURLWS_RAW_MODE\fP is enabled in \fICURLOPT_WS_OPTIONS(3)\fP, the
+\fBflags\fP argument should be set to 0.
+
+.SH FLAGS
+.IP CURLWS_TEXT
+The buffer contains text data. Note that this makes a difference to WebSocket
+but libcurl itself will not make any verification of the content or
+precautions that you actually send valid UTF-8 content.
+.IP CURLWS_BINARY
+This is binary data.
+.IP CURLWS_CONT
+This is not the final fragment of the message, which implies that there will
+be another fragment coming as part of the same message where this bit is not
+set.
+.IP CURLWS_CLOSE
+Close this transfer.
+.IP CURLWS_PING
+This as a ping.
+.IP CURLWS_PONG
+This as a pong.
+.IP CURLWS_OFFSET
+The provided data is only a partial fragment and there will be more in a
+following call to \fIcurl_ws_send()\fP. When sending only a piece of the
+fragment like this, the \fIfragsize\fP must be provided with the total
+expected fragment size in the first call and it needs to be zero in subsequent
+calls.
+.SH EXAMPLE
+.nf
+
+.fi
+.SH AVAILABILITY
+Added in 7.86.0.
+.SH RETURN VALUE
+
+.SH "SEE ALSO"
+.BR curl_easy_setopt "(3), " curl_easy_perform "(3), "
+.BR curl_easy_getinfo "(3), "
+.BR curl_ws_recv "(3) "
index ab7184a67c1ba21ebac60b4947559fe8375e9fa9..d60f34816fed600a3fe073ad2397263b25a962c3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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 "November 08, 2021" "libcurl 7.81.0" "libcurl easy interface"
+.TH libcurl 3 "May 17, 2022" "libcurl 7.86.0" "libcurl easy interface"
 
 .SH NAME
 libcurl-easy \- easy interface overview
index 0ac81e440bca068dd0239d944ed0594f14e3c411..4560eb9afa51e13da67a1e59a463fcde570c5457 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2018 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH libcurl-env 3 "October 31, 2021" "libcurl 7.81.0" "libcurl environment variables"
+.TH libcurl-env 3 "September 20, 2022" "libcurl 7.86.0" "libcurl environment variables"
 
 .SH NAME
 libcurl-env \- environment variables libcurl understands
@@ -49,20 +51,25 @@ specific backend at first use. If no selection is done by the program using
 libcurl, this variable's selection will be used. Setting a name that is not a
 built-in alternative will make libcurl stay with the default.
 
-SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls,
-mesalink, nss, openssl, rustls, schannel, secure-transport, wolfssl
+SSL backend names (case-insensitive): BearSSL, GnuTLS, gskit, mbedTLS,
+nss, OpenSSL, rustls, Schannel, Secure-Transport, wolfSSL
 .IP HOME
 When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
 checked as the primary way to find the "current" home directory in which
 the .netrc file is likely to exist.
+.IP USERPROFILE
+When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
+checked as the secondary way to find the "current" home directory (on Windows
+only) in which the .netrc file is likely to exist.
 .IP LOGNAME
-User name to use when invoking the ntlm-wb tool, if NTLMUSER was not set.
+User name to use when invoking the \fIntlm-wb\fP tool, if \fINTLMUSER\fP was
+not set.
 .IP NO_PROXY
 This has the same functionality as the \fICURLOPT_NOPROXY(3)\fP option: it
 gives libcurl a comma-separated list of host name patterns for which libcurl
 should not use a proxy.
 .IP NTLMUSER
-User name to use when invoking the ntlm-wb tool.
+User name to use when invoking the \fIntlm-wb\fP tool.
 .IP SSLKEYLOGFILE
 When set and libcurl runs with a SSL backend that supports this feature,
 libcurl will save SSL secrets into the given file name. Using those SSL
@@ -72,8 +79,8 @@ analyze/view the traffic.
 When libcurl runs with the NSS backends for TLS features, this variable is
 used to find the directory for NSS PKI database instead of the built-in.
 .IP USER
-User name to use when invoking the ntlm-wb tool, if NTLMUSER and LOGNAME
-were not set.
+User name to use when invoking the \fIntlm-wb\fP tool, if \fINTLMUSER\fP and
+\fILOGNAME\fP were not set.
 .SH "Debug Variables"
 There's a set of variables only recognized and used if libcurl was built
 "debug enabled", which should never be true for a library used in production.
@@ -88,6 +95,7 @@ random outputs can be tested for what they generate.
 .IP "CURL_TRACE"
 Debug-only variable. Used for debugging the lib/ldap implementation.
 .IP "CURL_NTLM_WB_FILE"
-Debug-only variable. Used to set to a debug-version of the ntlm-wb executable.
+Debug-only variable. Used to set to a debug-version of the \fIntlm-wb\fP
+executable.
 .IP "CURL_OPENLDAP_TRACE"
-Debug-only variable. Used for debugging the lib/openldap.c implementation.
+Debug-only variable. Used for debugging the OpenLDAP implementation.
index afa01d9f48e2ceefb6923d9bcee5aeb1e47c8e5b..500f4a62807500287f99a0caf75d7acdf84772a8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-errors 3 "December 08, 2021" "libcurl 7.81.0" "libcurl errors"
+.TH libcurl-errors 3 "September 20, 2022" "libcurl 7.86.0" "libcurl errors"
 
 .SH NAME
 libcurl-errors \- error codes in libcurl
@@ -55,9 +57,9 @@ due to a build-time decision. This means that a feature or option was not
 enabled or explicitly disabled when libcurl was built and in order to get it
 to function you have to get a rebuilt libcurl.
 .IP "CURLE_COULDNT_RESOLVE_PROXY (5)"
-Couldn't resolve proxy. The given proxy host could not be resolved.
+Could not resolve proxy. The given proxy host could not be resolved.
 .IP "CURLE_COULDNT_RESOLVE_HOST (6)"
-Couldn't resolve host. The given remote host was not resolved.
+Could not resolve host. The given remote host was not resolved.
 .IP "CURLE_COULDNT_CONNECT (7)"
 Failed to connect() to host or proxy.
 .IP "CURLE_WEIRD_SERVER_REPLY (8)"
@@ -95,6 +97,8 @@ does not match the previously given size.
 .IP "CURLE_FTP_COULDNT_RETR_FILE (19)"
 This was either a weird reply to a 'RETR' command or a zero byte transfer
 complete.
+.IP "Obsolete error (20)"
+Not used in modern versions.
 .IP "CURLE_QUOTE_ERROR (21)"
 When sending custom "QUOTE" commands to the remote server, one of the commands
 returned an error code that was 400 or higher (for FTP) or otherwise
@@ -105,6 +109,8 @@ server returns an error code that is >= 400.
 .IP "CURLE_WRITE_ERROR (23)"
 An error occurred when writing received data to a local file, or an error was
 returned to libcurl from a write callback.
+.IP "Obsolete error (24)"
+Not used in modern versions.
 .IP "CURLE_UPLOAD_FAILED (25)"
 Failed starting the upload. For FTP, the server typically denied the STOR
 command. The error buffer usually contains the server's explanation for this.
@@ -117,6 +123,8 @@ things are severely screwed up if this ever occurs.
 .IP "CURLE_OPERATION_TIMEDOUT (28)"
 Operation timeout. The specified time-out period was reached according to the
 conditions.
+.IP "Obsolete error (29)"
+Not used in modern versions.
 .IP "CURLE_FTP_PORT_FAILED (30)"
 The FTP PORT command returned error. This mostly happens when you have not
 specified a good enough address for libcurl to use. See
@@ -124,6 +132,8 @@ specified a good enough address for libcurl to use. See
 .IP "CURLE_FTP_COULDNT_USE_REST (31)"
 The FTP REST command returned error. This should never happen if the server is
 sane.
+.IP "Obsolete error (32)"
+Not used in modern versions.
 .IP "CURLE_RANGE_ERROR (33)"
 The server does not support or accept range requests.
 .IP "CURLE_HTTP_POST_ERROR (34)"
@@ -143,16 +153,22 @@ path does not identify an existing file. Did you check file permissions?
 LDAP cannot bind. LDAP bind operation failed.
 .IP "CURLE_LDAP_SEARCH_FAILED (39)"
 LDAP search failed.
+.IP "Obsolete error (40)"
+Not used in modern versions.
 .IP "CURLE_FUNCTION_NOT_FOUND (41)"
 Function not found. A required zlib function was not found.
 .IP "CURLE_ABORTED_BY_CALLBACK (42)"
 Aborted by callback. A callback returned "abort" to libcurl.
 .IP "CURLE_BAD_FUNCTION_ARGUMENT (43)"
 A function was called with a bad parameter.
+.IP "Obsolete error (44)"
+Not used in modern versions.
 .IP "CURLE_INTERFACE_FAILED (45)"
 Interface error. A specified outgoing interface could not be used. Set which
 interface to use for outgoing connections' source IP address with
 \fICURLOPT_INTERFACE(3)\fP.
+.IP "Obsolete error (46)"
+Not used in modern versions.
 .IP "CURLE_TOO_MANY_REDIRECTS (47)"
 Too many redirects. When following redirects, libcurl hit the maximum amount.
 Set your limit with \fICURLOPT_MAXREDIRS(3)\fP.
@@ -164,6 +180,8 @@ exact option it concerns.
 .IP "CURLE_SETOPT_OPTION_SYNTAX (49)"
 An option passed in to a setopt was wrongly formatted. See error message for
 details about what option.
+.IP "Obsolete errors (50-51)"
+Not used in modern versions.
 .IP "CURLE_GOT_NOTHING (52)"
 Nothing was returned from the server, and under the circumstances, getting
 nothing is considered an error.
@@ -175,18 +193,20 @@ Failed setting the selected SSL crypto engine as default.
 Failed sending network data.
 .IP "CURLE_RECV_ERROR (56)"
 Failure with receiving network data.
+.IP "Obsolete error (57)"
+Not used in modern versions.
 .IP "CURLE_SSL_CERTPROBLEM (58)"
 problem with the local client certificate.
 .IP "CURLE_SSL_CIPHER (59)"
-Couldn't use specified cipher.
+Could not use specified cipher.
 .IP "CURLE_PEER_FAILED_VERIFICATION (60)"
-The remote server's SSL certificate or SSH md5 fingerprint was deemed not OK.
+The remote server's SSL certificate or SSH fingerprint was deemed not OK.
 This error code has been unified with CURLE_SSL_CACERT since 7.62.0. Its
 previous value was 51.
 .IP "CURLE_BAD_CONTENT_ENCODING (61)"
 Unrecognized transfer encoding.
-.IP "CURLE_LDAP_INVALID_URL (62)"
-Invalid LDAP URL.
+.IP "Obsolete error (62)"
+Not used in modern versions.
 .IP "CURLE_FILESIZE_EXCEEDED (63)"
 Maximum file size exceeded.
 .IP "CURLE_USE_SSL_FAILED (64)"
@@ -212,10 +232,8 @@ Unknown TFTP transfer ID.
 File already exists and will not be overwritten.
 .IP "CURLE_TFTP_NOSUCHUSER (74)"
 This error should never be returned by a properly functioning TFTP server.
-.IP "CURLE_CONV_FAILED (75)"
-Character conversion failed.
-.IP "CURLE_CONV_REQD (76)"
-Caller must register conversion callbacks.
+.IP "Obsolete error (75-76)"
+Not used in modern versions.
 .IP "CURLE_SSL_CACERT_BADFILE (77)"
 Problem with reading the SSL CA cert (path? access rights?)
 .IP "CURLE_REMOTE_FILE_NOT_FOUND (78)"
@@ -235,8 +253,8 @@ Issuer check failed (Added in 7.19.0)
 .IP "CURLE_FTP_PRET_FAILED (84)"
 The FTP server does not understand the PRET command at all or does not support
 the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST(3)\fP, a
-custom LIST command will be sent with PRET CMD before PASV as well. (Added in
-7.20.0)
+custom LIST command will be sent with the PRET command before PASV as
+well. (Added in 7.20.0)
 .IP "CURLE_RTSP_CSEQ_ERROR (85)"
 Mismatch of RTSP CSeq numbers.
 .IP "CURLE_RTSP_SESSION_ERROR (86)"
@@ -264,8 +282,13 @@ be one out of several problems, see the error buffer for details.
 .IP "CURLE_QUIC_CONNECT_ERROR (96)"
 QUIC connection error. This error may be caused by an SSL library error. QUIC
 is the protocol used for HTTP/3 transfers.
+.IP "CURLE_PROXY (97)"
+Proxy handshake error. \fICURLINFO_PROXY_ERROR(3)\fP provides extra details on
+the specific problem.
 .IP "CURLE_SSL_CLIENTCERT (98)"
 SSL Client Certificate required.
+.IP "CURLE_UNRECOVERABLE_POLL (99)"
+An internal call to poll() or select() returned error that is not recoverable.
 .IP "CURLE_OBSOLETE*"
 These error codes will never be returned. They were used in an old libcurl
 version and are currently unused.
@@ -279,12 +302,12 @@ between. Before version 7.20.0 (released on February 9 2010) this could be retur
 \fIcurl_multi_perform(3)\fP, but in later versions this return code is never
 used.
 .IP "CURLM_CALL_MULTI_SOCKET (-1)"
-An alias for CURLM_CALL_MULTI_PERFORM. Never returned by modern libcurl
+An alias for \fICURLM_CALL_MULTI_PERFORM\fP. Never returned by modern libcurl
 versions.
 .IP "CURLM_OK (0)"
 Things are fine.
 .IP "CURLM_BAD_HANDLE (1)"
-The passed-in handle is not a valid CURLM handle.
+The passed-in handle is not a valid \fICURLM\fP handle.
 .IP "CURLM_BAD_EASY_HANDLE (2)"
 An easy handle was not good/valid. It could mean that it is not an easy handle
 at all, or possibly that the handle already is in use by this or another multi
@@ -305,14 +328,16 @@ second time. (Added in 7.32.1)
 .IP "CURLM_RECURSIVE_API_CALL (8)"
 An API function was called from inside a callback.
 .IP "CURLM_WAKEUP_FAILURE (9)"
-Wakeup is unavailable or failed.
+Wake up is unavailable or failed.
 .IP "CURLM_BAD_FUNCTION_ARGUMENT (10)"
 A function was called with a bad parameter.
 .IP "CURLM_ABORTED_BY_CALLBACK (11)"
 A multi handle callback returned error.
+.IP "CURLM_UNRECOVERABLE_POLL (12)"
+An internal call to poll() or select() returned error that is not recoverable.
 .SH "CURLSHcode"
-The "share" interface will return a CURLSHcode to indicate when an error has
-occurred. Also consider \fIcurl_share_strerror(3)\fP.
+The "share" interface will return a \fBCURLSHcode\fP to indicate when an error
+has occurred. Also consider \fIcurl_share_strerror(3)\fP.
 .IP "CURLSHE_OK (0)"
 All fine. Proceed as usual.
 .IP "CURLSHE_BAD_OPTION (1)"
@@ -328,10 +353,10 @@ Not enough memory was available.
 The requested sharing could not be done because the library you use do not have
 that particular feature enabled. (Added in 7.23.0)
 .SH "CURLUcode"
-The URL interface will return a CURLUcode to indicate when an error has
+The URL interface will return a \fICURLUcode\fP to indicate when an error has
 occurred. Also consider \fIcurl_url_strerror(3)\fP.
 .IP "CURLUE_BAD_HANDLE (1)"
-An invalid CURLU pointer was passed as argument.
+An invalid URL handle was passed as argument.
 .IP "CURLUE_BAD_PARTPOINTER (2)"
 An invalid 'part' argument was passed as argument.
 .IP "CURLUE_MALFORMED_INPUT (3)"
@@ -365,7 +390,7 @@ There is no query part in the URL.
 .IP "CURLUE_NO_FRAGMENT (17)"
 There is no fragment part in the URL.
 .IP "CURLUE_NO_ZONEID (18)"
-There is no zoneid set in the URL.
+There is no zone id set in the URL.
 .IP "CURLUE_BAD_FILE_URL (19)"
 The file:// URL is invalid.
 .IP "CURLUE_BAD_FRAGMENT (20)"
index 654d7eb9b247d5e6a72c7163a8ead41e20233d06..f49eb976f98dc4feff3127f4a1b92756f4dbeb19 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-multi 3 "December 23, 2021" "libcurl 7.81.0" "libcurl multi interface"
+.TH libcurl-multi 3 "September 20, 2022" "libcurl 7.86.0" "libcurl multi interface"
 
 .SH NAME
 libcurl-multi \- how to use the multi interface
@@ -57,7 +59,7 @@ transfers in parallel. Each single transfer is built up around an easy
 handle. You create all the easy handles you need, and setup the appropriate
 options for each easy handle using \fIcurl_easy_setopt(3)\fP.
 
-There are two flavours of the multi interface, the select() oriented one and
+There are two flavors of the multi interface, the select() oriented one and
 the event based one we call multi_socket. You will benefit from reading
 through the description of both versions to fully understand how they work and
 differentiate. We start out with the select() oriented version.
@@ -88,7 +90,7 @@ Your application extracts info from libcurl about when it would like to get
 invoked to transfer data or do other work. The most convenient way is to use
 \fIcurl_multi_poll(3)\fP that will help you wait until the application should
 call libcurl again. The older API to accomplish the same thing is
-\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
+\fIcurl_multi_fdset(3)\fP that extracts \fIfd_sets\fP from libcurl to use in
 select() or poll() calls in order to get to know when the transfers in the
 multi stack might need attention. Both these APIs allow for your program to
 wait for input on your own private file descriptors at the same time.
@@ -159,10 +161,11 @@ better scale upward and beyond thousands of simultaneous transfers without
 losing performance.
 
 When you have added your initial set of handles, you call
-\fIcurl_multi_socket_action(3)\fP with CURL_SOCKET_TIMEOUT set in the sockfd
-argument, and you will get callbacks call that sets you up and you then continue
-to call \fIcurl_multi_socket_action(3)\fP accordingly when you get activity on
-the sockets you have been asked to wait on, or if the timeout timer expires.
+\fIcurl_multi_socket_action(3)\fP with CURL_SOCKET_TIMEOUT set in the
+\fIsockfd\fP argument, and you will get callbacks call that sets you up and
+you then continue to call \fIcurl_multi_socket_action(3)\fP accordingly when
+you get activity on the sockets you have been asked to wait on, or if the
+timeout timer expires.
 
 You can poll \fIcurl_multi_info_read(3)\fP to see if any transfer has
 completed, as it then has a message saying so.
index 1891a4a687f1e167423a48cca71d45a676bd5666..e7536cb5d276f55ea22b2e40dc5483f0ac5e1727 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-security 3 "December 15, 2021" "libcurl 7.81.0" "libcurl security"
+.TH libcurl-security 3 "September 20, 2022" "libcurl 7.86.0" "libcurl security"
 
 .SH NAME
 libcurl-security \- security considerations when using libcurl
@@ -44,7 +46,7 @@ should be aware.
 .SH "Command Lines"
 If you use a command line tool (such as curl) that uses libcurl, and you give
 options to the tool on the command line those options can get read by other
-users of your system when they use 'ps' or other tools to list currently
+users of your system when they use \fIps\fP or other tools to list currently
 running processes.
 
 To avoid these problems, never feed sensitive things to programs using command
@@ -75,23 +77,22 @@ To avoid this problem, use an authentication mechanism or other protocol that
 does not let snoopers see your password: Digest, CRAM-MD5, Kerberos, SPNEGO or
 NTLM authentication. Or even better: use authenticated protocols that protect
 the entire connection and everything sent over it.
-.SH "Un-authenticated Connections"
+.SH "Unauthenticated Connections"
 Protocols that do not have any form of cryptographic authentication cannot
 with any certainty know that they communicate with the right remote server.
 
 If your application is using a fixed scheme or fixed host name, it is not safe
-as long as the connection is un-authenticated. There can be a
-man-in-the-middle or in fact the whole server might have been replaced by an
-evil actor.
+as long as the connection is unauthenticated. There can be a man-in-the-middle
+or in fact the whole server might have been replaced by an evil actor.
 
-Un-authenticated protocols are unsafe. The data that comes back to curl may
+Unauthenticated protocols are unsafe. The data that comes back to curl may
 have been injected by an attacker. The data that curl sends might be modified
 before it reaches the intended server. If it even reaches the intended server
 at all.
 
 Remedies:
 .IP "Restrict operations to authenticated transfers"
-Ie use authenticated protocols protected with HTTPS or SSH.
+Use authenticated protocols protected with HTTPS or SSH.
 .IP "Make sure the server's certificate etc is verified"
 Never ever switch off certificate verification.
 .SH "Redirects"
@@ -105,7 +106,7 @@ A redirect to a file: URL would cause the libcurl to read (or write) arbitrary
 files from the local filesystem. If the application returns the data back to
 the user (as would happen in some kinds of CGI scripts), an attacker could
 leverage this to read otherwise forbidden data (e.g.
-file://localhost/etc/passwd).
+\fBfile://localhost/etc/passwd\fP).
 
 If authentication credentials are stored in the ~/.netrc file, or Kerberos is
 in use, any other URL type (not just file:) that requires authentication is
@@ -115,7 +116,7 @@ then return data even when the server is password protected.
 In the same way, if an unencrypted SSH private key has been configured for the
 user running the libcurl application, SCP: or SFTP: URLs could access password
 or private-key protected resources,
-e.g. sftp://user@some-internal-server/etc/passwd
+e.g. \fBsftp://user@some-internal-server/etc/passwd\fP
 
 The \fICURLOPT_REDIR_PROTOCOLS(3)\fP and \fICURLOPT_NETRC(3)\fP options can be
 used to mitigate against this kind of attack.
@@ -131,21 +132,31 @@ as necessary. Alternately, an app could leave \fICURLOPT_FOLLOWLOCATION(3)\fP
 enabled but set \fICURLOPT_REDIR_PROTOCOLS(3)\fP and install a
 \fICURLOPT_OPENSOCKETFUNCTION(3)\fP or \fICURLOPT_PREREQFUNCTION(3)\fP callback
 function in which addresses are sanitized before use.
+.SH "CRLF in Headers"
+For all options in libcurl which specify headers, including but not limited to
+\fICURLOPT_HTTPHEADER(3)\fP, \fICURLOPT_PROXYHEADER(3)\fP,
+\fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP, \fICURLOPT_REFERER(3)\fP
+and \fICURLOPT_RANGE(3)\fP, libcurl will send the headers as-is and will not
+apply any special sanitation or normalization to them.
+
+If you allow untrusted user input into these options without sanitizing CRLF
+sequences in them, someone malicious may be able to modify the request in a
+way you did not intend such as injecting new headers.
 .SH "Local Resources"
 A user who can control the DNS server of a domain being passed in within a URL
 can change the address of the host to a local, private address which a
 server-side libcurl-using application could then use. e.g. the innocuous URL
-http://fuzzybunnies.example.com/ could actually resolve to the IP address of a
-server behind a firewall, such as 127.0.0.1 or 10.1.2.3. Applications can
-mitigate against this by setting a \fICURLOPT_OPENSOCKETFUNCTION(3)\fP
-or \fICURLOPT_PREREQFUNCTION(3)\fP and checking the address before a
-connection.
+\fBhttp://fuzzybunnies.example.com/\fP could actually resolve to the IP
+address of a server behind a firewall, such as 127.0.0.1 or
+10.1.2.3. Applications can mitigate against this by setting a
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP or \fICURLOPT_PREREQFUNCTION(3)\fP and
+checking the address before a connection.
 
 All the malicious scenarios regarding redirected URLs apply just as well to
 non-redirected URLs, if the user is allowed to specify an arbitrary URL that
 could point to a private resource. For example, a web app providing a
-translation service might happily translate file://localhost/etc/passwd and
-display the result. Applications can mitigate against this with the
+translation service might happily translate \fBfile://localhost/etc/passwd\fP
+and display the result. Applications can mitigate against this with the
 \fICURLOPT_PROTOCOLS(3)\fP option as well as by similar mitigation techniques
 for redirections.
 
@@ -172,16 +183,16 @@ or a mix of decimal, octal or hexadecimal encoding.
 .SH "IPv6 Addresses"
 libcurl will normally handle IPv6 addresses transparently and just as easily
 as IPv4 addresses. That means that a sanitizing function that filters out
-addresses like 127.0.0.1 is not sufficient--the equivalent IPv6 addresses ::1,
-::, 0:00::0:1, ::127.0.0.1 and ::ffff:7f00:1 supplied somehow by an attacker
-would all bypass a naive filter and could allow access to undesired local
-resources. IPv6 also has special address blocks like link-local and site-local
-that generally should not be accessed by a server-side libcurl-using
-application. A poorly configured firewall installed in a data center,
-organization or server may also be configured to limit IPv4 connections but
-leave IPv6 connections wide open. In some cases, setting
-\fICURLOPT_IPRESOLVE(3)\fP to CURL_IPRESOLVE_V4 can be used to limit resolved
-addresses to IPv4 only and bypass these issues.
+addresses like 127.0.0.1 is not sufficient--the equivalent IPv6 addresses
+\fB::1\fP, \fB::\fP, \fB0:00::0:1\fP, \fB::127.0.0.1\fP and
+\fB::ffff:7f00:1\fP supplied somehow by an attacker would all bypass a naive
+filter and could allow access to undesired local resources. IPv6 also has
+special address blocks like link-local and site-local that generally should
+not be accessed by a server-side libcurl-using application. A poorly
+configured firewall installed in a data center, organization or server may
+also be configured to limit IPv4 connections but leave IPv6 connections wide
+open. In some cases, setting \fICURLOPT_IPRESOLVE(3)\fP to CURL_IPRESOLVE_V4
+can be used to limit resolved addresses to IPv4 only and bypass these issues.
 .SH Uploads
 When uploading, a redirect can cause a local (or remote) file to be
 overwritten. Applications must not allow any unsanitized URL to be passed in
@@ -212,9 +223,9 @@ between requests.
 .SH "Dangerous SCP URLs"
 SCP URLs can contain raw commands within the scp: URL, which is a side effect
 of how the SCP protocol is designed. e.g.
-
+.nf
   scp://user:pass@host/a;date >/tmp/test;
-
+.fi
 Applications must not allow unsanitized SCP: URLs to be passed in for
 downloads.
 .SH "file://"
@@ -294,13 +305,13 @@ as within libcurl itself.
 When performing an FTP transfer, two TCP connections are used: one for setting
 up the transfer and one for the actual data.
 
-FTP is not only un-authenticated, but the setting up of the second transfer is
+FTP is not only unauthenticated, but the setting up of the second transfer is
 also a weak spot. The second connection to use for data, is either setup with
 the PORT/EPRT command that makes the server connect back to the client on the
 given IP+PORT, or with PASV/EPSV that makes the server setup a port to listen
 to and tells the client to connect to a given IP+PORT.
 
-Again, un-authenticated means that the connection might be meddled with by a
+Again, unauthenticated means that the connection might be meddled with by a
 man-in-the-middle or that there's a malicious server pretending to be the
 right one.
 
@@ -349,7 +360,8 @@ file name. The curl command-line tool does this with
 a file name. An application could also use \fICURLINFO_EFFECTIVE_URL(3)\fP to
 generate a file name from a server-supplied redirect URL. Special care must be
 taken to sanitize such names to avoid the possibility of a malicious server
-supplying one like "/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc".
+supplying one like \fB"/etc/passwd"\fP, \fB"\\autoexec.bat"\fP, \fB"prn:"\fP
+or even \fB".bashrc"\fP.
 .SH "Server Certificates"
 A secure application should never use the \fICURLOPT_SSL_VERIFYPEER(3)\fP
 option to disable certificate validation. There are numerous attacks that are
@@ -373,7 +385,7 @@ sensitive data.
 To avoid this problem, you must of course use your common sense. Often, you
 can just edit out the sensitive data or just search/replace your true
 information with faked data.
-.SH "Setuid applications using libcurl"
+.SH "setuid applications using libcurl"
 libcurl-using applications that set the 'setuid' bit to run with elevated or
 modified rights also implicitly give that extra power to libcurl and this
 should only be done after careful considerations.
@@ -385,15 +397,27 @@ that the user is otherwise not able to view (like credentials for a login
 etc), it should be noted that libcurl still might understand proxy environment
 variables that allow the user to redirect libcurl operations to use a proxy
 controlled by the user.
-.SH "File descriptors, fork and ntlm_wb"
-An application that uses libcurl and invokes `fork()` will get all file
+.SH "File descriptors, fork and NTLM"
+An application that uses libcurl and invokes \fIfork()\fP will get all file
 descriptors duplicated in the child process, including the ones libcurl
 created.
 
-libcurl itself uses `fork()` and `execl()` if told to use the
-`CURLAUTH_NTLM_WB` authentication method which then will invoke the helper
+libcurl itself uses \fIfork()\fP and \fIexecl()\fP if told to use the
+\fBCURLAUTH_NTLM_WB\fP authentication method which then will invoke the helper
 command in a child process with file descriptors duplicated. Make sure that
 only the trusted and reliable helper program is invoked!
+.SH "Secrets in memory"
+When applications pass user names, passwords or other sensitive data to
+libcurl to be used for upcoming transfers, those secrets will be kept around
+as-is in memory. In many cases they will be stored in heap for as long as the
+handle itself for which the options are set.
+
+If an attacker can access the heap, like maybe by reading swap space or via a
+core dump file, such data might be accessible.
+
+Further, when eventually closing a handle and the secrets are no longer
+needed, libcurl does not explicitly clear memory before freeing it, so
+credentials may be left in freed data.
 .SH "Report Security Problems"
 Should you detect or just suspect a security problem in libcurl or curl,
 contact the project curl security team immediately. See
index 7e354889116887754d0a8416f82478aae1004597..2eb6181595be200cc6e7fe083765793595a71d87 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH libcurl-share 3 "October 31, 2021" "libcurl 7.81.0" "libcurl share interface"
+.TH libcurl-share 3 "May 17, 2022" "libcurl 7.86.0" "libcurl share interface"
 
 .SH NAME
 libcurl-share \- how to use the share interface
index 1095143a8647f35de817cc549841876ad4a79682..8484b2efd8f2648ee4df466549add41810def0fb 100644 (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-symbols 3 "Jan  5, 2022" "libcurl 7.41.0" "libcurl symbols"
+.TH libcurl-symbols 3 "Oct 26, 2022" "libcurl 7.41.0" "libcurl symbols"
 .SH NAME
 libcurl-symbols \- libcurl symbol version information
 .SH "libcurl symbols"
@@ -35,394 +37,763 @@ The last version that featured the specific symbol. Using the symbol in source
 code will make it no longer compile error-free after that specified version.
 
 This man page is automatically generated from the symbols-in-versions file.
-.IP CURLALTSVC_H1
-Introduced in 7.64.1
-.IP CURLALTSVC_H2
-Introduced in 7.64.1
-.IP CURLALTSVC_H3
-Introduced in 7.64.1
-.IP CURLALTSVC_READONLYFILE
-Introduced in 7.64.1
-.IP CURLAUTH_ANY
-Introduced in 7.10.6
-.IP CURLAUTH_ANYSAFE
-Introduced in 7.10.6
-.IP CURLAUTH_BASIC
-Introduced in 7.10.6
-.IP CURLAUTH_BEARER
-Introduced in 7.61.0
-.IP CURLAUTH_DIGEST
-Introduced in 7.10.6
-.IP CURLAUTH_DIGEST_IE
-Introduced in 7.19.3
-.IP CURLAUTH_GSSAPI
-Introduced in 7.55.0
-.IP CURLAUTH_GSSNEGOTIATE
-Introduced in 7.10.6
-Deprecated since 7.38.0
-.IP CURLAUTH_NEGOTIATE
-Introduced in 7.38.0
-.IP CURLAUTH_NONE
-Introduced in 7.10.6
-.IP CURLAUTH_NTLM
-Introduced in 7.10.6
-.IP CURLAUTH_NTLM_WB
-Introduced in 7.22.0
-.IP CURLAUTH_ONLY
-Introduced in 7.21.3
-.IP CURLAUTH_AWS_SIGV4
-Introduced in 7.75.0
-.IP CURLCLOSEPOLICY_CALLBACK
-Introduced in 7.7
-.IP CURLCLOSEPOLICY_LEAST_RECENTLY_USED
-Introduced in 7.7
-.IP CURLCLOSEPOLICY_LEAST_TRAFFIC
-Introduced in 7.7
-.IP CURLCLOSEPOLICY_NONE
-Introduced in 7.7
-.IP CURLCLOSEPOLICY_OLDEST
-Introduced in 7.7
-.IP CURLCLOSEPOLICY_SLOWEST
-Introduced in 7.7
-.IP CURLE_ABORTED_BY_CALLBACK
-Introduced in 7.1
-.IP CURLE_AGAIN
-Introduced in 7.18.2
-.IP CURLE_ALREADY_COMPLETE
-Introduced in 7.7.2
-Deprecated since 7.8
-.IP CURLE_AUTH_ERROR
-Introduced in 7.66.0
-.IP CURLE_BAD_CALLING_ORDER
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_BAD_CONTENT_ENCODING
-Introduced in 7.10
-.IP CURLE_BAD_DOWNLOAD_RESUME
-Introduced in 7.10
-.IP CURLE_BAD_FUNCTION_ARGUMENT
-Introduced in 7.1
-.IP CURLE_BAD_PASSWORD_ENTERED
-Introduced in 7.4.2
-Deprecated since 7.17.0
-.IP CURLE_CHUNK_FAILED
+.IP CURL_AT_LEAST_VERSION
+Introduced in 7.43.0
+.IP CURL_BLOB_COPY
+Introduced in 7.71.0
+.IP CURL_BLOB_NOCOPY
+Introduced in 7.71.0
+.IP CURL_CHUNK_BGN_FUNC_FAIL
 Introduced in 7.21.0
-.IP CURLE_CONV_FAILED
-Introduced in 7.15.4
-.IP CURLE_CONV_REQD
-Introduced in 7.15.4
-.IP CURLE_COULDNT_CONNECT
-Introduced in 7.1
-.IP CURLE_COULDNT_RESOLVE_HOST
-Introduced in 7.1
-.IP CURLE_COULDNT_RESOLVE_PROXY
-Introduced in 7.1
-.IP CURLE_FAILED_INIT
-Introduced in 7.1
-.IP CURLE_FILESIZE_EXCEEDED
-Introduced in 7.10.8
-.IP CURLE_FILE_COULDNT_READ_FILE
-Introduced in 7.1
-.IP CURLE_FTP_ACCEPT_FAILED
-Introduced in 7.24.0
-.IP CURLE_FTP_ACCEPT_TIMEOUT
-Introduced in 7.24.0
-.IP CURLE_FTP_ACCESS_DENIED
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_BAD_DOWNLOAD_RESUME
-Introduced in 7.1
-Deprecated since 7.1
-.IP CURLE_FTP_BAD_FILE_LIST
+.IP CURL_CHUNK_BGN_FUNC_OK
 Introduced in 7.21.0
-.IP CURLE_FTP_CANT_GET_HOST
-Introduced in 7.1
-.IP CURLE_FTP_CANT_RECONNECT
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_COULDNT_GET_SIZE
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_COULDNT_RETR_FILE
-Introduced in 7.1
-.IP CURLE_FTP_COULDNT_SET_ASCII
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_COULDNT_SET_BINARY
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_COULDNT_SET_TYPE
-Introduced in 7.17.0
-.IP CURLE_FTP_COULDNT_STOR_FILE
-Introduced in 7.1
-Deprecated since 7.16.3
-.IP CURLE_FTP_COULDNT_USE_REST
-Introduced in 7.1
-.IP CURLE_FTP_PARTIAL_FILE
-Introduced in 7.1
-Deprecated since 7.1
-.IP CURLE_FTP_PORT_FAILED
-Introduced in 7.1
-.IP CURLE_FTP_PRET_FAILED
-Introduced in 7.20.0
-.IP CURLE_FTP_QUOTE_ERROR
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_SSL_FAILED
-Introduced in 7.11.0
-Deprecated since 7.17.0
-.IP CURLE_FTP_USER_PASSWORD_INCORRECT
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_WEIRD_227_FORMAT
-Introduced in 7.1
-.IP CURLE_FTP_WEIRD_PASS_REPLY
-Introduced in 7.1
-.IP CURLE_FTP_WEIRD_PASV_REPLY
-Introduced in 7.1
-.IP CURLE_FTP_WEIRD_SERVER_REPLY
-Introduced in 7.1
-Deprecated since 7.51.0
-.IP CURLE_FTP_WEIRD_USER_REPLY
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FTP_WRITE_ERROR
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_FUNCTION_NOT_FOUND
-Introduced in 7.1
-.IP CURLE_GOT_NOTHING
-Introduced in 7.9.1
-.IP CURLE_HTTP2
-Introduced in 7.38.0
-.IP CURLE_HTTP2_STREAM
+.IP CURL_CHUNK_BGN_FUNC_SKIP
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_CHUNK_END_FUNC_OK
+Introduced in 7.21.0
+.IP CURL_CSELECT_ERR
+Introduced in 7.16.3
+.IP CURL_CSELECT_IN
+Introduced in 7.16.3
+.IP CURL_CSELECT_OUT
+Introduced in 7.16.3
+.IP CURL_DID_MEMORY_FUNC_TYPEDEFS
 Introduced in 7.49.0
-.IP CURLE_HTTP3
-Introduced in 7.68.0
-.IP CURLE_HTTP_NOT_FOUND
-Introduced in 7.1
-Deprecated since 7.10.3
-.IP CURLE_HTTP_PORT_FAILED
-Introduced in 7.3
-Deprecated since 7.12.0
-.IP CURLE_HTTP_POST_ERROR
-Introduced in 7.1
-.IP CURLE_HTTP_RANGE_ERROR
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_HTTP_RETURNED_ERROR
-Introduced in 7.10.3
-.IP CURLE_INTERFACE_FAILED
-Introduced in 7.12.0
-.IP CURLE_LDAP_CANNOT_BIND
-Introduced in 7.1
-.IP CURLE_LDAP_INVALID_URL
-Introduced in 7.10.8
-.IP CURLE_LDAP_SEARCH_FAILED
-Introduced in 7.1
-.IP CURLE_LIBRARY_NOT_FOUND
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_LOGIN_DENIED
-Introduced in 7.13.1
-.IP CURLE_MALFORMAT_USER
+.IP CURL_EASY_NONE
+Introduced in 7.14.0
+.IP CURL_EASY_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_ERROR_SIZE
 Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_NOT_BUILT_IN
-Introduced in 7.21.5
-.IP CURLE_NO_CONNECTION_AVAILABLE
+.IP CURL_FNMATCHFUNC_FAIL
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_MATCH
+Introduced in 7.21.0
+.IP CURL_FNMATCHFUNC_NOMATCH
+Introduced in 7.21.0
+.IP CURL_FORMADD_DISABLED
+Introduced in 7.12.1
+Deprecated since 7.56.0
+.IP CURL_FORMADD_ILLEGAL_ARRAY
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_INCOMPLETE
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_MEMORY
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_NULL
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_OK
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_OPTION_TWICE
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_FORMADD_UNKNOWN_OPTION
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURL_GLOBAL_ACK_EINTR
 Introduced in 7.30.0
-.IP CURLE_OK
-Introduced in 7.1
-.IP CURLE_OPERATION_TIMEDOUT
-Introduced in 7.10.2
-.IP CURLE_OPERATION_TIMEOUTED
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_OUT_OF_MEMORY
-Introduced in 7.1
-.IP CURLE_PARTIAL_FILE
-Introduced in 7.1
-.IP CURLE_PEER_FAILED_VERIFICATION
-Introduced in 7.17.1
-.IP CURLE_PROXY
-Introduced in 7.73.0
-.IP CURLE_QUIC_CONNECT_ERROR
-Introduced in 7.69.0
-.IP CURLE_QUOTE_ERROR
-Introduced in 7.17.0
-.IP CURLE_RANGE_ERROR
-Introduced in 7.17.0
-.IP CURLE_READ_ERROR
-Introduced in 7.1
-.IP CURLE_RECURSIVE_API_CALL
+.IP CURL_GLOBAL_ALL
+Introduced in 7.8
+.IP CURL_GLOBAL_DEFAULT
+Introduced in 7.8
+.IP CURL_GLOBAL_NOTHING
+Introduced in 7.8
+.IP CURL_GLOBAL_SSL
+Introduced in 7.8
+.IP CURL_GLOBAL_WIN32
+Introduced in 7.8.1
+.IP CURL_HET_DEFAULT
 Introduced in 7.59.0
-.IP CURLE_RECV_ERROR
+.IP CURL_HTTP_VERSION_1_0
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_1_1
+Introduced in 7.9.1
+.IP CURL_HTTP_VERSION_2
+Introduced in 7.43.0
+.IP CURL_HTTP_VERSION_2_0
+Introduced in 7.33.0
+.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
+Introduced in 7.49.0
+.IP CURL_HTTP_VERSION_2TLS
+Introduced in 7.47.0
+.IP CURL_HTTP_VERSION_3
+Introduced in 7.66.0
+.IP CURL_HTTP_VERSION_NONE
+Introduced in 7.9.1
+.IP CURL_HTTPPOST_BUFFER
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_CALLBACK
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_FILENAME
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_LARGE
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_PTRBUFFER
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_PTRCONTENTS
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_PTRNAME
+Introduced in 7.46.0
+.IP CURL_HTTPPOST_READFILE
+Introduced in 7.46.0
+.IP CURL_IPRESOLVE_V4
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_V6
+Introduced in 7.10.8
+.IP CURL_IPRESOLVE_WHATEVER
+Introduced in 7.10.8
+.IP CURL_ISOCPP
+Introduced in 7.10.2
+.IP CURL_LOCK_ACCESS_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SHARED
+Introduced in 7.10.3
+.IP CURL_LOCK_ACCESS_SINGLE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_CONNECT
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_COOKIE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_DNS
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_NONE
+Introduced in 7.10.3
+.IP CURL_LOCK_DATA_PSL
+Introduced in 7.61.0
+.IP CURL_LOCK_DATA_SHARE
+Introduced in 7.10.4
+.IP CURL_LOCK_DATA_SSL_SESSION
+Introduced in 7.10.3
+.IP CURL_LOCK_TYPE_CONNECT
 Introduced in 7.10
-.IP CURLE_REMOTE_ACCESS_DENIED
-Introduced in 7.17.0
-.IP CURLE_REMOTE_DISK_FULL
-Introduced in 7.17.0
-.IP CURLE_REMOTE_FILE_EXISTS
-Introduced in 7.17.0
-.IP CURLE_REMOTE_FILE_NOT_FOUND
-Introduced in 7.16.1
-.IP CURLE_RTSP_CSEQ_ERROR
-Introduced in 7.20.0
-.IP CURLE_RTSP_SESSION_ERROR
-Introduced in 7.20.0
-.IP CURLE_SEND_ERROR
+.IP CURL_LOCK_TYPE_COOKIE
 Introduced in 7.10
-.IP CURLE_SEND_FAIL_REWIND
-Introduced in 7.12.3
-.IP CURLE_SETOPT_OPTION_SYNTAX
-Introduced in 7.78.0
-.IP CURLE_SHARE_IN_USE
-Introduced in 7.9.6
-Deprecated since 7.17.0
-.IP CURLE_SSH
-Introduced in 7.16.1
-.IP CURLE_SSL_CACERT
+.IP CURL_LOCK_TYPE_DNS
 Introduced in 7.10
-Deprecated since 7.62.0
-.IP CURLE_SSL_CACERT_BADFILE
-Introduced in 7.16.0
-.IP CURLE_SSL_CERTPROBLEM
+.IP CURL_LOCK_TYPE_NONE
 Introduced in 7.10
-.IP CURLE_SSL_CIPHER
+.IP CURL_LOCK_TYPE_SSL_SESSION
 Introduced in 7.10
-.IP CURLE_SSL_CLIENTCERT
-Introduced in 7.77.0
-.IP CURLE_SSL_CONNECT_ERROR
-Introduced in 7.1
-.IP CURLE_SSL_CRL_BADFILE
-Introduced in 7.19.0
-.IP CURLE_SSL_ENGINE_INITFAILED
-Introduced in 7.12.3
-.IP CURLE_SSL_ENGINE_NOTFOUND
-Introduced in 7.9.3
-.IP CURLE_SSL_ENGINE_SETFAILED
-Introduced in 7.9.3
-.IP CURLE_SSL_INVALIDCERTSTATUS
-Introduced in 7.41.0
-.IP CURLE_SSL_ISSUER_ERROR
-Introduced in 7.19.0
-.IP CURLE_SSL_PEER_CERTIFICATE
-Introduced in 7.8
-Deprecated since 7.17.1
-.IP CURLE_SSL_PINNEDPUBKEYNOTMATCH
-Introduced in 7.39.0
-.IP CURLE_SSL_SHUTDOWN_FAILED
-Introduced in 7.16.1
-.IP CURLE_TELNET_OPTION_SYNTAX
-Introduced in 7.7
-.IP CURLE_TFTP_DISKFULL
-Introduced in 7.15.0
-Deprecated since 7.17.0
-.IP CURLE_TFTP_EXISTS
-Introduced in 7.15.0
-Deprecated since 7.17.0
-.IP CURLE_TFTP_ILLEGAL
-Introduced in 7.15.0
-.IP CURLE_TFTP_NOSUCHUSER
-Introduced in 7.15.0
-.IP CURLE_TFTP_NOTFOUND
-Introduced in 7.15.0
-.IP CURLE_TFTP_PERM
-Introduced in 7.15.0
-.IP CURLE_TFTP_UNKNOWNID
-Introduced in 7.15.0
-.IP CURLE_TOO_MANY_REDIRECTS
-Introduced in 7.5
-.IP CURLE_UNKNOWN_OPTION
-Introduced in 7.21.5
-.IP CURLE_UNKNOWN_TELNET_OPTION
-Introduced in 7.7
-Deprecated since 7.21.5
-.IP CURLE_UNSUPPORTED_PROTOCOL
-Introduced in 7.1
-.IP CURLE_UPLOAD_FAILED
-Introduced in 7.16.3
-.IP CURLE_URL_MALFORMAT
-Introduced in 7.1
-.IP CURLE_URL_MALFORMAT_USER
-Introduced in 7.1
-Deprecated since 7.17.0
-.IP CURLE_USE_SSL_FAILED
-Introduced in 7.17.0
-.IP CURLE_WEIRD_SERVER_REPLY
-Introduced in 7.51.0
-.IP CURLE_WRITE_ERROR
-Introduced in 7.1
-.IP CURLFILETYPE_DEVICE_BLOCK
-Introduced in 7.21.0
-.IP CURLFILETYPE_DEVICE_CHAR
-Introduced in 7.21.0
-.IP CURLFILETYPE_DIRECTORY
-Introduced in 7.21.0
-.IP CURLFILETYPE_DOOR
-Introduced in 7.21.0
-.IP CURLFILETYPE_FILE
-Introduced in 7.21.0
-.IP CURLFILETYPE_NAMEDPIPE
-Introduced in 7.21.0
-.IP CURLFILETYPE_SOCKET
-Introduced in 7.21.0
-.IP CURLFILETYPE_SYMLINK
-Introduced in 7.21.0
-.IP CURLFILETYPE_UNKNOWN
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_FILENAME
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_FILETYPE
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_GID
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_HLINKCOUNT
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_PERM
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_SIZE
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_TIME
-Introduced in 7.21.0
-.IP CURLFINFOFLAG_KNOWN_UID
-Introduced in 7.21.0
-.IP CURLFORM_ARRAY
-Introduced in 7.9.1
-Deprecated since 7.56.0
-.IP CURLFORM_ARRAY_END
-Introduced in 7.9.1
-Deprecated since 7.9.5
-Last used in 7.9.6
-.IP CURLFORM_ARRAY_START
-Introduced in 7.9.1
-Deprecated since 7.9.5
-Last used in 7.9.6
-.IP CURLFORM_BUFFER
+.IP CURL_MAX_HTTP_HEADER
+Introduced in 7.19.7
+.IP CURL_MAX_READ_SIZE
+Introduced in 7.53.0
+.IP CURL_MAX_WRITE_SIZE
+Introduced in 7.9.7
+.IP CURL_NETRC_IGNORED
 Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURLFORM_BUFFERLENGTH
+.IP CURL_NETRC_OPTIONAL
 Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURLFORM_BUFFERPTR
+.IP CURL_NETRC_REQUIRED
 Introduced in 7.9.8
+.IP CURL_POLL_IN
+Introduced in 7.14.0
+.IP CURL_POLL_INOUT
+Introduced in 7.14.0
+.IP CURL_POLL_NONE
+Introduced in 7.14.0
+.IP CURL_POLL_OUT
+Introduced in 7.14.0
+.IP CURL_POLL_REMOVE
+Introduced in 7.14.0
+.IP CURL_PREREQFUNC_ABORT
+Introduced in 7.79.0
+.IP CURL_PREREQFUNC_OK
+Introduced in 7.79.0
+.IP CURL_PROGRESS_BAR
+Introduced in 7.1.1
+.IP CURL_PROGRESS_STATS
+Introduced in 7.1.1
+.IP CURL_PROGRESSFUNC_CONTINUE
+Introduced in 7.68.0
+.IP CURL_PULL_SYS_POLL_H
+Introduced in 7.56.0
+.IP CURL_PUSH_DENY
+Introduced in 7.44.0
+.IP CURL_PUSH_ERROROUT
+Introduced in 7.72.0
+.IP CURL_PUSH_OK
+Introduced in 7.44.0
+.IP CURL_READFUNC_ABORT
+Introduced in 7.12.1
+.IP CURL_READFUNC_PAUSE
+Introduced in 7.18.0
+.IP CURL_REDIR_GET_ALL
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_301
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_302
+Introduced in 7.19.1
+.IP CURL_REDIR_POST_303
+Introduced in 7.25.1
+.IP CURL_REDIR_POST_ALL
+Introduced in 7.19.1
+.IP CURL_RTSPREQ_ANNOUNCE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_DESCRIBE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_GET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_NONE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_OPTIONS
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PAUSE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_PLAY
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECEIVE
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_RECORD
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SET_PARAMETER
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_SETUP
+Introduced in 7.20.0
+.IP CURL_RTSPREQ_TEARDOWN
+Introduced in 7.20.0
+.IP CURL_SEEKFUNC_CANTSEEK
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_FAIL
+Introduced in 7.19.5
+.IP CURL_SEEKFUNC_OK
+Introduced in 7.19.5
+.IP CURL_SOCKET_BAD
+Introduced in 7.14.0
+.IP CURL_SOCKET_TIMEOUT
+Introduced in 7.14.0
+.IP CURL_SOCKOPT_ALREADY_CONNECTED
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_ERROR
+Introduced in 7.21.5
+.IP CURL_SOCKOPT_OK
+Introduced in 7.21.5
+.IP CURL_SSLVERSION_DEFAULT
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_MAX_DEFAULT
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_NONE
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_0
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_1
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_2
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_MAX_TLSv1_3
+Introduced in 7.54.0
+.IP CURL_SSLVERSION_SSLv2
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_SSLv3
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_TLSv1
+Introduced in 7.9.2
+.IP CURL_SSLVERSION_TLSv1_0
+Introduced in 7.34.0
+.IP CURL_SSLVERSION_TLSv1_1
+Introduced in 7.34.0
+.IP CURL_SSLVERSION_TLSv1_2
+Introduced in 7.34.0
+.IP CURL_SSLVERSION_TLSv1_3
+Introduced in 7.52.0
+.IP CURL_STRICTER
+Introduced in 7.50.2
+.IP CURL_TIMECOND_IFMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_IFUNMODSINCE
+Introduced in 7.9.7
+.IP CURL_TIMECOND_LASTMOD
+Introduced in 7.9.7
+.IP CURL_TIMECOND_NONE
+Introduced in 7.9.7
+.IP CURL_TLSAUTH_NONE
+Introduced in 7.21.4
+.IP CURL_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_TRAILERFUNC_ABORT
+Introduced in 7.64.0
+.IP CURL_TRAILERFUNC_OK
+Introduced in 7.64.0
+.IP CURL_UPKEEP_INTERVAL_DEFAULT
+Introduced in 7.62.0
+.IP CURL_VERSION_ALTSVC
+Introduced in 7.64.1
+.IP CURL_VERSION_ASYNCHDNS
+Introduced in 7.10.7
+.IP CURL_VERSION_BITS
+Introduced in 7.43.0
+.IP CURL_VERSION_BROTLI
+Introduced in 7.57.0
+.IP CURL_VERSION_CONV
+Introduced in 7.15.4
+.IP CURL_VERSION_CURLDEBUG
+Introduced in 7.19.6
+.IP CURL_VERSION_DEBUG
+Introduced in 7.10.6
+.IP CURL_VERSION_GSASL
+Introduced in 7.76.0
+.IP CURL_VERSION_GSSAPI
+Introduced in 7.38.0
+.IP CURL_VERSION_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURL_VERSION_HSTS
+Introduced in 7.74.0
+.IP CURL_VERSION_HTTP2
+Introduced in 7.33.0
+.IP CURL_VERSION_HTTP3
+Introduced in 7.66.0
+.IP CURL_VERSION_HTTPS_PROXY
+Introduced in 7.52.0
+.IP CURL_VERSION_IDN
+Introduced in 7.12.0
+.IP CURL_VERSION_IPV6
+Introduced in 7.10
+.IP CURL_VERSION_KERBEROS4
+Introduced in 7.10
+Deprecated since 7.33.0
+.IP CURL_VERSION_KERBEROS5
+Introduced in 7.40.0
+.IP CURL_VERSION_LARGEFILE
+Introduced in 7.11.1
+.IP CURL_VERSION_LIBZ
+Introduced in 7.10
+.IP CURL_VERSION_MULTI_SSL
+Introduced in 7.56.0
+.IP CURL_VERSION_NTLM
+Introduced in 7.10.6
+.IP CURL_VERSION_NTLM_WB
+Introduced in 7.22.0
+.IP CURL_VERSION_PSL
+Introduced in 7.47.0
+.IP CURL_VERSION_SPNEGO
+Introduced in 7.10.8
+.IP CURL_VERSION_SSL
+Introduced in 7.10
+.IP CURL_VERSION_SSPI
+Introduced in 7.13.2
+.IP CURL_VERSION_THREADSAFE
+Introduced in 7.84.0
+.IP CURL_VERSION_TLSAUTH_SRP
+Introduced in 7.21.4
+.IP CURL_VERSION_UNICODE
+Introduced in 7.72.0
+.IP CURL_VERSION_UNIX_SOCKETS
+Introduced in 7.40.0
+.IP CURL_VERSION_ZSTD
+Introduced in 7.72.0
+.IP CURL_WAIT_POLLIN
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLOUT
+Introduced in 7.28.0
+.IP CURL_WAIT_POLLPRI
+Introduced in 7.28.0
+.IP CURL_WIN32
+Introduced in 7.69.0
+.IP CURL_WRITEFUNC_PAUSE
+Introduced in 7.18.0
+.IP CURL_ZERO_TERMINATED
+Introduced in 7.56.0
+.IP CURLALTSVC_H1
+Introduced in 7.64.1
+.IP CURLALTSVC_H2
+Introduced in 7.64.1
+.IP CURLALTSVC_H3
+Introduced in 7.64.1
+.IP CURLALTSVC_READONLYFILE
+Introduced in 7.64.1
+.IP CURLAUTH_ANY
+Introduced in 7.10.6
+.IP CURLAUTH_ANYSAFE
+Introduced in 7.10.6
+.IP CURLAUTH_AWS_SIGV4
+Introduced in 7.75.0
+.IP CURLAUTH_BASIC
+Introduced in 7.10.6
+.IP CURLAUTH_BEARER
+Introduced in 7.61.0
+.IP CURLAUTH_DIGEST
+Introduced in 7.10.6
+.IP CURLAUTH_DIGEST_IE
+Introduced in 7.19.3
+.IP CURLAUTH_GSSAPI
+Introduced in 7.55.0
+.IP CURLAUTH_GSSNEGOTIATE
+Introduced in 7.10.6
+Deprecated since 7.38.0
+.IP CURLAUTH_NEGOTIATE
+Introduced in 7.38.0
+.IP CURLAUTH_NONE
+Introduced in 7.10.6
+.IP CURLAUTH_NTLM
+Introduced in 7.10.6
+.IP CURLAUTH_NTLM_WB
+Introduced in 7.22.0
+.IP CURLAUTH_ONLY
+Introduced in 7.21.3
+.IP CURLCLOSEPOLICY_CALLBACK
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_LEAST_RECENTLY_USED
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_LEAST_TRAFFIC
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_NONE
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_OLDEST
+Introduced in 7.7
+.IP CURLCLOSEPOLICY_SLOWEST
+Introduced in 7.7
+.IP CURLE_ABORTED_BY_CALLBACK
+Introduced in 7.1
+.IP CURLE_AGAIN
+Introduced in 7.18.2
+.IP CURLE_ALREADY_COMPLETE
+Introduced in 7.7.2
+Deprecated since 7.8
+.IP CURLE_AUTH_ERROR
+Introduced in 7.66.0
+.IP CURLE_BAD_CALLING_ORDER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_BAD_CONTENT_ENCODING
+Introduced in 7.10
+.IP CURLE_BAD_DOWNLOAD_RESUME
+Introduced in 7.10
+.IP CURLE_BAD_FUNCTION_ARGUMENT
+Introduced in 7.1
+.IP CURLE_BAD_PASSWORD_ENTERED
+Introduced in 7.4.2
+Deprecated since 7.17.0
+.IP CURLE_CHUNK_FAILED
+Introduced in 7.21.0
+.IP CURLE_CONV_FAILED
+Introduced in 7.15.4
+Deprecated since 7.82.0
+.IP CURLE_CONV_REQD
+Introduced in 7.15.4
+Deprecated since 7.82.0
+.IP CURLE_COULDNT_CONNECT
+Introduced in 7.1
+.IP CURLE_COULDNT_RESOLVE_HOST
+Introduced in 7.1
+.IP CURLE_COULDNT_RESOLVE_PROXY
+Introduced in 7.1
+.IP CURLE_FAILED_INIT
+Introduced in 7.1
+.IP CURLE_FILE_COULDNT_READ_FILE
+Introduced in 7.1
+.IP CURLE_FILESIZE_EXCEEDED
+Introduced in 7.10.8
+.IP CURLE_FTP_ACCEPT_FAILED
+Introduced in 7.24.0
+.IP CURLE_FTP_ACCEPT_TIMEOUT
+Introduced in 7.24.0
+.IP CURLE_FTP_ACCESS_DENIED
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_BAD_DOWNLOAD_RESUME
+Introduced in 7.1
+Deprecated since 7.1
+.IP CURLE_FTP_BAD_FILE_LIST
+Introduced in 7.21.0
+.IP CURLE_FTP_CANT_GET_HOST
+Introduced in 7.1
+.IP CURLE_FTP_CANT_RECONNECT
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_GET_SIZE
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_RETR_FILE
+Introduced in 7.1
+.IP CURLE_FTP_COULDNT_SET_ASCII
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_SET_BINARY
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_COULDNT_SET_TYPE
+Introduced in 7.17.0
+.IP CURLE_FTP_COULDNT_STOR_FILE
+Introduced in 7.1
+Deprecated since 7.16.3
+.IP CURLE_FTP_COULDNT_USE_REST
+Introduced in 7.1
+.IP CURLE_FTP_PARTIAL_FILE
+Introduced in 7.1
+Deprecated since 7.1
+.IP CURLE_FTP_PORT_FAILED
+Introduced in 7.1
+.IP CURLE_FTP_PRET_FAILED
+Introduced in 7.20.0
+.IP CURLE_FTP_QUOTE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_SSL_FAILED
+Introduced in 7.11.0
+Deprecated since 7.17.0
+.IP CURLE_FTP_USER_PASSWORD_INCORRECT
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_WEIRD_227_FORMAT
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_PASS_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_PASV_REPLY
+Introduced in 7.1
+.IP CURLE_FTP_WEIRD_SERVER_REPLY
+Introduced in 7.1
+Deprecated since 7.51.0
+.IP CURLE_FTP_WEIRD_USER_REPLY
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FTP_WRITE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_FUNCTION_NOT_FOUND
+Introduced in 7.1
+.IP CURLE_GOT_NOTHING
+Introduced in 7.9.1
+.IP CURLE_HTTP2
+Introduced in 7.38.0
+.IP CURLE_HTTP2_STREAM
+Introduced in 7.49.0
+.IP CURLE_HTTP3
+Introduced in 7.68.0
+.IP CURLE_HTTP_NOT_FOUND
+Introduced in 7.1
+Deprecated since 7.10.3
+.IP CURLE_HTTP_PORT_FAILED
+Introduced in 7.3
+Deprecated since 7.12.0
+.IP CURLE_HTTP_POST_ERROR
+Introduced in 7.1
+.IP CURLE_HTTP_RANGE_ERROR
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_HTTP_RETURNED_ERROR
+Introduced in 7.10.3
+.IP CURLE_INTERFACE_FAILED
+Introduced in 7.12.0
+.IP CURLE_LDAP_CANNOT_BIND
+Introduced in 7.1
+.IP CURLE_LDAP_INVALID_URL
+Introduced in 7.10.8
+Deprecated since 7.82.0
+.IP CURLE_LDAP_SEARCH_FAILED
+Introduced in 7.1
+.IP CURLE_LIBRARY_NOT_FOUND
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_LOGIN_DENIED
+Introduced in 7.13.1
+.IP CURLE_MALFORMAT_USER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_NO_CONNECTION_AVAILABLE
+Introduced in 7.30.0
+.IP CURLE_NOT_BUILT_IN
+Introduced in 7.21.5
+.IP CURLE_OK
+Introduced in 7.1
+.IP CURLE_OPERATION_TIMEDOUT
+Introduced in 7.10.2
+.IP CURLE_OPERATION_TIMEOUTED
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_OUT_OF_MEMORY
+Introduced in 7.1
+.IP CURLE_PARTIAL_FILE
+Introduced in 7.1
+.IP CURLE_PEER_FAILED_VERIFICATION
+Introduced in 7.17.1
+.IP CURLE_PROXY
+Introduced in 7.73.0
+.IP CURLE_QUIC_CONNECT_ERROR
+Introduced in 7.69.0
+.IP CURLE_QUOTE_ERROR
+Introduced in 7.17.0
+.IP CURLE_RANGE_ERROR
+Introduced in 7.17.0
+.IP CURLE_READ_ERROR
+Introduced in 7.1
+.IP CURLE_RECURSIVE_API_CALL
+Introduced in 7.59.0
+.IP CURLE_RECV_ERROR
+Introduced in 7.10
+.IP CURLE_REMOTE_ACCESS_DENIED
+Introduced in 7.17.0
+.IP CURLE_REMOTE_DISK_FULL
+Introduced in 7.17.0
+.IP CURLE_REMOTE_FILE_EXISTS
+Introduced in 7.17.0
+.IP CURLE_REMOTE_FILE_NOT_FOUND
+Introduced in 7.16.1
+.IP CURLE_RTSP_CSEQ_ERROR
+Introduced in 7.20.0
+.IP CURLE_RTSP_SESSION_ERROR
+Introduced in 7.20.0
+.IP CURLE_SEND_ERROR
+Introduced in 7.10
+.IP CURLE_SEND_FAIL_REWIND
+Introduced in 7.12.3
+.IP CURLE_SETOPT_OPTION_SYNTAX
+Introduced in 7.78.0
+.IP CURLE_SHARE_IN_USE
+Introduced in 7.9.6
+Deprecated since 7.17.0
+.IP CURLE_SSH
+Introduced in 7.16.1
+.IP CURLE_SSL_CACERT
+Introduced in 7.10
+Deprecated since 7.62.0
+.IP CURLE_SSL_CACERT_BADFILE
+Introduced in 7.16.0
+.IP CURLE_SSL_CERTPROBLEM
+Introduced in 7.10
+.IP CURLE_SSL_CIPHER
+Introduced in 7.10
+.IP CURLE_SSL_CLIENTCERT
+Introduced in 7.77.0
+.IP CURLE_SSL_CONNECT_ERROR
+Introduced in 7.1
+.IP CURLE_SSL_CRL_BADFILE
+Introduced in 7.19.0
+.IP CURLE_SSL_ENGINE_INITFAILED
+Introduced in 7.12.3
+.IP CURLE_SSL_ENGINE_NOTFOUND
+Introduced in 7.9.3
+.IP CURLE_SSL_ENGINE_SETFAILED
+Introduced in 7.9.3
+.IP CURLE_SSL_INVALIDCERTSTATUS
+Introduced in 7.41.0
+.IP CURLE_SSL_ISSUER_ERROR
+Introduced in 7.19.0
+.IP CURLE_SSL_PEER_CERTIFICATE
+Introduced in 7.8
+Deprecated since 7.17.1
+.IP CURLE_SSL_PINNEDPUBKEYNOTMATCH
+Introduced in 7.39.0
+.IP CURLE_SSL_SHUTDOWN_FAILED
+Introduced in 7.16.1
+.IP CURLE_TELNET_OPTION_SYNTAX
+Introduced in 7.7
+.IP CURLE_TFTP_DISKFULL
+Introduced in 7.15.0
+Deprecated since 7.17.0
+.IP CURLE_TFTP_EXISTS
+Introduced in 7.15.0
+Deprecated since 7.17.0
+.IP CURLE_TFTP_ILLEGAL
+Introduced in 7.15.0
+.IP CURLE_TFTP_NOSUCHUSER
+Introduced in 7.15.0
+.IP CURLE_TFTP_NOTFOUND
+Introduced in 7.15.0
+.IP CURLE_TFTP_PERM
+Introduced in 7.15.0
+.IP CURLE_TFTP_UNKNOWNID
+Introduced in 7.15.0
+.IP CURLE_TOO_MANY_REDIRECTS
+Introduced in 7.5
+.IP CURLE_UNKNOWN_OPTION
+Introduced in 7.21.5
+.IP CURLE_UNKNOWN_TELNET_OPTION
+Introduced in 7.7
+Deprecated since 7.21.5
+.IP CURLE_UNRECOVERABLE_POLL
+Introduced in 7.84.0
+.IP CURLE_UNSUPPORTED_PROTOCOL
+Introduced in 7.1
+.IP CURLE_UPLOAD_FAILED
+Introduced in 7.16.3
+.IP CURLE_URL_MALFORMAT
+Introduced in 7.1
+.IP CURLE_URL_MALFORMAT_USER
+Introduced in 7.1
+Deprecated since 7.17.0
+.IP CURLE_USE_SSL_FAILED
+Introduced in 7.17.0
+.IP CURLE_WEIRD_SERVER_REPLY
+Introduced in 7.51.0
+.IP CURLE_WRITE_ERROR
+Introduced in 7.1
+.IP CURLFILETYPE_DEVICE_BLOCK
+Introduced in 7.21.0
+.IP CURLFILETYPE_DEVICE_CHAR
+Introduced in 7.21.0
+.IP CURLFILETYPE_DIRECTORY
+Introduced in 7.21.0
+.IP CURLFILETYPE_DOOR
+Introduced in 7.21.0
+.IP CURLFILETYPE_FILE
+Introduced in 7.21.0
+.IP CURLFILETYPE_NAMEDPIPE
+Introduced in 7.21.0
+.IP CURLFILETYPE_SOCKET
+Introduced in 7.21.0
+.IP CURLFILETYPE_SYMLINK
+Introduced in 7.21.0
+.IP CURLFILETYPE_UNKNOWN
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_FILENAME
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_FILETYPE
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_GID
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_HLINKCOUNT
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_PERM
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_SIZE
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_TIME
+Introduced in 7.21.0
+.IP CURLFINFOFLAG_KNOWN_UID
+Introduced in 7.21.0
+.IP CURLFORM_ARRAY
+Introduced in 7.9.1
+Deprecated since 7.56.0
+.IP CURLFORM_ARRAY_END
+Introduced in 7.9.1
+Deprecated since 7.9.5
+Last used in 7.9.6
+.IP CURLFORM_ARRAY_START
+Introduced in 7.9.1
+Deprecated since 7.9.5
+Last used in 7.9.6
+.IP CURLFORM_BUFFER
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURLFORM_BUFFERLENGTH
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURLFORM_BUFFERPTR
+Introduced in 7.9.8
+Deprecated since 7.56.0
+.IP CURLFORM_CONTENTHEADER
+Introduced in 7.9.3
+Deprecated since 7.56.0
+.IP CURLFORM_CONTENTLEN
+Introduced in 7.46.0
+Deprecated since 7.56.0
+.IP CURLFORM_CONTENTSLENGTH
+Introduced in 7.9
+Deprecated since 7.56.0
+.IP CURLFORM_CONTENTTYPE
+Introduced in 7.9
+Deprecated since 7.56.0
+.IP CURLFORM_COPYCONTENTS
+Introduced in 7.9
 Deprecated since 7.56.0
-.IP CURLFORM_CONTENTHEADER
-Introduced in 7.9.3
-Deprecated since 7.56.0
-.IP CURLFORM_CONTENTLEN
-Introduced in 7.46.0
-Deprecated since 7.56.0
-.IP CURLFORM_CONTENTSLENGTH
-Introduced in 7.9
-Deprecated since 7.56.0
-.IP CURLFORM_CONTENTTYPE
-Introduced in 7.9
-Deprecated since 7.56.0
-.IP CURLFORM_COPYCONTENTS
-Introduced in 7.9
-Deprecated since 7.56.0
 .IP CURLFORM_COPYNAME
 Introduced in 7.9
 Deprecated since 7.56.0
@@ -453,6 +824,12 @@ Deprecated since 7.56.0
 .IP CURLFORM_STREAM
 Introduced in 7.18.2
 Deprecated since 7.56.0
+.IP CURLFTP_CREATE_DIR
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_NONE
+Introduced in 7.19.4
+.IP CURLFTP_CREATE_DIR_RETRY
+Introduced in 7.19.4
 .IP CURLFTPAUTH_DEFAULT
 Introduced in 7.12.2
 .IP CURLFTPAUTH_SSL
@@ -485,18 +862,38 @@ Deprecated since 7.17.0
 .IP CURLFTPSSL_TRY
 Introduced in 7.11.0
 Deprecated since 7.17.0
-.IP CURLFTP_CREATE_DIR
-Introduced in 7.19.4
-.IP CURLFTP_CREATE_DIR_NONE
-Introduced in 7.19.4
-.IP CURLFTP_CREATE_DIR_RETRY
-Introduced in 7.19.4
 .IP CURLGSSAPI_DELEGATION_FLAG
 Introduced in 7.22.0
 .IP CURLGSSAPI_DELEGATION_NONE
 Introduced in 7.22.0
 .IP CURLGSSAPI_DELEGATION_POLICY_FLAG
 Introduced in 7.22.0
+.IP CURLH_1XX
+Introduced in 7.83.0
+.IP CURLH_CONNECT
+Introduced in 7.83.0
+.IP CURLH_HEADER
+Introduced in 7.83.0
+.IP CURLH_PSEUDO
+Introduced in 7.83.0
+.IP CURLH_TRAILER
+Introduced in 7.83.0
+.IP CURLHE_BAD_ARGUMENT
+Introduced in 7.83.0
+.IP CURLHE_BADINDEX
+Introduced in 7.83.0
+.IP CURLHE_MISSING
+Introduced in 7.83.0
+.IP CURLHE_NOHEADERS
+Introduced in 7.83.0
+.IP CURLHE_NOREQUEST
+Introduced in 7.83.0
+.IP CURLHE_NOT_BUILT_IN
+Introduced in 7.83.0
+.IP CURLHE_OK
+Introduced in 7.83.0
+.IP CURLHE_OUT_OF_MEMORY
+Introduced in 7.83.0
 .IP CURLHEADER_SEPARATE
 Introduced in 7.37.0
 .IP CURLHEADER_UNIFIED
@@ -511,6 +908,10 @@ Introduced in 7.45.0
 Introduced in 7.19.0
 .IP CURLINFO_APPCONNECT_TIME_T
 Introduced in 7.61.0
+.IP CURLINFO_CAINFO
+Introduced in 7.84.0
+.IP CURLINFO_CAPATH
+Introduced in 7.84.0
 .IP CURLINFO_CERTINFO
 Introduced in 7.19.1
 .IP CURLINFO_CONDITION_UNMET
@@ -521,10 +922,12 @@ Introduced in 7.4.1
 Introduced in 7.61.0
 .IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
 Introduced in 7.6.1
+Deprecated since 7.55.0
 .IP CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
 Introduced in 7.55.0
 .IP CURLINFO_CONTENT_LENGTH_UPLOAD
 Introduced in 7.6.1
+Deprecated since 7.55.0
 .IP CURLINFO_CONTENT_LENGTH_UPLOAD_T
 Introduced in 7.55.0
 .IP CURLINFO_CONTENT_TYPE
@@ -555,8 +958,6 @@ Introduced in 7.9.6
 Introduced in 7.9.6
 .IP CURLINFO_HEADER_SIZE
 Introduced in 7.4.1
-.IP CURLINFO_HTTPAUTH_AVAIL
-Introduced in 7.10.8
 .IP CURLINFO_HTTP_CODE
 Introduced in 7.4.1
 Deprecated since 7.10.8
@@ -564,10 +965,13 @@ Deprecated since 7.10.8
 Introduced in 7.10.7
 .IP CURLINFO_HTTP_VERSION
 Introduced in 7.50.0
+.IP CURLINFO_HTTPAUTH_AVAIL
+Introduced in 7.10.8
 .IP CURLINFO_LASTONE
 Introduced in 7.4.1
 .IP CURLINFO_LASTSOCKET
 Introduced in 7.15.2
+Deprecated since 7.45.0
 .IP CURLINFO_LOCAL_IP
 Introduced in 7.21.0
 .IP CURLINFO_LOCAL_PORT
@@ -600,12 +1004,13 @@ Introduced in 7.21.0
 Introduced in 7.10.3
 .IP CURLINFO_PROTOCOL
 Introduced in 7.52.0
-.IP CURLINFO_PROXYAUTH_AVAIL
-Introduced in 7.10.8
+Deprecated since 7.85.0
 .IP CURLINFO_PROXY_ERROR
 Introduced in 7.73.0
 .IP CURLINFO_PROXY_SSL_VERIFYRESULT
 Introduced in 7.52.0
+.IP CURLINFO_PROXYAUTH_AVAIL
+Introduced in 7.10.8
 .IP CURLINFO_PTR
 Introduced in 7.54.1
 .IP CURLINFO_REDIRECT_COUNT
@@ -636,10 +1041,12 @@ Introduced in 7.20.0
 Introduced in 7.52.0
 .IP CURLINFO_SIZE_DOWNLOAD
 Introduced in 7.4.1
+Deprecated since 7.55.0
 .IP CURLINFO_SIZE_DOWNLOAD_T
 Introduced in 7.55.0
 .IP CURLINFO_SIZE_UPLOAD
 Introduced in 7.4.1
+Deprecated since 7.55.0
 .IP CURLINFO_SIZE_UPLOAD_T
 Introduced in 7.55.0
 .IP CURLINFO_SLIST
@@ -648,10 +1055,12 @@ Introduced in 7.12.3
 Introduced in 7.45.0
 .IP CURLINFO_SPEED_DOWNLOAD
 Introduced in 7.4.1
+Deprecated since 7.55.0
 .IP CURLINFO_SPEED_DOWNLOAD_T
 Introduced in 7.55.0
 .IP CURLINFO_SPEED_UPLOAD
 Introduced in 7.4.1
+Deprecated since 7.55.0
 .IP CURLINFO_SPEED_UPLOAD_T
 Introduced in 7.55.0
 .IP CURLINFO_SSL_DATA_IN
@@ -719,14 +1128,42 @@ Introduced in 7.19.6
 Introduced in 7.19.6
 .IP CURLKHTYPE_UNKNOWN
 Introduced in 7.19.6
+.IP CURLM_ABORTED_BY_CALLBACK
+Introduced in 7.81.0
+.IP CURLM_ADDED_ALREADY
+Introduced in 7.32.1
+.IP CURLM_BAD_EASY_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_FUNCTION_ARGUMENT
+Introduced in 7.69.0
+.IP CURLM_BAD_HANDLE
+Introduced in 7.9.6
+.IP CURLM_BAD_SOCKET
+Introduced in 7.15.4
+.IP CURLM_CALL_MULTI_PERFORM
+Introduced in 7.9.6
+.IP CURLM_CALL_MULTI_SOCKET
+Introduced in 7.15.5
+.IP CURLM_INTERNAL_ERROR
+Introduced in 7.9.6
+.IP CURLM_OK
+Introduced in 7.9.6
+.IP CURLM_OUT_OF_MEMORY
+Introduced in 7.9.6
+.IP CURLM_RECURSIVE_API_CALL
+Introduced in 7.59.0
+.IP CURLM_UNKNOWN_OPTION
+Introduced in 7.15.4
+.IP CURLM_UNRECOVERABLE_POLL
+Introduced in 7.84.0
+.IP CURLM_WAKEUP_FAILURE
+Introduced in 7.68.0
 .IP CURLMIMEOPT_FORMESCAPE
 Introduced in 7.81.0
 .IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE
 Introduced in 7.30.0
 .IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE
 Introduced in 7.30.0
-.IP CURLMOPT_MAXCONNECTS
-Introduced in 7.16.3
 .IP CURLMOPT_MAX_CONCURRENT_STREAMS
 Introduced in 7.67.0
 .IP CURLMOPT_MAX_HOST_CONNECTIONS
@@ -735,6 +1172,8 @@ Introduced in 7.30.0
 Introduced in 7.30.0
 .IP CURLMOPT_MAX_TOTAL_CONNECTIONS
 Introduced in 7.30.0
+.IP CURLMOPT_MAXCONNECTS
+Introduced in 7.16.3
 .IP CURLMOPT_PIPELINING
 Introduced in 7.16.0
 .IP CURLMOPT_PIPELINING_SERVER_BL
@@ -757,60 +1196,14 @@ Introduced in 7.16.0
 Introduced in 7.9.6
 .IP CURLMSG_NONE
 Introduced in 7.9.6
-.IP CURLM_ABORTED_BY_CALLBACK
-Introduced in 7.81.0
-.IP CURLM_ADDED_ALREADY
-Introduced in 7.32.1
-.IP CURLM_BAD_EASY_HANDLE
-Introduced in 7.9.6
-.IP CURLM_BAD_FUNCTION_ARGUMENT
-Introduced in 7.69.0
-.IP CURLM_BAD_HANDLE
-Introduced in 7.9.6
-.IP CURLM_BAD_SOCKET
-Introduced in 7.15.4
-.IP CURLM_CALL_MULTI_PERFORM
-Introduced in 7.9.6
-.IP CURLM_CALL_MULTI_SOCKET
-Introduced in 7.15.5
-.IP CURLM_INTERNAL_ERROR
-Introduced in 7.9.6
-.IP CURLM_OK
-Introduced in 7.9.6
-.IP CURLM_OUT_OF_MEMORY
-Introduced in 7.9.6
-.IP CURLM_RECURSIVE_API_CALL
-Introduced in 7.59.0
-.IP CURLM_UNKNOWN_OPTION
-Introduced in 7.15.4
-.IP CURLM_WAKEUP_FAILURE
-Introduced in 7.68.0
 .IP CURLOPT
 Introduced in 7.69.0
-.IP CURLOPTTYPE_BLOB
-Introduced in 7.71.0
-.IP CURLOPTTYPE_CBPOINT
-Introduced in 7.73.0
-.IP CURLOPTTYPE_FUNCTIONPOINT
-Introduced in 7.1
-.IP CURLOPTTYPE_LONG
-Introduced in 7.1
-.IP CURLOPTTYPE_OBJECTPOINT
-Introduced in 7.1
-.IP CURLOPTTYPE_OFF_T
-Introduced in 7.11.0
-.IP CURLOPTTYPE_SLISTPOINT
-Introduced in 7.65.2
-.IP CURLOPTTYPE_STRINGPOINT
-Introduced in 7.46.0
-.IP CURLOPTTYPE_VALUES
-Introduced in 7.73.0
 .IP CURLOPT_ABSTRACT_UNIX_SOCKET
 Introduced in 7.53.0
-.IP CURLOPT_ACCEPTTIMEOUT_MS
-Introduced in 7.24.0
 .IP CURLOPT_ACCEPT_ENCODING
 Introduced in 7.21.6
+.IP CURLOPT_ACCEPTTIMEOUT_MS
+Introduced in 7.24.0
 .IP CURLOPT_ADDRESS_SCOPE
 Introduced in 7.19.0
 .IP CURLOPT_ALTSVC
@@ -821,6 +1214,8 @@ Introduced in 7.64.1
 Introduced in 7.17.0
 .IP CURLOPT_AUTOREFERER
 Introduced in 7.1
+.IP CURLOPT_AWS_SIGV4
+Introduced in 7.75.0
 .IP CURLOPT_BUFFERSIZE
 Introduced in 7.10
 .IP CURLOPT_CAINFO
@@ -848,20 +1243,23 @@ Deprecated since 7.16.1
 Introduced in 7.21.7
 .IP CURLOPT_CLOSESOCKETFUNCTION
 Introduced in 7.21.7
-.IP CURLOPT_CONNECTTIMEOUT
-Introduced in 7.7
-.IP CURLOPT_CONNECTTIMEOUT_MS
-Introduced in 7.16.2
 .IP CURLOPT_CONNECT_ONLY
 Introduced in 7.15.2
 .IP CURLOPT_CONNECT_TO
 Introduced in 7.49.0
+.IP CURLOPT_CONNECTTIMEOUT
+Introduced in 7.7
+.IP CURLOPT_CONNECTTIMEOUT_MS
+Introduced in 7.16.2
 .IP CURLOPT_CONV_FROM_NETWORK_FUNCTION
 Introduced in 7.15.4
+Deprecated since 7.82.0
 .IP CURLOPT_CONV_FROM_UTF8_FUNCTION
 Introduced in 7.15.4
+Deprecated since 7.82.0
 .IP CURLOPT_CONV_TO_NETWORK_FUNCTION
 Introduced in 7.15.4
+Deprecated since 7.82.0
 .IP CURLOPT_COOKIE
 Introduced in 7.1
 .IP CURLOPT_COOKIEFILE
@@ -917,8 +1315,10 @@ Introduced in 7.76.0
 Introduced in 7.62.0
 .IP CURLOPT_EGDSOCKET
 Introduced in 7.7
+Deprecated since 7.84.0
 .IP CURLOPT_ENCODING
 Introduced in 7.10
+Deprecated since 7.21.6
 .IP CURLOPT_ERRORBUFFER
 Introduced in 7.1
 .IP CURLOPT_EXPECT_100_TIMEOUT_MS
@@ -940,20 +1340,6 @@ Introduced in 7.1
 Introduced in 7.7
 .IP CURLOPT_FRESH_CONNECT
 Introduced in 7.7
-.IP CURLOPT_FTPAPPEND
-Introduced in 7.1
-Deprecated since 7.16.4
-.IP CURLOPT_FTPASCII
-Introduced in 7.1
-Deprecated since 7.11.1
-Last used in 7.15.5
-.IP CURLOPT_FTPLISTONLY
-Introduced in 7.1
-Deprecated since 7.16.4
-.IP CURLOPT_FTPPORT
-Introduced in 7.1
-.IP CURLOPT_FTPSSLAUTH
-Introduced in 7.12.2
 .IP CURLOPT_FTP_ACCOUNT
 Introduced in 7.13.0
 .IP CURLOPT_FTP_ALTERNATIVE_TO_USER
@@ -964,6 +1350,7 @@ Introduced in 7.10.7
 Introduced in 7.15.1
 .IP CURLOPT_FTP_RESPONSE_TIMEOUT
 Introduced in 7.10.8
+Deprecated since 7.85.0
 .IP CURLOPT_FTP_SKIP_PASV_IP
 Introduced in 7.15.0
 .IP CURLOPT_FTP_SSL
@@ -977,6 +1364,20 @@ Introduced in 7.10.5
 Introduced in 7.9.2
 .IP CURLOPT_FTP_USE_PRET
 Introduced in 7.20.0
+.IP CURLOPT_FTPAPPEND
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPASCII
+Introduced in 7.1
+Deprecated since 7.11.1
+Last used in 7.15.5
+.IP CURLOPT_FTPLISTONLY
+Introduced in 7.1
+Deprecated since 7.16.4
+.IP CURLOPT_FTPPORT
+Introduced in 7.1
+.IP CURLOPT_FTPSSLAUTH
+Introduced in 7.12.2
 .IP CURLOPT_GSSAPI_DELEGATION
 Introduced in 7.22.0
 .IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
@@ -1007,1262 +1408,965 @@ Introduced in 7.74.0
 Introduced in 7.64.0
 .IP CURLOPT_HTTP200ALIASES
 Introduced in 7.10.3
-.IP CURLOPT_HTTPAUTH
-Introduced in 7.10.6
-.IP CURLOPT_HTTPGET
-Introduced in 7.8.1
-.IP CURLOPT_HTTPHEADER
-Introduced in 7.1
-.IP CURLOPT_HTTPPOST
-Introduced in 7.1
-Deprecated since 7.56.0
-.IP CURLOPT_HTTPPROXYTUNNEL
-Introduced in 7.3
-.IP CURLOPT_HTTPREQUEST
-Introduced in 7.1
 .IP CURLOPT_HTTP_CONTENT_DECODING
 Introduced in 7.16.2
 .IP CURLOPT_HTTP_TRANSFER_DECODING
 Introduced in 7.16.2
 .IP CURLOPT_HTTP_VERSION
 Introduced in 7.9.1
-.IP CURLOPT_IGNORE_CONTENT_LENGTH
-Introduced in 7.14.1
-.IP CURLOPT_INFILE
-Introduced in 7.1
-Deprecated since 7.9.7
-.IP CURLOPT_INFILESIZE
-Introduced in 7.1
-.IP CURLOPT_INFILESIZE_LARGE
-Introduced in 7.11.0
-.IP CURLOPT_INTERFACE
-Introduced in 7.3
-.IP CURLOPT_INTERLEAVEDATA
-Introduced in 7.20.0
-.IP CURLOPT_INTERLEAVEFUNCTION
-Introduced in 7.20.0
-.IP CURLOPT_IOCTLDATA
-Introduced in 7.12.3
-.IP CURLOPT_IOCTLFUNCTION
-Introduced in 7.12.3
-.IP CURLOPT_IPRESOLVE
-Introduced in 7.10.8
-.IP CURLOPT_ISSUERCERT
-Introduced in 7.19.0
-.IP CURLOPT_ISSUERCERT_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_KEEP_SENDING_ON_ERROR
-Introduced in 7.51.0
-.IP CURLOPT_KEYPASSWD
-Introduced in 7.17.0
-.IP CURLOPT_KRB4LEVEL
-Introduced in 7.3
-Deprecated since 7.17.0
-.IP CURLOPT_KRBLEVEL
-Introduced in 7.16.4
-.IP CURLOPT_LOCALPORT
-Introduced in 7.15.2
-.IP CURLOPT_LOCALPORTRANGE
-Introduced in 7.15.2
-.IP CURLOPT_LOGIN_OPTIONS
-Introduced in 7.34.0
-.IP CURLOPT_LOW_SPEED_LIMIT
-Introduced in 7.1
-.IP CURLOPT_LOW_SPEED_TIME
-Introduced in 7.1
-.IP CURLOPT_MAIL_AUTH
-Introduced in 7.25.0
-.IP CURLOPT_MAIL_FROM
-Introduced in 7.20.0
-.IP CURLOPT_MAIL_RCPT
-Introduced in 7.20.0
-.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
-Introduced in 7.69.0
-.IP CURLOPT_MAXAGE_CONN
-Introduced in 7.65.0
-.IP CURLOPT_MAXCONNECTS
-Introduced in 7.7
-.IP CURLOPT_MAXFILESIZE
-Introduced in 7.10.8
-.IP CURLOPT_MAXFILESIZE_LARGE
-Introduced in 7.11.0
-.IP CURLOPT_MAXLIFETIME_CONN
-Introduced in 7.80.0
-.IP CURLOPT_MAXREDIRS
-Introduced in 7.5
-.IP CURLOPT_MAX_RECV_SPEED_LARGE
-Introduced in 7.15.5
-.IP CURLOPT_MAX_SEND_SPEED_LARGE
-Introduced in 7.15.5
-.IP CURLOPT_MIMEPOST
-Introduced in 7.56.0
-.IP CURLOPT_MIME_OPTIONS
-Introduced in 7.81.0
-.IP CURLOPT_MUTE
-Introduced in 7.1
-Deprecated since 7.8
-Last used in 7.15.5
-.IP CURLOPT_NETRC
-Introduced in 7.1
-.IP CURLOPT_NETRC_FILE
-Introduced in 7.11.0
-.IP CURLOPT_NEW_DIRECTORY_PERMS
-Introduced in 7.16.4
-.IP CURLOPT_NEW_FILE_PERMS
-Introduced in 7.16.4
-.IP CURLOPT_NOBODY
-Introduced in 7.1
-.IP CURLOPT_NOPROGRESS
-Introduced in 7.1
-.IP CURLOPT_NOPROXY
-Introduced in 7.19.4
-.IP CURLOPT_NOSIGNAL
-Introduced in 7.10
-.IP CURLOPT_NOTHING
-Introduced in 7.1.1
-Deprecated since 7.11.1
-Last used in 7.11.0
-.IP CURLOPT_OPENSOCKETDATA
-Introduced in 7.17.1
-.IP CURLOPT_OPENSOCKETFUNCTION
-Introduced in 7.17.1
-.IP CURLOPT_PASSWDDATA
-Introduced in 7.4.2
-Deprecated since 7.11.1
-Last used in 7.15.5
-.IP CURLOPT_PASSWDFUNCTION
-Introduced in 7.4.2
-Deprecated since 7.11.1
-Last used in 7.15.5
-.IP CURLOPT_PASSWORD
-Introduced in 7.19.1
-.IP CURLOPT_PASV_HOST
-Introduced in 7.12.1
-Deprecated since 7.16.0
-Last used in 7.15.5
-.IP CURLOPT_PATH_AS_IS
-Introduced in 7.42.0
-.IP CURLOPT_PINNEDPUBLICKEY
-Introduced in 7.39.0
-.IP CURLOPT_PIPEWAIT
-Introduced in 7.43.0
-.IP CURLOPT_PORT
-Introduced in 7.1
-.IP CURLOPT_POST
-Introduced in 7.1
-.IP CURLOPT_POST301
-Introduced in 7.17.1
-Deprecated since 7.19.1
-.IP CURLOPT_POSTFIELDS
-Introduced in 7.1
-.IP CURLOPT_POSTFIELDSIZE
-Introduced in 7.2
-.IP CURLOPT_POSTFIELDSIZE_LARGE
-Introduced in 7.11.1
-.IP CURLOPT_POSTQUOTE
-Introduced in 7.1
-.IP CURLOPT_POSTREDIR
-Introduced in 7.19.1
-.IP CURLOPT_PREQUOTE
-Introduced in 7.9.5
-.IP CURLOPT_PREREQDATA
-Introduced in 7.80.0
-.IP CURLOPT_PREREQFUNCTION
-Introduced in 7.80.0
-.IP CURLOPT_PRE_PROXY
-Introduced in 7.52.0
-.IP CURLOPT_PRIVATE
-Introduced in 7.10.3
-.IP CURLOPT_PROGRESSDATA
-Introduced in 7.1
-.IP CURLOPT_PROGRESSFUNCTION
-Introduced in 7.1
-Deprecated since 7.32.0
-.IP CURLOPT_PROTOCOLS
-Introduced in 7.19.4
-.IP CURLOPT_PROXY
-Introduced in 7.1
-.IP CURLOPT_PROXYAUTH
-Introduced in 7.10.7
-.IP CURLOPT_PROXYHEADER
-Introduced in 7.37.0
-.IP CURLOPT_PROXYPASSWORD
-Introduced in 7.19.1
-.IP CURLOPT_PROXYPORT
-Introduced in 7.1
-.IP CURLOPT_PROXYTYPE
-Introduced in 7.10
-.IP CURLOPT_PROXYUSERNAME
-Introduced in 7.19.1
-.IP CURLOPT_PROXYUSERPWD
-Introduced in 7.1
-.IP CURLOPT_PROXY_CAINFO
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_CAINFO_BLOB
-Introduced in 7.77.0
-.IP CURLOPT_PROXY_CAPATH
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_CRLFILE
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_ISSUERCERT
-Introduced in 7.71.0
-.IP CURLOPT_PROXY_ISSUERCERT_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_PROXY_KEYPASSWD
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_PINNEDPUBLICKEY
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SERVICE_NAME
-Introduced in 7.43.0
-.IP CURLOPT_PROXY_SSLCERT
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSLCERTTYPE
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSLCERT_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_PROXY_SSLKEY
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSLKEYTYPE
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSLKEY_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_PROXY_SSLVERSION
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_CIPHER_LIST
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_OPTIONS
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_VERIFYHOST
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_SSL_VERIFYPEER
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_TLS13_CIPHERS
-Introduced in 7.61.0
-.IP CURLOPT_PROXY_TLSAUTH_PASSWORD
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_TLSAUTH_TYPE
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_TLSAUTH_USERNAME
-Introduced in 7.52.0
-.IP CURLOPT_PROXY_TRANSFER_MODE
-Introduced in 7.18.0
-.IP CURLOPT_PUT
-Introduced in 7.1
-.IP CURLOPT_QUOTE
+.IP CURLOPT_HTTPAUTH
+Introduced in 7.10.6
+.IP CURLOPT_HTTPGET
+Introduced in 7.8.1
+.IP CURLOPT_HTTPHEADER
 Introduced in 7.1
-.IP CURLOPT_RANDOM_FILE
-Introduced in 7.7
-.IP CURLOPT_RANGE
+.IP CURLOPT_HTTPPOST
 Introduced in 7.1
-.IP CURLOPT_READDATA
-Introduced in 7.9.7
-.IP CURLOPT_READFUNCTION
+Deprecated since 7.56.0
+.IP CURLOPT_HTTPPROXYTUNNEL
+Introduced in 7.3
+.IP CURLOPT_HTTPREQUEST
 Introduced in 7.1
-.IP CURLOPT_REDIR_PROTOCOLS
-Introduced in 7.19.4
-.IP CURLOPT_REFERER
+.IP CURLOPT_IGNORE_CONTENT_LENGTH
+Introduced in 7.14.1
+.IP CURLOPT_INFILE
 Introduced in 7.1
-.IP CURLOPT_REQUEST_TARGET
-Introduced in 7.55.0
-.IP CURLOPT_RESOLVE
-Introduced in 7.21.3
-.IP CURLOPT_RESOLVER_START_DATA
-Introduced in 7.59.0
-.IP CURLOPT_RESOLVER_START_FUNCTION
-Introduced in 7.59.0
-.IP CURLOPT_RESUME_FROM
+Deprecated since 7.9.7
+.IP CURLOPT_INFILESIZE
 Introduced in 7.1
-.IP CURLOPT_RESUME_FROM_LARGE
+.IP CURLOPT_INFILESIZE_LARGE
 Introduced in 7.11.0
-.IP CURLOPT_RTSPHEADER
-Introduced in 7.20.0
-.IP CURLOPT_RTSP_CLIENT_CSEQ
-Introduced in 7.20.0
-.IP CURLOPT_RTSP_REQUEST
-Introduced in 7.20.0
-.IP CURLOPT_RTSP_SERVER_CSEQ
-Introduced in 7.20.0
-.IP CURLOPT_RTSP_SESSION_ID
-Introduced in 7.20.0
-.IP CURLOPT_RTSP_STREAM_URI
-Introduced in 7.20.0
-.IP CURLOPT_RTSP_TRANSPORT
+.IP CURLOPT_INTERFACE
+Introduced in 7.3
+.IP CURLOPT_INTERLEAVEDATA
 Introduced in 7.20.0
-.IP CURLOPT_SASL_AUTHZID
-Introduced in 7.66.0
-.IP CURLOPT_SASL_IR
-Introduced in 7.31.0
-.IP CURLOPT_SEEKDATA
-Introduced in 7.18.0
-.IP CURLOPT_SEEKFUNCTION
-Introduced in 7.18.0
-.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
+.IP CURLOPT_INTERLEAVEFUNCTION
 Introduced in 7.20.0
-.IP CURLOPT_SERVICE_NAME
-Introduced in 7.43.0
-.IP CURLOPT_SHARE
-Introduced in 7.10
-.IP CURLOPT_SOCKOPTDATA
-Introduced in 7.16.0
-.IP CURLOPT_SOCKOPTFUNCTION
-Introduced in 7.16.0
-.IP CURLOPT_SOCKS5_AUTH
-Introduced in 7.55.0
-.IP CURLOPT_SOCKS5_GSSAPI_NEC
-Introduced in 7.19.4
-.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
-Introduced in 7.19.4
-Deprecated since 7.49.0
-.IP CURLOPT_SOURCE_HOST
-Introduced in 7.12.1
-.IP CURLOPT_SOURCE_PATH
-Introduced in 7.12.1
-.IP CURLOPT_SOURCE_PORT
-Introduced in 7.12.1
-.IP CURLOPT_SOURCE_POSTQUOTE
-Introduced in 7.12.1
-.IP CURLOPT_SOURCE_PREQUOTE
-Introduced in 7.12.1
-.IP CURLOPT_SOURCE_QUOTE
-Introduced in 7.13.0
-.IP CURLOPT_SOURCE_URL
-Introduced in 7.13.0
-.IP CURLOPT_SOURCE_USERPWD
-Introduced in 7.12.1
-.IP CURLOPT_SSH_AUTH_TYPES
-Introduced in 7.16.1
-.IP CURLOPT_SSH_COMPRESSION
-Introduced in 7.56.0
-.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
-Introduced in 7.17.1
-.IP CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
-Introduced in 7.80.0
-.IP CURLOPT_SSH_KEYDATA
-Introduced in 7.19.6
-.IP CURLOPT_SSH_KEYFUNCTION
-Introduced in 7.19.6
-.IP CURLOPT_SSH_KNOWNHOSTS
-Introduced in 7.19.6
-.IP CURLOPT_SSH_PRIVATE_KEYFILE
-Introduced in 7.16.1
-.IP CURLOPT_SSH_PUBLIC_KEYFILE
-Introduced in 7.16.1
-.IP CURLOPT_SSLCERT
-Introduced in 7.1
-.IP CURLOPT_SSLCERTPASSWD
-Introduced in 7.1.1
-Deprecated since 7.17.0
-.IP CURLOPT_SSLCERTTYPE
-Introduced in 7.9.3
-.IP CURLOPT_SSLCERT_BLOB
+.IP CURLOPT_IOCTLDATA
+Introduced in 7.12.3
+Deprecated since 7.18.0
+.IP CURLOPT_IOCTLFUNCTION
+Introduced in 7.12.3
+Deprecated since 7.18.0
+.IP CURLOPT_IPRESOLVE
+Introduced in 7.10.8
+.IP CURLOPT_ISSUERCERT
+Introduced in 7.19.0
+.IP CURLOPT_ISSUERCERT_BLOB
 Introduced in 7.71.0
-.IP CURLOPT_SSLENGINE
-Introduced in 7.9.3
-.IP CURLOPT_SSLENGINE_DEFAULT
-Introduced in 7.9.3
-.IP CURLOPT_SSLKEY
-Introduced in 7.9.3
-.IP CURLOPT_SSLKEYPASSWD
-Introduced in 7.9.3
+.IP CURLOPT_KEEP_SENDING_ON_ERROR
+Introduced in 7.51.0
+.IP CURLOPT_KEYPASSWD
+Introduced in 7.17.0
+.IP CURLOPT_KRB4LEVEL
+Introduced in 7.3
 Deprecated since 7.17.0
-.IP CURLOPT_SSLKEYTYPE
-Introduced in 7.9.3
-.IP CURLOPT_SSLKEY_BLOB
-Introduced in 7.71.0
-.IP CURLOPT_SSLVERSION
+.IP CURLOPT_KRBLEVEL
+Introduced in 7.16.4
+.IP CURLOPT_LOCALPORT
+Introduced in 7.15.2
+.IP CURLOPT_LOCALPORTRANGE
+Introduced in 7.15.2
+.IP CURLOPT_LOGIN_OPTIONS
+Introduced in 7.34.0
+.IP CURLOPT_LOW_SPEED_LIMIT
 Introduced in 7.1
-.IP CURLOPT_SSL_CIPHER_LIST
-Introduced in 7.9
-.IP CURLOPT_SSL_CTX_DATA
-Introduced in 7.10.6
-.IP CURLOPT_SSL_CTX_FUNCTION
-Introduced in 7.10.6
-.IP CURLOPT_SSL_EC_CURVES
-Introduced in 7.73.0
-.IP CURLOPT_SSL_ENABLE_ALPN
-Introduced in 7.36.0
-.IP CURLOPT_SSL_ENABLE_NPN
-Introduced in 7.36.0
-.IP CURLOPT_SSL_FALSESTART
-Introduced in 7.42.0
-.IP CURLOPT_SSL_OPTIONS
-Introduced in 7.25.0
-.IP CURLOPT_SSL_SESSIONID_CACHE
-Introduced in 7.16.0
-.IP CURLOPT_SSL_VERIFYHOST
-Introduced in 7.8.1
-.IP CURLOPT_SSL_VERIFYPEER
-Introduced in 7.4.2
-.IP CURLOPT_SSL_VERIFYSTATUS
-Introduced in 7.41.0
-.IP CURLOPT_STDERR
+.IP CURLOPT_LOW_SPEED_TIME
 Introduced in 7.1
-.IP CURLOPT_STREAM_DEPENDS
-Introduced in 7.46.0
-.IP CURLOPT_STREAM_DEPENDS_E
-Introduced in 7.46.0
-.IP CURLOPT_STREAM_WEIGHT
-Introduced in 7.46.0
-.IP CURLOPT_SUPPRESS_CONNECT_HEADERS
-Introduced in 7.54.0
-.IP CURLOPT_TCP_FASTOPEN
-Introduced in 7.49.0
-.IP CURLOPT_TCP_KEEPALIVE
-Introduced in 7.25.0
-.IP CURLOPT_TCP_KEEPIDLE
-Introduced in 7.25.0
-.IP CURLOPT_TCP_KEEPINTVL
+.IP CURLOPT_MAIL_AUTH
 Introduced in 7.25.0
-.IP CURLOPT_TCP_NODELAY
-Introduced in 7.11.2
-.IP CURLOPT_TELNETOPTIONS
+.IP CURLOPT_MAIL_FROM
+Introduced in 7.20.0
+.IP CURLOPT_MAIL_RCPT
+Introduced in 7.20.0
+.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
+Introduced in 7.69.0
+.IP CURLOPT_MAX_RECV_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MAX_SEND_SPEED_LARGE
+Introduced in 7.15.5
+.IP CURLOPT_MAXAGE_CONN
+Introduced in 7.65.0
+.IP CURLOPT_MAXCONNECTS
 Introduced in 7.7
-.IP CURLOPT_TFTP_BLKSIZE
+.IP CURLOPT_MAXFILESIZE
+Introduced in 7.10.8
+.IP CURLOPT_MAXFILESIZE_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_MAXLIFETIME_CONN
+Introduced in 7.80.0
+.IP CURLOPT_MAXREDIRS
+Introduced in 7.5
+.IP CURLOPT_MIME_OPTIONS
+Introduced in 7.81.0
+.IP CURLOPT_MIMEPOST
+Introduced in 7.56.0
+.IP CURLOPT_MUTE
+Introduced in 7.1
+Deprecated since 7.8
+Last used in 7.15.5
+.IP CURLOPT_NETRC
+Introduced in 7.1
+.IP CURLOPT_NETRC_FILE
+Introduced in 7.11.0
+.IP CURLOPT_NEW_DIRECTORY_PERMS
+Introduced in 7.16.4
+.IP CURLOPT_NEW_FILE_PERMS
+Introduced in 7.16.4
+.IP CURLOPT_NOBODY
+Introduced in 7.1
+.IP CURLOPT_NOPROGRESS
+Introduced in 7.1
+.IP CURLOPT_NOPROXY
 Introduced in 7.19.4
-.IP CURLOPT_TFTP_NO_OPTIONS
-Introduced in 7.48.0
-.IP CURLOPT_TIMECONDITION
+.IP CURLOPT_NOSIGNAL
+Introduced in 7.10
+.IP CURLOPT_NOTHING
+Introduced in 7.1.1
+Deprecated since 7.11.1
+Last used in 7.11.0
+.IP CURLOPT_OPENSOCKETDATA
+Introduced in 7.17.1
+.IP CURLOPT_OPENSOCKETFUNCTION
+Introduced in 7.17.1
+.IP CURLOPT_PASSWDDATA
+Introduced in 7.4.2
+Deprecated since 7.11.1
+Last used in 7.15.5
+.IP CURLOPT_PASSWDFUNCTION
+Introduced in 7.4.2
+Deprecated since 7.11.1
+Last used in 7.15.5
+.IP CURLOPT_PASSWORD
+Introduced in 7.19.1
+.IP CURLOPT_PASV_HOST
+Introduced in 7.12.1
+Deprecated since 7.16.0
+Last used in 7.15.5
+.IP CURLOPT_PATH_AS_IS
+Introduced in 7.42.0
+.IP CURLOPT_PINNEDPUBLICKEY
+Introduced in 7.39.0
+.IP CURLOPT_PIPEWAIT
+Introduced in 7.43.0
+.IP CURLOPT_PORT
 Introduced in 7.1
-.IP CURLOPT_TIMEOUT
+.IP CURLOPT_POST
 Introduced in 7.1
-.IP CURLOPT_TIMEOUT_MS
-Introduced in 7.16.2
-.IP CURLOPT_TIMEVALUE
+.IP CURLOPT_POST301
+Introduced in 7.17.1
+Deprecated since 7.19.1
+.IP CURLOPT_POSTFIELDS
 Introduced in 7.1
-.IP CURLOPT_TIMEVALUE_LARGE
-Introduced in 7.59.0
-.IP CURLOPT_TLS13_CIPHERS
-Introduced in 7.61.0
-.IP CURLOPT_TLSAUTH_PASSWORD
-Introduced in 7.21.4
-.IP CURLOPT_TLSAUTH_TYPE
-Introduced in 7.21.4
-.IP CURLOPT_TLSAUTH_USERNAME
-Introduced in 7.21.4
-.IP CURLOPT_TRAILERDATA
-Introduced in 7.64.0
-.IP CURLOPT_TRAILERFUNCTION
-Introduced in 7.64.0
-.IP CURLOPT_TRANSFERTEXT
-Introduced in 7.1.1
-.IP CURLOPT_TRANSFER_ENCODING
-Introduced in 7.21.6
-.IP CURLOPT_UNIX_SOCKET_PATH
-Introduced in 7.40.0
-.IP CURLOPT_UNRESTRICTED_AUTH
-Introduced in 7.10.4
-.IP CURLOPT_UPKEEP_INTERVAL_MS
-Introduced in 7.62.0
-.IP CURLOPT_UPLOAD
+.IP CURLOPT_POSTFIELDSIZE
+Introduced in 7.2
+.IP CURLOPT_POSTFIELDSIZE_LARGE
+Introduced in 7.11.1
+.IP CURLOPT_POSTQUOTE
 Introduced in 7.1
-.IP CURLOPT_UPLOAD_BUFFERSIZE
-Introduced in 7.62.0
-.IP CURLOPT_URL
+.IP CURLOPT_POSTREDIR
+Introduced in 7.19.1
+.IP CURLOPT_PRE_PROXY
+Introduced in 7.52.0
+.IP CURLOPT_PREQUOTE
+Introduced in 7.9.5
+.IP CURLOPT_PREREQDATA
+Introduced in 7.80.0
+.IP CURLOPT_PREREQFUNCTION
+Introduced in 7.80.0
+.IP CURLOPT_PRIVATE
+Introduced in 7.10.3
+.IP CURLOPT_PROGRESSDATA
 Introduced in 7.1
-.IP CURLOPT_USERAGENT
+.IP CURLOPT_PROGRESSFUNCTION
 Introduced in 7.1
-.IP CURLOPT_USERNAME
+Deprecated since 7.32.0
+.IP CURLOPT_PROTOCOLS
+Introduced in 7.19.4
+Deprecated since 7.85.0
+.IP CURLOPT_PROTOCOLS_STR
+Introduced in 7.85.0
+.IP CURLOPT_PROXY
+Introduced in 7.1
+.IP CURLOPT_PROXY_CAINFO
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_CAINFO_BLOB
+Introduced in 7.77.0
+.IP CURLOPT_PROXY_CAPATH
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_CRLFILE
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_ISSUERCERT
+Introduced in 7.71.0
+.IP CURLOPT_PROXY_ISSUERCERT_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_PROXY_KEYPASSWD
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_PINNEDPUBLICKEY
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SERVICE_NAME
+Introduced in 7.43.0
+.IP CURLOPT_PROXY_SSL_CIPHER_LIST
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSL_OPTIONS
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSL_VERIFYHOST
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSL_VERIFYPEER
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSLCERT
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSLCERT_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_PROXY_SSLCERTTYPE
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSLKEY
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSLKEY_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_PROXY_SSLKEYTYPE
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_SSLVERSION
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_TLS13_CIPHERS
+Introduced in 7.61.0
+.IP CURLOPT_PROXY_TLSAUTH_PASSWORD
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_TLSAUTH_TYPE
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_TLSAUTH_USERNAME
+Introduced in 7.52.0
+.IP CURLOPT_PROXY_TRANSFER_MODE
+Introduced in 7.18.0
+.IP CURLOPT_PROXYAUTH
+Introduced in 7.10.7
+.IP CURLOPT_PROXYHEADER
+Introduced in 7.37.0
+.IP CURLOPT_PROXYPASSWORD
 Introduced in 7.19.1
-.IP CURLOPT_USERPWD
+.IP CURLOPT_PROXYPORT
 Introduced in 7.1
-.IP CURLOPT_USE_SSL
-Introduced in 7.17.0
-.IP CURLOPT_AWS_SIGV4
-Introduced in 7.75.0
-.IP CURLOPT_VERBOSE
+.IP CURLOPT_PROXYTYPE
+Introduced in 7.10
+.IP CURLOPT_PROXYUSERNAME
+Introduced in 7.19.1
+.IP CURLOPT_PROXYUSERPWD
 Introduced in 7.1
-.IP CURLOPT_WILDCARDMATCH
-Introduced in 7.21.0
-.IP CURLOPT_WRITEDATA
-Introduced in 7.9.7
-.IP CURLOPT_WRITEFUNCTION
+.IP CURLOPT_PUT
 Introduced in 7.1
-.IP CURLOPT_WRITEHEADER
+Deprecated since 7.12.1
+.IP CURLOPT_QUOTE
 Introduced in 7.1
-.IP CURLOPT_WRITEINFO
+.IP CURLOPT_RANDOM_FILE
+Introduced in 7.7
+Deprecated since 7.84.0
+.IP CURLOPT_RANGE
 Introduced in 7.1
-.IP CURLOPT_XFERINFODATA
-Introduced in 7.32.0
-.IP CURLOPT_XFERINFOFUNCTION
-Introduced in 7.32.0
-.IP CURLOPT_XOAUTH2_BEARER
-Introduced in 7.33.0
-.IP CURLOT_BLOB
-Introduced in 7.73.0
-.IP CURLOT_CBPTR
-Introduced in 7.73.0
-.IP CURLOT_FUNCTION
-Introduced in 7.73.0
-.IP CURLOT_LONG
-Introduced in 7.73.0
-.IP CURLOT_OBJECT
-Introduced in 7.73.0
-.IP CURLOT_OFF_T
-Introduced in 7.73.0
-.IP CURLOT_SLIST
-Introduced in 7.73.0
-.IP CURLOT_STRING
-Introduced in 7.73.0
-.IP CURLOT_VALUES
-Introduced in 7.73.0
-.IP CURLPAUSE_ALL
-Introduced in 7.18.0
-.IP CURLPAUSE_CONT
-Introduced in 7.18.0
-.IP CURLPAUSE_RECV
-Introduced in 7.18.0
-.IP CURLPAUSE_RECV_CONT
-Introduced in 7.18.0
-.IP CURLPAUSE_SEND
-Introduced in 7.18.0
-.IP CURLPAUSE_SEND_CONT
-Introduced in 7.18.0
-.IP CURLPIPE_HTTP1
-Introduced in 7.43.0
-.IP CURLPIPE_MULTIPLEX
-Introduced in 7.43.0
-.IP CURLPIPE_NOTHING
-Introduced in 7.43.0
-.IP CURLPROTO_ALL
-Introduced in 7.19.4
-.IP CURLPROTO_DICT
-Introduced in 7.19.4
-.IP CURLPROTO_FILE
-Introduced in 7.19.4
-.IP CURLPROTO_FTP
-Introduced in 7.19.4
-.IP CURLPROTO_FTPS
-Introduced in 7.19.4
-.IP CURLPROTO_GOPHER
-Introduced in 7.21.2
-.IP CURLPROTO_GOPHERS
-Introduced in 7.75.0
-.IP CURLPROTO_HTTP
-Introduced in 7.19.4
-.IP CURLPROTO_HTTPS
-Introduced in 7.19.4
-.IP CURLPROTO_IMAP
-Introduced in 7.20.0
-.IP CURLPROTO_IMAPS
-Introduced in 7.20.0
-.IP CURLPROTO_LDAP
-Introduced in 7.19.4
-.IP CURLPROTO_LDAPS
+.IP CURLOPT_READDATA
+Introduced in 7.9.7
+.IP CURLOPT_READFUNCTION
+Introduced in 7.1
+.IP CURLOPT_REDIR_PROTOCOLS
 Introduced in 7.19.4
-.IP CURLPROTO_MQTT
-Introduced in 7.71.0
-.IP CURLPROTO_POP3
-Introduced in 7.20.0
-.IP CURLPROTO_POP3S
-Introduced in 7.20.0
-.IP CURLPROTO_RTMP
-Introduced in 7.21.0
-.IP CURLPROTO_RTMPE
-Introduced in 7.21.0
-.IP CURLPROTO_RTMPS
-Introduced in 7.21.0
-.IP CURLPROTO_RTMPT
-Introduced in 7.21.0
-.IP CURLPROTO_RTMPTE
-Introduced in 7.21.0
-.IP CURLPROTO_RTMPTS
-Introduced in 7.21.0
-.IP CURLPROTO_RTSP
+Deprecated since 7.85.0
+.IP CURLOPT_REDIR_PROTOCOLS_STR
+Introduced in 7.85.0
+.IP CURLOPT_REFERER
+Introduced in 7.1
+.IP CURLOPT_REQUEST_TARGET
+Introduced in 7.55.0
+.IP CURLOPT_RESOLVE
+Introduced in 7.21.3
+.IP CURLOPT_RESOLVER_START_DATA
+Introduced in 7.59.0
+.IP CURLOPT_RESOLVER_START_FUNCTION
+Introduced in 7.59.0
+.IP CURLOPT_RESUME_FROM
+Introduced in 7.1
+.IP CURLOPT_RESUME_FROM_LARGE
+Introduced in 7.11.0
+.IP CURLOPT_RTSP_CLIENT_CSEQ
 Introduced in 7.20.0
-.IP CURLPROTO_SCP
-Introduced in 7.19.4
-.IP CURLPROTO_SFTP
-Introduced in 7.19.4
-.IP CURLPROTO_SMB
-Introduced in 7.40.0
-.IP CURLPROTO_SMBS
-Introduced in 7.40.0
-.IP CURLPROTO_SMTP
+.IP CURLOPT_RTSP_REQUEST
 Introduced in 7.20.0
-.IP CURLPROTO_SMTPS
+.IP CURLOPT_RTSP_SERVER_CSEQ
 Introduced in 7.20.0
-.IP CURLPROTO_TELNET
-Introduced in 7.19.4
-.IP CURLPROTO_TFTP
-Introduced in 7.19.4
-.IP CURLPROXY_HTTP
-Introduced in 7.10
-.IP CURLPROXY_HTTPS
-Introduced in 7.52.0
-.IP CURLPROXY_HTTP_1_0
-Introduced in 7.19.4
-.IP CURLPROXY_SOCKS4
-Introduced in 7.10
-.IP CURLPROXY_SOCKS4A
+.IP CURLOPT_RTSP_SESSION_ID
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_STREAM_URI
+Introduced in 7.20.0
+.IP CURLOPT_RTSP_TRANSPORT
+Introduced in 7.20.0
+.IP CURLOPT_RTSPHEADER
+Introduced in 7.20.0
+.IP CURLOPT_SASL_AUTHZID
+Introduced in 7.66.0
+.IP CURLOPT_SASL_IR
+Introduced in 7.31.0
+.IP CURLOPT_SEEKDATA
 Introduced in 7.18.0
-.IP CURLPROXY_SOCKS5
-Introduced in 7.10
-.IP CURLPROXY_SOCKS5_HOSTNAME
+.IP CURLOPT_SEEKFUNCTION
 Introduced in 7.18.0
-.IP CURLPX_BAD_ADDRESS_TYPE
-Introduced in 7.73.0
-.IP CURLPX_BAD_VERSION
-Introduced in 7.73.0
-.IP CURLPX_CLOSED
-Introduced in 7.73.0
-.IP CURLPX_GSSAPI
-Introduced in 7.73.0
-.IP CURLPX_GSSAPI_PERMSG
-Introduced in 7.73.0
-.IP CURLPX_GSSAPI_PROTECTION
-Introduced in 7.73.0
-.IP CURLPX_IDENTD
-Introduced in 7.73.0
-.IP CURLPX_IDENTD_DIFFER
-Introduced in 7.73.0
-.IP CURLPX_LONG_HOSTNAME
-Introduced in 7.73.0
-.IP CURLPX_LONG_PASSWD
-Introduced in 7.73.0
-.IP CURLPX_LONG_USER
-Introduced in 7.73.0
-.IP CURLPX_NO_AUTH
-Introduced in 7.73.0
-.IP CURLPX_OK
-Introduced in 7.73.0
-.IP CURLPX_RECV_ADDRESS
-Introduced in 7.73.0
-.IP CURLPX_RECV_AUTH
-Introduced in 7.73.0
-.IP CURLPX_RECV_CONNECT
-Introduced in 7.73.0
-.IP CURLPX_RECV_REQACK
-Introduced in 7.73.0
-.IP CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED
-Introduced in 7.73.0
-.IP CURLPX_REPLY_COMMAND_NOT_SUPPORTED
-Introduced in 7.73.0
-.IP CURLPX_REPLY_CONNECTION_REFUSED
-Introduced in 7.73.0
-.IP CURLPX_REPLY_GENERAL_SERVER_FAILURE
-Introduced in 7.73.0
-.IP CURLPX_REPLY_HOST_UNREACHABLE
-Introduced in 7.73.0
-.IP CURLPX_REPLY_NETWORK_UNREACHABLE
-Introduced in 7.73.0
-.IP CURLPX_REPLY_NOT_ALLOWED
-Introduced in 7.73.0
-.IP CURLPX_REPLY_TTL_EXPIRED
-Introduced in 7.73.0
-.IP CURLPX_REPLY_UNASSIGNED
-Introduced in 7.73.0
-.IP CURLPX_REQUEST_FAILED
-Introduced in 7.73.0
-.IP CURLPX_RESOLVE_HOST
-Introduced in 7.73.0
-.IP CURLPX_SEND_AUTH
-Introduced in 7.73.0
-.IP CURLPX_SEND_CONNECT
-Introduced in 7.73.0
-.IP CURLPX_SEND_REQUEST
-Introduced in 7.73.0
-.IP CURLPX_UNKNOWN_FAIL
-Introduced in 7.73.0
-.IP CURLPX_UNKNOWN_MODE
-Introduced in 7.73.0
-.IP CURLPX_USER_REJECTED
-Introduced in 7.73.0
-.IP CURLSHE_BAD_OPTION
-Introduced in 7.10.3
-.IP CURLSHE_INVALID
-Introduced in 7.10.3
-.IP CURLSHE_IN_USE
-Introduced in 7.10.3
-.IP CURLSHE_NOMEM
-Introduced in 7.12.0
-.IP CURLSHE_NOT_BUILT_IN
-Introduced in 7.23.0
-.IP CURLSHE_OK
-Introduced in 7.10.3
-.IP CURLSHOPT_LOCKFUNC
-Introduced in 7.10.3
-.IP CURLSHOPT_NONE
-Introduced in 7.10.3
-.IP CURLSHOPT_SHARE
-Introduced in 7.10.3
-.IP CURLSHOPT_UNLOCKFUNC
-Introduced in 7.10.3
-.IP CURLSHOPT_UNSHARE
-Introduced in 7.10.3
-.IP CURLSHOPT_USERDATA
-Introduced in 7.10.3
-.IP CURLSOCKTYPE_ACCEPT
-Introduced in 7.28.0
-.IP CURLSOCKTYPE_IPCXN
+.IP CURLOPT_SERVER_RESPONSE_TIMEOUT
+Introduced in 7.20.0
+.IP CURLOPT_SERVICE_NAME
+Introduced in 7.43.0
+.IP CURLOPT_SHARE
+Introduced in 7.10
+.IP CURLOPT_SOCKOPTDATA
 Introduced in 7.16.0
-.IP CURLSSH_AUTH_AGENT
-Introduced in 7.28.0
-.IP CURLSSH_AUTH_ANY
-Introduced in 7.16.1
-.IP CURLSSH_AUTH_DEFAULT
-Introduced in 7.16.1
-.IP CURLSSH_AUTH_GSSAPI
-Introduced in 7.58.0
-.IP CURLSSH_AUTH_HOST
-Introduced in 7.16.1
-.IP CURLSSH_AUTH_KEYBOARD
-Introduced in 7.16.1
-.IP CURLSSH_AUTH_NONE
+.IP CURLOPT_SOCKOPTFUNCTION
+Introduced in 7.16.0
+.IP CURLOPT_SOCKS5_AUTH
+Introduced in 7.55.0
+.IP CURLOPT_SOCKS5_GSSAPI_NEC
+Introduced in 7.19.4
+.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
+Introduced in 7.19.4
+Deprecated since 7.49.0
+.IP CURLOPT_SOURCE_HOST
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PATH
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PORT
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_POSTQUOTE
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_PREQUOTE
+Introduced in 7.12.1
+.IP CURLOPT_SOURCE_QUOTE
+Introduced in 7.13.0
+.IP CURLOPT_SOURCE_URL
+Introduced in 7.13.0
+.IP CURLOPT_SOURCE_USERPWD
+Introduced in 7.12.1
+.IP CURLOPT_SSH_AUTH_TYPES
 Introduced in 7.16.1
-.IP CURLSSH_AUTH_PASSWORD
+.IP CURLOPT_SSH_COMPRESSION
+Introduced in 7.56.0
+.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
+Introduced in 7.17.1
+.IP CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256
+Introduced in 7.80.0
+.IP CURLOPT_SSH_HOSTKEYDATA
+Introduced in 7.84.0
+.IP CURLOPT_SSH_HOSTKEYFUNCTION
+Introduced in 7.84.0
+.IP CURLOPT_SSH_KEYDATA
+Introduced in 7.19.6
+.IP CURLOPT_SSH_KEYFUNCTION
+Introduced in 7.19.6
+.IP CURLOPT_SSH_KNOWNHOSTS
+Introduced in 7.19.6
+.IP CURLOPT_SSH_PRIVATE_KEYFILE
 Introduced in 7.16.1
-.IP CURLSSH_AUTH_PUBLICKEY
+.IP CURLOPT_SSH_PUBLIC_KEYFILE
 Introduced in 7.16.1
-.IP CURLSSLBACKEND_AXTLS
-Introduced in 7.38.0
-Deprecated since 7.61.0
-.IP CURLSSLBACKEND_BEARSSL
-Introduced in 7.68.0
-.IP CURLSSLBACKEND_BORINGSSL
-Introduced in 7.49.0
-.IP CURLSSLBACKEND_CYASSL
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_DARWINSSL
-Introduced in 7.34.0
-Deprecated since 7.64.1
-.IP CURLSSLBACKEND_GNUTLS
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_GSKIT
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_LIBRESSL
-Introduced in 7.49.0
-.IP CURLSSLBACKEND_MBEDTLS
+.IP CURLOPT_SSL_CIPHER_LIST
+Introduced in 7.9
+.IP CURLOPT_SSL_CTX_DATA
+Introduced in 7.10.6
+.IP CURLOPT_SSL_CTX_FUNCTION
+Introduced in 7.10.6
+.IP CURLOPT_SSL_EC_CURVES
+Introduced in 7.73.0
+.IP CURLOPT_SSL_ENABLE_ALPN
+Introduced in 7.36.0
+.IP CURLOPT_SSL_ENABLE_NPN
+Introduced in 7.36.0
+Deprecated since 7.86.0
+.IP CURLOPT_SSL_FALSESTART
+Introduced in 7.42.0
+.IP CURLOPT_SSL_OPTIONS
+Introduced in 7.25.0
+.IP CURLOPT_SSL_SESSIONID_CACHE
+Introduced in 7.16.0
+.IP CURLOPT_SSL_VERIFYHOST
+Introduced in 7.8.1
+.IP CURLOPT_SSL_VERIFYPEER
+Introduced in 7.4.2
+.IP CURLOPT_SSL_VERIFYSTATUS
+Introduced in 7.41.0
+.IP CURLOPT_SSLCERT
+Introduced in 7.1
+.IP CURLOPT_SSLCERT_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_SSLCERTPASSWD
+Introduced in 7.1.1
+Deprecated since 7.17.0
+.IP CURLOPT_SSLCERTTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE
+Introduced in 7.9.3
+.IP CURLOPT_SSLENGINE_DEFAULT
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEY
+Introduced in 7.9.3
+.IP CURLOPT_SSLKEY_BLOB
+Introduced in 7.71.0
+.IP CURLOPT_SSLKEYPASSWD
+Introduced in 7.9.3
+Deprecated since 7.17.0
+.IP CURLOPT_SSLKEYTYPE
+Introduced in 7.9.3
+.IP CURLOPT_SSLVERSION
+Introduced in 7.1
+.IP CURLOPT_STDERR
+Introduced in 7.1
+.IP CURLOPT_STREAM_DEPENDS
 Introduced in 7.46.0
-.IP CURLSSLBACKEND_MESALINK
-Introduced in 7.62.0
-.IP CURLSSLBACKEND_NONE
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_NSS
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_OPENSSL
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_POLARSSL
-Introduced in 7.34.0
-Deprecated since 7.69.0
-.IP CURLSSLBACKEND_RUSTLS
-Introduced in 7.76.0
-.IP CURLSSLBACKEND_QSOSSL
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_SCHANNEL
-Introduced in 7.34.0
-.IP CURLSSLBACKEND_SECURETRANSPORT
-Introduced in 7.64.1
-.IP CURLSSLBACKEND_WOLFSSL
+.IP CURLOPT_STREAM_DEPENDS_E
+Introduced in 7.46.0
+.IP CURLOPT_STREAM_WEIGHT
+Introduced in 7.46.0
+.IP CURLOPT_SUPPRESS_CONNECT_HEADERS
+Introduced in 7.54.0
+.IP CURLOPT_TCP_FASTOPEN
 Introduced in 7.49.0
-.IP CURLSSLOPT_ALLOW_BEAST
+.IP CURLOPT_TCP_KEEPALIVE
 Introduced in 7.25.0
-.IP CURLSSLOPT_AUTO_CLIENT_CERT
-Introduced in 7.77.0
-.IP CURLSSLOPT_NATIVE_CA
-Introduced in 7.71.0
-.IP CURLSSLOPT_NO_PARTIALCHAIN
-Introduced in 7.68.0
-.IP CURLSSLOPT_NO_REVOKE
-Introduced in 7.44.0
-.IP CURLSSLOPT_REVOKE_BEST_EFFORT
-Introduced in 7.70.0
-.IP CURLSSLSET_NO_BACKENDS
-Introduced in 7.56.0
-.IP CURLSSLSET_OK
-Introduced in 7.56.0
-.IP CURLSSLSET_TOO_LATE
-Introduced in 7.56.0
-.IP CURLSSLSET_UNKNOWN_BACKEND
-Introduced in 7.56.0
-.IP CURLSTS_DONE
-Introduced in 7.74.0
-.IP CURLSTS_FAIL
-Introduced in 7.74.0
-.IP CURLSTS_OK
-Introduced in 7.74.0
-.IP CURLUE_BAD_FILE_URL
-Introduced in 7.81.0
-.IP CURLUE_BAD_FRAGMENT
-Introduced in 7.81.0
-.IP CURLUE_BAD_HANDLE
-Introduced in 7.62.0
-.IP CURLUE_BAD_HOSTNAME
-Introduced in 7.81.0
-.IP CURLUE_BAD_IPV6
-Introduced in 7.81.0
-.IP CURLUE_BAD_LOGIN
-Introduced in 7.81.0
-.IP CURLUE_BAD_PARTPOINTER
-Introduced in 7.62.0
-.IP CURLUE_BAD_PASSWORD
-Introduced in 7.81.0
-.IP CURLUE_BAD_PATH
-Introduced in 7.81.0
-.IP CURLUE_BAD_PORT_NUMBER
-Introduced in 7.62.0
-.IP CURLUE_BAD_QUERY
-Introduced in 7.81.0
-.IP CURLUE_BAD_SCHEME
-Introduced in 7.81.0
-.IP CURLUE_BAD_SLASHES
-Introduced in 7.81.0
-.IP CURLUE_BAD_USER
-Introduced in 7.81.0
-.IP CURLUE_MALFORMED_INPUT
-Introduced in 7.62.0
-.IP CURLUE_NO_FRAGMENT
-Introduced in 7.62.0
-.IP CURLUE_NO_HOST
-Introduced in 7.62.0
-.IP CURLUE_NO_OPTIONS
-Introduced in 7.62.0
-.IP CURLUE_NO_PASSWORD
-Introduced in 7.62.0
-.IP CURLUE_NO_PORT
-Introduced in 7.62.0
-.IP CURLUE_NO_QUERY
-Introduced in 7.62.0
-.IP CURLUE_NO_SCHEME
-Introduced in 7.62.0
-.IP CURLUE_NO_USER
-Introduced in 7.62.0
-.IP CURLUE_NO_ZONEID
-Introduced in 7.81.0
-.IP CURLUE_OK
-Introduced in 7.62.0
-.IP CURLUE_OUT_OF_MEMORY
-Introduced in 7.62.0
-.IP CURLUE_UNKNOWN_PART
-Introduced in 7.62.0
-.IP CURLUE_UNSUPPORTED_SCHEME
-Introduced in 7.62.0
-.IP CURLUE_URLDECODE
-Introduced in 7.62.0
-.IP CURLUE_USER_NOT_ALLOWED
-Introduced in 7.62.0
-.IP CURLUPART_FRAGMENT
-Introduced in 7.62.0
-.IP CURLUPART_HOST
-Introduced in 7.62.0
-.IP CURLUPART_OPTIONS
-Introduced in 7.62.0
-.IP CURLUPART_PASSWORD
-Introduced in 7.62.0
-.IP CURLUPART_PATH
-Introduced in 7.62.0
-.IP CURLUPART_PORT
-Introduced in 7.62.0
-.IP CURLUPART_QUERY
-Introduced in 7.62.0
-.IP CURLUPART_SCHEME
-Introduced in 7.62.0
-.IP CURLUPART_URL
+.IP CURLOPT_TCP_KEEPIDLE
+Introduced in 7.25.0
+.IP CURLOPT_TCP_KEEPINTVL
+Introduced in 7.25.0
+.IP CURLOPT_TCP_NODELAY
+Introduced in 7.11.2
+.IP CURLOPT_TELNETOPTIONS
+Introduced in 7.7
+.IP CURLOPT_TFTP_BLKSIZE
+Introduced in 7.19.4
+.IP CURLOPT_TFTP_NO_OPTIONS
+Introduced in 7.48.0
+.IP CURLOPT_TIMECONDITION
+Introduced in 7.1
+.IP CURLOPT_TIMEOUT
+Introduced in 7.1
+.IP CURLOPT_TIMEOUT_MS
+Introduced in 7.16.2
+.IP CURLOPT_TIMEVALUE
+Introduced in 7.1
+.IP CURLOPT_TIMEVALUE_LARGE
+Introduced in 7.59.0
+.IP CURLOPT_TLS13_CIPHERS
+Introduced in 7.61.0
+.IP CURLOPT_TLSAUTH_PASSWORD
+Introduced in 7.21.4
+.IP CURLOPT_TLSAUTH_TYPE
+Introduced in 7.21.4
+.IP CURLOPT_TLSAUTH_USERNAME
+Introduced in 7.21.4
+.IP CURLOPT_TRAILERDATA
+Introduced in 7.64.0
+.IP CURLOPT_TRAILERFUNCTION
+Introduced in 7.64.0
+.IP CURLOPT_TRANSFER_ENCODING
+Introduced in 7.21.6
+.IP CURLOPT_TRANSFERTEXT
+Introduced in 7.1.1
+.IP CURLOPT_UNIX_SOCKET_PATH
+Introduced in 7.40.0
+.IP CURLOPT_UNRESTRICTED_AUTH
+Introduced in 7.10.4
+.IP CURLOPT_UPKEEP_INTERVAL_MS
 Introduced in 7.62.0
-.IP CURLUPART_USER
+.IP CURLOPT_UPLOAD
+Introduced in 7.1
+.IP CURLOPT_UPLOAD_BUFFERSIZE
 Introduced in 7.62.0
-.IP CURLUPART_ZONEID
-Introduced in 7.65.0
-.IP CURLUSESSL_ALL
-Introduced in 7.17.0
-.IP CURLUSESSL_CONTROL
-Introduced in 7.17.0
-.IP CURLUSESSL_NONE
-Introduced in 7.17.0
-.IP CURLUSESSL_TRY
+.IP CURLOPT_URL
+Introduced in 7.1
+.IP CURLOPT_USE_SSL
 Introduced in 7.17.0
-.IP CURLU_ALLOW_SPACE
-Introduced in 7.78.0
-.IP CURLU_APPENDQUERY
-Introduced in 7.62.0
-.IP CURLU_DEFAULT_PORT
-Introduced in 7.62.0
-.IP CURLU_DEFAULT_SCHEME
-Introduced in 7.62.0
-.IP CURLU_DISALLOW_USER
-Introduced in 7.62.0
-.IP CURLU_GUESS_SCHEME
-Introduced in 7.62.0
-.IP CURLU_NON_SUPPORT_SCHEME
-Introduced in 7.62.0
-.IP CURLU_NO_AUTHORITY
-Introduced in 7.67.0
-.IP CURLU_NO_DEFAULT_PORT
-Introduced in 7.62.0
-.IP CURLU_PATH_AS_IS
-Introduced in 7.62.0
-.IP CURLU_URLDECODE
-Introduced in 7.62.0
-.IP CURLU_URLENCODE
-Introduced in 7.62.0
-.IP CURLVERSION_EIGHTH
-Introduced in 7.72.0
-.IP CURLVERSION_FIFTH
-Introduced in 7.57.0
-.IP CURLVERSION_FIRST
-Introduced in 7.10
-.IP CURLVERSION_FOURTH
-Introduced in 7.16.1
-.IP CURLVERSION_NINTH
-Introduced in 7.75.0
-.IP CURLVERSION_NOW
-Introduced in 7.10
-.IP CURLVERSION_SECOND
-Introduced in 7.11.1
-.IP CURLVERSION_SEVENTH
-Introduced in 7.70.0
-.IP CURLVERSION_SIXTH
-Introduced in 7.66.0
-.IP CURLVERSION_TENTH
-Introduced in 7.77.0
-.IP CURLVERSION_THIRD
-Introduced in 7.12.0
-.IP CURL_CHUNK_BGN_FUNC_FAIL
-Introduced in 7.21.0
-.IP CURL_CHUNK_BGN_FUNC_OK
+.IP CURLOPT_USERAGENT
+Introduced in 7.1
+.IP CURLOPT_USERNAME
+Introduced in 7.19.1
+.IP CURLOPT_USERPWD
+Introduced in 7.1
+.IP CURLOPT_VERBOSE
+Introduced in 7.1
+.IP CURLOPT_WILDCARDMATCH
 Introduced in 7.21.0
-.IP CURL_CHUNK_BGN_FUNC_SKIP
+.IP CURLOPT_WRITEDATA
+Introduced in 7.9.7
+.IP CURLOPT_WRITEFUNCTION
+Introduced in 7.1
+.IP CURLOPT_WRITEHEADER
+Introduced in 7.1
+.IP CURLOPT_WRITEINFO
+Introduced in 7.1
+.IP CURLOPT_WS_OPTIONS
+Introduced in 7.86.0
+.IP CURLOPT_XFERINFODATA
+Introduced in 7.32.0
+.IP CURLOPT_XFERINFOFUNCTION
+Introduced in 7.32.0
+.IP CURLOPT_XOAUTH2_BEARER
+Introduced in 7.33.0
+.IP CURLOPTTYPE_BLOB
+Introduced in 7.71.0
+.IP CURLOPTTYPE_CBPOINT
+Introduced in 7.73.0
+.IP CURLOPTTYPE_FUNCTIONPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_LONG
+Introduced in 7.1
+.IP CURLOPTTYPE_OBJECTPOINT
+Introduced in 7.1
+.IP CURLOPTTYPE_OFF_T
+Introduced in 7.11.0
+.IP CURLOPTTYPE_SLISTPOINT
+Introduced in 7.65.2
+.IP CURLOPTTYPE_STRINGPOINT
+Introduced in 7.46.0
+.IP CURLOPTTYPE_VALUES
+Introduced in 7.73.0
+.IP CURLOT_BLOB
+Introduced in 7.73.0
+.IP CURLOT_CBPTR
+Introduced in 7.73.0
+.IP CURLOT_FLAG_ALIAS
+Introduced in 7.73.0
+.IP CURLOT_FUNCTION
+Introduced in 7.73.0
+.IP CURLOT_LONG
+Introduced in 7.73.0
+.IP CURLOT_OBJECT
+Introduced in 7.73.0
+.IP CURLOT_OFF_T
+Introduced in 7.73.0
+.IP CURLOT_SLIST
+Introduced in 7.73.0
+.IP CURLOT_STRING
+Introduced in 7.73.0
+.IP CURLOT_VALUES
+Introduced in 7.73.0
+.IP CURLPAUSE_ALL
+Introduced in 7.18.0
+.IP CURLPAUSE_CONT
+Introduced in 7.18.0
+.IP CURLPAUSE_RECV
+Introduced in 7.18.0
+.IP CURLPAUSE_RECV_CONT
+Introduced in 7.18.0
+.IP CURLPAUSE_SEND
+Introduced in 7.18.0
+.IP CURLPAUSE_SEND_CONT
+Introduced in 7.18.0
+.IP CURLPIPE_HTTP1
+Introduced in 7.43.0
+.IP CURLPIPE_MULTIPLEX
+Introduced in 7.43.0
+.IP CURLPIPE_NOTHING
+Introduced in 7.43.0
+.IP CURLPROTO_ALL
+Introduced in 7.19.4
+.IP CURLPROTO_DICT
+Introduced in 7.19.4
+.IP CURLPROTO_FILE
+Introduced in 7.19.4
+.IP CURLPROTO_FTP
+Introduced in 7.19.4
+.IP CURLPROTO_FTPS
+Introduced in 7.19.4
+.IP CURLPROTO_GOPHER
+Introduced in 7.21.2
+.IP CURLPROTO_GOPHERS
+Introduced in 7.75.0
+.IP CURLPROTO_HTTP
+Introduced in 7.19.4
+.IP CURLPROTO_HTTPS
+Introduced in 7.19.4
+.IP CURLPROTO_IMAP
+Introduced in 7.20.0
+.IP CURLPROTO_IMAPS
+Introduced in 7.20.0
+.IP CURLPROTO_LDAP
+Introduced in 7.19.4
+.IP CURLPROTO_LDAPS
+Introduced in 7.19.4
+.IP CURLPROTO_MQTT
+Introduced in 7.71.0
+.IP CURLPROTO_POP3
+Introduced in 7.20.0
+.IP CURLPROTO_POP3S
+Introduced in 7.20.0
+.IP CURLPROTO_RTMP
 Introduced in 7.21.0
-.IP CURL_CHUNK_END_FUNC_FAIL
+.IP CURLPROTO_RTMPE
 Introduced in 7.21.0
-.IP CURL_CHUNK_END_FUNC_OK
+.IP CURLPROTO_RTMPS
 Introduced in 7.21.0
-.IP CURL_CSELECT_ERR
-Introduced in 7.16.3
-.IP CURL_CSELECT_IN
-Introduced in 7.16.3
-.IP CURL_CSELECT_OUT
-Introduced in 7.16.3
-.IP CURL_DID_MEMORY_FUNC_TYPEDEFS
-Introduced in 7.49.0
-.IP CURL_EASY_NONE
-Introduced in 7.14.0
-.IP CURL_EASY_TIMEOUT
-Introduced in 7.14.0
-.IP CURL_ERROR_SIZE
-Introduced in 7.1
-.IP CURL_FNMATCHFUNC_FAIL
+.IP CURLPROTO_RTMPT
 Introduced in 7.21.0
-.IP CURL_FNMATCHFUNC_MATCH
+.IP CURLPROTO_RTMPTE
 Introduced in 7.21.0
-.IP CURL_FNMATCHFUNC_NOMATCH
+.IP CURLPROTO_RTMPTS
 Introduced in 7.21.0
-.IP CURL_FORMADD_DISABLED
-Introduced in 7.12.1
-Deprecated since 7.56.0
-.IP CURL_FORMADD_ILLEGAL_ARRAY
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_INCOMPLETE
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_MEMORY
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_NULL
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_OK
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_OPTION_TWICE
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_FORMADD_UNKNOWN_OPTION
-Introduced in 7.9.8
-Deprecated since 7.56.0
-.IP CURL_GLOBAL_ACK_EINTR
-Introduced in 7.30.0
-.IP CURL_GLOBAL_ALL
-Introduced in 7.8
-.IP CURL_GLOBAL_DEFAULT
-Introduced in 7.8
-.IP CURL_GLOBAL_NOTHING
-Introduced in 7.8
-.IP CURL_GLOBAL_SSL
-Introduced in 7.8
-.IP CURL_GLOBAL_WIN32
-Introduced in 7.8.1
-.IP CURL_HET_DEFAULT
-Introduced in 7.59.0
-.IP CURL_HTTPPOST_BUFFER
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_CALLBACK
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_FILENAME
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_LARGE
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_PTRBUFFER
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_PTRCONTENTS
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_PTRNAME
-Introduced in 7.46.0
-.IP CURL_HTTPPOST_READFILE
-Introduced in 7.46.0
-.IP CURL_HTTP_VERSION_1_0
-Introduced in 7.9.1
-.IP CURL_HTTP_VERSION_1_1
-Introduced in 7.9.1
-.IP CURL_HTTP_VERSION_2
-Introduced in 7.43.0
-.IP CURL_HTTP_VERSION_2TLS
-Introduced in 7.47.0
-.IP CURL_HTTP_VERSION_2_0
-Introduced in 7.33.0
-.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
-Introduced in 7.49.0
-.IP CURL_HTTP_VERSION_3
-Introduced in 7.66.0
-.IP CURL_HTTP_VERSION_NONE
-Introduced in 7.9.1
-.IP CURL_IPRESOLVE_V4
-Introduced in 7.10.8
-.IP CURL_IPRESOLVE_V6
-Introduced in 7.10.8
-.IP CURL_IPRESOLVE_WHATEVER
-Introduced in 7.10.8
-.IP CURL_LOCK_ACCESS_NONE
+.IP CURLPROTO_RTSP
+Introduced in 7.20.0
+.IP CURLPROTO_SCP
+Introduced in 7.19.4
+.IP CURLPROTO_SFTP
+Introduced in 7.19.4
+.IP CURLPROTO_SMB
+Introduced in 7.40.0
+.IP CURLPROTO_SMBS
+Introduced in 7.40.0
+.IP CURLPROTO_SMTP
+Introduced in 7.20.0
+.IP CURLPROTO_SMTPS
+Introduced in 7.20.0
+.IP CURLPROTO_TELNET
+Introduced in 7.19.4
+.IP CURLPROTO_TFTP
+Introduced in 7.19.4
+.IP CURLPROXY_HTTP
+Introduced in 7.10
+.IP CURLPROXY_HTTP_1_0
+Introduced in 7.19.4
+.IP CURLPROXY_HTTPS
+Introduced in 7.52.0
+.IP CURLPROXY_SOCKS4
+Introduced in 7.10
+.IP CURLPROXY_SOCKS4A
+Introduced in 7.18.0
+.IP CURLPROXY_SOCKS5
+Introduced in 7.10
+.IP CURLPROXY_SOCKS5_HOSTNAME
+Introduced in 7.18.0
+.IP CURLPX_BAD_ADDRESS_TYPE
+Introduced in 7.73.0
+.IP CURLPX_BAD_VERSION
+Introduced in 7.73.0
+.IP CURLPX_CLOSED
+Introduced in 7.73.0
+.IP CURLPX_GSSAPI
+Introduced in 7.73.0
+.IP CURLPX_GSSAPI_PERMSG
+Introduced in 7.73.0
+.IP CURLPX_GSSAPI_PROTECTION
+Introduced in 7.73.0
+.IP CURLPX_IDENTD
+Introduced in 7.73.0
+.IP CURLPX_IDENTD_DIFFER
+Introduced in 7.73.0
+.IP CURLPX_LONG_HOSTNAME
+Introduced in 7.73.0
+.IP CURLPX_LONG_PASSWD
+Introduced in 7.73.0
+.IP CURLPX_LONG_USER
+Introduced in 7.73.0
+.IP CURLPX_NO_AUTH
+Introduced in 7.73.0
+.IP CURLPX_OK
+Introduced in 7.73.0
+.IP CURLPX_RECV_ADDRESS
+Introduced in 7.73.0
+.IP CURLPX_RECV_AUTH
+Introduced in 7.73.0
+.IP CURLPX_RECV_CONNECT
+Introduced in 7.73.0
+.IP CURLPX_RECV_REQACK
+Introduced in 7.73.0
+.IP CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED
+Introduced in 7.73.0
+.IP CURLPX_REPLY_COMMAND_NOT_SUPPORTED
+Introduced in 7.73.0
+.IP CURLPX_REPLY_CONNECTION_REFUSED
+Introduced in 7.73.0
+.IP CURLPX_REPLY_GENERAL_SERVER_FAILURE
+Introduced in 7.73.0
+.IP CURLPX_REPLY_HOST_UNREACHABLE
+Introduced in 7.73.0
+.IP CURLPX_REPLY_NETWORK_UNREACHABLE
+Introduced in 7.73.0
+.IP CURLPX_REPLY_NOT_ALLOWED
+Introduced in 7.73.0
+.IP CURLPX_REPLY_TTL_EXPIRED
+Introduced in 7.73.0
+.IP CURLPX_REPLY_UNASSIGNED
+Introduced in 7.73.0
+.IP CURLPX_REQUEST_FAILED
+Introduced in 7.73.0
+.IP CURLPX_RESOLVE_HOST
+Introduced in 7.73.0
+.IP CURLPX_SEND_AUTH
+Introduced in 7.73.0
+.IP CURLPX_SEND_CONNECT
+Introduced in 7.73.0
+.IP CURLPX_SEND_REQUEST
+Introduced in 7.73.0
+.IP CURLPX_UNKNOWN_FAIL
+Introduced in 7.73.0
+.IP CURLPX_UNKNOWN_MODE
+Introduced in 7.73.0
+.IP CURLPX_USER_REJECTED
+Introduced in 7.73.0
+.IP CURLSHE_BAD_OPTION
 Introduced in 7.10.3
-.IP CURL_LOCK_ACCESS_SHARED
+.IP CURLSHE_IN_USE
 Introduced in 7.10.3
-.IP CURL_LOCK_ACCESS_SINGLE
+.IP CURLSHE_INVALID
 Introduced in 7.10.3
-.IP CURL_LOCK_DATA_CONNECT
+.IP CURLSHE_NOMEM
+Introduced in 7.12.0
+.IP CURLSHE_NOT_BUILT_IN
+Introduced in 7.23.0
+.IP CURLSHE_OK
 Introduced in 7.10.3
-.IP CURL_LOCK_DATA_COOKIE
+.IP CURLSHOPT_LOCKFUNC
 Introduced in 7.10.3
-.IP CURL_LOCK_DATA_DNS
+.IP CURLSHOPT_NONE
 Introduced in 7.10.3
-.IP CURL_LOCK_DATA_NONE
+.IP CURLSHOPT_SHARE
 Introduced in 7.10.3
-.IP CURL_LOCK_DATA_PSL
-Introduced in 7.61.0
-.IP CURL_LOCK_DATA_SHARE
-Introduced in 7.10.4
-.IP CURL_LOCK_DATA_SSL_SESSION
+.IP CURLSHOPT_UNLOCKFUNC
 Introduced in 7.10.3
-.IP CURL_LOCK_TYPE_CONNECT
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_COOKIE
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_DNS
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_NONE
-Introduced in 7.10
-.IP CURL_LOCK_TYPE_SSL_SESSION
-Introduced in 7.10
-.IP CURL_MAX_HTTP_HEADER
-Introduced in 7.19.7
-.IP CURL_MAX_READ_SIZE
-Introduced in 7.53.0
-.IP CURL_MAX_WRITE_SIZE
-Introduced in 7.9.7
-.IP CURL_NETRC_IGNORED
-Introduced in 7.9.8
-.IP CURL_NETRC_OPTIONAL
-Introduced in 7.9.8
-.IP CURL_NETRC_REQUIRED
-Introduced in 7.9.8
-.IP CURL_POLL_IN
-Introduced in 7.14.0
-.IP CURL_POLL_INOUT
-Introduced in 7.14.0
-.IP CURL_POLL_NONE
-Introduced in 7.14.0
-.IP CURL_POLL_OUT
-Introduced in 7.14.0
-.IP CURL_POLL_REMOVE
-Introduced in 7.14.0
-.IP CURL_PREREQFUNC_ABORT
-Introduced in 7.79.0
-.IP CURL_PREREQFUNC_OK
-Introduced in 7.79.0
-.IP CURL_PROGRESSFUNC_CONTINUE
+.IP CURLSHOPT_UNSHARE
+Introduced in 7.10.3
+.IP CURLSHOPT_USERDATA
+Introduced in 7.10.3
+.IP CURLSOCKTYPE_ACCEPT
+Introduced in 7.28.0
+.IP CURLSOCKTYPE_IPCXN
+Introduced in 7.16.0
+.IP CURLSSH_AUTH_AGENT
+Introduced in 7.28.0
+.IP CURLSSH_AUTH_ANY
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_DEFAULT
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_GSSAPI
+Introduced in 7.58.0
+.IP CURLSSH_AUTH_HOST
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_KEYBOARD
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_NONE
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_PASSWORD
+Introduced in 7.16.1
+.IP CURLSSH_AUTH_PUBLICKEY
+Introduced in 7.16.1
+.IP CURLSSLBACKEND_AXTLS
+Introduced in 7.38.0
+Deprecated since 7.61.0
+.IP CURLSSLBACKEND_BEARSSL
 Introduced in 7.68.0
-.IP CURL_PROGRESS_BAR
-Introduced in 7.1.1
-.IP CURL_PROGRESS_STATS
-Introduced in 7.1.1
-.IP CURL_PUSH_DENY
-Introduced in 7.44.0
-.IP CURL_PUSH_ERROROUT
-Introduced in 7.72.0
-.IP CURL_PUSH_OK
-Introduced in 7.44.0
-.IP CURL_READFUNC_ABORT
-Introduced in 7.12.1
-.IP CURL_READFUNC_PAUSE
-Introduced in 7.18.0
-.IP CURL_REDIR_GET_ALL
-Introduced in 7.19.1
-.IP CURL_REDIR_POST_301
-Introduced in 7.19.1
-.IP CURL_REDIR_POST_302
-Introduced in 7.19.1
-.IP CURL_REDIR_POST_303
-Introduced in 7.25.1
-.IP CURL_REDIR_POST_ALL
-Introduced in 7.19.1
-.IP CURL_RTSPREQ_ANNOUNCE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_DESCRIBE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_GET_PARAMETER
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_NONE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_OPTIONS
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_PAUSE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_PLAY
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_RECEIVE
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_RECORD
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_SETUP
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_SET_PARAMETER
-Introduced in 7.20.0
-.IP CURL_RTSPREQ_TEARDOWN
-Introduced in 7.20.0
-.IP CURL_SEEKFUNC_CANTSEEK
-Introduced in 7.19.5
-.IP CURL_SEEKFUNC_FAIL
-Introduced in 7.19.5
-.IP CURL_SEEKFUNC_OK
-Introduced in 7.19.5
-.IP CURL_SOCKET_BAD
-Introduced in 7.14.0
-.IP CURL_SOCKET_TIMEOUT
-Introduced in 7.14.0
-.IP CURL_SOCKOPT_ALREADY_CONNECTED
-Introduced in 7.21.5
-.IP CURL_SOCKOPT_ERROR
-Introduced in 7.21.5
-.IP CURL_SOCKOPT_OK
-Introduced in 7.21.5
-.IP CURL_SSLVERSION_DEFAULT
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_MAX_DEFAULT
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_NONE
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_0
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_1
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_2
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_MAX_TLSv1_3
-Introduced in 7.54.0
-.IP CURL_SSLVERSION_SSLv2
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_SSLv3
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_TLSv1
-Introduced in 7.9.2
-.IP CURL_SSLVERSION_TLSv1_0
-Introduced in 7.34.0
-.IP CURL_SSLVERSION_TLSv1_1
+.IP CURLSSLBACKEND_BORINGSSL
+Introduced in 7.49.0
+.IP CURLSSLBACKEND_CYASSL
 Introduced in 7.34.0
-.IP CURL_SSLVERSION_TLSv1_2
+.IP CURLSSLBACKEND_DARWINSSL
 Introduced in 7.34.0
-.IP CURL_SSLVERSION_TLSv1_3
-Introduced in 7.52.0
-.IP CURL_STRICTER
-Introduced in 7.50.2
-.IP CURL_TIMECOND_IFMODSINCE
-Introduced in 7.9.7
-.IP CURL_TIMECOND_IFUNMODSINCE
-Introduced in 7.9.7
-.IP CURL_TIMECOND_LASTMOD
-Introduced in 7.9.7
-.IP CURL_TIMECOND_NONE
-Introduced in 7.9.7
-.IP CURL_TLSAUTH_NONE
-Introduced in 7.21.4
-.IP CURL_TLSAUTH_SRP
-Introduced in 7.21.4
-.IP CURL_TRAILERFUNC_ABORT
-Introduced in 7.64.0
-.IP CURL_TRAILERFUNC_OK
-Introduced in 7.64.0
-.IP CURL_UPKEEP_INTERVAL_DEFAULT
+Deprecated since 7.64.1
+.IP CURLSSLBACKEND_GNUTLS
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_GSKIT
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_LIBRESSL
+Introduced in 7.49.0
+.IP CURLSSLBACKEND_MBEDTLS
+Introduced in 7.46.0
+.IP CURLSSLBACKEND_MESALINK
 Introduced in 7.62.0
-.IP CURL_VERSION_ALTSVC
-Introduced in 7.64.1
-.IP CURL_VERSION_ASYNCHDNS
-Introduced in 7.10.7
-.IP CURL_VERSION_BROTLI
-Introduced in 7.57.0
-.IP CURL_VERSION_CONV
-Introduced in 7.15.4
-.IP CURL_VERSION_CURLDEBUG
-Introduced in 7.19.6
-.IP CURL_VERSION_DEBUG
-Introduced in 7.10.6
-.IP CURL_VERSION_GSASL
+.IP CURLSSLBACKEND_NONE
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_NSS
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_OPENSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_POLARSSL
+Introduced in 7.34.0
+Deprecated since 7.69.0
+.IP CURLSSLBACKEND_QSOSSL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_RUSTLS
 Introduced in 7.76.0
-.IP CURL_VERSION_GSSAPI
-Introduced in 7.38.0
-.IP CURL_VERSION_GSSNEGOTIATE
-Introduced in 7.10.6
-Deprecated since 7.38.0
-.IP CURL_VERSION_HSTS
+.IP CURLSSLBACKEND_SCHANNEL
+Introduced in 7.34.0
+.IP CURLSSLBACKEND_SECURETRANSPORT
+Introduced in 7.64.1
+.IP CURLSSLBACKEND_WOLFSSL
+Introduced in 7.49.0
+.IP CURLSSLOPT_ALLOW_BEAST
+Introduced in 7.25.0
+.IP CURLSSLOPT_AUTO_CLIENT_CERT
+Introduced in 7.77.0
+.IP CURLSSLOPT_NATIVE_CA
+Introduced in 7.71.0
+.IP CURLSSLOPT_NO_PARTIALCHAIN
+Introduced in 7.68.0
+.IP CURLSSLOPT_NO_REVOKE
+Introduced in 7.44.0
+.IP CURLSSLOPT_REVOKE_BEST_EFFORT
+Introduced in 7.70.0
+.IP CURLSSLSET_NO_BACKENDS
+Introduced in 7.56.0
+.IP CURLSSLSET_OK
+Introduced in 7.56.0
+.IP CURLSSLSET_TOO_LATE
+Introduced in 7.56.0
+.IP CURLSSLSET_UNKNOWN_BACKEND
+Introduced in 7.56.0
+.IP CURLSTS_DONE
 Introduced in 7.74.0
-.IP CURL_VERSION_HTTP2
-Introduced in 7.33.0
-.IP CURL_VERSION_HTTP3
-Introduced in 7.66.0
-.IP CURL_VERSION_HTTPS_PROXY
-Introduced in 7.52.0
-.IP CURL_VERSION_IDN
-Introduced in 7.12.0
-.IP CURL_VERSION_IPV6
+.IP CURLSTS_FAIL
+Introduced in 7.74.0
+.IP CURLSTS_OK
+Introduced in 7.74.0
+.IP CURLU_ALLOW_SPACE
+Introduced in 7.78.0
+.IP CURLU_APPENDQUERY
+Introduced in 7.62.0
+.IP CURLU_DEFAULT_PORT
+Introduced in 7.62.0
+.IP CURLU_DEFAULT_SCHEME
+Introduced in 7.62.0
+.IP CURLU_DISALLOW_USER
+Introduced in 7.62.0
+.IP CURLU_GUESS_SCHEME
+Introduced in 7.62.0
+.IP CURLU_NO_AUTHORITY
+Introduced in 7.67.0
+.IP CURLU_NO_DEFAULT_PORT
+Introduced in 7.62.0
+.IP CURLU_NON_SUPPORT_SCHEME
+Introduced in 7.62.0
+.IP CURLU_PATH_AS_IS
+Introduced in 7.62.0
+.IP CURLU_URLDECODE
+Introduced in 7.62.0
+.IP CURLU_URLENCODE
+Introduced in 7.62.0
+.IP CURLUE_BAD_FILE_URL
+Introduced in 7.81.0
+.IP CURLUE_BAD_FRAGMENT
+Introduced in 7.81.0
+.IP CURLUE_BAD_HANDLE
+Introduced in 7.62.0
+.IP CURLUE_BAD_HOSTNAME
+Introduced in 7.81.0
+.IP CURLUE_BAD_IPV6
+Introduced in 7.81.0
+.IP CURLUE_BAD_LOGIN
+Introduced in 7.81.0
+.IP CURLUE_BAD_PARTPOINTER
+Introduced in 7.62.0
+.IP CURLUE_BAD_PASSWORD
+Introduced in 7.81.0
+.IP CURLUE_BAD_PATH
+Introduced in 7.81.0
+.IP CURLUE_BAD_PORT_NUMBER
+Introduced in 7.62.0
+.IP CURLUE_BAD_QUERY
+Introduced in 7.81.0
+.IP CURLUE_BAD_SCHEME
+Introduced in 7.81.0
+.IP CURLUE_BAD_SLASHES
+Introduced in 7.81.0
+.IP CURLUE_BAD_USER
+Introduced in 7.81.0
+.IP CURLUE_MALFORMED_INPUT
+Introduced in 7.62.0
+.IP CURLUE_NO_FRAGMENT
+Introduced in 7.62.0
+.IP CURLUE_NO_HOST
+Introduced in 7.62.0
+.IP CURLUE_NO_OPTIONS
+Introduced in 7.62.0
+.IP CURLUE_NO_PASSWORD
+Introduced in 7.62.0
+.IP CURLUE_NO_PORT
+Introduced in 7.62.0
+.IP CURLUE_NO_QUERY
+Introduced in 7.62.0
+.IP CURLUE_NO_SCHEME
+Introduced in 7.62.0
+.IP CURLUE_NO_USER
+Introduced in 7.62.0
+.IP CURLUE_NO_ZONEID
+Introduced in 7.81.0
+.IP CURLUE_OK
+Introduced in 7.62.0
+.IP CURLUE_OUT_OF_MEMORY
+Introduced in 7.62.0
+.IP CURLUE_UNKNOWN_PART
+Introduced in 7.62.0
+.IP CURLUE_UNSUPPORTED_SCHEME
+Introduced in 7.62.0
+.IP CURLUE_URLDECODE
+Introduced in 7.62.0
+.IP CURLUE_USER_NOT_ALLOWED
+Introduced in 7.62.0
+.IP CURLUPART_FRAGMENT
+Introduced in 7.62.0
+.IP CURLUPART_HOST
+Introduced in 7.62.0
+.IP CURLUPART_OPTIONS
+Introduced in 7.62.0
+.IP CURLUPART_PASSWORD
+Introduced in 7.62.0
+.IP CURLUPART_PATH
+Introduced in 7.62.0
+.IP CURLUPART_PORT
+Introduced in 7.62.0
+.IP CURLUPART_QUERY
+Introduced in 7.62.0
+.IP CURLUPART_SCHEME
+Introduced in 7.62.0
+.IP CURLUPART_URL
+Introduced in 7.62.0
+.IP CURLUPART_USER
+Introduced in 7.62.0
+.IP CURLUPART_ZONEID
+Introduced in 7.65.0
+.IP CURLUSESSL_ALL
+Introduced in 7.17.0
+.IP CURLUSESSL_CONTROL
+Introduced in 7.17.0
+.IP CURLUSESSL_NONE
+Introduced in 7.17.0
+.IP CURLUSESSL_TRY
+Introduced in 7.17.0
+.IP CURLVERSION_EIGHTH
+Introduced in 7.72.0
+.IP CURLVERSION_FIFTH
+Introduced in 7.57.0
+.IP CURLVERSION_FIRST
 Introduced in 7.10
-.IP CURL_VERSION_KERBEROS4
+.IP CURLVERSION_FOURTH
+Introduced in 7.16.1
+.IP CURLVERSION_NINTH
+Introduced in 7.75.0
+.IP CURLVERSION_NOW
 Introduced in 7.10
-Deprecated since 7.33.0
-.IP CURL_VERSION_KERBEROS5
-Introduced in 7.40.0
-.IP CURL_VERSION_LARGEFILE
+.IP CURLVERSION_SECOND
 Introduced in 7.11.1
-.IP CURL_VERSION_LIBZ
-Introduced in 7.10
-.IP CURL_VERSION_MULTI_SSL
-Introduced in 7.56.0
-.IP CURL_VERSION_NTLM
-Introduced in 7.10.6
-.IP CURL_VERSION_NTLM_WB
-Introduced in 7.22.0
-.IP CURL_VERSION_PSL
-Introduced in 7.47.0
-.IP CURL_VERSION_SPNEGO
-Introduced in 7.10.8
-.IP CURL_VERSION_SSL
-Introduced in 7.10
-.IP CURL_VERSION_SSPI
-Introduced in 7.13.2
-.IP CURL_VERSION_TLSAUTH_SRP
-Introduced in 7.21.4
-.IP CURL_VERSION_UNICODE
-Introduced in 7.72.0
-.IP CURL_VERSION_UNIX_SOCKETS
-Introduced in 7.40.0
-.IP CURL_VERSION_ZSTD
-Introduced in 7.72.0
-.IP CURL_WAIT_POLLIN
-Introduced in 7.28.0
-.IP CURL_WAIT_POLLOUT
-Introduced in 7.28.0
-.IP CURL_WAIT_POLLPRI
-Introduced in 7.28.0
-.IP CURL_WIN32
-Introduced in 7.69.0
-.IP CURL_WRITEFUNC_PAUSE
-Introduced in 7.18.0
-.IP CURL_ZERO_TERMINATED
-Introduced in 7.56.0
+.IP CURLVERSION_SEVENTH
+Introduced in 7.70.0
+.IP CURLVERSION_SIXTH
+Introduced in 7.66.0
+.IP CURLVERSION_TENTH
+Introduced in 7.77.0
+.IP CURLVERSION_THIRD
+Introduced in 7.12.0
+.IP CURLWARNING
+Introduced in 7.66.0
+.IP CURLWS_BINARY
+Introduced in 7.86.0
+.IP CURLWS_CLOSE
+Introduced in 7.86.0
+.IP CURLWS_CONT
+Introduced in 7.86.0
+.IP CURLWS_OFFSET
+Introduced in 7.86.0
+.IP CURLWS_PING
+Introduced in 7.86.0
+.IP CURLWS_PONG
+Introduced in 7.86.0
+.IP CURLWS_RAW_MODE
+Introduced in 7.86.0
+.IP CURLWS_TEXT
+Introduced in 7.86.0
index 6a06dd0c2ab64eb7912e82f1d23b500c18fdb5b2..559d3288f8c27d631f11d97c11580d9e2474ebe1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2015 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-thread 3 "November 26, 2021" "libcurl 7.81.0" "libcurl thread safety"
+.TH libcurl-thread 3 "September 20, 2022" "libcurl 7.86.0" "libcurl thread safety"
 
 .SH NAME
 libcurl-thread \- libcurl thread safety
@@ -93,7 +95,11 @@ problem reports on *BSD (at least in the past, they may be working fine these
 days). Some operating systems that are known to have solid and working thread
 support are Linux, Solaris and Windows.
 .IP "curl_global_* functions"
-These functions are not thread safe. If you are using libcurl with multiple
+These functions are thread-safe since libcurl 7.84.0 if
+\fIcurl_version_info(3)\fP has the \fBCURL_VERSION_THREADSAFE\fP feature bit
+set (most platforms).
+
+If these functions are not thread-safe and you are using libcurl with multiple
 threads it is especially important that before use you call
 \fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to explicitly
 initialize the library and its dependents, rather than rely on the "lazy"
index 593f87baf0faccc4df5cf4a27fa9427b39f7a44e..40f6ae606e76ac704c5d7fb3376b7ac732a04f7e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-tutorial 3 "December 20, 2021" "libcurl 7.81.0" "libcurl programming"
+.TH libcurl-tutorial 3 "September 20, 2022" "libcurl 7.86.0" "libcurl programming"
 
 .SH NAME
 libcurl-tutorial \- libcurl programming tutorial
@@ -48,9 +50,9 @@ well.
 Your compiler needs to know where the libcurl headers are located. Therefore
 you must set your compiler's include path to point to the directory where you
 installed them. The 'curl-config'[3] tool can be used to get this information:
-
-$ curl-config --cflags
-
+.nf
+  $ curl-config --cflags
+.fi
 .IP "Linking the Program with libcurl"
 When having compiled the program, you need to link your object files to create
 a single executable. For that to succeed, you need to link with libcurl and
@@ -58,9 +60,9 @@ possibly also with other libraries that libcurl itself depends on. Like the
 OpenSSL libraries, but even some standard OS libraries may be needed on the
 command line. To figure out which flags to use, once again the 'curl-config'
 tool comes to the rescue:
-
-$ curl-config --libs
-
+.nf
+  $ curl-config --libs
+.fi
 .IP "SSL or Not"
 libcurl can be built and customized in many ways. One of the things that
 varies from different libraries and builds is the support for SSL-based
@@ -68,19 +70,18 @@ transfers, like HTTPS and FTPS. If a supported SSL library was detected
 properly at build-time, libcurl will be built with SSL support. To figure out
 if an installed libcurl has been built with SSL support enabled, use
 \&'curl-config' like this:
-
-$ curl-config --feature
-
-And if SSL is supported, the keyword 'SSL' will be written to stdout,
+.nf
+  $ curl-config --feature
+.fi
+And if SSL is supported, the keyword \fISSL\fP will be written to stdout,
 possibly together with a few other features that could be either on or off on
 for different libcurls.
 
 See also the "Features libcurl Provides" further down.
 .IP "autoconf macro"
 When you write your configure script to detect libcurl and setup variables
-accordingly, we offer a prewritten macro that probably does everything you
-need in this area. See docs/libcurl/libcurl.m4 file - it includes docs on how
-to use it.
+accordingly, we offer a macro that probably does everything you need in this
+area. See docs/libcurl/libcurl.m4 file - it includes docs on how to use it.
 
 .SH "Portable Code in a Portable World"
 The people behind libcurl have put a considerable effort to make libcurl work
@@ -95,9 +96,9 @@ stop you from that.
 The program must initialize some of the libcurl functionality globally. That
 means it should be done exactly once, no matter how many times you intend to
 use the library. Once for your program's entire life time. This is done using
-
+.nf
  curl_global_init()
-
+.fi
 and it takes one parameter which is a bit pattern that tells libcurl what to
 initialize. Using \fICURL_GLOBAL_ALL\fP will make it initialize all known
 internal sub modules, and might be a good default option. The current two bits
@@ -132,8 +133,8 @@ Repeated calls to \fIcurl_global_init(3)\fP and \fIcurl_global_cleanup(3)\fP
 should be avoided. They should only be called once each.
 
 .SH "Features libcurl Provides"
-It is considered best-practice to determine libcurl features at run-time
-rather than at build-time (if possible of course). By calling
+It is considered best-practice to determine libcurl features at runtime rather
+than at build-time (if possible of course). By calling
 \fIcurl_version_info(3)\fP and checking out the details of the returned
 struct, your program can figure out exactly what the currently running libcurl
 supports.
@@ -155,9 +156,9 @@ should use one handle for every thread you plan to use for transferring. You
 must never share the same handle in multiple threads.
 
 Get an easy handle with
-
easyhandle = curl_easy_init();
-
+.nf
+ handle = curl_easy_init();
+.fi
 It returns an easy handle. Using that you proceed to the next step: setting
 up your preferred actions. A handle is just a logic entity for the upcoming
 transfer or series of transfers.
@@ -190,19 +191,19 @@ remote resource you want to get here. Since you write a sort of application
 that needs this transfer, I assume that you would like to get the data passed
 to you directly instead of simply getting it passed to stdout. So, you write
 your own function that matches this prototype:
-
+.nf
  size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
-
+.fi
 You tell libcurl to pass all data to this function by issuing a function
 similar to this:
-
- curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_data);
+.fi
 You can control what data your callback function gets in the fourth argument
 by setting another property:
-
- curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, &internal_struct);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_WRITEDATA, &internal_struct);
+.fi
 Using that property, you can easily pass local data between your application
 and the function that gets invoked by libcurl. libcurl itself will not touch the
 data you pass with \fICURLOPT_WRITEDATA(3)\fP.
@@ -229,9 +230,9 @@ will experience crashes.
 
 There are of course many more options you can set, and we will get back to a few
 of them later. Let's instead continue to the actual transfer:
-
- success = curl_easy_perform(easyhandle);
-
+.nf
+ success = curl_easy_perform(handle);
+.fi
 \fIcurl_easy_perform(3)\fP will connect to the remote site, do the necessary
 commands and receive the transfer. Whenever it receives data, it calls the
 callback function we previously set. The function may get one byte at a time,
@@ -301,30 +302,30 @@ Since we write an application, we most likely want libcurl to get the upload
 data by asking us for it. To make it do that, we set the read callback and
 the custom pointer libcurl will pass to our read callback. The read callback
 should have a prototype similar to:
-
+.nf
  size_t function(char *bufptr, size_t size, size_t nitems, void *userp);
-
-Where bufptr is the pointer to a buffer we fill in with data to upload and
-size*nitems is the size of the buffer and therefore also the maximum amount
-of data we can return to libcurl in this call. The 'userp' pointer is the
-custom pointer we set to point to a struct of ours to pass private data
+.fi
+Where \fIbufptr\fP is the pointer to a buffer we fill in with data to upload
+and \fIsize*nitems\fP is the size of the buffer and therefore also the maximum
+amount of data we can return to libcurl in this call. The \fIuserp\fP pointer
+is the custom pointer we set to point to a struct of ours to pass private data
 between the application and the callback.
+.nf
+ curl_easy_setopt(handle, CURLOPT_READFUNCTION, read_function);
 
- curl_easy_setopt(easyhandle, CURLOPT_READFUNCTION, read_function);
-
- curl_easy_setopt(easyhandle, CURLOPT_READDATA, &filedata);
-
+ curl_easy_setopt(handle, CURLOPT_READDATA, &filedata);
+.fi
 Tell libcurl that we want to upload:
-
- curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_UPLOAD, 1L);
+.fi
 A few protocols will not behave properly when uploads are done without any prior
 knowledge of the expected file size. So, set the upload file size using the
 \fICURLOPT_INFILESIZE_LARGE(3)\fP for all known file sizes like this[1]:
 
 .nf
  /* in this example, file_size must be an curl_off_t variable */
- curl_easy_setopt(easyhandle, CURLOPT_INFILESIZE_LARGE, file_size);
+ curl_easy_setopt(handle, CURLOPT_INFILESIZE_LARGE, file_size);
 .fi
 
 When you call \fIcurl_easy_perform(3)\fP this time, it will perform all the
@@ -342,9 +343,9 @@ several ways to specify them.
 Most protocols support that you specify the name and password in the URL
 itself. libcurl will detect this and use them accordingly. This is written
 like this:
-
+.nf
  protocol://user:password@example.com/path/
-
+.fi
 If you need any odd letters in your user name or password, you should enter
 them URL encoded, as %XX where XX is a two-digit hexadecimal number.
 
@@ -352,27 +353,29 @@ libcurl also provides options to set various passwords. The user name and
 password as shown embedded in the URL can instead get set with the
 \fICURLOPT_USERPWD(3)\fP option. The argument passed to libcurl should be a
 char * to a string in the format "user:password". In a manner like this:
-
- curl_easy_setopt(easyhandle, CURLOPT_USERPWD, "myname:thesecret");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_USERPWD, "myname:thesecret");
+.fi
 Another case where name and password might be needed at times, is for those
 users who need to authenticate themselves to a proxy they use. libcurl offers
 another option for this, the \fICURLOPT_PROXYUSERPWD(3)\fP. It is used quite
 similar to the \fICURLOPT_USERPWD(3)\fP option like this:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "myname:thesecret");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYUSERPWD, "myname:thesecret");
+.fi
 There's a long time Unix "standard" way of storing FTP user names and
-passwords, namely in the $HOME/.netrc file. The file should be made private
-so that only the user may read it (see also the "Security Considerations"
-chapter), as it might contain the password in plain text. libcurl has the
-ability to use this file to figure out what set of user name and password to
-use for a particular host. As an extension to the normal functionality,
-libcurl also supports this file for non-FTP protocols such as HTTP. To make
-curl use this file, use the \fICURLOPT_NETRC(3)\fP option:
-
- curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
-
+passwords, namely in the $HOME/.netrc file (on Windows, libcurl also checks
+the \fI%USERPROFILE% environment\fP variable if \fI%HOME%\fP is unset, and
+tries "_netrc" as name). The file should be made private so that only the user
+may read it (see also the "Security Considerations" chapter), as it might
+contain the password in plain text. libcurl has the ability to use this file
+to figure out what set of user name and password to use for a particular
+host. As an extension to the normal functionality, libcurl also supports this
+file for non-FTP protocols such as HTTP. To make curl use this file, use the
+\fICURLOPT_NETRC(3)\fP option:
+.nf
+ curl_easy_setopt(handle, CURLOPT_NETRC, 1L);
+.fi
 And a basic example of how such a .netrc file may look like:
 
 .nf
@@ -387,9 +390,9 @@ without it. There are times when the password is not optional, like when
 you are using an SSL private key for secure transfers.
 
 To pass the known private key password to libcurl:
-
- curl_easy_setopt(easyhandle, CURLOPT_KEYPASSWD, "keypassword");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_KEYPASSWD, "keypassword");
+.fi
 .SH "HTTP Authentication"
 The previous chapter showed how to set user name and password for getting
 URLs that require authentication. When using the HTTP protocol, there are
@@ -401,23 +404,22 @@ password in clear-text in the HTTP request, base64-encoded. This is insecure.
 At the time of this writing, libcurl can be built to use: Basic, Digest, NTLM,
 Negotiate (SPNEGO). You can tell libcurl which one to use
 with \fICURLOPT_HTTPAUTH(3)\fP as in:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
+.fi
 And when you send authentication to a proxy, you can also set authentication
 type the same way but instead with \fICURLOPT_PROXYAUTH(3)\fP:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
+.fi
 Both these options allow you to set multiple types (by ORing them together),
 to make libcurl pick the most secure one out of the types the server/proxy
 claims to support. This method does however add a round-trip since libcurl
 must first ask the server what it supports:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPAUTH,
- CURLAUTH_DIGEST|CURLAUTH_BASIC);
-
-For convenience, you can use the 'CURLAUTH_ANY' define (instead of a list
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST|CURLAUTH_BASIC);
+.fi
+For convenience, you can use the \fICURLAUTH_ANY\fP define (instead of a list
 with specific types) which allows libcurl to use whatever method it wants.
 
 When asking for multiple types, libcurl will pick the available one it
@@ -434,37 +436,37 @@ libcurl to post it all to the remote site:
 
 .nf
     char *data="name=daniel&project=curl";
-    curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, data);
-    curl_easy_setopt(easyhandle, CURLOPT_URL, "http://posthere.com/");
+    curl_easy_setopt(handle, CURLOPT_POSTFIELDS, data);
+    curl_easy_setopt(handle, CURLOPT_URL, "http://posthere.com/");
 
-    curl_easy_perform(easyhandle); /* post away! */
+    curl_easy_perform(handle); /* post away! */
 .fi
 
 Simple enough, huh? Since you set the POST options with the
 \fICURLOPT_POSTFIELDS(3)\fP, this automatically switches the handle to use
 POST in the upcoming request.
 
-Ok, so what if you want to post binary data that also requires you to set the
-Content-Type: header of the post? Well, binary posts prevent libcurl from
-being able to do strlen() on the data to figure out the size, so therefore we
-must tell libcurl the size of the post data. Setting headers in libcurl
-requests are done in a generic way, by building a list of our own headers and
-then passing that list to libcurl.
+What if you want to post binary data that also requires you to set the
+Content-Type: header of the post? Well, binary posts prevent libcurl from being
+able to do strlen() on the data to figure out the size, so therefore we must
+tell libcurl the size of the post data. Setting headers in libcurl requests are
+done in a generic way, by building a list of our own headers and then passing
+that list to libcurl.
 
 .nf
  struct curl_slist *headers=NULL;
  headers = curl_slist_append(headers, "Content-Type: text/xml");
 
  /* post binary data */
- curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
+ curl_easy_setopt(handle, CURLOPT_POSTFIELDS, binaryptr);
 
  /* set the size of the postfields data */
- curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
+ curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, 23L);
 
  /* pass our list of custom made headers */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+ curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
 
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
 
  curl_slist_free_all(headers); /* free the header list */
 .fi
@@ -495,7 +497,7 @@ The following example sets two simple text parts with plain textual contents,
 and then a file with binary contents and uploads the whole thing.
 
 .nf
- curl_mime *multipart = curl_mime_init(easyhandle);
+ curl_mime *multipart = curl_mime_init(handle);
  curl_mimepart *part = curl_mime_addpart(multipart);
  curl_mime_name(part, "name");
  curl_mime_data(part, "daniel", CURL_ZERO_TERMINATED);
@@ -507,9 +509,9 @@ and then a file with binary contents and uploads the whole thing.
  curl_mime_filedata(part, "curl.png");
 
  /* Set the form info */
- curl_easy_setopt(easyhandle, CURLOPT_MIMEPOST, multipart);
+ curl_easy_setopt(handle, CURLOPT_MIMEPOST, multipart);
 
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
 
  /* free the post data again */
  curl_mime_free(multipart);
@@ -551,9 +553,9 @@ The MIME API example above is expressed as follows using this function:
               CURLFORM_FILECONTENT, "curl.png", CURLFORM_END);
 
  /* Set the form info */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPPOST, post);
+ curl_easy_setopt(handle, CURLOPT_HTTPPOST, post);
 
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
 
  /* free the post data again */
  curl_formfree(post);
@@ -578,20 +580,20 @@ post handle:
               CURLFORM_CONTENTHEADER, headers,
               CURLFORM_END);
 
- curl_easy_perform(easyhandle); /* post away! */
+ curl_easy_perform(handle); /* post away! */
 
  curl_formfree(post); /* free post */
  curl_slist_free_all(headers); /* free custom header list */
 .fi
 
-Since all options on an easyhandle are "sticky", they remain the same until
+Since all options on an easy handle are "sticky", they remain the same until
 changed even if you do call \fIcurl_easy_perform(3)\fP, you may need to tell
 curl to go back to a plain GET request if you intend to do one as your next
-request. You force an easyhandle to go back to GET by using the
+request. You force an easy handle to go back to GET by using the
 \fICURLOPT_HTTPGET(3)\fP option:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPGET, 1L);
+.fi
 Just setting \fICURLOPT_POSTFIELDS(3)\fP to "" or NULL will *not* stop libcurl
 from doing a POST. It will just make it POST without any data to send!
 
@@ -600,7 +602,7 @@ Four rules have to be respected in building the multi-part:
 .br
 - The easy handle must be created before building the multi-part.
 .br
-- The multi-part is always created by a call to curl_mime_init(easyhandle).
+- The multi-part is always created by a call to curl_mime_init(handle).
 .br
 - Each part is created by a call to curl_mime_addpart(multipart).
 .br
@@ -667,7 +669,7 @@ The deprecated multipart/mixed implementation of multiple files field is
 translated to two distinct parts with the same name.
 
 .nf
- curl_easy_setopt(easyhandle, CURLOPT_READFUNCTION, myreadfunc);
+ curl_easy_setopt(handle, CURLOPT_READFUNCTION, myreadfunc);
  curl_formadd(&post, &last,
               CURLFORM_COPYNAME, "stream",
               CURLFORM_STREAM, arg,
@@ -802,40 +804,40 @@ invoke your own custom FTP commands or even proper FTP directory listings.
 .IP "Proxy Options"
 
 To tell libcurl to use a proxy at a given port number:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXY, "proxy-host.com:8080");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXY, "proxy-host.com:8080");
+.fi
 Some proxies require user authentication before allowing a request, and you
 pass that information similar to this:
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYUSERPWD, "user:password");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYUSERPWD, "user:password");
+.fi
 If you want to, you can specify the host name only in the
 \fICURLOPT_PROXY(3)\fP option, and set the port number separately with
 \fICURLOPT_PROXYPORT(3)\fP.
 
 Tell libcurl what kind of proxy it is with \fICURLOPT_PROXYTYPE(3)\fP (if not,
 it will default to assume an HTTP proxy):
-
- curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+.fi
 .IP "Environment Variables"
 
 libcurl automatically checks and uses a set of environment variables to know
 what proxies to use for certain protocols. The names of the variables are
-following an ancient de facto standard and are built up as "[protocol]_proxy"
-(note the lower casing). Which makes the variable \&'http_proxy' checked for a
-name of a proxy to use when the input URL is HTTP. Following the same rule,
-the variable named 'ftp_proxy' is checked for FTP URLs. Again, the proxies are
-always HTTP proxies, the different names of the variables simply allows
-different HTTP proxies to be used.
+following an old tradition and are built up as "[protocol]_proxy" (note the
+lower casing). Which makes the variable \&'http_proxy' checked for a name of a
+proxy to use when the input URL is HTTP. Following the same rule, the variable
+named 'ftp_proxy' is checked for FTP URLs. Again, the proxies are always HTTP
+proxies, the different names of the variables simply allows different HTTP
+proxies to be used.
 
 The proxy environment variable contents should be in the format
-\&"[protocol://][user:password@]machine[:port]". Where the protocol:// part is
-simply ignored if present (so http://proxy and bluerk://proxy will do the
-same) and the optional port number specifies on which port the proxy operates
-on the host. If not specified, the internal default port number will be used
-and that is most likely *not* the one you would like it to be.
+\&"[protocol://][user:password@]machine[:port]". Where the protocol:// part
+specifies which type of proxy it is, and the optional port number specifies on
+which port the proxy operates. If not specified, the internal default port
+number will be used and that is most likely not the one you would like it to
+be.
 
 There are two special environment variables. 'all_proxy' is what sets proxy
 for any URL in case the protocol specific variable was not set, and
@@ -852,12 +854,12 @@ SSL is for secure point-to-point connections. This involves strong encryption
 and similar things, which effectively makes it impossible for a proxy to
 operate as a "man in between" which the proxy's task is, as previously
 discussed. Instead, the only way to have SSL work over an HTTP proxy is to ask
-the proxy to tunnel trough everything without being able to check or fiddle
+the proxy to tunnel everything through without being able to check or fiddle
 with the traffic.
 
 Opening an SSL connection over an HTTP proxy is therefore a matter of asking the
 proxy for a straight connection to the target host on a specified port. This
-is made with the HTTP request CONNECT. ("please mr proxy, connect me to that
+is made with the HTTP request CONNECT. ("please dear proxy, connect me to that
 remote host").
 
 Because of the nature of this operation, where the proxy has no idea what kind
@@ -882,9 +884,9 @@ Again, this is often prevented by the administrators of proxies and is
 rarely allowed.
 
 Tell libcurl to use proxy tunneling like this:
-
- curl_easy_setopt(easyhandle, CURLOPT_HTTPPROXYTUNNEL, 1L);
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_HTTPPROXYTUNNEL, 1L);
+.fi
 In fact, there might even be times when you want to do plain HTTP
 operations using a tunnel like this, as it then enables you to operate on
 the remote server instead of asking the proxy to do so. libcurl will not
@@ -893,24 +895,24 @@ stand in the way for such innovative actions either!
 .IP "Proxy Auto-Config"
 
 Netscape first came up with this. It is basically a web page (usually using a
-\&.pac extension) with a Javascript that when executed by the browser with the
+\&.pac extension) with a JavaScript that when executed by the browser with the
 requested URL as input, returns information to the browser on how to connect
 to the URL. The returned information might be "DIRECT" (which means no proxy
 should be used), "PROXY host:port" (to tell the browser where the proxy for
 this particular URL is) or "SOCKS host:port" (to direct the browser to a SOCKS
 proxy).
 
-libcurl has no means to interpret or evaluate Javascript and thus it does not
+libcurl has no means to interpret or evaluate JavaScript and thus it does not
 support this. If you get yourself in a position where you face this nasty
 invention, the following advice have been mentioned and used in the past:
 
-- Depending on the Javascript complexity, write up a script that translates it
+- Depending on the JavaScript complexity, write up a script that translates it
 to another language and execute that.
 
-- Read the Javascript code and rewrite the same logic in another language.
+- Read the JavaScript code and rewrite the same logic in another language.
 
-- Implement a Javascript interpreter; people have successfully used the
-Mozilla Javascript engine in the past.
+- Implement a JavaScript interpreter; people have successfully used the
+Mozilla JavaScript engine in the past.
 
 - Ask your admins to stop this, for a static proxy setup or similar.
 
@@ -968,7 +970,7 @@ anything but default.
 .IP "Expect"
 When doing POST requests, libcurl sets this header to \&"100-continue" to ask
 the server for an "OK" message before it proceeds with sending the data part
-of the post. If the POSTed data amount is deemed "small", libcurl will not use
+of the post. If the posted data amount is deemed "small", libcurl will not use
 this header.
 
 .SH "Customizing Operations"
@@ -986,9 +988,9 @@ libcurl is your friend here too.
 If just changing the actual HTTP request keyword is what you want, like when
 GET, HEAD or POST is not good enough for you, \fICURLOPT_CUSTOMREQUEST(3)\fP
 is there for you. It is simple to use:
-
- curl_easy_setopt(easyhandle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST, "MYOWNREQUEST");
+.fi
 When using the custom request, you change the request keyword of the actual
 request you are performing. Thus, by default you make a GET request but you can
 also make a POST operation (as described before) and then replace the POST
@@ -1006,9 +1008,9 @@ think fit. Adding headers is this easy:
  headers = curl_slist_append(headers, "X-silly-content: yes");
 
  /* pass our list of custom made headers */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
+ curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
 
- curl_easy_perform(easyhandle); /* transfer http */
+ curl_easy_perform(handle); /* transfer http */
 
  curl_slist_free_all(headers); /* free the header list */
 .fi
@@ -1048,7 +1050,7 @@ we support. libcurl speaks HTTP 1.1 by default. Some old servers do not like
 getting 1.1-requests and when dealing with stubborn old things like that, you
 can tell libcurl to use 1.0 instead by doing something like this:
 
- curl_easy_setopt(easyhandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+ curl_easy_setopt(handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
 
 .IP "FTP Custom Commands"
 
@@ -1059,7 +1061,7 @@ 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
-data-connection must be left to libcurl's own judgement. Also be aware that
+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
 confuse libcurl and then it might not attempt to transfer the file in the
@@ -1071,9 +1073,9 @@ A little example that deletes a given file before an operation:
  headers = curl_slist_append(headers, "DELE file-to-remove");
 
  /* pass the list of custom commands to the handle */
- curl_easy_setopt(easyhandle, CURLOPT_QUOTE, headers);
+ curl_easy_setopt(handle, CURLOPT_QUOTE, headers);
 
- curl_easy_perform(easyhandle); /* transfer ftp data! */
+ curl_easy_perform(handle); /* transfer ftp data! */
 
  curl_slist_free_all(headers); /* free the header list */
 .fi
@@ -1119,9 +1121,9 @@ they are sent from clients to servers with the Cookie: header.
 
 To just send whatever cookie you want to a server, you can use
 \fICURLOPT_COOKIE(3)\fP to set a cookie string like this:
-
- curl_easy_setopt(easyhandle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
-
+.nf
+ curl_easy_setopt(handle, CURLOPT_COOKIE, "name1=var1; name2=var2;");
+.fi
 In many cases, that is not enough. You might want to dynamically save
 whatever cookies the remote server passes to you, and make sure those cookies
 are then used accordingly on later requests.
@@ -1213,17 +1215,17 @@ use this function (this would over-encode it), but explicitly set the
 corresponding part header.
 
 Upon sending such a message, libcurl prepends it with the header list
-set with \fICURLOPT_HTTPHEADER(3)\fP, as 0th-level mime part headers.
+set with \fICURLOPT_HTTPHEADER(3)\fP, as zero level mime part headers.
 
 Here is an example building an email message with an inline plain/html text
 alternative and a file attachment encoded in base64:
 
 .nf
- curl_mime *message = curl_mime_init(easyhandle);
+ curl_mime *message = curl_mime_init(handle);
 
  /* The inline part is an alternative proposing the html and the text
     versions of the email. */
- curl_mime *alt = curl_mime_init(easyhandle);
+ curl_mime *alt = curl_mime_init(handle);
 
  /* HTML message. */
  curl_mimepart *part = curl_mime_addpart(alt);
@@ -1254,8 +1256,8 @@ alternative and a file attachment encoded in base64:
  headers = curl_slist_append(headers, "To: you@example.com");
 
  /* Set these into the easy handle. */
- curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
- curl_easy_setopt(easyhandle, CURLOPT_MIMEPOST, mime);
+ curl_easy_setopt(handle, CURLOPT_HTTPHEADER, headers);
+ curl_easy_setopt(handle, CURLOPT_MIMEPOST, mime);
 .fi
 
 It should be noted that appending a message to an IMAP directory requires
@@ -1329,8 +1331,8 @@ The best usage of this interface is when you do a select() on all possible
 file descriptors or sockets to know when to call libcurl again. This also
 makes it easy for you to wait and respond to actions on your own application's
 sockets/handles. You figure out what to select() for by using
-\fIcurl_multi_fdset(3)\fP, that fills in a set of fd_set variables for you
-with the particular file descriptors libcurl uses for the moment.
+\fIcurl_multi_fdset(3)\fP, that fills in a set of \fIfd_set\fP variables for
+you with the particular file descriptors libcurl uses for the moment.
 
 When you then call select(), it will return when one of the file handles signal
 action and you then call \fIcurl_multi_perform(3)\fP to allow libcurl to do
index f904b54f3e67fa682b9747c70a34b781c4dc26f5..e60d71ffd5c887344cda50e7a5838718a670bc9a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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 "October 31, 2021" "libcurl 7.81.0" "libcurl url interface"
+.TH libcurl 3 "September 20, 2022" "libcurl 7.86.0" "libcurl URL interface"
 
 .SH NAME
 libcurl-url \- URL interface overview
@@ -29,21 +31,23 @@ The URL interface provides functions for parsing and generating URLs.
 You still only include <curl/curl.h> in your code.
 .SH CREATE
 Create a handle that holds URL info and resources with \fIcurl_url(3)\fP:
-
+.nf
   CURLU *h = curl_url();
+.fi
 .SH CLEANUP
-When done with it, clean it up with \fIcurl_url_cleanup(3)\fP:
-
+When done with it, clean it up with \fIcurl_url_cleanup(3)\fP
+.nf
   curl_url_cleanup(h);
+.fi
 .SH DUPLICATE
 When you need a copy of a handle, just duplicate it with \fIcurl_url_dup(3)\fP:
-
+.nf
   CURLU *nh = curl_url_dup(h);
+.fi
 .SH PARSING
-By "setting" a URL to the handle with \fIcurl_url_set(3)\fP, the URL is parsed
+By setting a URL to the handle with \fIcurl_url_set(3)\fP, the URL is parsed
 and stored in the handle. If the URL is not syntactically correct it will
 return an error instead.
-
 .nf
   rc = curl_url_set(h, CURLUPART_URL,
                     "https://example.com:449/foo/bar?name=moo", 0);
@@ -55,16 +59,17 @@ If successful, this stores the URL in its individual parts within the handle.
 .SH REDIRECT
 When a handle already contains info about a URL, setting a relative URL will
 make it "redirect" to adapt to it.
-
+.nf
   rc = curl_url_set(h, CURLUPART_URL, "../test?another", 0);
+.fi
 .SH "GET URL"
-The `CURLU` handle represents a URL and you can easily extract that with
+The \fBCURLU\fP handle represents a URL and you can easily extract that with
 \fIcurl_url_get(3)\fP:
-
+.nf
   char *url;
   rc = curl_url_get(h, CURLUPART_URL, &url, 0);
   curl_free(url);
-
+.fi
 The zero in the fourth argument is a bitmask for changing specific features.
 .SH "GET PARTS"
 When a URL has been parsed or parts have been set, you can extract those
@@ -82,7 +87,7 @@ pieces from the handle at any time.
 .fi
 
 Extracted parts are not URL decoded unless the user also asks for it with the
-CURLU_URLDECODE flag set in the fourth bitmask argument.
+\fICURLU_URLDECODE\fP flag set in the fourth bitmask argument.
 
 Remember to free the returned string with \fIcurl_free(3)\fP when you are done
 with it!
@@ -102,27 +107,26 @@ instead of parsing such.
 .fi
 
 Set parts are not URL encoded unless the user asks for it with the
-`CURLU_URLENCODE` flag.
-.SH "APPENDQUERY"
+\fICURLU_URLENCODE\fP flag.
+.SH "CURLU_APPENDQUERY"
 An application can append a string to the right end of the query part with the
-`CURLU_APPENDQUERY` flag to \fIcurl_url_set(3)\fP.
+\fICURLU_APPENDQUERY\fP flag to \fIcurl_url_set(3)\fP.
 
-Imagine a handle that holds the URL `https://example.com/?shoes=2`. An
-application can then add the string `hat=1` to the query part like this:
+Imagine a handle that holds the URL "https://example.com/?shoes=2". An
+application can then add the string "hat=1" to the query part like this:
 
 .nf
   rc = curl_url_set(urlp, CURLUPART_QUERY, "hat=1", CURLU_APPENDQUERY);
 .fi
 
-It will even notice the lack of an ampersand (`&`) separator so it will inject
+It will even notice the lack of an ampersand (&) separator so it will inject
 one too, and the handle's full URL will then equal
-`https://example.com/?shoes=2&hat=1`.
+"https://example.com/?shoes=2&hat=1".
 
 The appended string can of course also get URL encoded on add, and if asked to
 URL encode, the encoding process will skip the '=' character. For example,
-append `candy=N&N` to what we already have, and URL encode it to deal with the
+append "candy=N&N" to what we already have, and URL encode it to deal with the
 ampersand in the data:
-
 .nf
   rc = curl_url_set(urlp, CURLUPART_QUERY, "candy=N&N",
                     CURLU_APPENDQUERY | CURLU_URLENCODE);
@@ -130,9 +134,9 @@ ampersand in the data:
 
 Now the URL looks like
 .nf
-  https://example.com/?shoes=2&hat=1&candy=N%26N`
+  https://example.com/?shoes=2&hat=1&candy=N%26N
 .fi
-.SH AVALABILITY
+.SH AVAILABILITY
 The URL API was introduced in libcurl 7.62.0.
 .SH "SEE ALSO"
 .BR curl_url "(3), " curl_url_cleanup "(3), " curl_url_get "(3), "
index 2d0c379d9c99595057fc861c6728891b5870581c..a10ce0306c57f2806ce69e8dada0a4b4e76974a1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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 "November 26, 2021" "libcurl 7.81.0" "libcurl overview"
+.TH libcurl 3 "September 20, 2022" "libcurl 7.86.0" "libcurl overview"
 
 .SH NAME
 libcurl \- client-side URL transfers
@@ -30,7 +32,7 @@ specific man pages for each function mentioned in here. See
 \fIlibcurl-url(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 favourite
+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
@@ -153,28 +155,31 @@ 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.
 
-The basic rule for constructing a program that uses libcurl is this: Call
+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.
+
+If the global constant functions are \fInot thread safe\fP, then you must
+not call them when any other thread in the program is running. It
+is not good enough that no other thread is using libcurl at the time,
+because these functions internally call similar functions of other
+libraries, and those functions are similarly thread-unsafe. You cannot
+generally know what these libraries are, or whether other threads are
+using them.
+
+If the global constant functions are \fInot thread safe\fP, then the basic rule
+for constructing a program that uses libcurl is this: Call
 \fIcurl_global_init(3)\fP, with a \fICURL_GLOBAL_ALL\fP argument, immediately
 after the program starts, while it is still only one thread and before it uses
 libcurl at all. Call \fIcurl_global_cleanup(3)\fP immediately before the
 program exits, when the program is again only one thread and after its last
 use of libcurl.
 
-You can call both of these multiple times, as long as all calls meet
-these requirements and the number of calls to each is the same.
-
 It is not actually required that the functions be called at the beginning
 and end of the program -- that is just usually the easiest way to do it.
-It \fIis\fP required that the functions be called when no other thread
-in the program is running.
 
-These global constant functions are \fInot thread safe\fP, so you must
-not call them when any other thread in the program is running. It
-is not good enough that no other thread is using libcurl at the time,
-because these functions internally call similar functions of other
-libraries, and those functions are similarly thread-unsafe. You cannot
-generally know what these libraries are, or whether other threads are
-using them.
+You can call both of these multiple times, as long as all calls meet
+these requirements and the number of calls to each is the same.
 
 The global constant situation merits special consideration when the
 code you are writing to use libcurl is not the main program, but rather
@@ -201,8 +206,8 @@ author of this libcurl-using module, you can make the constructor call
 \fIcurl_global_init(3)\fP and the destructor call \fIcurl_global_cleanup(3)\fP
 and satisfy libcurl's requirements without your user having to think about it.
 (Caveat: If you are initializing libcurl from a Windows DLL you should not
-initialize it from DllMain or a static initializer because Windows holds the
-loader lock during that time and it could cause a deadlock.)
+initialize it from \fIDllMain\fP or a static initializer because Windows holds
+the loader lock during that time and it could cause a deadlock.)
 
 \fIcurl_global_init(3)\fP has an argument that tells what particular parts of
 the global constant environment to set up. In order to successfully use any
index ad53a444efdb870864a5ce0c22ddfcda5a3b162d..0908a028e148b6e42123fb3b065a1731af8523e6 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2006 - 2020, David Shaw <dshaw@jabberwocky.com>
+# Copyright (C) 2006 - 2022, David Shaw <dshaw@jabberwocky.com>
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION],
 #                       [ACTION-IF-YES], [ACTION-IF-NO])
index d19a93ce44e46084d86a3d7ba00d4f33da840b2e..8d1ddd044ed2ba5d5a17d5ff91a75deba3ae20fe 100755 (executable)
@@ -6,7 +6,7 @@
 # *                            | (__| |_| |  _ <| |___
 # *                             \___|\___/|_| \_\_____|
 # *
-# * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# * Copyright (C) 2015 - 2022, 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
@@ -19,6 +19,8 @@
 # * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # * KIND, either express or implied.
 # *
+# * SPDX-License-Identifier: curl
+# *
 # ***************************************************************************
 
 my $version="7.41.0";
@@ -48,6 +50,8 @@ print <<HEADER
 .\\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\\" * KIND, either express or implied.
 .\\" *
+.\\" * SPDX-License-Identifier: curl
+.\\" *
 .\\" **************************************************************************
 .TH libcurl-symbols 3 "$date" "libcurl $version" "libcurl symbols"
 .SH NAME
index d0035016da4afd7eb3b73a544db57dae4f3b5ced..10d8c5f852192aae3d5f858d3ed15ba41f48a935 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Load man_MANS from shared file
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
index 484582657ebc5fb74982946e0c74d05933b36711..502a7f80415cdda6bf22614776e6c6dbe3603374 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_ACTIVESOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_ACTIVESOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_ACTIVESOCKET \- get the active socket
index f7c03f4f05788c5a4caf700d76ae66b3e08ddc81..09139343cc40c664298979bf8c899c132336deca 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_APPCONNECT_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
index af1a3109a84c3b804ac641fa19976b0c641abefc..7824028f161668d66802776bd30adab66497ccf1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_APPCONNECT_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is completed
diff --git a/docs/libcurl/opts/CURLINFO_CAINFO.3 b/docs/libcurl/opts/CURLINFO_CAINFO.3
new file mode 100644 (file)
index 0000000..3c66df0
--- /dev/null
@@ -0,0 +1,68 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_CAINFO 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
+
+.SH NAME
+CURLINFO_CAINFO \- get the default built-in CA certificate path
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CAINFO, char **path);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a null-terminated
+string holding the default built-in path used for the \fICURLOPT_CAINFO(3)\fP
+option unless set by the user.
+
+Note that in a situation where libcurl has been built to support multiple TLS
+libraries, this option might return a string even if the specific TLS library
+currently set to be used does not support \fICURLOPT_CAINFO(3)\fP.
+
+This is a path identifying a single file containing CA certificates.
+
+The \fBpath\fP pointer will be NULL if there is no default path.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  CURLcode res;
+  char *cainfo = NULL;
+  curl_easy_getinfo(curl, CURLINFO_CAINFO, &cainfo);
+  if(cainfo)
+      printf("default ca info path: %s\\n", cainfo);
+  }
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLINFO_CAPATH "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CAPATH.3 b/docs/libcurl/opts/CURLINFO_CAPATH.3
new file mode 100644 (file)
index 0000000..093f8db
--- /dev/null
@@ -0,0 +1,68 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_CAPATH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
+
+.SH NAME
+CURLINFO_CAPATH \- get the default built-in CA path string
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CAPATH, char **path);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a null-terminated
+string holding the default built-in path used for the \fICURLOPT_CAPATH(3)\fP
+option unless set by the user.
+
+Note that in a situation where libcurl has been built to support multiple TLS
+libraries, this option might return a string even if the specific TLS library
+currently set to be used does not support \fICURLOPT_CAPATH(3)\fP.
+
+This is a path identifying a directory.
+
+The \fBpath\fP pointer will be NULL if there is no default path.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  CURLcode res;
+  char *capath = NULL;
+  curl_easy_getinfo(curl, CURLINFO_CAPATH, &capath);
+  if(capath)
+      printf("default ca path: %s\\n", capath);
+  }
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLINFO_CAINFO "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
index a0c075acc5b287c18a3bb5a4c2513b03320b35a7..7ebc3e5422106f29fb5ed8c53fe27932544dd6c5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CERTINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CERTINFO 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CERTINFO \- get the TLS certificate chain
@@ -32,13 +34,13 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
                            struct curl_certinfo **chainp);
 .fi
 .SH DESCRIPTION
-Pass a pointer to a 'struct curl_certinfo *' and you will get it set to point to
-a struct that holds a number of linked lists with info about the certificate
-chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the request was
-made. The struct reports how many certs it found and then you can extract info
-for each of those certs by following the linked lists. The info chain is
-provided in a series of data in the format "name:content" where the content is
-for the specific named data. See also the certinfo.c example.
+Pass a pointer to a \fIstruct curl_certinfo *\fP and you will get it set to
+point to a struct that holds a number of linked lists with info about the
+certificate chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the
+request was made. The struct reports how many certs it found and then you can
+extract info for each of those certs by following the linked lists. The info
+chain is provided in a series of data in the format "name:content" where the
+content is for the specific named data. See also the \fIcertinfo.c\fP example.
 .SH PROTOCOLS
 All TLS-based
 .SH EXAMPLE
index 01dbf39f7bb0bf9c0fd93f746fba4167a7adfc18..57016d09795829dacd6b7802d44758ac62adda4f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONDITION_UNMET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONDITION_UNMET 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
@@ -51,7 +53,8 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
 
   /* If-Modified-Since the above time stamp */
-  curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+  curl_easy_setopt(curl, CURLOPT_TIMECONDITION,
+                   (long)CURL_TIMECOND_IFMODSINCE);
 
   /* Perform the request */
   res = curl_easy_perform(curl);
index a746300d359a9506324945a9618de8ebdd42f97c..585d5769f8393571ccce43895212afdea0b84d1a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONNECT_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONNECT_TIME \- get the time until connect
index 266334277700c1ba40f968662f695fa80882ef6e..8adbb2729106f00d600d626946b5213195e6bdd8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONNECT_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONNECT_TIME_T \- get the time until connect
index cc70a940c14f89f809b06539fd63cd91a7ef68b6..478e14dc11ba99848278d76c2e80db4effd44a7a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
@@ -60,7 +62,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.6.1
+Added in 7.6.1. Deprecated since 7.55.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 9a6cd8c8d442273dd25fc267cc1cfdbc1bad1f62..1365d48418d64c4374801c656e08f13e1a3316e2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
index 3d875cc1d60d3e26180857321bf546069a211f37..45830bfd4115a9629a3a13ffdf2092c6ed538df5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
@@ -59,7 +61,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.6.1
+Added in 7.6.1. Deprecated since 7.55.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index c5261f70b8bbdb59f34f5fa0ba1e803472e786f2..77004dde7b98c2c737b02d5c2fa4488f239d9b12 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
index 33b58f33599002b6543f1ee43f69d2f619cf6fda..9cdb3a5dbe25452d7b7f5e78c5c6f4d29cf5d2bf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_TYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_TYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_TYPE \- get Content-Type
@@ -66,3 +68,4 @@ Added in 7.9.4
 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 CURLOPT_HEADERFUNCTION "(3), " curl_easy_header "(3) "
index 57cc85d127de95a31cd9fda123de15c44f1a4038..5e27c74ce4b840ad7f151eb21a689319c966a916 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_COOKIELIST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_COOKIELIST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_COOKIELIST \- get all known cookies
index 0287eca9d357b64ab9d090d14c4cb11e67bf4ea6..2adeced1718d1752dae7629d49e11ed3f4b8992f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_EFFECTIVE_METHOD 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_METHOD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
index deee3180b1d53b5f1d073d7a3eb7cebd55d8cef4..a2d99c20a4d5b677500abb7e4ccd31e7da402d33 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_EFFECTIVE_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_EFFECTIVE_URL \- get the last used URL
index db59e383c0e04ec72267e81628328237b0c15709..151c447a8b36c1efbd0b211fc9a48f38fd3680e7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_FILETIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_FILETIME \- get the remote time of the retrieved document
@@ -32,7 +34,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
 .fi
 .SH DESCRIPTION
 Pass a pointer to a long to receive the remote time of the retrieved document
-(in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If you get
+in number of seconds since January 1 1970 in the GMT/UTC time zone. If you get
 -1, it can be because of many reasons (it might be unknown, the server might
 hide it or the server does not support the command that tells document time
 etc) and the time of the document is unknown.
index 60639dbe3882b0f3daa047707d2bfb6afdd55e9d..f967a2e0d9108b11ce9e78ee0e3b32d87f2cffe3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_FILETIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_FILETIME_T \- get the remote time of the retrieved document
@@ -33,10 +35,10 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T,
 .fi
 .SH DESCRIPTION
 Pass a pointer to a curl_off_t to receive the remote time of the retrieved
-document (in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If
-you get -1, it can be because of many reasons (it might be unknown, the server
-might hide it or the server does not support the command that tells document
-time etc) and the time of the document is unknown.
+document in number of seconds since January 1 1970 in the GMT/UTC time
+zone. If you get -1, it can be because of many reasons (it might be unknown,
+the server might hide it or the server does not support the command that tells
+document time etc) and the time of the document is unknown.
 
 You must ask libcurl to collect this information before the transfer is made,
 by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
index aae1bc409b4f76ec5f4290f250070931f1e3694f..f00890c543f10720c7efd4289276639277e89990 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_FTP_ENTRY_PATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
index c8ad987e3ce29b624fcb0f0a70d570fa33f62200..33cb344ed4f53d0c72e041230b8c8efcd32fd3eb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HEADER_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HEADER_SIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HEADER_SIZE \- get size of retrieved headers
index 80b1f46ada6411bf1d6962c1e3c41b6fbe273658..b568df0265be38c82e0337328c9c7a92f6bbdb35 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HTTPAUTH_AVAIL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
index c45c76e4bfb34178bcab7e0a4f1288a16b41a00c..cc1385fc7c42e2b78df35fe76fb17eb60a344131 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HTTP_CONNECTCODE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
index 986b1b075e32817b95100a9297dbb45abc4cb536..61be2a53bd125da414c634bf441eadac6f99dfe2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HTTP_VERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_VERSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HTTP_VERSION \- get the http version used in the connection
index fc1e81f5028f7c0b3e796a17ce2af55f1309ec62..e4c8e3b202faa25d526319a874409d1e13c79521 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_LASTSOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_LASTSOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_LASTSOCKET \- get the last socket used
index cf0eca0044eb1f488d96db0f3e61ba5886b8509c..7b2cb4cc6c85e58ba2fe67b612d66d44d1a99c89 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_LOCAL_IP 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_IP 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_LOCAL_IP \- get local IP address of last connection
index 38d21bb6368f91554f04a9bd775e13efff4e2a64..2de757c88a930c79ad96387d9253344fac60e930 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_LOCAL_PORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_PORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_LOCAL_PORT \- get the latest local port number
index f4c16ac27dfca9977971859fb71b4a8fbbcc713c..b250373a910c5959a62b9273f4399fe3307291bd 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_NAMELOOKUP_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
index e29f6b0b57a3ef634ffda0d0e1ef80e932042e6f..9a278a538f2f05f0061d2fdf06eacbd24d1e37f9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_NAMELOOKUP_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
index f06fa69255d53b07be644a6f7ac8f18d38763401..57f39769c2a49e8ee9d3f84ccb4448e608896ccf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_NUM_CONNECTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_NUM_CONNECTS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_NUM_CONNECTS \- get number of created connections
index 263b36851bdda84107fe0afb3438abf9ff860144..cb37d6156a1c2b1e9bb4983d667c27203bb27732 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_OS_ERRNO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_OS_ERRNO 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_OS_ERRNO \- get errno number from last connect failure
index 9e0595018a4bf1194cf4d1c9ffaa3dde63ac8f3d..ef611e803bbab91030e69a6f98368313039e9a1b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRETRANSFER_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
index ffb72bff8e4d8549c3618e7da24c0c5446394e45..fb78d8581eb0c354e9a96a25767516e4059e9ab5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRETRANSFER_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
index 70201870bfdde97a4c2c7add59a7ac1b8ff5f378..f172c9d0eab2aa6ea4ed81549a4e14865be5b32e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRIMARY_IP 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_IP 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRIMARY_IP \- get IP address of last connection
index 41fa43d7c0a0db5aa3d6c103588c8ea3d802b6bc..f1ae29fd99e8ec648c87f8cc26428eaed8c32021 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRIMARY_PORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_PORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRIMARY_PORT \- get the latest destination port number
@@ -33,6 +35,11 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
 .SH DESCRIPTION
 Pass a pointer to a long to receive the destination port of the most recent
 connection done with this \fBcurl\fP handle.
+
+This is the destination port of the actual TCP or UDP connection libcurl used.
+If a proxy was used for the most recent transfer, this is the port number of
+the proxy, if no proxy was used it is the port number of the most recently
+accessed URL.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
index 1b9e9cbbf49c06d0d7f8308abe6445c9053b097d..0e8a51db6902f46f1c13d9b2b1f7356d697b3438 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRIVATE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIVATE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRIVATE \- get the private pointer
index 8b845fd91da4b3eda9db8473a04b871c22815428..ece0b087fced9b075c2742ae3df4d90591bd08b5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROTOCOL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROTOCOL 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROTOCOL \- get the protocol used in the connection
@@ -31,6 +33,10 @@ CURLINFO_PROTOCOL \- get the protocol used in the connection
 CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
 .fi
 .SH DESCRIPTION
+This option is deprecated. We strongly recommend using
+\fICURLINFO_SCHEME(3)\fP instead, because this option cannot return all
+possible protocols!
+
 Pass a pointer to a long to receive the version used in the last http
 connection.  The returned value will be exactly one of the CURLPROTO_* values:
 
@@ -59,7 +65,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0. Deprecated since 7.85.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 577070472b083b3a8d2047a1238da294d4217d86..13f126990ec71239bd2e6aa1b62548565893b07d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROXYAUTH_AVAIL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
index b0cddfed6c3a04eb7b65bcd2f29d3ec29154db8c..fd1354907de4d817c1cf37265a6688ad6cd95ca6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROXY_ERROR 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_ERROR 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
@@ -70,12 +72,11 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_ERROR, long *detail);
 .fi
 .SH DESCRIPTION
 Pass a pointer to a long to receive a detailed error code when the most recent
-transfer returned a CURLE_PROXY error.
-
-The return value will match the CURLproxycode set.
+transfer returned a \fBCURLE_PROXY\fP error. That error code will match the
+\fBCURLproxycode\fP set.
 
-The returned value will be zero (equal to CURLPX_OK) if no such response code
-was available.
+The error code will be zero (\fBCURLPX_OK\fP) if no response code was
+available.
 .SH PROTOCOLS
 All that can be done over SOCKS
 .SH EXAMPLE
index af02c325b45a8100a030ada84dde5474486ac967..a8c049a85da05fe038826eb636055ffc07f3d2ec 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
index 443f271ac5b00c468c39fe3279a69023dc2c95a9..d8ac0c496793d7130c7d2a76e41cc07c8ffe4f5e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_COUNT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_COUNT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_COUNT \- get the number of redirects
index c1cc4b3d328ce38847188f0cfd7bd2d11b728764..09b5aad0b312f1d3ac02fad61842ccf6bf68991b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
@@ -34,8 +36,8 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME,
 .SH DESCRIPTION
 Pass a pointer to a double to receive the total time, in seconds, it took for
 all redirection steps include name lookup, connect, pretransfer and transfer
-before final transaction was started. CURLINFO_REDIRECT_TIME contains the
-complete execution time for multiple redirections.
+before final transaction was started. \fICURLINFO_REDIRECT_TIME(3)\fP contains
+the complete execution time for multiple redirections.
 
 See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
 .SH PROTOCOLS
index 1609fc246a9c421a6dccb2288e992d9d94d57091..b628bfeddf55d2a0db714df45e7846549fb3d737 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
index e3a1c0322e2ba962c7ed67d2ba6d057c209daae1..0311e4960184da6e6465c876a4ac3b36a03368d6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
index 618efba0a3bf0996d2699ab593b03de184ee3fe7..d8ab0a48306bc06a78fa0701313df34b00aa88ef 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REFERER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REFERER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REFERER \- get the referrer header
index 6a684fd19f678581a96449137adeb687385657f7..67387f4d67623421a0537f75c2ec031632e47534 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REQUEST_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_REQUEST_SIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REQUEST_SIZE \- get size of sent request
index a2c93805b740f987d6409538333e10e100fa8e82..7254d96c4633eba18bce32dbf31bec1b8bdc7e56 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RESPONSE_CODE 3 "December 14, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RESPONSE_CODE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RESPONSE_CODE \- get the last response code
@@ -32,7 +34,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
 .fi
 .SH DESCRIPTION
 Pass a pointer to a long to receive the last received HTTP, FTP, SMTP or
-LDAP (openldap only) response code. This option was previously known as
+LDAP (OpenLDAP only) response code. This option was previously known as
 CURLINFO_HTTP_CODE in libcurl 7.10.7 and earlier.
 The stored value will be zero if no server response code has been received.
 Note that a proxy's CONNECT response should
index 0c1c8f6d297ef8794cccb5dd02c0bc41af09431a..1de0f884b44a890101db525d321144f540bc4be7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RETRY_AFTER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RETRY_AFTER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RETRY_AFTER \- returns the Retry-After retry delay
index 897ddb331280bf74d1d39002456d7d01bd136528..7494d2ff26b5fb2e51883e6a3ff6976698a513be 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
index 3d9b8d4705013965246077b05683053799e8809e..ccda2badc5cf1bdd0ac8351ac6329f885703076c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_CSEQ_RECV 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
index 8cc2c585379916a6b60a3292757126c9c663db92..754524a13c11e87761948d65bc05493708c82005 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_SERVER_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
@@ -35,7 +37,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ,
 Pass a pointer to a long to receive the next CSeq that will be expected by the
 application.
 
-Llistening for server initiated requests is currently unimplemented!
+Listening for server initiated requests is not implemented!
 
 Applications wishing to resume an RTSP session on another connection should
 retrieve this info before closing the active connection.
index f936baf2667bf75d6dbe1f6605ca3d2bb3b0ea14..f5a233459b89d63fd91925d2ee8bcc112473a8c9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_SESSION_ID 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
index 2e1f89e74c0643a35ef0ac1f055a03cc5b11b10f..7b9db05ec3817b8ded786012ba5b01060a117c8e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SCHEME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SCHEME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
index 93146e3b7cb58890d24c4c35fc5797031a162f36..b978b13bc98bfe09288265b0c77927e970254e90 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_DOWNLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
@@ -61,7 +63,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.4.1. Deprecated since 7.55.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 3ef36d5d41b4e16f4a071bec70b5962ee89089d4..19807218e4dc94c44d9fa6b80a9eb3c8205bfb3b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_DOWNLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
index abf05107f942d388631dc5296dbc05b89a236f97..920273e1facd82735c602b0a7a992f0c49a6b003 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
@@ -58,7 +60,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.4.1. Deprecated since 7.55.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 71cea8fb663cd0e6d231c1ce9238f48a38298d77..1a3f1c26fbd2c5fa9aac106336da30b3ed9797f2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_UPLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
index 2879d1886fff1789a175b2c39662f54e0ee9ccbd..ef4b14d368675331f06141c96e7032c0f8e86d20 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_DOWNLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_DOWNLOAD \- get download speed
@@ -51,13 +53,13 @@ if(curl) {
     double speed;
     res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed);
     if(!res) {
-      printf("Download speed %.0f bytes/sec\\n", ul);
+      printf("Download speed %.0f bytes/sec\\n", speed);
     }
   }
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.4.1. Deprecated since 7.55.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index c23b084510c83689701ac3ae035d89df79c761ed..1050c7ccf6c8931a0780c1f5ef30f8e780200cd4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_DOWNLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_DOWNLOAD_T \- get download speed
index faf68272c3b225b5f6fdba689ecc26f125a42252..3ff75c87e4119bfac3fb0d73d83ce13a313a42a4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_UPLOAD \- get upload speed
@@ -50,13 +52,13 @@ if(curl) {
     double speed;
     res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed);
     if(!res) {
-      printf("Upload speed %.0f bytes/sec\\n", ul);
+      printf("Upload speed %.0f bytes/sec\\n", speed);
     }
   }
 }
 .fi
 .SH AVAILABILITY
-Added in
+Added in 7.4.1. Deprecated since 7.55.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 9aacdb1bd551a1a987e20ce7f4b9bbce1e0a9a6d..501d52e9e2a8ccd639bd071ccaafa6a524a89eee 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_UPLOAD_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_UPLOAD_T \- get upload speed
index c230df7d3a5502c135f3b889d67e7bb20f26908d..78cfa70cd8e3f24975336116b903c48e5a3e2406 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SSL_ENGINES 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_ENGINES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
@@ -35,7 +37,7 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
 Pass the address of a 'struct curl_slist *' to receive a linked-list of
 OpenSSL crypto-engines supported. Note that engines are normally implemented
 in separate dynamic libraries. Hence not all the returned engines may be
-available at run-time. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
+available at runtime. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
 on the list pointer once you are done with it, as libcurl will not free the
 data for you.
 .SH PROTOCOLS
index 5da877d06d29019d09bc161c11fefd73f5b3d0a3..2ab2e2fb7aed39b31e685e30acf87e0c241a571a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SSL_VERIFYRESULT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
index 380689e7a6fcb98c98d715b4ba64ff37e5c979d0..6456103ed21620822423c09fb8294c18808d2a81 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_STARTTRANSFER_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
index 6f6e6ea93bc8c6ff5d0a1d6450ad2537a9646f13..748a67177d61d28e72c3a7b76bc563ac07731444 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_STARTTRANSFER_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
index 67ef0ce6d35effdbc4940956bccbed5bd32200ff..8de551a871b2ce7b85c1bcc2fb9244982475d0a9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TLS_SESSION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SESSION 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TLS_SESSION \- get TLS session info
@@ -39,14 +41,14 @@ This option is exactly the same as \fICURLINFO_TLS_SSL_PTR(3)\fP except in the
 case of OpenSSL. If the session \fIbackend\fP is CURLSSLBACKEND_OPENSSL the
 session \fIinternals\fP pointer varies depending on the option:
 
-CURLINFO_TLS_SESSION OpenSSL session \fIinternals\fP is SSL_CTX *.
+\fICURLINFO_TLS_SESSION(3)\fP OpenSSL session \fIinternals\fP is \fBSSL_CTX *\fP.
 
-CURLINFO_TLS_SSL_PTR OpenSSL session \fIinternals\fP is SSL *.
+\fICURLINFO_TLS_SSL_PTR(3)\fP OpenSSL session \fIinternals\fP is \fBSSL *\fP.
 
-You can obtain an SSL_CTX pointer from an SSL pointer using OpenSSL function
-SSL_get_SSL_CTX. Therefore unless you need compatibility with older versions of
-libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to that document for more
-information.
+You can obtain an \fBSSL_CTX\fP pointer from an SSL pointer using OpenSSL
+function \fISSL_get_SSL_CTX(3)\fP. Therefore unless you need compatibility
+with older versions of libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to
+that document for more information.
 .SH PROTOCOLS
 All TLS-based
 .SH EXAMPLE
@@ -62,8 +64,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.34.0, and supported OpenSSL, GnuTLS, NSS and gskit only up until
-7.48.0 was released.
+Added in 7.34.0. Deprecated since 7.48.0 and supported OpenSSL, GnuTLS,
+NSS and gskit only up until this version was released.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 153216d370cc47c79d9023b432ddf7b2ffbac5b3..c90b30829a0d48cba042177e5586ccdd966317db 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TLS_SSL_PTR 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SSL_PTR 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
@@ -37,9 +39,9 @@ CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
 CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
                            struct curl_tlssessioninfo **session);
 .SH DESCRIPTION
-Pass a pointer to a 'struct curl_tlssessioninfo *'.  The pointer will be
-initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an
-enum indicating the SSL library used for the handshake and a pointer to the
+Pass a pointer to a \fIstruct curl_tlssessioninfo *\fP.  The pointer will be
+initialized to refer to a \fIstruct curl_tlssessioninfo *\fP that will contain
+an enum indicating the SSL library used for the handshake and a pointer to the
 respective internal TLS session structure of this underlying SSL library.
 
 This option may be useful for example to extract certificate information in a
@@ -65,34 +67,32 @@ The \fIinternals\fP struct member will point to a TLS library specific pointer
 for the active ("in use") SSL connection, with the following underlying types:
 .RS
 .IP GnuTLS
-gnutls_session_t
+\fBgnutls_session_t\fP
 .IP gskit
-gsk_handle
+\fBgsk_handle\fP
 .IP NSS
-PRFileDesc *
+\fBPRFileDesc *\fP
 .IP OpenSSL
-CURLINFO_TLS_SESSION: SSL_CTX *
+\fICURLINFO_TLS_SESSION(3)\fP: \fBSSL_CTX *\fP
 
-CURLINFO_TLS_SSL_PTR: SSL *
+\fICURLINFO_TLS_SSL_PTR(3)\fP: \fBSSL *\fP
 .RE
 Since 7.48.0 the \fIinternals\fP member can point to these other SSL backends
 as well:
 .RS
 .IP mbedTLS
-mbedtls_ssl_context *
+\fBmbedTLS_ssl_context *\fP
 .IP "Secure Channel"
-CtxtHandle *
+\fBCtxtHandle *\fP
 .IP "Secure Transport"
-SSLContext *
+\fBSSLContext *\fP
 .IP "wolfSSL"
-SSL *
-.IP "MesaLink"
-SSL *
+\fBSSL *\fP
 .RE
 
 If the \fIinternals\fP pointer is NULL then either the SSL backend is not
 supported, an SSL session has not yet been established or the connection is no
-longer associated with the easy handle (eg curl_easy_perform has returned).
+longer associated with the easy handle (e.g. curl_easy_perform has returned).
 .SH LIMITATIONS
 This option has some limitations that could make it unsafe when it comes to
 the manual verification of certificates.
@@ -103,7 +103,7 @@ using FTP over SSL. That is because the FTP protocol has a control channel and
 a data channel and one or both may be over SSL. Currently there is no way to
 retrieve a second in-use SSL session associated with an easy handle.
 
-This option has not been thoroughly tested with plaintext protocols that can
+This option has not been thoroughly tested with clear text protocols that can
 be upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with
 \fICURLOPT_USE_SSL(3)\fP. Though you will be able to retrieve the SSL pointer,
 it's possible that before you can do that data (including auth) may have
@@ -116,10 +116,10 @@ after renegotiation but before you are able to get the (possibly) changed SSL
 pointer, with the (possibly) changed certificate information.
 
 If you are using OpenSSL or wolfSSL then \fICURLOPT_SSL_CTX_FUNCTION(3)\fP can
-be used to set a certificate verification callback in the CTX. That is safer
-than using this option to poll for certificate changes and does not suffer from
-any of the problems above. There is currently no way in libcurl to set a
-verification callback for the other SSL backends.
+be used to set a certificate verification callback. That is safer than using
+this option to poll for certificate changes and does not suffer from any of
+the problems above. There is currently no way in libcurl to set a verification
+callback for the other SSL backends.
 
 How are you using this option? Are you affected by any of these limitations?
 Please let us know by making a comment at
index 3c870846bbd5d0c7cf2985c44c7ff5f42669f8ee..3ba12bc82a1e6d88f1af967b528317e783531129 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TOTAL_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TOTAL_TIME \- get total time of previous transfer
index 34ad3453ec7bb73e5f6133c28fc2e003b6964737..0bf34cdb91487be25dae738f2d19955d87e27bdb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TOTAL_TIME_T 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME_T 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
index 4b3da35a1e025db383889a4aacb92dfdc5064f4c..8bc018784d9dbc99b8d2a666f6fe658afdb8df14 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
@@ -34,11 +36,11 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,
 .SH DESCRIPTION
 No function since pipelining was removed in 7.62.0.
 
-Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently
-processing a chunked (Transfer-encoding: chunked) request with a current chunk
-length larger than \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP, that pipeline
-will not be considered for additional requests, even if it is shorter than
-\fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
+Pass a long with a \fBsize\fP in bytes. If a transfer in a pipeline is
+currently processing a chunked (Transfer-encoding: chunked) request with a
+current chunk length larger than \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP,
+that pipeline will not be considered for additional requests, even if it is
+shorter than \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
 .SH DEFAULT
 The default value is 0, which means that the penalization is inactive.
 .SH PROTOCOLS
index cb55ad50067075fe3b1172cfa0e06df53156b4ac..5071d13deee6de06efcec9258d91418984f51610 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
@@ -34,8 +36,8 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE,
 .SH DESCRIPTION
 No function since pipelining was removed in 7.62.0.
 
-Pass a long with a \fBsize\fP in bytes. If a pipelined connection is currently
-processing a request with a Content-Length larger than this
+Pass a long with a \fBsize\fP in bytes. If a transfer in a pipeline is
+currently processing a request with a Content-Length larger than this
 \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP, that pipeline will then not be
 considered for additional requests, even if it is shorter than
 \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
index 61a9674eafc857e691b93704321fe71e50822bb4..fae7b4650985f35c087f25d0100b0314a918eaaf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAXCONNECTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAXCONNECTS \- size of connection cache
index b1fab1426a9652adf29c65827ebc2170be878095..c3f3f21877d59632823df4031ac51ed48cdc13a1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "September 08, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2
@@ -37,8 +39,7 @@ maximum number of concurrent streams for a connections that libcurl should
 support on connections done using HTTP/2.
 
 Valid values range from 1 to 2147483647 (2^31 - 1) and defaults to 100.  The
-value passed here would be honoured based on other system resources
-properties.
+value passed here would be honored based on other system resources properties.
 .SH DEFAULT
 100
 .SH PROTOCOLS
index e1561ed59a188d546eaf5bc090d004e2bb395868..312c962eca8bc20398186b452f2385de31982f14 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host
index 7c1cb1a570e3892cc1d30b971b8656cab062087c..47c84767f6b8eae76c6de4c3b284a4ddb0c07a35 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
@@ -35,8 +37,8 @@ CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH,
 No function since pipelining was removed in 7.62.0.
 
 Pass a long. The set \fBmax\fP number will be used as the maximum amount of
-outstanding requests in an HTTP/1.1 pipelined connection. This option is only
-used for HTTP/1.1 pipelining, not for HTTP/2 multiplexing.
+outstanding requests in an HTTP/1.1 pipeline. This option is only used for
+HTTP/1.1 pipelining, not for HTTP/2 multiplexing.
 
 When this limit is reached, libcurl will use another connection to the same
 host (see \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP), or queue the request until
index da8c36175a4f8ddafa87faa7913b6654d7844581..af8f61c07e9b43386f6642412609cee38109a8a6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
index bb22d7e6bf13fb775875279014640b8539045f2b..372175bfe077c63379b3fe8f935d5b4080922363 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PIPELINING 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING 3 "October 19, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
@@ -87,6 +89,5 @@ Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
 .BR CURLMOPT_PIPELINING_SITE_BL "(3), "
 .BR CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE "(3), "
 .BR CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE "(3), "
-.BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
 .BR CURLMOPT_MAXCONNECTS "(3), "
 .BR CURLMOPT_MAX_HOST_CONNECTIONS "(3), "
index 777a061c6b20454f255aa2b5af09db4cc1e3d066..ce954b7729b142d2f59280e2b757787f6ee4125a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PIPELINING_SERVER_BL 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SERVER_BL 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
index ee48a4fe6a0194097baadf47c48b7cc8dec8b30c..d9e495d3717c81e0bc183f6aeb6bc3aa5cd64588 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PIPELINING_SITE_BL 3 "November 26, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SITE_BL 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
index dfee356e1458d65147d66b59cce9fbb12556d158..b231135082bc4a1cf0d92b2db5f2962cc94101ea 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PUSHDATA 3 "November 04, 2020" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PUSHDATA \- pointer to pass to push callback
index 4de8591b8ecd3907ea552c8699d16fe01f0ff682..05c3082a9e41c872750548797d3e643caa922246 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PUSHFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
@@ -48,9 +50,9 @@ pushes will be denied automatically.
 The callback gets its arguments like this:
 
 \fIparent\fP is the handle of the stream on which this push arrives. The new
-handle has been duphandle()d from the parent, meaning that it has gotten all
-its options inherited. It is then up to the application to alter any options
-if desired.
+handle has been duplicated from the parent, meaning that it has gotten all its
+options inherited. It is then up to the application to alter any options if
+desired.
 
 \fIeasy\fP is a newly created handle that represents this upcoming transfer.
 
@@ -72,8 +74,8 @@ 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 'num' (or NULL). The returned pointer points to a
-"name:value" string that will be freed when this callback returns.
+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
index f595b889f77ba20ce78fd255cc501aaa71a2bbc6..8fd86db355e5fac499d9db569a3f86566254391f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_SOCKETDATA 3 "November 04, 2020" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
index 75df846c6ccc4f7e64139ed2b6cf5d7a3c9552eb..d64d86a0247cef2faac775ab5b6591df0613ce9e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "December 02, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
index cd81e03d575fa172436ee76800c7b838c56a4f1d..9349a162f16bf032caf478d3a9ae48252a9c8541 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_TIMERDATA 3 "November 04, 2020" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
@@ -69,7 +71,7 @@ static int timerfunc(CURLM *multi, long timeout_ms, void *userp)
       id = g_new(guint, 1);
     *id = g_timeout_add(timeout_ms, timeout_cb, id);
   }
-  curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+  current_timer = id;
   return 0;
 }
 
index 77f2f487039a29733d044a043190ec87b587b7d8..4215da01a01432db5aea72151918d7a429e7c65d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_TIMERFUNCTION 3 "December 02, 2021" "libcurl 7.81.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_TIMERFUNCTION \- callback to receive timeout values
@@ -60,10 +62,10 @@ multi handle will be aborted and fail.
 This callback can be used instead of, or in addition to,
 \fIcurl_multi_timeout(3)\fP.
 
-\fBWARNING:\fP even if it feels tempting, avoid calling libcurl directly from
-within the callback itself when the \fBtimeout_ms\fP value is zero, since it
-risks triggering an unpleasant recursive behavior that immediately calls
-another call to the callback with a zero timeout...
+\fBWARNING:\fP do not call libcurl directly from within the callback itself
+when the \fBtimeout_ms\fP value is zero, since it risks triggering an
+unpleasant recursive behavior that immediately calls another call to the
+callback with a zero timeout...
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
@@ -98,7 +100,7 @@ static int timerfunc(CURLM *multi, long timeout_ms, void *userp)
       id = g_new(guint, 1);
     *id = g_timeout_add(timeout_ms, timeout_cb, id);
   }
-  curl_multi_setopt(multi, CURLMOPT_TIMERDATA, id);
+  current_timer = id;
   return 0;
 }
 
index 8893fba85236ba93823ff661af0535297b03e23d..5df93516909e1006dbb4a725ccd71d17d813c11e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket
@@ -40,7 +42,7 @@ sockets, however it should be stressed that the path passed to this function
 should not contain a leading NULL).
 
 On non-supporting platforms, the abstract address will be interpreted as an
-empty string and fail gracefully, generating a run-time error.
+empty string and fail gracefully, generating a runtime error.
 
 This option shares the same semantics as \fICURLOPT_UNIX_SOCKET_PATH(3)\fP in
 which documentation more details can be found. Internally, these two options
index 8af37cc07067cae43f74fbc40320d5c634b7285d..1382bc1d62315450e466b0f3751aac63fc9c24a1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
index 1ebdbd61d52a1330b7ec4678ef3ff927da9ebaec..09f0cc20d39efd916631642c9b7b33494e93e013 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ACCEPT_ENCODING 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPT_ENCODING 3 "September 28, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads
@@ -45,14 +47,12 @@ set ("") to ask for an Accept-Encoding: header to be used that contains all
 built-in supported encodings.
 
 Alternatively, you can specify exactly the encoding or list of encodings you
-want in the response. Four encodings are supported: \fIidentity\fP, meaning
-non-compressed, \fIdeflate\fP which requests the server to compress its
-response using the zlib algorithm, \fIgzip\fP which requests the gzip
+want in the response. The following encodings are supported: \fIidentity\fP,
+meaning non-compressed, \fIdeflate\fP which requests the server to compress
+its response using the zlib algorithm, \fIgzip\fP which requests the gzip
 algorithm, (since curl 7.57.0) \fIbr\fP which is brotli and (since curl
-7.72.0) \fIzstd\fP which is zstd.  Provide them in the string as a
-comma-separated list of accepted encodings, like:
-
-  "br, gzip, deflate".
+7.72.0) \fIzstd\fP which is zstd. Provide them in the string as a
+comma-separated list of accepted encodings, like: \fB"br, gzip, deflate"\fP.
 
 Set \fICURLOPT_ACCEPT_ENCODING(3)\fP to NULL to explicitly disable it, which
 makes libcurl not send an Accept-Encoding: header and not decompress received
index 4309d35b869f2bca522919f80279eedea3ffee74..6b4d5ca62deba939df8b983609c681edacf38074 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ADDRESS_SCOPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ADDRESS_SCOPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses
index 2f66b05c8eac926b8a2d45c178d52f091e3eafbb..e560fe7e7ae5c7e568548325ffa5f7a873731a78 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ALTSVC 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ALTSVC 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ALTSVC \- alt-svc cache file name
@@ -50,6 +52,35 @@ if(curl) {
   curl_easy_perform(curl);
 }
 .fi
+.SH "FILE FORMAT"
+A text based file with one line per alt-svc entry and each line consists of
+nine space-separated fields.
+
+An example line could look like
+
+ h2 www.example 8443 h3 second.example 443 "20190808 06:18:37" 1 0
+
+The fields of that line are:
+
+.IP h2
+ALPN id for the source origin
+.IP www.example
+Host name for the source origin
+.IP 8443
+Port number for the source origin
+.IP h3
+ALPN id for the destination host
+.IP second.example
+Host name for the destination host
+.IP 443
+Port number for the destination host
+.IP 2019*
+Expiration date and time of this entry within double quotes. The date format
+is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
+.IP 1
+Boolean (1 or 0) if "persist" was set for this entry
+.IP 0
+Integer priority value (not currently used)
 .SH AVAILABILITY
 Added in 7.64.1
 .SH RETURN VALUE
index ba06362b6402b57a1356599a4c2d085ef8402512..ce88f91ea9f4a0a104c80e1ae14931cf07b82e45 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ALTSVC_CTRL 3 "November 04, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ALTSVC_CTRL 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ALTSVC_CTRL \- control alt-svc behavior
@@ -74,7 +76,7 @@ HTTPS
 .nf
 CURL *curl = curl_easy_init();
 if(curl) {
-  curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, CURLALTSVC_H1);
+  curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, (long)CURLALTSVC_H1);
   curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt");
   curl_easy_perform(curl);
 }
index 68b87c9537eec8153d5e24e5c9fb0e4a16f2cf25..3724f1620b8c80935618634571c6f7536be57f8b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_APPEND 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_APPEND 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_APPEND \- append to the remote file
index 9e9a8379641d4101aa8b7285d8632c26454c8878..91c0f5530dcc0904413ba234cfb76b1c07cc8920 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_AUTOREFERER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_AUTOREFERER 3 "October 18, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_AUTOREFERER \- automatically update the referer header
@@ -31,9 +33,13 @@ CURLOPT_AUTOREFERER \- automatically update the referer header
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
 .fi
 .SH DESCRIPTION
-Pass a parameter set to 1 to enable this. When enabled, libcurl will
+Pass a long parameter set to 1 to enable this. When enabled, libcurl will
 automatically set the Referer: header field in HTTP requests to the full URL
 where it follows a Location: redirect.
+
+The automatic referer is set to the full previous URL even when redirects are
+done cross-origin or following redirects to insecure protocols. This is
+considered a minor privacy leak by some.
 .SH DEFAULT
 0, disabled
 .SH PROTOCOLS
index 76d54ac22a36939e52576769df90392a32f4c664..7d8cac3f412600eb2ef1b88e081a965771b42546 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_AWS_SIGV4 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_AWS_SIGV4 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_AWS_SIGV4 \- V4 signature
@@ -34,8 +36,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AWS_SIGV4, char *param);
 Provides AWS V4 signature authentication on HTTP(S) header.
 .PP
 Pass a char * that is the collection of specific arguments are used for
-creating outgoing authentication headers.
-The format of the param option is:
+creating outgoing authentication headers.  The format of the \fIparam\fP
+option is:
 .IP provider1[:provider2[:region[:service]]]
 .IP provider1,\ provider2
 The providers arguments are used for generating some authentication parameters
@@ -49,19 +51,19 @@ It is extracted from the host name specified in the URL if omitted.
 .PP
 NOTE: This call set \fICURLOPT_HTTPAUTH(3)\fP to CURLAUTH_AWS_SIGV4.
 Calling \fICURLOPT_HTTPAUTH(3)\fP with CURLAUTH_AWS_SIGV4 is the same
-as calling this with "aws:amz" in parameter.
+as calling this with \fB"aws:amz"\fP in parameter.
 .PP
 Example with "Test:Try", when curl will do the algorithm, it will generate
-"TEST-HMAC-SHA256" for "Algorithm", "x-try-date" and "X-Try-Date" for "date",
-"test4_request" for "request type",
-"SignedHeaders=content-type;host;x-try-date" for "signed headers"
+\fB"TEST-HMAC-SHA256"\đP for "Algorithm", \fB"x-try-date"\fP and
+\fB"X-Try-Date"\fP for "date", \fB"test4_request"\fP for "request type",
+\fB"SignedHeaders=content-type;host;x-try-date"\fP for "signed headers"
 .PP
 If you use just "test", instead of "test:try",
 test will be use for every strings generated
 .SH DEFAULT
 By default, the value of this parameter is NULL.
 Calling \fICURLOPT_HTTPAUTH(3)\fP with CURLAUTH_AWS_SIGV4 is the same
-as calling this with "aws:amz" in parameter.
+as calling this with \fB"aws:amz"\fP in parameter.
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
@@ -91,8 +93,8 @@ Added in 7.75.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH NOTES
-This option overrides the other auth types you might have set in CURL_HTTPAUTH
-which should be highlighted as this makes this auth method special.
-This method cannot be combined with other auth types.
+This option overrides the other auth types you might have set in
+\fICURLOPT_HTTPAUTH(3)\fP which should be highlighted as this makes this auth
+method special.  This method cannot be combined with other auth types.
 .SH "SEE ALSO"
 .BR CURLOPT_HEADEROPT "(3), " CURLOPT_HTTPHEADER "(3), "
index ad15da8b877572377dd51e2b76ebc756ce55de14..3606cb1fb48a38bf981961f380b6c7debc961783 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_BUFFERSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_BUFFERSIZE 3 "August 23, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_BUFFERSIZE \- receive buffer size
@@ -69,3 +71,4 @@ Added in 7.10.  Growing the buffer was added in 7.53.0.
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
 .BR CURLOPT_MAX_RECV_SPEED_LARGE "(3), " CURLOPT_WRITEFUNCTION "(3), "
+.BR CURLOPT_UPLOAD_BUFFERSIZE "(3), "
index ac752c3bab4d51a811cc714770a34ee5af22ae04..5ec7d57578376fd54fd816c0aae41916b92280d7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CAINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
@@ -38,8 +40,8 @@ If \fICURLOPT_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the
 server's certificate, \fICURLOPT_CAINFO(3)\fP need not even indicate an
 accessible file.
 
-This option is by default set to the system path where libcurl's cacert bundle
-is assumed to be stored, as established at build time.
+This option is by default set to the system path where libcurl's CA
+certificate bundle is assumed to be stored, as established at build time.
 
 If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
 (libnsspem.so) needs to be available for this option to work properly.
@@ -60,6 +62,8 @@ store of root certificates (the default for Schannel).
 
 The application does not have to keep the string around after setting this
 option.
+
+The default value for this can be figured out with \fICURLINFO_CAINFO(3)\fP.
 .SH DEFAULT
 Built-in system specific. When curl is built with Secure Transport or
 Schannel, this option is not set by default.
@@ -76,11 +80,13 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-For the SSL engines that do not support certificate files the CURLOPT_CAINFO
-option is ignored. Schannel support added in libcurl 7.60.
+For the SSL engines that do not support certificate files the
+\fICURLOPT_CAINFO(3)\fP option is ignored. Schannel support added in libcurl
+7.60.
 .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.
 .SH "SEE ALSO"
 .BR CURLOPT_CAINFO_BLOB "(3), " CURLOPT_CAPATH "(3), "
 .BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_SSL_VERIFYHOST "(3), "
+.BR CURLINFO_CAINFO "(3), "
index 37a51b4197fa6e367f4e4a5aee367df24f70255d..3b597437494263abe666ed3ba0ae95dd43c500a1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CAINFO_BLOB 3 "November 29, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CAINFO_BLOB \- Certificate Authority (CA) bundle in PEM format
@@ -63,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),
-OpenSSL, Secure Transport and Schannel backends.
+rustls (since 7.82.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.
index 3e588353760d35ba058e515f60bee4db84122812..518696ae9d5f0d0f10ec9dfab1da153acd01ad02 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CAPATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CAPATH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CAPATH \- directory holding CA certificates
@@ -33,15 +35,17 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAPATH, char *capath);
 .SH DESCRIPTION
 Pass a char * to a null-terminated string naming a directory holding multiple
 CA certificates to verify the peer with. If libcurl is built against OpenSSL,
-the certificate directory must be prepared using the openssl c_rehash utility.
+the certificate directory must be prepared using the OpenSSL c_rehash utility.
 This makes sense only when used in combination with the
 \fICURLOPT_SSL_VERIFYPEER(3)\fP option.
 
 The \fICURLOPT_CAPATH(3)\fP function apparently does not work in Windows due
-to some limitation in openssl.
+to some limitation in OpenSSL.
 
 The application does not have to keep the string around after setting this
 option.
+
+The default value for this can be figured out with \fICURLINFO_CAPATH(3)\fP.
 .SH DEFAULT
 A default path detected at build time.
 .SH PROTOCOLS
@@ -70,3 +74,4 @@ CURLE_OUT_OF_MEMORY
 .SH "SEE ALSO"
 .BR CURLOPT_CAINFO "(3), "
 .BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
+.BR CURLINFO_CAPATH "(3), "
index be212d973651bb81f276577382101c704f32dfe9..a633d51a86d3d6e7b5bf90157ae321c1d2c6c26f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CERTINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CERTINFO 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CERTINFO \- request SSL certificate information
index f2ed16786b0e428f44176c56133fdb50af420cdf..acec10a2680a5ea6dc5fc8f7c86dc43d5b3de2fb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
+CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcard match
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -67,14 +69,14 @@ shown above.
 This callback function gets called by libcurl before a part of the stream is
 going to be transferred (if the transfer supports chunks).
 
-The \fItransfer_info\fP pointer will point to a struct curl_fileinfo with
-details about the file that is about to get transferred.
+The \fItransfer_info\fP pointer will point to a \fBcurl_fileinfo\fP struct
+with details about the file that is about to get transferred.
 
 This callback makes sense only when using the \fICURLOPT_WILDCARDMATCH(3)\fP
 option for now.
 
 The target of transfer_info parameter is a "feature depended" structure. For
-the FTP wildcard download, the target is curl_fileinfo structure (see
+the FTP wildcard download, the target is \fBcurl_fileinfo\fP structure (see
 \fIcurl/curl.h\fP).  The parameter \fIptr\fP is a pointer given by
 \fICURLOPT_CHUNK_DATA(3)\fP. The parameter remains contains number of chunks
 remaining per the transfer. If the feature is not available, the parameter has
index 82e722abac946d9dbec6e91787230c7f1abfab4c..e30da8ef693d225ebb2f5061b57597b628f45cae 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CHUNK_DATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_DATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks
index 821791b57a739c92afd205409f300177ca2cf70d..4660d22835a7b68d9eaccd4f1860a911ac7a4947 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CHUNK_END_FUNCTION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_END_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
+CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcard match
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
index 928c8e1b7c2988aefb797468c27c74c30aa82917..eaca56873ed651536e2e3ebdf7fb3b62ce482056 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CLOSESOCKETDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
index 043265c27356a08910ec45c3a5fd6a4105379aaa..b227463e09e1fa76a8b44cffa49265291ec4b008 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CLOSESOCKETFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement
index 279b54af784ebdb36c2161e568e72dc02a55e08e..9d0caba1f452231b81362c73fec802f554f4e5de 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECTTIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
index a80704ef5f76015a3926fda1f3c90c0d98de9f84..59ccfd68d2857e27ba79b10f0facb53552fa2e67 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECTTIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
index 9ebab8bf64c591df8ca91c7b25c4dd89a3377d37..9bbc0f9a8378f93f53f8ffd8d1e662e5414a2540 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECT_ONLY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_ONLY 3 "September 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECT_ONLY \- stop when connected to target server
@@ -41,12 +43,22 @@ useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
 the application can obtain the most recently used socket for special data
 transfers.
 
+Since 7.86.0, this option can be set to '2' and if HTTP or WebSocket are
+used, libcurl will do the request and read all response headers before handing
+over control to the application.
+
 Transfers marked connect only will not reuse any existing connections and
 connections marked connect only will not be allowed to get reused.
+
+If the connect only transfer is done using the multi interface, the particular
+easy handle must remain added to the multi handle for as long as the
+application wants to use it. Once it has been removed with
+\fIcurl_multi_remove_handle(3)\fP, \fIcurl_easy_send(3)\fP and
+\fIcurl_easy_recv(3)\fP do not function.
 .SH DEFAULT
 0
 .SH PROTOCOLS
-HTTP, SMTP, POP3 and IMAP
+HTTP, SMTP, POP3 and IMAP. For WS and WSS starting in 7.86.0.
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
index dfe5c13d371cdd4e63353a82d19c277257cd9a0b..8fd699cdb33164da4b0b306faa7ab2330328303b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECT_TO 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_TO 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECT_TO \- connect to a specific host and port instead of the URL's host and port
index 7897a6ff5d977a5d67a674e1f47ca21345836750..97087738128535e1a0c2d3f77be219dfd4fab28d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
@@ -37,7 +39,7 @@ Pass a pointer to your callback function, which should match the prototype
 shown above.
 
 Applies to non-ASCII platforms. \fIcurl_version_info(3)\fP will return the
-CURL_VERSION_CONV feature bit set if this option is provided.
+\fBCURL_VERSION_CONV\fP feature bit set if this option is provided.
 
 The data to be converted is in a buffer pointed to by the \fIptr\fP parameter.
 The amount of data to convert is indicated by the \fIlength\fP parameter.  The
@@ -53,10 +55,10 @@ the network.
 If you set a callback pointer to NULL, or do not set it at all, the built-in
 libcurl iconv functions will be used.  If HAVE_ICONV was not defined when
 libcurl was built, and no callback has been established, conversion will
-return the CURLE_CONV_REQD error code.
+return the \fBCURLE_CONV_REQD\fP error code.
 
-If HAVE_ICONV is defined, CURL_ICONV_CODESET_OF_HOST must also be defined.
-For example:
+If \fBHAVE_ICONV\fP is defined, \fBCURL_ICONV_CODESET_OF_HOST\fP must also be
+defined. For example:
 
  \&#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
 
@@ -95,7 +97,10 @@ curl_easy_setopt(curl, CURLOPT_CONV_FROM_NETWORK_FUNCTION,
                  my_conv_from_ascii_to_ebcdic);
 .fi
 .SH AVAILABILITY
-Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+Not available since 7.82.0
+
+Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was
+built.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index aa7aad48722fa724f5c2147e488fd34c1434e304..74e78d5c1b0131aa5d92438ac862642bfd5319e6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
@@ -93,7 +95,10 @@ curl_easy_setopt(curl, CURLOPT_CONV_FROM_UTF8_FUNCTION,
                  my_conv_from_utf8_to_ebcdic);
 .fi
 .SH AVAILABILITY
-Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+Not available since 7.82.0
+
+Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was
+built.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index e510cfd6daeab5f7f47187c17c096dc8be3b2d83..d5b2d8edc4ba3d3270f12e2a22de9bd535df583c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
@@ -94,7 +96,10 @@ curl_easy_setopt(curl, CURLOPT_CONV_TO_NETWORK_FUNCTION,
                  my_conv_from_ebcdic_to_ascii);
 .fi
 .SH AVAILABILITY
-Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built.
+Not available since 7.82.0
+
+Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was
+built.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 72803d0d8f2abf418f101f1d44a9afef4b54ef69..6ec3c63a4b15886e5c436411ef273e70527d1d23 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIE \- HTTP Cookie header
index 8e9496f59b4b87a39f9c861c9de2959b8578ad75..412a8a810016a49d2a133d3782f94d1ce9b79eee 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIEFILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEFILE 3 "October 06, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIEFILE \- file name to read cookies from
@@ -39,10 +41,9 @@ headers (Set-Cookie style) dumped to a file.
 It also enables the cookie engine, making libcurl parse and send cookies on
 subsequent requests with this handle.
 
-Given an empty or non-existing file or by passing the empty string ("") to
-this option, you can enable the cookie engine without reading any initial
-cookies. If you tell libcurl the file name is "-" (just a single minus sign),
-libcurl will instead read from stdin.
+By passing the empty string ("") to this option, you enable the cookie engine
+without reading any initial cookies. If you tell libcurl the file name is "-"
+(just a single minus sign), libcurl will instead read from stdin.
 
 This option only \fBreads\fP cookies. To make libcurl write cookies to file,
 see \fICURLOPT_COOKIEJAR(3)\fP.
@@ -60,6 +61,11 @@ option.
 
 Setting this option to NULL will (since 7.77.0) explicitly disable the cookie
 engine and clear the list of files to read cookies from.
+.SH SECURITY
+This document previously mentioned how specifying a non-existing file can also
+enable the cookie engine. While true, we strongly advice against using that
+method as it is too hard to be sure what files will stay that way in the long
+run.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
@@ -79,9 +85,8 @@ if(curl) {
 }
 .fi
 .SH "Cookie file format"
-The cookie file format and general cookie concepts in curl are described in
-the HTTP-COOKIES.md file, also hosted online here:
-https://curl.se/docs/http-cookies.html
+The cookie file format and general cookie concepts in curl are described
+online here: https://curl.se/docs/http-cookies.html
 .SH AVAILABILITY
 As long as HTTP is supported
 .SH RETURN VALUE
index 4ebcaddff9bef7df3a60ec63de082a3cff64da51..eaa223093a960400086c9ff31902289e1e539eb7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIEJAR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEJAR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIEJAR \- file name to store cookies to
index d2c6422a8d3f725233677414c3898b8adcbce699..e162170c888edc7764ccaf9f296ffc1da4c116cf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIELIST 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIELIST 3 "October 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
@@ -106,17 +108,16 @@ curl_easy_perform(curl);  /* cookies imported from cookies.txt */
 curl_easy_cleanup(curl);  /* cookies exported to cookies.txt */
 .fi
 .SH "Cookie file format"
-The cookie file format and general cookie concepts in curl are described in
-the HTTP-COOKIES.md file, also hosted online here:
-https://curl.se/docs/http-cookies.html
+The cookie file format and general cookie concepts in curl are described
+online here: https://curl.se/docs/http-cookies.html
 .SH AVAILABILITY
-ALL was added in 7.14.1
+\fBALL\fP was added in 7.14.1
 
-SESS was added in 7.15.4
+\fBSESS\fP was added in 7.15.4
 
-FLUSH was added in 7.17.1
+\fBFLUSH\fP was added in 7.17.1
 
-RELOAD was added in 7.39.0
+\fBRELOAD\fP was added in 7.39.0
 .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.
index e8a7f9abfcc2f8e4e1dcb566e7d8bb5e9a72c30e..bb2a2f09cd1405004bdca5f8e27ceb7fbf53751e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIESESSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIESESSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIESESSION \- start a new cookie session
index 625d70f1aba153fde8751e84467cf2d4b2d34c02..473591b631570e35f01c8d17dd635d3d7fb19b6c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COPYPOSTFIELDS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_COPYPOSTFIELDS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
index 6df1da8e5dccd71101aabb86bb835922d8d04287..a1b921f0803cd924849689093f7de05636d3ab86 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CRLF 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLF 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CRLF \- CRLF conversion
index 66420f79ea903661c2a784aa7a90caa652978cda..a986e86d91ebed46376cfdfcc159168ba57800b0 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CRLFILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CRLFILE \- Certificate Revocation List file
index 20cb28ce104a516affa3cbad4caa96ef8c9a8e11..fc8a9cd21741a1275c70c0f7ff4287d7bef8e40c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CURLU 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CURLU 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_CURLU \- URL in CURLU * format
+CURLOPT_CURLU \- URL in URL handle format
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -32,7 +34,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CURLU, void *pointer);
 .fi
 .SH DESCRIPTION
 Pass in a pointer to the \fIURL\fP to work with. The parameter should be a
-CURLU *. Setting \fICURLOPT_CURLU(3)\fP will explicitly override
+\fICURLU *\fP. Setting \fICURLOPT_CURLU(3)\fP will explicitly override
 \fICURLOPT_URL(3)\fP.
 
 \fICURLOPT_URL(3)\fP or \fICURLOPT_CURLU(3)\fP \fBmust\fP be set before a
index 60f2c74a2b243e73bd1724c0ef9bf830b17a19fc..2bc320411f474dd8475396ee6a71d196df958921 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CUSTOMREQUEST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_CUSTOMREQUEST 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CUSTOMREQUEST \- custom request method
@@ -73,16 +75,16 @@ For example:
 When you tell libcurl to use a custom request it will behave like a LIST or
 RETR command was sent where it expects data to be returned by the server. As
 such \fICURLOPT_NOBODY(3)\fP should be used when specifying commands such as
-DELE and NOOP for example.
+\fBDELE\fP and \fBNOOP\fP for example.
 .IP SMTP
-Instead of a HELP or VRFY when issuing SMTP based requests.
+Instead of a \fBHELP\fP or \fBVRFY\fP when issuing SMTP based requests.
 
 For example:
 
-Normally a multiline response is returned which can be used, in conjunction
+Normally a multi line response is returned which can be used, in conjunction
 with \fICURLOPT_MAIL_RCPT(3)\fP, to specify an EXPN request. If the
 \fICURLOPT_NOBODY(3)\fP option is specified then the request can be used to
-issue NOOP and RSET commands.
+issue \fBNOOP\fP and \fBRSET\fP commands.
 
 The application does not have to keep the string around after setting this
 option.
index 7a9e6dd291e9718c8c71d23e572c809e6874c822..895f240bd13a83de87e1d56ed65de25ff8b73153 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DEBUGDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DEBUGDATA \- pointer passed to the debug callback
index 4eca3766abfa81d31b244853f84145ac31bb7571..6ed52cf1d14101705f5fc5b1dec472be241986c2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DEBUGFUNCTION 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DEBUGFUNCTION \- debug callback
@@ -60,7 +62,7 @@ NOT be null-terminated, but will be exactly of the \fIsize\fP as told by the
 
 The \fIuserptr\fP argument is the pointer set with \fICURLOPT_DEBUGDATA(3)\fP.
 
-Available curl_infotype values:
+Available \fBcurl_infotype\fP values:
 .IP CURLINFO_TEXT
 The data is informational text.
 .IP CURLINFO_HEADER_IN
index 0802421c0965fa0758592b3f369c1ea4e8ad2964..5027a0192239b95503e150ca6484ce3edcedcad7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DEFAULT_PROTOCOL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
@@ -42,11 +44,11 @@ dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3,
 pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
 
 An unknown or unsupported protocol causes error
-\fICURLE_UNSUPPORTED_PROTOCOL\fP when libcurl parses a schemeless URL. Parsing
-happens when \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP is
-called. The protocols supported by libcurl will vary depending on how it was
-built. Use \fIcurl_version_info(3)\fP if you need a list of protocol names
-supported by the build of libcurl that you are using.
+\fICURLE_UNSUPPORTED_PROTOCOL\fP when libcurl parses a URL without a
+scheme. Parsing happens when \fIcurl_easy_perform(3)\fP or
+\fIcurl_multi_perform(3)\fP is called. The protocols supported by libcurl will
+vary depending on how it was built. Use \fIcurl_version_info(3)\fP if you need
+a list of protocol names supported by the build of libcurl that you are using.
 
 This option does not change the default proxy protocol (http).
 
index d8e524ede5dd09a0ee8cd6a41efcc465d2381218..55355fc07f09b885b0ab2adf957b527b2dd2e980 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DIRLISTONLY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DIRLISTONLY 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
index 3746d5bab6148b96af418e0359ffa5a1a5d6d4de..a0e8453e908c5b657cd3ef1806fb0cdde710c5c8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DISALLOW_USERNAME_IN_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the url
+CURLOPT_DISALLOW_USERNAME_IN_URL \- disallow specifying username in the URL
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
index 31da9f7a1a5e14418191c136657a8cb414e6ce4f..ecc909830a3ffb1e984197c499348c3ab0862e00 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries
index f61b25d1f8a1226050502683e2ac8c4665205266..96a81e69c6e9d4098d9f63e53c31931d786f7cf9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_INTERFACE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_INTERFACE 3 "September 05, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_INTERFACE \- interface to speak DNS over
@@ -41,6 +43,7 @@ option.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
+All protocols except file:// - protocols that resolve host names.
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
index 085ef8c2cbf785711ea3fe7df5b511f0a3ef6b83..3180c8e05f0df2039e34519d46e546e076837d53 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_LOCAL_IP4 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP4 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
index 04f58c5d30f6906e3567184b4291a5c98fe9c79d..a03a0849c2cd0f21c380ab8136050d4481f96650 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_LOCAL_IP6 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP6 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
index 4b08526b0297ee1825582e9e2cff66ffec0b232b..7a95c76f9ddd670300249ecea528ddba3672e20c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_SERVERS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SERVERS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_SERVERS \- DNS servers to use
index 7dedd9c50541c7b116a468749ea1503bb3204440..605f49b9dc956e500a4f5512a8740d7cb87d4a18 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_SHUFFLE_ADDRESSES \- shuffle IP addresses for hostname
index 20b1dd97e3369ab0930756c194bfab3fe28e25dc..5ddf1e5d84cb8f7a8a1961bba6992ebfa9563f11 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_USE_GLOBAL_CACHE \- global DNS cache
@@ -58,7 +60,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Deprecated since 7.62.0. Has no function.
+Deprecated since 7.11.1. Function removed in 7.62.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 93880dde70f90b6755ade5af1cb0e6a99bc81262..c9e1da42a9f6f3153b0148eb8c7e327d5d1262fe 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_SSL_VERIFYHOST 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DOH_SSL_VERIFYHOST \- verify the host name in the DoH SSL certificate
@@ -47,7 +49,8 @@ Subject Alternate Name field in the certificate matches the host name in the
 DoH URL to which you told Curl to connect.
 
 When the \fIverify\fP value is set to 1L it is treated the same as 2L. However
-for consistency with the other VERIFYHOST options we suggest use 2 and not 1.
+for consistency with the other \fIVERIFYHOST\fP options we suggest use 2 and
+not 1.
 
 When the \fIverify\fP value is set to 0L, the connection succeeds regardless of
 the names used in the certificate. Use that ability with caution!
index 458a4641ccd513eb45b17149fa0985b2a9ed978e..949c4868027a425ec80ebe83c91130b681bf336e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DOH_SSL_VERIFYPEER \- verify the DoH SSL certificate
index 97a8ce2d62a2edf01584c9aa279d061c1c63f3a0..bb8bebcfb00adb3f4f22a3b637e731b330e3113a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DOH_SSL_VERIFYSTATUS \- verify the DoH SSL certificate's status
index d43e4c5469b1f92e77899885cbb07215ca95a750..43cfd49aa439788716e77a9aef67d87c70ae42e5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DOH_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_DOH_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DOH_URL \- provide the DNS-over-HTTPS URL
@@ -34,7 +36,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DOH_URL, char *URL);
 Pass in a pointer to a \fIURL\fP for the DoH server to use for name
 resolving. The parameter should be a char * to a null-terminated string which
 must be URL-encoded in the following format: "https://host:port/path". It MUST
-specify a HTTPS URL.
+specify an HTTPS URL.
 
 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
@@ -56,6 +58,12 @@ can be controlled separately via \fICURLOPT_DOH_SSL_VERIFYHOST(3)\fP and
 \fICURLOPT_DOH_SSL_VERIFYPEER(3)\fP.
 
 A set \fICURLOPT_OPENSOCKETFUNCTION(3)\fP callback is not inherited.
+.SH "KNOWN BUGS"
+Even when DoH is set to be used with this option, there are still some name
+resolves that are performed without it, using the default name resolver
+mechanism. This includes name resolves done for \fICURLOPT_INTERFACE(3)\fP,
+\fICURLOPT_FTPPORT(3)\fP, a proxy type set to \fBCURLPROXY_SOCKS4\fP or
+\fBCURLPROXY_SOCKS5\fP and probably some more.
 .SH DEFAULT
 NULL - there is no default DoH URL. If this option is not set, libcurl will use
 the default name resolver.
@@ -76,8 +84,8 @@ Added in 7.62.0
 Returns CURLE_OK on success or CURLE_OUT_OF_MEMORY if there was insufficient
 heap space.
 
-Note that \fIcurl_easy_setopt(3)\fP will not actually parse the given string so
-given a bad DoH URL, curl will not detect a problem until it tries to resolve
-a name with it.
+Note that \fIcurl_easy_setopt(3)\fP will not immediately parse the given
+string so when given a bad DoH URL, libcurl might not detect the problem until
+it later tries to resolve a name with it.
 .SH "SEE ALSO"
 .BR CURLOPT_VERBOSE "(3), " CURLOPT_RESOLVE "(3), "
index 79ac8ba702f051c3117edff984c71d5e79d5c7ff..39b72f0e3c0a9975af49d8e97568fecfd9a7789e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_EGDSOCKET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_EGDSOCKET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_EGDSOCKET \- EGD socket path
@@ -31,6 +33,8 @@ CURLOPT_EGDSOCKET \- EGD socket path
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_EGDSOCKET, char *path);
 .fi
 .SH DESCRIPTION
+Deprecated option. It serves no purpose anymore.
+
 Pass a char * to the null-terminated path name to the Entropy Gathering Daemon
 socket. It will be used to seed the random engine for TLS.
 
@@ -51,7 +55,10 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-If built with TLS enabled. Only the OpenSSL backend will use this.
+If built with TLS enabled. Only the OpenSSL backend will use this, and only
+with OpenSSL versions before 1.1.0.
+
+This option was deprecated in 7.84.0.
 .SH RETURN VALUE
 Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
index 432d0e052946a58ec0cf3edc6fd4355596aab58a..0153300d558570d0e0ceb097818e5a63095df1f8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ERRORBUFFER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ERRORBUFFER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ERRORBUFFER \- error buffer for error messages
index f5468b871d0a995b6ed92e17cd122b3da7da10ef..30aa3e71dc5182942d39f596835f8421cf8f299f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
index 8bf837058e1cde3c5ce1de2352578408e4a3febb..197fb85ccb8534b1e2bb8f68dd38a24b328b77dc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FAILONERROR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FAILONERROR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
index 194c8b21c80230b61e168f71e3455fd6eb8dbde3..f01d0630915a9f1013d2983c62a5dfe1d7de06f0 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FILETIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FILETIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FILETIME \- get the modification time of the remote resource
@@ -39,7 +41,7 @@ argument can be used after a transfer to extract the received time (if any).
 .SH DEFAULT
 0
 .SH PROTOCOLS
-HTTP, FTP, SFTP, FILE
+HTTP(S), FTP(S), SFTP, FILE, SMB(S)
 .SH EXAMPLE
 .nf
 curl = curl_easy_init();
index ac0d09ef0c0f8c907e5bea9455376adc3169eabb..75a42d6c7e6a63bbe0e25357ba249feed7364dfa 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FNMATCH_DATA 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_DATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FNMATCH_DATA \- pointer passed to the fnmatch callback
index 29190c225d4c29acad3a6bbc1a61d4a8181d0a9a..53cbf56ec2dff03df7342fdb65fa353bf1de87a1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FNMATCH_FUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FNMATCH_FUNCTION \- wildcard match callback
index e44f93d12c37a0ec14ace6125f7b0232bb32515a..2e24d714f7f67f0997e1d8a70622f64facb46531 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FOLLOWLOCATION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FOLLOWLOCATION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
index 2b4bdc2837a912babed6a639c5cb9b4a7d7bacdc..4fb344b6beff6805b6fa155e2be9041532944698 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FORBID_REUSE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FORBID_REUSE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FORBID_REUSE \- make connection get closed at once after use
index 3d30fea9ffc0de01336ba8b14057c5f9eb3ae1e1..d203844c67e8b19f652762024b3c3f76b9ef5ec6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FRESH_CONNECT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FRESH_CONNECT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FRESH_CONNECT \- force a new connection to be used
index 55ff84cc9e6944a53aa069f88f5f5a736fab223b..250e22056e3d8c977549a5f339e4904bbd7db99a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTPPORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPPORT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTPPORT \- make FTP transfer active
@@ -46,8 +48,8 @@ a '-' to specify a port range.  If the port specified is 0, the operating
 system will pick a free port.  If a range is provided and all ports in the
 range are not available, libcurl will report CURLE_FTP_PORT_FAILED for the
 handle.  Invalid port/range settings are ignored.  IPv6 addresses followed by
-a port or portrange have to be in brackets.  IPv6 addresses without port/range
-specifier can be in brackets.
+a port or port range have to be in brackets.  IPv6 addresses without
+port/range specifier can be in brackets.
 
 Examples with specified ports:
 
index 19e8258e0ded9b6ec778f9962164c4b031d65b6c..e1c1fe365246ecfab2d0864a76b8902fd7092530 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTPSSLAUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPSSLAUTH 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTPSSLAUTH \- order in which to attempt TLS vs SSL
@@ -53,7 +55,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt");
   curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_TRY);
   /* funny server, ask for SSL before TLS */
-  curl_easy_setopt(curl, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_SSL);
+  curl_easy_setopt(curl, CURLOPT_FTPSSLAUTH, (long)CURLFTPAUTH_SSL);
   ret = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
 }
index e6f620fdf34663235919e8454cf6d20858f846f8..b0bf6d8ca5d3f66761a2b16e5946399ea07d482d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_ACCOUNT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ACCOUNT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_ACCOUNT \- account info for FTP
index 3f8adf03c0ea80d1a45f52427f3726a77d74e0e2..7b17bdf471433a544179bf08ad4643c1ffa9c9b3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "July 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
@@ -62,4 +64,4 @@ Added in 7.15.5
 Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
 .SH "SEE ALSO"
-.BR CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_FTP_RESPONSE_TIMEOUT "(3), "
+.BR CURLOPT_FTP_SKIP_PASV_IP "(3), " CURLOPT_SERVER_RESPONSE_TIMEOUT "(3), "
index ba687621a28ddd56ec407e3f5fdb10fdad3186e5..d3957e816240c8bc7379a38ba4424af538265c89 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2014, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2014, 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
+CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing directories for FTP and SFTP
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -50,11 +52,11 @@ of the same name as the directory to create already exists or lack of
 permissions prevents creation.
 
 Setting \fIcreate\fP to \fICURLFTP_CREATE_DIR_RETRY\fP (2), tells libcurl to
-retry the CWD command again if the subsequent MKD command fails. This is
+retry the CWD command again if the subsequent \fBMKD\fP command fails. This is
 especially useful if you are doing many simultaneous connections against the
 same server and they all have this option enabled, as then CWD may first fail
-but then another connection does MKD before this connection and thus MKD fails
-but trying CWD works!
+but then another connection does \fBMKD\fP before this connection and thus
+\fBMKD\fP fails but trying CWD works!
 .SH DEFAULT
 CURLFTP_CREATE_DIR_NONE (0)
 .SH PROTOCOLS
@@ -65,7 +67,7 @@ CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/non-existing/new.txt");
   curl_easy_setopt(curl, CURLOPT_FTP_CREATE_MISSING_DIRS,
-                         CURLFTP_CREATE_DIR_RETRY);
+                   (long)CURLFTP_CREATE_DIR_RETRY);
 
   ret = curl_easy_perform(curl);
 
index 12203673755490333824a875f356dfcf2c49cc0e..15d6dcbb7f36694cb9c66e26c99506fa38864643 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_FILEMETHOD 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_FILEMETHOD 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
@@ -59,7 +61,7 @@ CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/1/2/3/4/new.txt");
   curl_easy_setopt(curl, CURLOPT_FTP_FILEMETHOD,
-                         CURLFTPMETHOD_SINGLECWD);
+                   (long)CURLFTPMETHOD_SINGLECWD);
 
   ret = curl_easy_perform(curl);
 
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
deleted file mode 100644 (file)
index e00ca8c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-.\" **************************************************************************
-.\" *                                  _   _ ____  _
-.\" *  Project                     ___| | | |  _ \| |
-.\" *                             / __| | | | |_) | |
-.\" *                            | (__| |_| |  _ <| |___
-.\" *                             \___|\___/|_| \_\_____|
-.\" *
-.\" * Copyright (C) 1998 - 2021, 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.
-.\" *
-.\" **************************************************************************
-.\"
-.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
-
-.SH NAME
-CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
-.SH SYNOPSIS
-.nf
-#include <curl/curl.h>
-
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_RESPONSE_TIMEOUT,
-                          long timeout);
-.fi
-.SH DESCRIPTION
-Pass a long.  Causes libcurl to set a \fItimeout\fP period (in seconds) on the
-amount of time that the server is allowed to take in order to send a response
-message for a command before the session is considered dead.  While libcurl is
-waiting for a response, this value overrides \fICURLOPT_TIMEOUT(3)\fP. It is
-recommended that if used in conjunction with \fICURLOPT_TIMEOUT(3)\fP, you set
-\fICURLOPT_FTP_RESPONSE_TIMEOUT(3)\fP to a value smaller than
-\fICURLOPT_TIMEOUT(3)\fP.
-.SH DEFAULT
-None
-.SH PROTOCOLS
-FTP
-.SH EXAMPLE
-.nf
-CURL *curl = curl_easy_init();
-if(curl) {
-  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt");
-  /* wait no more than 23 seconds */
-  curl_easy_setopt(curl, CURLOPT_FTP_RESPONSE_TIMEOUT, 23L);
-  ret = curl_easy_perform(curl);
-
-  curl_easy_cleanup(curl);
-}
-.fi
-.SH AVAILABILITY
-Added in 7.10.8
-.SH RETURN VALUE
-Returns CURLE_OK if FTP is supported, and CURLE_UNKNOWN_OPTION if not. Returns
-CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
-converted to milliseconds is too large.
-.SH "SEE ALSO"
-.BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), "
-.BR CURLOPT_LOW_SPEED_LIMIT "(3), "
index 315a63694d62a93aac8060ff70b1b7b945f522be..4e97f74666e8fae81d1e8344481439217a100815 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_SKIP_PASV_IP 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
index 5134a0bd00d9c6cca205d15f41c799fffb31a951..ac86b8ea450b10f3059fe6d45f9354c6613d1e87 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_SSL_CCC 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SSL_CCC 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
@@ -54,7 +56,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/file.txt");
   curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_CONTROL);
   /* go back to clear-text FTP after authenticating */
-  curl_easy_setopt(curl, CURLOPT_FTP_SSL_CCC, CURLFTPSSL_CCC_ACTIVE);
+  curl_easy_setopt(curl, CURLOPT_FTP_SSL_CCC, (long)CURLFTPSSL_CCC_ACTIVE);
   ret = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
 }
index d426e623af312d1b3b5e2f1f5a3f51e7aac3099d..1daa363c60595455cf3b739fa490346ef76cf009 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_USE_EPRT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPRT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_USE_EPRT \- use EPRT for FTP
index 40297a149e8d55149f6b87ab1e3a85e3f008654f..4344e5f2fa40e18fc35cd2c9b98bf6e97e55f97e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_USE_EPSV 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPSV 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_USE_EPSV \- use EPSV for FTP
index 20275ef9889e41fa5c73e3feececc67241be5bf8..d7accb02d72addcd1295136f87d9b67fa3d624ad 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_USE_PRET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_PRET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_USE_PRET \- use PRET for FTP
index 0af78e9ea4765783b180db32aaf7c02fd2459a07..08c5e6f3d9c912dda46f2d682a0438dd434e2f62 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_GSSAPI_DELEGATION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_GSSAPI_DELEGATION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_GSSAPI_DELEGATION \- allowed GSS-API delegation
@@ -36,7 +38,7 @@ allow unconditional GSSAPI credential delegation. The delegation is disabled
 by default since 7.21.7.  Set the parameter to
 \fBCURLGSSAPI_DELEGATION_POLICY_FLAG\fP to delegate only if the OK-AS-DELEGATE
 flag is set in the service ticket in case this feature is supported by the
-GSS-API implementation and the definition of GSS_C_DELEG_POLICY_FLAG was
+GSS-API implementation and the definition of \fIGSS_C_DELEG_POLICY_FLAG\fP was
 available at compile-time.
 .SH DEFAULT
 CURLGSSAPI_DELEGATION_NONE
@@ -50,7 +52,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
   /* delegate if okayed by policy */
   curl_easy_setopt(curl, CURLOPT_GSSAPI_DELEGATION,
-                         CURLGSSAPI_DELEGATION_POLICY_FLAG);
+                   (long)CURLGSSAPI_DELEGATION_POLICY_FLAG);
   ret = curl_easy_perform(curl);
 }
 .fi
index a502a062cf8a4a16a381aa2bdb8c9ffa75102ae8..d66050d63438f04b39d1de64c5215bbe67a29df3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
+CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for IPv6 for happy eyeballs
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
index 94a32965146a5060362abe733fc637473b7f66f8..12104689202e7efedb7520a0b201654db051e090 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HAPROXYPROTOCOL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HAPROXYPROTOCOL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol v1 header
index 330395128cc74e7710756c0173ffa84e677f1820..4212c1dcb85ebc091944b799713e877e847d22d5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADER \- pass headers to the data stream
index fe459306988592ab176dfe220e5be03da4632b3b..9ffa84c3c1871dbe8858a9cbf8371c2a485fc10b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADERDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADERDATA \- pointer to pass to header callback
index 62d6740def8f62a84b2c5b70103438cacf194ac6..989d7825b9211476d18351fefe60b392301e2857 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADERFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADERFUNCTION \- callback that receives header data
@@ -118,4 +120,5 @@ Always
 .SH RETURN VALUE
 Returns CURLE_OK
 .SH "SEE ALSO"
+.BR curl_easy_header "(3), "
 .BR CURLOPT_HEADERDATA "(3), " CURLOPT_WRITEFUNCTION "(3), "
index e472bf8cef1e737d460a87c1912b569a000fccc3..4d68a1d332eeb41958d7f236aca3073f746752be 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADEROPT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADEROPT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADEROPT \- send HTTP headers to both proxy and host or separately
index 202db91e84bd590ce11212e78b9fa491aa4d27c9..49b5340f30fb8ef280b8d74c000fccd4923fbd60 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HSTS 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HSTS \- HSTS cache file name
@@ -49,8 +51,8 @@ physical line. Each line in the file has the following format:
 [host] [stamp]
 
 [host] is the domain name for the entry and the name is dot-prefixed if it is
-a includeSubDomain entry (if the entry is valid for all subdmains to the name
-as well or only for the exact name).
+an entry valid for all subdomains to the name as well or only for the exact
+name.
 
 [stamp] is the time (in UTC) when the entry expires and it uses the format
 \&"YYYYMMDD HH:MM:SS".
index b57e1674500a7e08ffbe13de6778ac4e968a2f78..507f6f63cf0aa4de669ee9c63e2c646bdc8fd39e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HSTSREADDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSREADDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HSTSREADDATA \- pointer passed to the HSTS read callback
index 9fbb567daa2c35bf423653f3fda04dcfed1eecb3..c6c7590d76221b58fdbe97ff6f42189ba8f2ff15 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HSTSREADFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSREADFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
@@ -28,6 +30,13 @@ CURLOPT_HSTSREADFUNCTION \- read callback for HSTS hosts
 .nf
 #include <curl/curl.h>
 
+struct curl_hstsentry {
+  char *name;
+  size_t namelen;
+  unsigned int includeSubDomains:1;
+  char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */
+};
+
 CURLSTScode hstsread(CURL *easy, struct curl_hstsentry *sts, void *userp);
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSREADFUNCTION, hstsread);
@@ -42,10 +51,10 @@ Set the \fIuserp\fP argument with the \fICURLOPT_HSTSREADDATA(3)\fP option or
 it will be NULL.
 
 When this callback is invoked, the \fIsts\fP pointer points to a populated
-struct: Copy the host name to 'name' (no longer than 'namelen' bytes). Make it
-null-terminated. Set 'includeSubDomains' to TRUE or FALSE. Set 'expire' to a
-date stamp or a zero length string for *forever* (wrong date stamp format
-might cause the name to not get accepted)
+struct: Copy the host name to \fIname\fP (no longer than \fInamelen\fP
+bytes). Make it null-terminated. Set \fIincludeSubDomains\fP to TRUE or
+FALSE. Set \fIexpire\fP to a date stamp or a zero length string for *forever*
+(wrong date stamp format might cause the name to not get accepted)
 
 The callback should return \fICURLSTS_OK\fP if it returns a name and is
 prepared to be called again (for another host) or \fICURLSTS_DONE\fP if it has
index 295984b1d5a42c5873fd1593ef4f45869220612d..89d41c3b718db3adc8603191c817b541424b4063 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HSTSWRITEDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSWRITEDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HSTSWRITEDATA \- pointer passed to the HSTS write callback
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HSTSWRITEDATA, void *pointer);
 .SH DESCRIPTION
 Data \fIpointer\fP to pass to the HSTS write function. If you use the
 \fICURLOPT_HSTSWRITEFUNCTION(3)\fP option, this is the pointer you will get as
-input in the 4th argument to the callback.
+input in the fourth argument to the callback.
 
 This option does not enable HSTS, you need to use \fICURLOPT_HSTS_CTRL(3)\fP to
 do that.
index 677af18990ca59cba6f7b592ac2f1bde39bcd267..1e438597c7413c4c60b1bf9d8fa9c2e217ee615f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HSTSWRITEFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTSWRITEFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
@@ -28,6 +30,18 @@ CURLOPT_HSTSWRITEFUNCTION \- write callback for HSTS hosts
 .nf
 #include <curl/curl.h>
 
+struct curl_hstsentry {
+  char *name;
+  size_t namelen;
+  unsigned int includeSubDomains:1;
+  char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */
+};
+
+struct curl_index {
+  size_t index; /* the provided entry's "index" or count */
+  size_t total; /* total number of entries to save */
+};
+
 CURLSTScode hstswrite(CURL *easy, struct curl_hstsentry *sts,
                       struct curl_index *count, void *userp);
 
@@ -44,10 +58,10 @@ Set the \fIuserp\fP argument with the \fICURLOPT_HSTSWRITEDATA(3)\fP option or
 it will be NULL.
 
 When the callback is invoked, the \fIsts\fP pointer points to a populated
-struct: Read the host name to 'name' (it is 'namelen' bytes long and null
-terminated. The 'includeSubDomains' field is non-zero if the entry matches
-subdomains. The 'expire' string is a date stamp null-terminated string using
-the syntax YYYYMMDD HH:MM:SS.
+struct: Read the host name to 'name' (it is \fInamelen\fP bytes long and null
+terminated. The \fIincludeSubDomains\fP field is non-zero if the entry matches
+subdomains. The \fIexpire\fP string is a date stamp null-terminated string
+using the syntax YYYYMMDD HH:MM:SS.
 
 The callback should return \fICURLSTS_OK\fP if it succeeded and is prepared to
 be called again (for another host) or \fICURLSTS_DONE\fP if there's nothing
index 594c454c59fce1618a75526a9236435ac0ce4d48..3bf4e4be9b9672cf5adb9a9a83a74def0283d0d0 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2020, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022, 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HSTS_CTRL 3 "September 06, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HSTS_CTRL 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HSTS_CTRL \- control HSTS behavior
@@ -56,7 +58,7 @@ HTTPS and HTTP
 .nf
 CURL *curl = curl_easy_init();
 if(curl) {
-  curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, CURLHSTS_ENABLE);
+  curl_easy_setopt(curl, CURLOPT_HSTS_CTRL, (long)CURLHSTS_ENABLE);
   curl_easy_perform(curl);
 }
 .fi
index 37f61c2c4b69d6a69fb160c226b097a297d3bac6..924c3535b93f9a088b3015538bd60b4aba6566d6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2019, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP09_ALLOWED 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP09_ALLOWED 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP09_ALLOWED \- allow HTTP/0.9 response
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP09_ALLOWED, long allowed);
 .SH DESCRIPTION
 Pass the long argument \fIallowed\fP set to 1L to allow HTTP/0.9 responses.
 
-A HTTP/0.9 response is a server response entirely without headers and only a
+An HTTP/0.9 response is a server response entirely without headers and only a
 body. You can connect to lots of random TCP services and still get a response
 that curl might consider to be HTTP/0.9!
 .SH DEFAULT
index 38754d372bf1204509ab69c92b51d13151bc99df..ea95976c66aaa502825421e5333b5849e1cd5664 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP200ALIASES 3 "November 01, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP200ALIASES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP200ALIASES \- alternative matches for HTTP 200 OK
index 333e79b780775b4029dd3885fa909b23e611f04d..c9670b2a491630c7cc0f21859ba517b260d10c4d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPAUTH 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPAUTH 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPAUTH \- HTTP server authentication methods to try
@@ -77,11 +79,11 @@ option to work, or build libcurl on Windows with SSPI support.
 .IP CURLAUTH_NTLM_WB
 NTLM delegating to winbind helper. Authentication is performed by a separate
 binary application that is executed when needed. The name of the application
-is specified at compile time but is typically /usr/bin/ntlm_auth
+is specified at compile time but is typically \fB/usr/bin/ntlm_auth\fP.
 
 Note that libcurl will fork when necessary to run the winbind application and
-kill it when complete, calling waitpid() to await its exit when done. On POSIX
-operating systems, killing the process will cause a SIGCHLD signal to be
+kill it when complete, calling \fBwaitpid()\fP to await its exit when done. On
+POSIX operating systems, killing the process will cause a SIGCHLD signal to be
 raised (regardless of whether \fICURLOPT_NOSIGNAL(3)\fP is set), which must be
 handled intelligently by the application. In particular, the application must
 not unconditionally call wait() in its SIGCHLD signal handler to avoid being
@@ -97,7 +99,7 @@ libcurl pick any it finds suitable. libcurl will automatically select the one
 it finds most secure.
 .IP CURLAUTH_ONLY
 This is a meta symbol. OR this value together with a single specific auth
-value to force libcurl to probe for un-restricted auth and if not, only that
+value to force libcurl to probe for unrestricted auth and if not, only that
 single auth algorithm is acceptable.
 .IP CURLAUTH_AWS_SIGV4
 provides AWS V4 signature authentication on HTTPS header
@@ -113,7 +115,7 @@ if(curl) {
   CURLcode ret;
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
   /* allow whatever auth the server speaks */
-  curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
+  curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
   curl_easy_setopt(curl, CURLOPT_USERPWD, "james:bond");
   ret = curl_easy_perform(curl);
 }
index dffdb25f83d9a5b7429a1277736d563966d08472..6aee9de687ce796c864ea815f148444b37719d56 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPGET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPGET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPGET \- ask for an HTTP GET request
index ac3a0aba34ff2ebdfa22c7e4dd4de4bffe02117a..a7e4913deb9443d2013b16efcc983a9c4d4f88c3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPHEADER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPHEADER 3 "September 28, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPHEADER \- set of HTTP headers
@@ -36,6 +38,11 @@ Pass a pointer to a linked list of HTTP headers to pass to the server and/or
 proxy in your HTTP request. The same list can be used for both host and proxy
 requests!
 
+When used within an IMAP or SMTP request to upload a MIME mail, the given
+header list establishes the document-level MIME headers to prepend to the
+uploaded document described by \fICURLOPT_MIMEPOST(3)\fP. This does not affect
+raw mail uploads.
+
 The linked list should be a fully valid list of \fBstruct curl_slist\fP
 structs properly filled in. Use \fIcurl_slist_append(3)\fP to create the list
 and \fIcurl_slist_free_all(3)\fP to clean up an entire list. If you add a
@@ -44,16 +51,15 @@ one will be used instead. If you add a header with no content as in 'Accept:'
 (no data on the right side of the colon), the internally used header will get
 disabled. With this option you can add new headers, replace internal headers
 and remove internal headers. To add a header with no content (nothing to the
-right side of the colon), use the form 'MyHeader;' (note the ending
-semicolon).
+right side of the colon), use the form 'name;' (note the ending semicolon).
 
 The headers included in the linked list \fBmust not\fP be CRLF-terminated,
 because libcurl adds CRLF after each header item. Failure to comply with this
 will result in strange bugs because the server will most likely ignore part of
 the headers you specified.
 
-The first line in a request (containing the method, usually a GET or POST) is
-not a header and cannot be replaced using this option. Only the lines
+The first line in an HTTP request (containing the method, usually a GET or
+POST) is not a header and cannot be replaced using this option. Only the lines
 following the request-line are headers. Adding this method line in this list
 of headers will only cause your request to send an invalid header. Use
 \fICURLOPT_CUSTOMREQUEST(3)\fP to change the method.
@@ -65,14 +71,14 @@ the list.
 
 Pass a NULL to this option to reset back to no custom headers.
 
-The most commonly replaced headers have "shortcuts" in the options
+The most commonly replaced HTTP headers have "shortcuts" in the options
 \fICURLOPT_COOKIE(3)\fP, \fICURLOPT_USERAGENT(3)\fP and
 \fICURLOPT_REFERER(3)\fP. We recommend using those.
 
 There's an alternative option that sets or replaces headers only for requests
 that are sent with CONNECT to a proxy: \fICURLOPT_PROXYHEADER(3)\fP. Use
 \fICURLOPT_HEADEROPT(3)\fP to control the behavior.
-.SH SPECIFIC HEADERS
+.SH SPECIFIC HTTP HEADERS
 Setting some specific headers will cause libcurl to act differently.
 .IP "Host:"
 The specified host name will be used for cookie matching if the cookie engine
@@ -82,6 +88,24 @@ field and Host: will not be sent at all over the wire.
 .IP "Transfer-Encoding: chunked"
 Tells libcurl the upload is to be done using this chunked encoding instead of
 providing the Content-Length: field in the request.
+.SH SPECIFIC MIME HEADERS
+When used to build a MIME e-mail for IMAP or SMTP, the following
+document-level headers can be set to override libcurl-generated values:
+.IP "Mime-Version:"
+Tells the parser at the receiving site how to interpret the MIME framing.
+It defaults to "1.0" and should normally not be altered.
+.IP "Content-Type:"
+Indicates the document's global structure type. By default, libcurl sets it
+to "multipart/mixed", describing a document made of independent parts. When a
+MIME mail is only composed of alternative representations of the same data
+(i.e.: HTML and plain text), this header must be set to "multipart/alternative".
+In all cases the value must be of the form "multipart/*" to respect the
+document structure and may not include the "boundary=" parameter.
+.P
+Other specific headers that do not have a libcurl default value but are
+strongly desired by mail delivery and user agents should also be included.
+These are "From:", "To:", "Date:" and "Subject:" among others and their
+presence and value is generally checked by anti-spam utilities.
 .SH SECURITY CONCERNS
 By default, this option makes libcurl send the given headers in all HTTP
 requests done by this handle. You should therefore use this option with
@@ -108,7 +132,7 @@ permitted with the \fICURLOPT_UNRESTRICTED_AUTH(3)\fP option.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
-HTTP
+HTTP, IMAP and SMTP
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
@@ -125,14 +149,15 @@ if(curl) {
 
   curl_easy_perform(curl);
 
-  curl_slist_free_all(list); /* free the list again */
+  curl_slist_free_all(list); /* free the list */
 }
 .fi
 
 .SH AVAILABILITY
-As long as HTTP is enabled
+As long as HTTP is enabled. Use in MIME mail added in 7.56.0.
 .SH RETURN VALUE
 Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
 .BR CURLOPT_CUSTOMREQUEST "(3), " CURLOPT_HEADEROPT "(3), "
-.BR CURLOPT_PROXYHEADER "(3), " CURLOPT_HEADER "(3)"
+.BR CURLOPT_PROXYHEADER "(3), " CURLOPT_HEADER "(3), "
+.BR CURLOPT_MIMEPOST "(3), " curl_mime_init "(3)"
index 60419e8bec1b8c0e77ec2682227bbf0bcdea6140..edd47709d564e252760c952e6eaf32d2eeaa352b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPPOST 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPOST 3 "October 03, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPPOST \- multipart formpost content
@@ -31,10 +33,12 @@ CURLOPT_HTTPPOST \- multipart formpost content
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTPPOST,
                           struct curl_httppost *formpost);
 .SH DESCRIPTION
-Tells libcurl you want a multipart/formdata HTTP POST to be made and you
+\fBThis option is deprecated.\fP Use \fICURLOPT_MIMEPOST(3)\fP instead.
+
+Tells libcurl you want a \fBmultipart/formdata\fP HTTP POST to be made and you
 instruct what data to pass on to the server in the \fIformpost\fP argument.
-Pass a pointer to a linked list of curl_httppost structs as parameter.  The
-easiest way to create such a list, is to use \fIcurl_formadd(3)\fP as
+Pass a pointer to a linked list of \fIcurl_httppost\fP structs as parameter.
+The easiest way to create such a list, is to use \fIcurl_formadd(3)\fP as
 documented. The data in this list must remain intact as long as the curl
 transfer is alive and is using it.
 
@@ -43,9 +47,6 @@ You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP.
 
 When setting \fICURLOPT_HTTPPOST(3)\fP, it will automatically set
 \fICURLOPT_NOBODY(3)\fP to 0.
-
-This option is deprecated! Do not use it. Use \fICURLOPT_MIMEPOST(3)\fP
-instead after having prepared mime data.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
index 1d4809a494c66c5d224842405ff8394dc768e27c..276a9ff4c413ad61faeeaba06ee5bf71df35189f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPPROXYTUNNEL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPROXYTUNNEL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
index 59b20c95e1890857709c92be6183176422a47c48..5953348cda55ad3385fe6258e5bf504de0ae905e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP_CONTENT_DECODING 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP_CONTENT_DECODING \- HTTP content decoding control
index 06c113b5ab14441334f3bcf4439c5fd30367e8ff..4e85af24ac775836f0c94ecb50b5f0b22d163fb6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "October 22, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP_TRANSFER_DECODING \- HTTP transfer decoding control
index e19eb66ce14176ede1ea9f8c75bb5a57ed2ca4fe..1890bd4f3e1320c0f9c751ffc6b206331dee50b5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP_VERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_VERSION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP_VERSION \- HTTP protocol version to use
@@ -49,6 +51,10 @@ Enforce HTTP 1.1 requests.
 Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.1 if HTTP 2 cannot be
 negotiated with the server. (Added in 7.33.0)
 
+When libcurl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or
+higher even though that is required by the specification. A user can add this
+version requirement with \fICURLOPT_SSLVERSION(3)\fP.
+
 The alias \fICURL_HTTP_VERSION_2\fP was added in 7.43.0 to better reflect the
 actual protocol name.
 .IP CURL_HTTP_VERSION_2TLS
@@ -80,7 +86,8 @@ CURL *curl = curl_easy_init();
 if(curl) {
   CURLcode ret;
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-  curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
+  curl_easy_setopt(curl, CURLOPT_HTTP_VERSION,
+                   (long)CURL_HTTP_VERSION_2TLS);
   ret = curl_easy_perform(curl);
   if(ret == CURLE_HTTP_RETURNED_ERROR) {
     /* an HTTP response error problem */
index 9b498727bd757aef3a0bc3a403ee7c63978d2b03..c5776789dee364cbdfe30ce9dd13cf742d5cc233 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "August 23, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
index 4ac7502e6a943affed03aacc56c5fcfca5edafed..286737a543ec0ce186c57629444728da7f6ecbcf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INFILESIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INFILESIZE \- size of the input file to send off
index 2d687f4f31a7d78ffd7c41555165807225d00948..820760f3c1802630b67b37f404ac31793cada63d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INFILESIZE_LARGE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INFILESIZE_LARGE \- size of the input file to send off
index f217b8e672e794c1191201996cbe7675c084a479..220e139f3e64ea37da8f499f409fdede085327f5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INTERFACE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERFACE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INTERFACE \- source interface for outgoing traffic
index 34ccb850e8e3862f7010c45e3f6ce0f68b756d69..2735da22cdf0e69810f3da9d95efaad660351f6f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INTERLEAVEDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INTERLEAVEDATA \- pointer passed to RTSP interleave callback
index 3bde839df999dfffa74520cb6366d1c0646d7175..9f7e4597b841976e511bc32b8784a697a4dcf81a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INTERLEAVEFUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INTERLEAVEFUNCTION \- callback for RTSP interleaved data
index 5560f2eedd9dcf5bdab9526c15f68d667f995c43..ee30d42bc5853454c72b8e7b947a7766d8a88dd6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IOCTLDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLDATA 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IOCTLDATA \- pointer passed to I/O callback
@@ -56,7 +58,7 @@ static curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp)
 }
 .fi
 .SH AVAILABILITY
-Added in 7.12.3
+Added in 7.12.3. Deprecated since 7.18.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index c2528da8bd0c3efd7d20f8af3d2c6d8406c293d1..e2b81d8ae2b61b52b009efb36088a9dd2b15beda 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IOCTLFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLFUNCTION 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IOCTLFUNCTION \- callback for I/O operations
@@ -86,7 +88,7 @@ static curlioerr ioctl_callback(CURL *handle, int cmd, void *clientp)
 }
 .fi
 .SH AVAILABILITY
-Added in 7.12.3
+Added in 7.12.3. Deprecated since 7.18.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index d568522bee84f0870d3058ffcbfcd14371b2f19f..65481fd58fa7a0f062a1fa03dfb3e400d2178e40 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IPRESOLVE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_IPRESOLVE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IPRESOLVE \- IP protocol version to use
index 5eff62869012391f80efd8943876682e30cb361b..39bd70e644345dbe28ceb5106bf4460f9a9fa587 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ISSUERCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ISSUERCERT \- issuer SSL certificate filename
index 06954799c86e6220ea03f7603f232206e123c47b..388af2e3fe4adf34f3f7d28c926010d2ff0475a4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ISSUERCERT_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ISSUERCERT_BLOB \- issuer SSL certificate from memory blob
index 8d37e291f1a610b577c79ddf5cd6a1b59a10c0ec..f2b8b2c1e06b9a1e13eabb5df814b18e92af5a24 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
index 28e30f771c29adafa8b5d1fba1aab608f8a60408..18616a98f977e9765427aec0e4c5e54c530571b6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_KEYPASSWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_KEYPASSWD 3 "October 11, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_KEYPASSWD \- passphrase to private key
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_KEYPASSWD, char *pwd);
 .SH DESCRIPTION
 Pass a pointer to a null-terminated string as parameter. It will be used as
 the password required to use the \fICURLOPT_SSLKEY(3)\fP or
-\fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP private key.  You never needed a pass
+\fICURLOPT_SSH_PRIVATE_KEYFILE(3)\fP private key.  You never need a pass
 phrase to load a certificate but you need one to load your private key.
 
 The application does not have to keep the string around after setting this
index b6af0aa529e8006cbbec6d48d6a7e29ecf77f59f..15551984d01deb7981944da469ccf98fc28dd408 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_KRBLEVEL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_KRBLEVEL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_KRBLEVEL \- FTP kerberos security level
index 238acf92ae97c04c709c274a68e99fa714bd820e..ce7ad04a3469f353ef2ef3e1b1db6f1d1260eb6c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOCALPORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOCALPORT \- local port number to use for socket
index 6d1505323aaa53fdc25b9b38af833fc2994a6c71..cc105ebe6b27670327653f57bba21fc8c515bd25 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOCALPORTRANGE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORTRANGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
index 3d1a9ee73dff30b926279bcc683bb6f3207e9c8e..f7e1bb221c39df86ec85406677259b100347027f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOGIN_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOGIN_OPTIONS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOGIN_OPTIONS \- login options
@@ -35,7 +37,7 @@ 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
-IETF draft draft-earhart-url-smtp-00.txt
+the IETF draft \fBdraft-earhart-url-smtp-00.txt\fP.
 
 \fICURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
 options, such as the preferred authentication mechanism via "AUTH=NTLM" or
@@ -47,7 +49,7 @@ option.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
-Only IMAP, POP3 and SMTP support login options.
+Only IMAP, LDAP, POP3 and SMTP support login options.
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
@@ -59,7 +61,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.34.0
+Added in 7.34.0. Support for OpenLDAP added in 7.82.0.
 .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.
index aa58b2d8598913b6d6f88fbe5791d700d0c72d4c..fb81dae0b0ff3f77a5ce42d1469f107f745242a4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOW_SPEED_LIMIT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOW_SPEED_LIMIT \- low speed limit in bytes per second
index 029598245a389ec527d6226aa21332ade0b66dae..56637399436d42ac4a0086fc8bbee1849aef8aed 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOW_SPEED_TIME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_TIME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOW_SPEED_TIME \- low speed limit time period
index 357d89b86935a88de70f684acb59aaca38fcd067..1bf2296abd9f0242097184e13b01beec5c7577e0 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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_AUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_AUTH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_AUTH \- SMTP authentication address
index bfcdffbf1d7cc80ae0dc76f1007bd0e6067b136b..7d0250efaf4fac84fc02d301f03f77b6aec11294 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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_FROM 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_FROM 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_FROM \- SMTP sender address
index 6aa8a2cbc37b37273cc385d81e921b8023df3033..c14ef6c39a6e230c9691fb9b71dc2c0bd5f1a8e2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
@@ -42,12 +44,13 @@ pair of angled brackets (<>), however, should you not use an angled bracket as
 the first character libcurl will assume you provided a single email address
 and enclose that address within brackets for you.
 
-When performing an address verification (VRFY command), each recipient should
-be specified as the user name or user name and domain (as per Section 3.5 of
-RFC5321).
+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).
 
-When performing a mailing list expand (EXPN command), each recipient should be
-specified using the mailing list name, such as "Friends" or "London-Office".
+When performing a mailing list expand (\fBEXPN\fP command), each recipient
+should be specified using the mailing list name, such as "Friends" or
+"London-Office".
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
@@ -67,7 +70,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.20.0. The VRFY and EXPN logic was added in 7.34.0
+Added in 7.20.0. The \fBVRFY\fP and \fBEXPN\fP logic was added in 7.34.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 81557e2f857694f3694f4a99510924135e17d6fe..ec501fe52238d2b4a31f5f5bda88b7f7585481b8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * 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 "July 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_RCPT_ALLLOWFAILS \- allow RCPT TO command to fail for some recipients
index 81404aae8fb7faf74459a570adc4d59e7ade9847..cb612e06a76ed03bfd0e8e8ab87d8b18ad886d2f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXAGE_CONN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXAGE_CONN 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
@@ -28,10 +30,10 @@ CURLOPT_MAXAGE_CONN \- max idle time allowed for reusing a connection
 .nf
 #include <curl/curl.h>
 
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long maxage);
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAXAGE_CONN, long age);
 .fi
 .SH DESCRIPTION
-Pass a long as parameter containing \fImaxage\fP - the maximum time in seconds
+Pass a long as parameter containing \fIage\fP - the maximum time in seconds
 that you allow an existing connection to have been idle to be considered for
 reuse for this request.
 
@@ -41,10 +43,9 @@ reuse. The \fICURLOPT_MAXAGE_CONN(3)\fP limit prevents libcurl from trying too
 old connections for reuse, since old connections have a high risk of not
 working and thus trying them is a performance loss and sometimes service loss
 due to the difficulties to figure out the situation. If a connection is found
-in the cache that is older than this set \fImaxage\fP, it will instead be
-closed.
+in the cache that is older than this set \fIage\fP, it will instead be closed.
 .SH DEFAULT
-Default maxage is 118 seconds.
+Default maximum age is set to 118 seconds.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
index 92d4b43aa9d6e437c8771c4bd8fa771b230dbc54..084a7c1e8c252b3e848441e2cf177f75fd286a94 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXCONNECTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXCONNECTS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXCONNECTS \- maximum connection cache size
index 37a2201df09c35eadf82a926512279d7a9b46631..20342f8425f36ce3913629715d284d93a6e5c1cd 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXFILESIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXFILESIZE \- maximum file size allowed to download
index fda432e9c9fe07f36d75a8781bf08c52db70ec88..0510794f7944202bfa09eb690ad2c53ca7148a98 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXFILESIZE_LARGE 3 "July 23, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
index d1e28bdf52bd93af02701981b896197ef07afd9e..bfe6829f8810b4d6e5045108d7705ed69aa7312d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXLIFETIME_CONN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXLIFETIME_CONN 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXLIFETIME_CONN \- max lifetime (since creation) allowed for reusing a connection
index a99362bace062b52fa00deeaa2191b17747cca2d..7b5b717379fa0125d95367d31bbcb31608a3df07 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXREDIRS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXREDIRS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXREDIRS \- maximum number of redirects allowed
index 965211ab857b0fdeaafbcebe161d514506fd1ee8..5007136a08fd0c283943933d103fb62c5705c425 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
index 292f5444adb467492578ecd83720fb667f1d6a9d..e2e705c32debdfb76edd738e5f7a7b332b62bdb1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
index 3e101b95e26972a5dbbc3e5cff31320f7bb6b3f5..cbc115a10efa63f09ecdfb67d1f2cd774615c7b3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MIMEPOST 3 "December 17, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MIMEPOST 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MIMEPOST \- send data from mime structure
@@ -38,13 +40,29 @@ This setting is supported by the HTTP protocol to post forms and by the
 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 deprecated \fICURLOPT_HTTPPOST(3)\fP option.
+extending the \fICURLOPT_HTTPPOST(3)\fP option.
 .SH PROTOCOLS
 HTTP, SMTP, IMAP.
 .SH EXAMPLE
-Using this option implies the use of several mime structure building
-functions: see https://curl.se/libcurl/c/smtp-mime.html for a complete
-example.
+.nf
+ curl_mime *multipart = curl_mime_init(handle);
+ curl_mimepart *part = curl_mime_addpart(multipart);
+ curl_mime_name(part, "name");
+ curl_mime_data(part, "daniel", CURL_ZERO_TERMINATED);
+ part = curl_mime_addpart(multipart);
+ curl_mime_name(part, "project");
+ curl_mime_data(part, "curl", CURL_ZERO_TERMINATED);
+ part = curl_mime_addpart(multipart);
+ curl_mime_name(part, "logotype-image");
+ curl_mime_filedata(part, "curl.png");
+
+ /* Set the form info */
+ curl_easy_setopt(handle, CURLOPT_MIMEPOST, multipart);
+
+ curl_easy_perform(handle); /* post away! */
+
+ curl_mime_free(multipart); /* free the post data */
+.fi
 .SH AVAILABILITY
 Added in 7.56.0
 .SH RETURN VALUE
index 9d2b725af1c2b8f1be4d2fca64e0432f8aa44177..a753dfa9e01cde88c8637dba0860a06e0e1d2285 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MIME_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_MIME_OPTIONS 3 "September 02, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MIME_OPTIONS \- set MIME option flags
@@ -46,7 +48,7 @@ carriage return and line feed to %22, %0D and %0A respectively.
 Before version 7.81.0, percent-encoding was never applied.
 
 HTTP browsers used to do backslash-escaping in the past but have over time
-transitioned to use percent-encoding. This option allows to address
+transitioned to use percent-encoding. This option allows one to address
 server-side applications that have not yet have been converted.
 
 As an example, consider field or file name \fIstrange\\name"kind\fP.
index f27c8b9217979cfddba460f727b634284a22d2d2..97f436d8ace465ba8e2c3837ca705789498f3286 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NETRC 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NETRC \- enable use of .netrc
@@ -33,9 +35,13 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_NETRC, long level);
 .SH DESCRIPTION
 This parameter controls the preference \fIlevel\fP of libcurl between using
 user names and passwords from your \fI~/.netrc\fP file, relative to user names
-and passwords in the URL supplied with \fICURLOPT_URL(3)\fP. On Windows,
-libcurl will use the file as \fI%HOME%/_netrc\fP, but you can also tell
-libcurl a different file name to use with \fICURLOPT_NETRC_FILE(3)\fP.
+and passwords in the URL supplied with \fICURLOPT_URL(3)\fP.
+
+On Windows, libcurl will use the file as \fI%HOME%/_netrc\fP. If \fI%HOME%\fP
+is not set on Windows, libcurl falls back to \fI%USERPROFILE%\fP.
+
+You can also tell libcurl a different file name to use with
+\fICURLOPT_NETRC_FILE(3)\fP.
 
 libcurl uses a user name (and supplied or prompted password) supplied with
 \fICURLOPT_USERPWD(3)\fP or \fICURLOPT_USERNAME(3)\fP in preference to any of
@@ -47,24 +53,53 @@ and similar things are not supported).
 libcurl does not verify that the file has the correct properties set (as the
 standard Unix ftp client does). It should only be readable by user.
 
-\fIlevel\fP should be set to one of the values described below.
-
-.IP CURL_NETRC_OPTIONAL
-The use of the \fI~/.netrc\fP file is optional, and information in the URL is
-to be preferred.  The file will be scanned for the host and user name (to find
+\fIlevel\fP is a long that should be set to one of the values described below.
+.IP "CURL_NETRC_IGNORED (0)"
+The library will ignore the \fI.netrc\fP file. This is the default.
+.IP "CURL_NETRC_OPTIONAL (1)"
+The use of the \fI.netrc\fP file is optional, and information in the URL is to
+be preferred.  The file will be scanned for the host and user name (to find
 the password only) or for the host only, to find the first user name and
 password after that \fImachine\fP, which ever information is not specified.
+.IP "CURL_NETRC_REQUIRED (2)"
+The use of the \fI.netrc\fP file is required, and any credential information
+present in the URL is ignored.  The file will be scanned for the host and user
+name (to find the password only) or for the host only, to find the first user
+name and password after that \fImachine\fP, which ever information is not
+specified.
+.SH FILE FORMAT
+The \fB.netrc\fP file format is simple: you specify lines with a machine name
+and follow the login and password that are associated with that machine.
 
-Undefined values of the option will have this effect.
-.IP CURL_NETRC_IGNORED
-The library will ignore the \fI~/.netrc\fP file.
+Each field is provided as a sequence of letters that ends with a space or
+newline. Starting in 7.84.0, libcurl also supports quoted strings. They start
+and end with double quotes and support the escaped special letters \\\", \\n,
+\\r, and \\t. Quoted strings are the only way a space character can be used in
+a user name or password.
 
-This is the default.
-.IP CURL_NETRC_REQUIRED
-The use of the \fI~/.netrc\fP file is required, and information in the URL is
-to be ignored.  The file will be scanned for the host and user name (to find
-the password only) or for the host only, to find the first user name and
-password after that \fImachine\fP, which ever information is not specified.
+.IP "machine <name>"
+Provides credentials for a host called \fBname\fP. libcurl searches the .netrc
+file for a machine token that matches the host name specified in the URL. Once
+a match is made, the subsequent tokens are processed, stopping when the end of
+file is reached or another "machine" is encountered.
+.IP default
+This is the same as "machine" name except that default matches any name. There
+can be only one default token, and it must be after all machine tokens. To
+provide a default anonymous login for hosts that are not otherwise matched,
+add a line similar to this in the end:
+
+ default login anonymous password user@domain
+.IP "login <name>"
+The user name string for the remote machine.
+.IP "password <secret>"
+Supply a password. If this token is present, curl will supply the specified
+string if the remote server requires a password as part of the login process.
+Note that if this token is present in the .netrc file you really should make
+sure the file is not readable by anyone besides the user.
+.IP "macdef <name>"
+Define a macro. This feature is not supported by libcurl. In order for the
+rest of the .netrc to still work fine, libcurl will properly skip every
+definition done with "macdef" that it finds.
 .SH DEFAULT
 CURL_NETRC_IGNORED
 .SH PROTOCOLS
index b5d2b0cca3a0e4c9dcb5150edb82533075fa46f8..f4a5d99a989196be4fb1384522acc657d37ae9c4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NETRC_FILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC_FILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NETRC_FILE \- file name to read .netrc info from
index 81fd272c346ffc3f5b813c4e321fc8bd937b9fd2..d684a4a3917f8a1b47f01d6fcbd1f0c0eab6e28b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
index be86774b8c54b9b1646e33faf3dda693f301f631..2fde58ce3acbb2be91f33dc000cf1163898db3ab 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NEW_FILE_PERMS 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_FILE_PERMS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
index 762ac305d1dbc6ce53bd1b664ff4fcfcbfcf48b8..304bf4c5475234ee2d97c8510e6b82a712edf3ba 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOBODY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOBODY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOBODY \- do the download request without getting the body
@@ -36,7 +38,7 @@ output when doing what would otherwise be a download. For HTTP(S), this makes
 libcurl do a HEAD request. For most other protocols it means just not asking
 to transfer the body data.
 
-For HTTP operations when \fICURLOPT_NOBODY(3)\fP has been set, unsetting the
+For HTTP operations when \fICURLOPT_NOBODY(3)\fP has been set, disabling this
 option (with 0) will make it a GET again - only if the method is still set to
 be HEAD. The proper way to get back to a GET request is to set
 \fICURLOPT_HTTPGET(3)\fP and for other methods, use the POST or UPLOAD
index 83db6f102b7c2174bfa26748618e2011d94a49c1..72a9b9cb3d4ad64a4d2f8f354bd108b09e9ac05a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOPROGRESS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROGRESS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOPROGRESS \- switch off the progress meter
index ceab2d55ab661ba7421d39442151ebbb4dc2ebf0..149eaaceb903c57f89fd983f3f3c372610bf7e01 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOPROXY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROXY 3 "October 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOPROXY \- disable proxy use for specific hosts
@@ -36,26 +38,22 @@ separated list of host names that do not require a proxy to get reached, even
 if one is specified.  The only wildcard available is a single * character,
 which matches all hosts, and effectively disables the proxy. Each name in this
 list is matched as either a domain which contains the hostname, or the
-hostname itself. For example, example.com would match example.com,
-example.com:80, and www.example.com, but not www.notanexample.com or
-example.com.othertld.
+hostname itself. For example, "ample.com" would match ample.com, ample.com:80,
+and www.ample.com, but not www.example.com or ample.com.org.
 
-If the name in the noproxy list has a leading period, it is a domain match
-against the provided host name. This way ".example.com" will switch off proxy
-use for both "www.example.com" as well as for "foo.example.com".
+If the name in the \fInoproxy\fP list has a leading period, it is a domain
+match against the provided host name. This way ".example.com" will switch off
+proxy use for both "www.example.com" as well as for "foo.example.com".
 
-Setting the noproxy string to "" (an empty string) will explicitly enable the
-proxy for all host names, even if there is an environment variable set for it.
+Setting the \fInoproxy\fP string to "" (an empty string) will explicitly
+enable the proxy for all host names, even if there is an environment variable
+set for it.
 
 Enter IPv6 numerical addresses in the list of host names without enclosing
 brackets:
 
  "example.com,::1,localhost"
 
-IPv6 numerical addresses are compared as strings, so they will only match if
-the representations are the same: "::1" is the same as "::0:1" but they do not
-match.
-
 The application does not have to keep the string around after setting this
 option.
 .SH "Environment variables"
index cfd4150afaa7fe8f0d37146d7b49da7027661515..7a389ad6cc8ad6eef7719e78b7bef39914304fa8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOSIGNAL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_NOSIGNAL 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOSIGNAL \- skip all signal handling
@@ -45,10 +47,10 @@ the use of signals.
 Setting \fICURLOPT_NOSIGNAL(3)\fP to 1 makes libcurl NOT ask the system to
 ignore SIGPIPE signals, which otherwise are sent by the system when trying to
 send data to a socket which is closed in the other end. libcurl makes an
-effort to never cause such SIGPIPEs to trigger, but some operating systems
-have no way to avoid them and even on those that have there are some corner
-cases when they may still happen, contrary to our desire. In addition, using
-\fICURLAUTH_NTLM_WB\fP authentication could cause a SIGCHLD signal to be
+effort to never cause such SIGPIPE signals to trigger, but some operating
+systems have no way to avoid them and even on those that have there are some
+corner cases when they may still happen, contrary to our desire. In addition,
+using \fICURLAUTH_NTLM_WB\fP authentication could cause a SIGCHLD signal to be
 raised.
 .SH DEFAULT
 0
index 1a1089de8bced34e9aeb00d7bb22ebab2b972333..edfbe90c4dd2c2619897f7cddce9a1cf0fd58641 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_OPENSOCKETDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_OPENSOCKETDATA \- pointer passed to open socket callback
@@ -32,7 +34,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_OPENSOCKETDATA, void *pointer);
 .fi
 .SH DESCRIPTION
 Pass a \fIpointer\fP that will be untouched by libcurl and passed as the first
-argument in the opensocket callback set with \fICURLOPT_OPENSOCKETFUNCTION(3)\fP.
+argument in the open socket callback set with
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP.
 .SH DEFAULT
 The default value of this parameter is NULL.
 .SH PROTOCOLS
index 45739c2db3d9ead69afdbb93c91fc34457a96c53..cc7b861017dc780281c35746960d1a22054a2166 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_OPENSOCKETFUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_OPENSOCKETFUNCTION \- callback for opening socket
index 8a29c479bb216a81ffc593dcd06aa4cd82c74767..73ba6b508222e3453870182165d59cb5469acda8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PASSWORD \- password to use in authentication
index 7c51a710f8211d17fdbc9cd90c1ee1eee8ff2655..5063d46cd38919df3142129951dc08a07dfbc796 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PATH_AS_IS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PATH_AS_IS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
index cfb7bbe6b73571a82d1ca09b7f46a26d3363a64e..afeeabf0d3adcfea239c358c7492f3b53a89b63b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PINNEDPUBLICKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PINNEDPUBLICKEY \- pinned public key
@@ -105,21 +107,21 @@ PEM/DER support:
 
   7.43.0: NSS and wolfSSL
 
-  7.47.0: mbedtls
+  7.47.0: mbedTLS
 
-  7.54.1: SecureTransport on macOS 10.7+/iOS 10+
+  7.54.1: Secure Transport on macOS 10.7+/iOS 10+
 
-  7.58.1: SChannel
+  7.58.1: Schannel
 
 sha256 support:
 
   7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL
 
-  7.47.0: mbedtls
+  7.47.0: mbedTLS
 
-  7.54.1: SecureTransport on macOS 10.7+/iOS 10+
+  7.54.1: Secure Transport on macOS 10.7+/iOS 10+
 
-  7.58.1: SChannel Windows XP SP3+
+  7.58.1: Schannel Windows XP SP3+
 
 Other SSL backends not supported.
 .SH RETURN VALUE
index 6fefb20e14b67830d8bd8896d68a6ae560c48347..2f05d4dfb50da7b8deca01931eaede5a50a24b1b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PIPEWAIT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PIPEWAIT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
index 7c28730fe00907cb971066709fc0daa7be030ad8..e149cb2a3ef3b05dda7e2e2ab486a1db87f3d889 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PORT 3 "July 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PORT \- remote port number to connect to
@@ -31,6 +33,9 @@ CURLOPT_PORT \- remote port number to connect to
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PORT, long number);
 .fi
 .SH DESCRIPTION
+We discourage using this option since its scope is not obvious and hard to
+predict. Set the preferred port number in the URL instead.
+
 This option sets \fInumber\fP to be the remote port number to connect to,
 instead of the one specified in the URL or the default port for the used
 protocol.
@@ -38,10 +43,12 @@ protocol.
 Usually, you just let the URL decide which port to use but this allows the
 application to override that.
 
-While this option accepts a 'long', a port number is usually a 16 bit number
-and therefore using a port number over 65535 will cause a run-time error.
+While this option accepts a 'long', a port number is an unsigned 16 bit number
+and therefore using a port number lower than zero or over 65535 will cause a
+\fBCURLE_BAD_FUNCTION_ARGUMENT\fP error.
 .SH DEFAULT
-By default this is 0 which makes it not used.
+By default this is 0 which makes it not used. This also makes port number zero
+impossible to set with this API.
 .SH PROTOCOLS
 Used for all protocols that speak to a port number.
 .SH EXAMPLE
index 06304c592915dceadb83467d8c5da7a0dea04260..bbd211874add8077fdb0829cb05f7683a94c96e9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POST \- make an HTTP POST
index c774432fe8d1c420c326126cd1f69116741d3fcc..6fa7b5917146ceb2b6d5c5a287438c627bd1a739 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTFIELDS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDS 3 "October 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTFIELDS \- data to POST to server
@@ -34,19 +36,21 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
 Pass a char * as parameter, pointing to the full data to send in an HTTP POST
 operation. You must make sure that the data is formatted the way you want the
 server to receive it. libcurl will not convert or encode it for you in any
-way. For example, the web server may assume that this data is url-encoded.
+way. For example, the web server may assume that this data is URL encoded.
 
 The data pointed to is NOT copied by the library: as a consequence, it must be
 preserved by the calling application until the associated transfer finishes.
 This behavior can be changed (so libcurl does copy the data) by setting the
 \fICURLOPT_COPYPOSTFIELDS(3)\fP option.
 
-This POST is a normal application/x-www-form-urlencoded kind (and libcurl will
-set that Content-Type by default when this option is used), which is commonly
-used by HTML forms. Change Content-Type with \fICURLOPT_HTTPHEADER(3)\fP.
+This POST is a normal \fBapplication/x-www-form-urlencoded\fP kind (and
+libcurl will set that Content-Type by default when this option is used), which
+is commonly used by HTML forms. Change Content-Type with
+\fICURLOPT_HTTPHEADER(3)\fP.
 
-You can use \fIcurl_easy_escape(3)\fP to url-encode your data, if necessary. It
-returns a pointer to an encoded string that can be passed as \fIpostdata\fP.
+You can use \fIcurl_easy_escape(3)\fP to URL encode your data, if
+necessary. It returns a pointer to an encoded string that can be passed as
+\fIpostdata\fP.
 
 Using \fICURLOPT_POSTFIELDS(3)\fP implies setting \fICURLOPT_POST(3)\fP to 1.
 
@@ -55,9 +59,9 @@ the POST data from the read callback. If you want to send a zero-byte POST set
 \fICURLOPT_POSTFIELDS(3)\fP to an empty string, or set \fICURLOPT_POST(3)\fP to
 1 and \fICURLOPT_POSTFIELDSIZE(3)\fP to 0.
 
-libcurl will use assume this option points to a nul-terminated string unless
+libcurl will use assume this option points to a null-terminated string unless
 you also set \fICURLOPT_POSTFIELDSIZE(3)\fP to specify the length of the
-provided data, which then is strictly required if you want to send off nul
+provided data, which then is strictly required if you want to send off null
 bytes included in the data.
 
 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header,
@@ -65,8 +69,8 @@ and libcurl will add that header automatically if the POST is either known to
 be larger than 1MB or if the expected size is unknown. You can disable this
 header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
 
-To make multipart/formdata posts (aka RFC2388-posts), check out the
-\fICURLOPT_HTTPPOST(3)\fP option combined with \fIcurl_formadd(3)\fP.
+To make \fBmultipart/formdata\fP posts, check out the
+\fICURLOPT_MIMEPOST(3)\fP option combined with \fIcurl_mime_init(3)\fP.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
@@ -94,3 +98,4 @@ Always
 Returns CURLE_OK
 .SH "SEE ALSO"
 .BR CURLOPT_POSTFIELDSIZE "(3), " CURLOPT_READFUNCTION "(3), "
+.BR CURLOPT_MIMEPOST "(3), " CURLOPT_UPLOAD "(3), "
index 170e42b4b8bb33c02c56685644bb44ac03cf5bd5..6c5a72842a6bca263ec1979b899026584ac56ca3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTFIELDSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
index 53a3e32aaad8798570b3dc415bbbb751d1e757d9..8f972525c5fe3361f1dba24c99c68fa9f77abc2d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
index d2e9cba847a453f70ac05ccaf3c0c2a13f377862..c1cc1082fdd443db2f2b2b4634a42ccacf9fdbc3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTQUOTE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTQUOTE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
index 62f4593ede17a471abf6652fb4459843f2c9c810..0e1fb8a5649cb87f642d36e700843c5f878e7c81 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTREDIR 3 "December 31, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTREDIR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
index 133076fb16fb3711ed72b039163b11406f63f0bc..2f59d6ee98cde4eb89d5737922409c5ada9a00b8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PREQUOTE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PREQUOTE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PREQUOTE \- commands to run before an FTP transfer
@@ -38,6 +40,9 @@ struct curl_slist structs properly filled in as described for
 \fICURLOPT_QUOTE(3)\fP. Disable this operation again by setting a NULL to this
 option.
 
+These commands are not performed when a directory listing is performed, only
+for file transfers.
+
 While \fICURLOPT_QUOTE(3)\fP and \fICURLOPT_POSTQUOTE(3)\fP work for SFTP,
 this option does not.
 .SH DEFAULT
index 82f249cac5a0be0af5bbb08b72fac1b0cc1070c1..0a5d75402936f28a0dde745fc1a91f8c61709db3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2021, Max Dymond, <max.dymond@microsoft.com>, et al.
+.\" * Copyright (C) 2022, Max Dymond, <max.dymond@microsoft.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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PREREQDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PREREQDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PREREQDATA \- pointer passed to the pre-request callback
index e2c46023202b5109fc4684951c280479b2fc93e0..05cda91b50787b239ba51225620d5ddda333f9c8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2021, Max Dymond, <max.dymond@microsoft.com>, et al.
+.\" * Copyright (C) 2022 - 2022, Max Dymond, <max.dymond@microsoft.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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PREREQFUNCTION 3 "November 04, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PREREQFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PREREQFUNCTION \- user callback called when a connection has been
@@ -53,28 +55,27 @@ before a GET/HEAD/POST/etc request has been sent.
 This function may be called multiple times if redirections are enabled and are
 being followed (see \fICURLOPT_FOLLOWLOCATION(3)\fP).
 
-This function is passed the following information:
+The callback function must return \fICURL_PREREQFUNC_OK\fP on success, or
+\fICURL_PREREQFUNC_ABORT\fP to cause the transfer to fail.
+
+This function is passed the following arguments:
 .IP conn_primary_ip
-A nul-terminated pointer to a C string containing the primary IP of the remote
-server established with this connection. For FTP, this is the IP for the control
-connection. IPv6 addresses are represented without surrounding brackets.
+A null-terminated pointer to a C string containing the primary IP of the
+remote server established with this connection. For FTP, this is the IP for
+the control connection. IPv6 addresses are represented without surrounding
+brackets.
 .IP conn_local_ip
-A nul-terminated pointer to a C string containing the originating IP for this
+A null-terminated pointer to a C string containing the originating IP for this
 connection. IPv6 addresses are represented without surrounding brackets.
 .IP conn_primary_port
 The primary port number on the remote server established with this connection.
 For FTP, this is the port for the control connection. This can be a TCP or a
-UDP port number dependending on the protocol.
+UDP port number depending on the protocol.
 .IP conn_local_port
-The originating port number for this connection. This can be a TCP or a UDP port
-number dependending on the protocol.
-.RE
-
-\fIclientp\fP is the pointer you set with \fICURLOPT_PREREQDATA(3)\fP.
-
-The callback function must return \fICURL_PREREQFUNC_OK\fP on success, or
-\fICURL_PREREQFUNC_ABORT\fP to cause the transfer to fail.
-
+The originating port number for this connection. This can be a TCP or a UDP
+port number depending on the protocol.
+.IP clientp
+The pointer you set with \fICURLOPT_PREREQDATA(3)\fP.
 .SH DEFAULT
 By default, this is NULL and unused.
 .SH PROTOCOLS
index 5f6c0dcabcd99b03934d2270ad4886dc854a0f8f..e893e20e603d31db579826787514710b0589cbe8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PRE_PROXY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PRE_PROXY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PRE_PROXY \- pre-proxy host to use
@@ -68,7 +70,7 @@ All except file://. Note that some protocols do not work well over proxy.
 CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/file.txt");
-  curl_easy_setopt(curl, CURLOPT_PREPROXY, "socks4://socks-proxy:1080");
+  curl_easy_setopt(curl, CURLOPT_PRE_PROXY, "socks4://socks-proxy:1080");
   curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxy:80");
   curl_easy_perform(curl);
 }
index 8a6e16594c011bb5d7c9a149b58a3388026bc795..9b8d2c3acb0da6182182082a2910a900663acb91 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PRIVATE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PRIVATE 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PRIVATE \- store a private pointer
@@ -33,8 +35,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PRIVATE, void *pointer);
 .SH DESCRIPTION
 Pass a void * as parameter, pointing to data that should be associated with
 this curl handle.  The pointer can subsequently be retrieved using
-\fIcurl_easy_getinfo(3)\fP with the CURLINFO_PRIVATE option. libcurl itself
-never does anything with this data.
+\fIcurl_easy_getinfo(3)\fP with the \fICURLINFO_PRIVATE(3)\fP option. libcurl
+itself never does anything with this data.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
index fcd01d05bcc805f38ced6043308a069802bd9de7..e0c4269d896bb042d6e0520e3b09a013e7400217 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROGRESSDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROGRESSDATA \- pointer passed to the progress callback
index 09e4526e34fbb937a0e6e4d8ac557efbede1c634..2224f53625f102c8c73dae8d94c7e741510535a8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROGRESSFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSFUNCTION 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROGRESSFUNCTION \- progress meter callback
@@ -41,8 +43,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSFUNCTION,
 Pass a pointer to your callback function, which should match the prototype
 shown above.
 
-We encourage users to use the newer \fICURLOPT_XFERINFOFUNCTION(3)\fP instead,
-if you can.
+This option is deprecated and we encourage users to use the
+newer \fICURLOPT_XFERINFOFUNCTION(3)\fP instead, if you can.
 
 This function gets called by libcurl instead of its internal equivalent with a
 frequent interval. While data is being transferred it will be called
@@ -94,7 +96,7 @@ All
                                  double ultotal,
                                  double ulnow)
  {
-   struct memory *progress = (struct progress *)userp;
+   struct progress *memory = (struct progress *)clientp;
 
    /* use the values */
 
@@ -109,7 +111,7 @@ All
  curl_easy_setopt(curl_handle, CURLOPT_PROGRESSFUNCTION, progress_callback);
 .fi
 .SH AVAILABILITY
-Always
+Deprecated in 7.32.0.
 .SH RETURN VALUE
 Returns CURLE_OK.
 .SH "SEE ALSO"
index de9f2d9dfa2adae5ef70c14ce1f3667ac3976194..0b0681aa19e892ee52176db720874cfb0c9f5427 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROTOCOLS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROTOCOLS 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROTOCOLS \- allowed protocols
@@ -31,6 +33,10 @@ CURLOPT_PROTOCOLS \- allowed protocols
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS, long bitmask);
 .fi
 .SH DESCRIPTION
+This option is deprecated. We strongly recommend using
+\fICURLOPT_PROTOCOLS_STR(3)\fP instead because this option cannot control all
+available protocols!
+
 Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
 limits what protocols libcurl may use in the transfer. This allows you to have
 a libcurl built to support a wide range of protocols but still limit specific
@@ -70,7 +76,7 @@ CURLPROTO_TELNET
 CURLPROTO_TFTP
 .fi
 .SH DEFAULT
-All protocols built-in
+All protocols built-in.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
@@ -89,7 +95,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.19.4
+Added in 7.19.4. Deprecated since 7.85.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3
new file mode 100644 (file)
index 0000000..dfa0368
--- /dev/null
@@ -0,0 +1,85 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_PROTOCOLS_STR 3 "September 13, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_PROTOCOLS_STR \- allowed protocols
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROTOCOLS_STR, char *spec);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a string that holds a comma-separated list of case
+insensitive protocol names (URL schemes) to allow in the transfer. This
+option allows applications to use libcurl built to support a wide range of
+protocols but still limit specific transfers to only be allowed to use a
+subset of them. By default, libcurl accepts all protocols it was built with
+support for. See also \fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP.
+
+If trying to set a non-existing protocol or if no matching protocol at all is
+set, it returns error.
+
+These are the available protocols:
+
+DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
+MQTT, POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP,
+SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS
+
+You can set "ALL" as a short-cut to enable all protocols. Note that by setting
+all, you may enable protocols that were not supported the day you write this
+but are introduced in a future libcurl version.
+
+\fIcurl_version_info(3)\fP can be used to get a list of all supported
+protocols in the current libcurl. \fICURLINFO_SCHEME(3)\fP is the recommended
+way to figure out the protocol used in a previous transfer.
+.SH DEFAULT
+All protocols built-in
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  /* pass in the URL from an external source */
+  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+
+  /* only allow HTTP, TFTP and SFTP */
+  curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, "http,tftp,sftp");
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.85.0
+.SH RETURN VALUE
+Returns CURLE_UNKNOWN_OPTION if the option is not implemented,
+CURLE_UNSUPPORTED_PROTOCOL if a listed protocol is not supported or disabled,
+CURLE_BAD_FUNCTION_ARGUMENT if no protocol is listed else CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_REDIR_PROTOCOLS_STR "(3), " CURLOPT_URL "(3), "
+.BR curl_version_info "(3), " CURLINFO_SCHEME "(3), "
index 0b58a1f82c410be866c5e84702c926be6506577b..99c310e75f522681f7dc6ac0b0ae06f1e6c24138 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY \- proxy to use
@@ -74,6 +76,9 @@ use of a proxy, even if there is an environment variable set for it.
 A proxy host string can also include protocol scheme (http://) and embedded
 user + password.
 
+Unix domain sockets are supported for socks proxies since 7.84.0. Set
+localhost for the host part. e.g. socks5h://localhost/path/to/socket.sock
+
 The application does not have to keep the string around after setting this
 option.
 .SH "Environment variables"
index e6f54777de208d717c6deb076cdf2015debabe82..c3d4046d00ce90ce6bdaecb7a5165c0d3e3fe715 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYAUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYAUTH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYAUTH \- HTTP proxy authentication methods
@@ -39,8 +41,8 @@ you allow it to use. For some methods, this will induce an extra network
 round-trip. Set the actual name and password with the
 \fICURLOPT_PROXYUSERPWD(3)\fP option.
 
-The bitmask can be constructed by or'ing together the bits fully listed and
-described in the \fICURLOPT_HTTPAUTH(3)\fP man page.
+The bitmask can be constructed by the bits listed and described in the
+\fICURLOPT_HTTPAUTH(3)\fP man page.
 .SH DEFAULT
 CURLAUTH_BASIC
 .SH PROTOCOLS
index 9c0a2991ddfefdc989e7d954667a6f7bcb42db08..92dedb801ac6898ecaf64c7eac377d30f897c9b1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYHEADER 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYHEADER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYHEADER \- set of HTTP headers to pass to proxy
index 373cea50e816f36876ba28a4ec799fc77c8b992e..8d4465f16b93c67515960b400b12e3dd3dff1ecc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYPASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
index 4ca2a002f619372a8949b2f30409e14e747f11f0..fb02bfe1cbac268b7b189feea297b6922189b871 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYPORT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYPORT \- port number the proxy listens on
index 8d5b7bce8c0faf4f2f882e2bc73cbf45514ce0b4..88263e1cf52a131f20201cb4c13235c80d786630 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYTYPE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYTYPE \- proxy protocol type
@@ -40,7 +42,7 @@ HTTP Proxy. Default.
 HTTPS Proxy. (Added in 7.52.0 for OpenSSL, GnuTLS and NSS)
 .IP CURLPROXY_HTTP_1_0
 HTTP 1.0 Proxy. This is similar to CURLPROXY_HTTP except it uses HTTP/1.0 for
-any CONNECT tunnelling. It does not change the HTTP version of the actual HTTP
+any CONNECT tunneling. It does not change the HTTP version of the actual HTTP
 requests, controlled by \fICURLOPT_HTTP_VERSION(3)\fP.
 .IP CURLPROXY_SOCKS4
 SOCKS4 Proxy.
index 36d68bcf9a0557597a320ea188d2912bc71ab201..0912f623ad13c11a2c2f4eb3d0a8c4cad8a7b753 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYUSERNAME 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
index 37b7a645ce0ab06f7ee29471b1ca407172ea0665..9ae8c075a3b454f068d0c43494885d1a9787f439 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYUSERPWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERPWD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
index b1c14d5483c8f8a886eca8ddc70a7fb7999845bb..d0f7925c13a3f0d2f3402bd090731c33d114d43d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CAINFO 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
@@ -40,8 +42,8 @@ If \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the
 server's certificate, \fICURLOPT_PROXY_CAINFO(3)\fP need not even indicate an
 accessible file.
 
-This option is by default set to the system path where libcurl's cacert bundle
-is assumed to be stored, as established at build time.
+This option is by default set to the system path where libcurl's CA
+certificate bundle is assumed to be stored, as established at build time.
 
 If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
 (libnsspem.so) needs to be available for this option to work properly.
@@ -54,6 +56,8 @@ preferred method of verifying the peer's certificate chain.
 
 The application does not have to keep the string around after setting this
 option.
+
+The default value for this can be figured out with \fICURLINFO_CAINFO(3)\fP.
 .SH DEFAULT
 Built-in system specific
 .SH PROTOCOLS
index 92072fa5e7569620d486e8da131ef15541300510..1a9d29f3f224d3a2b7336dfc79ee6c42bc461679 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CAINFO_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CAINFO_BLOB \- proxy Certificate Authority (CA) bundle in PEM format
@@ -66,7 +68,7 @@ if(curl) {
 .SH AVAILABILITY
 Added in 7.77.0.
 
-This option is supported by the OpenSSL, Secure
+This option is supported by the rustls (since 7.82.0), OpenSSL, Secure
 Transport and Schannel backends.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
index a2dc789476c18fd26e9524e2f20d700139949e46..8dd19ce5a061f0be061907d106a64641fb2ca365 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CAPATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAPATH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CAPATH \- directory holding HTTPS proxy CA certificates
@@ -33,12 +35,14 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAPATH, char *capath);
 .SH DESCRIPTION
 Pass a char * to a null-terminated string naming a directory holding multiple
 CA certificates to verify the HTTPS proxy with. If libcurl is built against
-OpenSSL, the certificate directory must be prepared using the openssl c_rehash
-utility. This makes sense only when \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is
-enabled (which it is by default).
+OpenSSL, the certificate directory must be prepared using the OpenSSL
+\fBc_rehash\fP utility. This makes sense only when
+\fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP is enabled (which it is by default).
 
 The application does not have to keep the string around after setting this
 option.
+
+The default value for this can be figured out with \fICURLINFO_CAPATH(3)\fP.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
index ec26015dbde549159667f7a25369a035646a7b29..a30dfd2370beefc1c529a5da909b9d7555a30077 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CRLFILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CRLFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CRLFILE \- HTTPS proxy Certificate Revocation List file
index 55cb108fc319bddacef9f14620a0846219164b4e..892a80af4a03eecd5654679ea109a38aad4fff01 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_ISSUERCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_ISSUERCERT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_ISSUERCERT \- proxy issuer SSL certificate filename
index a6ac8af4837c401db1550f5489ceb3265f9fffdc..21f696b2b0265c702b163598fe2e5a1ea53ed636 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_ISSUERCERT_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_ISSUERCERT_BLOB \- proxy issuer SSL certificate from memory blob
index 5cff8fcf4fc97d6de7107ef2389cd3a348ea5eb2..77fe1ce08c19212ec8342289bc6e8881e18b3c03 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_KEYPASSWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_KEYPASSWD 3 "October 11, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_KEYPASSWD \- passphrase for the proxy private key
@@ -35,7 +37,7 @@ This option is for connecting to an HTTPS proxy, not an HTTPS server.
 
 Pass a pointer to a null-terminated string as parameter. It will be used as
 the password required to use the \fICURLOPT_PROXY_SSLKEY(3)\fP private key.
-You never needed a pass phrase to load a certificate but you need one to load
+You never need a pass phrase to load a certificate but you need one to load
 your private key.
 
 The application does not have to keep the string around after setting this
index 23a690c7a644d3f85c8bf4ce1df33b80b7761572..4386db03d79f68988cacaf94aaf9f2f0b9d3552b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_PINNEDPUBLICKEY \- pinned public key for https proxy
@@ -97,11 +99,11 @@ footer:
 .SH AVAILABILITY
 PEM/DER support:
 
-  7.52.0: GSKit, GnuTLS, NSS, OpenSSL, mbedtls, wolfSSL
+  7.52.0: GSKit, GnuTLS, NSS, OpenSSL, mbedTLS, wolfSSL
 
 sha256 support:
 
-  7.52.0: GnuTLS, NSS, OpenSSL, mbedtls, wolfSSL
+  7.52.0: GnuTLS, NSS, OpenSSL, mbedTLS, wolfSSL
 
 Other SSL backends not supported.
 .SH RETURN VALUE
index fc2d591160f17bafeba2116d5b68add2c5be7703..132bce6b20dd76cb9a6fb03788c18a2250dbd097 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SERVICE_NAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
@@ -33,8 +35,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME,
 .fi
 .SH DESCRIPTION
 Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name is "HTTP" for HTTP based proxies and "rcmd"
-for SOCKS5. This option allows you to change it.
+service. The default service name is \fB"HTTP"\fP for HTTP based proxies and
+\fB"rcmd"\fP for SOCKS5. This option allows you to change it.
 
 The application does not have to keep the string around after setting this
 option.
index e72fade2f4354bd1d73e6f82a5a5e5a422aa5ea9..b883295a5a0b002aa336fe8895bfbf45e456d3c4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLCERT \- HTTPS proxy client certificate
index 76753e2b14f45c832fc37ecbf6dca97a85ab0663..bf9249cf9fdd47131efbc388cf546c370f8ca5bc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLCERTTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLCERTTYPE \- type of the proxy client SSL certificate
@@ -34,9 +36,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);
 Pass a pointer to a null-terminated string as parameter. The string should be
 the format of your client certificate used when connecting to an HTTPS proxy.
 
-Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL
-(versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X
-10.7 or later) also support "P12" for PKCS#12-encoded files.
+Supported formats are "PEM" and "DER", except with Secure Transport or
+Schannel. OpenSSL (versions 0.9.3 and later), Secure Transport (on iOS 5 or
+later, or OS X 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
+files.
 
 The application does not have to keep the string around after setting this
 option.
index 19ee25747105edb721320843d0bdc16fac411a86..eb4453fd5aa43e40410f8ad09edc873b1ce6b024 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT_BLOB 3 "September 06, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLCERT_BLOB \- SSL proxy client certificate from memory blob
@@ -47,7 +49,7 @@ expects a file name as input.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
+Used with HTTPS proxy
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
index bef93b1759e5f5b8c354407a5fe49b166aab2009..10716cddd333abeea455cc79ce6bb3f8a7b218f5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_PROXY_SSLKEY \- private keyfile for HTTPS proxy client cert
+CURLOPT_PROXY_SSLKEY \- private key file for HTTPS proxy client cert
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -36,9 +38,9 @@ the file name of your private key used for connecting to the HTTPS proxy. The
 default format is "PEM" and can be changed with
 \fICURLOPT_PROXY_SSLKEYTYPE(3)\fP.
 
-(iOS and Mac OS X only) This option is ignored if curl was built against
-Secure Transport. Secure Transport expects the private key to be already
-present in the keychain or PKCS#12 file containing the certificate.
+(Windows, iOS and Mac OS X) This option is ignored by Secure Transport and
+Schannel SSL backends because they expect the private key to be already
+present in the key chain or PKCS#12 file containing the certificate.
 
 The application does not have to keep the string around after setting this
 option.
index 3120de862b1a349d73bc7e521a08cb3c81848c46..24bac05cd32cc7fb398b056005b2c1fcf8e44122 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLKEYTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLKEYTYPE \- type of the proxy private key file
index e449be1b762ce05fa454fd66a9c185a1c55731b9..18e4cb9caee74da528000c5463d2bea5da7513f8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "October 25, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLKEY_BLOB \- private key for proxy cert from memory blob
index ed627e23b17d30db2c21876dc94fdac161651fb6..08688ffc8fefa25381500447224c5ce4f68ad7f7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLVERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLVERSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLVERSION \- preferred HTTPS proxy TLS version
index e4cbce48d40929c931b875f5c24afc4e7f62a198..7da9b0870f74854ef815abef28a92b1b805f6659 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_CIPHER_LIST \- ciphers to use for HTTPS proxy
@@ -50,6 +52,13 @@ enabled.
 For WolfSSL, valid examples of cipher lists include \fBECDHE-RSA-RC4-SHA\fP,
 \fBAES256-SHA:AES256-SHA256\fP, etc.
 
+For BearSSL, valid examples of cipher lists include
+\fBECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256\fP, or when using IANA names
+\fBTLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\fP,
+etc.
+With BearSSL you do not add/remove ciphers. If one uses this option then all
+known ciphers are disabled and only those passed in are enabled.
+
 you will find more details about cipher lists on this URL:
 
  https://curl.se/docs/ssl-ciphers.html
@@ -72,7 +81,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0, in 7.83.0 for BearSSL
 
 If built TLS enabled.
 .SH RETURN VALUE
index d952200fb07c89e7c4251fd603a35ef2b32f9460..315bbffa326e13615df436427976b9bf2a26ed38 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_OPTIONS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_OPTIONS \- HTTPS proxy SSL behavior options
index 72f661d07bfb7c66dd7d80f9fb4d5c9f297520b4..69860449d32ec571e566a1bb82fc24821da1ff9a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
index c4a446ef8fc7b5f014201d0823adb42c2bcbf78f..06a4b02ca244b4eb4ddc49859627cbf883c6cfa2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
index b1b95e45bbc27b7dafe0e478036df6ae76677957..d39e1b5f1e2d8d6d8b5b6e56c83b8724e53d9bab 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLS13_CIPHERS 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLS13_CIPHERS \- ciphers suites for proxy TLS 1.3
@@ -43,7 +45,7 @@ you will find more details about cipher lists on this URL:
 
 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 CURLOPT_PROXY_SSL_CIPHER_LIST option.
+cipher suites by using the \fICURLOPT_PROXY_SSL_CIPHER_LIST(3)\fP option.
 
 The application does not have to keep the string around after setting this
 option.
@@ -57,7 +59,7 @@ CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
   curl_easy_setopt(curl, CURLOPT_PROXY_TLS13_CIPHERS,
-                   "TLS13-CHACHA20-POLY1305-SHA256");
+                   "TLS_CHACHA20_POLY1305_SHA256");
   ret = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
 }
index 61772b81a8900eb5a1ef71a30080a6707d96ad79..12e91fecbf62b219e89f2e2349b5a317e16c8fdb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0, with the OpenSSL and GnuTLS backends only
 .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.
index 0121ffaf53bdeacc3d6de38412141d2e4ad5a51f..ca67a8ebf1d3dac653bb9ffda1c5f82277e575f2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLSAUTH_TYPE \- HTTPS proxy TLS authentication methods
index 6bb2f1b62584f591f0d575aecb075e2e05ed5182..931c3b279a3afab544d6b2ded5cc9637fc542db7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.52.0
+Added in 7.52.0, with the OpenSSL and GnuTLS backends only.
 .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.
index 16be6aa5c432e7e0faa84ed5e7f5f1e8d4344569..3d92debf4a42e8ab5e52bd94f87f5de957c65fdf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TRANSFER_MODE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TRANSFER_MODE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
index 5d30bce7d6c1db37f4f3dd7eb2b6de996b099282..5091f9fbb408862513bcc79bad54b377b06294ba 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_PUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PUT \- make an HTTP PUT request
index dd67ab7b04dda5b36b53d90eab23acb21c0cc253..58708221f9c887bba8c8471920d47391ca16d316 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_QUOTE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_QUOTE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_QUOTE \- (S)FTP commands to run before transfer
@@ -70,8 +72,8 @@ 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"
-The ln and symlink commands create a symbolic link at the target_file location
-pointing to the source_file location.
+The \fBln\fP and \fBsymlink\fP commands create a symbolic link at the
+target_file location pointing to the source_file location.
 .IP "mkdir directory_name"
 The mkdir command creates the directory named by the directory_name operand.
 .IP "mtime date file"
@@ -79,7 +81,8 @@ 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"
-The pwd command returns the absolute pathname of the current working directory.
+The \fBpwd\fP command returns the absolute path of the current working
+directory.
 .IP "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.
index 0abf28472b33cc188432c0555c5a1258f09cd4c2..80efdeedb01a45b0af2cc88be327e26e94bde852 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RANDOM_FILE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RANDOM_FILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RANDOM_FILE \- file to read random data from
@@ -31,6 +33,8 @@ CURLOPT_RANDOM_FILE \- file to read random data from
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RANDOM_FILE, char *path);
 .fi
 .SH DESCRIPTION
+Deprecated option. It serves no purpose anymore.
+
 Pass a char * to a null-terminated file name. The file might be used to read
 from to seed the random engine for SSL and more.
 
@@ -51,7 +55,10 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Always
+If built with TLS enabled. Only the OpenSSL backend will use this, and only
+with OpenSSL versions before 1.1.0.
+
+This option was deprecated in 7.84.0.
 .SH RETURN VALUE
 Returns CURLE_OK on success or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
index fcf712505d714724af650c58d338b2d6879da8c0..d2c828ff126c247fa453d284af54de69e0180a8d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RANGE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RANGE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RANGE \- byte range to request
@@ -44,15 +46,10 @@ 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
 RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should be given in
-npt, utc, or smpte formats.
+\fBnpt\fP, \fButc\fP, or \fBsmpte\fP formats.
 
 For HTTP PUT uploads this option should not be used, since it may conflict with
-other options. If you need to upload arbitrary parts of a file (like for
-Amazon's web services) support is limited. We suggest set resume position using
-\fICURLOPT_RESUME_FROM(3)\fP, set end (resume+size) position using
-\fICURLOPT_INFILESIZE(3)\fP and seek to the resume position before initiating
-the transfer for each part. For more information refer to
-https://curl.se/mail/lib-2019-05/0012.html
+other options.
 
 Pass a NULL to this option to disable the use of ranges.
 
index 590807532c3d19e41ebd37ffe007990377f67bec..449b24347bc14b3e9db57c8adfe865f7e9c4bfc9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_READDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_READDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_READDATA \- pointer passed to the read callback
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_READDATA, void *pointer);
 .SH DESCRIPTION
 Data \fIpointer\fP to pass to the file read function. If you use the
 \fICURLOPT_READFUNCTION(3)\fP option, this is the pointer you will get as
-input in the 4th argument to the callback.
+input in the fourth argument to the callback.
 
 If you do not specify a read callback but instead rely on the default internal
 read function, this data must be a valid readable FILE * (cast to 'void *').
index c8cd61205ebc080f7a77a7e4d761973797178f9a..4f2daae780b969dac44c497f4fbce181813f26d2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_READFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_READFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_READFUNCTION \- read callback for data uploads
index 9691d463bf33def62e27becf057a26be9df3f6a3..f2329328d2a5c71cf4ba85405a385ca35bbd1bd9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_REDIR_PROTOCOLS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_REDIR_PROTOCOLS 3 "October 12, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
@@ -31,6 +33,10 @@ CURLOPT_REDIR_PROTOCOLS \- protocols allowed to redirect to
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS, long bitmask);
 .fi
 .SH DESCRIPTION
+This option is deprecated. We strongly recommend using
+\fICURLOPT_REDIR_PROTOCOLS_STR(3)\fP instead because this option cannot
+control all available protocols!
+
 Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
 limits what protocols libcurl may use in a transfer that it follows to in a
 redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
@@ -100,7 +106,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.19.4, before then it would follow all protocols.
+Added in 7.19.4, before then it would follow all protocols. Deprecated
+since 7.85.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3
new file mode 100644 (file)
index 0000000..395b195
--- /dev/null
@@ -0,0 +1,92 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_REDIR_PROTOCOLS_STR 3 "September 13, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_REDIR_PROTOCOLS_STR \- protocols allowed to redirect to
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_REDIR_PROTOCOLS_STR,
+                          char *spec);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a string that holds a comma-separated list of case
+insensitive protocol names (URL schemes). That list limits what protocols
+libcurl may use in a transfer that it follows to in a redirect when
+\fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This option allows applications to
+limit specific transfers to only be allowed to use a subset of protocols in
+redirections.
+
+Protocols denied by \fICURLOPT_PROTOCOLS_STR(3)\fP are not overridden by this
+option.
+
+By default libcurl will allow HTTP, HTTPS, FTP and FTPS on redirects (since
+7.65.2).  Older versions of libcurl allowed all protocols on redirect except
+several disabled for security reasons: Since 7.19.4 FILE and SCP are disabled,
+and since 7.40.0 SMB and SMBS are also disabled.
+
+These are the available protocols:
+
+DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
+MQTT, POP3, POP3S, RTMP, RTMPE, RTMPS, RTMPT, RTMPTE, RTMPTS, RTSP, SCP, SFTP,
+SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS
+
+You can set "ALL" as a short-cut to enable all protocols. Note that by setting
+all, you may enable protocols that were not supported the day you write this
+but are introduced in a future libcurl version.
+
+If trying to set a non-existing protocol or if no matching protocol at all is
+set, it returns error.
+.SH DEFAULT
+HTTP, HTTPS, FTP and FTPS (Added in 7.65.2).
+
+Older versions defaulted to all protocols except FILE, SCP and since 7.40.0
+SMB and SMBS.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  /* pass in the URL from an external source */
+  curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
+
+  /* only allow redirects to HTTP and HTTPS URLs */
+  curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR, "http,https");
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.85.0.
+.SH RETURN VALUE
+Returns CURLE_UNKNOWN_OPTION if the option is not implemented,
+CURLE_UNSUPPORTED_PROTOCOL if a listed protocol is not supported or disabled,
+CURLE_BAD_FUNCTION_ARGUMENT if no protocol is listed else CURLE_OK.
+.SH "SEE ALSO"
+.BR CURLOPT_PROTOCOLS_STR "(3), "
index 7311bf71c40b41d83596b66ef3d503fc170810c7..b0650c6b67e8f50aff4605360fdc458327ea483b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_REFERER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_REFERER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_REFERER \- the HTTP referer header
index b48898aa68d958b5daafa9c53407341f0052ca03..169df478e60f148dac53eea3e2b8499f4a35ef07 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_REQUEST_TARGET 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_REQUEST_TARGET 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_REQUEST_TARGET \- alternative target for this request
index 2c214233436d9f056243837bc34e25a247fb12de..f0da50657a228ba62f04b56bcb5909dd95579b9b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESOLVE 3 "December 07, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESOLVE \- provide custom host name to IP address resolves
@@ -45,7 +47,7 @@ Each resolve rule to add should be written using the format
 
 \&... where HOST is the name libcurl will try to resolve, PORT is the port
 number of the service where libcurl wants to connect to the HOST and ADDRESS
-is one or more numerical IP addresses. If you specify multiple ip addresses
+is one or more numerical IP addresses. If you specify multiple IP addresses
 they need to be separated by comma. If libcurl is built to support IPv6, each
 of the ADDRESS entries can of course be either IPv4 or IPv6 style addressing.
 
@@ -80,7 +82,7 @@ All
 .nf
 CURL *curl;
 struct curl_slist *host = NULL;
-host = curl_slist_append(NULL, "example.com:80:127.0.0.1");
+host = curl_slist_append(NULL, "example.com:443:127.0.0.1");
 
 curl = curl_easy_init();
 if(curl) {
index 165bd409136b5baebccdd449d4983eef114f45f2..8fbb7d12f7bd2072977fcd7b31201ae05d516237 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESOLVER_START_DATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_DATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESOLVER_START_DATA \- pointer passed to the resolver start callback
index 736cd8360b73a2984c16bf57acab5dfa3a9320e0..7159a0be25027f382f73f0b3c4eac8ed97b8a094 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESOLVER_START_FUNCTION 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVER_START_FUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESOLVER_START_FUNCTION \- callback called before a new name resolve is started
index 4fb775d0cf6b68b24284b7ce8aa1284a5bc4b6bd..4b848f2fb1f164d0680e78b9d0488ec965725abf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESUME_FROM 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESUME_FROM \- offset to resume transfer from
index 0051736b37167b8344f2644d05b2850b037c213e..9414ce7a381c27551b9a1eef1d421964cdb869a7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESUME_FROM_LARGE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESUME_FROM_LARGE \- offset to resume transfer from
index e6df571caba51772e72bdb774d01c67667b4e211..f099d9da975d1c5f849141eecda0636b9010fe53 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_CLIENT_CSEQ \- RTSP client CSEQ number
index aea5994871910d24bae9fa2a9d594e031ad35960..28323fc7dbf20f356498e04c150960bef914919d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_REQUEST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_REQUEST 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_REQUEST \- RTSP request
@@ -60,10 +62,11 @@ extract and use the session ID in the response to this request. The session ID
 is not needed for this method.
 .IP CURL_RTSPREQ_PLAY
 Send a Play command to the server. Use the \fICURLOPT_RANGE(3)\fP option to
-modify the playback time (e.g. 'npt=10-15').
+modify the playback time (e.g. \fInpt=10-15\fP).
 .IP CURL_RTSPREQ_PAUSE
 Send a Pause command to the server. Use the \fICURLOPT_RANGE(3)\fP option with
-a single value to indicate when the stream should be halted. (e.g. npt='25')
+a single value to indicate when the stream should be
+halted. (e.g. \fInpt=25\fP)
 .IP CURL_RTSPREQ_TEARDOWN
 This command terminates an RTSP session. Simply closing a connection does not
 terminate the RTSP session since it is valid to control an RTSP session over
index e87a781d9289bb23024e5a4c4202718ea2e09981..ad087a6a6bf67acac418714b93da0408872f55de 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_SERVER_CSEQ 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_SERVER_CSEQ \- RTSP server CSEQ number
index 88b9e70611262998f84852874475bdc6180fcf0e..be831dc82eab5b3b968f68fef0d098ca0736f829 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_SESSION_ID 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SESSION_ID 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_SESSION_ID \- RTSP session ID
index 38c14d2e47e55fa2b80775d2b152cb31a19348b3..6831fc00352bdab21871675d341825a271ed805e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_STREAM_URI 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_STREAM_URI 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_STREAM_URI \- RTSP stream URI
index 0e092d1e1bdeee4b56da7becda9a345d8849b372..30eb86ebed0c455819e44a220224993c54e69c8c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_TRANSPORT 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_TRANSPORT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_TRANSPORT \- RTSP Transport: header
index e80f62b06d5a5f6b2b3d65d136f9769979fff0b8..57bcc64865b82be3ec7d665245774f2315e757c9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SASL_AUTHZID 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SASL_AUTHZID 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_SASL_AUTHZID \- authorisation identity (identity to act as)
+CURLOPT_SASL_AUTHZID \- authorization identity (identity to act as)
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -32,21 +34,21 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SASL_AUTHZID, char *authzid);
 .fi
 .SH DESCRIPTION
 Pass a char * as parameter, which should be pointing to the null-terminated
-authorisation identity (authzid) for the transfer. Only applicable to the PLAIN
-SASL authentication mechanism where it is optional.
+authorization identity (\fIauthzid\fP) for the transfer. Only applicable to
+the PLAIN SASL authentication mechanism where it is optional.
 
-When not specified only the authentication identity (authcid) as specified by
-the username will be sent to the server, along with the password. The server
-will derive a authzid from the authcid when not provided, which it will then
-uses internally.
+When not specified only the authentication identity (\fIauthcid\fP) as
+specified by the username will be sent to the server, along with the
+password. The server will derive a \fIauthzid\fP from the \fIauthcid\fP when
+not provided, which it will then uses internally.
 
-When the authzid is specified, the use of which is server dependent, it can be
-used to access another user's inbox, that the user has been granted access to,
-or a shared mailbox for example.
+When the \fIauthzid\fP is specified, the use of which is server dependent, it
+can be used to access another user's inbox, that the user has been granted
+access to, or a shared mailbox for example.
 .SH DEFAULT
 blank
 .SH PROTOCOLS
-IMAP, POP3 and SMTP
+IMAP, LDAP, POP3 and SMTP
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
@@ -60,7 +62,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.66.0
+Added in 7.66.0. Support for OpenLDAP added in 7.82.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index 5cc405d329240356c1fe3fac7901470683b435fa..7ab2d977897fe6be2728ac982223c2242df4eb17 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SASL_IR 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SASL_IR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SASL_IR \- send initial response in first packet
index f85051cf2bce94102a31b58091f36b70563ddc6b..ddcca161730f82f75b841894e1a6a00a8d2a04bd 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SEEKDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SEEKDATA \- pointer passed to the seek callback
index cee5c8b6d4a9d3774478f2ac308b256ef278dd0f..fd6c6206b8d7089373dc23b0a2c6b14bd4a3e8d2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SEEKFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
diff --git a/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3
new file mode 100644 (file)
index 0000000..08e59c5
--- /dev/null
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_SERVER_RESPONSE_TIMEOUT 3 "July 04, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_SERVER_RESPONSE_TIMEOUT \- time allowed to wait for server response
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVER_RESPONSE_TIMEOUT,
+                          long timeout);
+.fi
+.SH DESCRIPTION
+Pass a long.  Causes libcurl to set a \fItimeout\fP period (in seconds) on the
+amount of time that the server is allowed to take in order to send a response
+message for a command before the session is considered dead.  While libcurl is
+waiting for a response, this value overrides \fICURLOPT_TIMEOUT(3)\fP. It is
+recommended that if used in conjunction with \fICURLOPT_TIMEOUT(3)\fP, you set
+\fICURLOPT_SERVER_RESPONSE_TIMEOUT(3)\fP to a value smaller than
+\fICURLOPT_TIMEOUT(3)\fP.
+
+This option was formerly known as \fBCURLOPT_FTP_RESPONSE_TIMEOUT\fP.
+.SH DEFAULT
+None
+.SH PROTOCOLS
+FTP, IMAP, POP3 and SMTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/slow.txt");
+  /* wait no more than 23 seconds */
+  curl_easy_setopt(curl, CURLOPT_SERVER_RESPONSE_TIMEOUT, 23L);
+  ret = curl_easy_perform(curl);
+
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.10.8. Used under this name since 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if supported, and CURLE_UNKNOWN_OPTION if not. Returns
+CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value or a value that when
+converted to milliseconds is too large.
+.SH "SEE ALSO"
+.BR CURLOPT_TIMEOUT "(3), " CURLOPT_CONNECTTIMEOUT "(3), "
+.BR CURLOPT_LOW_SPEED_LIMIT "(3), "
index 84d0b48bbe28d3edc2c22d9d73f6fcae5f989063..28481e4e459f3872ad20359a9bb72fc68a1b0742 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SERVICE_NAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SERVICE_NAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SERVICE_NAME \- authentication service name
@@ -33,15 +35,15 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
 .SH DESCRIPTION
 Pass a char * as parameter to a string holding the \fIname\fP of the service
 for DIGEST-MD5, SPNEGO and Kerberos 5 authentication mechanisms. The default
-service names are "ftp", "HTTP", "imap", "pop" and "smtp". This option allows
-you to change them.
+service names are "ftp", "HTTP", "imap", "ldap", "pop" and "smtp". This option
+allows you to change them.
 
 The application does not have to keep the string around after setting this
 option.
 .SH DEFAULT
 See above
 .SH PROTOCOLS
-HTTP, FTP, IMAP, POP and SMTP
+HTTP, FTP, IMAP, LDAP, POP3 and SMTP
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
@@ -53,7 +55,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.43.0 for HTTP, 7.49.0 for FTP, IMAP, POP3 and SMTP.
+Added in 7.43.0 for HTTP, 7.49.0 for FTP, IMAP, POP3 and SMTP,
+7.82.0 for OpenLDAP.
 .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.
index ebf3ca795353090cb93f95c0af5fa1b4cad7aed1..6519a5c89383a9bf832080fe51abc97233641aaf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SHARE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SHARE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SHARE \- share handle to use
@@ -40,8 +42,8 @@ data. If the curl handles are used simultaneously in multiple threads, you
 \fIcurl_share_setopt(3)\fP for details.
 
 If you add a share that is set to share cookies, your easy handle will use
-that cookie cache and get the cookie engine enabled. If you unshare an object
-that was using cookies (or change to another object that does not share
+that cookie cache and get the cookie engine enabled. If you stop sharing an
+object that was using cookies (or change to another object that does not share
 cookies), the easy handle will get its cookie engine disabled.
 
 Data that the share object is not set to share will be dealt with the usual
index d1d52b0c84cb0a06bdadcef7022bbb6e9c56b1ae..16bfbcbfc8c4ce334e855604423a0b95b2a24b24 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKOPTDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKOPTDATA \- pointer to pass to sockopt callback
index c8a99543e58f284fe4c2fd16aaa062b678a54702..078361317f29140aec80c796026564bfa236eb59 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKOPTFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKOPTFUNCTION \- callback for setting socket options
index 4bc4411a267e324c8c500754511a39f75315408e..3c1c7e7c04b2239a84a8fe3fc8a473fe3a589d6d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKS5_AUTH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_AUTH 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKS5_AUTH \- methods for SOCKS5 proxy authentication
@@ -51,7 +53,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://user:pass@myproxy.com");
 
   /* enable username/password authentication only */
-  curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, CURLAUTH_BASIC);
+  curl_easy_setopt(curl, CURLOPT_SOCKS5_AUTH, (long)CURLAUTH_BASIC);
 
   /* Perform the request */
   curl_easy_perform(curl);
index 89dbb34f6a64319b67b306cd1f53f5d8da00ea3e..7b36fa8060db15b2eadd9a3d1186097a9f445a7a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_SOCKS5_GSSAPI_NEC \- socks proxy gssapi negotiation protection
+CURLOPT_SOCKS5_GSSAPI_NEC \- SOCKS proxy GSSAPI negotiation protection
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -31,7 +33,7 @@ CURLOPT_SOCKS5_GSSAPI_NEC \- socks proxy gssapi negotiation protection
 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
+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
 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
index bce2f48cf933dc5ba1e211bf8bdfb4956f634c9d..ff751f74771f16ca37041ebdf8d2a79bc6aa6151 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
@@ -34,9 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE,
 .SH DESCRIPTION
 Deprecated since 7.49.0. Use \fICURLOPT_PROXY_SERVICE_NAME(3)\fP instead.
 
-Pass a char * as parameter to a string holding the \fIname\fP of the service.
-The default service name for a SOCKS5 server is "rcmd". This option allows you
-to change it.
+Pass a \fBchar *\fP as parameter to a string holding the \fIname\fP of the
+service.  The default service name for a SOCKS5 server is \fI"rcmd"\fP. This
+option allows you to change it.
 
 The application does not have to keep the string around after setting this
 option.
index e0a30c0d5a087c78712fe8ab81fb30535bc96f10..4484e611268e15d757ff76d59654656c04d50a59 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_AUTH_TYPES 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_AUTH_TYPES 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_AUTH_TYPES \- auth types for SFTP and SCP
@@ -40,7 +42,7 @@ CURLSSH_AUTH_HOST has no effect. If CURLSSH_AUTH_AGENT is used, libcurl
 attempts to connect to ssh-agent or pageant and let the agent attempt the
 authentication.
 .SH DEFAULT
-None
+CURLSSH_AUTH_ANY (all available)
 .SH PROTOCOLS
 SFTP and SCP
 .SH EXAMPLE
index 87334321bd6be16947fe1c6bdfcad10d979504f2..713f8b68fd2710c8bacaf56425d215e1cf7b1e12 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_COMPRESSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_COMPRESSION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_COMPRESSION \- enable SSH compression
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3
new file mode 100644 (file)
index 0000000..aeecef8
--- /dev/null
@@ -0,0 +1,66 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_SSH_KEYDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_SSH_HOSTKEYDATA \- pointer to pass to the SSH host key callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOSTKEYDATA, void *pointer);
+.fi
+.SH DESCRIPTION
+Pass a void * as parameter. This \fIpointer\fP will be passed along verbatim
+to the callback set with \fICURLOPT_SSH_HOSTKEYFUNCTION(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SCP and SFTP
+.SH EXAMPLE
+.nf
+int hostkeycb(void *clientp,    /* passed with CURLOPT_SSH_HOSTKEYDATA */
+              int keytype,      /* CURLKHTYPE */
+              const char * key, /* host key to check */
+              size_t keylen);   /* length of the key */
+{
+  /* 'clientp' points to the callback_data struct */
+  /* investigate the situation and return the correct value */
+  return CURLKHMATCH_OK;
+}
+{
+  curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt");
+  curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb);
+  curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0, works only with libssh2 backend.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_HOSTKEYFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3
new file mode 100644 (file)
index 0000000..9b996e7
--- /dev/null
@@ -0,0 +1,88 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_SSH_HOSTKEYFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_SSH_HOSTKEYFUNCTION \- callback to check host key
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+int keycallback(void *clientp,
+                int keytype,
+                const char *key,
+                size_t keylen);
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOSTKEYFUNCTION,
+                          keycallback);
+.fi
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above. It overrides \fICURLOPT_SSH_KNOWNHOSTS(3)\fP.
+
+This callback gets called when the verification of the SSH host key is needed.
+
+\fBkey\fP is \fBkeylen\fP bytes long and is the key to check. \fBkeytype\fP
+says what type it is, from the \fBCURLKHTYPE_*\fP series in the
+\fBcurl_khtype\fP enum.
+
+\fBclientp\fP is a custom pointer set with \fICURLOPT_SSH_HOSTKEYDATA(3)\fP.
+
+The callback MUST return one of the following return codes to tell libcurl how
+to act:
+.IP CURLKHMATCH_OK
+The host key is accepted, the connection should continue.
+.IP CURLKHMATCH_MISMATCH
+the host key is rejected, the connection is canceled.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+SCP and SFTP
+.SH EXAMPLE
+.nf
+int hostkeycb(void *clientp,    /* passed with CURLOPT_SSH_HOSTKEYDATA */
+              int keytype,      /* CURLKHTYPE */
+              const char * key, /* host key to check */
+              size_t keylen);   /* length of the key */
+{
+  /* 'clientp' points to the callback_data struct */
+  /* investigate the situation and return the correct value */
+  return CURLKHMATCH_OK;
+}
+{
+  curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/thisfile.txt");
+  curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYFUNCTION, hostkeycb);
+  curl_easy_setopt(curl, CURLOPT_SSH_HOSTKEYDATA, &callback_data);
+
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.84.0 , work only with libssh2 backend.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_SSH_HOSTKEYDATA "(3), "
+.BR CURLOPT_SSH_KNOWNHOSTS "(3), "
index d1dcf2b295f0cc879be8352333608d42d9dcc294..7a0fd541e0953e738292b9e0b55a37de59a69d86 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "November 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- MD5 checksum of SSH server public key
@@ -33,7 +35,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
 .SH DESCRIPTION
 Pass a char * pointing to a string containing 32 hexadecimal digits. The
 string should be the 128 bit MD5 checksum of the remote host's public key, and
-libcurl will reject the connection to the host unless the md5sums match.
+libcurl will reject the connection to the host unless the MD5 checksum match.
 
 The application does not have to keep the string around after setting this
 option.
@@ -59,3 +61,4 @@ Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
 .SH "SEE ALSO"
 .BR CURLOPT_SSH_PUBLIC_KEYFILE "(3), " CURLOPT_SSH_AUTH_TYPES "(3), "
+.BR CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 "(3), "
index 83d8ab016cc04c66750ba3f75d45eb6ea6767e9e..62b45b854986e57044ce6795a92f1dd297f805b9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 \- SHA256 hash of SSH server public key
@@ -53,7 +55,7 @@ if(curl) {
 .fi
 .SH AVAILABILITY
 Added in 7.80.0
-Requires the libssh2 back-end.
+Requires the libssh2 backend.
 .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.
index 7bcd6cac622c4f125a6e5a9048b544c08d520cff..59185022629db10b1a18345bc31fd5f3a83da9f1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_KEYDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_KEYDATA \- pointer passed to the SSH key callback
index 5460d915b4b0e329bc3b97e691d1a264eae5d50f..ca280168693b587c928d1e68058aa60440497962 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_KEYFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
@@ -33,9 +35,8 @@ enum curl_khstat {
   CURLKHSTAT_FINE,
   CURLKHSTAT_REJECT, /* reject the connection, return an error */
   CURLKHSTAT_DEFER,  /* do not accept it, but we cannot answer right
-                        now so this causes a CURLE_DEFER error but
-                        otherwise the connection will be left intact
-                        etc */
+                        now. Causes a CURLE_PEER_FAILED_VERIFICATION error but
+                        the connection will be left intact */
   CURLKHSTAT_FINE_REPLACE
 };
 
index 8f7a89b6af992976666c9e93c3f27ed2e76a7e1b..3df7f95c0aaafc19f8a769a390147545c99fea8b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_KNOWNHOSTS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KNOWNHOSTS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
@@ -36,7 +38,7 @@ known_host file to use.  The known_hosts file should use the OpenSSH file
 format as supported by libssh2. If this file is specified, libcurl will only
 accept connections with hosts that are known and present in that file, with a
 matching public key. Use \fICURLOPT_SSH_KEYFUNCTION(3)\fP to alter the default
-behavior on host and key (mis)matching.
+behavior on host and key matches and mismatches.
 
 The application does not have to keep the string around after setting this
 option.
index b9cd0b8d480a2fb333d0e79758c47e9bf42b2e8f..e13a83a111acf72558cb7fce6a6f3b7860b5f05d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_PRIVATE_KEYFILE \- private key file for SSH auth
index d7c8d9d90ff09708b6ff2998fd26896a17b6c669..c77b2ac813602ec7fbd07d89b54393e1b4f2f967 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_PUBLIC_KEYFILE \- public key file for SSH auth
index c78de5645d21fbc367b2175763b6b4d359cbd786..1ee4365758c9a33800e0c4f7d35a25fd16282ceb 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLCERT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLCERT \- SSL client certificate
@@ -41,17 +43,17 @@ you wish to authenticate with as it is named in the security database. If you
 want to use a file from the current directory, please precede it with "./"
 prefix, in order to avoid confusion with a nickname.
 
-(Schannel only) Client certificates can be specified by a path expression to
-a certificate store. (You can import PFX to a store first). You can use
-"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
-in the system certificates store, for example,
-"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
-usually a SHA-1 hex string which you can see in certificate details. Following
-store locations are supported: CurrentUser, LocalMachine, CurrentService,
-Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
-LocalMachineEnterprise.
-Schannel also support P12 certificate file, with the string "P12" specified
-with \fICURLOPT_SSLCERTTYPE(3)\fP.
+(Schannel only) Client certificates can be specified by a path expression to a
+certificate store. (You can import \fIPFX\fP to a store first). You can use
+"<store location>\\<store name>\\<thumbprint>" to refer to a certificate in
+the system certificates store, for example,
+\fB"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa"\fP. The thumbprint is usually a
+SHA-1 hex string which you can see in certificate details. Following store
+locations are supported: \fBCurrentUser\fP, \fBLocalMachine\fP,
+\fBCurrentService\fP, \fBServices\fP, \fBCurrentUserGroupPolicy\fP,
+\fBLocalMachineGroupPolicy\fP, \fBLocalMachineEnterprise\fP.  Schannel also
+support P12 certificate file, with the string "P12" specified with
+\fICURLOPT_SSLCERTTYPE(3)\fP.
 
 When using a client certificate, you most likely also need to provide a
 private key with \fICURLOPT_SSLKEY(3)\fP.
index 9d6db209ada0f6b854af9d29899e603e3d443afe..c045b0e50643e2de5a0ced7843bd92e9b9f858ed 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLCERTTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERTTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLCERTTYPE \- type of client SSL certificate
@@ -32,10 +34,12 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERTTYPE, char *type);
 .fi
 .SH DESCRIPTION
 Pass a pointer to a null-terminated string as parameter. The string should be
-the format of your certificate. Supported formats are "PEM" and "DER", except
-with Secure Transport. OpenSSL (versions 0.9.3 and later) and Secure Transport
-(on iOS 5 or later, or OS X 10.7 or later) also support "P12" for
-PKCS#12-encoded files.
+the format of your certificate.
+
+Supported formats are "PEM" and "DER", except with Secure Transport or
+Schannel. OpenSSL (versions 0.9.3 and later), Secure Transport (on iOS 5 or
+later, or OS X 10.7 or later) and Schannel support "P12" for PKCS#12-encoded
+files.
 
 The application does not have to keep the string around after setting this
 option.
index bf188d9f84b5b27d4ddf56e1fa4d278265e65b62..f6b064ebfc987d4fc59353e7e871709aa0055ad3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLCERT_BLOB 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLCERT_BLOB \- SSL client certificate from memory blob
@@ -34,8 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLCERT_BLOB,
 .SH DESCRIPTION
 Pass a pointer to a curl_blob structure, which contains (pointer and size) a
 client certificate. The format must be "P12" on Secure Transport or
-Schannel. The format must be "P12" or "PEM" on OpenSSL. The string "P12" or
-"PEM" must be specified with \fICURLOPT_SSLCERTTYPE(3)\fP.
+Schannel. The format must be "P12" or "PEM" on OpenSSL. The format must be
+"DER" or "PEM" on mbedTLS. The format must be specified with
+\fICURLOPT_SSLCERTTYPE(3)\fP.
 
 If the blob is initialized with the flags member of struct curl_blob set to
 CURL_BLOB_COPY, the application does not have to keep the buffer around after
@@ -64,8 +67,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.71.0. This option is supported by the OpenSSL, Secure Transport and
-Schannel backends.
+Added in 7.71.0. This option is supported by the OpenSSL, Secure Transport,
+Schannel and mbedTLS (since 7.78.0) backends.
 .SH RETURN VALUE
 Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
 CURLE_OUT_OF_MEMORY if there was insufficient heap space.
index b55ec08227d64de17b61a0e2599535a710c96f89..69bb6154da5c65a1fd0b6fd982dc85a6da18c13b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLENGINE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLENGINE \- SSL engine identifier
index 35e5a822782dbf5828f66bec396359ca353c81b5..9dc2d5f5091782280daf2318d89d8bad3bf20e0d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLENGINE_DEFAULT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
index 81e4aca8c4babf0d6403c2f4e6c203424ad86ea7..0eb972f8c858d6e6fab731d8f9fab07a2ff4c80f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLKEY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_SSLKEY \- private keyfile for TLS and SSL client cert
+CURLOPT_SSLKEY \- private key file for TLS and SSL client cert
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -35,9 +37,9 @@ Pass a pointer to a null-terminated string as parameter. The string should be
 the file name of your private key. The default format is "PEM" and can be
 changed with \fICURLOPT_SSLKEYTYPE(3)\fP.
 
-(iOS and Mac OS X only) This option is ignored if curl was built against
-Secure Transport. Secure Transport expects the private key to be already
-present in the keychain or PKCS#12 file containing the certificate.
+(Windows, iOS and Mac OS X) This option is ignored by Secure Transport and
+Schannel SSL backends because they expect the private key to be already present
+in the key-chain or PKCS#12 file containing the certificate.
 
 The application does not have to keep the string around after setting this
 option.
index 43a68edbe9e320de160f81bb69058c796023c35e..e43a23b573bac07b8773c4ea58a1a0aa24c8f6bc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLKEYTYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEYTYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLKEYTYPE \- type of the private key file
index ed0dbfb58a6694e0d34ae3b1d6322aa21c0d10d7..f76ba596b9a02cfa0252e90d247adc5ec8a6f577 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLKEY_BLOB 3 "October 25, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY_BLOB 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLKEY_BLOB \- private key for client cert from memory blob
index 90d19b7b831a9534056d2c46df231b97086f40e7..e7cdd017f6b1bfde5e233ba6b55a2c0766670a30 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLVERSION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLVERSION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLVERSION \- preferred TLS/SSL version
@@ -98,7 +100,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
 
   /* ask libcurl to use TLS version 1.0 or later */
-  curl_easy_setopt(curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
+  curl_easy_setopt(curl, CURLOPT_SSLVERSION, (long)CURL_SSLVERSION_TLSv1);
 
   /* Perform the request */
   curl_easy_perform(curl);
index d6066507db7d681d53dbd41252ed4a6ecbea566b..28e72c602e68c036001c0449825bc06c4a014bc8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_CIPHER_LIST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CIPHER_LIST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_CIPHER_LIST \- ciphers to use for TLS
@@ -49,6 +51,13 @@ enabled.
 For WolfSSL, valid examples of cipher lists include \fBECDHE-RSA-RC4-SHA\fP,
 \fBAES256-SHA:AES256-SHA256\fP, etc.
 
+For BearSSL, valid examples of cipher lists include
+\fBECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256\fP, or when using IANA names
+\fBTLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\fP,
+etc.
+With BearSSL you do not add/remove ciphers. If one uses this option then all
+known ciphers are disabled and only those passed in are enabled.
+
 you will find more details about cipher lists on this URL:
 
  https://curl.se/docs/ssl-ciphers.html
@@ -70,6 +79,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
+Added in 7.9, in 7.83.0 for BearSSL
+
 If built TLS enabled.
 .SH RETURN VALUE
 Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
index 2d984d238026d085176fff6124d108d9a7fdfc68..65b82f5acda2d3638943933681798da2b1b19f0d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_CTX_DATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_DATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_SSL_CTX_DATA \- pointer passed to ssl_ctx callback
+CURLOPT_SSL_CTX_DATA \- pointer passed to SSL context callback
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -116,8 +118,8 @@ int main(void)
 }
 .fi
 .SH AVAILABILITY
-Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL and in 7.54.0 for
-mbedTLS. Other SSL backends are not supported.
+Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL, in 7.54.0 for mbedTLS,
+in 7.83.0 in BearSSL. Other SSL backends are not supported.
 .SH RETURN VALUE
 CURLE_OK if supported; or an error such as:
 
index 9f377d0b82c1a71ef13a351c3bea510012a00012..959d178cf25bf4dd61736e3fc3c7baca0f6497b4 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_CTX_FUNCTION 3 "July 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_FUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL or mbedTLS
@@ -33,8 +35,9 @@ CURLcode ssl_ctx_callback(CURL *curl, void *ssl_ctx, void *userptr);
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_CTX_FUNCTION,
                           ssl_ctx_callback);
 .SH DESCRIPTION
-This option only works for libcurl powered by OpenSSL, wolfSSL or mbedTLS. If
-libcurl was built against another SSL library this functionality is absent.
+This option only works for libcurl powered by OpenSSL, wolfSSL, mbedTLS or
+BearSSL. If libcurl was built against another SSL library this functionality
+is absent.
 
 Pass a pointer to your callback function, which should match the prototype
 shown above.
@@ -43,8 +46,9 @@ This callback function gets called by libcurl just before the initialization
 of an SSL connection after having processed all other SSL related options to
 give a last chance to an application to modify the behavior of the SSL
 initialization. The \fIssl_ctx\fP parameter is actually a pointer to the SSL
-library's \fISSL_CTX\fP for OpenSSL or wolfSSL, and a pointer to
-\fImbedtls_ssl_config\fP for mbedTLS. If an error is returned from the
+library's \fISSL_CTX\fP for OpenSSL or wolfSSL, a pointer to
+\fImbedtls_ssl_config\fP for mbedTLS or a pointer to
+\fIbr_ssl_client_context\fP for BearSSL. If an error is returned from the
 callback no attempt to establish a connection is made and the perform
 operation will return the callback's error code. Set the \fIuserptr\fP
 argument with the \fICURLOPT_SSL_CTX_DATA(3)\fP option.
@@ -65,12 +69,12 @@ unknowingly reusing SSL connections with different properties. To remedy this
 you may set \fICURLOPT_FORBID_REUSE(3)\fP from the callback function.
 
 WARNING: If you are using DNS-over-HTTPS (DoH) via \fICURLOPT_DOH_URL(3)\fP
-then the CTX callback will also be called for those transfers and the curl
-handle is set to an internal handle. \fBThis behavior is subject to change.\fP
-We recommend before performing your transfer set \fICURLOPT_PRIVATE(3)\fP on
-your curl handle so you can identify it in the CTX callback. If you have a
-reason to modify DoH SSL context please let us know on the curl-library mailing
-list because we are considering removing this capability.
+then this callback will also be called for those transfers and the curl handle
+is set to an internal handle. \fBThis behavior is subject to change.\fP We
+recommend before performing your transfer set \fICURLOPT_PRIVATE(3)\fP on your
+curl handle so you can identify it in the context callback. If you have a
+reason to modify DoH SSL context please let us know on the curl-library
+mailing list because we are considering removing this capability.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
@@ -153,8 +157,8 @@ int main(void)
 }
 .fi
 .SH AVAILABILITY
-Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL and in 7.54.0 for
-mbedTLS. Other SSL backends are not supported.
+Added in 7.11.0 for OpenSSL, in 7.42.0 for wolfSSL, in 7.54.0 for mbedTLS,
+in 7.83.0 in BearSSL. Other SSL backends are not supported.
 .SH RETURN VALUE
 CURLE_OK if supported; or an error such as:
 
index ee2d74671aff7ef0db8a9426b5b3a3fbb2a56f42..04bdf8ad4747a5544a7d11e9931caace46fe467b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_EC_CURVES 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_EC_CURVES 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_EC_CURVES \- key exchange curves
index 80cfb926d50c273b98c004462c708c0845b6ee19..06e51b49802ecb55a4694b5648286089c0ce394f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_ENABLE_ALPN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_ENABLE_ALPN \- Application Layer Protocol Negotiation
index cba7cb5b722bbb63f2a654b3e0c3b8e3ff2f5a6c..1824c11c57fc5d4459b5b7725df77f76361a6fc6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_ENABLE_NPN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_NPN 3 "September 01, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_ENABLE_NPN \- use NPN
@@ -31,6 +33,8 @@ CURLOPT_SSL_ENABLE_NPN \- use NPN
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_ENABLE_NPN, long npn);
 .fi
 .SH DESCRIPTION
+Deprecated in 7.86.0. Setting this option has no function.
+
 Pass a long as parameter, 0 or 1 where 1 is for enable and 0 for disable. This
 option enables/disables NPN in the SSL handshake (if the SSL backend libcurl
 is built to use supports it), which can be used to negotiate http2.
@@ -49,7 +53,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.36.0
+Added in 7.36.0. Deprecated in 7.86.0.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index a68ba5c13da90326247c629da2bed6a3ea58b072..f05cb8eb5ea1d05145f1c1dc28465fb92c98f8df 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_FALSESTART 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_FALSESTART 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_FALSESTART \- TLS false start
index ec46537d7279c9d1d7c72bc264a758210e5ad5d5..288ecec87ccedeb8cd48614c48dc0d4dd26d9174 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_OPTIONS 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_OPTIONS \- SSL behavior options
@@ -81,7 +83,7 @@ CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
   /* weaken TLS only for use with silly servers */
-  curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, CURLSSLOPT_ALLOW_BEAST |
+  curl_easy_setopt(curl, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_ALLOW_BEAST |
                    CURLSSLOPT_NO_REVOKE);
   ret = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
index b9879ebfb0fbd6065d26ba52c8191020f865096f..f58e565ed4e81b1dae0ca1886738b2debb7cdd5c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_SESSIONID_CACHE 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_SESSIONID_CACHE \- use the SSL session-ID cache
index 6a9419b16a0d5d7e3ed50a7672ba150b1ca9cdef..6514de7a12f0c4f9417a568b3b3d1caa14c14bf1 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_VERIFYHOST 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYHOST 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
index f3314efbbceda0a029c0eef2cca7abd8ea14e95b..e86a1ed8ed83979cda7307d0af86f85ed2c8cd48 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_VERIFYPEER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYPEER 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
index 5a57847768ee53b4569bfce3cccb0113ffd8db3a..ebbd4c7810cc35816f03968cd6e9836c269c2e09 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_VERIFYSTATUS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
index c437bb52b0f2fa972ab01995ea03d5574fb9fa65..0a8ed81f4086817a2c2b514d395e4c1be0d3815f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STDERR 3 "December 06, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STDERR 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STDERR \- redirect stderr to another stream
index ec25ee5c82d8d6fa6e264ab8ff41eacc5f660fec..3785b8b624b12ad96650375be3e71ec683df73d8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STREAM_DEPENDS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STREAM_DEPENDS \- stream this transfer depends on
index fef001f5ee19fd2806c259945868945b2f064c46..9c10268f81184fd12d6d6187e9a07130bd767b31 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STREAM_DEPENDS_E 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STREAM_DEPENDS_E \- stream this transfer depends on exclusively
index 3dd4d1dd7c8fe370dfcedc4552c1e87280eb6cbd..1c4b08dc4b9a5d381c9559a71815b1b7d3d60e6c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STREAM_WEIGHT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_WEIGHT 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STREAM_WEIGHT \- numerical stream weight
@@ -42,8 +44,7 @@ This option can be set during transfer and will then cause the updated weight
 info get sent to the server the next time an HTTP/2 frame is sent to the
 server.
 
-See section 5.3 of RFC 7540 for protocol details:
-https://httpwg.github.io/specs/rfc7540.html#StreamPriority
+See section 5.3 of RFC 7540 for protocol details.
 
 Streams with the same parent should be allocated resources proportionally
 based on their weight. So if you have two streams going, stream A with weight
index 7124edcea11f3209dfb5fd22d9ba716aae70ec90..eba54bc379e303d2f6ae233f8f7ed3658a154f42 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "September 08, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SUPPRESS_CONNECT_HEADERS \- suppress proxy CONNECT response headers from user callbacks
index e7d646903305700e00585a45f855dc25f2069e8b..d635f887261226c4e96d4f6476421acee3f19bf7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_FASTOPEN 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_FASTOPEN 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_FASTOPEN \- TCP Fast Open
@@ -50,8 +52,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.49.0. This option is currently only supported on Linux and  OS X
-El Capitan.
+Added in 7.49.0. This option is currently only supported on Linux and macOS
+10.11 or later.
 .SH RETURN VALUE
 Returns CURLE_OK if fast open is supported by the operating system, otherwise
 returns CURLE_NOT_BUILT_IN.
index f6b332f99e215683a2a0a6fd8501e847be9d6d69..f4e6c29e3a66d1f443e0b1ba475a253d964f9ace 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_KEEPALIVE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPALIVE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_KEEPALIVE \- TCP keep-alive probing
index 589b2ab5a902fac1f49f8427fc6563d809e61692..348ee269d0e2b7e72b435cee0accee879c390540 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_KEEPIDLE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPIDLE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_KEEPIDLE \- TCP keep-alive idle time wait
@@ -34,6 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPIDLE, long delay);
 Pass a long. Sets the \fIdelay\fP, in seconds, that the operating system will
 wait while the connection is idle before sending keepalive probes. Not all
 operating systems support this option.
+
+The maximum value this accepts is 2147483648. Any larger value will be capped
+to this amount.
 .SH DEFAULT
 60
 .SH PROTOCOLS
index 2aeecb9d62f7b5c26b724c12ac258f33ca2493d0..b3923412ee0b8637a58950581e18e2453b0f28a6 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_KEEPINTVL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPINTVL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_KEEPINTVL \- TCP keep-alive interval
@@ -34,6 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_KEEPINTVL, long interval);
 Pass a long. Sets the interval, in seconds, that the operating system will
 wait between sending keepalive probes. Not all operating systems support this
 option. (Added in 7.25.0)
+
+The maximum value this accepts is 2147483648. Any larger value will be capped
+to this amount.
 .SH DEFAULT
 60
 .SH PROTOCOLS
index e71ee46150c156e6b29e790aec37245b27280e39..cea6fe6036624e206f5501c9a63ef824341ee91b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_NODELAY 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_NODELAY 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
@@ -31,14 +33,14 @@ CURLOPT_TCP_NODELAY \- the TCP_NODELAY option
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_NODELAY, long nodelay);
 .fi
 .SH DESCRIPTION
-Pass a long specifying whether the TCP_NODELAY option is to be set or cleared
-(1L = set, 0 = clear). The option is set by default. This will have no effect
-after the connection has been established.
+Pass a long specifying whether the \fITCP_NODELAY\fP option is to be set or
+cleared (1L = set, 0 = clear). The option is set by default. This will have no
+effect after the connection has been established.
 
 Setting this option to 1L will disable TCP's Nagle algorithm on this
 connection. The purpose of this algorithm is to try to minimize the number of
 small packets on the network (where "small packets" means TCP segments less
-than the Maximum Segment Size (MSS) for the network).
+than the Maximum Segment Size for the network).
 
 Maximizing the amount of data sent per TCP segment is good because it
 amortizes the overhead of the send. However, in some cases small segments may
index 5d1d42edf65a3a57f2331d95b86fe2b09a734a65..5c2e497ebc1e20d8735e59dd09d668abf0fd21c9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TELNETOPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TELNETOPTIONS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TELNETOPTIONS \- set of telnet options
@@ -34,8 +36,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
 .SH DESCRIPTION
 Provide a pointer to a curl_slist with variables to pass to the telnet
 negotiations. The variables should be in the format <option=value>. libcurl
-supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET
-standard for details.
+supports the options \fBTTYPE\fP, \fBXDISPLOC\fP and \fBNEW_ENV\fP. See the
+TELNET standard for details.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
index eea9902fdae7437e447d945bb8e7e6f74b2b89c7..0bc67b2800276243cf22eb236e7b20339371f541 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TFTP_BLKSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_BLKSIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TFTP_BLKSIZE \- TFTP block size
@@ -34,9 +36,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_BLKSIZE, long blocksize);
 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
 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 acknowledgement
-or returns an option acknowledgement with no blksize, the default of 512 bytes
-will be used.
+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
+bytes will be used.
 .SH DEFAULT
 512
 .SH PROTOCOLS
index a9156f0e026978e35181c018984f1be9e9ca8496..1a7ac9d6060479c4be0edccdb9fc1d1c53ac1c15 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TFTP_NO_OPTIONS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TFTP_NO_OPTIONS \- send no TFTP options requests
@@ -32,10 +34,10 @@ 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 (RRQs/WRQs).
+and RFC2349 from read and write requests.
 
-This option improves interop with some legacy servers that do not acknowledge
-or properly implement TFTP options. When this option is used
+This option improves interoperability with legacy servers that do not
+acknowledge or properly implement TFTP options. When this option is used
 \fICURLOPT_TFTP_BLKSIZE(3)\fP is ignored.
 .SH DEFAULT
 0
index 0afc10b2723b031baa47d71135add25c8fb7729d..4735fecb8235279ee788728b732584e825a9c7cc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMECONDITION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMECONDITION 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMECONDITION \- select condition for a time request
@@ -54,7 +56,8 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
 
   /* If-Modified-Since the above time stamp */
-  curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+  curl_easy_setopt(curl, CURLOPT_TIMECONDITION,
+                   (long)CURL_TIMECOND_IFMODSINCE);
 
   /* Perform the request */
   curl_easy_perform(curl);
index 6a7df44be4b4f1f81cc14fc68be47483fcdf5ce2..3a81adc0803264ce86b47f80e7893bc21268a15c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEOUT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEOUT \- maximum time the transfer is allowed to complete
index 421efbfddec3c3d24ae0070bde6e91ab7dc1522b..d2f28e63b02b9d300fbba0636007c8c2b44d6938 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEOUT_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEOUT_MS \- maximum time the transfer is allowed to complete
index 6deebe967f9249f1a825795f485bbe63f322e9ce..fba5ceff20dcff278bfa0bc562eb63e5a848a479 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEVALUE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEVALUE \- time value for conditional
index cc2a2a83e6a8067dc3695abfbbf495cdc1abd541..2cd6915f5c9f38e81d2bf166ac453b3a483a99b2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEVALUE_LARGE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE_LARGE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEVALUE_LARGE \- time value for conditional
index bcfe8aa241ab08942d8ef0c30715f7b2c6eab471..66477f7dbd9ea1bc9fd083a0b52d0134e2ccc5d3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLS13_CIPHERS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLS13_CIPHERS 3 "September 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLS13_CIPHERS \- ciphers suites to use for TLS 1.3
@@ -40,8 +42,9 @@ you will find more details about cipher lists on this URL:
  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 CURLOPT_SSL_CIPHER_LIST option.
+later or Schannel. If you are using a different SSL backend you can try
+setting TLS 1.3 cipher suites by using the \fICURLOPT_SSL_CIPHER_LIST(3)\fP
+option.
 
 The application does not have to keep the string around after setting this
 option.
@@ -55,14 +58,15 @@ CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
   curl_easy_setopt(curl, CURLOPT_TLS13_CIPHERS,
-                   "TLS13-CHACHA20-POLY1305-SHA256");
+                   "TLS_CHACHA20_POLY1305_SHA256");
   ret = curl_easy_perform(curl);
   curl_easy_cleanup(curl);
 }
 .fi
 .SH AVAILABILITY
-Added in 7.61.0.
-Available when built with OpenSSL >= 1.1.1.
+Added in 7.61.0 for OpenSSL. Available when built with OpenSSL >= 1.1.1.
+
+Added in 7.85.0 for Schannel.
 .SH RETURN VALUE
 Returns CURLE_OK if supported, CURLE_NOT_BUILT_IN otherwise.
 .SH "SEE ALSO"
index 83186d119ae5181b46dad3012be48e7f6b92e6b6..b0c1552fe6a0e53a70f14b2a0f1d2963187cae16 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLSAUTH_PASSWORD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.21.4
+Added in 7.21.4, with the OpenSSL and GnuTLS backends only
 .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.
index 7e4811460827a084221f25d63e1003a5148fb82a..d043d6609ce2d2aa0f6b1152d4ed548326cd9515 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLSAUTH_TYPE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_TYPE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLSAUTH_TYPE \- TLS authentication methods
index a334ce68441b772764abac4a935c5db848fd86a6..6fdc33bbba8e9dad1488e498d00d432325fc2422 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLSAUTH_USERNAME 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_USERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
@@ -57,7 +59,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.21.4
+Added in 7.21.4, with the OpenSSL and GnuTLS backends only
 .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.
index 21c75754edd69a2d35a64c353f3c448da14b7135..b12bba7e9eca028eea28a94929ba0a1a7520640d 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TRAILERDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERDATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TRAILERDATA \- pointer passed to trailing headers callback
index 2c61b3ed05bf794976e1fda3d312cbb5cb85f6fc..caa5880b50f744dc3761735a99aba5dfda84cab7 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TRAILERFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRAILERFUNCTION 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TRAILERFUNCTION \- callback for sending trailing headers
@@ -40,7 +42,8 @@ This callback function will be called once right before sending the final
 CR LF in an HTTP chunked transfer to fill a list of trailing headers to be
 sent before finishing the HTTP transfer.
 
-You can set the userdata argument with the CURLOPT_TRAILERDATA option.
+You can set the userdata argument with the \fICURLOPT_TRAILERDATA(3)\fP
+option.
 
 The trailing headers included in the linked list must not be CRLF-terminated,
 because libcurl will add the appropriate line termination characters after
@@ -50,13 +53,12 @@ If you use curl_slist_append to add trailing headers to the curl_slist then
 libcurl will duplicate the strings, and will free the curl_slist and the
 duplicates once the trailers have been sent.
 
-If one of the trailing headers is not formatted correctly
-(i.e. HeaderName: headerdata) it will be ignored and an info message
-will be emitted.
+If one of the trailing header fields is not formatted correctly it will be
+ignored and an info message will be emitted.
 
-The return value can either be CURL_TRAILERFUNC_OK or CURL_TRAILERFUNC_ABORT
-which would respectively instruct libcurl to either continue with sending the
-trailers or to abort the request.
+The return value can either be \fBCURL_TRAILERFUNC_OK\fP or
+\fBCURL_TRAILERFUNC_ABORT\fP which would respectively instruct libcurl to
+either continue with sending the trailers or to abort the request.
 
 If you set this option to NULL, then the transfer proceeds as usual
 without any interruptions.
index 746c2824abd9344701de377d82097698d9adba9c..344e28bafb7f0800f80a93a04ef4ccb0acf370f8 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TRANSFERTEXT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFERTEXT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
index bc641de43f6751b2defebd19d29ab70451c1c9cf..a8c2e9b70a15bdb39aedb2c230a939183229195b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TRANSFER_ENCODING 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFER_ENCODING 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
index 564f1e41d06f61259147b9ae1819d7255ed92877..5d70f72db491ce0cd3f680a1445f98e20e13111a 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UNIX_SOCKET_PATH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UNIX_SOCKET_PATH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UNIX_SOCKET_PATH \- Unix domain socket
index b54de3bb7c672c6c851a622bf9cf10fdf41ac5a2..ced223464e2f80f0ee74ba0da16bee22795b2dba 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UNRESTRICTED_AUTH 3 "November 04, 2020" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
@@ -36,9 +38,19 @@ authentication (user+password) credentials when following locations, even when
 hostname changed. This option is meaningful only when setting
 \fICURLOPT_FOLLOWLOCATION(3)\fP.
 
-By default, libcurl will only send given credentials to the initial host name
-as given in the original URL, to avoid leaking username + password to other
-sites.
+Further, when this option is not used or set to \fB0L\fP, libcurl will not
+send custom set nor internally generated Authentication: headers on requests
+done to other hosts than the one used for the initial URL.
+
+By default, libcurl will only send credentials and Authentication headers to
+the initial host name as given in the original URL, to avoid leaking username
++ password to other sites.
+
+This option should be used with caution: when curl follows redirects it
+blindly fetches the next URL as instructed by the server. Setting
+\fICURLOPT_UNRESTRICTED_AUTH(3)\fP to 1L will therefore also make curl trust
+the server and send possibly sensitive credentials to a host the server points
+out.
 .SH DEFAULT
 0
 .SH PROTOCOLS
index d04a3e8d8de59ec844776284302d878c91b86472..5e6c6fab3ebe707b7887df91fec154b16eae6ed5 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UPKEEP_INTERVAL_MS 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UPKEEP_INTERVAL_MS \- connection upkeep interval
index 48f348807ebb264f1fded311fc2c729898d2d1b5..5c78f1f2cc68a500ac8ef30ab4a251fddceabae3 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UPLOAD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UPLOAD \- data upload
index a14424f22ae0d48f5edb7117fbb2b3e3be21f79e..ca5f1fbc09b5b9d77d4296b6f7927453a5bc8dc2 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2018, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD_BUFFERSIZE 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UPLOAD_BUFFERSIZE \- upload buffer size
@@ -50,7 +52,7 @@ is not used for upload, this buffer will not be allocated at all.
 DO NOT set this option on a handle that is currently used for an active
 transfer as that may lead to unintended consequences.
 .SH DEFAULT
-64 kB
+65536 bytes
 .SH PROTOCOLS
 All
 .SH EXAMPLE
index 564bd6bd8fa9668f2d16b467e9df5248285b4f21..9484010310ee01d6928719e12258d62afeb46f26 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_URL 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_URL 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_URL \- URL for this transfer
index d4fc53da413348117581741ccfd1da0a7bf30468..6b31eea8c33f3d049d40448723e82d3d18346a4b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USERAGENT 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USERAGENT 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USERAGENT \- HTTP user-agent header
index 27370a1c5ec7d746e7251d6a22e5a09c68613e7e..fa59bc9d084c203548c85dae23cbf8d4250b6b18 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USERNAME 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USERNAME 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USERNAME \- user name to use in authentication
index 8f7a5d575305992059981fce702cc672cb1d438c..8f6ad6ba28f7b50b363ba3085a7bf067fe0673a9 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USERPWD 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USERPWD 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USERPWD \- user name and password to use in authentication
index 3b7baea887e40f48e261773d2b982b227ff72060..652d57464165f98281a99a2c9ae071e527f8ef6c 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USE_SSL 3 "November 30, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_USE_SSL 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
@@ -58,7 +60,7 @@ if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/file.ext");
 
   /* require use of SSL for this, or fail */
-  curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL);
+  curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL);
 
   /* Perform the request */
   curl_easy_perform(curl);
@@ -67,7 +69,7 @@ if(curl) {
 .SH AVAILABILITY
 Added in 7.11.0. This option was known as CURLOPT_FTP_SSL up to 7.16.4, and
 the constants were known as CURLFTPSSL_*
-Handled by LDAP since 7.81.0. Fully supported by the openldap backend only.
+Handled by LDAP since 7.81.0. Fully supported by the OpenLDAP backend only.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
index ee5b38d1ad9e38fba95157ae3c49ab675c8fb142..4a224842285a696460385b9a9ce3c523d2702e67 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_VERBOSE 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_VERBOSE 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_VERBOSE \- verbose mode
index fd655107295ba363c8203a837deda71e7015ff76..f007c82ec6f5790549eb87da67ebe02c45612759 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_WILDCARDMATCH 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_WILDCARDMATCH 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_WILDCARDMATCH \- directory wildcard transfers
@@ -33,8 +35,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WILDCARDMATCH, long onoff);
 .SH DESCRIPTION
 Set \fIonoff\fP to 1 if you want to transfer multiple files according to a
 file name pattern. The pattern can be specified as part of the
-\fICURLOPT_URL(3)\fP option, using an fnmatch-like pattern (Shell Pattern
-Matching) in the last part of URL (file name).
+\fICURLOPT_URL(3)\fP option, using an \fBfnmatch\fP-like pattern (Shell
+Pattern Matching) in the last part of URL (file name).
 
 By default, libcurl uses its internal wildcard matching implementation. You
 can provide your own matching function by the
@@ -43,14 +45,18 @@ can provide your own matching function by the
 A brief introduction of its syntax follows:
 .RS
 .IP "* - ASTERISK"
-\&ftp://example.com/some/path/\fB*.txt\fP (for all txt's from the root
-directory). Only two asterisks are allowed within the same pattern string.
+.nf
+  ftp://example.com/some/path/*.txt
+.fi
+for all txt's from the root directory. Only two asterisks are allowed within
+the same pattern string.
 .RE
 .RS
 .IP "? - QUESTION MARK"
 Question mark matches any (exactly one) character.
-
-\&ftp://example.com/some/path/\fBphoto?.jpeg\fP
+.nf
+  ftp://example.com/some/path/photo?.jpg
+.fi
 .RE
 .RS
 .IP "[ - BRACKET EXPRESSION"
@@ -64,37 +70,36 @@ right bracket and matches exactly one character. Some examples follow:
 
 \fB[^abc]\fP or \fB[!abc]\fP - negation
 
-\fB[[:\fP\fIname\fP\fB:]]\fP class expression. Supported classes are
+\fB[[:name:]]\fP class expression. Supported classes are
 \fBalnum\fP,\fBlower\fP, \fBspace\fP, \fBalpha\fP, \fBdigit\fP, \fBprint\fP,
 \fBupper\fP, \fBblank\fP, \fBgraph\fP, \fBxdigit\fP.
 
 \fB[][-!^]\fP - special case \- matches only '\-', ']', '[', '!' or '^'. These
 characters have no special purpose.
 
-\fB[\\[\\]\\\\]\fP - escape syntax. Matches '[', ']' or '\\'.
+\fB[\\[\\]\\\\]\fP - escape syntax. Matches '[', ']' or '\e'.
 
 Using the rules above, a file name pattern can be constructed:
-
-\&ftp://example.com/some/path/\fB[a-z[:upper:]\\\\].jpeg\fP
-.RE
-.PP
+.nf
+  ftp://example.com/some/path/[a-z[:upper:]\\\\].jpg
+.fi
 .SH PROTOCOLS
 This feature is only supported for FTP download.
 .SH EXAMPLE
 .nf
-  /* initialization of easy handle */
-  handle = curl_easy_init();
+/* initialization of easy handle */
+handle = curl_easy_init();
 
-  /* turn on wildcard matching */
-  curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
+/* turn on wildcard matching */
+curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
 
-  /* callback is called before download of concrete file started */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
+/* callback is called before download of concrete file started */
+curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
 
-  /* callback is called after data from the file have been transferred */
-  curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
+/* callback is called after data from the file have been transferred */
+curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
 
-  /* See more on https://curl.se/libcurl/c/ftp-wildcard.html */
+/* See more on https://curl.se/libcurl/c/ftp-wildcard.html */
 .fi
 .SH AVAILABILITY
 Added in 7.21.0
index ed82ef1868d5ce3444fb628c03de9845822dea77..6db7207df93d80ab98a65ab93bc56f1cb48c5f8e 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_WRITEDATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEDATA 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_WRITEDATA \- pointer passed to the write callback
@@ -32,10 +34,10 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WRITEDATA, void *pointer);
 .fi
 .SH DESCRIPTION
 A data \fIpointer\fP to pass to the write callback. If you use the
-\fICURLOPT_WRITEFUNCTION(3)\fP option, this is the pointer you will get in that
-callback's 4th argument. If you do not use a write callback, you must make
-\fIpointer\fP a 'FILE *' (cast to 'void *') as libcurl will pass this to
-\fIfwrite(3)\fP when writing data.
+\fICURLOPT_WRITEFUNCTION(3)\fP option, this is the pointer you will get in
+that callback's fourth and last argument. If you do not use a write callback,
+you must make \fIpointer\fP a 'FILE *' (cast to 'void *') as libcurl will pass
+this to \fIfwrite(3)\fP when writing data.
 
 The internal \fICURLOPT_WRITEFUNCTION(3)\fP will write the data to the FILE *
 given with this option, or to stdout if this option has not been set.
index 3ffe72262fde9f399471d802ee20912fce001e90..ef3dac4c2b039bc37073b3c41a4b7fbadf16c839 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_WRITEFUNCTION 3 "October 31, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_WRITEFUNCTION \- callback for writing received data
diff --git a/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_WS_OPTIONS.3
new file mode 100644 (file)
index 0000000..c11e901
--- /dev/null
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2022, 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_WS_OPTIONS 3 "October 22, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_WS_OPTIONS \- WebSocket behavior options
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_WS_OPTIONS, long bitmask);
+.fi
+.SH DESCRIPTION
+Pass a long with a bitmask to tell libcurl about specific WebSocket
+behaviors.
+
+To detach a WebSocket connection and use the \fIcurl_ws_send(3)\fP and
+\fIcurl_ws_recv(3)\fP functions after the HTTP upgrade procedure, set the
+\fICURLOPT_CONNECT_ONLY(3)\fP option to 2L.
+
+Available bits in the bitmask
+.IP "CURLWS_RAW_MODE (1)"
+Deliver "raw" WebSocket traffic to the \fICURLOPT_WRITEFUNCTION(3)\fP
+callback.
+
+In raw mode, libcurl does not handle pings or any other frame for the
+application.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+WebSocket
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "ws://example.com/");
+  /* tell curl we deal with all the WebSocket magic ourselves */
+  curl_easy_setopt(curl, CURLOPT_WS_OPTIONS, (long)CURLWS_RAW_MODE);
+  ret = curl_easy_perform(curl);
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.85.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_ws_recv "(3), " curl_ws_send "(3), "
index a9ff6d5ab5dcb4d79e12c61335370928aef58ff2..657d4cdf7ddfa40e95321c57b7e2e4cfbe2604ce 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_XFERINFODATA 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFODATA 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_XFERINFODATA \- pointer passed to the progress callback
index d262abf0c2f3da8b2e9f4b93f4c3fa1438d18868..ebbd3158723646633b59fccde7af3c45135c292f 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_XFERINFOFUNCTION 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFOFUNCTION 3 "May 17, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_XFERINFOFUNCTION \- progress meter callback
@@ -91,7 +93,7 @@ All
                                  curl_off_t ultotal,
                                  curl_off_t ulnow)
  {
-   struct memory *progress = (struct progress *)userp;
+   struct progress *memory = (struct progress *)clientp;
 
    /* use the values */
 
index e4c10daeda0227dafd97503b6f24e68b96b0e517..5d88858aea917afae4ec2de80e19003011083931 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_XOAUTH2_BEARER 3 "November 26, 2021" "libcurl 7.81.0" "curl_easy_setopt options"
+.TH CURLOPT_XOAUTH2_BEARER 3 "September 20, 2022" "libcurl 7.86.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_XOAUTH2_BEARER \- OAuth 2.0 access token
@@ -32,18 +34,18 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XOAUTH2_BEARER, char *token);
 .fi
 .SH DESCRIPTION
 Pass a char * as parameter, which should point to the null-terminated OAuth
-2.0 Bearer Access Token for use with HTTP, IMAP, POP3 and SMTP servers
+2.0 Bearer Access Token for use with HTTP, IMAP, LDAP, POP3 and SMTP servers
 that support the OAuth 2.0 Authorization Framework.
 
-Note: For IMAP, POP3 and SMTP, the user name used to generate the Bearer Token
-should be supplied via the \fICURLOPT_USERNAME(3)\fP option.
+Note: For IMAP, LDAP, POP3 and SMTP, the user name used to generate the
+Bearer Token should be supplied via the \fICURLOPT_USERNAME(3)\fP option.
 
 The application does not have to keep the string around after setting this
 option.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
-IMAP, POP3 and SMTP
+HTTP, IMAP, LDAP, POP3 and SMTP
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
@@ -55,7 +57,7 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.33.0
+Added in 7.33.0. Support for OpenLDAP added in 7.82.0.
 .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.
index ac50a1dc58485073d7596c73da5e51ce4ff0d61f..042679db031aca5f805bb26cfbf1802ac6526977 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH CURLSHOPT_LOCKFUNC 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_LOCKFUNC 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 CURLSHOPT_LOCKFUNC - mutex lock callback
@@ -35,7 +37,7 @@ CURLSHcode curl_share_setopt(CURLSH *share, CURLSHOPT_LOCKFUNC, lockcb);
 .SH DESCRIPTION
 Set a mutex lock callback for the share object, to allow it to get used by
 multiple threads concurrently. There's a corresponding
-\fICURLSHOPT_UNLOCKFUNC(3)\fP callback called when the mutex is again relased.
+\fICURLSHOPT_UNLOCKFUNC(3)\fP callback called when the mutex is again released.
 
 The \fIlockcb\fP argument must be a pointer to a function matching the
 prototype shown above. The arguments to the callback are:
@@ -54,7 +56,7 @@ This pointer is not used by libcurl itself.
 All
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_LOCKFUNC, mutex_lock);
   if(sh)
index 90c6eedc14f77c2e82c1dc97b1ee06d3e1e25a6f..b30cc0fa4748e3c2dfd975339fd75ef1f5416d09 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH CURLSHOPT_SHARE 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_SHARE 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 CURLSHOPT_SHARE - add data to share
@@ -81,7 +83,7 @@ multi handle will share PSL cache by default without using this option.
 All
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
   if(sh)
index 00bc4907eedd2aadafa00bafce3e3aa5ff8cd8ba..5433896c0d91b5b10f10992d6f6015bfbfc18b8b 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH CURLSHOPT_UNLOCKFUNC 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_UNLOCKFUNC 3 "September 28, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 CURLSHOPT_UNLOCKFUNC - mutex unlock callback
@@ -27,8 +29,7 @@ CURLSHOPT_UNLOCKFUNC - mutex unlock callback
 .nf
 #include <curl/curl.h>
 
-void unlockcb(CURL *handle, curl_lock_data data, curl_lock_access access,
-              void *userptr);
+void unlockcb(CURL *handle, curl_lock_data data, void *userptr);
 
 CURLSHcode curl_share_setopt(CURLSH *share, CURLSHOPT_UNLOCKFUNC, unlockcb);
 .fi
@@ -45,15 +46,13 @@ is released.
 The \fIdata\fP argument tells what kind of data libcurl wants to unlock. Make
 sure that the callback uses a different lock for each kind of data.
 
-\fIaccess\fP defines what access type libcurl wants, shared or single.
-
 \fIuserptr\fP is the private pointer you set with \fICURLSHOPT_USERDATA\fP.
 This pointer is not used by libcurl itself.
 .SH PROTOCOLS
 All
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_UNLOCKFUNC, mutex_unlock);
   if(sh)
index 2d8a2cdf997735e0221ebccfb103cc062706d485..3fab208c995ebba41bcb7224d06ed0c9d7d28846 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH CURLSHOPT_UNSHARE 3 "November 12, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_UNSHARE 3 "May 17, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
 CURLSHOPT_UNSHARE - remove data to share
@@ -54,7 +56,7 @@ The Public Suffix List is no longer shared.
 All
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE);
   if(sh)
index 77f98422bbb78b4dfc1e18ecbd02c0fb57045522..244f91a989e9b9551f7ee8e63f541af990764a61 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
-.TH CURLSHOPT_USERDATA 3 "December 09, 2021" "libcurl 7.81.0" "libcurl Manual"
+.TH CURLSHOPT_USERDATA 3 "September 20, 2022" "libcurl 7.86.0" "libcurl Manual"
 
 .SH NAME
-CURLSHOPT_USERDATA - pointer passed to the (un)lock mutex callbacks
+CURLSHOPT_USERDATA - pointer passed to the lock and unlock mutex callbacks
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
@@ -37,7 +39,7 @@ and \fICURLSHOPT_UNLOCKFUNC(3)\fP.
 All
 .SH EXAMPLE
 .nf
-  CURLSHcode sh
+  CURLSHcode sh;
   struct secrets private_stuff;
   share = curl_share_init();
   sh = curl_share_setopt(share, CURLSHOPT_USERDATA, &private_stuff);
index 6596ae3577104f3cc0ef0eb2d2150238b5c35f74..e952cd9731ed86e6326ec474722cbcc023924446 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 AUTOMAKE_OPTIONS = foreign no-dependencies
index 63fa5aa3a923f13cec4db698b78e02fa7b08c423..18e336b65c2f8660ff5a9c49e51e86c7d232deb1 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #***************************************************************************
@@ -43,7 +45,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -56,6 +58,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Shared between Makefile.am and CMakeLists.txt
 VPATH = @srcdir@
@@ -134,15 +138,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = docs/libcurl/opts
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -266,6 +268,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -283,6 +286,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -340,6 +344,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -358,12 +363,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -430,7 +436,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -441,6 +446,8 @@ man_MANS = \
   CURLINFO_ACTIVESOCKET.3                       \
   CURLINFO_APPCONNECT_TIME.3                    \
   CURLINFO_APPCONNECT_TIME_T.3                  \
+  CURLINFO_CAINFO.3                             \
+  CURLINFO_CAPATH.3                             \
   CURLINFO_CERTINFO.3                           \
   CURLINFO_CONDITION_UNMET.3                    \
   CURLINFO_CONNECT_TIME.3                       \
@@ -457,9 +464,9 @@ man_MANS = \
   CURLINFO_FILETIME_T.3                         \
   CURLINFO_FTP_ENTRY_PATH.3                     \
   CURLINFO_HEADER_SIZE.3                        \
-  CURLINFO_HTTPAUTH_AVAIL.3                     \
   CURLINFO_HTTP_CONNECTCODE.3                   \
   CURLINFO_HTTP_VERSION.3                       \
+  CURLINFO_HTTPAUTH_AVAIL.3                     \
   CURLINFO_LASTSOCKET.3                         \
   CURLINFO_LOCAL_IP.3                           \
   CURLINFO_LOCAL_PORT.3                         \
@@ -507,11 +514,11 @@ man_MANS = \
   CURLINFO_TOTAL_TIME_T.3                       \
   CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
   CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
-  CURLMOPT_MAXCONNECTS.3                        \
   CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
   CURLMOPT_MAX_HOST_CONNECTIONS.3               \
   CURLMOPT_MAX_PIPELINE_LENGTH.3                \
   CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
+  CURLMOPT_MAXCONNECTS.3                        \
   CURLMOPT_PIPELINING.3                         \
   CURLMOPT_PIPELINING_SERVER_BL.3               \
   CURLMOPT_PIPELINING_SITE_BL.3                 \
@@ -522,13 +529,14 @@ man_MANS = \
   CURLMOPT_TIMERDATA.3                          \
   CURLMOPT_TIMERFUNCTION.3                      \
   CURLOPT_ABSTRACT_UNIX_SOCKET.3                \
-  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
   CURLOPT_ACCEPT_ENCODING.3                     \
+  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
   CURLOPT_ADDRESS_SCOPE.3                       \
   CURLOPT_ALTSVC.3                              \
   CURLOPT_ALTSVC_CTRL.3                         \
   CURLOPT_APPEND.3                              \
   CURLOPT_AUTOREFERER.3                         \
+  CURLOPT_AWS_SIGV4.3                           \
   CURLOPT_BUFFERSIZE.3                          \
   CURLOPT_CAINFO.3                              \
   CURLOPT_CAINFO_BLOB.3                         \
@@ -539,10 +547,10 @@ man_MANS = \
   CURLOPT_CHUNK_END_FUNCTION.3                  \
   CURLOPT_CLOSESOCKETDATA.3                     \
   CURLOPT_CLOSESOCKETFUNCTION.3                 \
-  CURLOPT_CONNECTTIMEOUT.3                      \
-  CURLOPT_CONNECTTIMEOUT_MS.3                   \
   CURLOPT_CONNECT_ONLY.3                        \
   CURLOPT_CONNECT_TO.3                          \
+  CURLOPT_CONNECTTIMEOUT.3                      \
+  CURLOPT_CONNECTTIMEOUT_MS.3                   \
   CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
   CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
   CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
@@ -582,18 +590,17 @@ man_MANS = \
   CURLOPT_FOLLOWLOCATION.3                      \
   CURLOPT_FORBID_REUSE.3                        \
   CURLOPT_FRESH_CONNECT.3                       \
-  CURLOPT_FTPPORT.3                             \
-  CURLOPT_FTPSSLAUTH.3                          \
   CURLOPT_FTP_ACCOUNT.3                         \
   CURLOPT_FTP_ALTERNATIVE_TO_USER.3             \
   CURLOPT_FTP_CREATE_MISSING_DIRS.3             \
   CURLOPT_FTP_FILEMETHOD.3                      \
-  CURLOPT_FTP_RESPONSE_TIMEOUT.3                \
   CURLOPT_FTP_SKIP_PASV_IP.3                    \
   CURLOPT_FTP_SSL_CCC.3                         \
   CURLOPT_FTP_USE_EPRT.3                        \
   CURLOPT_FTP_USE_EPSV.3                        \
   CURLOPT_FTP_USE_PRET.3                        \
+  CURLOPT_FTPPORT.3                             \
+  CURLOPT_FTPSSLAUTH.3                          \
   CURLOPT_GSSAPI_DELEGATION.3                   \
   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
   CURLOPT_HAPROXYPROTOCOL.3                     \
@@ -602,21 +609,21 @@ man_MANS = \
   CURLOPT_HEADERFUNCTION.3                      \
   CURLOPT_HEADEROPT.3                           \
   CURLOPT_HSTS.3                                \
+  CURLOPT_HSTS_CTRL.3                           \
   CURLOPT_HSTSREADDATA.3                        \
   CURLOPT_HSTSREADFUNCTION.3                    \
   CURLOPT_HSTSWRITEDATA.3                       \
   CURLOPT_HSTSWRITEFUNCTION.3                   \
-  CURLOPT_HSTS_CTRL.3                           \
   CURLOPT_HTTP09_ALLOWED.3                      \
   CURLOPT_HTTP200ALIASES.3                      \
+  CURLOPT_HTTP_CONTENT_DECODING.3               \
+  CURLOPT_HTTP_TRANSFER_DECODING.3              \
+  CURLOPT_HTTP_VERSION.3                        \
   CURLOPT_HTTPAUTH.3                            \
   CURLOPT_HTTPGET.3                             \
   CURLOPT_HTTPHEADER.3                          \
   CURLOPT_HTTPPOST.3                            \
   CURLOPT_HTTPPROXYTUNNEL.3                     \
-  CURLOPT_HTTP_CONTENT_DECODING.3               \
-  CURLOPT_HTTP_TRANSFER_DECODING.3              \
-  CURLOPT_HTTP_VERSION.3                        \
   CURLOPT_IGNORE_CONTENT_LENGTH.3               \
   CURLOPT_INFILESIZE.3                          \
   CURLOPT_INFILESIZE_LARGE.3                    \
@@ -640,16 +647,16 @@ man_MANS = \
   CURLOPT_MAIL_FROM.3                           \
   CURLOPT_MAIL_RCPT.3                           \
   CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \
+  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
+  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
   CURLOPT_MAXAGE_CONN.3                         \
   CURLOPT_MAXCONNECTS.3                         \
   CURLOPT_MAXFILESIZE.3                         \
   CURLOPT_MAXFILESIZE_LARGE.3                   \
   CURLOPT_MAXLIFETIME_CONN.3                    \
   CURLOPT_MAXREDIRS.3                           \
-  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
-  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
-  CURLOPT_MIMEPOST.3                            \
   CURLOPT_MIME_OPTIONS.3                        \
+  CURLOPT_MIMEPOST.3                            \
   CURLOPT_NETRC.3                               \
   CURLOPT_NETRC_FILE.3                          \
   CURLOPT_NEW_DIRECTORY_PERMS.3                 \
@@ -671,31 +678,29 @@ man_MANS = \
   CURLOPT_POSTFIELDSIZE_LARGE.3                 \
   CURLOPT_POSTQUOTE.3                           \
   CURLOPT_POSTREDIR.3                           \
+  CURLOPT_PRE_PROXY.3                           \
   CURLOPT_PREQUOTE.3                            \
   CURLOPT_PREREQDATA.3                          \
   CURLOPT_PREREQFUNCTION.3                      \
-  CURLOPT_PRE_PROXY.3                           \
   CURLOPT_PRIVATE.3                             \
   CURLOPT_PROGRESSDATA.3                        \
   CURLOPT_PROGRESSFUNCTION.3                    \
   CURLOPT_PROTOCOLS.3                           \
+  CURLOPT_PROTOCOLS_STR.3                       \
   CURLOPT_PROXY.3                               \
-  CURLOPT_PROXYAUTH.3                           \
-  CURLOPT_PROXYHEADER.3                         \
-  CURLOPT_PROXYPASSWORD.3                       \
-  CURLOPT_PROXYPORT.3                           \
-  CURLOPT_PROXYTYPE.3                           \
-  CURLOPT_PROXYUSERNAME.3                       \
-  CURLOPT_PROXYUSERPWD.3                        \
   CURLOPT_PROXY_CAINFO.3                        \
   CURLOPT_PROXY_CAINFO_BLOB.3                   \
   CURLOPT_PROXY_CAPATH.3                        \
   CURLOPT_PROXY_CRLFILE.3                       \
-  CURLOPT_PROXY_KEYPASSWD.3                     \
   CURLOPT_PROXY_ISSUERCERT.3                    \
   CURLOPT_PROXY_ISSUERCERT_BLOB.3               \
+  CURLOPT_PROXY_KEYPASSWD.3                     \
   CURLOPT_PROXY_PINNEDPUBLICKEY.3               \
   CURLOPT_PROXY_SERVICE_NAME.3                  \
+  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
+  CURLOPT_PROXY_SSL_OPTIONS.3                   \
+  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
+  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
   CURLOPT_PROXY_SSLCERT.3                       \
   CURLOPT_PROXY_SSLCERT_BLOB.3                  \
   CURLOPT_PROXY_SSLCERTTYPE.3                   \
@@ -703,15 +708,18 @@ man_MANS = \
   CURLOPT_PROXY_SSLKEY_BLOB.3                   \
   CURLOPT_PROXY_SSLKEYTYPE.3                    \
   CURLOPT_PROXY_SSLVERSION.3                    \
-  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
-  CURLOPT_PROXY_SSL_OPTIONS.3                   \
-  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
-  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
   CURLOPT_PROXY_TLS13_CIPHERS.3                 \
   CURLOPT_PROXY_TLSAUTH_PASSWORD.3              \
   CURLOPT_PROXY_TLSAUTH_TYPE.3                  \
   CURLOPT_PROXY_TLSAUTH_USERNAME.3              \
   CURLOPT_PROXY_TRANSFER_MODE.3                 \
+  CURLOPT_PROXYAUTH.3                           \
+  CURLOPT_PROXYHEADER.3                         \
+  CURLOPT_PROXYPASSWORD.3                       \
+  CURLOPT_PROXYPORT.3                           \
+  CURLOPT_PROXYTYPE.3                           \
+  CURLOPT_PROXYUSERNAME.3                       \
+  CURLOPT_PROXYUSERPWD.3                        \
   CURLOPT_PUT.3                                 \
   CURLOPT_QUOTE.3                               \
   CURLOPT_RANDOM_FILE.3                         \
@@ -719,6 +727,7 @@ man_MANS = \
   CURLOPT_READDATA.3                            \
   CURLOPT_READFUNCTION.3                        \
   CURLOPT_REDIR_PROTOCOLS.3                     \
+  CURLOPT_REDIR_PROTOCOLS_STR.3                 \
   CURLOPT_REFERER.3                             \
   CURLOPT_REQUEST_TARGET.3                      \
   CURLOPT_RESOLVE.3                             \
@@ -736,6 +745,7 @@ man_MANS = \
   CURLOPT_SASL_IR.3                             \
   CURLOPT_SEEKDATA.3                            \
   CURLOPT_SEEKFUNCTION.3                        \
+  CURLOPT_SERVER_RESPONSE_TIMEOUT.3             \
   CURLOPT_SERVICE_NAME.3                        \
   CURLOPT_SHARE.3                               \
   CURLOPT_SOCKOPTDATA.3                         \
@@ -752,15 +762,6 @@ man_MANS = \
   CURLOPT_SSH_KNOWNHOSTS.3                      \
   CURLOPT_SSH_PRIVATE_KEYFILE.3                 \
   CURLOPT_SSH_PUBLIC_KEYFILE.3                  \
-  CURLOPT_SSLCERT.3                             \
-  CURLOPT_SSLCERT_BLOB.3                        \
-  CURLOPT_SSLCERTTYPE.3                         \
-  CURLOPT_SSLENGINE.3                           \
-  CURLOPT_SSLENGINE_DEFAULT.3                   \
-  CURLOPT_SSLKEY.3                              \
-  CURLOPT_SSLKEY_BLOB.3                         \
-  CURLOPT_SSLKEYTYPE.3                          \
-  CURLOPT_SSLVERSION.3                          \
   CURLOPT_SSL_CIPHER_LIST.3                     \
   CURLOPT_SSL_CTX_DATA.3                        \
   CURLOPT_SSL_CTX_FUNCTION.3                    \
@@ -773,6 +774,15 @@ man_MANS = \
   CURLOPT_SSL_VERIFYHOST.3                      \
   CURLOPT_SSL_VERIFYPEER.3                      \
   CURLOPT_SSL_VERIFYSTATUS.3                    \
+  CURLOPT_SSLCERT.3                             \
+  CURLOPT_SSLCERT_BLOB.3                        \
+  CURLOPT_SSLCERTTYPE.3                         \
+  CURLOPT_SSLENGINE.3                           \
+  CURLOPT_SSLENGINE_DEFAULT.3                   \
+  CURLOPT_SSLKEY.3                              \
+  CURLOPT_SSLKEY_BLOB.3                         \
+  CURLOPT_SSLKEYTYPE.3                          \
+  CURLOPT_SSLVERSION.3                          \
   CURLOPT_STDERR.3                              \
   CURLOPT_STREAM_DEPENDS.3                      \
   CURLOPT_STREAM_DEPENDS_E.3                    \
@@ -797,23 +807,23 @@ man_MANS = \
   CURLOPT_TLSAUTH_USERNAME.3                    \
   CURLOPT_TRAILERDATA.3                         \
   CURLOPT_TRAILERFUNCTION.3                     \
-  CURLOPT_TRANSFERTEXT.3                        \
   CURLOPT_TRANSFER_ENCODING.3                   \
+  CURLOPT_TRANSFERTEXT.3                        \
   CURLOPT_UNIX_SOCKET_PATH.3                    \
   CURLOPT_UNRESTRICTED_AUTH.3                   \
   CURLOPT_UPKEEP_INTERVAL_MS.3                  \
   CURLOPT_UPLOAD.3                              \
   CURLOPT_UPLOAD_BUFFERSIZE.3                   \
   CURLOPT_URL.3                                 \
+  CURLOPT_USE_SSL.3                             \
   CURLOPT_USERAGENT.3                           \
   CURLOPT_USERNAME.3                            \
   CURLOPT_USERPWD.3                             \
-  CURLOPT_USE_SSL.3                             \
-  CURLOPT_AWS_SIGV4.3                           \
   CURLOPT_VERBOSE.3                             \
   CURLOPT_WILDCARDMATCH.3                       \
   CURLOPT_WRITEDATA.3                           \
   CURLOPT_WRITEFUNCTION.3                       \
+  CURLOPT_WS_OPTIONS.3                          \
   CURLOPT_XFERINFODATA.3                        \
   CURLOPT_XFERINFOFUNCTION.3                    \
   CURLOPT_XOAUTH2_BEARER.3                      \
index 5a270a8a9a1570bc60d8495e4c206e2f950146eb..a139d0676285fe65513f8ec161fa6d46a85d407a 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Shared between Makefile.am and CMakeLists.txt
 
@@ -25,6 +27,8 @@ man_MANS =                                      \
   CURLINFO_ACTIVESOCKET.3                       \
   CURLINFO_APPCONNECT_TIME.3                    \
   CURLINFO_APPCONNECT_TIME_T.3                  \
+  CURLINFO_CAINFO.3                             \
+  CURLINFO_CAPATH.3                             \
   CURLINFO_CERTINFO.3                           \
   CURLINFO_CONDITION_UNMET.3                    \
   CURLINFO_CONNECT_TIME.3                       \
@@ -41,9 +45,9 @@ man_MANS =                                      \
   CURLINFO_FILETIME_T.3                         \
   CURLINFO_FTP_ENTRY_PATH.3                     \
   CURLINFO_HEADER_SIZE.3                        \
-  CURLINFO_HTTPAUTH_AVAIL.3                     \
   CURLINFO_HTTP_CONNECTCODE.3                   \
   CURLINFO_HTTP_VERSION.3                       \
+  CURLINFO_HTTPAUTH_AVAIL.3                     \
   CURLINFO_LASTSOCKET.3                         \
   CURLINFO_LOCAL_IP.3                           \
   CURLINFO_LOCAL_PORT.3                         \
@@ -91,11 +95,11 @@ man_MANS =                                      \
   CURLINFO_TOTAL_TIME_T.3                       \
   CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
   CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
-  CURLMOPT_MAXCONNECTS.3                        \
   CURLMOPT_MAX_CONCURRENT_STREAMS.3             \
   CURLMOPT_MAX_HOST_CONNECTIONS.3               \
   CURLMOPT_MAX_PIPELINE_LENGTH.3                \
   CURLMOPT_MAX_TOTAL_CONNECTIONS.3              \
+  CURLMOPT_MAXCONNECTS.3                        \
   CURLMOPT_PIPELINING.3                         \
   CURLMOPT_PIPELINING_SERVER_BL.3               \
   CURLMOPT_PIPELINING_SITE_BL.3                 \
@@ -106,13 +110,14 @@ man_MANS =                                      \
   CURLMOPT_TIMERDATA.3                          \
   CURLMOPT_TIMERFUNCTION.3                      \
   CURLOPT_ABSTRACT_UNIX_SOCKET.3                \
-  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
   CURLOPT_ACCEPT_ENCODING.3                     \
+  CURLOPT_ACCEPTTIMEOUT_MS.3                    \
   CURLOPT_ADDRESS_SCOPE.3                       \
   CURLOPT_ALTSVC.3                              \
   CURLOPT_ALTSVC_CTRL.3                         \
   CURLOPT_APPEND.3                              \
   CURLOPT_AUTOREFERER.3                         \
+  CURLOPT_AWS_SIGV4.3                           \
   CURLOPT_BUFFERSIZE.3                          \
   CURLOPT_CAINFO.3                              \
   CURLOPT_CAINFO_BLOB.3                         \
@@ -123,10 +128,10 @@ man_MANS =                                      \
   CURLOPT_CHUNK_END_FUNCTION.3                  \
   CURLOPT_CLOSESOCKETDATA.3                     \
   CURLOPT_CLOSESOCKETFUNCTION.3                 \
-  CURLOPT_CONNECTTIMEOUT.3                      \
-  CURLOPT_CONNECTTIMEOUT_MS.3                   \
   CURLOPT_CONNECT_ONLY.3                        \
   CURLOPT_CONNECT_TO.3                          \
+  CURLOPT_CONNECTTIMEOUT.3                      \
+  CURLOPT_CONNECTTIMEOUT_MS.3                   \
   CURLOPT_CONV_FROM_NETWORK_FUNCTION.3          \
   CURLOPT_CONV_FROM_UTF8_FUNCTION.3             \
   CURLOPT_CONV_TO_NETWORK_FUNCTION.3            \
@@ -166,18 +171,17 @@ man_MANS =                                      \
   CURLOPT_FOLLOWLOCATION.3                      \
   CURLOPT_FORBID_REUSE.3                        \
   CURLOPT_FRESH_CONNECT.3                       \
-  CURLOPT_FTPPORT.3                             \
-  CURLOPT_FTPSSLAUTH.3                          \
   CURLOPT_FTP_ACCOUNT.3                         \
   CURLOPT_FTP_ALTERNATIVE_TO_USER.3             \
   CURLOPT_FTP_CREATE_MISSING_DIRS.3             \
   CURLOPT_FTP_FILEMETHOD.3                      \
-  CURLOPT_FTP_RESPONSE_TIMEOUT.3                \
   CURLOPT_FTP_SKIP_PASV_IP.3                    \
   CURLOPT_FTP_SSL_CCC.3                         \
   CURLOPT_FTP_USE_EPRT.3                        \
   CURLOPT_FTP_USE_EPSV.3                        \
   CURLOPT_FTP_USE_PRET.3                        \
+  CURLOPT_FTPPORT.3                             \
+  CURLOPT_FTPSSLAUTH.3                          \
   CURLOPT_GSSAPI_DELEGATION.3                   \
   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
   CURLOPT_HAPROXYPROTOCOL.3                     \
@@ -186,21 +190,21 @@ man_MANS =                                      \
   CURLOPT_HEADERFUNCTION.3                      \
   CURLOPT_HEADEROPT.3                           \
   CURLOPT_HSTS.3                                \
+  CURLOPT_HSTS_CTRL.3                           \
   CURLOPT_HSTSREADDATA.3                        \
   CURLOPT_HSTSREADFUNCTION.3                    \
   CURLOPT_HSTSWRITEDATA.3                       \
   CURLOPT_HSTSWRITEFUNCTION.3                   \
-  CURLOPT_HSTS_CTRL.3                           \
   CURLOPT_HTTP09_ALLOWED.3                      \
   CURLOPT_HTTP200ALIASES.3                      \
+  CURLOPT_HTTP_CONTENT_DECODING.3               \
+  CURLOPT_HTTP_TRANSFER_DECODING.3              \
+  CURLOPT_HTTP_VERSION.3                        \
   CURLOPT_HTTPAUTH.3                            \
   CURLOPT_HTTPGET.3                             \
   CURLOPT_HTTPHEADER.3                          \
   CURLOPT_HTTPPOST.3                            \
   CURLOPT_HTTPPROXYTUNNEL.3                     \
-  CURLOPT_HTTP_CONTENT_DECODING.3               \
-  CURLOPT_HTTP_TRANSFER_DECODING.3              \
-  CURLOPT_HTTP_VERSION.3                        \
   CURLOPT_IGNORE_CONTENT_LENGTH.3               \
   CURLOPT_INFILESIZE.3                          \
   CURLOPT_INFILESIZE_LARGE.3                    \
@@ -224,16 +228,16 @@ man_MANS =                                      \
   CURLOPT_MAIL_FROM.3                           \
   CURLOPT_MAIL_RCPT.3                           \
   CURLOPT_MAIL_RCPT_ALLLOWFAILS.3               \
+  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
+  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
   CURLOPT_MAXAGE_CONN.3                         \
   CURLOPT_MAXCONNECTS.3                         \
   CURLOPT_MAXFILESIZE.3                         \
   CURLOPT_MAXFILESIZE_LARGE.3                   \
   CURLOPT_MAXLIFETIME_CONN.3                    \
   CURLOPT_MAXREDIRS.3                           \
-  CURLOPT_MAX_RECV_SPEED_LARGE.3                \
-  CURLOPT_MAX_SEND_SPEED_LARGE.3                \
-  CURLOPT_MIMEPOST.3                            \
   CURLOPT_MIME_OPTIONS.3                        \
+  CURLOPT_MIMEPOST.3                            \
   CURLOPT_NETRC.3                               \
   CURLOPT_NETRC_FILE.3                          \
   CURLOPT_NEW_DIRECTORY_PERMS.3                 \
@@ -255,31 +259,29 @@ man_MANS =                                      \
   CURLOPT_POSTFIELDSIZE_LARGE.3                 \
   CURLOPT_POSTQUOTE.3                           \
   CURLOPT_POSTREDIR.3                           \
+  CURLOPT_PRE_PROXY.3                           \
   CURLOPT_PREQUOTE.3                            \
   CURLOPT_PREREQDATA.3                          \
   CURLOPT_PREREQFUNCTION.3                      \
-  CURLOPT_PRE_PROXY.3                           \
   CURLOPT_PRIVATE.3                             \
   CURLOPT_PROGRESSDATA.3                        \
   CURLOPT_PROGRESSFUNCTION.3                    \
   CURLOPT_PROTOCOLS.3                           \
+  CURLOPT_PROTOCOLS_STR.3                       \
   CURLOPT_PROXY.3                               \
-  CURLOPT_PROXYAUTH.3                           \
-  CURLOPT_PROXYHEADER.3                         \
-  CURLOPT_PROXYPASSWORD.3                       \
-  CURLOPT_PROXYPORT.3                           \
-  CURLOPT_PROXYTYPE.3                           \
-  CURLOPT_PROXYUSERNAME.3                       \
-  CURLOPT_PROXYUSERPWD.3                        \
   CURLOPT_PROXY_CAINFO.3                        \
   CURLOPT_PROXY_CAINFO_BLOB.3                   \
   CURLOPT_PROXY_CAPATH.3                        \
   CURLOPT_PROXY_CRLFILE.3                       \
-  CURLOPT_PROXY_KEYPASSWD.3                     \
   CURLOPT_PROXY_ISSUERCERT.3                    \
   CURLOPT_PROXY_ISSUERCERT_BLOB.3               \
+  CURLOPT_PROXY_KEYPASSWD.3                     \
   CURLOPT_PROXY_PINNEDPUBLICKEY.3               \
   CURLOPT_PROXY_SERVICE_NAME.3                  \
+  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
+  CURLOPT_PROXY_SSL_OPTIONS.3                   \
+  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
+  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
   CURLOPT_PROXY_SSLCERT.3                       \
   CURLOPT_PROXY_SSLCERT_BLOB.3                  \
   CURLOPT_PROXY_SSLCERTTYPE.3                   \
@@ -287,15 +289,18 @@ man_MANS =                                      \
   CURLOPT_PROXY_SSLKEY_BLOB.3                   \
   CURLOPT_PROXY_SSLKEYTYPE.3                    \
   CURLOPT_PROXY_SSLVERSION.3                    \
-  CURLOPT_PROXY_SSL_CIPHER_LIST.3               \
-  CURLOPT_PROXY_SSL_OPTIONS.3                   \
-  CURLOPT_PROXY_SSL_VERIFYHOST.3                \
-  CURLOPT_PROXY_SSL_VERIFYPEER.3                \
   CURLOPT_PROXY_TLS13_CIPHERS.3                 \
   CURLOPT_PROXY_TLSAUTH_PASSWORD.3              \
   CURLOPT_PROXY_TLSAUTH_TYPE.3                  \
   CURLOPT_PROXY_TLSAUTH_USERNAME.3              \
   CURLOPT_PROXY_TRANSFER_MODE.3                 \
+  CURLOPT_PROXYAUTH.3                           \
+  CURLOPT_PROXYHEADER.3                         \
+  CURLOPT_PROXYPASSWORD.3                       \
+  CURLOPT_PROXYPORT.3                           \
+  CURLOPT_PROXYTYPE.3                           \
+  CURLOPT_PROXYUSERNAME.3                       \
+  CURLOPT_PROXYUSERPWD.3                        \
   CURLOPT_PUT.3                                 \
   CURLOPT_QUOTE.3                               \
   CURLOPT_RANDOM_FILE.3                         \
@@ -303,6 +308,7 @@ man_MANS =                                      \
   CURLOPT_READDATA.3                            \
   CURLOPT_READFUNCTION.3                        \
   CURLOPT_REDIR_PROTOCOLS.3                     \
+  CURLOPT_REDIR_PROTOCOLS_STR.3                 \
   CURLOPT_REFERER.3                             \
   CURLOPT_REQUEST_TARGET.3                      \
   CURLOPT_RESOLVE.3                             \
@@ -320,6 +326,7 @@ man_MANS =                                      \
   CURLOPT_SASL_IR.3                             \
   CURLOPT_SEEKDATA.3                            \
   CURLOPT_SEEKFUNCTION.3                        \
+  CURLOPT_SERVER_RESPONSE_TIMEOUT.3             \
   CURLOPT_SERVICE_NAME.3                        \
   CURLOPT_SHARE.3                               \
   CURLOPT_SOCKOPTDATA.3                         \
@@ -336,15 +343,6 @@ man_MANS =                                      \
   CURLOPT_SSH_KNOWNHOSTS.3                      \
   CURLOPT_SSH_PRIVATE_KEYFILE.3                 \
   CURLOPT_SSH_PUBLIC_KEYFILE.3                  \
-  CURLOPT_SSLCERT.3                             \
-  CURLOPT_SSLCERT_BLOB.3                        \
-  CURLOPT_SSLCERTTYPE.3                         \
-  CURLOPT_SSLENGINE.3                           \
-  CURLOPT_SSLENGINE_DEFAULT.3                   \
-  CURLOPT_SSLKEY.3                              \
-  CURLOPT_SSLKEY_BLOB.3                         \
-  CURLOPT_SSLKEYTYPE.3                          \
-  CURLOPT_SSLVERSION.3                          \
   CURLOPT_SSL_CIPHER_LIST.3                     \
   CURLOPT_SSL_CTX_DATA.3                        \
   CURLOPT_SSL_CTX_FUNCTION.3                    \
@@ -357,6 +355,15 @@ man_MANS =                                      \
   CURLOPT_SSL_VERIFYHOST.3                      \
   CURLOPT_SSL_VERIFYPEER.3                      \
   CURLOPT_SSL_VERIFYSTATUS.3                    \
+  CURLOPT_SSLCERT.3                             \
+  CURLOPT_SSLCERT_BLOB.3                        \
+  CURLOPT_SSLCERTTYPE.3                         \
+  CURLOPT_SSLENGINE.3                           \
+  CURLOPT_SSLENGINE_DEFAULT.3                   \
+  CURLOPT_SSLKEY.3                              \
+  CURLOPT_SSLKEY_BLOB.3                         \
+  CURLOPT_SSLKEYTYPE.3                          \
+  CURLOPT_SSLVERSION.3                          \
   CURLOPT_STDERR.3                              \
   CURLOPT_STREAM_DEPENDS.3                      \
   CURLOPT_STREAM_DEPENDS_E.3                    \
@@ -381,23 +388,23 @@ man_MANS =                                      \
   CURLOPT_TLSAUTH_USERNAME.3                    \
   CURLOPT_TRAILERDATA.3                         \
   CURLOPT_TRAILERFUNCTION.3                     \
-  CURLOPT_TRANSFERTEXT.3                        \
   CURLOPT_TRANSFER_ENCODING.3                   \
+  CURLOPT_TRANSFERTEXT.3                        \
   CURLOPT_UNIX_SOCKET_PATH.3                    \
   CURLOPT_UNRESTRICTED_AUTH.3                   \
   CURLOPT_UPKEEP_INTERVAL_MS.3                  \
   CURLOPT_UPLOAD.3                              \
   CURLOPT_UPLOAD_BUFFERSIZE.3                   \
   CURLOPT_URL.3                                 \
+  CURLOPT_USE_SSL.3                             \
   CURLOPT_USERAGENT.3                           \
   CURLOPT_USERNAME.3                            \
   CURLOPT_USERPWD.3                             \
-  CURLOPT_USE_SSL.3                             \
-  CURLOPT_AWS_SIGV4.3                           \
   CURLOPT_VERBOSE.3                             \
   CURLOPT_WILDCARDMATCH.3                       \
   CURLOPT_WRITEDATA.3                           \
   CURLOPT_WRITEFUNCTION.3                       \
+  CURLOPT_WS_OPTIONS.3                          \
   CURLOPT_XFERINFODATA.3                        \
   CURLOPT_XFERINFOFUNCTION.3                    \
   CURLOPT_XOAUTH2_BEARER.3                      \
index dfc8c04ec1ce26a69748ce184f4a6e8fb8a9abca..d809940d710fae656db540fcb13060261fb1dc61 100644 (file)
 
  Name                           Introduced  Deprecated  Last
 
+CURL_AT_LEAST_VERSION           7.43.0
+CURL_BLOB_COPY                  7.71.0
+CURL_BLOB_NOCOPY                7.71.0
+CURL_CHUNK_BGN_FUNC_FAIL        7.21.0
+CURL_CHUNK_BGN_FUNC_OK          7.21.0
+CURL_CHUNK_BGN_FUNC_SKIP        7.21.0
+CURL_CHUNK_END_FUNC_FAIL        7.21.0
+CURL_CHUNK_END_FUNC_OK          7.21.0
+CURL_CSELECT_ERR                7.16.3
+CURL_CSELECT_IN                 7.16.3
+CURL_CSELECT_OUT                7.16.3
+CURL_DID_MEMORY_FUNC_TYPEDEFS   7.49.0
+CURL_EASY_NONE                  7.14.0        -           7.15.4
+CURL_EASY_TIMEOUT               7.14.0        -           7.15.4
+CURL_ERROR_SIZE                 7.1
+CURL_FNMATCHFUNC_FAIL           7.21.0
+CURL_FNMATCHFUNC_MATCH          7.21.0
+CURL_FNMATCHFUNC_NOMATCH        7.21.0
+CURL_FORMADD_DISABLED           7.12.1        7.56.0
+CURL_FORMADD_ILLEGAL_ARRAY      7.9.8         7.56.0
+CURL_FORMADD_INCOMPLETE         7.9.8         7.56.0
+CURL_FORMADD_MEMORY             7.9.8         7.56.0
+CURL_FORMADD_NULL               7.9.8         7.56.0
+CURL_FORMADD_OK                 7.9.8         7.56.0
+CURL_FORMADD_OPTION_TWICE       7.9.8         7.56.0
+CURL_FORMADD_UNKNOWN_OPTION     7.9.8         7.56.0
+CURL_GLOBAL_ACK_EINTR           7.30.0
+CURL_GLOBAL_ALL                 7.8
+CURL_GLOBAL_DEFAULT             7.8
+CURL_GLOBAL_NOTHING             7.8
+CURL_GLOBAL_SSL                 7.8
+CURL_GLOBAL_WIN32               7.8.1
+CURL_HET_DEFAULT                7.59.0
+CURL_HTTP_VERSION_1_0           7.9.1
+CURL_HTTP_VERSION_1_1           7.9.1
+CURL_HTTP_VERSION_2             7.43.0
+CURL_HTTP_VERSION_2_0           7.33.0
+CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
+CURL_HTTP_VERSION_2TLS          7.47.0
+CURL_HTTP_VERSION_3             7.66.0
+CURL_HTTP_VERSION_NONE          7.9.1
+CURL_HTTPPOST_BUFFER            7.46.0
+CURL_HTTPPOST_CALLBACK          7.46.0
+CURL_HTTPPOST_FILENAME          7.46.0
+CURL_HTTPPOST_LARGE             7.46.0
+CURL_HTTPPOST_PTRBUFFER         7.46.0
+CURL_HTTPPOST_PTRCONTENTS       7.46.0
+CURL_HTTPPOST_PTRNAME           7.46.0
+CURL_HTTPPOST_READFILE          7.46.0
+CURL_IPRESOLVE_V4               7.10.8
+CURL_IPRESOLVE_V6               7.10.8
+CURL_IPRESOLVE_WHATEVER         7.10.8
+CURL_ISOCPP                     7.10.2
+CURL_LOCK_ACCESS_NONE           7.10.3
+CURL_LOCK_ACCESS_SHARED         7.10.3
+CURL_LOCK_ACCESS_SINGLE         7.10.3
+CURL_LOCK_DATA_CONNECT          7.10.3
+CURL_LOCK_DATA_COOKIE           7.10.3
+CURL_LOCK_DATA_DNS              7.10.3
+CURL_LOCK_DATA_NONE             7.10.3
+CURL_LOCK_DATA_PSL              7.61.0
+CURL_LOCK_DATA_SHARE            7.10.4
+CURL_LOCK_DATA_SSL_SESSION      7.10.3
+CURL_LOCK_TYPE_CONNECT          7.10          -           7.10.2
+CURL_LOCK_TYPE_COOKIE           7.10          -           7.10.2
+CURL_LOCK_TYPE_DNS              7.10          -           7.10.2
+CURL_LOCK_TYPE_NONE             7.10          -           7.10.2
+CURL_LOCK_TYPE_SSL_SESSION      7.10          -           7.10.2
+CURL_MAX_HTTP_HEADER            7.19.7
+CURL_MAX_READ_SIZE              7.53.0
+CURL_MAX_WRITE_SIZE             7.9.7
+CURL_NETRC_IGNORED              7.9.8
+CURL_NETRC_OPTIONAL             7.9.8
+CURL_NETRC_REQUIRED             7.9.8
+CURL_POLL_IN                    7.14.0
+CURL_POLL_INOUT                 7.14.0
+CURL_POLL_NONE                  7.14.0
+CURL_POLL_OUT                   7.14.0
+CURL_POLL_REMOVE                7.14.0
+CURL_PREREQFUNC_ABORT           7.79.0
+CURL_PREREQFUNC_OK              7.79.0
+CURL_PROGRESS_BAR               7.1.1         -           7.4.1
+CURL_PROGRESS_STATS             7.1.1         -           7.4.1
+CURL_PROGRESSFUNC_CONTINUE      7.68.0
+CURL_PULL_SYS_POLL_H            7.56.0
+CURL_PUSH_DENY                  7.44.0
+CURL_PUSH_ERROROUT              7.72.0
+CURL_PUSH_OK                    7.44.0
+CURL_READFUNC_ABORT             7.12.1
+CURL_READFUNC_PAUSE             7.18.0
+CURL_REDIR_GET_ALL              7.19.1
+CURL_REDIR_POST_301             7.19.1
+CURL_REDIR_POST_302             7.19.1
+CURL_REDIR_POST_303             7.25.1
+CURL_REDIR_POST_ALL             7.19.1
+CURL_RTSPREQ_ANNOUNCE           7.20.0
+CURL_RTSPREQ_DESCRIBE           7.20.0
+CURL_RTSPREQ_GET_PARAMETER      7.20.0
+CURL_RTSPREQ_NONE               7.20.0
+CURL_RTSPREQ_OPTIONS            7.20.0
+CURL_RTSPREQ_PAUSE              7.20.0
+CURL_RTSPREQ_PLAY               7.20.0
+CURL_RTSPREQ_RECEIVE            7.20.0
+CURL_RTSPREQ_RECORD             7.20.0
+CURL_RTSPREQ_SET_PARAMETER      7.20.0
+CURL_RTSPREQ_SETUP              7.20.0
+CURL_RTSPREQ_TEARDOWN           7.20.0
+CURL_SEEKFUNC_CANTSEEK          7.19.5
+CURL_SEEKFUNC_FAIL              7.19.5
+CURL_SEEKFUNC_OK                7.19.5
+CURL_SOCKET_BAD                 7.14.0
+CURL_SOCKET_TIMEOUT             7.14.0
+CURL_SOCKOPT_ALREADY_CONNECTED  7.21.5
+CURL_SOCKOPT_ERROR              7.21.5
+CURL_SOCKOPT_OK                 7.21.5
+CURL_SSLVERSION_DEFAULT         7.9.2
+CURL_SSLVERSION_MAX_DEFAULT     7.54.0
+CURL_SSLVERSION_MAX_NONE        7.54.0
+CURL_SSLVERSION_MAX_TLSv1_0     7.54.0
+CURL_SSLVERSION_MAX_TLSv1_1     7.54.0
+CURL_SSLVERSION_MAX_TLSv1_2     7.54.0
+CURL_SSLVERSION_MAX_TLSv1_3     7.54.0
+CURL_SSLVERSION_SSLv2           7.9.2
+CURL_SSLVERSION_SSLv3           7.9.2
+CURL_SSLVERSION_TLSv1           7.9.2
+CURL_SSLVERSION_TLSv1_0         7.34.0
+CURL_SSLVERSION_TLSv1_1         7.34.0
+CURL_SSLVERSION_TLSv1_2         7.34.0
+CURL_SSLVERSION_TLSv1_3         7.52.0
+CURL_STRICTER                   7.50.2
+CURL_TIMECOND_IFMODSINCE        7.9.7
+CURL_TIMECOND_IFUNMODSINCE      7.9.7
+CURL_TIMECOND_LASTMOD           7.9.7
+CURL_TIMECOND_NONE              7.9.7
+CURL_TLSAUTH_NONE               7.21.4
+CURL_TLSAUTH_SRP                7.21.4
+CURL_TRAILERFUNC_ABORT          7.64.0
+CURL_TRAILERFUNC_OK             7.64.0
+CURL_UPKEEP_INTERVAL_DEFAULT    7.62.0
+CURL_VERSION_ALTSVC             7.64.1
+CURL_VERSION_ASYNCHDNS          7.10.7
+CURL_VERSION_BITS               7.43.0
+CURL_VERSION_BROTLI             7.57.0
+CURL_VERSION_CONV               7.15.4
+CURL_VERSION_CURLDEBUG          7.19.6
+CURL_VERSION_DEBUG              7.10.6
+CURL_VERSION_GSASL              7.76.0
+CURL_VERSION_GSSAPI             7.38.0
+CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
+CURL_VERSION_HSTS               7.74.0
+CURL_VERSION_HTTP2              7.33.0
+CURL_VERSION_HTTP3              7.66.0
+CURL_VERSION_HTTPS_PROXY        7.52.0
+CURL_VERSION_IDN                7.12.0
+CURL_VERSION_IPV6               7.10
+CURL_VERSION_KERBEROS4          7.10          7.33.0
+CURL_VERSION_KERBEROS5          7.40.0
+CURL_VERSION_LARGEFILE          7.11.1
+CURL_VERSION_LIBZ               7.10
+CURL_VERSION_MULTI_SSL          7.56.0
+CURL_VERSION_NTLM               7.10.6
+CURL_VERSION_NTLM_WB            7.22.0
+CURL_VERSION_PSL                7.47.0
+CURL_VERSION_SPNEGO             7.10.8
+CURL_VERSION_SSL                7.10
+CURL_VERSION_SSPI               7.13.2
+CURL_VERSION_THREADSAFE         7.84.0
+CURL_VERSION_TLSAUTH_SRP        7.21.4
+CURL_VERSION_UNICODE            7.72.0
+CURL_VERSION_UNIX_SOCKETS       7.40.0
+CURL_VERSION_ZSTD               7.72.0
+CURL_WAIT_POLLIN                7.28.0
+CURL_WAIT_POLLOUT               7.28.0
+CURL_WAIT_POLLPRI               7.28.0
+CURL_WIN32                      7.69.0
+CURL_WRITEFUNC_PAUSE            7.18.0
+CURL_ZERO_TERMINATED            7.56.0
 CURLALTSVC_H1                   7.64.1
 CURLALTSVC_H2                   7.64.1
 CURLALTSVC_H3                   7.64.1
 CURLALTSVC_READONLYFILE         7.64.1
 CURLAUTH_ANY                    7.10.6
 CURLAUTH_ANYSAFE                7.10.6
+CURLAUTH_AWS_SIGV4              7.75.0
 CURLAUTH_BASIC                  7.10.6
 CURLAUTH_BEARER                 7.61.0
 CURLAUTH_DIGEST                 7.10.6
@@ -29,7 +207,6 @@ CURLAUTH_NONE                   7.10.6
 CURLAUTH_NTLM                   7.10.6
 CURLAUTH_NTLM_WB                7.22.0
 CURLAUTH_ONLY                   7.21.3
-CURLAUTH_AWS_SIGV4              7.75.0
 CURLCLOSEPOLICY_CALLBACK        7.7
 CURLCLOSEPOLICY_LEAST_RECENTLY_USED 7.7
 CURLCLOSEPOLICY_LEAST_TRAFFIC   7.7
@@ -46,14 +223,14 @@ CURLE_BAD_DOWNLOAD_RESUME       7.10
 CURLE_BAD_FUNCTION_ARGUMENT     7.1
 CURLE_BAD_PASSWORD_ENTERED      7.4.2         7.17.0
 CURLE_CHUNK_FAILED              7.21.0
-CURLE_CONV_FAILED               7.15.4
-CURLE_CONV_REQD                 7.15.4
+CURLE_CONV_FAILED               7.15.4        7.82.0
+CURLE_CONV_REQD                 7.15.4        7.82.0
 CURLE_COULDNT_CONNECT           7.1
 CURLE_COULDNT_RESOLVE_HOST      7.1
 CURLE_COULDNT_RESOLVE_PROXY     7.1
 CURLE_FAILED_INIT               7.1
-CURLE_FILESIZE_EXCEEDED         7.10.8
 CURLE_FILE_COULDNT_READ_FILE    7.1
+CURLE_FILESIZE_EXCEEDED         7.10.8
 CURLE_FTP_ACCEPT_FAILED         7.24.0
 CURLE_FTP_ACCEPT_TIMEOUT        7.24.0
 CURLE_FTP_ACCESS_DENIED         7.1           7.17.0
@@ -92,13 +269,13 @@ CURLE_HTTP_RANGE_ERROR          7.1           7.17.0
 CURLE_HTTP_RETURNED_ERROR       7.10.3
 CURLE_INTERFACE_FAILED          7.12.0
 CURLE_LDAP_CANNOT_BIND          7.1
-CURLE_LDAP_INVALID_URL          7.10.8
+CURLE_LDAP_INVALID_URL          7.10.8        7.82.0
 CURLE_LDAP_SEARCH_FAILED        7.1
 CURLE_LIBRARY_NOT_FOUND         7.1           7.17.0
 CURLE_LOGIN_DENIED              7.13.1
 CURLE_MALFORMAT_USER            7.1           7.17.0
-CURLE_NOT_BUILT_IN              7.21.5
 CURLE_NO_CONNECTION_AVAILABLE   7.30.0
+CURLE_NOT_BUILT_IN              7.21.5
 CURLE_OK                        7.1
 CURLE_OPERATION_TIMEDOUT        7.10.2
 CURLE_OPERATION_TIMEOUTED       7.1           7.17.0
@@ -149,6 +326,7 @@ CURLE_TFTP_UNKNOWNID            7.15.0
 CURLE_TOO_MANY_REDIRECTS        7.5
 CURLE_UNKNOWN_OPTION            7.21.5
 CURLE_UNKNOWN_TELNET_OPTION     7.7           7.21.5
+CURLE_UNRECOVERABLE_POLL        7.84.0
 CURLE_UNSUPPORTED_PROTOCOL      7.1
 CURLE_UPLOAD_FAILED             7.16.3
 CURLE_URL_MALFORMAT             7.1
@@ -194,6 +372,9 @@ CURLFORM_NOTHING                7.9           7.56.0
 CURLFORM_PTRCONTENTS            7.9           7.56.0
 CURLFORM_PTRNAME                7.9           7.56.0
 CURLFORM_STREAM                 7.18.2        7.56.0
+CURLFTP_CREATE_DIR              7.19.4
+CURLFTP_CREATE_DIR_NONE         7.19.4
+CURLFTP_CREATE_DIR_RETRY        7.19.4
 CURLFTPAUTH_DEFAULT             7.12.2
 CURLFTPAUTH_SSL                 7.12.2
 CURLFTPAUTH_TLS                 7.12.2
@@ -208,12 +389,22 @@ CURLFTPSSL_CCC_PASSIVE          7.16.1
 CURLFTPSSL_CONTROL              7.11.0        7.17.0
 CURLFTPSSL_NONE                 7.11.0        7.17.0
 CURLFTPSSL_TRY                  7.11.0        7.17.0
-CURLFTP_CREATE_DIR              7.19.4
-CURLFTP_CREATE_DIR_NONE         7.19.4
-CURLFTP_CREATE_DIR_RETRY        7.19.4
 CURLGSSAPI_DELEGATION_FLAG      7.22.0
 CURLGSSAPI_DELEGATION_NONE      7.22.0
 CURLGSSAPI_DELEGATION_POLICY_FLAG 7.22.0
+CURLH_1XX                       7.83.0
+CURLH_CONNECT                   7.83.0
+CURLH_HEADER                    7.83.0
+CURLH_PSEUDO                    7.83.0
+CURLH_TRAILER                   7.83.0
+CURLHE_BAD_ARGUMENT             7.83.0
+CURLHE_BADINDEX                 7.83.0
+CURLHE_MISSING                  7.83.0
+CURLHE_NOHEADERS                7.83.0
+CURLHE_NOREQUEST                7.83.0
+CURLHE_NOT_BUILT_IN             7.83.0
+CURLHE_OK                       7.83.0
+CURLHE_OUT_OF_MEMORY            7.83.0
 CURLHEADER_SEPARATE             7.37.0
 CURLHEADER_UNIFIED              7.37.0
 CURLHSTS_ENABLE                 7.74.0
@@ -221,13 +412,15 @@ CURLHSTS_READONLYFILE           7.74.0
 CURLINFO_ACTIVESOCKET           7.45.0
 CURLINFO_APPCONNECT_TIME        7.19.0
 CURLINFO_APPCONNECT_TIME_T      7.61.0
+CURLINFO_CAINFO                 7.84.0
+CURLINFO_CAPATH                 7.84.0
 CURLINFO_CERTINFO               7.19.1
 CURLINFO_CONDITION_UNMET        7.19.4
 CURLINFO_CONNECT_TIME           7.4.1
 CURLINFO_CONNECT_TIME_T         7.61.0
-CURLINFO_CONTENT_LENGTH_DOWNLOAD 7.6.1
+CURLINFO_CONTENT_LENGTH_DOWNLOAD 7.6.1        7.55.0
 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 7.55.0
-CURLINFO_CONTENT_LENGTH_UPLOAD  7.6.1
+CURLINFO_CONTENT_LENGTH_UPLOAD  7.6.1         7.55.0
 CURLINFO_CONTENT_LENGTH_UPLOAD_T 7.55.0
 CURLINFO_CONTENT_TYPE           7.9.4
 CURLINFO_COOKIELIST             7.14.1
@@ -243,12 +436,12 @@ CURLINFO_FTP_ENTRY_PATH         7.15.4
 CURLINFO_HEADER_IN              7.9.6
 CURLINFO_HEADER_OUT             7.9.6
 CURLINFO_HEADER_SIZE            7.4.1
-CURLINFO_HTTPAUTH_AVAIL         7.10.8
 CURLINFO_HTTP_CODE              7.4.1         7.10.8
 CURLINFO_HTTP_CONNECTCODE       7.10.7
 CURLINFO_HTTP_VERSION           7.50.0
+CURLINFO_HTTPAUTH_AVAIL         7.10.8
 CURLINFO_LASTONE                7.4.1
-CURLINFO_LASTSOCKET             7.15.2
+CURLINFO_LASTSOCKET             7.15.2        7.45.0
 CURLINFO_LOCAL_IP               7.21.0
 CURLINFO_LOCAL_PORT             7.21.0
 CURLINFO_LONG                   7.4.1
@@ -264,10 +457,10 @@ CURLINFO_PRETRANSFER_TIME_T     7.61.0
 CURLINFO_PRIMARY_IP             7.19.0
 CURLINFO_PRIMARY_PORT           7.21.0
 CURLINFO_PRIVATE                7.10.3
-CURLINFO_PROTOCOL               7.52.0
-CURLINFO_PROXYAUTH_AVAIL        7.10.8
+CURLINFO_PROTOCOL               7.52.0        7.85.0
 CURLINFO_PROXY_ERROR            7.73.0
 CURLINFO_PROXY_SSL_VERIFYRESULT 7.52.0
+CURLINFO_PROXYAUTH_AVAIL        7.10.8
 CURLINFO_PTR                    7.54.1
 CURLINFO_REDIRECT_COUNT         7.9.7
 CURLINFO_REDIRECT_TIME          7.9.7
@@ -282,15 +475,15 @@ CURLINFO_RTSP_CSEQ_RECV         7.20.0
 CURLINFO_RTSP_SERVER_CSEQ       7.20.0
 CURLINFO_RTSP_SESSION_ID        7.20.0
 CURLINFO_SCHEME                 7.52.0
-CURLINFO_SIZE_DOWNLOAD          7.4.1
+CURLINFO_SIZE_DOWNLOAD          7.4.1         7.55.0
 CURLINFO_SIZE_DOWNLOAD_T        7.55.0
-CURLINFO_SIZE_UPLOAD            7.4.1
+CURLINFO_SIZE_UPLOAD            7.4.1         7.55.0
 CURLINFO_SIZE_UPLOAD_T          7.55.0
 CURLINFO_SLIST                  7.12.3
 CURLINFO_SOCKET                 7.45.0
-CURLINFO_SPEED_DOWNLOAD         7.4.1
+CURLINFO_SPEED_DOWNLOAD         7.4.1         7.55.0
 CURLINFO_SPEED_DOWNLOAD_T       7.55.0
-CURLINFO_SPEED_UPLOAD           7.4.1
+CURLINFO_SPEED_UPLOAD           7.4.1         7.55.0
 CURLINFO_SPEED_UPLOAD_T         7.55.0
 CURLINFO_SSL_DATA_IN            7.12.1
 CURLINFO_SSL_DATA_OUT           7.12.1
@@ -324,14 +517,29 @@ CURLKHTYPE_ED25519              7.58.0
 CURLKHTYPE_RSA                  7.19.6
 CURLKHTYPE_RSA1                 7.19.6
 CURLKHTYPE_UNKNOWN              7.19.6
+CURLM_ABORTED_BY_CALLBACK       7.81.0
+CURLM_ADDED_ALREADY             7.32.1
+CURLM_BAD_EASY_HANDLE           7.9.6
+CURLM_BAD_FUNCTION_ARGUMENT     7.69.0
+CURLM_BAD_HANDLE                7.9.6
+CURLM_BAD_SOCKET                7.15.4
+CURLM_CALL_MULTI_PERFORM        7.9.6
+CURLM_CALL_MULTI_SOCKET         7.15.5
+CURLM_INTERNAL_ERROR            7.9.6
+CURLM_OK                        7.9.6
+CURLM_OUT_OF_MEMORY             7.9.6
+CURLM_RECURSIVE_API_CALL        7.59.0
+CURLM_UNKNOWN_OPTION            7.15.4
+CURLM_UNRECOVERABLE_POLL        7.84.0
+CURLM_WAKEUP_FAILURE            7.68.0
 CURLMIMEOPT_FORMESCAPE          7.81.0
 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 7.30.0
 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 7.30.0
-CURLMOPT_MAXCONNECTS            7.16.3
 CURLMOPT_MAX_CONCURRENT_STREAMS  7.67.0
 CURLMOPT_MAX_HOST_CONNECTIONS   7.30.0
 CURLMOPT_MAX_PIPELINE_LENGTH    7.30.0
 CURLMOPT_MAX_TOTAL_CONNECTIONS  7.30.0
+CURLMOPT_MAXCONNECTS            7.16.3
 CURLMOPT_PIPELINING             7.16.0
 CURLMOPT_PIPELINING_SERVER_BL   7.30.0
 CURLMOPT_PIPELINING_SITE_BL     7.30.0
@@ -343,38 +551,16 @@ CURLMOPT_TIMERDATA              7.16.0
 CURLMOPT_TIMERFUNCTION          7.16.0
 CURLMSG_DONE                    7.9.6
 CURLMSG_NONE                    7.9.6
-CURLM_ABORTED_BY_CALLBACK       7.81.0
-CURLM_ADDED_ALREADY             7.32.1
-CURLM_BAD_EASY_HANDLE           7.9.6
-CURLM_BAD_FUNCTION_ARGUMENT     7.69.0
-CURLM_BAD_HANDLE                7.9.6
-CURLM_BAD_SOCKET                7.15.4
-CURLM_CALL_MULTI_PERFORM        7.9.6
-CURLM_CALL_MULTI_SOCKET         7.15.5
-CURLM_INTERNAL_ERROR            7.9.6
-CURLM_OK                        7.9.6
-CURLM_OUT_OF_MEMORY             7.9.6
-CURLM_RECURSIVE_API_CALL        7.59.0
-CURLM_UNKNOWN_OPTION            7.15.4
-CURLM_WAKEUP_FAILURE            7.68.0
 CURLOPT                         7.69.0
-CURLOPTTYPE_BLOB                7.71.0
-CURLOPTTYPE_CBPOINT             7.73.0
-CURLOPTTYPE_FUNCTIONPOINT       7.1
-CURLOPTTYPE_LONG                7.1
-CURLOPTTYPE_OBJECTPOINT         7.1
-CURLOPTTYPE_OFF_T               7.11.0
-CURLOPTTYPE_SLISTPOINT          7.65.2
-CURLOPTTYPE_STRINGPOINT         7.46.0
-CURLOPTTYPE_VALUES              7.73.0
 CURLOPT_ABSTRACT_UNIX_SOCKET    7.53.0
-CURLOPT_ACCEPTTIMEOUT_MS        7.24.0
 CURLOPT_ACCEPT_ENCODING         7.21.6
+CURLOPT_ACCEPTTIMEOUT_MS        7.24.0
 CURLOPT_ADDRESS_SCOPE           7.19.0
 CURLOPT_ALTSVC                  7.64.1
 CURLOPT_ALTSVC_CTRL             7.64.1
 CURLOPT_APPEND                  7.17.0
 CURLOPT_AUTOREFERER             7.1
+CURLOPT_AWS_SIGV4               7.75.0
 CURLOPT_BUFFERSIZE              7.10
 CURLOPT_CAINFO                  7.4.2
 CURLOPT_CAINFO_BLOB             7.77.0
@@ -387,13 +573,13 @@ CURLOPT_CLOSEFUNCTION           7.7           7.11.1      7.15.5
 CURLOPT_CLOSEPOLICY             7.7           7.16.1
 CURLOPT_CLOSESOCKETDATA         7.21.7
 CURLOPT_CLOSESOCKETFUNCTION     7.21.7
-CURLOPT_CONNECTTIMEOUT          7.7
-CURLOPT_CONNECTTIMEOUT_MS       7.16.2
 CURLOPT_CONNECT_ONLY            7.15.2
 CURLOPT_CONNECT_TO              7.49.0
-CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4
-CURLOPT_CONV_FROM_UTF8_FUNCTION 7.15.4
-CURLOPT_CONV_TO_NETWORK_FUNCTION 7.15.4
+CURLOPT_CONNECTTIMEOUT          7.7
+CURLOPT_CONNECTTIMEOUT_MS       7.16.2
+CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4     7.82.0
+CURLOPT_CONV_FROM_UTF8_FUNCTION 7.15.4        7.82.0
+CURLOPT_CONV_TO_NETWORK_FUNCTION 7.15.4       7.82.0
 CURLOPT_COOKIE                  7.1
 CURLOPT_COOKIEFILE              7.1
 CURLOPT_COOKIEJAR               7.9
@@ -420,8 +606,8 @@ CURLOPT_DOH_SSL_VERIFYHOST      7.76.0
 CURLOPT_DOH_SSL_VERIFYPEER      7.76.0
 CURLOPT_DOH_SSL_VERIFYSTATUS    7.76.0
 CURLOPT_DOH_URL                 7.62.0
-CURLOPT_EGDSOCKET               7.7
-CURLOPT_ENCODING                7.10
+CURLOPT_EGDSOCKET               7.7           7.84.0
+CURLOPT_ENCODING                7.10          7.21.6
 CURLOPT_ERRORBUFFER             7.1
 CURLOPT_EXPECT_100_TIMEOUT_MS   7.36.0
 CURLOPT_FAILONERROR             7.1
@@ -432,22 +618,22 @@ CURLOPT_FNMATCH_FUNCTION        7.21.0
 CURLOPT_FOLLOWLOCATION          7.1
 CURLOPT_FORBID_REUSE            7.7
 CURLOPT_FRESH_CONNECT           7.7
-CURLOPT_FTPAPPEND               7.1           7.16.4
-CURLOPT_FTPASCII                7.1           7.11.1      7.15.5
-CURLOPT_FTPLISTONLY             7.1           7.16.4
-CURLOPT_FTPPORT                 7.1
-CURLOPT_FTPSSLAUTH              7.12.2
 CURLOPT_FTP_ACCOUNT             7.13.0
 CURLOPT_FTP_ALTERNATIVE_TO_USER 7.15.5
 CURLOPT_FTP_CREATE_MISSING_DIRS 7.10.7
 CURLOPT_FTP_FILEMETHOD          7.15.1
-CURLOPT_FTP_RESPONSE_TIMEOUT    7.10.8
+CURLOPT_FTP_RESPONSE_TIMEOUT    7.10.8        7.85.0
 CURLOPT_FTP_SKIP_PASV_IP        7.15.0
 CURLOPT_FTP_SSL                 7.11.0        7.16.4
 CURLOPT_FTP_SSL_CCC             7.16.1
 CURLOPT_FTP_USE_EPRT            7.10.5
 CURLOPT_FTP_USE_EPSV            7.9.2
 CURLOPT_FTP_USE_PRET            7.20.0
+CURLOPT_FTPAPPEND               7.1           7.16.4
+CURLOPT_FTPASCII                7.1           7.11.1      7.15.5
+CURLOPT_FTPLISTONLY             7.1           7.16.4
+CURLOPT_FTPPORT                 7.1
+CURLOPT_FTPSSLAUTH              7.12.2
 CURLOPT_GSSAPI_DELEGATION       7.22.0
 CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 7.59.0
 CURLOPT_HAPROXYPROTOCOL         7.60.0
@@ -463,15 +649,15 @@ CURLOPT_HSTSWRITEDATA           7.74.0
 CURLOPT_HSTSWRITEFUNCTION       7.74.0
 CURLOPT_HTTP09_ALLOWED          7.64.0
 CURLOPT_HTTP200ALIASES          7.10.3
+CURLOPT_HTTP_CONTENT_DECODING   7.16.2
+CURLOPT_HTTP_TRANSFER_DECODING  7.16.2
+CURLOPT_HTTP_VERSION            7.9.1
 CURLOPT_HTTPAUTH                7.10.6
 CURLOPT_HTTPGET                 7.8.1
 CURLOPT_HTTPHEADER              7.1
 CURLOPT_HTTPPOST                7.1           7.56.0
 CURLOPT_HTTPPROXYTUNNEL         7.3
 CURLOPT_HTTPREQUEST             7.1           -           7.15.5
-CURLOPT_HTTP_CONTENT_DECODING   7.16.2
-CURLOPT_HTTP_TRANSFER_DECODING  7.16.2
-CURLOPT_HTTP_VERSION            7.9.1
 CURLOPT_IGNORE_CONTENT_LENGTH   7.14.1
 CURLOPT_INFILE                  7.1           7.9.7
 CURLOPT_INFILESIZE              7.1
@@ -479,8 +665,8 @@ CURLOPT_INFILESIZE_LARGE        7.11.0
 CURLOPT_INTERFACE               7.3
 CURLOPT_INTERLEAVEDATA          7.20.0
 CURLOPT_INTERLEAVEFUNCTION      7.20.0
-CURLOPT_IOCTLDATA               7.12.3
-CURLOPT_IOCTLFUNCTION           7.12.3
+CURLOPT_IOCTLDATA               7.12.3        7.18.0
+CURLOPT_IOCTLFUNCTION           7.12.3        7.18.0
 CURLOPT_IPRESOLVE               7.10.8
 CURLOPT_ISSUERCERT              7.19.0
 CURLOPT_ISSUERCERT_BLOB         7.71.0
@@ -497,16 +683,16 @@ 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_MAX_RECV_SPEED_LARGE    7.15.5
+CURLOPT_MAX_SEND_SPEED_LARGE    7.15.5
 CURLOPT_MAXAGE_CONN             7.65.0
 CURLOPT_MAXCONNECTS             7.7
 CURLOPT_MAXFILESIZE             7.10.8
 CURLOPT_MAXFILESIZE_LARGE       7.11.0
 CURLOPT_MAXLIFETIME_CONN        7.80.0
 CURLOPT_MAXREDIRS               7.5
-CURLOPT_MAX_RECV_SPEED_LARGE    7.15.5
-CURLOPT_MAX_SEND_SPEED_LARGE    7.15.5
-CURLOPT_MIMEPOST                7.56.0
 CURLOPT_MIME_OPTIONS            7.81.0
+CURLOPT_MIMEPOST                7.56.0
 CURLOPT_MUTE                    7.1           7.8         7.15.5
 CURLOPT_NETRC                   7.1
 CURLOPT_NETRC_FILE              7.11.0
@@ -534,22 +720,16 @@ CURLOPT_POSTFIELDSIZE           7.2
 CURLOPT_POSTFIELDSIZE_LARGE     7.11.1
 CURLOPT_POSTQUOTE               7.1
 CURLOPT_POSTREDIR               7.19.1
+CURLOPT_PRE_PROXY               7.52.0
 CURLOPT_PREQUOTE                7.9.5
 CURLOPT_PREREQDATA              7.80.0
 CURLOPT_PREREQFUNCTION          7.80.0
-CURLOPT_PRE_PROXY               7.52.0
 CURLOPT_PRIVATE                 7.10.3
 CURLOPT_PROGRESSDATA            7.1
 CURLOPT_PROGRESSFUNCTION        7.1           7.32.0
-CURLOPT_PROTOCOLS               7.19.4
+CURLOPT_PROTOCOLS               7.19.4        7.85.0
+CURLOPT_PROTOCOLS_STR           7.85.0
 CURLOPT_PROXY                   7.1
-CURLOPT_PROXYAUTH               7.10.7
-CURLOPT_PROXYHEADER             7.37.0
-CURLOPT_PROXYPASSWORD           7.19.1
-CURLOPT_PROXYPORT               7.1
-CURLOPT_PROXYTYPE               7.10
-CURLOPT_PROXYUSERNAME           7.19.1
-CURLOPT_PROXYUSERPWD            7.1
 CURLOPT_PROXY_CAINFO            7.52.0
 CURLOPT_PROXY_CAINFO_BLOB       7.77.0
 CURLOPT_PROXY_CAPATH            7.52.0
@@ -559,29 +739,37 @@ CURLOPT_PROXY_ISSUERCERT_BLOB   7.71.0
 CURLOPT_PROXY_KEYPASSWD         7.52.0
 CURLOPT_PROXY_PINNEDPUBLICKEY   7.52.0
 CURLOPT_PROXY_SERVICE_NAME      7.43.0
+CURLOPT_PROXY_SSL_CIPHER_LIST   7.52.0
+CURLOPT_PROXY_SSL_OPTIONS       7.52.0
+CURLOPT_PROXY_SSL_VERIFYHOST    7.52.0
+CURLOPT_PROXY_SSL_VERIFYPEER    7.52.0
 CURLOPT_PROXY_SSLCERT           7.52.0
-CURLOPT_PROXY_SSLCERTTYPE       7.52.0
 CURLOPT_PROXY_SSLCERT_BLOB      7.71.0
+CURLOPT_PROXY_SSLCERTTYPE       7.52.0
 CURLOPT_PROXY_SSLKEY            7.52.0
-CURLOPT_PROXY_SSLKEYTYPE        7.52.0
 CURLOPT_PROXY_SSLKEY_BLOB       7.71.0
+CURLOPT_PROXY_SSLKEYTYPE        7.52.0
 CURLOPT_PROXY_SSLVERSION        7.52.0
-CURLOPT_PROXY_SSL_CIPHER_LIST   7.52.0
-CURLOPT_PROXY_SSL_OPTIONS       7.52.0
-CURLOPT_PROXY_SSL_VERIFYHOST    7.52.0
-CURLOPT_PROXY_SSL_VERIFYPEER    7.52.0
 CURLOPT_PROXY_TLS13_CIPHERS     7.61.0
 CURLOPT_PROXY_TLSAUTH_PASSWORD  7.52.0
 CURLOPT_PROXY_TLSAUTH_TYPE      7.52.0
 CURLOPT_PROXY_TLSAUTH_USERNAME  7.52.0
 CURLOPT_PROXY_TRANSFER_MODE     7.18.0
-CURLOPT_PUT                     7.1
+CURLOPT_PROXYAUTH               7.10.7
+CURLOPT_PROXYHEADER             7.37.0
+CURLOPT_PROXYPASSWORD           7.19.1
+CURLOPT_PROXYPORT               7.1
+CURLOPT_PROXYTYPE               7.10
+CURLOPT_PROXYUSERNAME           7.19.1
+CURLOPT_PROXYUSERPWD            7.1
+CURLOPT_PUT                     7.1           7.12.1
 CURLOPT_QUOTE                   7.1
-CURLOPT_RANDOM_FILE             7.7
+CURLOPT_RANDOM_FILE             7.7           7.84.0
 CURLOPT_RANGE                   7.1
 CURLOPT_READDATA                7.9.7
 CURLOPT_READFUNCTION            7.1
-CURLOPT_REDIR_PROTOCOLS         7.19.4
+CURLOPT_REDIR_PROTOCOLS         7.19.4        7.85.0
+CURLOPT_REDIR_PROTOCOLS_STR     7.85.0
 CURLOPT_REFERER                 7.1
 CURLOPT_REQUEST_TARGET          7.55.0
 CURLOPT_RESOLVE                 7.21.3
@@ -589,13 +777,13 @@ CURLOPT_RESOLVER_START_DATA     7.59.0
 CURLOPT_RESOLVER_START_FUNCTION 7.59.0
 CURLOPT_RESUME_FROM             7.1
 CURLOPT_RESUME_FROM_LARGE       7.11.0
-CURLOPT_RTSPHEADER              7.20.0
 CURLOPT_RTSP_CLIENT_CSEQ        7.20.0
 CURLOPT_RTSP_REQUEST            7.20.0
 CURLOPT_RTSP_SERVER_CSEQ        7.20.0
 CURLOPT_RTSP_SESSION_ID         7.20.0
 CURLOPT_RTSP_STREAM_URI         7.20.0
 CURLOPT_RTSP_TRANSPORT          7.20.0
+CURLOPT_RTSPHEADER              7.20.0
 CURLOPT_SASL_AUTHZID            7.66.0
 CURLOPT_SASL_IR                 7.31.0
 CURLOPT_SEEKDATA                7.18.0
@@ -620,34 +808,36 @@ CURLOPT_SSH_AUTH_TYPES          7.16.1
 CURLOPT_SSH_COMPRESSION         7.56.0
 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 7.17.1
 CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 7.80.0
+CURLOPT_SSH_HOSTKEYDATA                 7.84.0
+CURLOPT_SSH_HOSTKEYFUNCTION             7.84.0
 CURLOPT_SSH_KEYDATA             7.19.6
 CURLOPT_SSH_KEYFUNCTION         7.19.6
 CURLOPT_SSH_KNOWNHOSTS          7.19.6
 CURLOPT_SSH_PRIVATE_KEYFILE     7.16.1
 CURLOPT_SSH_PUBLIC_KEYFILE      7.16.1
-CURLOPT_SSLCERT                 7.1
-CURLOPT_SSLCERTPASSWD           7.1.1         7.17.0
-CURLOPT_SSLCERTTYPE             7.9.3
-CURLOPT_SSLCERT_BLOB            7.71.0
-CURLOPT_SSLENGINE               7.9.3
-CURLOPT_SSLENGINE_DEFAULT       7.9.3
-CURLOPT_SSLKEY                  7.9.3
-CURLOPT_SSLKEYPASSWD            7.9.3         7.17.0
-CURLOPT_SSLKEYTYPE              7.9.3
-CURLOPT_SSLKEY_BLOB             7.71.0
-CURLOPT_SSLVERSION              7.1
 CURLOPT_SSL_CIPHER_LIST         7.9
 CURLOPT_SSL_CTX_DATA            7.10.6
 CURLOPT_SSL_CTX_FUNCTION        7.10.6
 CURLOPT_SSL_EC_CURVES           7.73.0
 CURLOPT_SSL_ENABLE_ALPN         7.36.0
-CURLOPT_SSL_ENABLE_NPN          7.36.0
+CURLOPT_SSL_ENABLE_NPN          7.36.0        7.86.0
 CURLOPT_SSL_FALSESTART          7.42.0
 CURLOPT_SSL_OPTIONS             7.25.0
 CURLOPT_SSL_SESSIONID_CACHE     7.16.0
 CURLOPT_SSL_VERIFYHOST          7.8.1
 CURLOPT_SSL_VERIFYPEER          7.4.2
 CURLOPT_SSL_VERIFYSTATUS        7.41.0
+CURLOPT_SSLCERT                 7.1
+CURLOPT_SSLCERT_BLOB            7.71.0
+CURLOPT_SSLCERTPASSWD           7.1.1         7.17.0
+CURLOPT_SSLCERTTYPE             7.9.3
+CURLOPT_SSLENGINE               7.9.3
+CURLOPT_SSLENGINE_DEFAULT       7.9.3
+CURLOPT_SSLKEY                  7.9.3
+CURLOPT_SSLKEY_BLOB             7.71.0
+CURLOPT_SSLKEYPASSWD            7.9.3         7.17.0
+CURLOPT_SSLKEYTYPE              7.9.3
+CURLOPT_SSLVERSION              7.1
 CURLOPT_STDERR                  7.1
 CURLOPT_STREAM_DEPENDS          7.46.0
 CURLOPT_STREAM_DEPENDS_E        7.46.0
@@ -672,30 +862,40 @@ CURLOPT_TLSAUTH_TYPE            7.21.4
 CURLOPT_TLSAUTH_USERNAME        7.21.4
 CURLOPT_TRAILERDATA             7.64.0
 CURLOPT_TRAILERFUNCTION         7.64.0
-CURLOPT_TRANSFERTEXT            7.1.1
 CURLOPT_TRANSFER_ENCODING       7.21.6
+CURLOPT_TRANSFERTEXT            7.1.1
 CURLOPT_UNIX_SOCKET_PATH        7.40.0
 CURLOPT_UNRESTRICTED_AUTH       7.10.4
 CURLOPT_UPKEEP_INTERVAL_MS 7.62.0
 CURLOPT_UPLOAD                  7.1
 CURLOPT_UPLOAD_BUFFERSIZE       7.62.0
 CURLOPT_URL                     7.1
+CURLOPT_USE_SSL                 7.17.0
 CURLOPT_USERAGENT               7.1
 CURLOPT_USERNAME                7.19.1
 CURLOPT_USERPWD                 7.1
-CURLOPT_USE_SSL                 7.17.0
-CURLOPT_AWS_SIGV4               7.75.0
 CURLOPT_VERBOSE                 7.1
 CURLOPT_WILDCARDMATCH           7.21.0
 CURLOPT_WRITEDATA               7.9.7
 CURLOPT_WRITEFUNCTION           7.1
 CURLOPT_WRITEHEADER             7.1
 CURLOPT_WRITEINFO               7.1
+CURLOPT_WS_OPTIONS              7.86.0
 CURLOPT_XFERINFODATA            7.32.0
 CURLOPT_XFERINFOFUNCTION        7.32.0
 CURLOPT_XOAUTH2_BEARER          7.33.0
+CURLOPTTYPE_BLOB                7.71.0
+CURLOPTTYPE_CBPOINT             7.73.0
+CURLOPTTYPE_FUNCTIONPOINT       7.1
+CURLOPTTYPE_LONG                7.1
+CURLOPTTYPE_OBJECTPOINT         7.1
+CURLOPTTYPE_OFF_T               7.11.0
+CURLOPTTYPE_SLISTPOINT          7.65.2
+CURLOPTTYPE_STRINGPOINT         7.46.0
+CURLOPTTYPE_VALUES              7.73.0
 CURLOT_BLOB                     7.73.0
 CURLOT_CBPTR                    7.73.0
+CURLOT_FLAG_ALIAS               7.73.0
 CURLOT_FUNCTION                 7.73.0
 CURLOT_LONG                     7.73.0
 CURLOT_OBJECT                   7.73.0
@@ -744,8 +944,8 @@ CURLPROTO_SMTPS                 7.20.0
 CURLPROTO_TELNET                7.19.4
 CURLPROTO_TFTP                  7.19.4
 CURLPROXY_HTTP                  7.10
-CURLPROXY_HTTPS                 7.52.0
 CURLPROXY_HTTP_1_0              7.19.4
+CURLPROXY_HTTPS                 7.52.0
 CURLPROXY_SOCKS4                7.10
 CURLPROXY_SOCKS4A               7.18.0
 CURLPROXY_SOCKS5                7.10
@@ -785,8 +985,8 @@ CURLPX_UNKNOWN_FAIL             7.73.0
 CURLPX_UNKNOWN_MODE             7.73.0
 CURLPX_USER_REJECTED            7.73.0
 CURLSHE_BAD_OPTION              7.10.3
-CURLSHE_INVALID                 7.10.3
 CURLSHE_IN_USE                  7.10.3
+CURLSHE_INVALID                 7.10.3
 CURLSHE_NOMEM                   7.12.0
 CURLSHE_NOT_BUILT_IN            7.23.0
 CURLSHE_OK                      7.10.3
@@ -821,8 +1021,8 @@ CURLSSLBACKEND_NONE             7.34.0
 CURLSSLBACKEND_NSS              7.34.0
 CURLSSLBACKEND_OPENSSL          7.34.0
 CURLSSLBACKEND_POLARSSL         7.34.0       7.69.0
-CURLSSLBACKEND_RUSTLS           7.76.0
 CURLSSLBACKEND_QSOSSL           7.34.0        -           7.38.0
+CURLSSLBACKEND_RUSTLS           7.76.0
 CURLSSLBACKEND_SCHANNEL         7.34.0
 CURLSSLBACKEND_SECURETRANSPORT  7.64.1
 CURLSSLBACKEND_WOLFSSL          7.49.0
@@ -839,6 +1039,18 @@ CURLSSLSET_UNKNOWN_BACKEND      7.56.0
 CURLSTS_DONE                    7.74.0
 CURLSTS_FAIL                    7.74.0
 CURLSTS_OK                      7.74.0
+CURLU_ALLOW_SPACE               7.78.0
+CURLU_APPENDQUERY               7.62.0
+CURLU_DEFAULT_PORT              7.62.0
+CURLU_DEFAULT_SCHEME            7.62.0
+CURLU_DISALLOW_USER             7.62.0
+CURLU_GUESS_SCHEME              7.62.0
+CURLU_NO_AUTHORITY              7.67.0
+CURLU_NO_DEFAULT_PORT           7.62.0
+CURLU_NON_SUPPORT_SCHEME        7.62.0
+CURLU_PATH_AS_IS                7.62.0
+CURLU_URLDECODE                 7.62.0
+CURLU_URLENCODE                 7.62.0
 CURLUE_BAD_FILE_URL             7.81.0
 CURLUE_BAD_FRAGMENT             7.81.0
 CURLUE_BAD_HANDLE               7.62.0
@@ -884,18 +1096,6 @@ CURLUSESSL_ALL                  7.17.0
 CURLUSESSL_CONTROL              7.17.0
 CURLUSESSL_NONE                 7.17.0
 CURLUSESSL_TRY                  7.17.0
-CURLU_ALLOW_SPACE               7.78.0
-CURLU_APPENDQUERY               7.62.0
-CURLU_DEFAULT_PORT              7.62.0
-CURLU_DEFAULT_SCHEME            7.62.0
-CURLU_DISALLOW_USER             7.62.0
-CURLU_GUESS_SCHEME              7.62.0
-CURLU_NON_SUPPORT_SCHEME        7.62.0
-CURLU_NO_AUTHORITY              7.67.0
-CURLU_NO_DEFAULT_PORT           7.62.0
-CURLU_PATH_AS_IS                7.62.0
-CURLU_URLDECODE                 7.62.0
-CURLU_URLENCODE                 7.62.0
 CURLVERSION_EIGHTH              7.72.0
 CURLVERSION_FIFTH               7.57.0
 CURLVERSION_FIRST               7.10
@@ -907,173 +1107,19 @@ CURLVERSION_SEVENTH             7.70.0
 CURLVERSION_SIXTH               7.66.0
 CURLVERSION_TENTH               7.77.0
 CURLVERSION_THIRD               7.12.0
-CURL_CHUNK_BGN_FUNC_FAIL        7.21.0
-CURL_CHUNK_BGN_FUNC_OK          7.21.0
-CURL_CHUNK_BGN_FUNC_SKIP        7.21.0
-CURL_CHUNK_END_FUNC_FAIL        7.21.0
-CURL_CHUNK_END_FUNC_OK          7.21.0
-CURL_CSELECT_ERR                7.16.3
-CURL_CSELECT_IN                 7.16.3
-CURL_CSELECT_OUT                7.16.3
-CURL_DID_MEMORY_FUNC_TYPEDEFS   7.49.0
-CURL_EASY_NONE                  7.14.0        -           7.15.4
-CURL_EASY_TIMEOUT               7.14.0        -           7.15.4
-CURL_ERROR_SIZE                 7.1
-CURL_FNMATCHFUNC_FAIL           7.21.0
-CURL_FNMATCHFUNC_MATCH          7.21.0
-CURL_FNMATCHFUNC_NOMATCH        7.21.0
-CURL_FORMADD_DISABLED           7.12.1        7.56.0
-CURL_FORMADD_ILLEGAL_ARRAY      7.9.8         7.56.0
-CURL_FORMADD_INCOMPLETE         7.9.8         7.56.0
-CURL_FORMADD_MEMORY             7.9.8         7.56.0
-CURL_FORMADD_NULL               7.9.8         7.56.0
-CURL_FORMADD_OK                 7.9.8         7.56.0
-CURL_FORMADD_OPTION_TWICE       7.9.8         7.56.0
-CURL_FORMADD_UNKNOWN_OPTION     7.9.8         7.56.0
-CURL_GLOBAL_ACK_EINTR           7.30.0
-CURL_GLOBAL_ALL                 7.8
-CURL_GLOBAL_DEFAULT             7.8
-CURL_GLOBAL_NOTHING             7.8
-CURL_GLOBAL_SSL                 7.8
-CURL_GLOBAL_WIN32               7.8.1
-CURL_HET_DEFAULT                7.59.0
-CURL_HTTPPOST_BUFFER            7.46.0
-CURL_HTTPPOST_CALLBACK          7.46.0
-CURL_HTTPPOST_FILENAME          7.46.0
-CURL_HTTPPOST_LARGE             7.46.0
-CURL_HTTPPOST_PTRBUFFER         7.46.0
-CURL_HTTPPOST_PTRCONTENTS       7.46.0
-CURL_HTTPPOST_PTRNAME           7.46.0
-CURL_HTTPPOST_READFILE          7.46.0
-CURL_HTTP_VERSION_1_0           7.9.1
-CURL_HTTP_VERSION_1_1           7.9.1
-CURL_HTTP_VERSION_2             7.43.0
-CURL_HTTP_VERSION_2TLS          7.47.0
-CURL_HTTP_VERSION_2_0           7.33.0
-CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
-CURL_HTTP_VERSION_3             7.66.0
-CURL_HTTP_VERSION_NONE          7.9.1
-CURL_IPRESOLVE_V4               7.10.8
-CURL_IPRESOLVE_V6               7.10.8
-CURL_IPRESOLVE_WHATEVER         7.10.8
-CURL_LOCK_ACCESS_NONE           7.10.3
-CURL_LOCK_ACCESS_SHARED         7.10.3
-CURL_LOCK_ACCESS_SINGLE         7.10.3
-CURL_LOCK_DATA_CONNECT          7.10.3
-CURL_LOCK_DATA_COOKIE           7.10.3
-CURL_LOCK_DATA_DNS              7.10.3
-CURL_LOCK_DATA_NONE             7.10.3
-CURL_LOCK_DATA_PSL              7.61.0
-CURL_LOCK_DATA_SHARE            7.10.4
-CURL_LOCK_DATA_SSL_SESSION      7.10.3
-CURL_LOCK_TYPE_CONNECT          7.10          -           7.10.2
-CURL_LOCK_TYPE_COOKIE           7.10          -           7.10.2
-CURL_LOCK_TYPE_DNS              7.10          -           7.10.2
-CURL_LOCK_TYPE_NONE             7.10          -           7.10.2
-CURL_LOCK_TYPE_SSL_SESSION      7.10          -           7.10.2
-CURL_MAX_HTTP_HEADER            7.19.7
-CURL_MAX_READ_SIZE              7.53.0
-CURL_MAX_WRITE_SIZE             7.9.7
-CURL_NETRC_IGNORED              7.9.8
-CURL_NETRC_OPTIONAL             7.9.8
-CURL_NETRC_REQUIRED             7.9.8
-CURL_POLL_IN                    7.14.0
-CURL_POLL_INOUT                 7.14.0
-CURL_POLL_NONE                  7.14.0
-CURL_POLL_OUT                   7.14.0
-CURL_POLL_REMOVE                7.14.0
-CURL_PREREQFUNC_ABORT           7.79.0
-CURL_PREREQFUNC_OK              7.79.0
-CURL_PROGRESSFUNC_CONTINUE      7.68.0
-CURL_PROGRESS_BAR               7.1.1         -           7.4.1
-CURL_PROGRESS_STATS             7.1.1         -           7.4.1
-CURL_PUSH_DENY                  7.44.0
-CURL_PUSH_ERROROUT              7.72.0
-CURL_PUSH_OK                    7.44.0
-CURL_READFUNC_ABORT             7.12.1
-CURL_READFUNC_PAUSE             7.18.0
-CURL_REDIR_GET_ALL              7.19.1
-CURL_REDIR_POST_301             7.19.1
-CURL_REDIR_POST_302             7.19.1
-CURL_REDIR_POST_303             7.25.1
-CURL_REDIR_POST_ALL             7.19.1
-CURL_RTSPREQ_ANNOUNCE           7.20.0
-CURL_RTSPREQ_DESCRIBE           7.20.0
-CURL_RTSPREQ_GET_PARAMETER      7.20.0
-CURL_RTSPREQ_NONE               7.20.0
-CURL_RTSPREQ_OPTIONS            7.20.0
-CURL_RTSPREQ_PAUSE              7.20.0
-CURL_RTSPREQ_PLAY               7.20.0
-CURL_RTSPREQ_RECEIVE            7.20.0
-CURL_RTSPREQ_RECORD             7.20.0
-CURL_RTSPREQ_SETUP              7.20.0
-CURL_RTSPREQ_SET_PARAMETER      7.20.0
-CURL_RTSPREQ_TEARDOWN           7.20.0
-CURL_SEEKFUNC_CANTSEEK          7.19.5
-CURL_SEEKFUNC_FAIL              7.19.5
-CURL_SEEKFUNC_OK                7.19.5
-CURL_SOCKET_BAD                 7.14.0
-CURL_SOCKET_TIMEOUT             7.14.0
-CURL_SOCKOPT_ALREADY_CONNECTED  7.21.5
-CURL_SOCKOPT_ERROR              7.21.5
-CURL_SOCKOPT_OK                 7.21.5
-CURL_SSLVERSION_DEFAULT         7.9.2
-CURL_SSLVERSION_MAX_DEFAULT     7.54.0
-CURL_SSLVERSION_MAX_NONE        7.54.0
-CURL_SSLVERSION_MAX_TLSv1_0     7.54.0
-CURL_SSLVERSION_MAX_TLSv1_1     7.54.0
-CURL_SSLVERSION_MAX_TLSv1_2     7.54.0
-CURL_SSLVERSION_MAX_TLSv1_3     7.54.0
-CURL_SSLVERSION_SSLv2           7.9.2
-CURL_SSLVERSION_SSLv3           7.9.2
-CURL_SSLVERSION_TLSv1           7.9.2
-CURL_SSLVERSION_TLSv1_0         7.34.0
-CURL_SSLVERSION_TLSv1_1         7.34.0
-CURL_SSLVERSION_TLSv1_2         7.34.0
-CURL_SSLVERSION_TLSv1_3         7.52.0
-CURL_STRICTER                   7.50.2
-CURL_TIMECOND_IFMODSINCE        7.9.7
-CURL_TIMECOND_IFUNMODSINCE      7.9.7
-CURL_TIMECOND_LASTMOD           7.9.7
-CURL_TIMECOND_NONE              7.9.7
-CURL_TLSAUTH_NONE               7.21.4
-CURL_TLSAUTH_SRP                7.21.4
-CURL_TRAILERFUNC_ABORT          7.64.0
-CURL_TRAILERFUNC_OK             7.64.0
-CURL_UPKEEP_INTERVAL_DEFAULT    7.62.0
-CURL_VERSION_ALTSVC             7.64.1
-CURL_VERSION_ASYNCHDNS          7.10.7
-CURL_VERSION_BROTLI             7.57.0
-CURL_VERSION_CONV               7.15.4
-CURL_VERSION_CURLDEBUG          7.19.6
-CURL_VERSION_DEBUG              7.10.6
-CURL_VERSION_GSASL              7.76.0
-CURL_VERSION_GSSAPI             7.38.0
-CURL_VERSION_GSSNEGOTIATE       7.10.6        7.38.0
-CURL_VERSION_HSTS               7.74.0
-CURL_VERSION_HTTP2              7.33.0
-CURL_VERSION_HTTP3              7.66.0
-CURL_VERSION_HTTPS_PROXY        7.52.0
-CURL_VERSION_IDN                7.12.0
-CURL_VERSION_IPV6               7.10
-CURL_VERSION_KERBEROS4          7.10          7.33.0
-CURL_VERSION_KERBEROS5          7.40.0
-CURL_VERSION_LARGEFILE          7.11.1
-CURL_VERSION_LIBZ               7.10
-CURL_VERSION_MULTI_SSL          7.56.0
-CURL_VERSION_NTLM               7.10.6
-CURL_VERSION_NTLM_WB            7.22.0
-CURL_VERSION_PSL                7.47.0
-CURL_VERSION_SPNEGO             7.10.8
-CURL_VERSION_SSL                7.10
-CURL_VERSION_SSPI               7.13.2
-CURL_VERSION_TLSAUTH_SRP        7.21.4
-CURL_VERSION_UNICODE            7.72.0
-CURL_VERSION_UNIX_SOCKETS       7.40.0
-CURL_VERSION_ZSTD               7.72.0
-CURL_WAIT_POLLIN                7.28.0
-CURL_WAIT_POLLOUT               7.28.0
-CURL_WAIT_POLLPRI               7.28.0
-CURL_WIN32                      7.69.0
-CURL_WRITEFUNC_PAUSE            7.18.0
-CURL_ZERO_TERMINATED            7.56.0
+CURLWARNING                     7.66.0
+CURLWS_BINARY                   7.86.0
+CURLWS_CLOSE                    7.86.0
+CURLWS_CONT                     7.86.0
+CURLWS_OFFSET                   7.86.0
+CURLWS_PING                     7.86.0
+CURLWS_PONG                     7.86.0
+CURLWS_RAW_MODE                 7.86.0
+CURLWS_TEXT                     7.86.0
+LIBCURL_COPYRIGHT               7.18.0
+LIBCURL_TIMESTAMP               7.16.2
+LIBCURL_VERSION                 7.11.0
+LIBCURL_VERSION_MAJOR           7.11.0
+LIBCURL_VERSION_MINOR           7.11.0
+LIBCURL_VERSION_NUM             7.11.0
+LIBCURL_VERSION_PATCH           7.11.0
index 76384a6c65e3a0a0ff602d75ab7fd495887ab54f..8087d0f57b567e014da84b3d1714b9f60c516352 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2011 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # Experience has shown that the symbols-in-versions file is very useful to
index 3502ade8d3a17c8470631d3f0050ad311f62d3f3..98b5ae1c42a1377bc40473d0fbbd30ffd3849cfc 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 2008 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 2008 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
 .TH mk-ca-bundle 1 "24 Oct 2016" "version 1.27" "mk-ca-bundle manual"
 .SH NAME
-mk-ca-bundle \- convert mozilla's certdata.txt to PEM format
+mk-ca-bundle \- convert Mozilla's certificate bundle to PEM format
 .SH SYNOPSIS
 mk-ca-bundle [options]
 .I [outputfile]
 .SH DESCRIPTION
-The mk-ca-bundle tool downloads the certdata.txt file from Mozilla's source
-tree over HTTPS, then parses certdata.txt and extracts certificates into PEM
-format. By default, only CA root certificates trusted to issue SSL server
-authentication certificates are extracted. These are then processed with the
-OpenSSL commandline tool to produce the final ca-bundle file.
+The mk-ca-bundle tool downloads the \fIcertdata.txt\fP file from Mozilla's
+source tree over HTTPS, then parses \fIcertdata.txt\fP and extracts
+certificates into PEM format. By default, only CA root certificates trusted to
+issue SSL server authentication certificates are extracted. These are then
+processed with the OpenSSL command line tool to produce the final ca-bundle
+file.
 
 The default \fIoutputfile\fP name is \fBca-bundle.crt\fP. By setting it to '-'
 (a single dash) you will get the output sent to STDOUT instead of a file.
 
 The PEM format this scripts uses for output makes the result readily available
-for use by just about all OpenSSL or GnuTLS powered applications, such as
-curl, wget and more.
+for use by just about all OpenSSL or GnuTLS powered applications, such as curl
+and others.
 .SH OPTIONS
 The following options are supported:
 .IP -b
 backup an existing version of \fIoutputfilename\fP
 .IP "-d [name]"
-specify which Mozilla tree to pull certdata.txt from (or a custom URL). Valid
-names are: aurora, beta, central, mozilla, nss, release (default). They are
-shortcuts for which source tree to get the cert data from.
+specify which Mozilla tree to pull \fIcertdata.txt\fP from (or a custom
+URL). Valid names are: aurora, beta, central, Mozilla, nss, release
+(default). They are shortcuts for which source tree to get the certificates
+data from.
 .IP -f
-force rebuild even if certdata.txt is current (Added in version 1.17)
+force rebuild even if \fIcertdata.txt\fP is current (Added in version 1.17)
 .IP -i
 print version info about used modules
 .IP -k
@@ -56,33 +60,36 @@ Allow insecure data transfer. By default (since 1.27) this command will fail
 if the HTTPS transfer fails. This overrides that decision (and opens for
 man-in-the-middle attacks).
 .IP -l
-print license info about certdata.txt
+print license info about \fIcertdata.txt\fP
 .IP -m
 (Added in 1.26) Include meta data comments in the output. The meta data is
 specific information about each certificate that is stored in the original
 file as comments and using this option will make those comments get passed on
 to the output file. The meta data is not parsed in any way by mk-ca-bundle.
 .IP -n
-no download of certdata.txt (to use existing)
+no download of \fIcertdata.txt\fP (to use existing)
 .IP "-p [purposes]:[levels]"
-list of Mozilla trust purposes and levels for certificates to include in output.
-Takes the form of a comma separated list of purposes, a colon, and a comma
-separated list of levels. The default is to include all certificates trusted
-to issue SSL Server certificates (SERVER_AUTH:TRUSTED_DELEGATOR).
+list of Mozilla trust purposes and levels for certificates to include in
+output.  Takes the form of a comma separated list of purposes, a colon, and a
+comma separated list of levels. The default is to include all certificates
+trusted to issue SSL Server certificates
+(\fISERVER_AUTH:TRUSTED_DELEGATOR\fP).
 
 (Added in version 1.21, Perl only)
 
 Valid purposes are:
 .RS
-ALL, DIGITAL_SIGNATURE, NON_REPUDIATION, KEY_ENCIPHERMENT,
-DATA_ENCIPHERMENT, KEY_AGREEMENT, KEY_CERT_SIGN, CRL_SIGN,
-SERVER_AUTH (default), CLIENT_AUTH, CODE_SIGNING, EMAIL_PROTECTION,
-IPSEC_END_SYSTEM, IPSEC_TUNNEL, IPSEC_USER, TIME_STAMPING, STEP_UP_APPROVED
+\fIALL\fP, \fIDIGITAL_SIGNATURE\fP, \fINON_REPUDIATION\fP,
+\fIKEY_ENCIPHERMENT\fP, \fIDATA_ENCIPHERMENT\fP, \fIKEY_AGREEMENT\fP,
+\fIKEY_CERT_SIGN\fP, \fICRL_SIGN\fP, \fISERVER_AUTH\fP (default),
+\fICLIENT_AUTH\fP, \fICODE_SIGNING\fP, \fIEMAIL_PROTECTION\fP,
+\fIIPSEC_END_SYSTEM\fP, \fIIPSEC_TUNNEL\fP, \fIIPSEC_USER\fP,
+\fITIME_STAMPING\fP, \fISTEP_UP_APPROVED\fP
 .RE
 .IP
 Valid trust levels are:
 .RS
-ALL, TRUSTED_DELEGATOR (default), NOT_TRUSTED, MUST_VERIFY_TRUST, TRUSTED
+\fIALL\fP, \fITRUSTED_DELEGATOR\fP (default), \fINOT_TRUSTED\fP, \fIMUST_VERIFY_TRUST\fP, \fITRUSTED\fP
 .RE
 .IP -q
 be really quiet (no progress output at all)
@@ -99,21 +106,15 @@ Valid algorithms are:
 ALL, NONE, MD5 (default), SHA1, SHA256, SHA384, SHA512
 .RE
 .IP -u
-unlink (remove) certdata.txt after processing
+unlink (remove) \fIcertdata.txt\fP after processing
 .IP -v
-be verbose and print out processed CAs
+be verbose and print out processed certificate authorities
 .SH EXIT STATUS
 Returns 0 on success. Returns 1 if it fails to download data.
-.SH CERTDATA FORMAT
-The file format used by Mozilla for this trust information seems to be documented here:
+.SH FILE FORMAT
+The file format used by Mozilla for this trust information is documented here:
 .nf
 https://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.html
 .fi
 .SH SEE ALSO
 .BR curl (1)
-.SH HISTORY
-\fBmk-ca-bundle\fP is a command line tool that is shipped as part of every
-curl and libcurl release (see https://curl.se/). It was originally based
-on the parse-certs script written by Roland Krikava and was later much
-improved by Guenter Knauf.  This manual page was initially written by Jan
-Schaumann \&<jschauma@netmeister.org>.
index e75df6e06013ab7b16de4d64ceea4fe52f85973a..a6c75cfd090ca3d8f532bf580fc8f59b71adaead 100644 (file)
@@ -99,6 +99,7 @@
 --interface                          7.3
 --ipv4 (-4)                          7.10.8
 --ipv6 (-6)                          7.10.8
+--json                               7.82.0
 --junk-session-cookies (-j)          7.9.7
 --keepalive-time                     7.18.0
 --key                                7.9.3
 --next (-:)                          7.36.0
 --no-alpn                            7.36.0
 --no-buffer (-N)                     6.5
+--no-clobber                         7.83.0
 --no-keepalive                       7.18.0
 --no-npn                             7.36.0
 --no-progress-meter                  7.67.0
 --quote (-Q)                         5.3
 --random-file                        7.7
 --range (-r)                         4.0
+--rate                               7.84.0
 --raw                                7.16.2
 --referer (-e)                       4.0
 --remote-header-name (-J)            7.20.0
 --remote-name (-O)                   4.0
 --remote-name-all                    7.19.0
 --remote-time (-R)                   7.9
+--remove-on-error                    7.83.0
 --request (-X)                       6.0
 --request-target                     7.55.0
 --resolve                            7.21.3
index a334fdcaecd4a89621600225ee8fc0c9789c6f14..32d7b339d93c80cbdb1bea313eb978e21bcdbaa1 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 SUBDIRS = curl
 
index c2684add7f24d77294693e330735e0b077119f84..6fddc702fcaa8236aeddd9013022340421e5fe4b 100644 (file)
@@ -89,15 +89,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = include
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -249,6 +247,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -266,6 +265,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -323,6 +323,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -341,12 +342,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -413,7 +415,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -427,7 +428,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -440,6 +441,8 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 SUBDIRS = curl
 EXTRA_DIST = README.md
index bd28a30e85bd37cea0b5076666d75adee143e84e..8fdbe0e0e9344026c5956641ab91a1182364518c 100644 (file)
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
 # include
 
 Public include files for libcurl, external users.
index e77273717de9d7818dcb8c7dcd68210af993c194..29f470c09740961c512a966b4c7acc87ca2de7c8 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 pkginclude_HEADERS = \
   curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \
-  typecheck-gcc.h system.h urlapi.h options.h
+  typecheck-gcc.h system.h urlapi.h options.h header.h websockets.h
 
 pkgincludedir= $(includedir)/curl
 
@@ -31,7 +33,7 @@ CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
 
 if CURLDEBUG
 # for debug builds, we scan the sources on all regular make invokes
index 6f4c69a9dc07b42e49fce6ba01ac4fece496d2bb..89675ba1c2e9e7945d3ba8b59b66a47a07a8a5f3 100644 (file)
@@ -89,15 +89,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = include/curl
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -236,6 +234,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -253,6 +252,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -310,6 +310,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -328,12 +329,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -400,7 +402,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -414,7 +415,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -427,10 +428,12 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 pkginclude_HEADERS = \
   curl.h curlver.h easy.h mprintf.h stdcheaders.h multi.h \
-  typecheck-gcc.h system.h urlapi.h options.h
+  typecheck-gcc.h system.h urlapi.h options.h header.h websockets.h
 
 CHECKSRC = $(CS_$(V))
 CS_0 = @echo "  RUN     " $@;
@@ -448,9 +451,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/curl/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/curl/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu include/curl/Makefile
+         $(AUTOMAKE) --foreign include/curl/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -704,7 +707,7 @@ uninstall-am: uninstall-pkgincludeHEADERS
 
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(top_srcdir)/include/curl $(pkginclude_HEADERS)
 
 # for debug builds, we scan the sources on all regular make invokes
 @CURLDEBUG_TRUE@all-local: checksrc
index 7b69ce2d673a0743dfad89f7246840ec0d7d76cd..e28dd0b5a0c1ffb7ba0c891373392d4eae2a44a2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -74,7 +76,7 @@
     defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
    (defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
    (defined(__MidnightBSD_version) && (__MidnightBSD_version < 100000)) || \
-    defined(__VXWORKS__)
+    defined(__sun__)
 #include <sys/select.h>
 #endif
 
 #include <sys/socket.h>
 #endif
 
-#if !defined(CURL_WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)
+#if !defined(CURL_WIN32)
 #include <sys/time.h>
 #endif
 
-#ifdef __BEOS__
-#include <support/SupportDefs.h>
-#endif
-
 /* Compatibility for non-Clang compilers */
 #ifndef __has_declspec_attribute
 #  define __has_declspec_attribute(x) 0
@@ -529,10 +527,6 @@ typedef enum {
   CURLE_UPLOAD_FAILED,           /* 25 - failed upload "command" */
   CURLE_READ_ERROR,              /* 26 - couldn't open/read from file */
   CURLE_OUT_OF_MEMORY,           /* 27 */
-  /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error
-           instead of a memory allocation error if CURL_DOES_CONVERSIONS
-           is defined
-  */
   CURLE_OPERATION_TIMEDOUT,      /* 28 - the timeout time was reached */
   CURLE_OBSOLETE29,              /* 29 - NOT USED */
   CURLE_FTP_PORT_FAILED,         /* 30 - FTP PORT operation failed */
@@ -569,7 +563,7 @@ typedef enum {
   CURLE_PEER_FAILED_VERIFICATION, /* 60 - peer's certificate or fingerprint
                                      wasn't verified fine */
   CURLE_BAD_CONTENT_ENCODING,    /* 61 - Unrecognized/bad encoding */
-  CURLE_LDAP_INVALID_URL,        /* 62 - Invalid LDAP URL */
+  CURLE_OBSOLETE62,              /* 62 - NOT IN USE since 7.82.0 */
   CURLE_FILESIZE_EXCEEDED,       /* 63 - Maximum file size exceeded */
   CURLE_USE_SSL_FAILED,          /* 64 - Requested FTP SSL level failed */
   CURLE_SEND_FAIL_REWIND,        /* 65 - Sending the data requires a rewind
@@ -584,12 +578,8 @@ typedef enum {
   CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */
   CURLE_REMOTE_FILE_EXISTS,      /* 73 - File already exists */
   CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */
-  CURLE_CONV_FAILED,             /* 75 - conversion failed */
-  CURLE_CONV_REQD,               /* 76 - caller must register conversion
-                                    callbacks using curl_easy_setopt options
-                                    CURLOPT_CONV_FROM_NETWORK_FUNCTION,
-                                    CURLOPT_CONV_TO_NETWORK_FUNCTION, and
-                                    CURLOPT_CONV_FROM_UTF8_FUNCTION */
+  CURLE_OBSOLETE75,              /* 75 - NOT IN USE since 7.82.0 */
+  CURLE_OBSOLETE76,              /* 76 - NOT IN USE since 7.82.0 */
   CURLE_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing
                                     or wrong format */
   CURLE_REMOTE_FILE_NOT_FOUND,   /* 78 - remote file not found */
@@ -626,6 +616,7 @@ typedef enum {
   CURLE_QUIC_CONNECT_ERROR,      /* 96 - QUIC connection error */
   CURLE_PROXY,                   /* 97 - proxy handshake error */
   CURLE_SSL_CLIENTCERT,          /* 98 - client-side certificate required */
+  CURLE_UNRECOVERABLE_POLL,      /* 99 - poll/select returned fatal error */
   CURL_LAST /* never use! */
 } CURLcode;
 
@@ -683,13 +674,14 @@ typedef enum {
 /* The following were added earlier */
 
 #define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT
-
 #define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR
 #define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED
 #define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED
-
 #define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE
 #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME
+#define CURLE_LDAP_INVALID_URL CURLE_OBSOLETE62
+#define CURLE_CONV_REQD CURLE_OBSOLETE76
+#define CURLE_CONV_FAILED CURLE_OBSOLETE75
 
 /* This was the error code 50 in 7.7.3 and a few earlier versions, this
    is no longer used by libcurl but is instead #defined here only to not
@@ -848,8 +840,8 @@ enum curl_khstat {
   CURLKHSTAT_FINE_ADD_TO_FILE,
   CURLKHSTAT_FINE,
   CURLKHSTAT_REJECT, /* reject the connection, return an error */
-  CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right now so
-                        this causes a CURLE_DEFER error but otherwise the
+  CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right now.
+                        Causes a CURLE_PEER_FAILED_VERIFICATION error but the
                         connection will be left intact etc */
   CURLKHSTAT_FINE_REPLACE, /* accept and replace the wrong key*/
   CURLKHSTAT_LAST    /* not for use, only a marker for last-in-list */
@@ -868,7 +860,18 @@ typedef int
                           const struct curl_khkey *knownkey, /* known */
                           const struct curl_khkey *foundkey, /* found */
                           enum curl_khmatch, /* libcurl's view on the keys */
-                          void *clientp); /* custom pointer passed from app */
+                          void *clientp); /* custom pointer passed with */
+                                          /* CURLOPT_SSH_KEYDATA */
+
+typedef int
+  (*curl_sshhostkeycallback) (void *clientp,/* custom pointer passed*/
+                                            /* with CURLOPT_SSH_HOSTKEYDATA */
+                          int keytype, /* CURLKHTYPE */
+                          const char *key, /*hostkey to check*/
+                          size_t keylen); /*length of the key*/
+                          /*return CURLE_OK to accept*/
+                          /*or something else to refuse*/
+
 
 /* parameter for the CURLOPT_USE_SSL option */
 typedef enum {
@@ -1008,7 +1011,8 @@ typedef CURLSTScode (*curl_hstswrite_callback)(CURL *easy,
 #define CURLHSTS_ENABLE       (long)(1<<0)
 #define CURLHSTS_READONLYFILE (long)(1<<1)
 
-/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */
+/* The CURLPROTO_ defines below are for the **deprecated** CURLOPT_*PROTOCOLS
+   options. Do not use. */
 #define CURLPROTO_HTTP   (1<<0)
 #define CURLPROTO_HTTPS  (1<<1)
 #define CURLPROTO_FTP    (1<<2)
@@ -1474,12 +1478,11 @@ typedef enum {
      Note that setting multiple bits may cause extra network round-trips. */
   CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),
 
-  /* FTP option that changes the timeout, in seconds, associated with
-     getting a response.  This is different from transfer timeout time and
-     essentially places a demand on the FTP server to acknowledge commands
-     in a timely manner. */
-  CURLOPT(CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
-#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
+  /* Option that changes the timeout, in seconds, associated with getting a
+     response.  This is different from transfer timeout time and essentially
+     places a demand on the server to acknowledge commands in a timely
+     manner. For FTP, SMTP, IMAP and POP3. */
+  CURLOPT(CURLOPT_SERVER_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),
 
   /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
      tell libcurl to use those IP versions only. This only has effect on
@@ -2062,7 +2065,7 @@ typedef enum {
    * (in seconds) */
   CURLOPT(CURLOPT_MAXAGE_CONN, CURLOPTTYPE_LONG, 288),
 
-  /* SASL authorisation identity */
+  /* SASL authorization identity */
   CURLOPT(CURLOPT_SASL_AUTHZID, CURLOPTTYPE_STRINGPOINT, 289),
 
   /* allow RCPT TO command to fail for some recipients */
@@ -2135,6 +2138,25 @@ typedef enum {
   /* Set MIME option flags. */
   CURLOPT(CURLOPT_MIME_OPTIONS, CURLOPTTYPE_LONG, 315),
 
+  /* set the SSH host key callback, must point to a curl_sshkeycallback
+     function */
+  CURLOPT(CURLOPT_SSH_HOSTKEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 316),
+
+  /* set the SSH host key callback custom pointer */
+  CURLOPT(CURLOPT_SSH_HOSTKEYDATA, CURLOPTTYPE_CBPOINT, 317),
+
+  /* specify which protocols that are allowed to be used for the transfer,
+     which thus helps the app which takes URLs from users or other external
+     inputs and want to restrict what protocol(s) to deal with. Defaults to
+     all built-in protocols. */
+  CURLOPT(CURLOPT_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 318),
+
+  /* specify which protocols that libcurl is allowed to follow directs to */
+  CURLOPT(CURLOPT_REDIR_PROTOCOLS_STR, CURLOPTTYPE_STRINGPOINT, 319),
+
+  /* websockets options */
+  CURLOPT(CURLOPT_WS_OPTIONS, CURLOPTTYPE_LONG, 320),
+
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
 
@@ -2160,6 +2182,9 @@ typedef enum {
 #define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD
 #define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL
 
+/* */
+#define CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_SERVER_RESPONSE_TIMEOUT
+
 #else
 /* This is set if CURL_NO_OLDIES is defined at compile-time */
 #undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */
@@ -2174,7 +2199,7 @@ typedef enum {
 #define CURL_IPRESOLVE_V4       1 /* uses only IPv4 addresses/connections */
 #define CURL_IPRESOLVE_V6       2 /* uses only IPv6 addresses/connections */
 
-  /* three convenient "aliases" that follow the name scheme better */
+  /* Convenient "aliases" */
 #define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
 
   /* These enums are for use with the CURLOPT_HTTP_VERSION option. */
@@ -2602,8 +2627,10 @@ CURL_EXTERN void curl_free(void *p);
  *
  * curl_global_init() should be invoked exactly once for each application that
  * uses libcurl and before any call of other libcurl functions.
- *
- * This function is not thread-safe!
+
+ * This function is thread-safe if CURL_VERSION_THREADSAFE is set in the
+ * curl_version_info_data.features flag (fetch by curl_version_info()).
+
  */
 CURL_EXTERN CURLcode curl_global_init(long flags);
 
@@ -2812,8 +2839,9 @@ typedef enum {
   CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58,
   CURLINFO_PROXY_ERROR      = CURLINFO_LONG + 59,
   CURLINFO_REFERER          = CURLINFO_STRING + 60,
-
-  CURLINFO_LASTONE          = 60
+  CURLINFO_CAINFO           = CURLINFO_STRING + 61,
+  CURLINFO_CAPATH           = CURLINFO_STRING + 62,
+  CURLINFO_LASTONE          = 62
 } CURLINFO;
 
 /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
@@ -2832,7 +2860,7 @@ typedef enum {
   CURLCLOSEPOLICY_LAST /* last, never use this */
 } curl_closepolicy;
 
-#define CURL_GLOBAL_SSL (1<<0) /* no purpose since since 7.57.0 */
+#define CURL_GLOBAL_SSL (1<<0) /* no purpose since 7.57.0 */
 #define CURL_GLOBAL_WIN32 (1<<1)
 #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)
 #define CURL_GLOBAL_NOTHING 0
@@ -3019,6 +3047,7 @@ typedef struct curl_version_info_data curl_version_info_data;
 #define CURL_VERSION_UNICODE      (1<<27) /* Unicode support on Windows */
 #define CURL_VERSION_HSTS         (1<<28) /* HSTS is supported */
 #define CURL_VERSION_GSASL        (1<<29) /* libgsasl is supported */
+#define CURL_VERSION_THREADSAFE   (1<<30) /* libcurl API is thread-safe */
 
  /*
  * NAME curl_version_info()
@@ -3082,6 +3111,8 @@ CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
 #include "multi.h"
 #include "urlapi.h"
 #include "options.h"
+#include "header.h"
+#include "websockets.h"
 
 /* the typechecker doesn't work in C++ (yet) */
 #if defined(__GNUC__) && defined(__GNUC_MINOR__) && \
index 6d2f99b6da5df95bf733284cc60023d066b64575..2e7124e6ea61401314c03977410715f70a992333 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* This header file contains nothing but libcurl version info, generated by
    a script at release-time. This was made its own header file in 7.11.2 */
 
 /* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2021 Daniel Stenberg, <daniel@haxx.se>."
+#define LIBCURL_COPYRIGHT "1996 - 2022 Daniel Stenberg, <daniel@haxx.se>."
 
 /* This is the version number of the libcurl package from which this header
    file origins: */
-#define LIBCURL_VERSION "7.81.0"
+#define LIBCURL_VERSION "7.86.0"
 
 /* The numeric version number is also available "in parts" by using these
    defines: */
 #define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 81
+#define LIBCURL_VERSION_MINOR 86
 #define LIBCURL_VERSION_PATCH 0
 
 /* This is the numeric version of the libcurl version number, meant for easier
@@ -57,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 0x075100
+#define LIBCURL_VERSION_NUM 0x075600
 
 /*
  * This is the date and time when the full source package was created. The
@@ -68,7 +70,7 @@
  *
  * "2007-11-23"
  */
-#define LIBCURL_TIMESTAMP "2022-01-05"
+#define LIBCURL_TIMESTAMP "2022-10-26"
 
 #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
 #define CURL_AT_LEAST_VERSION(x,y,z) \
index 2dbfb26b5b7f4e398ec32215a1bf8455d81d1914..9c7e63adad6ebc0c72b5afd24989eaa664205310 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifdef  __cplusplus
 extern "C" {
diff --git a/include/curl/header.h b/include/curl/header.h
new file mode 100644 (file)
index 0000000..1598c6f
--- /dev/null
@@ -0,0 +1,74 @@
+#ifndef CURLINC_HEADER_H
+#define CURLINC_HEADER_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2018 - 2022, 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
+ *
+ ***************************************************************************/
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+struct curl_header {
+  char *name;    /* this might not use the same case */
+  char *value;
+  size_t amount; /* number of headers using this name  */
+  size_t index;  /* ... of this instance, 0 or higher */
+  unsigned int origin; /* see bits below */
+  void *anchor; /* handle privately used by libcurl */
+};
+
+/* 'origin' bits */
+#define CURLH_HEADER    (1<<0) /* plain server header */
+#define CURLH_TRAILER   (1<<1) /* trailers */
+#define CURLH_CONNECT   (1<<2) /* CONNECT headers */
+#define CURLH_1XX       (1<<3) /* 1xx headers */
+#define CURLH_PSEUDO    (1<<4) /* pseudo headers */
+
+typedef enum {
+  CURLHE_OK,
+  CURLHE_BADINDEX,      /* header exists but not with this index */
+  CURLHE_MISSING,       /* no such header exists */
+  CURLHE_NOHEADERS,     /* no headers at all exist (yet) */
+  CURLHE_NOREQUEST,     /* no request with this number was used */
+  CURLHE_OUT_OF_MEMORY, /* out of memory while processing */
+  CURLHE_BAD_ARGUMENT,  /* a function argument was not okay */
+  CURLHE_NOT_BUILT_IN   /* if API was disabled in the build */
+} CURLHcode;
+
+CURL_EXTERN CURLHcode curl_easy_header(CURL *easy,
+                                       const char *name,
+                                       size_t index,
+                                       unsigned int origin,
+                                       int request,
+                                       struct curl_header **hout);
+
+CURL_EXTERN struct curl_header *curl_easy_nextheader(CURL *easy,
+                                                     unsigned int origin,
+                                                     int request,
+                                                     struct curl_header *prev);
+
+#ifdef __cplusplus
+} /* end of extern "C" */
+#endif
+
+#endif /* CURLINC_HEADER_H */
index 3549552dba63062f8904770055a5ed781517c48f..cb948dcd97b4d3a106ae04e516f21defcc81280e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <stdarg.h>
index 91cd95d32304f76c3fcee465a3ef241299781f69..2f3ec37a7685a98f59bfae180cd37cf342b99194 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
   This is an "external" header file. Don't give away any internals here!
@@ -75,6 +77,7 @@ typedef enum {
   CURLM_WAKEUP_FAILURE,  /* wakeup is unavailable or failed */
   CURLM_BAD_FUNCTION_ARGUMENT, /* function called with a bad parameter */
   CURLM_ABORTED_BY_CALLBACK,
+  CURLM_UNRECOVERABLE_POLL,
   CURLM_LAST
 } CURLMcode;
 
@@ -121,7 +124,7 @@ struct curl_waitfd {
 /*
  * Name:    curl_multi_init()
  *
- * Desc:    inititalize multi-style curl usage
+ * Desc:    initialize multi-style curl usage
  *
  * Returns: a new CURLM handle to use in all 'curl_multi' functions.
  */
index 14373b551c795024a133ec43097d3aa5e53417d2..a792687cf456004e5a34d6a41c21cb54be23c740 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifdef  __cplusplus
@@ -31,7 +33,7 @@ typedef enum {
   CURLOT_VALUES,  /*      (a defined set or bitmask) */
   CURLOT_OFF_T,   /* curl_off_t (a range of values) */
   CURLOT_OBJECT,  /* pointer (void *) */
-  CURLOT_STRING,  /*         (char * to zero terminated buffer) */
+  CURLOT_STRING,  /*         (char * to null-terminated buffer) */
   CURLOT_SLIST,   /*         (struct curl_slist *) */
   CURLOT_CBPTR,   /*         (void * passed as-is to a callback) */
   CURLOT_BLOB,    /* blob (struct curl_blob *) */
@@ -57,7 +59,7 @@ CURL_EXTERN const struct curl_easyoption *
 curl_easy_option_by_name(const char *name);
 
 CURL_EXTERN const struct curl_easyoption *
-curl_easy_option_by_id (CURLoption id);
+curl_easy_option_by_id(CURLoption id);
 
 CURL_EXTERN const struct curl_easyoption *
 curl_easy_option_next(const struct curl_easyoption *prev);
index 60596c7568e2d8710d4f7ae9072deca8d7800f39..82e1b5fef6d5c032c9e2e6e8c1af59ecf25d6f39 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <sys/types.h>
index faf8fcf84fcc48a94c1f13f4ba58089880fe9e94..8d56b8a4a1baafeb07269540107df68d631e5aee 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
 #  define CURL_SUFFIX_CURL_OFF_TU    UL
 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
 
-#elif defined(__WATCOMC__)
-#  if defined(__386__)
-#    define CURL_TYPEOF_CURL_OFF_T     __int64
-#    define CURL_FORMAT_CURL_OFF_T     "I64d"
-#    define CURL_FORMAT_CURL_OFF_TU    "I64u"
-#    define CURL_SUFFIX_CURL_OFF_T     i64
-#    define CURL_SUFFIX_CURL_OFF_TU    ui64
-#  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 int
-
 #elif defined(__POCC__)
 #  if (__POCC__ < 280)
 #    define CURL_TYPEOF_CURL_OFF_T     long
 #  define CURL_TYPEOF_CURL_SOCKLEN_T int
 
 #elif defined(__LCC__)
-#  if defined(__e2k__) /* MCST eLbrus C Compiler */
+#  if defined(__MCST__) /* MCST eLbrus Compiler Collection */
 #    define CURL_TYPEOF_CURL_OFF_T     long
 #    define CURL_FORMAT_CURL_OFF_T     "ld"
 #    define CURL_FORMAT_CURL_OFF_TU    "lu"
index 9e14d8a3726ce36760f7cecbf588f72575eecf43..2dabcb41664de9645d7b020d7df51f123719639d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* wraps curl_easy_setopt() with typechecking */
@@ -270,9 +272,9 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_DNS_SERVERS ||                                         \
    (option) == CURLOPT_DOH_URL ||                                             \
    (option) == CURLOPT_EGDSOCKET ||                                           \
-   (option) == CURLOPT_FTPPORT ||                                             \
    (option) == CURLOPT_FTP_ACCOUNT ||                                         \
    (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \
+   (option) == CURLOPT_FTPPORT ||                                             \
    (option) == CURLOPT_HSTS ||                                                \
    (option) == CURLOPT_INTERFACE ||                                           \
    (option) == CURLOPT_ISSUERCERT ||                                          \
@@ -286,10 +288,8 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_PASSWORD ||                                            \
    (option) == CURLOPT_PINNEDPUBLICKEY ||                                     \
    (option) == CURLOPT_PRE_PROXY ||                                           \
+   (option) == CURLOPT_PROTOCOLS_STR ||                                       \
    (option) == CURLOPT_PROXY ||                                               \
-   (option) == CURLOPT_PROXYPASSWORD ||                                       \
-   (option) == CURLOPT_PROXYUSERNAME ||                                       \
-   (option) == CURLOPT_PROXYUSERPWD ||                                        \
    (option) == CURLOPT_PROXY_CAINFO ||                                        \
    (option) == CURLOPT_PROXY_CAPATH ||                                        \
    (option) == CURLOPT_PROXY_CRLFILE ||                                       \
@@ -297,17 +297,21 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_PROXY_KEYPASSWD ||                                     \
    (option) == CURLOPT_PROXY_PINNEDPUBLICKEY ||                               \
    (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \
+   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \
    (option) == CURLOPT_PROXY_SSLCERT ||                                       \
    (option) == CURLOPT_PROXY_SSLCERTTYPE ||                                   \
    (option) == CURLOPT_PROXY_SSLKEY ||                                        \
    (option) == CURLOPT_PROXY_SSLKEYTYPE ||                                    \
-   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \
    (option) == CURLOPT_PROXY_TLS13_CIPHERS ||                                 \
    (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD ||                              \
    (option) == CURLOPT_PROXY_TLSAUTH_TYPE ||                                  \
    (option) == CURLOPT_PROXY_TLSAUTH_USERNAME ||                              \
+   (option) == CURLOPT_PROXYPASSWORD ||                                       \
+   (option) == CURLOPT_PROXYUSERNAME ||                                       \
+   (option) == CURLOPT_PROXYUSERPWD ||                                        \
    (option) == CURLOPT_RANDOM_FILE ||                                         \
    (option) == CURLOPT_RANGE ||                                               \
+   (option) == CURLOPT_REDIR_PROTOCOLS_STR ||                                 \
    (option) == CURLOPT_REFERER ||                                             \
    (option) == CURLOPT_REQUEST_TARGET ||                                      \
    (option) == CURLOPT_RTSP_SESSION_ID ||                                     \
@@ -374,6 +378,7 @@ CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
    (option) == CURLOPT_WRITEDATA ||                                           \
    (option) == CURLOPT_RESOLVER_START_DATA ||                                 \
    (option) == CURLOPT_TRAILERDATA ||                                         \
+   (option) == CURLOPT_SSH_HOSTKEYDATA ||                                     \
    0)
 
 /* evaluates to true if option takes a POST data argument (void* or char*) */
index a475f91b60eb206dffdf0e2fa2f3faeb67747305..e15c213ccdf7529a0b5a43c4fb4e7cdf212f596a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "curl.h"
diff --git a/include/curl/websockets.h b/include/curl/websockets.h
new file mode 100644 (file)
index 0000000..4d57f91
--- /dev/null
@@ -0,0 +1,83 @@
+#ifndef CURLINC_WEBSOCKETS_H
+#define CURLINC_WEBSOCKETS_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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
+ *
+ ***************************************************************************/
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+struct curl_ws_frame {
+  int age;              /* zero */
+  int flags;            /* See the CURLWS_* defines */
+  curl_off_t offset;    /* the offset of this data into the frame */
+  curl_off_t bytesleft; /* number of pending bytes left of the payload */
+};
+
+/* flag bits */
+#define CURLWS_TEXT       (1<<0)
+#define CURLWS_BINARY     (1<<1)
+#define CURLWS_CONT       (1<<2)
+#define CURLWS_CLOSE      (1<<3)
+#define CURLWS_PING       (1<<4)
+#define CURLWS_OFFSET     (1<<5)
+
+/*
+ * NAME curl_ws_recv()
+ *
+ * DESCRIPTION
+ *
+ * Receives data from the websocket connection. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
+                                  size_t *recv,
+                                  struct curl_ws_frame **metap);
+
+/* sendflags for curl_ws_send() */
+#define CURLWS_PONG       (1<<6)
+
+/*
+ * NAME curl_easy_send()
+ *
+ * DESCRIPTION
+ *
+ * Sends data over the websocket connection. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
+                                  size_t buflen, size_t *sent,
+                                  curl_off_t framesize,
+                                  unsigned int sendflags);
+
+/* bits for the CURLOPT_WS_OPTIONS bitmask: */
+#define CURLWS_RAW_MODE (1<<0)
+
+CURL_EXTERN struct curl_ws_frame *curl_ws_meta(CURL *curl);
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* CURLINC_WEBSOCKETS_H */
index 46973bf2b875b71bc0a098d3ea837b4fcaf29eba..8cea346c34d92b0494e4fb6e5b2aa8220873f0bb 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 set(LIB_NAME libcurl)
 set(LIBCURL_OUTPUT_NAME libcurl CACHE STRING "Basename of the curl library")
+add_definitions(-DBUILDING_LIBCURL)
 
 if(BUILD_SHARED_LIBS)
   set(CURL_STATICLIB NO)
@@ -40,7 +43,7 @@ list(APPEND HHEADERS
   ${CMAKE_CURRENT_BINARY_DIR}/curl_config.h
   )
 
-if(WIN32)
+if(WIN32 AND NOT CURL_STATICLIB)
   list(APPEND CSOURCES libcurl.rc)
 endif()
 
@@ -93,7 +96,7 @@ if(NOT BUILD_SHARED_LIBS)
     set_target_properties(${LIB_NAME} PROPERTIES INTERFACE_COMPILE_DEFINITIONS CURL_STATICLIB)
 endif()
 
-target_link_libraries(${LIB_NAME} ${CURL_LIBS})
+target_link_libraries(${LIB_NAME} PRIVATE ${CURL_LIBS})
 
 set_target_properties(${LIB_NAME} PROPERTIES
   COMPILE_DEFINITIONS BUILDING_LIBCURL
@@ -117,7 +120,6 @@ endif()
 
 if(WIN32)
   if(BUILD_SHARED_LIBS)
-    set_property(TARGET ${LIB_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "_USRDLL")
     if(MSVC)
       # Add "_imp" as a suffix before the extension to avoid conflicting with
       # the statically linked "libcurl.lib"
@@ -130,14 +132,16 @@ target_include_directories(${LIB_NAME} INTERFACE
   $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
   $<BUILD_INTERFACE:${CURL_SOURCE_DIR}/include>)
 
-install(TARGETS ${LIB_NAME}
-  EXPORT ${TARGETS_EXPORT_NAME}
-  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-)
-
-export(TARGETS ${LIB_NAME}
-       APPEND FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
-       NAMESPACE ${PROJECT_NAME}::
-)
+if(CURL_ENABLE_EXPORT_TARGET)
+  install(TARGETS ${LIB_NAME}
+    EXPORT ${TARGETS_EXPORT_NAME}
+    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+  )
+
+  export(TARGETS ${LIB_NAME}
+         FILE ${PROJECT_BINARY_DIR}/libcurl-target.cmake
+         NAMESPACE ${PROJECT_NAME}::
+  )
+endif()
index 7693639415d928999e31fd2a1edd0c5456a2932d..5d2df8bffb1761420e89e225366738197dd14155 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
 CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
 
-EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h           \
- config-plan9.h config-riscos.h config-mac.h curl_config.h.in       \
- makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
- makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h    \
- config-os400.h setup-os400.h                                       \
- config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST)        \
- firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl    \
- setup-win32.h .checksrc
+EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h config-plan9.h   \
+ config-riscos.h config-mac.h curl_config.h.in makefile.dj config-dos.h    \
+ libcurl.plist libcurl.rc config-amigaos.h makefile.amiga config-win32ce.h \
+ config-os400.h setup-os400.h $(CMAKE_DIST) setup-win32.h .checksrc
 
 lib_LTLIBRARIES = libcurl.la
 
@@ -51,22 +49,15 @@ CFLAGS += @CURL_CFLAG_EXTRAS@
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "private" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
 
 AM_CPPFLAGS = -I$(top_srcdir)/include        \
               -I$(top_builddir)/lib          \
               -I$(top_srcdir)/lib
 
-if USE_EMBEDDED_ARES
-AM_CPPFLAGS += -I$(top_builddir)/ares        \
-               -I$(top_srcdir)/ares
-endif
-
 # Prevent LIBS from being used for all link targets
 LIBS = $(BLANK_AT_MAKETIME)
 
-VERSIONINFO=-version-info 11:0:7
+VERSIONINFO=-version-info 12:0:8
 # This flag accepts an argument of the form current[:revision[:age]]. So,
 # passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
 # 1.
@@ -84,6 +75,12 @@ AM_CPPFLAGS += -DBUILDING_LIBCURL
 AM_LDFLAGS =
 AM_CFLAGS =
 
+# Makefile.inc provides the CSOURCES and HHEADERS defines
+include Makefile.inc
+
+libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
+libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
+
 libcurl_la_CPPFLAGS_EXTRA =
 libcurl_la_LDFLAGS_EXTRA =
 libcurl_la_CFLAGS_EXTRA =
@@ -111,6 +108,11 @@ endif
 
 if USE_CPPFLAG_CURL_STATICLIB
 libcurl_la_CPPFLAGS_EXTRA += -DCURL_STATICLIB
+else
+if OS_WINDOWS
+libcurl_la_SOURCES += $(LIB_RCFILES)
+$(LIB_RCFILES): $(top_srcdir)/include/curl/curlver.h
+endif
 endif
 
 if DOING_CURL_SYMBOL_HIDING
@@ -126,20 +128,15 @@ libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS
 libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
 libcurlu_la_CFLAGS = $(AM_CFLAGS)
 
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
-libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
-
 CHECKSRC = $(CS_$(V))
 CS_0 = @echo "  RUN     " $@;
 CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
-       $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir)    \
+       -W$(srcdir)/curl_config.h $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch]   \
+       $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
 
 if CURLDEBUG
 # for debug builds, we scan the sources on all regular make invokes
@@ -156,3 +153,9 @@ tidy:
 
 optiontable:
        perl optiontable.pl < $(top_srcdir)/include/curl/curl.h > easyoptions.c
+
+if OS_WINDOWS
+# Warning is "normal": libtool:   error: ignoring unknown tag RC
+.rc.lo:
+       $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include $(RCFLAGS) -i $< -o $@
+endif
index 188b2c4c25fac0f0147a41ac3b8f103d5a0b56ba..5742ca1cb23333a6ad3b3b11dbc98ccade0110ce 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 VPATH = @srcdir@
@@ -110,29 +112,25 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@USE_EMBEDDED_ARES_TRUE@am__append_1 = -I$(top_builddir)/ares        \
-@USE_EMBEDDED_ARES_TRUE@               -I$(top_srcdir)/ares
-
-@CURL_LT_SHLIB_USE_VERSION_INFO_TRUE@am__append_2 = $(VERSIONINFO)
-@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_3 = -no-undefined
-@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_4 = -mimpure-text
-@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE@am__append_5 = -Wl,--version-script=libcurl.vers
+@CURL_LT_SHLIB_USE_VERSION_INFO_TRUE@am__append_1 = $(VERSIONINFO)
+@CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE@am__append_2 = -no-undefined
+@CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE@am__append_3 = -mimpure-text
+@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE@am__append_4 = -Wl,--version-script=libcurl.vers
 # if symbol-hiding is enabled, hide them!
-@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE@@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_6 = -export-symbols-regex '^curl_.*'
-@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_7 = -DCURL_STATICLIB
+@CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE@@DOING_CURL_SYMBOL_HIDING_TRUE@am__append_5 = -export-symbols-regex '^curl_.*'
+@USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_6 = -DCURL_STATICLIB
+@OS_WINDOWS_TRUE@@USE_CPPFLAG_CURL_STATICLIB_FALSE@am__append_7 = $(LIB_RCFILES)
 @DOING_CURL_SYMBOL_HIDING_TRUE@am__append_8 = -DCURL_HIDDEN_SYMBOLS
 @DOING_CURL_SYMBOL_HIDING_TRUE@am__append_9 = $(CFLAG_CURL_SYMBOL_HIDING)
 subdir = lib
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -157,7 +155,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = curl_config.h
-CONFIG_CLEAN_FILES = libcurl.vers
+CONFIG_CLEAN_FILES = libcurl.vers libcurl.plist
 CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -189,30 +187,92 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(libdir)"
 LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 libcurl_la_LIBADD =
+am__libcurl_la_SOURCES_DIST = altsvc.c amigaos.c asyn-ares.c \
+       asyn-thread.c base64.c bufref.c c-hyper.c conncache.c \
+       connect.c content_encoding.c cookie.c curl_addrinfo.c \
+       curl_des.c curl_endian.c curl_fnmatch.c curl_get_line.c \
+       curl_gethostname.c curl_gssapi.c curl_memrchr.c \
+       curl_multibyte.c curl_ntlm_core.c curl_ntlm_wb.c curl_path.c \
+       curl_range.c curl_rtmp.c curl_sasl.c curl_sspi.c \
+       curl_threads.c dict.c doh.c dynbuf.c easy.c easygetopt.c \
+       easyoptions.c escape.c file.c fileinfo.c fopen.c formdata.c \
+       ftp.c ftplistparser.c getenv.c getinfo.c gopher.c h2h3.c \
+       hash.c headers.c hmac.c hostasyn.c hostip.c hostip4.c \
+       hostip6.c hostsyn.c hsts.c http.c http2.c http_chunks.c \
+       http_digest.c http_negotiate.c http_ntlm.c http_proxy.c \
+       http_aws_sigv4.c idn_win32.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 \
+       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 \
+       version.c version_win32.c warnless.c wildcard.c ws.c \
+       vauth/cleartext.c vauth/cram.c vauth/digest.c \
+       vauth/digest_sspi.c vauth/gsasl.c vauth/krb5_gssapi.c \
+       vauth/krb5_sspi.c vauth/ntlm.c vauth/ntlm_sspi.c \
+       vauth/oauth2.c vauth/spnego_gssapi.c vauth/spnego_sspi.c \
+       vauth/vauth.c vtls/bearssl.c vtls/gskit.c vtls/gtls.c \
+       vtls/hostcheck.c vtls/keylog.c vtls/mbedtls.c \
+       vtls/mbedtls_threadlock.c vtls/nss.c vtls/openssl.c \
+       vtls/rustls.c vtls/schannel.c vtls/schannel_verify.c \
+       vtls/sectransp.c vtls/vtls.c vtls/wolfssl.c vtls/x509asn1.c \
+       vquic/msh3.c vquic/ngtcp2.c vquic/quiche.c vquic/vquic.c \
+       vssh/libssh.c vssh/libssh2.c vssh/wolfssh.c altsvc.h amigaos.h \
+       arpa_telnet.h asyn.h bufref.h c-hyper.h conncache.h connect.h \
+       content_encoding.h cookie.h curl_addrinfo.h curl_base64.h \
+       curl_ctype.h curl_des.h curl_endian.h curl_fnmatch.h \
+       curl_get_line.h curl_gethostname.h curl_gssapi.h curl_hmac.h \
+       curl_krb5.h curl_ldap.h curl_md4.h curl_md5.h curl_memory.h \
+       curl_memrchr.h curl_multibyte.h curl_ntlm_core.h \
+       curl_ntlm_wb.h curl_path.h curl_printf.h curl_range.h \
+       curl_rtmp.h curl_sasl.h curl_setup.h curl_setup_once.h \
+       curl_sha256.h curl_sspi.h curl_threads.h curlx.h dict.h doh.h \
+       dynbuf.h easy_lock.h easyif.h easyoptions.h escape.h file.h \
+       fileinfo.h fopen.h formdata.h functypes.h ftp.h \
+       ftplistparser.h getinfo.h gopher.h h2h3.h hash.h headers.h \
+       hostip.h hsts.h http.h http2.h http_chunks.h http_digest.h \
+       http_negotiate.h http_ntlm.h http_proxy.h http_aws_sigv4.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 parsedate.h pingpong.h pop3.h progress.h psl.h \
+       quic.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 speedcheck.h splay.h strcase.h strdup.h \
+       strerror.h strtok.h strtoofft.h system_win32.h telnet.h tftp.h \
+       timediff.h timeval.h transfer.h url.h urlapi-int.h urldata.h \
+       version_win32.h warnless.h wildcard.h ws.h vauth/digest.h \
+       vauth/ntlm.h 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/wolfssl.h vtls/x509asn1.h vquic/msh3.h vquic/ngtcp2.h \
+       vquic/quiche.h vquic/vquic.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-bufref.lo \
        libcurl_la-c-hyper.lo libcurl_la-conncache.lo \
        libcurl_la-connect.lo libcurl_la-content_encoding.lo \
        libcurl_la-cookie.lo libcurl_la-curl_addrinfo.lo \
-       libcurl_la-curl_ctype.lo libcurl_la-curl_des.lo \
-       libcurl_la-curl_endian.lo libcurl_la-curl_fnmatch.lo \
-       libcurl_la-curl_get_line.lo libcurl_la-curl_gethostname.lo \
-       libcurl_la-curl_gssapi.lo libcurl_la-curl_memrchr.lo \
-       libcurl_la-curl_multibyte.lo libcurl_la-curl_ntlm_core.lo \
-       libcurl_la-curl_ntlm_wb.lo libcurl_la-curl_path.lo \
-       libcurl_la-curl_range.lo libcurl_la-curl_rtmp.lo \
-       libcurl_la-curl_sasl.lo libcurl_la-curl_sspi.lo \
-       libcurl_la-curl_threads.lo libcurl_la-dict.lo \
-       libcurl_la-doh.lo libcurl_la-dotdot.lo libcurl_la-dynbuf.lo \
+       libcurl_la-curl_des.lo libcurl_la-curl_endian.lo \
+       libcurl_la-curl_fnmatch.lo libcurl_la-curl_get_line.lo \
+       libcurl_la-curl_gethostname.lo libcurl_la-curl_gssapi.lo \
+       libcurl_la-curl_memrchr.lo libcurl_la-curl_multibyte.lo \
+       libcurl_la-curl_ntlm_core.lo libcurl_la-curl_ntlm_wb.lo \
+       libcurl_la-curl_path.lo libcurl_la-curl_range.lo \
+       libcurl_la-curl_rtmp.lo libcurl_la-curl_sasl.lo \
+       libcurl_la-curl_sspi.lo libcurl_la-curl_threads.lo \
+       libcurl_la-dict.lo libcurl_la-doh.lo libcurl_la-dynbuf.lo \
        libcurl_la-easy.lo libcurl_la-easygetopt.lo \
        libcurl_la-easyoptions.lo libcurl_la-escape.lo \
-       libcurl_la-file.lo libcurl_la-fileinfo.lo \
+       libcurl_la-file.lo libcurl_la-fileinfo.lo libcurl_la-fopen.lo \
        libcurl_la-formdata.lo libcurl_la-ftp.lo \
        libcurl_la-ftplistparser.lo libcurl_la-getenv.lo \
-       libcurl_la-getinfo.lo libcurl_la-gopher.lo libcurl_la-hash.lo \
-       libcurl_la-hmac.lo libcurl_la-hostasyn.lo \
-       libcurl_la-hostcheck.lo libcurl_la-hostip.lo \
+       libcurl_la-getinfo.lo libcurl_la-gopher.lo libcurl_la-h2h3.lo \
+       libcurl_la-hash.lo libcurl_la-headers.lo libcurl_la-hmac.lo \
+       libcurl_la-hostasyn.lo libcurl_la-hostip.lo \
        libcurl_la-hostip4.lo libcurl_la-hostip6.lo \
        libcurl_la-hostsyn.lo libcurl_la-hsts.lo libcurl_la-http.lo \
        libcurl_la-http2.lo libcurl_la-http_chunks.lo \
@@ -224,8 +284,8 @@ am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.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-non-ascii.lo \
-       libcurl_la-nonblock.lo libcurl_la-openldap.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 \
        libcurl_la-rand.lo libcurl_la-rename.lo libcurl_la-rtsp.lo \
@@ -237,11 +297,11 @@ am__objects_1 = libcurl_la-altsvc.lo libcurl_la-amigaos.lo \
        libcurl_la-splay.lo libcurl_la-strcase.lo libcurl_la-strdup.lo \
        libcurl_la-strerror.lo libcurl_la-strtok.lo \
        libcurl_la-strtoofft.lo libcurl_la-system_win32.lo \
-       libcurl_la-telnet.lo libcurl_la-tftp.lo libcurl_la-timeval.lo \
-       libcurl_la-transfer.lo libcurl_la-url.lo libcurl_la-urlapi.lo \
-       libcurl_la-version.lo libcurl_la-version_win32.lo \
-       libcurl_la-warnless.lo libcurl_la-wildcard.lo \
-       libcurl_la-x509asn1.lo
+       libcurl_la-telnet.lo libcurl_la-tftp.lo libcurl_la-timediff.lo \
+       libcurl_la-timeval.lo libcurl_la-transfer.lo libcurl_la-url.lo \
+       libcurl_la-urlapi.lo libcurl_la-version.lo \
+       libcurl_la-version_win32.lo libcurl_la-warnless.lo \
+       libcurl_la-wildcard.lo libcurl_la-ws.lo
 am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_2 = vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
        vauth/libcurl_la-digest.lo vauth/libcurl_la-digest_sspi.lo \
@@ -251,16 +311,15 @@ am__objects_2 = vauth/libcurl_la-cleartext.lo vauth/libcurl_la-cram.lo \
        vauth/libcurl_la-spnego_gssapi.lo \
        vauth/libcurl_la-spnego_sspi.lo vauth/libcurl_la-vauth.lo
 am__objects_3 = vtls/libcurl_la-bearssl.lo vtls/libcurl_la-gskit.lo \
-       vtls/libcurl_la-gtls.lo vtls/libcurl_la-keylog.lo \
-       vtls/libcurl_la-mbedtls.lo \
-       vtls/libcurl_la-mbedtls_threadlock.lo \
-       vtls/libcurl_la-mesalink.lo vtls/libcurl_la-nss.lo \
+       vtls/libcurl_la-gtls.lo vtls/libcurl_la-hostcheck.lo \
+       vtls/libcurl_la-keylog.lo vtls/libcurl_la-mbedtls.lo \
+       vtls/libcurl_la-mbedtls_threadlock.lo vtls/libcurl_la-nss.lo \
        vtls/libcurl_la-openssl.lo vtls/libcurl_la-rustls.lo \
        vtls/libcurl_la-schannel.lo vtls/libcurl_la-schannel_verify.lo \
        vtls/libcurl_la-sectransp.lo vtls/libcurl_la-vtls.lo \
-       vtls/libcurl_la-wolfssl.lo
-am__objects_4 = vquic/libcurl_la-ngtcp2.lo vquic/libcurl_la-quiche.lo \
-       vquic/libcurl_la-vquic.lo
+       vtls/libcurl_la-wolfssl.lo vtls/libcurl_la-x509asn1.lo
+am__objects_4 = vquic/libcurl_la-msh3.lo vquic/libcurl_la-ngtcp2.lo \
+       vquic/libcurl_la-quiche.lo vquic/libcurl_la-vquic.lo
 am__objects_5 = vssh/libcurl_la-libssh.lo vssh/libcurl_la-libssh2.lo \
        vssh/libcurl_la-wolfssh.lo
 am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
@@ -268,7 +327,10 @@ am__objects_6 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
 am__objects_7 =
 am__objects_8 = $(am__objects_7) $(am__objects_7) $(am__objects_7) \
        $(am__objects_7) $(am__objects_7)
-am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8)
+am__objects_9 = libcurl.lo
+@OS_WINDOWS_TRUE@@USE_CPPFLAG_CURL_STATICLIB_FALSE@am__objects_10 = $(am__objects_9)
+am_libcurl_la_OBJECTS = $(am__objects_6) $(am__objects_8) \
+       $(am__objects_10)
 libcurl_la_OBJECTS = $(am_libcurl_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -278,44 +340,43 @@ libcurl_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurl_la_CFLAGS) \
        $(CFLAGS) $(libcurl_la_LDFLAGS) $(LDFLAGS) -o $@
 libcurlu_la_LIBADD =
-am__objects_9 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
+am__objects_11 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
        libcurlu_la-asyn-ares.lo libcurlu_la-asyn-thread.lo \
        libcurlu_la-base64.lo libcurlu_la-bufref.lo \
        libcurlu_la-c-hyper.lo libcurlu_la-conncache.lo \
        libcurlu_la-connect.lo libcurlu_la-content_encoding.lo \
        libcurlu_la-cookie.lo libcurlu_la-curl_addrinfo.lo \
-       libcurlu_la-curl_ctype.lo libcurlu_la-curl_des.lo \
-       libcurlu_la-curl_endian.lo libcurlu_la-curl_fnmatch.lo \
-       libcurlu_la-curl_get_line.lo libcurlu_la-curl_gethostname.lo \
-       libcurlu_la-curl_gssapi.lo libcurlu_la-curl_memrchr.lo \
-       libcurlu_la-curl_multibyte.lo libcurlu_la-curl_ntlm_core.lo \
-       libcurlu_la-curl_ntlm_wb.lo libcurlu_la-curl_path.lo \
-       libcurlu_la-curl_range.lo libcurlu_la-curl_rtmp.lo \
-       libcurlu_la-curl_sasl.lo libcurlu_la-curl_sspi.lo \
-       libcurlu_la-curl_threads.lo libcurlu_la-dict.lo \
-       libcurlu_la-doh.lo libcurlu_la-dotdot.lo libcurlu_la-dynbuf.lo \
+       libcurlu_la-curl_des.lo libcurlu_la-curl_endian.lo \
+       libcurlu_la-curl_fnmatch.lo libcurlu_la-curl_get_line.lo \
+       libcurlu_la-curl_gethostname.lo libcurlu_la-curl_gssapi.lo \
+       libcurlu_la-curl_memrchr.lo libcurlu_la-curl_multibyte.lo \
+       libcurlu_la-curl_ntlm_core.lo libcurlu_la-curl_ntlm_wb.lo \
+       libcurlu_la-curl_path.lo libcurlu_la-curl_range.lo \
+       libcurlu_la-curl_rtmp.lo libcurlu_la-curl_sasl.lo \
+       libcurlu_la-curl_sspi.lo libcurlu_la-curl_threads.lo \
+       libcurlu_la-dict.lo libcurlu_la-doh.lo libcurlu_la-dynbuf.lo \
        libcurlu_la-easy.lo libcurlu_la-easygetopt.lo \
        libcurlu_la-easyoptions.lo libcurlu_la-escape.lo \
        libcurlu_la-file.lo libcurlu_la-fileinfo.lo \
-       libcurlu_la-formdata.lo libcurlu_la-ftp.lo \
-       libcurlu_la-ftplistparser.lo libcurlu_la-getenv.lo \
-       libcurlu_la-getinfo.lo libcurlu_la-gopher.lo \
-       libcurlu_la-hash.lo libcurlu_la-hmac.lo \
-       libcurlu_la-hostasyn.lo libcurlu_la-hostcheck.lo \
-       libcurlu_la-hostip.lo libcurlu_la-hostip4.lo \
-       libcurlu_la-hostip6.lo libcurlu_la-hostsyn.lo \
-       libcurlu_la-hsts.lo libcurlu_la-http.lo libcurlu_la-http2.lo \
-       libcurlu_la-http_chunks.lo libcurlu_la-http_digest.lo \
-       libcurlu_la-http_negotiate.lo libcurlu_la-http_ntlm.lo \
-       libcurlu_la-http_proxy.lo libcurlu_la-http_aws_sigv4.lo \
-       libcurlu_la-idn_win32.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-fopen.lo libcurlu_la-formdata.lo \
+       libcurlu_la-ftp.lo libcurlu_la-ftplistparser.lo \
+       libcurlu_la-getenv.lo libcurlu_la-getinfo.lo \
+       libcurlu_la-gopher.lo libcurlu_la-h2h3.lo libcurlu_la-hash.lo \
+       libcurlu_la-headers.lo libcurlu_la-hmac.lo \
+       libcurlu_la-hostasyn.lo libcurlu_la-hostip.lo \
+       libcurlu_la-hostip4.lo libcurlu_la-hostip6.lo \
+       libcurlu_la-hostsyn.lo libcurlu_la-hsts.lo libcurlu_la-http.lo \
+       libcurlu_la-http2.lo libcurlu_la-http_chunks.lo \
+       libcurlu_la-http_digest.lo libcurlu_la-http_negotiate.lo \
+       libcurlu_la-http_ntlm.lo libcurlu_la-http_proxy.lo \
+       libcurlu_la-http_aws_sigv4.lo libcurlu_la-idn_win32.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-multi.lo libcurlu_la-netrc.lo \
-       libcurlu_la-non-ascii.lo libcurlu_la-nonblock.lo \
+       libcurlu_la-nonblock.lo libcurlu_la-noproxy.lo \
        libcurlu_la-openldap.lo libcurlu_la-parsedate.lo \
        libcurlu_la-pingpong.lo libcurlu_la-pop3.lo \
        libcurlu_la-progress.lo libcurlu_la-psl.lo libcurlu_la-rand.lo \
@@ -330,12 +391,13 @@ am__objects_9 = libcurlu_la-altsvc.lo libcurlu_la-amigaos.lo \
        libcurlu_la-strdup.lo libcurlu_la-strerror.lo \
        libcurlu_la-strtok.lo libcurlu_la-strtoofft.lo \
        libcurlu_la-system_win32.lo libcurlu_la-telnet.lo \
-       libcurlu_la-tftp.lo libcurlu_la-timeval.lo \
-       libcurlu_la-transfer.lo libcurlu_la-url.lo \
-       libcurlu_la-urlapi.lo libcurlu_la-version.lo \
-       libcurlu_la-version_win32.lo libcurlu_la-warnless.lo \
-       libcurlu_la-wildcard.lo libcurlu_la-x509asn1.lo
-am__objects_10 = vauth/libcurlu_la-cleartext.lo \
+       libcurlu_la-tftp.lo libcurlu_la-timediff.lo \
+       libcurlu_la-timeval.lo libcurlu_la-transfer.lo \
+       libcurlu_la-url.lo libcurlu_la-urlapi.lo \
+       libcurlu_la-version.lo libcurlu_la-version_win32.lo \
+       libcurlu_la-warnless.lo libcurlu_la-wildcard.lo \
+       libcurlu_la-ws.lo
+am__objects_12 = vauth/libcurlu_la-cleartext.lo \
        vauth/libcurlu_la-cram.lo vauth/libcurlu_la-digest.lo \
        vauth/libcurlu_la-digest_sspi.lo vauth/libcurlu_la-gsasl.lo \
        vauth/libcurlu_la-krb5_gssapi.lo \
@@ -343,23 +405,22 @@ am__objects_10 = vauth/libcurlu_la-cleartext.lo \
        vauth/libcurlu_la-ntlm_sspi.lo vauth/libcurlu_la-oauth2.lo \
        vauth/libcurlu_la-spnego_gssapi.lo \
        vauth/libcurlu_la-spnego_sspi.lo vauth/libcurlu_la-vauth.lo
-am__objects_11 = vtls/libcurlu_la-bearssl.lo vtls/libcurlu_la-gskit.lo \
-       vtls/libcurlu_la-gtls.lo vtls/libcurlu_la-keylog.lo \
-       vtls/libcurlu_la-mbedtls.lo \
-       vtls/libcurlu_la-mbedtls_threadlock.lo \
-       vtls/libcurlu_la-mesalink.lo vtls/libcurlu_la-nss.lo \
+am__objects_13 = vtls/libcurlu_la-bearssl.lo vtls/libcurlu_la-gskit.lo \
+       vtls/libcurlu_la-gtls.lo vtls/libcurlu_la-hostcheck.lo \
+       vtls/libcurlu_la-keylog.lo vtls/libcurlu_la-mbedtls.lo \
+       vtls/libcurlu_la-mbedtls_threadlock.lo vtls/libcurlu_la-nss.lo \
        vtls/libcurlu_la-openssl.lo vtls/libcurlu_la-rustls.lo \
        vtls/libcurlu_la-schannel.lo \
        vtls/libcurlu_la-schannel_verify.lo \
        vtls/libcurlu_la-sectransp.lo vtls/libcurlu_la-vtls.lo \
-       vtls/libcurlu_la-wolfssl.lo
-am__objects_12 = vquic/libcurlu_la-ngtcp2.lo \
+       vtls/libcurlu_la-wolfssl.lo vtls/libcurlu_la-x509asn1.lo
+am__objects_14 = vquic/libcurlu_la-msh3.lo vquic/libcurlu_la-ngtcp2.lo \
        vquic/libcurlu_la-quiche.lo vquic/libcurlu_la-vquic.lo
-am__objects_13 = vssh/libcurlu_la-libssh.lo \
+am__objects_15 = vssh/libcurlu_la-libssh.lo \
        vssh/libcurlu_la-libssh2.lo vssh/libcurlu_la-wolfssh.lo
-am__objects_14 = $(am__objects_9) $(am__objects_10) $(am__objects_11) \
-       $(am__objects_12) $(am__objects_13)
-am_libcurlu_la_OBJECTS = $(am__objects_14) $(am__objects_8)
+am__objects_16 = $(am__objects_11) $(am__objects_12) $(am__objects_13) \
+       $(am__objects_14) $(am__objects_15)
+am_libcurlu_la_OBJECTS = $(am__objects_16) $(am__objects_8)
 libcurlu_la_OBJECTS = $(am_libcurlu_la_OBJECTS)
 libcurlu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcurlu_la_CFLAGS) \
@@ -392,7 +453,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurl_la-content_encoding.Plo \
        ./$(DEPDIR)/libcurl_la-cookie.Plo \
        ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo \
-       ./$(DEPDIR)/libcurl_la-curl_ctype.Plo \
        ./$(DEPDIR)/libcurl_la-curl_des.Plo \
        ./$(DEPDIR)/libcurl_la-curl_endian.Plo \
        ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo \
@@ -410,7 +470,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurl_la-curl_sspi.Plo \
        ./$(DEPDIR)/libcurl_la-curl_threads.Plo \
        ./$(DEPDIR)/libcurl_la-dict.Plo ./$(DEPDIR)/libcurl_la-doh.Plo \
-       ./$(DEPDIR)/libcurl_la-dotdot.Plo \
        ./$(DEPDIR)/libcurl_la-dynbuf.Plo \
        ./$(DEPDIR)/libcurl_la-easy.Plo \
        ./$(DEPDIR)/libcurl_la-easygetopt.Plo \
@@ -418,16 +477,18 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurl_la-escape.Plo \
        ./$(DEPDIR)/libcurl_la-file.Plo \
        ./$(DEPDIR)/libcurl_la-fileinfo.Plo \
+       ./$(DEPDIR)/libcurl_la-fopen.Plo \
        ./$(DEPDIR)/libcurl_la-formdata.Plo \
        ./$(DEPDIR)/libcurl_la-ftp.Plo \
        ./$(DEPDIR)/libcurl_la-ftplistparser.Plo \
        ./$(DEPDIR)/libcurl_la-getenv.Plo \
        ./$(DEPDIR)/libcurl_la-getinfo.Plo \
        ./$(DEPDIR)/libcurl_la-gopher.Plo \
+       ./$(DEPDIR)/libcurl_la-h2h3.Plo \
        ./$(DEPDIR)/libcurl_la-hash.Plo \
+       ./$(DEPDIR)/libcurl_la-headers.Plo \
        ./$(DEPDIR)/libcurl_la-hmac.Plo \
        ./$(DEPDIR)/libcurl_la-hostasyn.Plo \
-       ./$(DEPDIR)/libcurl_la-hostcheck.Plo \
        ./$(DEPDIR)/libcurl_la-hostip.Plo \
        ./$(DEPDIR)/libcurl_la-hostip4.Plo \
        ./$(DEPDIR)/libcurl_la-hostip6.Plo \
@@ -456,8 +517,8 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurl_la-mqtt.Plo \
        ./$(DEPDIR)/libcurl_la-multi.Plo \
        ./$(DEPDIR)/libcurl_la-netrc.Plo \
-       ./$(DEPDIR)/libcurl_la-non-ascii.Plo \
        ./$(DEPDIR)/libcurl_la-nonblock.Plo \
+       ./$(DEPDIR)/libcurl_la-noproxy.Plo \
        ./$(DEPDIR)/libcurl_la-openldap.Plo \
        ./$(DEPDIR)/libcurl_la-parsedate.Plo \
        ./$(DEPDIR)/libcurl_la-pingpong.Plo \
@@ -487,6 +548,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurl_la-system_win32.Plo \
        ./$(DEPDIR)/libcurl_la-telnet.Plo \
        ./$(DEPDIR)/libcurl_la-tftp.Plo \
+       ./$(DEPDIR)/libcurl_la-timediff.Plo \
        ./$(DEPDIR)/libcurl_la-timeval.Plo \
        ./$(DEPDIR)/libcurl_la-transfer.Plo \
        ./$(DEPDIR)/libcurl_la-url.Plo \
@@ -495,7 +557,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurl_la-version_win32.Plo \
        ./$(DEPDIR)/libcurl_la-warnless.Plo \
        ./$(DEPDIR)/libcurl_la-wildcard.Plo \
-       ./$(DEPDIR)/libcurl_la-x509asn1.Plo \
+       ./$(DEPDIR)/libcurl_la-ws.Plo \
        ./$(DEPDIR)/libcurlu_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-amigaos.Plo \
        ./$(DEPDIR)/libcurlu_la-asyn-ares.Plo \
@@ -508,7 +570,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-content_encoding.Plo \
        ./$(DEPDIR)/libcurlu_la-cookie.Plo \
        ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo \
-       ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo \
        ./$(DEPDIR)/libcurlu_la-curl_des.Plo \
        ./$(DEPDIR)/libcurlu_la-curl_endian.Plo \
        ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo \
@@ -527,7 +588,6 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-curl_threads.Plo \
        ./$(DEPDIR)/libcurlu_la-dict.Plo \
        ./$(DEPDIR)/libcurlu_la-doh.Plo \
-       ./$(DEPDIR)/libcurlu_la-dotdot.Plo \
        ./$(DEPDIR)/libcurlu_la-dynbuf.Plo \
        ./$(DEPDIR)/libcurlu_la-easy.Plo \
        ./$(DEPDIR)/libcurlu_la-easygetopt.Plo \
@@ -535,16 +595,18 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-escape.Plo \
        ./$(DEPDIR)/libcurlu_la-file.Plo \
        ./$(DEPDIR)/libcurlu_la-fileinfo.Plo \
+       ./$(DEPDIR)/libcurlu_la-fopen.Plo \
        ./$(DEPDIR)/libcurlu_la-formdata.Plo \
        ./$(DEPDIR)/libcurlu_la-ftp.Plo \
        ./$(DEPDIR)/libcurlu_la-ftplistparser.Plo \
        ./$(DEPDIR)/libcurlu_la-getenv.Plo \
        ./$(DEPDIR)/libcurlu_la-getinfo.Plo \
        ./$(DEPDIR)/libcurlu_la-gopher.Plo \
+       ./$(DEPDIR)/libcurlu_la-h2h3.Plo \
        ./$(DEPDIR)/libcurlu_la-hash.Plo \
+       ./$(DEPDIR)/libcurlu_la-headers.Plo \
        ./$(DEPDIR)/libcurlu_la-hmac.Plo \
        ./$(DEPDIR)/libcurlu_la-hostasyn.Plo \
-       ./$(DEPDIR)/libcurlu_la-hostcheck.Plo \
        ./$(DEPDIR)/libcurlu_la-hostip.Plo \
        ./$(DEPDIR)/libcurlu_la-hostip4.Plo \
        ./$(DEPDIR)/libcurlu_la-hostip6.Plo \
@@ -574,8 +636,8 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-mqtt.Plo \
        ./$(DEPDIR)/libcurlu_la-multi.Plo \
        ./$(DEPDIR)/libcurlu_la-netrc.Plo \
-       ./$(DEPDIR)/libcurlu_la-non-ascii.Plo \
        ./$(DEPDIR)/libcurlu_la-nonblock.Plo \
+       ./$(DEPDIR)/libcurlu_la-noproxy.Plo \
        ./$(DEPDIR)/libcurlu_la-openldap.Plo \
        ./$(DEPDIR)/libcurlu_la-parsedate.Plo \
        ./$(DEPDIR)/libcurlu_la-pingpong.Plo \
@@ -607,6 +669,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-system_win32.Plo \
        ./$(DEPDIR)/libcurlu_la-telnet.Plo \
        ./$(DEPDIR)/libcurlu_la-tftp.Plo \
+       ./$(DEPDIR)/libcurlu_la-timediff.Plo \
        ./$(DEPDIR)/libcurlu_la-timeval.Plo \
        ./$(DEPDIR)/libcurlu_la-transfer.Plo \
        ./$(DEPDIR)/libcurlu_la-url.Plo \
@@ -615,7 +678,7 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        ./$(DEPDIR)/libcurlu_la-version_win32.Plo \
        ./$(DEPDIR)/libcurlu_la-warnless.Plo \
        ./$(DEPDIR)/libcurlu_la-wildcard.Plo \
-       ./$(DEPDIR)/libcurlu_la-x509asn1.Plo \
+       ./$(DEPDIR)/libcurlu_la-ws.Plo \
        vauth/$(DEPDIR)/libcurl_la-cleartext.Plo \
        vauth/$(DEPDIR)/libcurl_la-cram.Plo \
        vauth/$(DEPDIR)/libcurl_la-digest.Plo \
@@ -642,9 +705,11 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo \
        vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo \
        vauth/$(DEPDIR)/libcurlu_la-vauth.Plo \
+       vquic/$(DEPDIR)/libcurl_la-msh3.Plo \
        vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo \
        vquic/$(DEPDIR)/libcurl_la-quiche.Plo \
        vquic/$(DEPDIR)/libcurl_la-vquic.Plo \
+       vquic/$(DEPDIR)/libcurlu_la-msh3.Plo \
        vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo \
        vquic/$(DEPDIR)/libcurlu_la-quiche.Plo \
        vquic/$(DEPDIR)/libcurlu_la-vquic.Plo \
@@ -657,10 +722,10 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        vtls/$(DEPDIR)/libcurl_la-bearssl.Plo \
        vtls/$(DEPDIR)/libcurl_la-gskit.Plo \
        vtls/$(DEPDIR)/libcurl_la-gtls.Plo \
+       vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo \
        vtls/$(DEPDIR)/libcurl_la-keylog.Plo \
        vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo \
        vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo \
-       vtls/$(DEPDIR)/libcurl_la-mesalink.Plo \
        vtls/$(DEPDIR)/libcurl_la-nss.Plo \
        vtls/$(DEPDIR)/libcurl_la-openssl.Plo \
        vtls/$(DEPDIR)/libcurl_la-rustls.Plo \
@@ -669,13 +734,14 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        vtls/$(DEPDIR)/libcurl_la-sectransp.Plo \
        vtls/$(DEPDIR)/libcurl_la-vtls.Plo \
        vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo \
+       vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo \
        vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo \
        vtls/$(DEPDIR)/libcurlu_la-gskit.Plo \
        vtls/$(DEPDIR)/libcurlu_la-gtls.Plo \
+       vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo \
        vtls/$(DEPDIR)/libcurlu_la-keylog.Plo \
        vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo \
        vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo \
-       vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo \
        vtls/$(DEPDIR)/libcurlu_la-nss.Plo \
        vtls/$(DEPDIR)/libcurlu_la-openssl.Plo \
        vtls/$(DEPDIR)/libcurlu_la-rustls.Plo \
@@ -683,7 +749,8 @@ am__depfiles_remade = ./$(DEPDIR)/libcurl_la-altsvc.Plo \
        vtls/$(DEPDIR)/libcurlu_la-schannel_verify.Plo \
        vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo \
        vtls/$(DEPDIR)/libcurlu_la-vtls.Plo \
-       vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
+       vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo \
+       vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -704,7 +771,7 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libcurl_la_SOURCES) $(libcurlu_la_SOURCES)
-DIST_SOURCES = $(libcurl_la_SOURCES) $(libcurlu_la_SOURCES)
+DIST_SOURCES = $(am__libcurl_la_SOURCES_DIST) $(libcurlu_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -729,8 +796,8 @@ am__define_uniq_tagged_files = \
     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
   done | $(am__uniquify_input)`
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
-       $(srcdir)/curl_config.h.in $(srcdir)/libcurl.vers.in \
-       $(top_srcdir)/depcomp
+       $(srcdir)/curl_config.h.in $(srcdir)/libcurl.plist.in \
+       $(srcdir)/libcurl.vers.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -777,6 +844,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -794,6 +862,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -853,6 +922,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -871,12 +941,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -943,7 +1014,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -957,7 +1027,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -970,17 +1040,15 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
-EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h           \
- config-plan9.h config-riscos.h config-mac.h curl_config.h.in       \
- makefile.dj config-dos.h libcurl.plist libcurl.rc config-amigaos.h \
- makefile.amiga Makefile.netware nwlib.c nwos.c config-win32ce.h    \
- config-os400.h setup-os400.h                                       \
- config-tpf.h mk-ca-bundle.pl mk-ca-bundle.vbs $(CMAKE_DIST)        \
- firefox-db2pem.sh config-vxworks.h Makefile.vxworks checksrc.pl    \
- setup-win32.h .checksrc
+EXTRA_DIST = Makefile.m32 config-win32.h config-win32ce.h config-plan9.h   \
+ config-riscos.h config-mac.h curl_config.h.in makefile.dj config-dos.h    \
+ libcurl.plist libcurl.rc config-amigaos.h makefile.amiga config-win32ce.h \
+ config-os400.h setup-os400.h $(CMAKE_DIST) setup-win32.h .checksrc
 
 lib_LTLIBRARIES = libcurl.la
 @BUILD_UNITTESTS_FALSE@noinst_LTLIBRARIES = 
@@ -994,8 +1062,6 @@ lib_LTLIBRARIES = libcurl.la
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "private" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
 # This flag accepts an argument of the form current[:revision[:age]]. So,
 # passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
 # 1.
@@ -1009,20 +1075,10 @@ lib_LTLIBRARIES = libcurl.la
 #
 # For the full guide on libcurl ABI rules, see docs/libcurl/ABI
 AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
-       -I$(top_srcdir)/lib $(am__append_1) -DBUILDING_LIBCURL
-VERSIONINFO = -version-info 11:0:7
+       -I$(top_srcdir)/lib -DBUILDING_LIBCURL
+VERSIONINFO = -version-info 12:0:8
 AM_LDFLAGS = 
 AM_CFLAGS = 
-libcurl_la_CPPFLAGS_EXTRA = $(am__append_7) $(am__append_8)
-libcurl_la_LDFLAGS_EXTRA = $(am__append_2) $(am__append_3) \
-       $(am__append_4) $(am__append_5) $(am__append_6)
-libcurl_la_CFLAGS_EXTRA = $(am__append_9)
-libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA)
-libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(LDFLAGS) $(LIBCURL_LIBS)
-libcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA)
-libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS
-libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
-libcurlu_la_CFLAGS = $(AM_CFLAGS)
 LIB_VAUTH_CFILES = \
   vauth/cleartext.c     \
   vauth/cram.c          \
@@ -1047,10 +1103,10 @@ LIB_VTLS_CFILES = \
   vtls/bearssl.c            \
   vtls/gskit.c              \
   vtls/gtls.c               \
+  vtls/hostcheck.c          \
   vtls/keylog.c             \
   vtls/mbedtls.c            \
   vtls/mbedtls_threadlock.c \
-  vtls/mesalink.c           \
   vtls/nss.c                \
   vtls/openssl.c            \
   vtls/rustls.c             \
@@ -1058,30 +1114,34 @@ LIB_VTLS_CFILES = \
   vtls/schannel_verify.c    \
   vtls/sectransp.c          \
   vtls/vtls.c               \
-  vtls/wolfssl.c
+  vtls/wolfssl.c            \
+  vtls/x509asn1.c
 
 LIB_VTLS_HFILES = \
   vtls/bearssl.h            \
   vtls/gskit.h              \
   vtls/gtls.h               \
+  vtls/hostcheck.h          \
   vtls/keylog.h             \
   vtls/mbedtls.h            \
   vtls/mbedtls_threadlock.h \
-  vtls/mesalink.h           \
   vtls/nssg.h               \
   vtls/openssl.h            \
   vtls/rustls.h             \
   vtls/schannel.h           \
   vtls/sectransp.h          \
   vtls/vtls.h               \
-  vtls/wolfssl.h
+  vtls/wolfssl.h            \
+  vtls/x509asn1.h
 
 LIB_VQUIC_CFILES = \
+  vquic/msh3.c   \
   vquic/ngtcp2.c   \
   vquic/quiche.c   \
   vquic/vquic.c
 
 LIB_VQUIC_HFILES = \
+  vquic/msh3.h   \
   vquic/ngtcp2.h   \
   vquic/quiche.h   \
   vquic/vquic.h
@@ -1107,7 +1167,6 @@ LIB_CFILES = \
   content_encoding.c \
   cookie.c           \
   curl_addrinfo.c    \
-  curl_ctype.c       \
   curl_des.c         \
   curl_endian.c      \
   curl_fnmatch.c     \
@@ -1126,7 +1185,6 @@ LIB_CFILES = \
   curl_threads.c     \
   dict.c             \
   doh.c              \
-  dotdot.c           \
   dynbuf.c           \
   easy.c             \
   easygetopt.c       \
@@ -1134,16 +1192,18 @@ LIB_CFILES = \
   escape.c           \
   file.c             \
   fileinfo.c         \
+  fopen.c            \
   formdata.c         \
   ftp.c              \
   ftplistparser.c    \
   getenv.c           \
   getinfo.c          \
   gopher.c           \
+  h2h3.c             \
   hash.c             \
+  headers.c          \
   hmac.c             \
   hostasyn.c         \
-  hostcheck.c        \
   hostip.c           \
   hostip4.c          \
   hostip6.c          \
@@ -1173,8 +1233,8 @@ LIB_CFILES = \
   mqtt.c             \
   multi.c            \
   netrc.c            \
-  non-ascii.c        \
   nonblock.c         \
+  noproxy.c          \
   openldap.c         \
   parsedate.c        \
   pingpong.c         \
@@ -1206,6 +1266,7 @@ LIB_CFILES = \
   system_win32.c     \
   telnet.c           \
   tftp.c             \
+  timediff.c         \
   timeval.c          \
   transfer.c         \
   url.c              \
@@ -1214,7 +1275,7 @@ LIB_CFILES = \
   version_win32.c    \
   warnless.c         \
   wildcard.c         \
-  x509asn1.c
+  ws.c
 
 LIB_HFILES = \
   altsvc.h           \
@@ -1259,20 +1320,23 @@ LIB_HFILES = \
   curlx.h            \
   dict.h             \
   doh.h              \
-  dotdot.h           \
   dynbuf.h           \
+  easy_lock.h        \
   easyif.h           \
   easyoptions.h      \
   escape.h           \
   file.h             \
   fileinfo.h         \
+  fopen.h            \
   formdata.h         \
+  functypes.h        \
   ftp.h              \
   ftplistparser.h    \
   getinfo.h          \
   gopher.h           \
+  h2h3.h             \
   hash.h             \
-  hostcheck.h        \
+  headers.h          \
   hostip.h           \
   hsts.h             \
   http.h             \
@@ -1294,8 +1358,8 @@ LIB_HFILES = \
   multihandle.h      \
   multiif.h          \
   netrc.h            \
-  non-ascii.h        \
   nonblock.h         \
+  noproxy.h          \
   parsedate.h        \
   pingpong.h         \
   pop3.h             \
@@ -1327,6 +1391,7 @@ LIB_HFILES = \
   system_win32.h     \
   telnet.h           \
   tftp.h             \
+  timediff.h         \
   timeval.h          \
   transfer.h         \
   url.h              \
@@ -1335,7 +1400,7 @@ LIB_HFILES = \
   version_win32.h    \
   warnless.h         \
   wildcard.h         \
-  x509asn1.h
+  ws.h
 
 LIB_RCFILES = libcurl.rc
 CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \
@@ -1346,8 +1411,18 @@ HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \
 
 
 # Makefile.inc provides the CSOURCES and HHEADERS defines
-libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS)
+libcurl_la_SOURCES = $(CSOURCES) $(HHEADERS) $(am__append_7)
 libcurlu_la_SOURCES = $(CSOURCES) $(HHEADERS)
+libcurl_la_CPPFLAGS_EXTRA = $(am__append_6) $(am__append_8)
+libcurl_la_LDFLAGS_EXTRA = $(am__append_1) $(am__append_2) \
+       $(am__append_3) $(am__append_4) $(am__append_5)
+libcurl_la_CFLAGS_EXTRA = $(am__append_9)
+libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) $(libcurl_la_CPPFLAGS_EXTRA)
+libcurl_la_LDFLAGS = $(AM_LDFLAGS) $(libcurl_la_LDFLAGS_EXTRA) $(LDFLAGS) $(LIBCURL_LIBS)
+libcurl_la_CFLAGS = $(AM_CFLAGS) $(libcurl_la_CFLAGS_EXTRA)
+libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS
+libcurlu_la_LDFLAGS = $(AM_LDFLAGS) -static $(LIBCURL_LIBS)
+libcurlu_la_CFLAGS = $(AM_CFLAGS)
 CHECKSRC = $(CS_$(V))
 CS_0 = @echo "  RUN     " $@;
 CS_1 = 
@@ -1360,7 +1435,7 @@ all: curl_config.h
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .o .obj .rc
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -1408,6 +1483,8 @@ distclean-hdr:
        -rm -f curl_config.h stamp-h1
 libcurl.vers: $(top_builddir)/config.status $(srcdir)/libcurl.vers.in
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+libcurl.plist: $(top_builddir)/config.status $(srcdir)/libcurl.plist.in
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
@@ -1498,14 +1575,14 @@ vtls/libcurl_la-gskit.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-gtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-hostcheck.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-keylog.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-mbedtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurl_la-mesalink.lo: vtls/$(am__dirstamp) \
-       vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-nss.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-openssl.lo: vtls/$(am__dirstamp) \
@@ -1522,12 +1599,16 @@ vtls/libcurl_la-vtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurl_la-wolfssl.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurl_la-x509asn1.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
 vquic/$(am__dirstamp):
        @$(MKDIR_P) vquic
        @: > vquic/$(am__dirstamp)
 vquic/$(DEPDIR)/$(am__dirstamp):
        @$(MKDIR_P) vquic/$(DEPDIR)
        @: > vquic/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurl_la-msh3.lo: vquic/$(am__dirstamp) \
+       vquic/$(DEPDIR)/$(am__dirstamp)
 vquic/libcurl_la-ngtcp2.lo: vquic/$(am__dirstamp) \
        vquic/$(DEPDIR)/$(am__dirstamp)
 vquic/libcurl_la-quiche.lo: vquic/$(am__dirstamp) \
@@ -1581,14 +1662,14 @@ vtls/libcurlu_la-gskit.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-gtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-hostcheck.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-keylog.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-mbedtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-mbedtls_threadlock.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
-vtls/libcurlu_la-mesalink.lo: vtls/$(am__dirstamp) \
-       vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-nss.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-openssl.lo: vtls/$(am__dirstamp) \
@@ -1605,6 +1686,10 @@ vtls/libcurlu_la-vtls.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
 vtls/libcurlu_la-wolfssl.lo: vtls/$(am__dirstamp) \
        vtls/$(DEPDIR)/$(am__dirstamp)
+vtls/libcurlu_la-x509asn1.lo: vtls/$(am__dirstamp) \
+       vtls/$(DEPDIR)/$(am__dirstamp)
+vquic/libcurlu_la-msh3.lo: vquic/$(am__dirstamp) \
+       vquic/$(DEPDIR)/$(am__dirstamp)
 vquic/libcurlu_la-ngtcp2.lo: vquic/$(am__dirstamp) \
        vquic/$(DEPDIR)/$(am__dirstamp)
 vquic/libcurlu_la-quiche.lo: vquic/$(am__dirstamp) \
@@ -1647,7 +1732,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-content_encoding.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-cookie.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_ctype.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_des.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_endian.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo@am__quote@ # am--include-marker
@@ -1666,7 +1750,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-curl_threads.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dict.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-doh.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dotdot.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-dynbuf.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-easy.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-easygetopt.Plo@am__quote@ # am--include-marker
@@ -1674,16 +1757,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-escape.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-file.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-fileinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-fopen.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-formdata.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ftp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ftplistparser.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getenv.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-getinfo.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-gopher.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-h2h3.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-headers.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hmac.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostasyn.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostcheck.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip4.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-hostip6.Plo@am__quote@ # am--include-marker
@@ -1713,8 +1798,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-mqtt.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-multi.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-netrc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-non-ascii.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-nonblock.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-noproxy.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-openldap.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-parsedate.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-pingpong.Plo@am__quote@ # am--include-marker
@@ -1746,6 +1831,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-system_win32.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-telnet.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-tftp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-timediff.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-timeval.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-transfer.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-url.Plo@am__quote@ # am--include-marker
@@ -1754,7 +1840,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-version_win32.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-warnless.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-wildcard.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-x509asn1.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurl_la-ws.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-altsvc.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-amigaos.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-asyn-ares.Plo@am__quote@ # am--include-marker
@@ -1767,7 +1853,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-content_encoding.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-cookie.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_ctype.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_des.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_endian.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo@am__quote@ # am--include-marker
@@ -1786,7 +1871,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-curl_threads.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dict.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-doh.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dotdot.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-dynbuf.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-easy.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-easygetopt.Plo@am__quote@ # am--include-marker
@@ -1794,16 +1878,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-escape.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-file.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-fileinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-fopen.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-formdata.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ftp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ftplistparser.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getenv.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-getinfo.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-gopher.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-h2h3.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-headers.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hmac.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostasyn.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostcheck.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip4.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-hostip6.Plo@am__quote@ # am--include-marker
@@ -1833,8 +1919,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-mqtt.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-multi.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-netrc.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-non-ascii.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-nonblock.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-noproxy.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-openldap.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-parsedate.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-pingpong.Plo@am__quote@ # am--include-marker
@@ -1866,6 +1952,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-system_win32.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-telnet.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-tftp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-timediff.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-timeval.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-transfer.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-url.Plo@am__quote@ # am--include-marker
@@ -1874,7 +1961,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-version_win32.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-warnless.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-wildcard.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurlu_la-ws.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cleartext.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-cram.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurl_la-digest.Plo@am__quote@ # am--include-marker
@@ -1901,9 +1988,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vauth/$(DEPDIR)/libcurlu_la-vauth.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-msh3.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-quiche.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurl_la-vquic.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-msh3.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-quiche.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vquic/$(DEPDIR)/libcurlu_la-vquic.Plo@am__quote@ # am--include-marker
@@ -1916,10 +2005,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-bearssl.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gskit.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-gtls.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-keylog.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-mesalink.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-nss.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-openssl.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-rustls.Plo@am__quote@ # am--include-marker
@@ -1928,13 +2017,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-sectransp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-vtls.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gskit.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-gtls.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-keylog.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-nss.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-openssl.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-rustls.Plo@am__quote@ # am--include-marker
@@ -1943,6 +2033,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-vtls.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo@am__quote@ # am--include-marker
 
 $(am__depfiles_remade):
        @$(MKDIR_P) $(@D)
@@ -2058,13 +2149,6 @@ libcurl_la-curl_addrinfo.lo: curl_addrinfo.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-curl_addrinfo.lo `test -f 'curl_addrinfo.c' || echo '$(srcdir)/'`curl_addrinfo.c
 
-libcurl_la-curl_ctype.lo: curl_ctype.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-curl_ctype.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_ctype.Tpo -c -o libcurl_la-curl_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_ctype.Tpo $(DEPDIR)/libcurl_la-curl_ctype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_ctype.c' object='libcurl_la-curl_ctype.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-curl_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-
 libcurl_la-curl_des.lo: curl_des.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-curl_des.lo -MD -MP -MF $(DEPDIR)/libcurl_la-curl_des.Tpo -c -o libcurl_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-curl_des.Tpo $(DEPDIR)/libcurl_la-curl_des.Plo
@@ -2191,13 +2275,6 @@ libcurl_la-doh.lo: doh.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-doh.lo `test -f 'doh.c' || echo '$(srcdir)/'`doh.c
 
-libcurl_la-dotdot.lo: dotdot.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-dotdot.lo -MD -MP -MF $(DEPDIR)/libcurl_la-dotdot.Tpo -c -o libcurl_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-dotdot.Tpo $(DEPDIR)/libcurl_la-dotdot.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dotdot.c' object='libcurl_la-dotdot.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-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-
 libcurl_la-dynbuf.lo: dynbuf.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-dynbuf.lo -MD -MP -MF $(DEPDIR)/libcurl_la-dynbuf.Tpo -c -o libcurl_la-dynbuf.lo `test -f 'dynbuf.c' || echo '$(srcdir)/'`dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-dynbuf.Tpo $(DEPDIR)/libcurl_la-dynbuf.Plo
@@ -2247,6 +2324,13 @@ libcurl_la-fileinfo.lo: fileinfo.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-fileinfo.lo `test -f 'fileinfo.c' || echo '$(srcdir)/'`fileinfo.c
 
+libcurl_la-fopen.lo: fopen.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-fopen.lo -MD -MP -MF $(DEPDIR)/libcurl_la-fopen.Tpo -c -o libcurl_la-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-fopen.Tpo $(DEPDIR)/libcurl_la-fopen.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fopen.c' object='libcurl_la-fopen.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-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+
 libcurl_la-formdata.lo: formdata.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-formdata.lo -MD -MP -MF $(DEPDIR)/libcurl_la-formdata.Tpo -c -o libcurl_la-formdata.lo `test -f 'formdata.c' || echo '$(srcdir)/'`formdata.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-formdata.Tpo $(DEPDIR)/libcurl_la-formdata.Plo
@@ -2289,6 +2373,13 @@ libcurl_la-gopher.lo: gopher.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-gopher.lo `test -f 'gopher.c' || echo '$(srcdir)/'`gopher.c
 
+libcurl_la-h2h3.lo: h2h3.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-h2h3.lo -MD -MP -MF $(DEPDIR)/libcurl_la-h2h3.Tpo -c -o libcurl_la-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-h2h3.Tpo $(DEPDIR)/libcurl_la-h2h3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='h2h3.c' object='libcurl_la-h2h3.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-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+
 libcurl_la-hash.lo: hash.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-hash.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hash.Tpo -c -o libcurl_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hash.Tpo $(DEPDIR)/libcurl_la-hash.Plo
@@ -2296,6 +2387,13 @@ libcurl_la-hash.lo: hash.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-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
 
+libcurl_la-headers.lo: headers.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-headers.lo -MD -MP -MF $(DEPDIR)/libcurl_la-headers.Tpo -c -o libcurl_la-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-headers.Tpo $(DEPDIR)/libcurl_la-headers.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='headers.c' object='libcurl_la-headers.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-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+
 libcurl_la-hmac.lo: hmac.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-hmac.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hmac.Tpo -c -o libcurl_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hmac.Tpo $(DEPDIR)/libcurl_la-hmac.Plo
@@ -2310,13 +2408,6 @@ libcurl_la-hostasyn.lo: hostasyn.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-hostasyn.lo `test -f 'hostasyn.c' || echo '$(srcdir)/'`hostasyn.c
 
-libcurl_la-hostcheck.lo: hostcheck.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-hostcheck.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hostcheck.Tpo -c -o libcurl_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hostcheck.Tpo $(DEPDIR)/libcurl_la-hostcheck.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hostcheck.c' object='libcurl_la-hostcheck.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-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-
 libcurl_la-hostip.lo: hostip.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-hostip.lo -MD -MP -MF $(DEPDIR)/libcurl_la-hostip.Tpo -c -o libcurl_la-hostip.lo `test -f 'hostip.c' || echo '$(srcdir)/'`hostip.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-hostip.Tpo $(DEPDIR)/libcurl_la-hostip.Plo
@@ -2520,13 +2611,6 @@ libcurl_la-netrc.lo: netrc.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-netrc.lo `test -f 'netrc.c' || echo '$(srcdir)/'`netrc.c
 
-libcurl_la-non-ascii.lo: non-ascii.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-non-ascii.lo -MD -MP -MF $(DEPDIR)/libcurl_la-non-ascii.Tpo -c -o libcurl_la-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-non-ascii.Tpo $(DEPDIR)/libcurl_la-non-ascii.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='non-ascii.c' object='libcurl_la-non-ascii.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-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-
 libcurl_la-nonblock.lo: nonblock.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-nonblock.lo -MD -MP -MF $(DEPDIR)/libcurl_la-nonblock.Tpo -c -o libcurl_la-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-nonblock.Tpo $(DEPDIR)/libcurl_la-nonblock.Plo
@@ -2534,6 +2618,13 @@ libcurl_la-nonblock.lo: nonblock.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-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
 
+libcurl_la-noproxy.lo: noproxy.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-noproxy.lo -MD -MP -MF $(DEPDIR)/libcurl_la-noproxy.Tpo -c -o libcurl_la-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-noproxy.Tpo $(DEPDIR)/libcurl_la-noproxy.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='noproxy.c' object='libcurl_la-noproxy.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-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+
 libcurl_la-openldap.lo: openldap.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-openldap.lo -MD -MP -MF $(DEPDIR)/libcurl_la-openldap.Tpo -c -o libcurl_la-openldap.lo `test -f 'openldap.c' || echo '$(srcdir)/'`openldap.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-openldap.Tpo $(DEPDIR)/libcurl_la-openldap.Plo
@@ -2751,6 +2842,13 @@ libcurl_la-tftp.lo: tftp.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-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
 
+libcurl_la-timediff.lo: timediff.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-timediff.lo -MD -MP -MF $(DEPDIR)/libcurl_la-timediff.Tpo -c -o libcurl_la-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-timediff.Tpo $(DEPDIR)/libcurl_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='timediff.c' object='libcurl_la-timediff.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-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+
 libcurl_la-timeval.lo: timeval.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-timeval.lo -MD -MP -MF $(DEPDIR)/libcurl_la-timeval.Tpo -c -o libcurl_la-timeval.lo `test -f 'timeval.c' || echo '$(srcdir)/'`timeval.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-timeval.Tpo $(DEPDIR)/libcurl_la-timeval.Plo
@@ -2807,12 +2905,12 @@ libcurl_la-wildcard.lo: wildcard.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-wildcard.lo `test -f 'wildcard.c' || echo '$(srcdir)/'`wildcard.c
 
-libcurl_la-x509asn1.lo: x509asn1.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-x509asn1.lo -MD -MP -MF $(DEPDIR)/libcurl_la-x509asn1.Tpo -c -o libcurl_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-x509asn1.Tpo $(DEPDIR)/libcurl_la-x509asn1.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='x509asn1.c' object='libcurl_la-x509asn1.lo' libtool=yes @AMDEPBACKSLASH@
+libcurl_la-ws.lo: ws.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-ws.lo -MD -MP -MF $(DEPDIR)/libcurl_la-ws.Tpo -c -o libcurl_la-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurl_la-ws.Tpo $(DEPDIR)/libcurl_la-ws.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ws.c' object='libcurl_la-ws.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-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
+@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-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
 
 vauth/libcurl_la-cleartext.lo: vauth/cleartext.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 vauth/libcurl_la-cleartext.lo -MD -MP -MF vauth/$(DEPDIR)/libcurl_la-cleartext.Tpo -c -o vauth/libcurl_la-cleartext.lo `test -f 'vauth/cleartext.c' || echo '$(srcdir)/'`vauth/cleartext.c
@@ -2926,6 +3024,13 @@ vtls/libcurl_la-gtls.lo: vtls/gtls.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 vtls/libcurl_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
 
+vtls/libcurl_la-hostcheck.lo: vtls/hostcheck.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 vtls/libcurl_la-hostcheck.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-hostcheck.Tpo -c -o vtls/libcurl_la-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-hostcheck.Tpo vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/hostcheck.c' object='vtls/libcurl_la-hostcheck.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 vtls/libcurl_la-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+
 vtls/libcurl_la-keylog.lo: vtls/keylog.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 vtls/libcurl_la-keylog.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-keylog.Tpo -c -o vtls/libcurl_la-keylog.lo `test -f 'vtls/keylog.c' || echo '$(srcdir)/'`vtls/keylog.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-keylog.Tpo vtls/$(DEPDIR)/libcurl_la-keylog.Plo
@@ -2947,13 +3052,6 @@ vtls/libcurl_la-mbedtls_threadlock.lo: vtls/mbedtls_threadlock.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 vtls/libcurl_la-mbedtls_threadlock.lo `test -f 'vtls/mbedtls_threadlock.c' || echo '$(srcdir)/'`vtls/mbedtls_threadlock.c
 
-vtls/libcurl_la-mesalink.lo: vtls/mesalink.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 vtls/libcurl_la-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo -c -o vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-mesalink.Tpo vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurl_la-mesalink.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 vtls/libcurl_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
-
 vtls/libcurl_la-nss.lo: vtls/nss.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 vtls/libcurl_la-nss.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-nss.Tpo -c -o vtls/libcurl_la-nss.lo `test -f 'vtls/nss.c' || echo '$(srcdir)/'`vtls/nss.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-nss.Tpo vtls/$(DEPDIR)/libcurl_la-nss.Plo
@@ -3010,6 +3108,20 @@ vtls/libcurl_la-wolfssl.lo: vtls/wolfssl.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 vtls/libcurl_la-wolfssl.lo `test -f 'vtls/wolfssl.c' || echo '$(srcdir)/'`vtls/wolfssl.c
 
+vtls/libcurl_la-x509asn1.lo: vtls/x509asn1.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 vtls/libcurl_la-x509asn1.lo -MD -MP -MF vtls/$(DEPDIR)/libcurl_la-x509asn1.Tpo -c -o vtls/libcurl_la-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurl_la-x509asn1.Tpo vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/x509asn1.c' object='vtls/libcurl_la-x509asn1.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 vtls/libcurl_la-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+
+vquic/libcurl_la-msh3.lo: vquic/msh3.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 vquic/libcurl_la-msh3.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-msh3.Tpo -c -o vquic/libcurl_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-msh3.Tpo vquic/$(DEPDIR)/libcurl_la-msh3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vquic/msh3.c' object='vquic/libcurl_la-msh3.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 vquic/libcurl_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+
 vquic/libcurl_la-ngtcp2.lo: vquic/ngtcp2.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 vquic/libcurl_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo -c -o vquic/libcurl_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurl_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
@@ -3136,13 +3248,6 @@ libcurlu_la-curl_addrinfo.lo: curl_addrinfo.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-curl_addrinfo.lo `test -f 'curl_addrinfo.c' || echo '$(srcdir)/'`curl_addrinfo.c
 
-libcurlu_la-curl_ctype.lo: curl_ctype.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-curl_ctype.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_ctype.Tpo -c -o libcurlu_la-curl_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_ctype.Tpo $(DEPDIR)/libcurlu_la-curl_ctype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='curl_ctype.c' object='libcurlu_la-curl_ctype.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-curl_ctype.lo `test -f 'curl_ctype.c' || echo '$(srcdir)/'`curl_ctype.c
-
 libcurlu_la-curl_des.lo: curl_des.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-curl_des.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-curl_des.Tpo -c -o libcurlu_la-curl_des.lo `test -f 'curl_des.c' || echo '$(srcdir)/'`curl_des.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-curl_des.Tpo $(DEPDIR)/libcurlu_la-curl_des.Plo
@@ -3269,13 +3374,6 @@ libcurlu_la-doh.lo: doh.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-doh.lo `test -f 'doh.c' || echo '$(srcdir)/'`doh.c
 
-libcurlu_la-dotdot.lo: dotdot.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-dotdot.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-dotdot.Tpo -c -o libcurlu_la-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-dotdot.Tpo $(DEPDIR)/libcurlu_la-dotdot.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='dotdot.c' object='libcurlu_la-dotdot.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-dotdot.lo `test -f 'dotdot.c' || echo '$(srcdir)/'`dotdot.c
-
 libcurlu_la-dynbuf.lo: dynbuf.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-dynbuf.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-dynbuf.Tpo -c -o libcurlu_la-dynbuf.lo `test -f 'dynbuf.c' || echo '$(srcdir)/'`dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-dynbuf.Tpo $(DEPDIR)/libcurlu_la-dynbuf.Plo
@@ -3325,6 +3423,13 @@ libcurlu_la-fileinfo.lo: fileinfo.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-fileinfo.lo `test -f 'fileinfo.c' || echo '$(srcdir)/'`fileinfo.c
 
+libcurlu_la-fopen.lo: fopen.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-fopen.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-fopen.Tpo -c -o libcurlu_la-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-fopen.Tpo $(DEPDIR)/libcurlu_la-fopen.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='fopen.c' object='libcurlu_la-fopen.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-fopen.lo `test -f 'fopen.c' || echo '$(srcdir)/'`fopen.c
+
 libcurlu_la-formdata.lo: formdata.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-formdata.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-formdata.Tpo -c -o libcurlu_la-formdata.lo `test -f 'formdata.c' || echo '$(srcdir)/'`formdata.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-formdata.Tpo $(DEPDIR)/libcurlu_la-formdata.Plo
@@ -3367,6 +3472,13 @@ libcurlu_la-gopher.lo: gopher.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-gopher.lo `test -f 'gopher.c' || echo '$(srcdir)/'`gopher.c
 
+libcurlu_la-h2h3.lo: h2h3.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-h2h3.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-h2h3.Tpo -c -o libcurlu_la-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-h2h3.Tpo $(DEPDIR)/libcurlu_la-h2h3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='h2h3.c' object='libcurlu_la-h2h3.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-h2h3.lo `test -f 'h2h3.c' || echo '$(srcdir)/'`h2h3.c
+
 libcurlu_la-hash.lo: hash.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-hash.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hash.Tpo -c -o libcurlu_la-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hash.Tpo $(DEPDIR)/libcurlu_la-hash.Plo
@@ -3374,6 +3486,13 @@ libcurlu_la-hash.lo: hash.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-hash.lo `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
 
+libcurlu_la-headers.lo: headers.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-headers.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-headers.Tpo -c -o libcurlu_la-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-headers.Tpo $(DEPDIR)/libcurlu_la-headers.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='headers.c' object='libcurlu_la-headers.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-headers.lo `test -f 'headers.c' || echo '$(srcdir)/'`headers.c
+
 libcurlu_la-hmac.lo: hmac.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-hmac.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hmac.Tpo -c -o libcurlu_la-hmac.lo `test -f 'hmac.c' || echo '$(srcdir)/'`hmac.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hmac.Tpo $(DEPDIR)/libcurlu_la-hmac.Plo
@@ -3388,13 +3507,6 @@ libcurlu_la-hostasyn.lo: hostasyn.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-hostasyn.lo `test -f 'hostasyn.c' || echo '$(srcdir)/'`hostasyn.c
 
-libcurlu_la-hostcheck.lo: hostcheck.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-hostcheck.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hostcheck.Tpo -c -o libcurlu_la-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hostcheck.Tpo $(DEPDIR)/libcurlu_la-hostcheck.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='hostcheck.c' object='libcurlu_la-hostcheck.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-hostcheck.lo `test -f 'hostcheck.c' || echo '$(srcdir)/'`hostcheck.c
-
 libcurlu_la-hostip.lo: hostip.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-hostip.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-hostip.Tpo -c -o libcurlu_la-hostip.lo `test -f 'hostip.c' || echo '$(srcdir)/'`hostip.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-hostip.Tpo $(DEPDIR)/libcurlu_la-hostip.Plo
@@ -3598,13 +3710,6 @@ libcurlu_la-netrc.lo: netrc.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-netrc.lo `test -f 'netrc.c' || echo '$(srcdir)/'`netrc.c
 
-libcurlu_la-non-ascii.lo: non-ascii.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-non-ascii.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-non-ascii.Tpo -c -o libcurlu_la-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-non-ascii.Tpo $(DEPDIR)/libcurlu_la-non-ascii.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='non-ascii.c' object='libcurlu_la-non-ascii.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-non-ascii.lo `test -f 'non-ascii.c' || echo '$(srcdir)/'`non-ascii.c
-
 libcurlu_la-nonblock.lo: nonblock.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-nonblock.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-nonblock.Tpo -c -o libcurlu_la-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-nonblock.Tpo $(DEPDIR)/libcurlu_la-nonblock.Plo
@@ -3612,6 +3717,13 @@ libcurlu_la-nonblock.lo: nonblock.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-nonblock.lo `test -f 'nonblock.c' || echo '$(srcdir)/'`nonblock.c
 
+libcurlu_la-noproxy.lo: noproxy.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-noproxy.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-noproxy.Tpo -c -o libcurlu_la-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-noproxy.Tpo $(DEPDIR)/libcurlu_la-noproxy.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='noproxy.c' object='libcurlu_la-noproxy.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-noproxy.lo `test -f 'noproxy.c' || echo '$(srcdir)/'`noproxy.c
+
 libcurlu_la-openldap.lo: openldap.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-openldap.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-openldap.Tpo -c -o libcurlu_la-openldap.lo `test -f 'openldap.c' || echo '$(srcdir)/'`openldap.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-openldap.Tpo $(DEPDIR)/libcurlu_la-openldap.Plo
@@ -3829,6 +3941,13 @@ libcurlu_la-tftp.lo: tftp.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-tftp.lo `test -f 'tftp.c' || echo '$(srcdir)/'`tftp.c
 
+libcurlu_la-timediff.lo: timediff.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-timediff.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-timediff.Tpo -c -o libcurlu_la-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-timediff.Tpo $(DEPDIR)/libcurlu_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='timediff.c' object='libcurlu_la-timediff.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-timediff.lo `test -f 'timediff.c' || echo '$(srcdir)/'`timediff.c
+
 libcurlu_la-timeval.lo: timeval.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-timeval.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-timeval.Tpo -c -o libcurlu_la-timeval.lo `test -f 'timeval.c' || echo '$(srcdir)/'`timeval.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-timeval.Tpo $(DEPDIR)/libcurlu_la-timeval.Plo
@@ -3885,12 +4004,12 @@ libcurlu_la-wildcard.lo: wildcard.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-wildcard.lo `test -f 'wildcard.c' || echo '$(srcdir)/'`wildcard.c
 
-libcurlu_la-x509asn1.lo: x509asn1.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-x509asn1.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-x509asn1.Tpo -c -o libcurlu_la-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-x509asn1.Tpo $(DEPDIR)/libcurlu_la-x509asn1.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='x509asn1.c' object='libcurlu_la-x509asn1.lo' libtool=yes @AMDEPBACKSLASH@
+libcurlu_la-ws.lo: ws.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-ws.lo -MD -MP -MF $(DEPDIR)/libcurlu_la-ws.Tpo -c -o libcurlu_la-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurlu_la-ws.Tpo $(DEPDIR)/libcurlu_la-ws.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='ws.c' object='libcurlu_la-ws.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-x509asn1.lo `test -f 'x509asn1.c' || echo '$(srcdir)/'`x509asn1.c
+@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-ws.lo `test -f 'ws.c' || echo '$(srcdir)/'`ws.c
 
 vauth/libcurlu_la-cleartext.lo: vauth/cleartext.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 vauth/libcurlu_la-cleartext.lo -MD -MP -MF vauth/$(DEPDIR)/libcurlu_la-cleartext.Tpo -c -o vauth/libcurlu_la-cleartext.lo `test -f 'vauth/cleartext.c' || echo '$(srcdir)/'`vauth/cleartext.c
@@ -4004,6 +4123,13 @@ vtls/libcurlu_la-gtls.lo: vtls/gtls.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 vtls/libcurlu_la-gtls.lo `test -f 'vtls/gtls.c' || echo '$(srcdir)/'`vtls/gtls.c
 
+vtls/libcurlu_la-hostcheck.lo: vtls/hostcheck.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 vtls/libcurlu_la-hostcheck.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-hostcheck.Tpo -c -o vtls/libcurlu_la-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-hostcheck.Tpo vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/hostcheck.c' object='vtls/libcurlu_la-hostcheck.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 vtls/libcurlu_la-hostcheck.lo `test -f 'vtls/hostcheck.c' || echo '$(srcdir)/'`vtls/hostcheck.c
+
 vtls/libcurlu_la-keylog.lo: vtls/keylog.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 vtls/libcurlu_la-keylog.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-keylog.Tpo -c -o vtls/libcurlu_la-keylog.lo `test -f 'vtls/keylog.c' || echo '$(srcdir)/'`vtls/keylog.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-keylog.Tpo vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
@@ -4025,13 +4151,6 @@ vtls/libcurlu_la-mbedtls_threadlock.lo: vtls/mbedtls_threadlock.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 vtls/libcurlu_la-mbedtls_threadlock.lo `test -f 'vtls/mbedtls_threadlock.c' || echo '$(srcdir)/'`vtls/mbedtls_threadlock.c
 
-vtls/libcurlu_la-mesalink.lo: vtls/mesalink.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 vtls/libcurlu_la-mesalink.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo -c -o vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-mesalink.Tpo vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/mesalink.c' object='vtls/libcurlu_la-mesalink.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 vtls/libcurlu_la-mesalink.lo `test -f 'vtls/mesalink.c' || echo '$(srcdir)/'`vtls/mesalink.c
-
 vtls/libcurlu_la-nss.lo: vtls/nss.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 vtls/libcurlu_la-nss.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-nss.Tpo -c -o vtls/libcurlu_la-nss.lo `test -f 'vtls/nss.c' || echo '$(srcdir)/'`vtls/nss.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-nss.Tpo vtls/$(DEPDIR)/libcurlu_la-nss.Plo
@@ -4088,6 +4207,20 @@ vtls/libcurlu_la-wolfssl.lo: vtls/wolfssl.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 vtls/libcurlu_la-wolfssl.lo `test -f 'vtls/wolfssl.c' || echo '$(srcdir)/'`vtls/wolfssl.c
 
+vtls/libcurlu_la-x509asn1.lo: vtls/x509asn1.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 vtls/libcurlu_la-x509asn1.lo -MD -MP -MF vtls/$(DEPDIR)/libcurlu_la-x509asn1.Tpo -c -o vtls/libcurlu_la-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vtls/$(DEPDIR)/libcurlu_la-x509asn1.Tpo vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vtls/x509asn1.c' object='vtls/libcurlu_la-x509asn1.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 vtls/libcurlu_la-x509asn1.lo `test -f 'vtls/x509asn1.c' || echo '$(srcdir)/'`vtls/x509asn1.c
+
+vquic/libcurlu_la-msh3.lo: vquic/msh3.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 vquic/libcurlu_la-msh3.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-msh3.Tpo -c -o vquic/libcurlu_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-msh3.Tpo vquic/$(DEPDIR)/libcurlu_la-msh3.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='vquic/msh3.c' object='vquic/libcurlu_la-msh3.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 vquic/libcurlu_la-msh3.lo `test -f 'vquic/msh3.c' || echo '$(srcdir)/'`vquic/msh3.c
+
 vquic/libcurlu_la-ngtcp2.lo: vquic/ngtcp2.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 vquic/libcurlu_la-ngtcp2.lo -MD -MP -MF vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo -c -o vquic/libcurlu_la-ngtcp2.lo `test -f 'vquic/ngtcp2.c' || echo '$(srcdir)/'`vquic/ngtcp2.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Tpo vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
@@ -4288,7 +4421,6 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo
@@ -4307,7 +4439,6 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurl_la-curl_threads.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-dict.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-doh.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-dotdot.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-dynbuf.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-easy.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-easygetopt.Plo
@@ -4315,16 +4446,18 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurl_la-escape.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-file.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-fileinfo.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-fopen.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-formdata.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-ftp.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-ftplistparser.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-getenv.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-getinfo.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-gopher.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-h2h3.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hash.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-headers.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hmac.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostasyn.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-hostcheck.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostip.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostip4.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostip6.Plo
@@ -4354,8 +4487,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurl_la-mqtt.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-noproxy.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo
@@ -4387,6 +4520,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurl_la-system_win32.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-telnet.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-tftp.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-timediff.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-timeval.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-transfer.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-url.Plo
@@ -4395,7 +4529,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurl_la-version_win32.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-warnless.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-wildcard.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-x509asn1.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-ws.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-altsvc.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-amigaos.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-asyn-ares.Plo
@@ -4408,7 +4542,6 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo
@@ -4427,7 +4560,6 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_threads.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-dict.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-doh.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-dotdot.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-dynbuf.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-easy.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-easygetopt.Plo
@@ -4435,16 +4567,18 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-escape.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-file.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-fileinfo.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-fopen.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-formdata.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-ftp.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-ftplistparser.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-getenv.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-getinfo.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-gopher.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-h2h3.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hash.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-headers.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hmac.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostasyn.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-hostcheck.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostip.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostip4.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostip6.Plo
@@ -4474,8 +4608,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-mqtt.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-noproxy.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo
@@ -4507,6 +4641,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-system_win32.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-telnet.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-tftp.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-timediff.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-timeval.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-transfer.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-url.Plo
@@ -4515,7 +4650,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-version_win32.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-ws.Plo
        -rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
        -rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
        -rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
@@ -4542,9 +4677,11 @@ distclean: distclean-am
        -rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
        -rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
        -rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
+       -rm -f vquic/$(DEPDIR)/libcurl_la-msh3.Plo
        -rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
        -rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
        -rm -f vquic/$(DEPDIR)/libcurl_la-vquic.Plo
+       -rm -f vquic/$(DEPDIR)/libcurlu_la-msh3.Plo
        -rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
        -rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
        -rm -f vquic/$(DEPDIR)/libcurlu_la-vquic.Plo
@@ -4557,10 +4694,10 @@ distclean: distclean-am
        -rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
+       -rm -f vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
-       -rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo
@@ -4569,13 +4706,14 @@ distclean: distclean-am
        -rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
+       -rm -f vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
+       -rm -f vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
-       -rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
@@ -4584,6 +4722,7 @@ distclean: distclean-am
        -rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
+       -rm -f vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-tags
@@ -4641,7 +4780,6 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurl_la-content_encoding.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-cookie.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_addrinfo.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-curl_ctype.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_des.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_endian.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-curl_fnmatch.Plo
@@ -4660,7 +4798,6 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurl_la-curl_threads.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-dict.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-doh.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-dotdot.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-dynbuf.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-easy.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-easygetopt.Plo
@@ -4668,16 +4805,18 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurl_la-escape.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-file.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-fileinfo.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-fopen.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-formdata.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-ftp.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-ftplistparser.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-getenv.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-getinfo.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-gopher.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-h2h3.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hash.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-headers.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hmac.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostasyn.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-hostcheck.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostip.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostip4.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-hostip6.Plo
@@ -4707,8 +4846,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurl_la-mqtt.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-multi.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-netrc.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-non-ascii.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-nonblock.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-noproxy.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-openldap.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-parsedate.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-pingpong.Plo
@@ -4740,6 +4879,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurl_la-system_win32.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-telnet.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-tftp.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-timediff.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-timeval.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-transfer.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-url.Plo
@@ -4748,7 +4888,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurl_la-version_win32.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-warnless.Plo
        -rm -f ./$(DEPDIR)/libcurl_la-wildcard.Plo
-       -rm -f ./$(DEPDIR)/libcurl_la-x509asn1.Plo
+       -rm -f ./$(DEPDIR)/libcurl_la-ws.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-altsvc.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-amigaos.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-asyn-ares.Plo
@@ -4761,7 +4901,6 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-content_encoding.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-cookie.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_addrinfo.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-curl_ctype.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_des.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_endian.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_fnmatch.Plo
@@ -4780,7 +4919,6 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-curl_threads.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-dict.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-doh.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-dotdot.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-dynbuf.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-easy.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-easygetopt.Plo
@@ -4788,16 +4926,18 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-escape.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-file.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-fileinfo.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-fopen.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-formdata.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-ftp.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-ftplistparser.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-getenv.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-getinfo.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-gopher.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-h2h3.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hash.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-headers.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hmac.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostasyn.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-hostcheck.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostip.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostip4.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-hostip6.Plo
@@ -4827,8 +4967,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-mqtt.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-multi.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-netrc.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-non-ascii.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-nonblock.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-noproxy.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-openldap.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-parsedate.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-pingpong.Plo
@@ -4860,6 +5000,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-system_win32.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-telnet.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-tftp.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-timediff.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-timeval.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-transfer.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-url.Plo
@@ -4868,7 +5009,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/libcurlu_la-version_win32.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-warnless.Plo
        -rm -f ./$(DEPDIR)/libcurlu_la-wildcard.Plo
-       -rm -f ./$(DEPDIR)/libcurlu_la-x509asn1.Plo
+       -rm -f ./$(DEPDIR)/libcurlu_la-ws.Plo
        -rm -f vauth/$(DEPDIR)/libcurl_la-cleartext.Plo
        -rm -f vauth/$(DEPDIR)/libcurl_la-cram.Plo
        -rm -f vauth/$(DEPDIR)/libcurl_la-digest.Plo
@@ -4895,9 +5036,11 @@ maintainer-clean: maintainer-clean-am
        -rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_gssapi.Plo
        -rm -f vauth/$(DEPDIR)/libcurlu_la-spnego_sspi.Plo
        -rm -f vauth/$(DEPDIR)/libcurlu_la-vauth.Plo
+       -rm -f vquic/$(DEPDIR)/libcurl_la-msh3.Plo
        -rm -f vquic/$(DEPDIR)/libcurl_la-ngtcp2.Plo
        -rm -f vquic/$(DEPDIR)/libcurl_la-quiche.Plo
        -rm -f vquic/$(DEPDIR)/libcurl_la-vquic.Plo
+       -rm -f vquic/$(DEPDIR)/libcurlu_la-msh3.Plo
        -rm -f vquic/$(DEPDIR)/libcurlu_la-ngtcp2.Plo
        -rm -f vquic/$(DEPDIR)/libcurlu_la-quiche.Plo
        -rm -f vquic/$(DEPDIR)/libcurlu_la-vquic.Plo
@@ -4910,10 +5053,10 @@ maintainer-clean: maintainer-clean-am
        -rm -f vtls/$(DEPDIR)/libcurl_la-bearssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-gskit.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-gtls.Plo
+       -rm -f vtls/$(DEPDIR)/libcurl_la-hostcheck.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-keylog.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-mbedtls_threadlock.Plo
-       -rm -f vtls/$(DEPDIR)/libcurl_la-mesalink.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-nss.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-openssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-rustls.Plo
@@ -4922,13 +5065,14 @@ maintainer-clean: maintainer-clean-am
        -rm -f vtls/$(DEPDIR)/libcurl_la-sectransp.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-vtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurl_la-wolfssl.Plo
+       -rm -f vtls/$(DEPDIR)/libcurl_la-x509asn1.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-bearssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-gskit.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-gtls.Plo
+       -rm -f vtls/$(DEPDIR)/libcurlu_la-hostcheck.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-keylog.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-mbedtls_threadlock.Plo
-       -rm -f vtls/$(DEPDIR)/libcurlu_la-mesalink.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-nss.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-openssl.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-rustls.Plo
@@ -4937,6 +5081,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f vtls/$(DEPDIR)/libcurlu_la-sectransp.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-vtls.Plo
        -rm -f vtls/$(DEPDIR)/libcurlu_la-wolfssl.Plo
+       -rm -f vtls/$(DEPDIR)/libcurlu_la-x509asn1.Plo
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -4975,10 +5120,12 @@ uninstall-am: uninstall-libLTLIBRARIES
 
 .PRECIOUS: Makefile
 
+@OS_WINDOWS_TRUE@@USE_CPPFLAG_CURL_STATICLIB_FALSE@$(LIB_RCFILES): $(top_srcdir)/include/curl/curlver.h
 
 checksrc:
-       $(CHECKSRC)(@PERL@ $(srcdir)/checksrc.pl -D$(srcdir) -W$(srcdir)/curl_config.h \
-       $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch] $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir)    \
+       -W$(srcdir)/curl_config.h $(srcdir)/*.[ch] $(srcdir)/vauth/*.[ch]   \
+       $(srcdir)/vtls/*.[ch] $(srcdir)/vquic/*.[ch] $(srcdir)/vssh/*.[ch])
 
 # for debug builds, we scan the sources on all regular make invokes
 @CURLDEBUG_TRUE@all-local: checksrc
@@ -4989,6 +5136,10 @@ tidy:
 optiontable:
        perl optiontable.pl < $(top_srcdir)/include/curl/curl.h > easyoptions.c
 
+# Warning is "normal": libtool:   error: ignoring unknown tag RC
+@OS_WINDOWS_TRUE@.rc.lo:
+@OS_WINDOWS_TRUE@      $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include $(RCFLAGS) -i $< -o $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 3e9ddec12c2a680cfd2b4c0d24be6a9f0ecd10d6..b2d2e9e52f6ea1b70cf7008ea10f81ba6ffa14a4 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 LIB_VAUTH_CFILES =      \
@@ -44,10 +46,10 @@ LIB_VTLS_CFILES =           \
   vtls/bearssl.c            \
   vtls/gskit.c              \
   vtls/gtls.c               \
+  vtls/hostcheck.c          \
   vtls/keylog.c             \
   vtls/mbedtls.c            \
   vtls/mbedtls_threadlock.c \
-  vtls/mesalink.c           \
   vtls/nss.c                \
   vtls/openssl.c            \
   vtls/rustls.c             \
@@ -55,30 +57,34 @@ LIB_VTLS_CFILES =           \
   vtls/schannel_verify.c    \
   vtls/sectransp.c          \
   vtls/vtls.c               \
-  vtls/wolfssl.c
+  vtls/wolfssl.c            \
+  vtls/x509asn1.c
 
 LIB_VTLS_HFILES =           \
   vtls/bearssl.h            \
   vtls/gskit.h              \
   vtls/gtls.h               \
+  vtls/hostcheck.h          \
   vtls/keylog.h             \
   vtls/mbedtls.h            \
   vtls/mbedtls_threadlock.h \
-  vtls/mesalink.h           \
   vtls/nssg.h               \
   vtls/openssl.h            \
   vtls/rustls.h             \
   vtls/schannel.h           \
   vtls/sectransp.h          \
   vtls/vtls.h               \
-  vtls/wolfssl.h
+  vtls/wolfssl.h            \
+  vtls/x509asn1.h
 
 LIB_VQUIC_CFILES = \
+  vquic/msh3.c   \
   vquic/ngtcp2.c   \
   vquic/quiche.c   \
   vquic/vquic.c
 
 LIB_VQUIC_HFILES = \
+  vquic/msh3.h   \
   vquic/ngtcp2.h   \
   vquic/quiche.h   \
   vquic/vquic.h
@@ -104,7 +110,6 @@ LIB_CFILES =         \
   content_encoding.c \
   cookie.c           \
   curl_addrinfo.c    \
-  curl_ctype.c       \
   curl_des.c         \
   curl_endian.c      \
   curl_fnmatch.c     \
@@ -123,7 +128,6 @@ LIB_CFILES =         \
   curl_threads.c     \
   dict.c             \
   doh.c              \
-  dotdot.c           \
   dynbuf.c           \
   easy.c             \
   easygetopt.c       \
@@ -131,16 +135,18 @@ LIB_CFILES =         \
   escape.c           \
   file.c             \
   fileinfo.c         \
+  fopen.c            \
   formdata.c         \
   ftp.c              \
   ftplistparser.c    \
   getenv.c           \
   getinfo.c          \
   gopher.c           \
+  h2h3.c             \
   hash.c             \
+  headers.c          \
   hmac.c             \
   hostasyn.c         \
-  hostcheck.c        \
   hostip.c           \
   hostip4.c          \
   hostip6.c          \
@@ -170,8 +176,8 @@ LIB_CFILES =         \
   mqtt.c             \
   multi.c            \
   netrc.c            \
-  non-ascii.c        \
   nonblock.c         \
+  noproxy.c          \
   openldap.c         \
   parsedate.c        \
   pingpong.c         \
@@ -203,6 +209,7 @@ LIB_CFILES =         \
   system_win32.c     \
   telnet.c           \
   tftp.c             \
+  timediff.c         \
   timeval.c          \
   transfer.c         \
   url.c              \
@@ -211,7 +218,7 @@ LIB_CFILES =         \
   version_win32.c    \
   warnless.c         \
   wildcard.c         \
-  x509asn1.c
+  ws.c
 
 LIB_HFILES =         \
   altsvc.h           \
@@ -256,20 +263,23 @@ LIB_HFILES =         \
   curlx.h            \
   dict.h             \
   doh.h              \
-  dotdot.h           \
   dynbuf.h           \
+  easy_lock.h        \
   easyif.h           \
   easyoptions.h      \
   escape.h           \
   file.h             \
   fileinfo.h         \
+  fopen.h            \
   formdata.h         \
+  functypes.h        \
   ftp.h              \
   ftplistparser.h    \
   getinfo.h          \
   gopher.h           \
+  h2h3.h             \
   hash.h             \
-  hostcheck.h        \
+  headers.h          \
   hostip.h           \
   hsts.h             \
   http.h             \
@@ -291,8 +301,8 @@ LIB_HFILES =         \
   multihandle.h      \
   multiif.h          \
   netrc.h            \
-  non-ascii.h        \
   nonblock.h         \
+  noproxy.h          \
   parsedate.h        \
   pingpong.h         \
   pop3.h             \
@@ -324,6 +334,7 @@ LIB_HFILES =         \
   system_win32.h     \
   telnet.h           \
   tftp.h             \
+  timediff.h         \
   timeval.h          \
   transfer.h         \
   url.h              \
@@ -332,7 +343,7 @@ LIB_HFILES =         \
   version_win32.h    \
   warnless.h         \
   wildcard.h         \
-  x509asn1.h
+  ws.h
 
 LIB_RCFILES = libcurl.rc
 
index 2bb208fbe4009ca63864ecdd381cf76daecedc96..b8b56f8c98e1a26b02ef4b383d156e996711b9d6 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
-###########################################################################
+# Makefile for building curl parts with MinGW and optional features.
 #
-## Makefile for building libcurl.a with MingW (GCC-3.2 or later or LLVM/Clang)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1), zstd (1.4.5)
-##
-## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
+# Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
+# Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
 #
-###########################################################################
+# Set component roots via envvar <feature>_PATH. Also available for
+# customization: CC, RC, AR, CPPFLAGS, LDFLAGS, LIBS, CFLAGS, RCFLAGS,
+# ARCH[=custom], CROSSPREFIX, CURL_LDFLAGS_BIN, CURL_LDFLAGS_LIB, CURL_DLL_SUFFIX,
+# and more for individual components (see below).
 
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Zstandard sources.
-ifndef ZSTD_PATH
-ZSTD_PATH = ../../zstd-1.4.5
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libgsasl package.
-ifndef LIBGSASL_PATH
-LIBGSASL_PATH = ../../libgsasl-1.10.0
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-ifndef LDAP_SDK
-LDAP_SDK = c:/novell/ndk/cldapsdk/win32
-endif
-# Edit the path below to point to the base of your nghttp2 package.
-ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-1.0.0
-endif
-# Edit the path below to point to the base of your nghttp3 package.
-ifndef NGHTTP3_PATH
-NGHTTP3_PATH = ../../nghttp3-1.0.0
-endif
-# Edit the path below to point to the base of your ngtcp2 package.
-ifndef NGTCP2_PATH
-NGTCP2_PATH = ../../ngtcp2-1.0.0
-endif
+# This script is reused by 'src' and 'docs/examples' Makefile.m32 scripts.
+# Skip lib-specific parts when called through them.
+ifndef PROOT
+PROOT := ..
 
-PROOT = ..
+CPPFLAGS += -DBUILDING_LIBCURL
 
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
+### Sources and targets
 
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-ifeq ($(CURL_RANLIB),)
-CURL_RANLIB := $(CROSSPREFIX)ranlib
-endif
+# Provides CSOURCES, HHEADERS, LIB_RCFILES
+include Makefile.inc
 
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_DLL) -s
-AR = $(CURL_AR)
-RANLIB = $(CURL_RANLIB)
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O coff
-STRIP   = $(CROSSPREFIX)strip -g
-
-# Set environment var ARCH to your architecture to override autodetection.
-ifndef ARCH
-ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
-ARCH = w64
-else
-ARCH = w32
-endif
-endif
+libcurl_dll_LIBRARY := libcurl$(CURL_DLL_SUFFIX).dll
+libcurl_dll_a_LIBRARY := libcurl.dll.a
+libcurl_a_LIBRARY := libcurl.a
 
-ifeq ($(ARCH),w64)
-CFLAGS  += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS  += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
+TARGETS := $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)
 
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL     = rm -f $1
-RMDIR   = rm -fr $1
-MKDIR   = mkdir -p $1
-COPY    = -cp -afv $1 $2
-#COPYR  = -cp -afr $1/* $2
-COPYR   = -rsync -aC $1/* $2
-TOUCH   = touch $1
-CAT     = cat
-ECHONL  = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL     = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR   = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL     = -del 2>NUL $(subst /,\,$1)
-RMDIR   = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR   = -md 2>NUL $(subst /,\,$1)
-COPY    = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR   = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH   = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT     = type
-ECHONL  = $(ComSpec) /c echo.
+libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CSOURCES))))
+libcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS))
+libcurl_dll_OBJECTS := $(libcurl_a_OBJECTS)
+libcurl_dll_OBJECTS += $(patsubst %.rc,%.res,$(strip $(LIB_RCFILES)))
+vpath %.c vauth vquic vssh vtls
+
+TOCLEAN := $(libcurl_dll_OBJECTS)
+TOVCLEAN := $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY)
+
+### Local rules
+
+# Keep this at the top to act as the default target.
+all: $(TARGETS)
+
+$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
+       @$(call DEL, $@)
+       $(AR) rcs $@ $(libcurl_a_OBJECTS)
+
+$(libcurl_dll_LIBRARY): $(libcurl_dll_OBJECTS)
+       $(CC) $(LDFLAGS) -shared $(CURL_LDFLAGS_LIB) -o $@ $(libcurl_dll_OBJECTS) $(LIBS) \
+         -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY)
 endif
 
-########################################################
-## Nothing more to do below this line!
+CPPFLAGS += -I. -I$(PROOT)/include
+RCFLAGS  += -I$(PROOT)/include
+
+CC := $(CROSSPREFIX)$(CC)
+AR := $(CROSSPREFIX)$(AR)
+RC ?= $(CROSSPREFIX)windres
 
-ifneq ($(findstring -dyn,$(CFG)),)
-DYN = 1
+ifneq ($(ARCH),custom)
+  # Set environment var ARCH to your architecture to override auto-detection.
+  ifndef ARCH
+    ifneq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),)
+      ARCH := w64
+    else
+      ARCH := w32
+    endif
+  endif
+  ifeq ($(ARCH),w64)
+    CFLAGS  += -m64
+    LDFLAGS += -m64
+    RCFLAGS += --target=pe-x86-64
+  else
+    CFLAGS  += -m32
+    LDFLAGS += -m32
+    RCFLAGS += --target=pe-i386
+  endif
 endif
-ifneq ($(findstring -ares,$(CFG)),)
-ARES = 1
+
+### Optional features
+
+ifneq ($(findstring -unicode,$(CFG)),)
+  CPPFLAGS += -DUNICODE -D_UNICODE
+  CURL_LDFLAGS_BIN += -municode
 endif
+
+# CPPFLAGS below are only necessary when building libcurl via 'lib' (see
+# comments below about exceptions). Always include them anyway to match
+# behavior of other build systems.
+
+# Linker options to exclude for shared mode executables.
+_LDFLAGS :=
+_LIBS :=
+
 ifneq ($(findstring -sync,$(CFG)),)
-SYNC = 1
+  CPPFLAGS += -DUSE_SYNC_DNS
+else ifneq ($(findstring -ares,$(CFG)),)
+  LIBCARES_PATH ?= $(PROOT)/../c-ares
+  CPPFLAGS += -DUSE_ARES
+  CPPFLAGS += -I"$(LIBCARES_PATH)/include"
+  _LDFLAGS += -L"$(LIBCARES_PATH)/lib"
+  _LIBS += -lcares
 endif
+
 ifneq ($(findstring -rtmp,$(CFG)),)
-RTMP = 1
-ZLIB = 1
+  LIBRTMP_PATH ?= $(PROOT)/../librtmp
+  CPPFLAGS += -DUSE_LIBRTMP
+  CPPFLAGS += -I"$(LIBRTMP_PATH)"
+  _LDFLAGS += -L"$(LIBRTMP_PATH)/librtmp"
+  _LIBS += -lrtmp -lwinmm
+  ZLIB := 1
 endif
+
 ifneq ($(findstring -ssh2,$(CFG)),)
-SSH2 = 1
-ZLIB = 1
+  LIBSSH2_PATH ?= $(PROOT)/../libssh2
+  CPPFLAGS += -DUSE_LIBSSH2
+  CPPFLAGS += -I"$(LIBSSH2_PATH)/include"
+  _LDFLAGS += -L"$(LIBSSH2_PATH)/lib"
+  _LDFLAGS += -L"$(LIBSSH2_PATH)/win32"
+  _LIBS += -lssh2
+else ifneq ($(findstring -libssh,$(CFG)),)
+  LIBSSH_PATH ?= $(PROOT)/../libssh
+  CPPFLAGS += -DUSE_LIBSSH
+  CPPFLAGS += -I"$(LIBSSH_PATH)/include"
+  _LDFLAGS += -L"$(LIBSSH_PATH)/lib"
+  _LIBS += -lssh
+else ifneq ($(findstring -wolfssh,$(CFG)),)
+  WOLFSSH_PATH ?= $(PROOT)/../wolfssh
+  CPPFLAGS += -DUSE_WOLFSSH
+  CPPFLAGS += -I"$(WOLFSSH_PATH)/include"
+  _LDFLAGS += -L"$(WOLFSSH_PATH)/lib"
+  _LIBS += -lwolfssh
 endif
+
 ifneq ($(findstring -ssl,$(CFG)),)
-SSL = 1
+  OPENSSL_PATH ?= $(PROOT)/../openssl
+  CPPFLAGS += -DUSE_OPENSSL
+  CPPFLAGS += -DCURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG
+  OPENSSL_INCLUDE ?= $(OPENSSL_PATH)/include
+  OPENSSL_LIBPATH ?= $(OPENSSL_PATH)/lib
+  CPPFLAGS += -I"$(OPENSSL_INCLUDE)"
+  _LDFLAGS += -L"$(OPENSSL_LIBPATH)"
+  OPENSSL_LIBS ?= -lssl -lcrypto
+  _LIBS += $(OPENSSL_LIBS)
+
+  ifneq ($(wildcard $(OPENSSL_INCLUDE)/openssl/aead.h),)
+    OPENSSL := boringssl
+  else
+    # including libressl
+    OPENSSL := openssl
+  endif
+
+  ifneq ($(findstring -srp,$(CFG)),)
+    ifneq ($(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h),)
+      # OpenSSL 1.0.1 and later.
+      CPPFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
+    endif
+  endif
+  SSLLIBS += 1
+else ifneq ($(findstring -wolfssl,$(CFG)),)
+  WOLFSSL_PATH ?= $(PROOT)/../zlib
+  CPPFLAGS += -DUSE_WOLFSSL
+  CPPFLAGS += -DSIZEOF_LONG_LONG=8
+  CPPFLAGS += -I"$(WOLFSSL_PATH)/include"
+  _LDFLAGS += -L"$(WOLFSSL_PATH)/lib"
+  _LIBS += -lwolfssl
+  OPENSSL := wolfssl
+  SSLLIBS += 1
+endif
+ifneq ($(findstring -mbedtls,$(CFG)),)
+  MBEDTLS_PATH ?= $(PROOT)/../zlib
+  CPPFLAGS += -DUSE_MBEDTLS
+  CPPFLAGS += -I"$(MBEDTLS_PATH)/include"
+  _LDFLAGS += -L"$(MBEDTLS_PATH)/lib"
+  _LIBS += -lmbedtls -lmbedx509 -lmbedcrypto
+  SSLLIBS += 1
+endif
+ifneq ($(findstring -schannel,$(CFG)),)
+  CPPFLAGS += -DUSE_SCHANNEL
+  SSLLIBS += 1
 endif
-ifneq ($(findstring -srp,$(CFG)),)
-SRP = 1
+
+ifneq ($(findstring -nghttp2,$(CFG)),)
+  NGHTTP2_PATH ?= $(PROOT)/../nghttp2
+  CPPFLAGS += -DUSE_NGHTTP2
+  CPPFLAGS += -I"$(NGHTTP2_PATH)/include"
+  _LDFLAGS += -L"$(NGHTTP2_PATH)/lib"
+  _LIBS += -lnghttp2
+endif
+
+ifeq ($(findstring -nghttp3,$(CFG))$(findstring -ngtcp2,$(CFG)),-nghttp3-ngtcp2)
+  NGHTTP3_PATH ?= $(PROOT)/../nghttp3
+  CPPFLAGS += -DUSE_NGHTTP3
+  CPPFLAGS += -I"$(NGHTTP3_PATH)/include"
+  _LDFLAGS += -L"$(NGHTTP3_PATH)/lib"
+  _LIBS += -lnghttp3
+
+  NGTCP2_PATH ?= $(PROOT)/../ngtcp2
+  CPPFLAGS += -DUSE_NGTCP2
+  CPPFLAGS += -I"$(NGTCP2_PATH)/include"
+  _LDFLAGS += -L"$(NGTCP2_PATH)/lib"
+  ifneq ($(OPENSSL),)
+    NGTCP2_LIBS ?= -lngtcp2_crypto_$(OPENSSL)
+  endif
+  _LIBS += -lngtcp2 $(NGTCP2_LIBS)
 endif
-ifneq ($(findstring -zlib,$(CFG)),)
-ZLIB = 1
+
+ifneq ($(findstring -zlib,$(CFG))$(ZLIB),)
+  ZLIB_PATH ?= $(PROOT)/../zlib
+  # These CPPFLAGS are also required when compiling the curl tool via 'src'.
+  CPPFLAGS += -DHAVE_LIBZ
+  CPPFLAGS += -I"$(ZLIB_PATH)"
+  _LDFLAGS += -L"$(ZLIB_PATH)"
+  _LIBS += -lz
 endif
 ifneq ($(findstring -zstd,$(CFG)),)
-ZSTD = 1
+  ZSTD_PATH ?= $(PROOT)/../zstd
+  CPPFLAGS += -DHAVE_ZSTD
+  CPPFLAGS += -I"$(ZSTD_PATH)/include"
+  _LDFLAGS += -L"$(ZSTD_PATH)/lib"
+  ZSTD_LIBS ?= -lzstd
+  _LIBS += $(ZSTD_LIBS)
 endif
 ifneq ($(findstring -brotli,$(CFG)),)
-BROTLI = 1
+  BROTLI_PATH ?= $(PROOT)/../brotli
+  CPPFLAGS += -DHAVE_BROTLI
+  CPPFLAGS += -I"$(BROTLI_PATH)/include"
+  _LDFLAGS += -L"$(BROTLI_PATH)/lib"
+  BROTLI_LIBS ?= -lbrotlidec -lbrotlicommon
+  _LIBS += $(BROTLI_LIBS)
 endif
 ifneq ($(findstring -gsasl,$(CFG)),)
-GSASL = 1
+  LIBGSASL_PATH ?= $(PROOT)/../gsasl
+  CPPFLAGS += -DUSE_GSASL
+  CPPFLAGS += -I"$(LIBGSASL_PATH)/include"
+  _LDFLAGS += -L"$(LIBGSASL_PATH)/lib"
+  _LIBS += -lgsasl
 endif
+
 ifneq ($(findstring -idn2,$(CFG)),)
-IDN2 = 1
-endif
-ifneq ($(findstring -winidn,$(CFG)),)
-WINIDN = 1
+  LIBIDN2_PATH ?= $(PROOT)/../libidn2
+  CPPFLAGS += -DUSE_LIBIDN2
+  CPPFLAGS += -I"$(LIBIDN2_PATH)/include"
+  _LDFLAGS += -L"$(LIBIDN2_PATH)/lib"
+  _LIBS += -lidn2
+
+ifneq ($(findstring -psl,$(CFG)),)
+  LIBPSL_PATH ?= $(PROOT)/../libpsl
+  CPPFLAGS += -DUSE_LIBPSL
+  CPPFLAGS += -I"$(LIBPSL_PATH)/include"
+  _LDFLAGS += -L"$(LIBPSL_PATH)/lib"
+  _LIBS += -lpsl
+endif
+else ifneq ($(findstring -winidn,$(CFG)),)
+  CPPFLAGS += -DUSE_WIN32_IDN
+  CPPFLAGS += -DWANT_IDN_PROTOTYPES
+  _LIBS += -lnormaliz
 endif
+
 ifneq ($(findstring -sspi,$(CFG)),)
-SSPI = 1
-endif
-ifneq ($(findstring -ldaps,$(CFG)),)
-LDAPS = 1
+  CPPFLAGS += -DUSE_WINDOWS_SSPI
 endif
 ifneq ($(findstring -ipv6,$(CFG)),)
-IPV6 = 1
-endif
-ifneq ($(findstring -schannel,$(CFG))$(findstring -winssl,$(CFG)),)
-SCHANNEL = 1
-SSPI = 1
-endif
-ifneq ($(findstring -nghttp2,$(CFG)),)
-NGHTTP2 = 1
-endif
-ifneq ($(findstring -nghttp3,$(CFG)),)
-NGHTTP3 = 1
+  CPPFLAGS += -DENABLE_IPV6
 endif
-ifneq ($(findstring -ngtcp2,$(CFG)),)
-NGTCP2 = 1
-endif
-ifneq ($(findstring -unicode,$(CFG)),)
-UNICODE = 1
+ifneq ($(findstring -ldaps,$(CFG)),)
+  CPPFLAGS += -DHAVE_LDAP_SSL
 endif
 
-# SSH2 and RTMP require an SSL library; assume OpenSSL if none specified
-ifneq ($(SSH2)$(RTMP),)
-  ifeq ($(SSL)$(SCHANNEL),)
-    SSL = 1
-  endif
+ifeq ($(findstring -lldap,$(LIBS)),)
+  _LIBS += -lwldap32
 endif
+_LIBS += -lws2_32 -lcrypt32 -lbcrypt
 
-INCLUDES = -I. -I../include
-CFLAGS += -DBUILDING_LIBCURL
-ifdef SSL
-  ifdef SCHANNEL
-    CFLAGS += -DCURL_WITH_MULTI_SSL
-  endif
-endif
-ifdef UNICODE
-  CFLAGS += -DUNICODE -D_UNICODE
+ifneq ($(findstring 11,$(subst $() ,,$(SSLLIBS))),)
+  CPPFLAGS += -DCURL_WITH_MULTI_SSL
 endif
 
-ifdef SYNC
-  CFLAGS += -DUSE_SYNC_DNS
-else
-  ifdef ARES
-    INCLUDES += -I"$(LIBCARES_PATH)"
-    CFLAGS += -DUSE_ARES -DCARES_STATICLIB
-    DLL_LIBS += -L"$(LIBCARES_PATH)" -lcares
-    libcurl_dll_DEPENDENCIES = $(LIBCARES_PATH)/libcares.a
-  endif
-endif
-ifdef RTMP
-  INCLUDES += -I"$(LIBRTMP_PATH)"
-  CFLAGS += -DUSE_LIBRTMP
-  DLL_LIBS += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
-endif
-ifdef NGHTTP2
-  INCLUDES += -I"$(NGHTTP2_PATH)/include"
-  CFLAGS += -DUSE_NGHTTP2
-  DLL_LIBS += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
-endif
-ifdef SSH2
-  INCLUDES += -I"$(LIBSSH2_PATH)/include" -I"$(LIBSSH2_PATH)/win32"
-  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
-  DLL_LIBS += -L"$(LIBSSH2_PATH)/win32" -lssh2
-  ifdef SCHANNEL
-    ifndef DYN
-      DLL_LIBS += -lbcrypt -lcrypt32
-    endif
-  endif
-endif
-ifdef SSL
-  ifdef NGHTTP3
-    INCLUDES += -I"$(NGHTTP3_PATH)/include"
-    CFLAGS += -DUSE_NGHTTP3
-    DLL_LIBS += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
-    ifdef NGTCP2
-      INCLUDES += -I"$(NGTCP2_PATH)/include"
-      CFLAGS += -DUSE_NGTCP2
-      DLL_LIBS += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
-    endif
-  endif
-
-  ifndef OPENSSL_INCLUDE
-    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
-      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
-    endif
-    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
-      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
-    endif
-  endif
-  ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
-    $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
-  endif
-  ifndef OPENSSL_LIBPATH
-    ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
-      OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
-      OPENSSL_LIBS = -leay32 -lssl32
-    endif
-    ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
-      OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
-      OPENSSL_LIBS = -lcrypto -lssl
-    endif
-  endif
-  ifndef DYN
-    OPENSSL_LIBS += -lgdi32 -lcrypt32
-  endif
-  INCLUDES += -I"$(OPENSSL_INCLUDE)"
-  CFLAGS += -DUSE_OPENSSL -DHAVE_OPENSSL_PKCS12_H \
-            -DOPENSSL_NO_KRB5
-  DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
-  ifdef SRP
-    ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h"
-      CFLAGS += -DHAVE_OPENSSL_SRP -DUSE_TLS_SRP
-    endif
-  endif
-endif
-ifdef SCHANNEL
-  CFLAGS += -DUSE_SCHANNEL
-  DLL_LIBS += -lcrypt32
+ifndef DYN
+  LDFLAGS += $(_LDFLAGS)
+  LIBS += $(_LIBS)
 endif
-ifdef ZLIB
-  INCLUDES += -I"$(ZLIB_PATH)"
-  CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
-  DLL_LIBS += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef ZSTD
-  INCLUDES += -I"$(ZSTD_PATH)/include"
-  CFLAGS += -DHAVE_ZSTD
-  DLL_LIBS += -L"$(ZSTD_PATH)/lib"
-  ifdef ZSTD_LIBS
-    DLL_LIBS += $(ZSTD_LIBS)
-  else
-    DLL_LIBS += -lzstd
-  endif
-endif
-ifdef BROTLI
-  INCLUDES += -I"$(BROTLI_PATH)/include"
-  CFLAGS += -DHAVE_BROTLI
-  DLL_LIBS += -L"$(BROTLI_PATH)/lib"
-  ifdef BROTLI_LIBS
-    DLL_LIBS += $(BROTLI_LIBS)
-  else
-    DLL_LIBS += -lbrotlidec
-  endif
-endif
-ifdef GSASL
-  INCLUDES += -I"$(LIBGSASL_PATH)/include"
-  CFLAGS += -DUSE_GSASL
-  DLL_LIBS += -L"$(LIBGSASL_PATH)/lib" -lgsasl
-endif
-ifdef IDN2
-  INCLUDES += -I"$(LIBIDN2_PATH)/include"
-  CFLAGS += -DUSE_LIBIDN2
-  DLL_LIBS += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
-  CFLAGS += -DUSE_WIN32_IDN
-  CFLAGS += -DWANT_IDN_PROTOTYPES
-  DLL_LIBS += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef SSPI
-  CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef SPNEGO
-  CFLAGS += -DHAVE_SPNEGO
-endif
-ifdef IPV6
-  CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
-  CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
-  INCLUDES += -I"$(LDAP_SDK)/inc"
-  CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
-  DLL_LIBS += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
-  INCLUDES += -I"$(LDAP_SDK)/include"
-  CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
-  DLL_LIBS += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
-  DLL_LIBS += -lwldap32
-endif
-endif
-DLL_LIBS += -lws2_32
 
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
+### Global rules
 
-ifeq ($(CURL_DLL_A_SUFFIX),)
-CURL_DLL_A_SUFFIX := dll
+ifneq ($(findstring /sh,$(SHELL)),)
+DEL  = rm -f $1
+COPY = -cp -afv $1 $2
+else
+DEL  = -del 2>NUL /q /f $(subst /,\,$1)
+COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
 endif
 
-libcurl_dll_LIBRARY = libcurl$(CURL_DLL_SUFFIX).dll
-libcurl_dll_a_LIBRARY = libcurl$(CURL_DLL_A_SUFFIX).a
-libcurl_a_LIBRARY = libcurl.a
-
-libcurl_a_OBJECTS := $(patsubst %.c,%.o,$(strip $(CSOURCES)))
-libcurl_a_DEPENDENCIES := $(strip $(CSOURCES) $(HHEADERS))
-
-RESOURCE = libcurl.res
-
-
-all: $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY)
-
-$(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES)
-       @$(call DEL, $@)
-       $(AR) cru $@ $(libcurl_a_OBJECTS)
-       $(RANLIB) $@
-       $(STRIP) $@
-
-# remove the last line above to keep debug info
-
-$(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENCIES)
-       @$(call DEL, $@)
-       $(CC) $(LDFLAGS) -shared -o $@ \
-         -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY) \
-         $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS)
+all: $(TARGETS)
 
 %.o: %.c
-       $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
+       $(CC) -W -Wall $(CFLAGS) $(CPPFLAGS) -c $<
 
 %.res: %.rc
-       $(RC) $(RCFLAGS) -i $< -o $@
+       $(RC) -O coff $(RCFLAGS) -i $< -o $@
 
 clean:
-       @$(call DEL, $(libcurl_a_OBJECTS) $(RESOURCE))
+       @$(call DEL, $(TOCLEAN))
 
 distclean vclean: clean
-       @$(call DEL, $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY))
-
-$(LIBCARES_PATH)/libcares.a:
-       $(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32
+       @$(call DEL, $(TARGETS) $(TOVCLEAN))
diff --git a/lib/Makefile.netware b/lib/Makefile.netware
deleted file mode 100644 (file)
index 9275212..0000000
+++ /dev/null
@@ -1,725 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2004 - 2015, 2021, Guenter Knauf
-# Copyright (C) 2001 - 2021, 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.
-#
-#***************************************************************************
-
-#################################################################
-#
-## Makefile for building libcurl.nlm (NetWare version - gnu make)
-##
-## Use: make -f Makefile.netware
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.3
-endif
-
-# Edit the path below to point to the base of your nghttp2 package.
-ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-0.6.7
-endif
-
-# Edit the path below to point to the base of your fbopenssl package.
-ifndef FBOPENSSL_PATH
-FBOPENSSL_PATH = ../../fbopenssl-0.4
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET  = libcurl
-VERSION = $(LIBCURL_VERSION)
-COPYR   = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR   = curl libcurl $(LIBCURL_VERSION_STR) ($(LIBARCH)) - https://curl.se
-MTSAFE  = YES
-STACK   = 64000
-SCREEN  = none
-EXPORTF = $(TARGET).imp
-EXPORTS = @$(EXPORTF)
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
-  OPT = -O2
-  OBJDIR = release
-else
-  OPT = -g
-  OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
-  METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
-  # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
-  MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
-  CC = mwccnlm
-else
-  CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP  = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
-  LD = mwldnlm
-  LDFLAGS = -nostdlib $(PRELUDE) $(OBJL) -o $@ -commandfile
-  AR = mwldnlm
-  ARFLAGS = -nostdlib -type library -o
-  LIBEXT  = lib
-  #RANLIB =
-  CFLAGS  += -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
-  CFLAGS  += -relax_pointers
-  #CFLAGS += -w on
-  ifeq ($(LIBARCH),LIBC)
-    ifeq ($(POSIXFL),1)
-      PRELUDE = $(NDK_LIBC)/imports/posixpre.o
-    else
-      PRELUDE = $(NDK_LIBC)/imports/libcpre.o
-    endif
-    CFLAGS += -align 4
-  else
-    # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
-    # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
-    PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
-    # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
-    CFLAGS += -align 1
-  endif
-else
-  LD = nlmconv
-  LDFLAGS = -T
-  AR = ar
-  ARFLAGS = -cq
-  LIBEXT  = a
-  RANLIB  = ranlib
-  CFLAGS  += -m32
-  CFLAGS  += -fno-builtin -fno-strict-aliasing
-  ifeq ($(findstring gcc,$(CC)),gcc)
-    CFLAGS  += -fpcc-struct-return
-  endif
-  CFLAGS  += -Wall # -pedantic
-  ifeq ($(LIBARCH),LIBC)
-    ifeq ($(POSIXFL),1)
-      PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
-    else
-      PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
-    endif
-  else
-    PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
-    # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
-    # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
-    # PRELUDE = $(NDK_ROOT)/pre/prelude.o
-    CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
- endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../include
-CURL_LIB = ../lib
-
-INCLUDES = -I$(CURL_INC) -I$(CURL_LIB)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-ifeq ($(findstring -srp,$(CFG)),-srp)
-ifeq "$(wildcard $(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h)" "$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl/srp.h"
-WITH_SRP = 1
-endif
-endif
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
-WITH_NGHTTP2 = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef WITH_ARES
-  INCLUDES += -I$(LIBCARES_PATH)
-  LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-ifdef WITH_SSH2
-  INCLUDES += -I$(LIBSSH2_PATH)/include
-ifdef LINK_STATIC
-  LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
-else
-  MODULES += libssh2.nlm
-  IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
-endif
-endif
-ifdef WITH_RTMP
-  INCLUDES += -I$(LIBRTMP_PATH)
-  LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
-endif
-ifdef WITH_SSL
-  INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
-  LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
-  LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
-  IMPORTS += GetProcessSwitchCount RunningProcess
-  INSTDEP += ca-bundle.crt
-else
-endif
-ifdef WITH_ZLIB
-  INCLUDES += -I$(ZLIB_PATH)
-  ifdef LINK_STATIC
-    LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
-  else
-    MODULES += libz.nlm
-    IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
-  endif
-endif
-ifdef WITH_IDN
-  INCLUDES += -I$(LIBIDN_PATH)/include
-  LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
-endif
-ifdef WITH_NGHTTP2
-  INCLUDES += -I$(NGHTTP2_PATH)/include
-  LDLIBS += $(NGHTTP2_PATH)/lib/libnghttp2.$(LIBEXT)
-endif
-
-ifeq ($(LIBARCH),LIBC)
-  INCLUDES += -I$(NDK_LIBC)/include
-  # INCLUDES += -I$(NDK_LIBC)/include/nks
-  # INCLUDES += -I$(NDK_LIBC)/include/winsock
-  CFLAGS += -D_POSIX_SOURCE
-else
-  INCLUDES += -I$(NDK_CLIB)/include/nlm
-  # INCLUDES += -I$(NDK_CLIB)/include/nlm/obsolete
-  # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
-  INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
-  XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
-  XDCOPT = -u
-endif
-ifdef XDCOPT
-  XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL  = '
-DS  = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS  = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(notdir $(CSOURCES)))) $(OBJDIR)/nwos.o
-
-OBJL = $(OBJS) $(OBJDIR)/nwlib.o $(LDLIBS)
-
-vpath %.c . vauth vtls
-
-all: lib nlm
-
-nlm: prebuild $(TARGET).nlm
-
-lib: prebuild $(TARGET).$(LIBEXT)
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc curl_config.h
-
-$(OBJDIR)/%.o: %.c
-#      @echo Compiling $<
-       $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
-       @echo Creating $@
-       @$(AWK) -f ../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all $(INSTDEP)
-       @$(CP) $(TARGET).nlm $(INSTDIR)
-       @$(CP) $(TARGET).$(LIBEXT) $(INSTDIR)
-       @$(CP) ../CHANGES $(INSTDIR)
-       @$(CP) ../COPYING $(INSTDIR)
-       @$(CP) ../README $(INSTDIR)
-       @$(CP) ../RELEASE-NOTES $(INSTDIR)
-ifdef WITH_SSL
-       @-$(CP) ca-bundle.crt $(INSTDIR)/ca-bundle.crt
-endif
-
-clean:
-       -$(RM) curl_config.h
-       -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
-       -$(RM) $(TARGET).$(LIBEXT) $(TARGET).nlm $(TARGET).imp
-       -$(RM) certdata.txt ca-bundle.crt
-
-$(OBJDIR) $(INSTDIR):
-       @$(MKDIR) $@
-
-$(TARGET).$(LIBEXT): $(OBJS)
-       @echo Creating $@
-       @-$(RM) $@
-       @$(AR) $(ARFLAGS) $@ $^
-ifdef RANLIB
-       @$(RANLIB) $@
-endif
-
-$(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(OBJL) $(EXPORTF) $(XDCDATA)
-       @echo Linking $@
-       @-$(RM) $@
-       @$(LD) $(LDFLAGS) $<
-
-$(OBJDIR)/%.xdc: Makefile.netware
-       @echo Creating $@
-       @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
-       @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
-       @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
-       @echo $(DL)# All your changes will be lost!!$(DL) >> $@
-       @echo $(DL)#$(DL) >> $@
-       @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
-       @echo $(DL)description "$(DESCR)"$(DL) >> $@
-       @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
-       @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
-       @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
-       @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
-else
-       @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
-       @echo $(DL)debug$(DL) >> $@
-endif
-       @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
-ifdef XDCDATA
-       @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
-       @echo $(DL)flag_on 64$(DL) >> $@
-ifeq ($(LIBARCH),CLIB)
-       @echo $(DL)start _Prelude$(DL) >> $@
-       @echo $(DL)exit _Stop$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
-       @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
-       @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-#      @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
-       @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
-       @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
-       @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
-       @echo $(DL)start POSIX_Start$(DL) >> $@
-       @echo $(DL)exit POSIX_Stop$(DL) >> $@
-       @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
-       @echo $(DL)start _LibCPrelude$(DL) >> $@
-       @echo $(DL)exit _LibCPostlude$(DL) >> $@
-       @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
-       @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
-       @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
-       @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-#      @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
-       @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
-       @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
-       @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
-       @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
-       @echo $(DL)input $(PRELUDE)$(DL) >> $@
-       @echo $(DL)input $(OBJL)$(DL) >> $@
-#ifdef LDLIBS
-#      @echo $(DL)input $(LDLIBS)$(DL) >> $@
-#endif
-       @echo $(DL)output $(TARGET).nlm$(DL) >> $@
-endif
-
-curl_config.h: Makefile.netware
-       @echo Creating $@
-       @echo $(DL)/* $@ for NetWare target.$(DL) > $@
-       @echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
-       @echo $(DL)** All your changes will be lost!!$(DL) >> $@
-       @echo $(DL)*/$(DL) >> $@
-       @echo $(DL)#ifndef NETWARE$(DL) >> $@
-       @echo $(DL)#error This $(notdir $@) is created for NetWare platform!$(DL) >> $@
-       @echo $(DL)#endif$(DL) >> $@
-       @echo $(DL)#define VERSION "$(LIBCURL_VERSION_STR)"$(DL) >> $@
-       @echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/"$(DL) >> $@
-ifeq ($(LIBARCH),CLIB)
-       @echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
-       @echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRICMP 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRNICMP 1$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
-       @echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
-       @echo $(DL)#define SIZEOF_SIZE_T 4$(DL) >> $@
-       @echo $(DL)#define pressanykey PressAnyKeyToContinue$(DL) >> $@
-else
-       @echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
-       @echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
-       @echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
-       @echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRTOLL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG2 void *$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
-       @echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
-       @echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
-       @echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG3 size_t$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
-       @echo $(DL)#define SEND_TYPE_RETV ssize_t$(DL) >> $@
-       @echo $(DL)#define SIZEOF_OFF_T 8$(DL) >> $@
-       @echo $(DL)#define SIZEOF_SIZE_T 8$(DL) >> $@
-       @echo $(DL)#define _LARGEFILE 1$(DL) >> $@
-ifdef ENABLE_IPV6
-       @echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
-       @echo $(DL)#define HAVE_AF_INET6 1$(DL) >> $@
-       @echo $(DL)#define HAVE_PF_INET6 1$(DL) >> $@
-       @echo $(DL)#define HAVE_FREEADDRINFO 1$(DL) >> $@
-       @echo $(DL)#define HAVE_GETADDRINFO 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRUCT_ADDRINFO 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRUCT_IN6_ADDR 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRUCT_SOCKADDR_IN6 1$(DL) >> $@
-       @echo $(DL)#define SIZEOF_STRUCT_IN6_ADDR 16$(DL) >> $@
-endif
-endif
-       @echo $(DL)#define USE_MANUAL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_ERRNO_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_GETHOSTBYNAME 1$(DL) >> $@
-       @echo $(DL)#define HAVE_GETPROTOBYNAME 1$(DL) >> $@
-       @echo $(DL)#define HAVE_GMTIME_R 1$(DL) >> $@
-       @echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
-       @echo $(DL)#define HAVE_IOCTL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_IOCTL_FIONBIO 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LOCALE_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
-       @echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_RECV 1$(DL) >> $@
-       @echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SEND 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SETLOCALE 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
-       @echo $(DL)#define HAVE_STRUCT_TIMEVAL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_IOCTL_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
-       @echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
-       @echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_WRITEV 1$(DL) >> $@
-       @echo $(DL)#define SIZEOF_INT 4$(DL) >> $@
-       @echo $(DL)#define SIZEOF_SHORT 2$(DL) >> $@
-       @echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
-       @echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
-       @echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
-ifdef DISABLE_LDAP
-       @echo $(DL)#define CURL_DISABLE_LDAP 1$(DL) >> $@
-else
-       @echo $(DL)#define CURL_HAS_NOVELL_LDAPSDK 1$(DL) >> $@
-ifndef DISABLE_LDAPS
-       @echo $(DL)#define HAVE_LDAP_SSL 1$(DL) >> $@
-endif
-       @echo $(DL)#define HAVE_LDAP_SSL_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LDAP_URL_PARSE 1$(DL) >> $@
-endif
-ifdef NW_WINSOCK
-       @echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
-else
-       @echo $(DL)#define USE_BSD_SOCKETS 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_SOCKET_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
-endif
-ifdef WITH_ARES
-       @echo $(DL)#define USE_ARES 1$(DL) >> $@
-endif
-ifdef WITH_ZLIB
-       @echo $(DL)#define HAVE_ZLIB_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LIBZ 1$(DL) >> $@
-endif
-ifdef WITH_SSL
-       @echo $(DL)#define USE_OPENSSL 1$(DL) >> $@
-       @echo $(DL)#define HAVE_OPENSSL_X509_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_OPENSSL_SSL_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_OPENSSL_RSA_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_OPENSSL_PEM_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_OPENSSL_ERR_H 1$(DL) >> $@
-       @echo $(DL)#define HAVE_OPENSSL_CRYPTO_H 1$(DL) >> $@
-       @echo $(DL)#define OPENSSL_NO_KRB5 1$(DL) >> $@
-ifdef WITH_SRP
-       @echo $(DL)#define USE_TLS_SRP 1$(DL) >> $@
-endif
-ifdef WITH_SPNEGO
-       @echo $(DL)#define HAVE_SPNEGO 1$(DL) >> $@
-endif
-else
-endif
-ifdef WITH_SSH2
-       @echo $(DL)#define USE_LIBSSH2 1$(DL) >> $@
-       @echo $(DL)#define HAVE_LIBSSH2_H 1$(DL) >> $@
-endif
-ifdef WITH_IDN
-       @echo $(DL)#define HAVE_LIBIDN 1$(DL) >> $@
-       @echo $(DL)#define HAVE_TLD_H 1$(DL) >> $@
-endif
-ifdef WITH_RTMP
-       @echo $(DL)#define USE_LIBRTMP 1$(DL) >> $@
-endif
-ifdef WITH_NGHTTP2
-       @echo $(DL)#define USE_NGHTTP2 1$(DL) >> $@
-endif
-       @echo $(DL)#ifdef __GNUC__$(DL) >> $@
-       @echo $(DL)#define HAVE_VARIADIC_MACROS_GCC 1$(DL) >> $@
-       @echo $(DL)#else$(DL) >> $@
-       @echo $(DL)#define HAVE_VARIADIC_MACROS_C99 1$(DL) >> $@
-       @echo $(DL)#endif$(DL) >> $@
-ifdef CABUNDLE
-       @echo $(DL)#define CURL_CA_BUNDLE "$(CABUNDLE)"$(DL) >> $@
-endif
-
-$(EXPORTF): $(CURL_INC)/curl/curl.h $(CURL_INC)/curl/easy.h $(CURL_INC)/curl/multi.h $(CURL_INC)/curl/mprintf.h
-       @echo Creating $@
-       @$(AWK) -f ../packages/NetWare/get_exp.awk $^ > $@
-
-FORCE: ;
-
-info: $(OBJDIR)/version.inc
-       @echo Configured to build $(TARGET) with these options:
-       @echo libarchitecture: $(LIBARCH)
-       @echo curl version:    $(LIBCURL_VERSION_STR)
-       @echo compiler/linker: $(CC) / $(LD)
-ifdef CABUNDLE
-       @echo ca-bundle path:  $(CABUNDLE)
-endif
-ifdef WITH_SSL
-       @echo SSL support:     enabled (OpenSSL)
-else
-       @echo SSL support:     no
-endif
-ifdef WITH_SRP
-       @echo SRP support:     enabled
-else
-       @echo SRP support:     no
-endif
-ifdef WITH_SSH2
-       @echo SSH2 support:    enabled (libssh2)
-else
-       @echo SSH2 support:    no
-endif
-ifdef WITH_ZLIB
-       @echo zlib support:    enabled
-else
-       @echo zlib support:    no
-endif
-ifdef WITH_NGHTTP2
-       @echo http2 support:   enabled
-else
-       @echo http2 support:   no
-endif
-ifdef WITH_ARES
-       @echo c-ares support:  enabled
-else
-       @echo c-ares support:  no
-endif
-ifdef ENABLE_IPV6
-       @echo IPv6 support:    enabled
-else
-       @echo IPv6 support:    no
-endif
-
-$(LIBCARES_PATH)/libcares.$(LIBEXT):
-       $(MAKE) -C $(LIBCARES_PATH) -f Makefile.netware lib
-
-ca-bundle.crt: mk-ca-bundle.pl
-       @echo Creating $@
-       @-$(PERL) $< -b -n $@
diff --git a/lib/Makefile.vxworks b/lib/Makefile.vxworks
deleted file mode 100644 (file)
index 91f9d61..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, 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.
-#
-###########################################################################
-#*****************************************************************************
-#
-#
-#Filename   : Makefile.vxworks
-#Description: makefile to be used in order to compile libcurl for VxWoorks 6.3.
-#
-#How to use:
-#             1. Adjust environment variables at the file beginning
-#             2. Open the Command Prompt window and change directory ('cd')
-#                into the 'lib' folder
-#             3. Add <CYGWIN>/bin folder to the PATH environment variable
-#                For example type 'set PATH=C:/embedded/cygwin/bin;%PATH%'
-#             4. Build the library by typing 'make -f ./Makefile.vxworks'
-#             As a result the libcurl.a should be created in the 'lib' folder.
-#             To clean package use 'make -f ./Makefile.vxworks clean'
-#Requirements:
-#             1. WinXP machine
-#             2. Full CYGWIN installation (open source) with GNU make version
-#                v3.78 or higher
-#             3. WindRiver Workbench with vxWorks 6.3 (commercial)
-#*****************************************************************************
-
-# ----------------------------------------------------------------------
-# Environment
-# ----------------------------------------------------------------------
-
-export WIND_HOME := C:/embedded/Workbench2.5.0.1
-export WIND_BASE := $(WIND_HOME)/vxworks-6.3
-export WIND_HOST_TYPE := x86-win32
-
-# BUILD_TYE:= <debug>|<release> (build with debugging info or optimized)
-BUILD_TYPE := debug
-USER_CFLAGS:=
-
-# directories where to seek for includes and libraries
-OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8zc-vxWorks6.3/include
-OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8zc-vxWorks6.3
-ZLIB_INC    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/zlib-1.2.8
-ZLIB_LIB    := D:/libraries/zlib/zlib-1.2.8-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib
-ARES_INC    :=
-ARES_LIB    :=
-
-
-# ----------------------------------------------------------------------
-# Compiler
-# ----------------------------------------------------------------------
-
-CC := ccppc
-AR := arppc
-LINK := ccppc
-CFLAGS := -D__GNUC__ -D__ppc__ -msoft-float -fno-builtin -mcpu=604 -mlongcall -DCPU=PPC604 -D_GNU_TOOL -Wall -W -Winline $(USER_CFLAGS)
-LDFLAGS := -nostdlib -Wl,-i -Wl,-X
-INCLUDE_FLAG := -I
-C_DEBUGFLAG := -g
-C_OPTFLAG := -O2
-COMPILE_ONLY_FLAG := -c
-OBJ_EXTENSION := .o
-CC_OBJ_OUTPUT = -o $@
-ARFLAGS := -rc
-LIBS_FLAG := -l
-LIBS_DIRFLAG:= -L
-LD_DEBUGFLAG := $(C_DEBUGFLAG)
-EXECUTE_EXTENSION := .out
-TOOL_CHAIN_BIN := $(WIND_HOME)/gnu/3.4.4-vxworks-6.3/$(WIND_HOST_TYPE)/bin/
-
-# ----------------------------------------------------------------------
-
-# Add -DINET6 if the OS kernel image was built with IPv6 support
-# CFLAGS += -DINET6
-
-# Set up compiler and linker flags for debug or optimization
-ifeq ($(BUILD_TYPE), debug)
-CFLAGS += $(C_DEBUGFLAG)
-LDFLAGS += $(LD_DEBUGFLAG)
-else
-CFLAGS += $(C_OPTFLAG)
-endif
-
-# ----------------------------------------------------------------------
-
-# Main Makefile and possible sub-make files
-MAKEFILES := Makefile.vxworks
-
-# List of external include directories
-#-----
-# IMPORTANT: include OPENSSL directories before system
-#            in order to prevent WindRiver OpenSSL to be used.
-#-----
-INCLUDE_DIRS := ../include $(OPENSSL_INC) $(ZLIB_INC) $(ARES_INC) $(WIND_BASE)/target/h $(WIND_BASE)/target/h/wrn/coreip
-
-# List of external libraries and their directories
-LIBS_LIST := .
-LIB_DIRS  := .
-ifneq ($(OPENSSL_LIB), )
-LIBS_LIST += crypto ssl
-LIB_DIRS  += $(OPENSSL_LIB)
-endif
-ifneq ($(ZLIB_LIB), )
-LIBS_LIST += z
-LIB_DIRS  += $(ZLIB_LIB)
-endif
-ifneq ($(ARES_LIB), )
-LIBS_LIST += ares
-LIB_DIRS  += $(ARES_LIB)
-endif
-
-# Add include and library directories and libraries
-CFLAGS += $(INCLUDE_DIRS:%=$(INCLUDE_FLAG)%)
-LDFLAGS += $(LIB_DIRS:%=$(LIBS_DIRFLAG)%)
-
-# List of targets to make for libs target
-LIBS_TARGET_LIST := libcurl.a
-
-# List of execuatble applications to make in addition to libs for all target
-EXE_TARGET_LIST :=
-
-# Support for echoing rules
-# If ECHORULES variable was set (for example, using 'make' command line)
-#  some shell commands in the rules will be echoed
-ifneq ($(strip $(findstring $(ECHORULES), yes YES 1 true TRUE)),)
-_@_ :=
-else
-_@_ := @
-endif
-
-# Directory to hold compilation intermediate files
-TMP_DIR := tmp
-
-# Get sources and headers to be compiled
-include Makefile.inc
-
-# List of headers
-INCLUDE_FILES := $(HHEADERS)
-INCLUDE_FILES += $(shell find ../include -name \*.h)
-
-# List of sources
-OBJLIST := $(CSOURCES:%.c=$(TMP_DIR)/%$(OBJ_EXTENSION))
-
-
-# ----------------------------------------------------------------------
-
-#### default rule
-# It should be first rule in this file
-.PHONY: default
-default: libcurl.a
-
-#### Compiling C files
-$(TMP_DIR)/%$(OBJ_EXTENSION): %.c $(MAKEFILES)
-       @echo Compiling C file $< $(ECHO_STDOUT)
-       @[ -d $(@D) ] || mkdir -p $(@D)
-       $(_@_) $(TOOL_CHAIN_BIN)$(CC) $(COMPILE_ONLY_FLAG) $(CFLAGS) $< $(CC_OBJ_OUTPUT)
-
-#### Creating library
-$(LIBS_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(OBJLIST)
-       @echo Creating library $@ $(ECHO_STDOUT)
-       $(_@_) [ -d $(@D) ] || mkdir -p $(@D)
-       $(_@_) rm -f $@
-       $(_@_) $(TOOL_CHAIN_BIN)$(AR) $(ARFLAGS) $@ $(filter %$(OBJ_EXTENSION), $^)
-
-#### Creating application
-$(EXE_TARGET_LIST): $(INCLUDE_FILES) $(MAKEFILES) $(LIBS_TARGET_LIST)
-       @echo Creating application $@
-       @[ -d $(@D) ] || mkdir -p $(@D)
-       $(_@_) $(TOOL_CHAIN_BIN)$(LINK) $(CC_OBJ_OUTPUT) $($(@)_EXE_OBJ_LIST) $(LDFLAGS) $($(@)_EXE_LIBS_NEEDED:%=$(LIBS_FLAG)%) $(LIBS_LIST:%=$(LIBS_FLAG)%) $(USER_LIBS_LIST) $(USER_LIBS_LIST)
-
-#### Master Targets
-libs: $(LIBS_TARGET_LIST)
-       @echo All libs made.
-
-all: $(LIBS_TARGET_LIST) $(EXE_TARGET_LIST) $(INCLUDE_TARGET_LIST)
-       @echo All targets made.
-
-# Clean up
-.PHONY: clean
-clean:
-       $(_@_) rm -rf $(TMP_DIR)
-       @echo libcurl was cleaned.
index 36acc3a5ef7f8e1e6e6801a7a1140a242e25f721..7bca840151753192b7fb7ea4ffc86406105b48f1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * The Alt-Svc: header is defined in RFC 7838:
- * https://tools.ietf.org/html/rfc7838
+ * https://datatracker.ietf.org/doc/html/rfc7838
  */
 #include "curl_setup.h"
 
@@ -34,7 +36,7 @@
 #include "parsedate.h"
 #include "sendf.h"
 #include "warnless.h"
-#include "rand.h"
+#include "fopen.h"
 #include "rename.h"
 
 /* The last 3 #include files should be in this order */
 #define MAX_ALTSVC_ALPNLENSTR "10"
 #define MAX_ALTSVC_ALPNLEN 10
 
-#if defined(USE_QUICHE) && !defined(UNITTESTS)
-#define H3VERSION "h3-29"
-#elif defined(USE_NGTCP2) && !defined(UNITTESTS)
-#define H3VERSION "h3-29"
-#else
 #define H3VERSION "h3"
-#endif
 
 static enum alpnid alpn2alpnid(char *name)
 {
@@ -100,12 +96,17 @@ static struct altsvc *altsvc_createid(const char *srchost,
                                       unsigned int dstport)
 {
   struct altsvc *as = calloc(sizeof(struct altsvc), 1);
+  size_t hlen;
   if(!as)
     return NULL;
-
+  hlen = strlen(srchost);
+  DEBUGASSERT(hlen);
   as->src.host = strdup(srchost);
   if(!as->src.host)
     goto error;
+  if(hlen && (srchost[hlen - 1] == '.'))
+    /* strip off trailing any dot */
+    as->src.host[--hlen] = 0;
   as->dst.host = strdup(dsthost);
   if(!as->dst.host)
     goto error;
@@ -177,10 +178,9 @@ static CURLcode altsvc_add(struct altsvcinfo *asi, char *line)
 
 /*
  * Load alt-svc entries from the given file. The text based line-oriented file
- * format is documented here:
- * https://github.com/curl/curl/wiki/QUIC-implementation
+ * format is documented here: https://curl.se/docs/alt-svc.html
  *
- * This function only returns error on major problems that prevents alt-svc
+ * This function only returns error on major problems that prevent alt-svc
  * handling to work completely. It will ignore individual syntactical errors
  * etc.
  */
@@ -264,7 +264,7 @@ struct altsvcinfo *Curl_altsvc_init(void)
 
   /* set default behavior */
   asi->flags = CURLALTSVC_H1
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
     | CURLALTSVC_H2
 #endif
 #ifdef ENABLE_QUIC
@@ -329,8 +329,7 @@ CURLcode Curl_altsvc_save(struct Curl_easy *data,
   struct Curl_llist_element *n;
   CURLcode result = CURLE_OK;
   FILE *out;
-  char *tempstore;
-  unsigned char randsuffix[9];
+  char *tempstore = NULL;
 
   if(!altsvc)
     /* no cache activated */
@@ -344,17 +343,8 @@ CURLcode Curl_altsvc_save(struct Curl_easy *data,
     /* marked as read-only, no file or zero length file name */
     return CURLE_OK;
 
-  if(Curl_rand_hex(data, randsuffix, sizeof(randsuffix)))
-    return CURLE_FAILED_INIT;
-
-  tempstore = aprintf("%s.%s.tmp", file, randsuffix);
-  if(!tempstore)
-    return CURLE_OUT_OF_MEMORY;
-
-  out = fopen(tempstore, FOPEN_WRITETEXT);
-  if(!out)
-    result = CURLE_WRITE_ERROR;
-  else {
+  result = Curl_fopen(data, file, &out, &tempstore);
+  if(!result) {
     fputs("# Your alt-svc cache. https://curl.se/docs/alt-svc.html\n"
           "# This file was generated by libcurl! Edit at your own risk.\n",
           out);
@@ -366,10 +356,10 @@ CURLcode Curl_altsvc_save(struct Curl_easy *data,
         break;
     }
     fclose(out);
-    if(!result && Curl_rename(tempstore, file))
+    if(!result && tempstore && Curl_rename(tempstore, file))
       result = CURLE_WRITE_ERROR;
 
-    if(result)
+    if(result && tempstore)
       unlink(tempstore);
   }
   free(tempstore);
@@ -396,6 +386,22 @@ static CURLcode getalnum(const char **ptr, char *alpnbuf, size_t buflen)
   return CURLE_OK;
 }
 
+/* hostcompare() returns true if 'host' matches 'check'. The first host
+ * argument may have a trailing dot present that will be ignored.
+ */
+static bool hostcompare(const char *host, const char *check)
+{
+  size_t hlen = strlen(host);
+  size_t clen = strlen(check);
+
+  if(hlen && (host[hlen - 1] == '.'))
+    hlen--;
+  if(hlen != clen)
+    /* they can't match if they have different lengths */
+    return FALSE;
+  return strncasecompare(host, check, hlen);
+}
+
 /* altsvc_flush() removes all alternatives for this source origin from the
    list */
 static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
@@ -408,7 +414,7 @@ static void altsvc_flush(struct altsvcinfo *asi, enum alpnid srcalpnid,
     n = e->next;
     if((srcalpnid == as->src.alpnid) &&
        (srcport == as->src.port) &&
-       strcasecompare(srchost, as->src.host)) {
+       hostcompare(srchost, as->src.host)) {
       Curl_llist_remove(&asi->list, e, NULL);
       altsvc_free(as);
     }
@@ -456,6 +462,7 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
   struct altsvc *as;
   unsigned short dstport = srcport; /* the same by default */
   CURLcode result = getalnum(&p, alpnbuf, sizeof(alpnbuf));
+  size_t entries = 0;
 #ifdef CURL_DISABLE_VERBOSE_STRINGS
   (void)data;
 #endif
@@ -466,11 +473,10 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
 
   DEBUGASSERT(asi);
 
-  /* Flush all cached alternatives for this source origin, if any */
-  altsvc_flush(asi, srcalpnid, srchost, srcport);
-
   /* "clear" is a magic keyword */
   if(strcasecompare(alpnbuf, "clear")) {
+    /* Flush cached alternatives for this source origin */
+    altsvc_flush(asi, srcalpnid, srchost, srcport);
     return CURLE_OK;
   }
 
@@ -488,6 +494,7 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
         bool quoted = FALSE;
         time_t maxage = 24 * 3600; /* default is 24 hours */
         bool persist = FALSE;
+        bool valid = TRUE;
         p++;
         if(*p != ':') {
           /* host name starts here */
@@ -497,7 +504,7 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
           len = p - hostp;
           if(!len || (len >= MAX_ALTSVC_HOSTLEN)) {
             infof(data, "Excessive alt-svc host name, ignoring.");
-            dstalpnid = ALPN_none;
+            valid = FALSE;
           }
           else {
             memcpy(namebuf, hostp, len);
@@ -514,10 +521,11 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
           unsigned long port = strtoul(++p, &end_ptr, 10);
           if(port > USHRT_MAX || end_ptr == p || *end_ptr != '\"') {
             infof(data, "Unknown alt-svc port number, ignoring.");
-            dstalpnid = ALPN_none;
+            valid = FALSE;
           }
+          else
+            dstport = curlx_ultous(port);
           p = end_ptr;
-          dstport = curlx_ultous(port);
         }
         if(*p++ != '\"')
           break;
@@ -569,7 +577,12 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
               persist = TRUE;
           }
         }
-        if(dstalpnid) {
+        if(dstalpnid && valid) {
+          if(!entries++)
+            /* Flush cached alternatives for this source origin, if any - when
+               this is the first entry of the line. */
+            altsvc_flush(asi, srcalpnid, srchost, srcport);
+
           as = altsvc_createid(srchost, dsthost,
                                srcalpnid, dstalpnid,
                                srcport, dstport);
@@ -583,10 +596,6 @@ CURLcode Curl_altsvc_parse(struct Curl_easy *data,
                   Curl_alpnid2str(dstalpnid));
           }
         }
-        else {
-          infof(data, "Unknown alt-svc protocol \"%s\", skipping.",
-                alpnbuf);
-        }
       }
       else
         break;
@@ -633,7 +642,7 @@ bool Curl_altsvc_lookup(struct altsvcinfo *asi,
       continue;
     }
     if((as->src.alpnid == srcalpnid) &&
-       strcasecompare(as->src.host, srchost) &&
+       hostcompare(srchost, as->src.host) &&
        (as->src.port == srcport) &&
        (versions & as->dst.alpnid)) {
       /* match */
index 2ab89e7059fb9f4257bde1632bc80361e2041910..2751d272a15ff0cd276d546398267cddab77ffb2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 78bb22c7e2fd26ba9b5b9e937708aa8267148000..e8c2fc02e0108db14acf20e44e167c6c071c0c41 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 __AMIGA__
-#  include "amigaos.h"
-#  if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+
+#include <curl/curl.h>
+
+#include "hostip.h"
+#include "amigaos.h"
+
+#ifdef HAVE_PROTO_BSDSOCKET_H
+#  if defined(__amigaos4__)
+#    include <bsdsocket/socketbasetags.h>
+#  elif !defined(USE_AMISSL)
 #    include <amitcp/socketbasetags.h>
 #  endif
 #  ifdef __libnix__
 #include "curl_memory.h"
 #include "memdebug.h"
 
-#ifdef __AMIGA__
-#if defined(HAVE_PROTO_BSDSOCKET_H) && !defined(USE_AMISSL)
+#ifdef HAVE_PROTO_BSDSOCKET_H
+
+#ifdef __amigaos4__
+/*
+ * AmigaOS 4.x specific code
+ */
+
+/*
+ * hostip4.c - Curl_ipv4_resolve_r() replacement code
+ *
+ * Logic that needs to be considered are the following build cases:
+ * - newlib networking
+ * - clib2 networking
+ * - direct bsdsocket.library networking (usually AmiSSL builds)
+ * Each with the threaded resolver enabled or not.
+ *
+ * With the threaded resolver enabled, try to use gethostbyname_r() where
+ * available, otherwise (re)open bsdsocket.library and fallback to
+ * gethostbyname().
+ */
+
+#include <proto/bsdsocket.h>
+
+static struct SocketIFace *__CurlISocket = NULL;
+static uint32 SocketFeatures = 0;
+
+#define HAVE_BSDSOCKET_GETHOSTBYNAME_R 0x01
+#define HAVE_BSDSOCKET_GETADDRINFO     0x02
+
+CURLcode Curl_amiga_init(void)
+{
+  struct SocketIFace *ISocket;
+  struct Library *base = OpenLibrary("bsdsocket.library", 4);
+
+  if(base) {
+    ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
+    if(ISocket) {
+      ULONG enabled = 0;
+
+      SocketBaseTags(SBTM_SETVAL(SBTC_CAN_SHARE_LIBRARY_BASES), TRUE,
+                     SBTM_GETREF(SBTC_HAVE_GETHOSTADDR_R_API), (ULONG)&enabled,
+                     TAG_DONE);
+
+      if(enabled) {
+        SocketFeatures |= HAVE_BSDSOCKET_GETHOSTBYNAME_R;
+      }
+
+      __CurlISocket = ISocket;
+
+      atexit(Curl_amiga_cleanup);
+
+      return CURLE_OK;
+    }
+    CloseLibrary(base);
+  }
+
+  return CURLE_FAILED_INIT;
+}
+
+void Curl_amiga_cleanup(void)
+{
+  if(__CurlISocket) {
+    struct Library *base = __CurlISocket->Data.LibBase;
+    DropInterface((struct Interface *)__CurlISocket);
+    CloseLibrary(base);
+    __CurlISocket = NULL;
+  }
+}
+
+#ifdef CURLRES_AMIGA
+/*
+ * Because we need to handle the different cases in hostip4.c at run-time,
+ * not at compile-time, based on what was detected in Curl_amiga_init(),
+ * we replace it completely with our own as to not complicate the baseline
+ * code. Assumes malloc/calloc/free are thread safe because Curl_he2ai()
+ * allocates memory also.
+ */
+
+struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
+                                          int port)
+{
+  struct Curl_addrinfo *ai = NULL;
+  struct hostent *h;
+  struct SocketIFace *ISocket = __CurlISocket;
+
+  if(SocketFeatures & HAVE_BSDSOCKET_GETHOSTBYNAME_R) {
+    LONG h_errnop = 0;
+    struct hostent *buf;
+
+    buf = calloc(1, CURL_HOSTENT_SIZE);
+    if(buf) {
+      h = gethostbyname_r((STRPTR)hostname, buf,
+                          (char *)buf + sizeof(struct hostent),
+                          CURL_HOSTENT_SIZE - sizeof(struct hostent),
+                          &h_errnop);
+      if(h) {
+        ai = Curl_he2ai(h, port);
+      }
+      free(buf);
+    }
+  }
+  else {
+    #ifdef CURLRES_THREADED
+    /* gethostbyname() is not thread safe, so we need to reopen bsdsocket
+     * on the thread's context
+     */
+    struct Library *base = OpenLibrary("bsdsocket.library", 4);
+    if(base) {
+      ISocket = (struct SocketIFace *)GetInterface(base, "main", 1, NULL);
+      if(ISocket) {
+        h = gethostbyname((STRPTR)hostname);
+        if(h) {
+          ai = Curl_he2ai(h, port);
+        }
+        DropInterface((struct Interface *)ISocket);
+      }
+      CloseLibrary(base);
+    }
+    #else
+    /* not using threaded resolver - safe to use this as-is */
+    h = gethostbyname(hostname);
+    if(h) {
+      ai = Curl_he2ai(h, port);
+    }
+    #endif
+  }
+
+  return ai;
+}
+#endif /* CURLRES_AMIGA */
+
+#ifdef USE_AMISSL
+int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
+                      fd_set *errorfds, struct timeval *timeout)
+{
+  int r = WaitSelect(nfds, readfds, writefds, errorfds, timeout, 0);
+  /* Ensure Ctrl-C signal is actioned */
+  if((r == -1) && (SOCKERRNO == EINTR))
+    raise(SIGINT);
+  return r;
+}
+#endif /* USE_AMISSL */
+
+#elif !defined(USE_AMISSL) /* __amigaos4__ */
+/*
+ * Amiga OS3 specific code
+ */
+
 struct Library *SocketBase = NULL;
 extern int errno, h_errno;
 
@@ -47,7 +203,7 @@ void __request(const char *msg);
 # define __request(msg)       Printf(msg "\n\a")
 #endif
 
-void Curl_amiga_cleanup()
+void Curl_amiga_cleanup(void)
 {
   if(SocketBase) {
     CloseLibrary(SocketBase);
@@ -55,68 +211,36 @@ void Curl_amiga_cleanup()
   }
 }
 
-bool Curl_amiga_init()
+CURLcode Curl_amiga_init(void)
 {
   if(!SocketBase)
     SocketBase = OpenLibrary("bsdsocket.library", 4);
 
   if(!SocketBase) {
     __request("No TCP/IP Stack running!");
-    return FALSE;
+    return CURLE_FAILED_INIT;
   }
 
   if(SocketBaseTags(SBTM_SETVAL(SBTC_ERRNOPTR(sizeof(errno))), (ULONG) &errno,
                     SBTM_SETVAL(SBTC_LOGTAGPTR), (ULONG) "curl",
                     TAG_DONE)) {
     __request("SocketBaseTags ERROR");
-    return FALSE;
+    return CURLE_FAILED_INIT;
   }
 
 #ifndef __libnix__
   atexit(Curl_amiga_cleanup);
 #endif
 
-  return TRUE;
+  return CURLE_OK;
 }
 
 #ifdef __libnix__
 ADD2EXIT(Curl_amiga_cleanup, -50);
 #endif
 
-#endif /* HAVE_PROTO_BSDSOCKET_H */
+#endif /* !USE_AMISSL */
 
-#ifdef USE_AMISSL
-void Curl_amiga_X509_free(X509 *a)
-{
-  X509_free(a);
-}
-
-/* AmiSSL replaces many functions with macros. Curl requires pointer
- * to some of these functions. Thus, we have to encapsulate these macros.
- */
-
-#include "warnless.h"
-
-int (SHA256_Init)(SHA256_CTX *c)
-{
-  return SHA256_Init(c);
-};
-
-int (SHA256_Update)(SHA256_CTX *c, const void *data, size_t len)
-{
-  return SHA256_Update(c, data, curlx_uztoui(len));
-};
-
-int (SHA256_Final)(unsigned char *md, SHA256_CTX *c)
-{
-  return SHA256_Final(md, c);
-};
-
-void (X509_INFO_free)(X509_INFO *a)
-{
-  X509_INFO_free(a);
-};
+#endif /* HAVE_PROTO_BSDSOCKET_H */
 
-#endif /* USE_AMISSL */
 #endif /* __AMIGA__ */
-
index 02e5bb546a576200df03ae9543e486e05ca7f5d3..9abfb59eac643dcd2797dd89398a157a7c5064d4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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(__AMIGA__) && defined(HAVE_BSDSOCKET_H) && !defined(USE_AMISSL)
+#if defined(__AMIGA__) && defined(HAVE_PROTO_BSDSOCKET_H) && \
+  (!defined(USE_AMISSL) || defined(__amigaos4__))
 
-bool Curl_amiga_init();
-void Curl_amiga_cleanup();
+CURLcode Curl_amiga_init(void);
+void Curl_amiga_cleanup(void);
 
 #else
 
-#define Curl_amiga_init() 1
+#define Curl_amiga_init() CURLE_OK
 #define Curl_amiga_cleanup() Curl_nop_stmt
 
 #endif
 
-#ifdef USE_AMISSL
-#include <openssl/x509v3.h>
-void Curl_amiga_X509_free(X509 *a);
-#endif /* USE_AMISSL */
-
 #endif /* HEADER_CURL_AMIGAOS_H */
 
index cbe31de5a351368adf37d515692e26a63cf02121..523f7f51e7c112d023f61ea186d79d7468787cc7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifndef CURL_DISABLE_TELNET
 /*
index fd0bb6c96a250d3ce9ad574051e006b43204bb99..33edba1395983bf30ebe1528ca9f7e6c5c8d6a72 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -65,6 +67,7 @@
 #include "connect.h"
 #include "select.h"
 #include "progress.h"
+#include "timediff.h"
 
 #  if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) &&   \
   defined(WIN32)
@@ -112,6 +115,7 @@ struct thread_data {
 #ifndef HAVE_CARES_GETADDRINFO
   struct curltime happy_eyeballs_dns_time; /* when this timer started, or 0 */
 #endif
+  char hostname[1];
 };
 
 /* How long we are willing to wait for additional parallel responses after
@@ -249,8 +253,6 @@ void Curl_resolver_kill(struct Curl_easy *data)
  */
 static void destroy_async_data(struct Curl_async *async)
 {
-  free(async->hostname);
-
   if(async->tdata) {
     struct thread_data *res = async->tdata;
     if(res) {
@@ -262,8 +264,6 @@ static void destroy_async_data(struct Curl_async *async)
     }
     async->tdata = NULL;
   }
-
-  async->hostname = NULL;
 }
 
 /*
@@ -290,7 +290,7 @@ int Curl_resolver_getsock(struct Curl_easy *data,
 
   timeout = ares_timeout((ares_channel)data->state.async.resolver, &maxtime,
                          &timebuf);
-  milli = (timeout->tv_sec * 1000) + (timeout->tv_usec/1000);
+  milli = (long)curlx_tvtoms(timeout);
   if(milli == 0)
     milli += 10;
   Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
@@ -305,7 +305,7 @@ int Curl_resolver_getsock(struct Curl_easy *data,
  * 2) wait for the timeout period to check for action on ares' sockets.
  * 3) tell ares to act on all the sockets marked as "with action"
  *
- * return number of sockets it worked on
+ * return number of sockets it worked on, or -1 on error
  */
 
 static int waitperform(struct Curl_easy *data, timediff_t timeout_ms)
@@ -337,8 +337,11 @@ static int waitperform(struct Curl_easy *data, timediff_t timeout_ms)
       break;
   }
 
-  if(num)
+  if(num) {
     nfds = Curl_poll(pfd, num, timeout_ms);
+    if(nfds < 0)
+      return -1;
+  }
   else
     nfds = 0;
 
@@ -375,7 +378,8 @@ CURLcode Curl_resolver_is_resolved(struct Curl_easy *data,
   DEBUGASSERT(dns);
   *dns = NULL;
 
-  waitperform(data, 0);
+  if(waitperform(data, 0) < 0)
+    return CURLE_UNRECOVERABLE_POLL;
 
 #ifndef HAVE_CARES_GETADDRINFO
   /* Now that we've checked for any last minute results above, see if there are
@@ -474,7 +478,8 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data,
     else
       timeout_ms = 1000;
 
-    waitperform(data, timeout_ms);
+    if(waitperform(data, timeout_ms) < 0)
+      return CURLE_UNRECOVERABLE_POLL;
     result = Curl_resolver_is_resolved(data, entry);
 
     if(result || data->state.async.done)
@@ -741,7 +746,7 @@ static void addrinfo_cb(void *arg, int status, int timeouts,
  * Curl_resolver_getaddrinfo() - when using ares
  *
  * Returns name information about the given hostname and port number. If
- * successful, the 'hostent' is returned and the forth argument will point to
+ * successful, the 'hostent' is returned and the fourth argument will point to
  * memory we need to free after use. That memory *MUST* be freed with
  * Curl_freeaddrinfo(), nothing else.
  */
@@ -750,25 +755,18 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
                                                 int port,
                                                 int *waitp)
 {
-  char *bufp;
-
+  struct thread_data *res = NULL;
+  size_t namelen = strlen(hostname);
   *waitp = 0; /* default to synchronous response */
 
-  bufp = strdup(hostname);
-  if(bufp) {
-    struct thread_data *res = NULL;
-    free(data->state.async.hostname);
-    data->state.async.hostname = bufp;
+  res = calloc(sizeof(struct thread_data) + namelen, 1);
+  if(res) {
+    strcpy(res->hostname, hostname);
+    data->state.async.hostname = res->hostname;
     data->state.async.port = port;
     data->state.async.done = FALSE;   /* not done */
     data->state.async.status = 0;     /* clear */
     data->state.async.dns = NULL;     /* clear */
-    res = calloc(sizeof(struct thread_data), 1);
-    if(!res) {
-      free(data->state.async.hostname);
-      data->state.async.hostname = NULL;
-      return NULL;
-    }
     data->state.async.tdata = res;
 
     /* initial status - failed */
@@ -781,13 +779,17 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
       int pf = PF_INET;
       memset(&hints, 0, sizeof(hints));
 #ifdef CURLRES_IPV6
-      if(Curl_ipv6works(data))
+      if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data))
         /* The stack seems to be IPv6-enabled */
         pf = PF_UNSPEC;
 #endif /* CURLRES_IPV6 */
       hints.ai_family = pf;
       hints.ai_socktype = (data->conn->transport == TRNSPRT_TCP)?
         SOCK_STREAM : SOCK_DGRAM;
+      /* Since the service is a numerical one, set the hint flags
+       * accordingly to save a call to getservbyname in inside C-Ares
+       */
+      hints.ai_flags = ARES_AI_NUMERICSERV;
       msnprintf(service, sizeof(service), "%d", port);
       res->num_pending = 1;
       ares_getaddrinfo((ares_channel)data->state.async.resolver, hostname,
@@ -796,7 +798,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
 #else
 
 #ifdef HAVE_CARES_IPV6
-    if(Curl_ipv6works(data)) {
+    if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data)) {
       /* The stack seems to be IPv6-enabled */
       res->num_pending = 2;
 
index 149172ad3d336e0d430c56560d86a57c2dd28a27..8b375eb5ee8924217e191964b61e9a6772ee314f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -262,23 +264,28 @@ int init_thread_sync_data(struct thread_data *td,
   return 1;
 
  err_exit:
-  /* Memory allocation failed */
+#ifndef CURL_DISABLE_SOCKETPAIR
+  if(tsd->sock_pair[0] != CURL_SOCKET_BAD) {
+    sclose(tsd->sock_pair[0]);
+    tsd->sock_pair[0] = CURL_SOCKET_BAD;
+  }
+#endif
   destroy_thread_sync_data(tsd);
   return 0;
 }
 
-static int getaddrinfo_complete(struct Curl_easy *data)
+static CURLcode getaddrinfo_complete(struct Curl_easy *data)
 {
   struct thread_sync_data *tsd = conn_thread_sync_data(data);
-  int rc;
+  CURLcode result;
 
-  rc = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
+  result = Curl_addrinfo_callback(data, tsd->sock_error, tsd->res);
   /* The tsd->res structure has been copied to async.dns and perhaps the DNS
      cache.  Set our copy to NULL so destroy_thread_sync_data doesn't free it.
   */
   tsd->res = NULL;
 
-  return rc;
+  return result;
 }
 
 
@@ -700,7 +707,7 @@ struct Curl_addrinfo *Curl_resolver_getaddrinfo(struct Curl_easy *data,
   *waitp = 0; /* default to synchronous response */
 
 #ifdef CURLRES_IPV6
-  if(Curl_ipv6works(data))
+  if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data))
     /* The stack seems to be IPv6-enabled */
     pf = PF_UNSPEC;
 #endif /* CURLRES_IPV6 */
index 31303958261d79dd2098a019de6605210e2508a5..1aab21aaa748847df0cfbdb5575931dbc386147f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -146,7 +148,7 @@ CURLcode Curl_resolver_wait_resolv(struct Curl_easy *data,
  * Curl_resolver_getaddrinfo() - when using this resolver
  *
  * Returns name information about the given hostname and port number. If
- * successful, the 'hostent' is returned and the forth argument will point to
+ * successful, the 'hostent' is returned and the fourth argument will point to
  * memory we need to free after use. That memory *MUST* be freed with
  * Curl_freeaddrinfo(), nothing else.
  *
index be6f163dc450cefd90596ef7a2d186089aeb25ef..52654c2bc334c16a572758727dc04b20b2f2110c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Base64 encoding/decoding */
@@ -34,7 +36,6 @@
 #include "urldata.h" /* for the Curl_easy definition */
 #include "warnless.h"
 #include "curl_base64.h"
-#include "non-ascii.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "memdebug.h"
 
 /* ---- Base64 Encoding/Decoding Table --- */
+/* Padding character string starts at offset 64. */
 static const char base64[]=
-  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+  "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 
-/* The Base 64 encoding with an URL and filename safe alphabet, RFC 4648
+/* The Base 64 encoding with a URL and filename safe alphabet, RFC 4648
    section 5 */
 static const char base64url[]=
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
@@ -53,25 +55,18 @@ static const char base64url[]=
 static size_t decodeQuantum(unsigned char *dest, const char *src)
 {
   size_t padding = 0;
-  const char *s, *p;
+  const char *s;
   unsigned long i, x = 0;
 
   for(i = 0, s = src; i < 4; i++, s++) {
     if(*s == '=') {
-      x = (x << 6);
+      x <<= 6;
       padding++;
     }
     else {
-      unsigned long v = 0;
-      p = base64;
-
-      while(*p && (*p != *s)) {
-        v++;
-        p++;
-      }
-
-      if(*p == *s)
-        x = (x << 6) + v;
+      const char *p = strchr(base64, *s);
+      if(p)
+        x = (x << 6) + curlx_uztoul(p - base64);
       else
         return 0;
     }
@@ -108,11 +103,11 @@ CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen)
 {
   size_t srclen = 0;
-  size_t length = 0;
   size_t padding = 0;
   size_t i;
   size_t numQuantums;
   size_t rawlen = 0;
+  const char *padptr;
   unsigned char *pos;
   unsigned char *newstr;
 
@@ -125,19 +120,17 @@ CURLcode Curl_base64_decode(const char *src,
     return CURLE_BAD_CONTENT_ENCODING;
 
   /* Find the position of any = padding characters */
-  while((src[length] != '=') && src[length])
-    length++;
-
-  /* A maximum of two = padding characters is allowed */
-  if(src[length] == '=') {
+  padptr = strchr(src, '=');
+  if(padptr) {
     padding++;
-    if(src[length + 1] == '=')
+    /* A maximum of two = padding characters is allowed */
+    if(padptr[1] == '=')
       padding++;
-  }
 
-  /* Check the = padding characters weren't part way through the input */
-  if(length + padding != srclen)
-    return CURLE_BAD_CONTENT_ENCODING;
+    /* Check the = padding characters weren't part way through the input */
+    if(padptr + padding != src + srclen)
+      return CURLE_BAD_CONTENT_ENCODING;
+  }
 
   /* Calculate the number of quantums */
   numQuantums = srclen / 4;
@@ -145,7 +138,7 @@ CURLcode Curl_base64_decode(const char *src,
   /* Calculate the size of the decoded string */
   rawlen = (numQuantums * 3) - padding;
 
-  /* Allocate our buffer including room for a zero terminator */
+  /* Allocate our buffer including room for a null-terminator */
   newstr = malloc(rawlen + 1);
   if(!newstr)
     return CURLE_OUT_OF_MEMORY;
@@ -176,20 +169,17 @@ CURLcode Curl_base64_decode(const char *src,
 }
 
 static CURLcode base64_encode(const char *table64,
-                              struct Curl_easy *data,
                               const char *inputbuff, size_t insize,
                               char **outptr, size_t *outlen)
 {
-  CURLcode result;
   unsigned char ibuf[3];
   unsigned char obuf[4];
   int i;
   int inputparts;
   char *output;
   char *base64data;
-  char *convbuf = NULL;
-
   const char *indata = inputbuff;
+  const char *padstr = &table64[64];    /* Point to padding string. */
 
   *outptr = NULL;
   *outlen = 0;
@@ -206,20 +196,6 @@ static CURLcode base64_encode(const char *table64,
   if(!output)
     return CURLE_OUT_OF_MEMORY;
 
-  /*
-   * The base64 data needs to be created using the network encoding
-   * not the host encoding.  And we can't change the actual input
-   * so we copy it to a buffer, translate it, and use that instead.
-   */
-  result = Curl_convert_clone(data, indata, insize, &convbuf);
-  if(result) {
-    free(output);
-    return result;
-  }
-
-  if(convbuf)
-    indata = (char *)convbuf;
-
   while(insize > 0) {
     for(i = inputparts = 0; i < 3; i++) {
       if(insize > 0) {
@@ -241,27 +217,30 @@ static CURLcode base64_encode(const char *table64,
 
     switch(inputparts) {
     case 1: /* only one byte read */
-      msnprintf(output, 5, "%c%c==",
-                table64[obuf[0]],
-                table64[obuf[1]]);
+      i = msnprintf(output, 5, "%c%c%s%s",
+                    table64[obuf[0]],
+                    table64[obuf[1]],
+                    padstr,
+                    padstr);
       break;
 
     case 2: /* two bytes read */
-      msnprintf(output, 5, "%c%c%c=",
-                table64[obuf[0]],
-                table64[obuf[1]],
-                table64[obuf[2]]);
+      i = msnprintf(output, 5, "%c%c%c%s",
+                    table64[obuf[0]],
+                    table64[obuf[1]],
+                    table64[obuf[2]],
+                    padstr);
       break;
 
     default:
-      msnprintf(output, 5, "%c%c%c%c",
-                table64[obuf[0]],
-                table64[obuf[1]],
-                table64[obuf[2]],
-                table64[obuf[3]]);
+      i = msnprintf(output, 5, "%c%c%c%c",
+                    table64[obuf[0]],
+                    table64[obuf[1]],
+                    table64[obuf[2]],
+                    table64[obuf[3]]);
       break;
     }
-    output += 4;
+    output += i;
   }
 
   /* Zero terminate */
@@ -270,10 +249,8 @@ static CURLcode base64_encode(const char *table64,
   /* Return the pointer to the new data (allocated memory) */
   *outptr = base64data;
 
-  free(convbuf);
-
   /* Return the length of the new data */
-  *outlen = strlen(base64data);
+  *outlen = output - base64data;
 
   return CURLE_OK;
 }
@@ -291,15 +268,12 @@ static CURLcode base64_encode(const char *table64,
  * Returns CURLE_OK on success, otherwise specific error code. Function
  * output shall not be considered valid unless CURLE_OK is returned.
  *
- * When encoded data length is 0, returns NULL in *outptr.
- *
  * @unittest: 1302
  */
-CURLcode Curl_base64_encode(struct Curl_easy *data,
-                            const char *inputbuff, size_t insize,
+CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
                             char **outptr, size_t *outlen)
 {
-  return base64_encode(base64, data, inputbuff, insize, outptr, outlen);
+  return base64_encode(base64, inputbuff, insize, outptr, outlen);
 }
 
 /*
@@ -315,15 +289,12 @@ CURLcode Curl_base64_encode(struct Curl_easy *data,
  * Returns CURLE_OK on success, otherwise specific error code. Function
  * output shall not be considered valid unless CURLE_OK is returned.
  *
- * When encoded data length is 0, returns NULL in *outptr.
- *
  * @unittest: 1302
  */
-CURLcode Curl_base64url_encode(struct Curl_easy *data,
-                               const char *inputbuff, size_t insize,
+CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,
                                char **outptr, size_t *outlen)
 {
-  return base64_encode(base64url, data, inputbuff, insize, outptr, outlen);
+  return base64_encode(base64url, inputbuff, insize, outptr, outlen);
 }
 
 #endif /* no users so disabled */
index b84511e1859c7ce4d395d4cabb49eff34b3efdcd..91b037431d67a79fa3dfb887fb2521aff7022099 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 25f65d894ddb0e1df54b95a30441faa378ee60e9..96b818b537bed5c17456233b8223f5ebbdcacc2d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index c253cd36eda17fac85515cbaeccac5616da34531..86abcdb0fac8f0036b1ec199b7f51e4d1e5fb69f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -52,6 +54,7 @@
 #include "multiif.h"
 #include "progress.h"
 #include "content_encoding.h"
+#include "ws.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -142,7 +145,7 @@ static int hyper_each_header(void *userdata,
       return HYPER_ITER_BREAK;
   }
   else {
-    if(Curl_dyn_add(&data->state.headerb, "\r\n"))
+    if(Curl_dyn_addn(&data->state.headerb, STRCONST("\r\n")))
       return HYPER_ITER_BREAK;
   }
   len = Curl_dyn_len(&data->state.headerb);
@@ -288,15 +291,13 @@ static CURLcode status_line(struct Curl_easy *data,
              len);
 
   if(!data->state.hconnect || !data->set.suppress_connect_headers) {
-    writetype = CLIENTWRITE_HEADER;
+    writetype = CLIENTWRITE_HEADER|CLIENTWRITE_STATUS;
     if(data->set.include_header)
       writetype |= CLIENTWRITE_BODY;
     result = Curl_client_write(data, writetype,
                                Curl_dyn_ptr(&data->state.headerb), len);
-    if(result) {
-      data->state.hresult = CURLE_ABORTED_BY_CALLBACK;
-      return HYPER_ITER_BREAK;
-    }
+    if(result)
+      return result;
   }
   data->info.header_size += (long)len;
   data->req.headerbytecount += (long)len;
@@ -416,7 +417,7 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
     else if(h->endtask == task) {
       /* end of transfer */
       *done = TRUE;
-      infof(data, "hyperstream is done!");
+      infof(data, "hyperstream is done");
       if(!k->bodywrites) {
         /* hyper doesn't always call the body write callback */
         bool stilldone;
@@ -441,6 +442,13 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
     reasonp = hyper_response_reason_phrase(resp);
     reason_len = hyper_response_reason_phrase_len(resp);
 
+    if(http_status == 417 && data->state.expect100header) {
+      infof(data, "Got 417 while waiting for a 100");
+      data->state.disableexpect = TRUE;
+      data->req.newurl = strdup(data->state.url);
+      Curl_done_sending(data, k);
+    }
+
     result = status_line(data, conn,
                          http_status, http_version, reasonp, reason_len);
     if(result)
@@ -464,6 +472,24 @@ CURLcode Curl_hyper_stream(struct Curl_easy *data,
     if(result)
       break;
 
+    k->deductheadercount =
+      (100 <= http_status && 199 >= http_status)?k->headerbytecount:0;
+#ifdef USE_WEBSOCKETS
+    if(k->upgr101 == UPGR101_WS) {
+      if(http_status == 101) {
+        /* verify the response */
+        result = Curl_ws_accept(data);
+        if(result)
+          return result;
+      }
+      else {
+        failf(data, "Expected 101, got %u", k->httpcode);
+        result = CURLE_HTTP_RETURNED_ERROR;
+        break;
+      }
+    }
+#endif
+
     /* Curl_http_auth_act() checks what authentication methods that are
      * available and decides which one (if any) to use. It will set 'newurl'
      * if an auth method was picked. */
@@ -685,9 +711,18 @@ static int uploadstreamed(void *userdata, hyper_context *ctx,
     data->state.hresult = result;
     return HYPER_POLL_ERROR;
   }
-  if(!fillcount)
-    /* done! */
-    *chunk = NULL;
+  if(!fillcount) {
+    if((data->req.keepon & KEEP_SEND_PAUSE) != KEEP_SEND_PAUSE)
+      /* done! */
+      *chunk = NULL;
+    else {
+      /* paused, save a waker */
+      if(data->hyp.send_body_waker)
+        hyper_waker_free(data->hyp.send_body_waker);
+      data->hyp.send_body_waker = hyper_context_waker(ctx);
+      return HYPER_POLL_PENDING;
+    }
+  }
   else {
     hyper_buf *copy = hyper_buf_copy((uint8_t *)data->state.ulbuf, fillcount);
     if(copy)
@@ -806,7 +841,7 @@ static void http1xx_cb(void *arg, struct hyper_response *resp)
   }
 
   if(data->state.hresult)
-    infof(data, "ERROR in 1xx, bail out!");
+    infof(data, "ERROR in 1xx, bail out");
 }
 
 /*
@@ -902,10 +937,13 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
     result = CURLE_OUT_OF_MEMORY;
     goto error;
   }
-  if(conn->negnpn == CURL_HTTP_VERSION_2) {
+  if(conn->alpn == CURL_HTTP_VERSION_2) {
     hyper_clientconn_options_http2(options, 1);
     h2 = TRUE;
   }
+  hyper_clientconn_options_set_preserve_header_case(options, 1);
+  hyper_clientconn_options_set_preserve_header_order(options, 1);
+  hyper_clientconn_options_http1_allow_multiline_headers(options, 1);
 
   hyper_clientconn_options_exec(options, h->exec);
 
@@ -951,6 +989,11 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
       goto error;
     }
   }
+  else {
+    if(!h2 && !data->state.disableexpect) {
+      data->state.expect100header = TRUE;
+    }
+  }
 
   if(hyper_request_set_method(req, (uint8_t *)method, strlen(method))) {
     failf(data, "error setting method");
@@ -990,10 +1033,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
     /* For HTTP/2, we show the Host: header as if we sent it, to make it look
        like for HTTP/1 but it isn't actually sent since :authority is then
        used. */
-    result = Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
-                        strlen(data->state.aptr.host));
-    if(result)
-      goto error;
+    Curl_debug(data, CURLINFO_HEADER_OUT, data->state.aptr.host,
+               strlen(data->state.aptr.host));
   }
 
   if(data->state.aptr.proxyuserpwd) {
@@ -1022,7 +1063,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
       goto error;
   }
 
-  p_accept = Curl_checkheaders(data, "Accept")?NULL:"Accept: */*\r\n";
+  p_accept = Curl_checkheaders(data,
+                               STRCONST("Accept"))?NULL:"Accept: */*\r\n";
   if(p_accept) {
     result = Curl_hyper_header(data, headers, p_accept);
     if(result)
@@ -1034,10 +1076,25 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
       goto error;
   }
 
+#ifndef CURL_DISABLE_ALTSVC
+  if(conn->bits.altused && !Curl_checkheaders(data, STRCONST("Alt-Used"))) {
+    char *altused = aprintf("Alt-Used: %s:%d\r\n",
+                            conn->conn_to_host.name, conn->conn_to_port);
+    if(!altused) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto error;
+    }
+    result = Curl_hyper_header(data, headers, altused);
+    if(result)
+      goto error;
+    free(altused);
+  }
+#endif
+
 #ifndef CURL_DISABLE_PROXY
   if(conn->bits.httpproxy && !conn->bits.tunnel_proxy &&
-     !Curl_checkheaders(data, "Proxy-Connection") &&
-     !Curl_checkProxyheaders(data, conn, "Proxy-Connection")) {
+     !Curl_checkheaders(data, STRCONST("Proxy-Connection")) &&
+     !Curl_checkProxyheaders(data, conn, STRCONST("Proxy-Connection"))) {
     result = Curl_hyper_header(data, headers, "Proxy-Connection: Keep-Alive");
     if(result)
       goto error;
@@ -1045,7 +1102,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
 #endif
 
   Curl_safefree(data->state.aptr.ref);
-  if(data->state.referer && !Curl_checkheaders(data, "Referer")) {
+  if(data->state.referer && !Curl_checkheaders(data, STRCONST("Referer"))) {
     data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
     if(!data->state.aptr.ref)
       result = CURLE_OUT_OF_MEMORY;
@@ -1055,7 +1112,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
       goto error;
   }
 
-  if(!Curl_checkheaders(data, "Accept-Encoding") &&
+  if(!Curl_checkheaders(data, STRCONST("Accept-Encoding")) &&
      data->set.str[STRING_ENCODING]) {
     Curl_safefree(data->state.aptr.accept_encoding);
     data->state.aptr.accept_encoding =
@@ -1085,6 +1142,9 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   if(result)
     goto error;
 
+  if(!result && conn->handler->protocol&(CURLPROTO_WS|CURLPROTO_WSS))
+    result = Curl_ws_request(data, headers);
+
   result = Curl_add_timecondition(data, headers);
   if(result)
     goto error;
@@ -1097,9 +1157,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   if(result)
     goto error;
 
-  result = Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
-  if(result)
-    goto error;
+  Curl_debug(data, CURLINFO_HEADER_OUT, (char *)"\r\n", 2);
 
   data->req.upload_chunky = FALSE;
   sendtask = hyper_clientconn_send(client, req);
index d63defeffec9ffe2aeb99c0a9ceb06984ade81c4..70507ad2a4a81dc2593fccd46cd501074446caed 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
@@ -34,6 +36,7 @@ struct hyptransfer {
   const hyper_executor *exec;
   hyper_task *endtask;
   hyper_waker *exp100_waker;
+  hyper_waker *send_body_waker;
 };
 
 size_t Curl_hyper_recv(void *userp, hyper_context *ctx,
diff --git a/lib/checksrc.pl b/lib/checksrc.pl
deleted file mode 100755 (executable)
index eea1126..0000000
+++ /dev/null
@@ -1,876 +0,0 @@
-#!/usr/bin/env perl
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2011 - 2021, 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.
-#
-###########################################################################
-
-use strict;
-use warnings;
-
-my $max_column = 79;
-my $indent = 2;
-
-my $warnings = 0;
-my $swarnings = 0;
-my $errors = 0;
-my $serrors = 0;
-my $suppressed; # skipped problems
-my $file;
-my $dir=".";
-my $wlist="";
-my @alist;
-my $windows_os = $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys';
-my $verbose;
-my %skiplist;
-
-my %ignore;
-my %ignore_set;
-my %ignore_used;
-my @ignore_line;
-
-my %warnings_extended = (
-    'COPYRIGHTYEAR'    => 'copyright year incorrect',
-    'STRERROR',        => 'strerror() detected',
-    );
-
-my %warnings = (
-    'LONGLINE'         => "Line longer than $max_column",
-    'TABS'             => 'TAB characters not allowed',
-    'TRAILINGSPACE'    => 'Trailing whitespace on the line',
-    'CPPCOMMENTS'      => '// comment detected',
-    'SPACEBEFOREPAREN' => 'space before an open parenthesis',
-    'SPACEAFTERPAREN'  => 'space after open parenthesis',
-    'SPACEBEFORECLOSE' => 'space before a close parenthesis',
-    'SPACEBEFORECOMMA' => 'space before a comma',
-    'RETURNNOSPACE'    => 'return without space',
-    'COMMANOSPACE'     => 'comma without following space',
-    'BRACEELSE'        => '} else on the same line',
-    'PARENBRACE'       => '){ without sufficient space',
-    'SPACESEMICOLON'   => 'space before semicolon',
-    'BANNEDFUNC'       => 'a banned function was used',
-    'FOPENMODE'        => 'fopen needs a macro for the mode string',
-    'BRACEPOS'         => 'wrong position for an open brace',
-    'INDENTATION'      => 'wrong start column for code',
-    'COPYRIGHT'        => 'file missing a copyright statement',
-    'BADCOMMAND'       => 'bad !checksrc! instruction',
-    'UNUSEDIGNORE'     => 'a warning ignore was not used',
-    'OPENCOMMENT'      => 'file ended with a /* comment still "open"',
-    'ASTERISKSPACE'    => 'pointer declared with space after asterisk',
-    'ASTERISKNOSPACE'  => 'pointer declared without space before asterisk',
-    'ASSIGNWITHINCONDITION' => 'assignment within conditional expression',
-    'EQUALSNOSPACE'    => 'equals sign without following space',
-    'NOSPACEEQUALS'    => 'equals sign without preceding space',
-    'SEMINOSPACE'      => 'semicolon without following space',
-    'MULTISPACE'       => 'multiple spaces used when not suitable',
-    'SIZEOFNOPAREN'    => 'use of sizeof without parentheses',
-    'SNPRINTF'         => 'use of snprintf',
-    'ONELINECONDITION' => 'conditional block on the same line as the if()',
-    'TYPEDEFSTRUCT'    => 'typedefed struct',
-    'DOBRACE'          => 'A single space between do and open brace',
-    'BRACEWHILE'       => 'A single space between open brace and while',
-    'EXCLAMATIONSPACE' => 'Whitespace after exclamation mark in expression',
-    'EMPTYLINEBRACE'   => 'Empty line before the open brace',
-    'EQUALSNULL'       => 'if/while comparison with == NULL',
-    'NOTEQUALSZERO',   => 'if/while comparison with != 0',
-    );
-
-sub readskiplist {
-    open(W, "<$dir/checksrc.skip") or return;
-    my @all=<W>;
-    for(@all) {
-        $windows_os ? $_ =~ s/\r?\n$// : chomp;
-        $skiplist{$_}=1;
-    }
-    close(W);
-}
-
-# Reads the .checksrc in $dir for any extended warnings to enable locally.
-# Currently there is no support for disabling warnings from the standard set,
-# and since that's already handled via !checksrc! commands there is probably
-# little use to add it.
-sub readlocalfile {
-    my $i = 0;
-
-    open(my $rcfile, "<", "$dir/.checksrc") or return;
-
-    while(<$rcfile>) {
-        $i++;
-
-        # Lines starting with '#' are considered comments
-        if (/^\s*(#.*)/) {
-            next;
-        }
-        elsif (/^\s*enable ([A-Z]+)$/) {
-            if(!defined($warnings_extended{$1})) {
-                print STDERR "invalid warning specified in .checksrc: \"$1\"\n";
-                next;
-            }
-            $warnings{$1} = $warnings_extended{$1};
-        }
-        elsif (/^\s*disable ([A-Z]+)$/) {
-            if(!defined($warnings{$1})) {
-                print STDERR "invalid warning specified in .checksrc: \"$1\"\n";
-                next;
-            }
-            # Accept-list
-            push @alist, $1;
-        }
-        else {
-            die "Invalid format in $dir/.checksrc on line $i\n";
-        }
-    }
-    close($rcfile);
-}
-
-sub checkwarn {
-    my ($name, $num, $col, $file, $line, $msg, $error) = @_;
-
-    my $w=$error?"error":"warning";
-    my $nowarn=0;
-
-    #if(!$warnings{$name}) {
-    #    print STDERR "Dev! there's no description for $name!\n";
-    #}
-
-    # checksrc.skip
-    if($skiplist{$line}) {
-        $nowarn = 1;
-    }
-    # !checksrc! controlled
-    elsif($ignore{$name}) {
-        $ignore{$name}--;
-        $ignore_used{$name}++;
-        $nowarn = 1;
-        if(!$ignore{$name}) {
-            # reached zero, enable again
-            enable_warn($name, $num, $file, $line);
-        }
-    }
-
-    if($nowarn) {
-        $suppressed++;
-        if($w) {
-            $swarnings++;
-        }
-        else {
-            $serrors++;
-        }
-        return;
-    }
-
-    if($w) {
-        $warnings++;
-    }
-    else {
-        $errors++;
-    }
-
-    $col++;
-    print "$file:$num:$col: $w: $msg ($name)\n";
-    print " $line\n";
-
-    if($col < 80) {
-        my $pref = (' ' x $col);
-        print "${pref}^\n";
-    }
-}
-
-$file = shift @ARGV;
-
-while(defined $file) {
-
-    if($file =~ /-D(.*)/) {
-        $dir = $1;
-        $file = shift @ARGV;
-        next;
-    }
-    elsif($file =~ /-W(.*)/) {
-        $wlist .= " $1 ";
-        $file = shift @ARGV;
-        next;
-    }
-    elsif($file =~ /-A(.+)/) {
-        push @alist, $1;
-        $file = shift @ARGV;
-        next;
-    }
-    elsif($file =~ /-i([1-9])/) {
-        $indent = $1 + 0;
-        $file = shift @ARGV;
-        next;
-    }
-    elsif($file =~ /-m([0-9]+)/) {
-        $max_column = $1 + 0;
-        $file = shift @ARGV;
-        next;
-    }
-    elsif($file =~ /^(-h|--help)/) {
-        undef $file;
-        last;
-    }
-
-    last;
-}
-
-if(!$file) {
-    print "checksrc.pl [option] <file1> [file2] ...\n";
-    print " Options:\n";
-    print "  -A[rule]  Accept this violation, can be used multiple times\n";
-    print "  -D[DIR]   Directory to prepend file names\n";
-    print "  -h        Show help output\n";
-    print "  -W[file]  Skip the given file - ignore all its flaws\n";
-    print "  -i<n>     Indent spaces. Default: 2\n";
-    print "  -m<n>     Maximum line length. Default: 79\n";
-    print "\nDetects and warns for these problems:\n";
-    my @allw = keys %warnings;
-    push @allw, keys %warnings_extended;
-    for my $w (sort @allw) {
-        if($warnings{$w}) {
-            printf (" %-18s: %s\n", $w, $warnings{$w});
-        }
-        else {
-            printf (" %-18s: %s[*]\n", $w, $warnings_extended{$w});
-        }
-    }
-    print " [*] = disabled by default\n";
-    exit;
-}
-
-readskiplist();
-readlocalfile();
-
-do {
-    if("$wlist" !~ / $file /) {
-        my $fullname = $file;
-        $fullname = "$dir/$file" if ($fullname !~ '^\.?\.?/');
-        scanfile($fullname);
-    }
-    $file = shift @ARGV;
-
-} while($file);
-
-sub accept_violations {
-    for my $r (@alist) {
-        if(!$warnings{$r}) {
-            print "'$r' is not a warning to accept!\n";
-            exit;
-        }
-        $ignore{$r}=999999;
-        $ignore_used{$r}=0;
-    }
-}
-
-sub checksrc_clear {
-    undef %ignore;
-    undef %ignore_set;
-    undef @ignore_line;
-}
-
-sub checksrc_endoffile {
-    my ($file) = @_;
-    for(keys %ignore_set) {
-        if($ignore_set{$_} && !$ignore_used{$_}) {
-            checkwarn("UNUSEDIGNORE", $ignore_set{$_},
-                      length($_)+11, $file,
-                      $ignore_line[$ignore_set{$_}],
-                      "Unused ignore: $_");
-        }
-    }
-}
-
-sub enable_warn {
-    my ($what, $line, $file, $l) = @_;
-
-    # switch it back on, but warn if not triggered!
-    if(!$ignore_used{$what}) {
-        checkwarn("UNUSEDIGNORE",
-                  $line, length($what) + 11, $file, $l,
-                  "No warning was inhibited!");
-    }
-    $ignore_set{$what}=0;
-    $ignore_used{$what}=0;
-    $ignore{$what}=0;
-}
-sub checksrc {
-    my ($cmd, $line, $file, $l) = @_;
-    if($cmd =~ / *([^ ]*) *(.*)/) {
-        my ($enable, $what) = ($1, $2);
-        $what =~ s: *\*/$::; # cut off end of C comment
-        # print "ENABLE $enable WHAT $what\n";
-        if($enable eq "disable") {
-            my ($warn, $scope)=($1, $2);
-            if($what =~ /([^ ]*) +(.*)/) {
-                ($warn, $scope)=($1, $2);
-            }
-            else {
-                $warn = $what;
-                $scope = 1;
-            }
-            # print "IGNORE $warn for SCOPE $scope\n";
-            if($scope eq "all") {
-                $scope=999999;
-            }
-
-            # Comparing for a literal zero rather than the scalar value zero
-            # covers the case where $scope contains the ending '*' from the
-            # comment. If we use a scalar comparison (==) we induce warnings
-            # on non-scalar contents.
-            if($scope eq "0") {
-                checkwarn("BADCOMMAND",
-                          $line, 0, $file, $l,
-                          "Disable zero not supported, did you mean to enable?");
-            }
-            elsif($ignore_set{$warn}) {
-                checkwarn("BADCOMMAND",
-                          $line, 0, $file, $l,
-                          "$warn already disabled from line $ignore_set{$warn}");
-            }
-            else {
-                $ignore{$warn}=$scope;
-                $ignore_set{$warn}=$line;
-                $ignore_line[$line]=$l;
-            }
-        }
-        elsif($enable eq "enable") {
-            enable_warn($what, $line, $file, $l);
-        }
-        else {
-            checkwarn("BADCOMMAND",
-                      $line, 0, $file, $l,
-                      "Illegal !checksrc! command");
-        }
-    }
-}
-
-sub nostrings {
-    my ($str) = @_;
-    $str =~ s/\".*\"//g;
-    return $str;
-}
-
-sub scanfile {
-    my ($file) = @_;
-
-    my $line = 1;
-    my $prevl="";
-    my $prevpl="";
-    my $l = "";
-    my $prep = 0;
-    my $prevp = 0;
-    open(R, "<$file") || die "failed to open $file";
-
-    my $incomment=0;
-    my @copyright=();
-    checksrc_clear(); # for file based ignores
-    accept_violations();
-
-    while(<R>) {
-        $windows_os ? $_ =~ s/\r?\n$// : chomp;
-        my $l = $_;
-        my $ol = $l; # keep the unmodified line for error reporting
-        my $column = 0;
-
-        # check for !checksrc! commands
-        if($l =~ /\!checksrc\! (.*)/) {
-            my $cmd = $1;
-            checksrc($cmd, $line, $file, $l)
-        }
-
-        # check for a copyright statement and save the years
-        if($l =~ /\* +copyright .* \d\d\d\d/i) {
-            while($l =~ /([\d]{4})/g) {
-                push @copyright, {
-                  year => $1,
-                  line => $line,
-                  col => index($l, $1),
-                  code => $l
-                };
-            }
-        }
-
-        # detect long lines
-        if(length($l) > $max_column) {
-            checkwarn("LONGLINE", $line, length($l), $file, $l,
-                      "Longer than $max_column columns");
-        }
-        # detect TAB characters
-        if($l =~ /^(.*)\t/) {
-            checkwarn("TABS",
-                      $line, length($1), $file, $l, "Contains TAB character", 1);
-        }
-        # detect trailing whitespace
-        if($l =~ /^(.*)[ \t]+\z/) {
-            checkwarn("TRAILINGSPACE",
-                      $line, length($1), $file, $l, "Trailing whitespace");
-        }
-
-        # ------------------------------------------------------------
-        # Above this marker, the checks were done on lines *including*
-        # comments
-        # ------------------------------------------------------------
-
-        # strip off C89 comments
-
-      comment:
-        if(!$incomment) {
-            if($l =~ s/\/\*.*\*\// /g) {
-                # full /* comments */ were removed!
-            }
-            if($l =~ s/\/\*.*//) {
-                # start of /* comment was removed
-                $incomment = 1;
-            }
-        }
-        else {
-            if($l =~ s/.*\*\///) {
-                # end of comment */ was removed
-                $incomment = 0;
-                goto comment;
-            }
-            else {
-                # still within a comment
-                $l="";
-            }
-        }
-
-        # ------------------------------------------------------------
-        # Below this marker, the checks were done on lines *without*
-        # comments
-        # ------------------------------------------------------------
-
-        # prev line was a preprocessor **and** ended with a backslash
-        if($prep && ($prevpl =~ /\\ *\z/)) {
-            # this is still a preprocessor line
-            $prep = 1;
-            goto preproc;
-        }
-        $prep = 0;
-
-        # crude attempt to detect // comments without too many false
-        # positives
-        if($l =~ /^(([^"\*]*)[^:"]|)\/\//) {
-            checkwarn("CPPCOMMENTS",
-                      $line, length($1), $file, $l, "\/\/ comment");
-        }
-
-        # detect and strip preprocessor directives
-        if($l =~ /^[ \t]*\#/) {
-            # preprocessor line
-            $prep = 1;
-            goto preproc;
-        }
-
-        my $nostr = nostrings($l);
-        # check spaces after for/if/while/function call
-        if($nostr =~ /^(.*)(for|if|while| ([a-zA-Z0-9_]+)) \((.)/) {
-            if($1 =~ / *\#/) {
-                # this is a #if, treat it differently
-            }
-            elsif(defined $3 && $3 eq "return") {
-                # return must have a space
-            }
-            elsif(defined $3 && $3 eq "case") {
-                # case must have a space
-            }
-            elsif($4 eq "*") {
-                # (* beginning makes the space OK!
-            }
-            elsif($1 =~ / *typedef/) {
-                # typedefs can use space-paren
-            }
-            else {
-                checkwarn("SPACEBEFOREPAREN", $line, length($1)+length($2), $file, $l,
-                          "$2 with space");
-            }
-        }
-        # check for '== NULL' in if/while conditions but not if the thing on
-        # the left of it is a function call
-        if($nostr =~ /^(.*)(if|while)(\(.*?)([!=]= NULL|NULL [!=]=)/) {
-            checkwarn("EQUALSNULL", $line,
-                      length($1) + length($2) + length($3),
-                      $file, $l, "we prefer !variable instead of \"== NULL\" comparisons");
-        }
-
-        # check for '!= 0' in if/while conditions but not if the thing on
-        # the left of it is a function call
-        if($nostr =~ /^(.*)(if|while)(\(.*[^)]) != 0[^x]/) {
-            checkwarn("NOTEQUALSZERO", $line,
-                      length($1) + length($2) + length($3),
-                      $file, $l, "we prefer if(rc) instead of \"rc != 0\" comparisons");
-        }
-
-        # check spaces in 'do {'
-        if($nostr =~ /^( *)do( *)\{/ && length($2) != 1) {
-            checkwarn("DOBRACE", $line, length($1) + 2, $file, $l, "one space after do before brace");
-        }
-        # check spaces in 'do {'
-        elsif($nostr =~ /^( *)\}( *)while/ && length($2) != 1) {
-            checkwarn("BRACEWHILE", $line, length($1) + 2, $file, $l, "one space between brace and while");
-        }
-        if($nostr =~ /^((.*\s)(if) *\()(.*)\)(.*)/) {
-            my $pos = length($1);
-            my $postparen = $5;
-            my $cond = $4;
-            if($cond =~ / = /) {
-                checkwarn("ASSIGNWITHINCONDITION",
-                          $line, $pos+1, $file, $l,
-                          "assignment within conditional expression");
-            }
-            my $temp = $cond;
-            $temp =~ s/\(//g; # remove open parens
-            my $openc = length($cond) - length($temp);
-
-            $temp = $cond;
-            $temp =~ s/\)//g; # remove close parens
-            my $closec = length($cond) - length($temp);
-            my $even = $openc == $closec;
-
-            if($l =~ / *\#/) {
-                # this is a #if, treat it differently
-            }
-            elsif($even && $postparen &&
-               ($postparen !~ /^ *$/) && ($postparen !~ /^ *[,{&|\\]+/)) {
-                checkwarn("ONELINECONDITION",
-                          $line, length($l)-length($postparen), $file, $l,
-                          "conditional block on the same line");
-            }
-        }
-        # check spaces after open parentheses
-        if($l =~ /^(.*[a-z])\( /i) {
-            checkwarn("SPACEAFTERPAREN",
-                      $line, length($1)+1, $file, $l,
-                      "space after open parenthesis");
-        }
-
-        # check spaces before close parentheses, unless it was a space or a
-        # close parenthesis!
-        if($l =~ /(.*[^\) ]) \)/) {
-            checkwarn("SPACEBEFORECLOSE",
-                      $line, length($1)+1, $file, $l,
-                      "space before close parenthesis");
-        }
-
-        # check spaces before comma!
-        if($l =~ /(.*[^ ]) ,/) {
-            checkwarn("SPACEBEFORECOMMA",
-                      $line, length($1)+1, $file, $l,
-                      "space before comma");
-        }
-
-        # check for "return(" without space
-        if($l =~ /^(.*)return\(/) {
-            if($1 =~ / *\#/) {
-                # this is a #if, treat it differently
-            }
-            else {
-                checkwarn("RETURNNOSPACE", $line, length($1)+6, $file, $l,
-                          "return without space before paren");
-            }
-        }
-
-        # check for "sizeof" without parenthesis
-        if(($l =~ /^(.*)sizeof *([ (])/) && ($2 ne "(")) {
-            if($1 =~ / *\#/) {
-                # this is a #if, treat it differently
-            }
-            else {
-                checkwarn("SIZEOFNOPAREN", $line, length($1)+6, $file, $l,
-                          "sizeof without parenthesis");
-            }
-        }
-
-        # check for comma without space
-        if($l =~ /^(.*),[^ \n]/) {
-            my $pref=$1;
-            my $ign=0;
-            if($pref =~ / *\#/) {
-                # this is a #if, treat it differently
-                $ign=1;
-            }
-            elsif($pref =~ /\/\*/) {
-                # this is a comment
-                $ign=1;
-            }
-            elsif($pref =~ /[\"\']/) {
-                $ign = 1;
-                # There is a quote here, figure out whether the comma is
-                # within a string or '' or not.
-                if($pref =~ /\"/) {
-                    # within a string
-                }
-                elsif($pref =~ /\'$/) {
-                    # a single letter
-                }
-                else {
-                    $ign = 0;
-                }
-            }
-            if(!$ign) {
-                checkwarn("COMMANOSPACE", $line, length($pref)+1, $file, $l,
-                          "comma without following space");
-            }
-        }
-
-        # check for "} else"
-        if($l =~ /^(.*)\} *else/) {
-            checkwarn("BRACEELSE",
-                      $line, length($1), $file, $l, "else after closing brace on same line");
-        }
-        # check for "){"
-        if($l =~ /^(.*)\)\{/) {
-            checkwarn("PARENBRACE",
-                      $line, length($1)+1, $file, $l, "missing space after close paren");
-        }
-        # check for "^{" with an empty line before it
-        if(($l =~ /^\{/) && ($prevl =~ /^[ \t]*\z/)) {
-            checkwarn("EMPTYLINEBRACE",
-                      $line, 0, $file, $l, "empty line before open brace");
-        }
-
-        # check for space before the semicolon last in a line
-        if($l =~ /^(.*[^ ].*) ;$/) {
-            checkwarn("SPACESEMICOLON",
-                      $line, length($1), $file, $ol, "no space before semicolon");
-        }
-
-        # scan for use of banned functions
-        if($l =~ /^(.*\W)
-                   (gmtime|localtime|
-                    gets|
-                    strtok|
-                    v?sprintf|
-                    (str|_mbs|_tcs|_wcs)n?cat|
-                    LoadLibrary(Ex)?(A|W)?)
-                   \s*\(
-                 /x) {
-            checkwarn("BANNEDFUNC",
-                      $line, length($1), $file, $ol,
-                      "use of $2 is banned");
-        }
-        if($warnings{"STRERROR"}) {
-            # scan for use of banned strerror. This is not a BANNEDFUNC to
-            # allow for individual enable/disable of this warning.
-            if($l =~ /^(.*\W)(strerror)\s*\(/x) {
-                if($1 !~ /^ *\#/) {
-                    # skip preprocessor lines
-                    checkwarn("STRERROR",
-                              $line, length($1), $file, $ol,
-                              "use of $2 is banned");
-                }
-            }
-        }
-        # scan for use of snprintf for curl-internals reasons
-        if($l =~ /^(.*\W)(v?snprintf)\s*\(/x) {
-            checkwarn("SNPRINTF",
-                      $line, length($1), $file, $ol,
-                      "use of $2 is banned");
-        }
-
-        # scan for use of non-binary fopen without the macro
-        if($l =~ /^(.*\W)fopen\s*\([^,]*, *\"([^"]*)/) {
-            my $mode = $2;
-            if($mode !~ /b/) {
-                checkwarn("FOPENMODE",
-                          $line, length($1), $file, $ol,
-                          "use of non-binary fopen without FOPEN_* macro: $mode");
-            }
-        }
-
-        # check for open brace first on line but not first column only alert
-        # if previous line ended with a close paren and it wasn't a cpp line
-        if(($prevl =~ /\)\z/) && ($l =~ /^( +)\{/) && !$prevp) {
-            checkwarn("BRACEPOS",
-                      $line, length($1), $file, $ol, "badly placed open brace");
-        }
-
-        # if the previous line starts with if/while/for AND ends with an open
-        # brace, or an else statement, check that this line is indented $indent
-        # more steps, if not a cpp line
-        if(!$prevp && ($prevl =~ /^( *)((if|while|for)\(.*\{|else)\z/)) {
-            my $first = length($1);
-            # this line has some character besides spaces
-            if($l =~ /^( *)[^ ]/) {
-                my $second = length($1);
-                my $expect = $first+$indent;
-                if($expect != $second) {
-                    my $diff = $second - $first;
-                    checkwarn("INDENTATION", $line, length($1), $file, $ol,
-                              "not indented $indent steps (uses $diff)");
-
-                }
-            }
-        }
-
-        # check for 'char * name'
-        if(($l =~ /(^.*(char|int|long|void|CURL|CURLM|CURLMsg|[cC]url_[A-Za-z_]+|struct [a-zA-Z_]+) *(\*+)) (\w+)/) && ($4 !~ /^(const|volatile)$/)) {
-            checkwarn("ASTERISKSPACE",
-                      $line, length($1), $file, $ol,
-                      "space after declarative asterisk");
-        }
-        # check for 'char*'
-        if(($l =~ /(^.*(char|int|long|void|curl_slist|CURL|CURLM|CURLMsg|curl_httppost|sockaddr_in|FILE)\*)/)) {
-            checkwarn("ASTERISKNOSPACE",
-                      $line, length($1)-1, $file, $ol,
-                      "no space before asterisk");
-        }
-
-        # check for 'void func() {', but avoid false positives by requiring
-        # both an open and closed parentheses before the open brace
-        if($l =~ /^((\w).*)\{\z/) {
-            my $k = $1;
-            $k =~ s/const *//;
-            $k =~ s/static *//;
-            if($k =~ /\(.*\)/) {
-                checkwarn("BRACEPOS",
-                          $line, length($l)-1, $file, $ol,
-                          "wrongly placed open brace");
-            }
-        }
-
-        # check for equals sign without spaces next to it
-        if($nostr =~ /(.*)\=[a-z0-9]/i) {
-            checkwarn("EQUALSNOSPACE",
-                      $line, length($1)+1, $file, $ol,
-                      "no space after equals sign");
-        }
-        # check for equals sign without spaces before it
-        elsif($nostr =~ /(.*)[a-z0-9]\=/i) {
-            checkwarn("NOSPACEEQUALS",
-                      $line, length($1)+1, $file, $ol,
-                      "no space before equals sign");
-        }
-
-        # check for plus signs without spaces next to it
-        if($nostr =~ /(.*)[^+]\+[a-z0-9]/i) {
-            checkwarn("PLUSNOSPACE",
-                      $line, length($1)+1, $file, $ol,
-                      "no space after plus sign");
-        }
-        # check for plus sign without spaces before it
-        elsif($nostr =~ /(.*)[a-z0-9]\+[^+]/i) {
-            checkwarn("NOSPACEPLUS",
-                      $line, length($1)+1, $file, $ol,
-                      "no space before plus sign");
-        }
-
-        # check for semicolons without space next to it
-        if($nostr =~ /(.*)\;[a-z0-9]/i) {
-            checkwarn("SEMINOSPACE",
-                      $line, length($1)+1, $file, $ol,
-                      "no space after semicolon");
-        }
-
-        # typedef struct ... {
-        if($nostr =~ /^(.*)typedef struct.*{/) {
-            checkwarn("TYPEDEFSTRUCT",
-                      $line, length($1)+1, $file, $ol,
-                      "typedef'ed struct");
-        }
-
-        if($nostr =~ /(.*)! +(\w|\()/) {
-            checkwarn("EXCLAMATIONSPACE",
-                      $line, length($1)+1, $file, $ol,
-                      "space after exclamation mark");
-        }
-
-        # check for more than one consecutive space before open brace or
-        # question mark. Skip lines containing strings since they make it hard
-        # due to artificially getting multiple spaces
-        if(($l eq $nostr) &&
-           $nostr =~ /^(.*(\S)) + [{?]/i) {
-            checkwarn("MULTISPACE",
-                      $line, length($1)+1, $file, $ol,
-                      "multiple spaces");
-        }
-      preproc:
-        $line++;
-        $prevp = $prep;
-        $prevl = $ol if(!$prep);
-        $prevpl = $ol if($prep);
-    }
-
-    if(!scalar(@copyright)) {
-        checkwarn("COPYRIGHT", 1, 0, $file, "", "Missing copyright statement", 1);
-    }
-
-    # COPYRIGHTYEAR is a extended warning so we must first see if it has been
-    # enabled in .checksrc
-    if(defined($warnings{"COPYRIGHTYEAR"})) {
-        # The check for updated copyrightyear is overly complicated in order to
-        # not punish current hacking for past sins. The copyright years are
-        # right now a bit behind, so enforcing copyright year checking on all
-        # files would cause hundreds of errors. Instead we only look at files
-        # which are tracked in the Git repo and edited in the workdir, or
-        # committed locally on the branch without being in upstream master.
-        #
-        # The simple and naive test is to simply check for the current year,
-        # but updating the year even without an edit is against project policy
-        # (and it would fail every file on January 1st).
-        #
-        # A rather more interesting, and correct, check would be to not test
-        # only locally committed files but inspect all files wrt the year of
-        # their last commit. Removing the `git rev-list origin/master..HEAD`
-        # condition below will enfore copyright year checks against the year
-        # the file was last committed (and thus edited to some degree).
-        my $commityear = undef;
-        @copyright = sort {$$b{year} cmp $$a{year}} @copyright;
-
-        # if the file is modified, assume commit year this year
-        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`;
-            if($grl) {
-                chomp $grl;
-                $commityear = (localtime((split(/ /, $grl))[0]))[5] + 1900;
-            }
-        }
-
-        if(defined($commityear) && scalar(@copyright) &&
-           $copyright[0]{year} != $commityear) {
-            checkwarn("COPYRIGHTYEAR", $copyright[0]{line}, $copyright[0]{col},
-                      $file, $copyright[0]{code},
-                      "Copyright year out of date, should be $commityear, " .
-                      "is $copyright[0]{year}", 1);
-        }
-    }
-
-    if($incomment) {
-        checkwarn("OPENCOMMENT", 1, 0, $file, "", "Missing closing comment", 1);
-    }
-
-    checksrc_endoffile($file);
-
-    close(R);
-
-}
-
-
-if($errors || $warnings || $verbose) {
-    printf "checksrc: %d errors and %d warnings\n", $errors, $warnings;
-    if($suppressed) {
-        printf "checksrc: %d errors and %d warnings suppressed\n",
-        $serrors,
-        $swarnings;
-    }
-    exit 5; # return failure
-}
index 842cbc247b178f80ccbfbe3c3a4edcef01a22d30..b7356c76295cacabcfadd014970a44eec9f3ff28 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* ================================================================ */
 #define HAVE_ARPA_INET_H 1
 #define HAVE_CLOSESOCKET_CAMEL 1
 #define HAVE_ERRNO_H 1
-#define HAVE_INET_ADDR 1
 #define HAVE_INTTYPES_H 1
 #define HAVE_IOCTLSOCKET_CAMEL 1
 #define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1
-#define HAVE_LIBZ 1
 #define HAVE_LONGLONG 1
-#define HAVE_MALLOC_H 1
-#define HAVE_MEMORY_H 1
 #define HAVE_NETDB_H 1
 #define HAVE_NETINET_IN_H 1
 #define HAVE_NET_IF_H 1
-#define HAVE_OPENSSL_CRYPTO_H 1
-#define HAVE_OPENSSL_ERR_H 1
-#define HAVE_OPENSSL_PEM_H 1
-#define HAVE_OPENSSL_RSA_H 1
-#define HAVE_OPENSSL_SSL_H 1
-#define HAVE_OPENSSL_X509_H 1
 #define HAVE_PWD_H 1
 #define HAVE_RAND_EGD 1
-#define HAVE_RAND_STATUS 1
 #define HAVE_SELECT 1
 #define HAVE_SETJMP_H 1
 #define HAVE_SIGNAL 1
 #define HAVE_SOCKET 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRDUP 1
-#define HAVE_STRFTIME 1
 #define HAVE_STRICMP 1
 #define HAVE_STRINGS_H 1
 #define HAVE_STRING_H 1
-#define HAVE_STRSTR 1
 #define HAVE_STRUCT_TIMEVAL 1
 #define HAVE_SYS_PARAM_H 1
 #define HAVE_SYS_SOCKET_H 1
 #define HAVE_SYS_TIME_H 1
 #define HAVE_SYS_TYPES_H 1
 #define HAVE_TIME_H 1
-#define HAVE_UNAME 1
 #define HAVE_UNISTD_H 1
 #define HAVE_UTIME 1
 #define HAVE_UTIME_H 1
 #define HAVE_WRITABLE_ARGV 1
-#define HAVE_ZLIB_H 1
 #define HAVE_SYS_IOCTL_H 1
 
 #define NEED_MALLOC_H 1
 
 #define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
 #define SIZEOF_SIZE_T 4
 
+#ifndef SIZEOF_CURL_OFF_T
+#define SIZEOF_CURL_OFF_T 8
+#endif
+
 #define USE_MANUAL 1
-#define USE_OPENSSL 1
 #define CURL_DISABLE_LDAP 1
 
 #define OS "AmigaOS"
 #define PACKAGE_TARNAME "curl"
 #define PACKAGE_VERSION "-"
 #define CURL_CA_BUNDLE "s:curl-ca-bundle.crt"
-
-#define SELECT_TYPE_ARG1 int
-#define SELECT_TYPE_ARG234 (fd_set *)
-#define SELECT_TYPE_ARG5 (struct timeval *)
-
 #define STDC_HEADERS 1
 #define TIME_WITH_SYS_TIME 1
 
 #define RECV_TYPE_ARG4 long
 #define RECV_TYPE_RETV long
 
-#define HAVE_RECVFROM 1
-#define RECVFROM_TYPE_ARG1 long
-#define RECVFROM_TYPE_ARG2 char
-#define RECVFROM_TYPE_ARG3 long
-#define RECVFROM_TYPE_ARG4 long
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-#define RECVFROM_TYPE_ARG6 long
-#define RECVFROM_TYPE_RETV long
-
 #define HAVE_SEND 1
 #define SEND_TYPE_ARG1 int
 #define SEND_QUAL_ARG2 const
index 6859208ab35d94adabb814da80b50959dd3da58e..8e3c940d9cee5d896f7ac7e41389143573a40813 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 
@@ -31,8 +33,6 @@
   #define OS  "MSDOS/djgpp"
 #elif defined(__HIGHC__)
   #define OS  "MSDOS/HighC"
-#elif defined(__WATCOMC__)
-  #define OS  "MSDOS/Watcom"
 #else
   #define OS  "MSDOS/?"
 #endif
 #define HAVE_FCNTL_H           1
 #define HAVE_FREEADDRINFO      1
 #define HAVE_GETADDRINFO       1
-#define HAVE_GETPROTOBYNAME    1
 #define HAVE_GETTIMEOFDAY      1
 #define HAVE_IO_H              1
-#define HAVE_IOCTL             1
 #define HAVE_IOCTL_FIONBIO     1
 #define HAVE_IOCTLSOCKET       1
 #define HAVE_IOCTLSOCKET_FIONBIO   1
 #define HAVE_LOCALE_H          1
 #define HAVE_LONGLONG          1
-#define HAVE_MEMORY_H          1
 #define HAVE_NETDB_H           1
 #define HAVE_NETINET_IN_H      1
 #define HAVE_NETINET_TCP_H     1
 #define HAVE_NET_IF_H          1
 #define HAVE_PROCESS_H         1
 #define HAVE_RECV              1
-#define HAVE_RECVFROM          1
 #define HAVE_SELECT            1
 #define HAVE_SEND              1
 #define HAVE_SETJMP_H          1
@@ -73,7 +69,6 @@
 #define HAVE_STRICMP           1
 #define HAVE_STRTOLL           1
 #define HAVE_STRUCT_TIMEVAL    1
-#define HAVE_STRUCT_IN6_ADDR   1
 #define HAVE_SYS_IOCTL_H       1
 #define HAVE_SYS_SOCKET_H      1
 #define HAVE_SYS_STAT_H        1
 
 #define SIZEOF_INT             4
 #define SIZEOF_LONG            4
-#define SIZEOF_LONG_DOUBLE     16
-#define SIZEOF_SHORT           2
 #define SIZEOF_SIZE_T          4
 #define SIZEOF_CURL_OFF_T      4
 #define STDC_HEADERS           1
 #define TIME_WITH_SYS_TIME     1
 
-/* Qualifiers for send(), recv(), and recvfrom() */
+/* Qualifiers for send() and recv() */
 
 #define SEND_TYPE_ARG1         int
 #define SEND_QUAL_ARG2         const
 #define RECV_TYPE_ARG4         int
 #define RECV_TYPE_RETV         int
 
-#define RECVFROM_TYPE_ARG1     int
-#define RECVFROM_TYPE_ARG2     void
-#define RECVFROM_TYPE_ARG3     int
-#define RECVFROM_TYPE_ARG4     int
-#define RECVFROM_TYPE_ARG5     struct sockaddr
-#define RECVFROM_TYPE_ARG6     int
-#define RECVFROM_TYPE_RETV     int
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
 #define BSD
 
 /* CURLDEBUG definition enables memory tracking */
 /* #define CURLDEBUG */
 
-/* USE_ZLIB on cmd-line */
-#ifdef USE_ZLIB
-  #define HAVE_ZLIB_H            1
+#ifdef USE_ZLIB  /* Deprecated. Use HAVE_LIBZ instead. */
   #define HAVE_LIBZ              1
 #endif
 
-/* USE_OPENSSL on cmd-line */
-#ifdef USE_OPENSSL
-  #define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-  #define OPENSSL_NO_KRB5        1
-#endif
-
 /* to disable LDAP */
 #define CURL_DISABLE_LDAP        1
 
   #define HAVE_TERMIOS_H  1
   #define HAVE_VARIADIC_MACROS_GCC 1
 
-#elif defined(__WATCOMC__)
-  #define HAVE_STRCASECMP 1
-
 #elif defined(__HIGHC__)
   #define HAVE_SYS_TIME_H 1
   #define strerror(e) strerror_s_((e))
index 22d32d480d9aa36a814f32ac8b8f736585450dfd..ed07019e6bfe3f022ad279b4945a125ec5486f3e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* =================================================================== */
@@ -45,7 +47,6 @@
 #define HAVE_GETTIMEOFDAY       1
 #define HAVE_FCNTL_H            1
 #define HAVE_SYS_STAT_H         1
-#define HAVE_ALLOCA_H           1
 #define HAVE_STDLIB_H           1
 #define HAVE_TIME_H             1
 #define HAVE_UTIME_H            1
 #define HAVE_ALARM              1
 #define HAVE_FTRUNCATE          1
 #define HAVE_UTIME              1
-#define HAVE_SETVBUF            1
-#define HAVE_STRFTIME           1
-#define HAVE_INET_ADDR          1
-#define HAVE_MEMCPY             1
 #define HAVE_SELECT             1
 #define HAVE_SOCKET             1
 #define HAVE_STRUCT_TIMEVAL     1
 
 #define CURL_DISABLE_LDAP       1
 
-#define HAVE_RAND_STATUS        1
 #define HAVE_RAND_EGD           1
 
-#define HAVE_IOCTL              1
 #define HAVE_IOCTL_FIONBIO      1
 
 #define SIZEOF_INT              4
-#define SIZEOF_SHORT            2
 #define SIZEOF_SIZE_T           4
 
 #define HAVE_RECV 1
 #define RECV_TYPE_ARG4 int
 #define RECV_TYPE_RETV ssize_t
 
-#define HAVE_RECVFROM 1
-#define RECVFROM_TYPE_ARG1 int
-#define RECVFROM_TYPE_ARG2 void
-#define RECVFROM_TYPE_ARG3 size_t
-#define RECVFROM_TYPE_ARG4 int
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-#define RECVFROM_TYPE_ARG6 int
-#define RECVFROM_TYPE_RETV ssize_t
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
 #define HAVE_SEND 1
 #define SEND_TYPE_ARG1 int
 #define SEND_QUAL_ARG2 const
index d68cb4b18e461b3df908e4b66937a3e52fa3c34d..2eef1a0c1b8029dd0d4875da1f74e5463c6da539 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* ================================================================ */
@@ -33,9 +35,6 @@
 /* Version number of this archive. */
 #undef VERSION
 
-/* Define if you have the getpass function.  */
-#undef HAVE_GETPASS
-
 /* Define cpu-machine-OS */
 #define OS "OS/400"
 
@@ -55,9 +54,6 @@
 /* Define if you need the _REENTRANT define for some functions */
 #undef NEED_REENTRANT
 
-/* Define if you have the Kerberos4 libraries (including -ldes) */
-#undef HAVE_KRB4
-
 /* Define if you want to enable IPv6 support */
 #define ENABLE_IPV6
 
@@ -76,9 +72,6 @@
 /* Define to 1 if you have the alarm function. */
 #define HAVE_ALARM 1
 
-/* Define if you have the <alloca.h> header file. */
-#undef HAVE_ALLOCA_H
-
 /* Define if you have the <arpa/inet.h> header file. */
 #define HAVE_ARPA_INET_H
 
@@ -97,9 +90,6 @@
 /* Define if you have the `gethostname' function. */
 #define HAVE_GETHOSTNAME
 
-/* Define if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
-
 /* Define if you have the `getpass_r' function. */
 #undef HAVE_GETPASS_R
 
 /* Define if you have the `getpwuid' function. */
 #define HAVE_GETPWUID
 
-/* Define if you have the `getservbyname' function. */
-#define HAVE_GETSERVBYNAME
-
 /* Define to 1 if you have the getsockname function. */
 #define HAVE_GETSOCKNAME 1
 
 /* Define if you have the `timeval' struct. */
 #define HAVE_STRUCT_TIMEVAL
 
-/* Define if you have the `inet_addr' function. */
-#define HAVE_INET_ADDR
-
 /* Define if you have the <inttypes.h> header file. */
 #define HAVE_INTTYPES_H
 
 /* Define if you have the <io.h> header file. */
 #undef HAVE_IO_H
 
-/* Define if you have the `krb_get_our_ip_for_realm' function. */
-#undef HAVE_KRB_GET_OUR_IP_FOR_REALM
-
-/* Define if you have the <krb.h> header file. */
-#undef HAVE_KRB_H
-
-/* Define if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
-
-/* Define if you have the `resolve' library (-lresolve). */
-#undef HAVE_LIBRESOLVE
-
 /* Define if you have the `socket' library (-lsocket). */
 #undef HAVE_LIBSOCKET
 
 /* Define if you have the MIT gssapi libraries */
 #undef HAVE_GSSMIT
 
-/* Define if you have the `ucb' library (-lucb). */
-#undef HAVE_LIBUCB
-
-/* Define if you have the `localtime_r' function. */
-#define HAVE_LOCALTIME_R
-
-/* Define if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H
-
 /* Define if you need the malloc.h header file even with stdlib.h  */
 /* #define NEED_MALLOC_H 1 */
 
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
 /* Define if you have the <netdb.h> header file. */
 #define HAVE_NETDB_H
 
-/* Define if you have the <netinet/if_ether.h> header file. */
-#undef HAVE_NETINET_IF_ETHER_H
-
 /* Define if you have the <netinet/in.h> header file. */
 #define HAVE_NETINET_IN_H
 
 /* Define if you have the <net/if.h> header file. */
 #define HAVE_NET_IF_H
 
-/* Define if you have the <openssl/crypto.h> header file. */
-#undef HAVE_OPENSSL_CRYPTO_H
-
-/* Define if you have the <openssl/err.h> header file. */
-#undef HAVE_OPENSSL_ERR_H
-
-/* Define if you have the <openssl/pem.h> header file. */
-#undef HAVE_OPENSSL_PEM_H
-
-/* Define if you have the <openssl/rsa.h> header file. */
-#undef HAVE_OPENSSL_RSA_H
-
-/* Define if you have the <openssl/ssl.h> header file. */
-#undef HAVE_OPENSSL_SSL_H
-
-/* Define if you have the <openssl/x509.h> header file. */
-#undef HAVE_OPENSSL_X509_H
-
-/* Define if you have the <pem.h> header file. */
-#undef HAVE_PEM_H
-
 /* Define if you have the <pwd.h> header file. */
 #define HAVE_PWD_H
 
 /* Define if you have the `RAND_egd' function. */
 #undef HAVE_RAND_EGD
 
-/* Define if you have the `RAND_screen' function. */
-#undef HAVE_RAND_SCREEN
-
-/* Define if you have the `RAND_status' function. */
-#undef HAVE_RAND_STATUS
-
 /* Define if you have the `select' function. */
 #define HAVE_SELECT
 
-/* Define if you have the `setvbuf' function. */
-#define HAVE_SETVBUF
-
 /* Define if you have the `sigaction' function. */
 #define HAVE_SIGACTION
 
 /* Define if you have the `strdup' function. */
 #define HAVE_STRDUP
 
-
-/* Define if you have the `strftime' function. */
-#define HAVE_STRFTIME
-
 /* Define if you have the <strings.h> header file. */
 #define HAVE_STRINGS_H
 
 /* Define if you have the <stropts.h> header file. */
 #undef HAVE_STROPTS_H
 
-/* Define if you have the `strstr' function. */
-#define HAVE_STRSTR
-
 /* Define if you have the `strtok_r' function. */
 #define HAVE_STRTOK_R
 
 /* Define if you have the <time.h> header file. */
 #define HAVE_TIME_H
 
-/* Define if you have the `uname' function. */
-#undef HAVE_UNAME
-
 /* Define if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H
 
-/* Define if you have the <x509.h> header file. */
-#undef HAVE_X509_H
-
 /* Name of package */
 #undef PACKAGE
 
 /* The size of `int', as computed by sizeof. */
 #define SIZEOF_INT              4
 
-/* The size of a `long double', as computed by sizeof. */
-#define SIZEOF_LONG_DOUBLE      8
-
 /* Define if the compiler supports the 'long long' data type. */
 #define HAVE_LONGLONG
 
 /* The size of a `long long', as computed by sizeof. */
 #define SIZEOF_LONG_LONG        8
 
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT            2
-
 /* The size of `long', as computed by sizeof. */
 #define SIZEOF_LONG             4
 
 /* The size of `curl_off_t', as computed by sizeof. */
 #define SIZEOF_CURL_OFF_T       8
 
-/* Whether long long constants must be suffixed by LL. */
-
-#define HAVE_LL
-
 /* Define this if you have struct sockaddr_storage */
 #define HAVE_STRUCT_SOCKADDR_STORAGE
 
 /* Define if you can safely include both <sys/time.h> and <time.h>. */
 #define TIME_WITH_SYS_TIME
 
-/* Define to enable HTTP3 support (experimental, requires NGTCP2 or QUICHE) */
+/* Define to enable HTTP3 support (experimental, requires NGTCP2, QUICHE or
+   MSH3) */
 #undef ENABLE_QUIC
 
 /* Version number of package */
 /* Define to `unsigned' if <sys/types.h> does not define. */
 #undef size_t
 
-/* Define if you have the ioctl function. */
-#define HAVE_IOCTL
-
 /* Define if you have a working ioctl FIONBIO function. */
 #define HAVE_IOCTL_FIONBIO
 
 /* Define to the function return type for recv. */
 #define RECV_TYPE_RETV int
 
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
 /* Define if you have the send function. */
 #define HAVE_SEND
 
index dbe9b82af6eb99ddda7fe8a597c21a47638b489a..49a719c1aa3a0a3df5f8347174336f9df4292fc3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #define BUILDING_LIBCURL 1
@@ -46,7 +48,6 @@
 #error not implement
 #else
 #define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
 #define SIZEOF_LONG 4
 #define SIZEOF_OFF_T 8
 #define SIZEOF_CURL_OFF_T 4 /* curl_off_t = timediff_t = int */
 #define RECV_TYPE_ARG4 int
 #define RECV_TYPE_RETV int
 
-#define HAVE_RECVFROM 1
-#define RECVFROM_TYPE_ARG1 int
-#define RECVFROM_TYPE_ARG2 void
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-#define RECVFROM_TYPE_ARG3 int
-#define RECVFROM_TYPE_ARG4 int
-#define RECVFROM_TYPE_ARG5 void
-#define RECVFROM_TYPE_ARG5_IS_VOID 1
-#define RECVFROM_TYPE_ARG6 int
-#define RECVFROM_TYPE_ARG6_IS_VOID 1
-#define RECVFROM_TYPE_RETV int
-
 #define HAVE_SELECT 1
-#define SELECT_TYPE_ARG1 int
-#define SELECT_TYPE_ARG234 fd_set *
-#define SELECT_TYPE_ARG5 struct timeval *
-#define SELECT_TYPE_RETV int
 
 #define HAVE_SEND 1
 #define SEND_TYPE_ARG1 int
@@ -92,7 +77,6 @@
 #define HAVE_ASSERT_H 1
 #define HAVE_BASENAME 1
 #define HAVE_BOOL_T 1
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
 #define HAVE_ERRNO_H 1
 #define HAVE_FCNTL 1
 #define HAVE_FCNTL_H 1
 #define HAVE_FTRUNCATE 1
 #define HAVE_GETADDRINFO 1
 #define HAVE_GETEUID 1
-#define HAVE_GETHOSTBYNAME 1
 #define HAVE_GETHOSTNAME 1
 #define HAVE_GETPPID 1
-#define HAVE_GETPROTOBYNAME 1
 #define HAVE_GETPWUID 1
 #define HAVE_GETTIMEOFDAY 1
 #define HAVE_GMTIME_R 1
-#define HAVE_INET_ADDR 1
 #define HAVE_INET_NTOP 1
 #define HAVE_INET_PTON 1
 #define HAVE_INTTYPES_H 1
-#define HAVE_IOCTL 1
 #define HAVE_LIBGEN_H 1
 #define HAVE_LIBZ 1
-#define HAVE_LL 1
 #define HAVE_LOCALE_H 1
-#define HAVE_LOCALTIME_R 1
 #define HAVE_LONGLONG 1
 #define HAVE_NETDB_H 1
 #define HAVE_NETINET_IN_H 1
 #define HAVE_SYS_SELECT_H 1
 
 #define USE_OPENSSL 1
-#define HAVE_OPENSSL_CRYPTO_H 1
-#define HAVE_OPENSSL_ERR_H 1
-#define HAVE_OPENSSL_PEM_H 1
-#define HAVE_OPENSSL_PKCS12_H 1
-#define HAVE_OPENSSL_RSA_H 1
-#define HAVE_OPENSSL_SSL_H 1
-#define HAVE_OPENSSL_X509_H 1
 
 #define HAVE_PIPE 1
-#define HAVE_POLL 1
 #define HAVE_POLL_FINE 1
 #define HAVE_POLL_H 1
 #define HAVE_PTHREAD_H 1
-#define HAVE_RAND_STATUS 1
 #define HAVE_SETJMP_H 1
 #define HAVE_SETLOCALE 1
 
-#define HAVE_SETSOCKOPT 1
-#define HAVE_SOCK_OPTS 1 /* for /sys/include/ape/sys/socket.h */
-
 #define HAVE_SIGACTION 1
 #define HAVE_SIGNAL 1
 #define HAVE_SIGNAL_H 1
 #define HAVE_SSL_GET_SHUTDOWN 1
 #define HAVE_STDBOOL_H 1
 #define HAVE_STDINT_H 1
-#define HAVE_STDIO_H 1
 #define HAVE_STDLIB_H 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRDUP 1
 #define HAVE_STRING_H 1
-#define HAVE_STRSTR 1
 #define HAVE_STRTOK_R 1
 #define HAVE_STRTOLL 1
 #define HAVE_STRUCT_TIMEVAL 1
 #define HAVE_SYS_STAT_H 1
 #define HAVE_SYS_TIME_H 1
 #define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_UIO_H 1
 #define HAVE_SYS_UN_H 1
 #define HAVE_TERMIOS_H 1
 #define HAVE_TIME_H 1
-#define HAVE_UNAME 1
 #define HAVE_UNISTD_H 1
 #define HAVE_UTIME 1
 #define HAVE_UTIME_H 1
-#define HAVE_WRITEV 1
-
-#define HAVE_ZLIB_H 1
 
 #define HAVE_POSIX_STRERROR_R 1
 #define HAVE_STRERROR_R 1
-#define STRERROR_R_TYPE_ARG3 int
 
 #define TIME_WITH_SYS_TIME 1
 #define USE_MANUAL 1
index 9986b20fba93cf3a77e41f78d79aa7abcd874125..d6c81f3eb952852daea2fd647df6748a51058024 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* ================================================================ */
@@ -32,9 +34,6 @@
 /* Version number of this archive. */
 #undef VERSION
 
-/* Define if you have the getpass function.  */
-#undef HAVE_GETPASS
-
 /* Define cpu-machine-OS */
 #define OS "ARM-RISC OS"
 
@@ -53,9 +52,6 @@
 /* Define if you need the _REENTRANT define for some functions */
 #undef NEED_REENTRANT
 
-/* Define if you have the Kerberos4 libraries (including -ldes) */
-#undef HAVE_KRB4
-
 /* Define if you want to enable IPv6 support */
 #undef ENABLE_IPV6
 
@@ -77,9 +73,6 @@
 /* Define if you have the alarm function. */
 #define HAVE_ALARM
 
-/* Define if you have the <alloca.h> header file. */
-#define HAVE_ALLOCA_H
-
 /* Define if you have the <arpa/inet.h> header file. */
 #define HAVE_ARPA_INET_H
 
 /* Define if you have the `gethostname' function. */
 #define HAVE_GETHOSTNAME
 
-/* Define if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H
-
 /* Define if you have the `getpass_r' function. */
 #undef HAVE_GETPASS_R
 
 /* Define if you have the `getpwuid' function. */
 #undef HAVE_GETPWUID
 
-/* Define if you have the `getservbyname' function. */
-#undef HAVE_GETSERVBYNAME
-
 /* Define if you have the `gettimeofday' function. */
 #define HAVE_GETTIMEOFDAY
 
 /* Define if you have the `timeval' struct. */
 #define HAVE_STRUCT_TIMEVAL
 
-/* Define if you have the `inet_addr' function. */
-#undef HAVE_INET_ADDR
-
 /* Define if you have the <inttypes.h> header file. */
 #define HAVE_INTTYPES_H
 
 /* Define if you have the <io.h> header file. */
 #undef HAVE_IO_H
 
-/* Define if you have the `krb_get_our_ip_for_realm' function. */
-#undef HAVE_KRB_GET_OUR_IP_FOR_REALM
-
-/* Define if you have the <krb.h> header file. */
-#undef HAVE_KRB_H
-
-/* Define if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
-
-/* Define if you have the `resolve' library (-lresolve). */
-#undef HAVE_LIBRESOLVE
-
 /* Define if you have the `socket' library (-lsocket). */
 #undef HAVE_LIBSOCKET
 
-/* Define if you have the `ucb' library (-lucb). */
-#undef HAVE_LIBUCB
-
-/* Define if you have the `localtime_r' function. */
-#undef HAVE_LOCALTIME_R
-
-/* Define if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H
-
 /* Define if you need the malloc.h header file even with stdlib.h  */
 /* #define NEED_MALLOC_H 1 */
 
-/* Define if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
 /* Define if you have the <netdb.h> header file. */
 #define HAVE_NETDB_H
 
-/* Define if you have the <netinet/if_ether.h> header file. */
-#undef HAVE_NETINET_IF_ETHER_H
-
 /* Define if you have the <netinet/in.h> header file. */
 #define HAVE_NETINET_IN_H
 
 /* Define if you have the <net/if.h> header file. */
 #define HAVE_NET_IF_H
 
-/* Define if you have the <openssl/crypto.h> header file. */
-#undef HAVE_OPENSSL_CRYPTO_H
-
-/* Define if you have the <openssl/err.h> header file. */
-#undef HAVE_OPENSSL_ERR_H
-
-/* Define if you have the <openssl/pem.h> header file. */
-#undef HAVE_OPENSSL_PEM_H
-
-/* Define if you have the <openssl/rsa.h> header file. */
-#undef HAVE_OPENSSL_RSA_H
-
-/* Define if you have the <openssl/ssl.h> header file. */
-#undef HAVE_OPENSSL_SSL_H
-
-/* Define if you have the <openssl/x509.h> header file. */
-#undef HAVE_OPENSSL_X509_H
-
-/* Define if you have the <pem.h> header file. */
-#undef HAVE_PEM_H
-
 /* Define if you have the <pwd.h> header file. */
 #undef HAVE_PWD_H
 
 /* Define if you have the `RAND_egd' function. */
 #undef HAVE_RAND_EGD
 
-/* Define if you have the `RAND_screen' function. */
-#undef HAVE_RAND_SCREEN
-
-/* Define if you have the `RAND_status' function. */
-#undef HAVE_RAND_STATUS
-
 /* Define if you have the `select' function. */
 #define HAVE_SELECT
 
-/* Define if you have the `setvbuf' function. */
-#undef HAVE_SETVBUF
-
 /* Define if you have the `sigaction' function. */
 #undef HAVE_SIGACTION
 
 /* Define if you have the `strdup' function. */
 #define HAVE_STRDUP
 
-/* Define if you have the `strftime' function. */
-#define HAVE_STRFTIME
-
 /* Define if you have the `stricmp' function. */
 #define HAVE_STRICMP
 
 /* Define if you have the <string.h> header file. */
 #define HAVE_STRING_H
 
-/* Define if you have the `strstr' function. */
-#define HAVE_STRSTR
-
 /* Define if you have the `strtok_r' function. */
 #undef HAVE_STRTOK_R
 
 /* Define if you have the <time.h> header file. */
 #undef HAVE_TIME_H
 
-/* Define if you have the `uname' function. */
-#define HAVE_UNAME
-
 /* Define if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H
 
-/* Define if you have the <x509.h> header file. */
-#undef HAVE_X509_H
-
 /* Name of package */
 #undef PACKAGE
 
 /* The size of `int', as computed by sizeof. */
 #define SIZEOF_INT 4
 
-/* The size of `long double', as computed by sizeof. */
-#undef SIZEOF_LONG_DOUBLE
-
 /* The size of `long long', as computed by sizeof. */
 #undef SIZEOF_LONG_LONG
 
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
 /* The size of `size_t', as computed by sizeof. */
 #define SIZEOF_SIZE_T 4
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef ssize_t
 
-/* Define if you have the ioctl function. */
-#define HAVE_IOCTL
-
 /* Define if you have a working ioctl FIONBIO function. */
 #define HAVE_IOCTL_FIONBIO
 
 /* Define to the function return type for recv. */
 #define RECV_TYPE_RETV ssize_t
 
-/* Define 1 if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 void
-
-/* Define if the type pointed by arg 2 for recvfrom is void. */
-#define RECVFROM_TYPE_ARG2_IS_VOID
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV ssize_t
-
 /* Define if you have the send function. */
 #define HAVE_SEND 1
 
diff --git a/lib/config-tpf.h b/lib/config-tpf.h
deleted file mode 100644 (file)
index cce06ce..0000000
+++ /dev/null
@@ -1,680 +0,0 @@
-#ifndef HEADER_CURL_CONFIG_TPF_H
-#define HEADER_CURL_CONFIG_TPF_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-/* ================================================================ */
-/*                 Hand crafted config file for TPF                 */
-/* ================================================================ */
-
-/* ---------------------------------------------------------------- */
-/*            FEATURES, FUNCTIONS, and DEFINITIONS                  */
-/* ---------------------------------------------------------------- */
-
-/* NOTE: Refer also to the .mak file for some of the flags below */
-
-/* to disable cookies support */
-/* #undef CURL_DISABLE_COOKIES */
-
-/* to disable cryptographic authentication */
-/* #undef CURL_DISABLE_CRYPTO_AUTH */
-
-/* to disable DICT */
-/* #undef CURL_DISABLE_DICT */
-
-/* to disable FILE */
-/* #undef CURL_DISABLE_FILE */
-
-/* to disable FTP */
-/* #undef CURL_DISABLE_FTP */
-
-/* to disable HTTP */
-/* #undef CURL_DISABLE_HTTP */
-
-/* to disable LDAP */
-/* #undef CURL_DISABLE_LDAP */
-
-/* to disable TELNET */
-/* #undef CURL_DISABLE_TELNET */
-
-/* to disable TFTP */
-/* #undef CURL_DISABLE_TFTP */
-
-/* to disable verbose strings */
-/* #undef CURL_DISABLE_VERBOSE_STRINGS */
-
-/* lber dynamic library file */
-/* #undef DL_LBER_FILE */
-
-/* ldap dynamic library file */
-/* #undef DL_LDAP_FILE */
-
-/* your Entropy Gathering Daemon socket pathname */
-/* #undef EGD_SOCKET */
-
-/* Define if you want to enable IPv6 support */
-/* #undef ENABLE_IPV6 */
-
-/* Define if struct sockaddr_in6 has the sin6_scope_id member */
-/* #undef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID */
-
-/* Define to 1 if you have the alarm function. */
-#define HAVE_ALARM 1
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <arpa/tftp.h> header file. */
-/* #undef HAVE_ARPA_TFTP_H */
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the `basename' function. */
-#define HAVE_BASENAME 1
-
-/* Define to 1 if you have the `closesocket' function. */
-/* #undef HAVE_CLOSESOCKET */
-
-/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-/* #undef HAVE_CRYPTO_CLEANUP_ALL_EX_DATA */
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the fcntl function. */
-#define HAVE_FCNTL 1
-
-/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
-#define HAVE_FCNTL_O_NONBLOCK 1
-
-/* Define to 1 if you have the `ftruncate' function. */
-#define HAVE_FTRUNCATE 1
-
-/* Define if getaddrinfo exists and works */
-/* #undef HAVE_GETADDRINFO */
-
-/* Define to 1 if you have the `geteuid' function. */
-#define HAVE_GETEUID 1
-
-/* If you have gethostbyname */
-#define HAVE_GETHOSTBYNAME 1
-
-/* Define to 1 if you have the `gethostbyname_r' function. */
-/* #undef HAVE_GETHOSTBYNAME_R */
-
-/* gethostbyname_r() takes 3 args */
-/* #undef HAVE_GETHOSTBYNAME_R_3 */
-
-/* gethostbyname_r() takes 5 args */
-/* #undef HAVE_GETHOSTBYNAME_R_5 */
-
-/* gethostbyname_r() takes 6 args */
-/* #undef HAVE_GETHOSTBYNAME_R_6 1 */
-
-/* Define to 1 if you have the `getpass_r' function. */
-/* #undef HAVE_GETPASS_R */
-
-/* Define to 1 if you have the `getprotobyname' function. */
-/* #undef HAVE_GETPROTOBYNAME */
-
-/* Define to 1 if you have the `getpwuid' function. */
-#define HAVE_GETPWUID 1
-
-/* Define to 1 if you have the `getrlimit' function. */
-/* #undef HAVE_GETRLIMIT */
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* we have a glibc-style strerror_r() */
-/* #undef HAVE_GLIBC_STRERROR_R */
-#define HAVE_GLIBC_STRERROR_R 1
-
-/* Define to 1 if you have the `gmtime_r' function. */
-#define HAVE_GMTIME_R 1
-
-/* if you have the gssapi libraries */
-/* #undef HAVE_GSSAPI */
-
-/* if you have the GNU gssapi libraries */
-/* #undef HAVE_GSSGNU */
-
-/* if you have the Heimdal gssapi libraries */
-/* #undef HAVE_GSSHEIMDAL */
-
-/* if you have the MIT gssapi libraries */
-/* #undef HAVE_GSSMIT */
-
-/* Define to 1 if you have the `iconv' functions. */
-#define HAVE_ICONV 1
-
-/* Define to 1 if you have the `idna_strerror' function. */
-/* #undef HAVE_IDNA_STRERROR */
-
-/* Define to 1 if you have the `idn_free' function. */
-/* #undef HAVE_IDN_FREE */
-
-/* Define to 1 if you have the <idn-free.h> header file. */
-/* #undef HAVE_IDN_FREE_H */
-
-/* Define to 1 if you have the `inet_addr' function. */
-#define HAVE_INET_ADDR 1
-
-/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
-/* #undef HAVE_INET_NTOP */
-
-/* Define to 1 if you have a IPv6 capable working inet_pton function. */
-/* #undef HAVE_INET_PTON */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the ioctl function. */
-#define HAVE_IOCTL 1
-
-/* Define to 1 if you have a working ioctl FIONBIO function. */
-#define HAVE_IOCTL_FIONBIO 1
-
-/* Define to 1 if you have the ioctlsocket function. */
-/* #undef HAVE_IOCTLSOCKET */
-
-/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
-/* #undef HAVE_IOCTLSOCKET_FIONBIO */
-
-/* Define to 1 if you have the IoctlSocket camel case function. */
-/* #undef HAVE_IOCTLSOCKET_CAMEL */
-
-/* Define to 1 if you have a working IoctlSocket camel case FIONBIO
-   function. */
-/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
-
-/* Define to 1 if you have the <io.h> header file. */
-/* #undef HAVE_IO_H */
-
-/* if you have the Kerberos4 libraries (including -ldes) */
-/* #undef HAVE_KRB4 */
-
-/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
-/* #undef HAVE_KRB_GET_OUR_IP_FOR_REALM */
-
-/* Define to 1 if you have the <krb.h> header file. */
-/* #undef HAVE_KRB_H */
-
-/* Define to 1 if you have the <libgen.h> header file. */
-/* #undef HAVE_LIBGEN_H 1 */
-
-/* Define to 1 if you have the `idn' library (-lidn). */
-/* #undef HAVE_LIBIDN */
-
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-/* #undef HAVE_LIBRESOLV */
-
-/* Define to 1 if you have the `resolve' library (-lresolve). */
-/* #undef HAVE_LIBRESOLVE */
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-/* #undef HAVE_LIBSOCKET */
-
-/* if zlib is available */
-/* #undef HAVE_LIBZ */
-
-/* if your compiler supports LL */
-#define HAVE_LL 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if you have the `localtime_r' function. */
-#define HAVE_LOCALTIME_R 1
-
-/* Define to 1 if the compiler supports the 'long long' data type. */
-#define HAVE_LONGLONG 1
-
-/* Define to 1 if you need the malloc.h header file even with stdlib.h  */
-/* #undef NEED_MALLOC_H */
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#define HAVE_NETDB_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-/* undef HAVE_NETINET_TCP_H */
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define if NI_WITHSCOPEID exists and works */
-/* #undef HAVE_NI_WITHSCOPEID */
-
-/* we have no strerror_r() proto */
-/* #undef HAVE_NO_STRERROR_R_DECL */
-
-/* Define to 1 if you have the <openssl/crypto.h> header file. */
-/* #undef HAVE_OPENSSL_CRYPTO_H */
-#define HAVE_OPENSSL_CRYPTO_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-/* #undef HAVE_OPENSSL_ERR_H */
-#define HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/pem.h> header file. */
-/* #undef HAVE_OPENSSL_PEM_H */
-#define HAVE_OPENSSL_PEM_H 1
-
-/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-/* #undef HAVE_OPENSSL_PKCS12_H */
-#define HAVE_OPENSSL_PKCS12_H 1
-
-/* Define to 1 if you have the <openssl/rsa.h> header file. */
-/* #undef HAVE_OPENSSL_RSA_H */
-#define HAVE_OPENSSL_RSA_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-/* #undef HAVE_OPENSSL_SSL_H */
-#define HAVE_OPENSSL_SSL_H 1
-
-/* Define to 1 if you have the <openssl/x509.h> header file. */
-/* #undef HAVE_OPENSSL_X509_H */
-#define HAVE_OPENSSL_X509_H 1
-
-/* Define to 1 if you have the <pem.h> header file. */
-/* #undef HAVE_PEM_H */
-#define HAVE_PEM_H 1
-
-/* Define to 1 if you have the `pipe' function. */
-#define HAVE_PIPE 1
-
-/* Define to 1 if you have the `poll' function. */
-/* #undef HAVE_POLL */
-
-/* If you have a fine poll */
-/* #undef HAVE_POLL_FINE */
-
-/* we have a POSIX-style strerror_r() */
-/* #undef HAVE_POSIX_STRERROR_R */
-
-/* Define to 1 if you have the <pwd.h> header file. */
-#define HAVE_PWD_H 1
-
-/* Define to 1 if you have the `RAND_egd' function. */
-/* #undef HAVE_RAND_EGD */
-#define HAVE_RAND_EGD 1
-
-/* Define to 1 if you have the `RAND_screen' function. */
-/* #undef HAVE_RAND_SCREEN */
-
-/* Define to 1 if you have the `RAND_status' function. */
-/* #undef HAVE_RAND_STATUS */
-#define HAVE_RAND_STATUS 1
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the <setjmp.h> header file. */
-#define HAVE_SETJMP_H 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the `setrlimit' function. */
-#define HAVE_SETRLIMIT 1
-
-/* Define to 1 if you have the setsockopt function. */
-/* #undef HAVE_SETSOCKOPT */
-
-/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
-
-/* Define to 1 if you have the `sigaction' function. */
-#define HAVE_SIGACTION 1
-
-/* Define to 1 if you have the `siginterrupt' function. */
-/* #undef HAVE_SIGINTERRUPT */
-
-/* Define to 1 if you have the `signal' function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* If you have sigsetjmp */
-/* #undef HAVE_SIGSETJMP */
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if you have the <ssl.h> header file. */
-/* #undef HAVE_SSL_H */
-#define HAVE_SSL_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the `strcmpi' function. */
-/* #undef HAVE_STRCMPI */
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror_r' function. */
-#define HAVE_STRERROR_R 1
-
-/* Define to 1 if you have the `stricmp' function. */
-/* #undef HAVE_STRICMP */
-#define HAVE_STRICMP 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strstr' function. */
-#define HAVE_STRSTR 1
-
-/* Define to 1 if you have the `strtok_r' function. */
-#define HAVE_STRTOK_R 1
-
-/* Define to 1 if you have the `strtoll' function. */
-#define HAVE_STRTOLL 1
-
-/* if struct sockaddr_storage is defined */
-/* #undef HAVE_STRUCT_SOCKADDR_STORAGE */
-
-/* Define this if you have struct timeval */
-#define HAVE_STRUCT_TIMEVAL 1
-
-/* Define to 1 if you have the <sys/filio.h> header file. */
-#define HAVE_SYS_FILIO_H 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-/* #undef HAVE_SYS_POLL_H */
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-#define HAVE_SYS_SOCKIO_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/utime.h> header file. */
-/* #undef HAVE_SYS_UTIME_H */
-
-/* Define to 1 if you have the <termios.h> header file. */
-/* #undef HAVE_TERMIOS_H */
-
-/* Define to 1 if you have the <termio.h> header file. */
-/* #undef HAVE_TERMIO_H */
-
-/* Define to 1 if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define to 1 if you have the <tld.h> header file. */
-/* #undef HAVE_TLD_H */
-
-/* Define to 1 if you have the `tld_strerror' function. */
-/* #undef HAVE_TLD_STRERROR */
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `utime' function. */
-#define HAVE_UTIME 1
-
-/* Define to 1 if you have the <utime.h> header file. */
-#define HAVE_UTIME_H 1
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-/* #undef HAVE_WINSOCK2_H */
-
-/* Define this symbol if your OS supports changing the contents of argv */
-/* #undef HAVE_WRITABLE_ARGV */
-
-/* Define to 1 if you have the ws2tcpip.h header file. */
-/* #undef HAVE_WS2TCPIP_H */
-
-/* Define to 1 if you have the <x509.h> header file. */
-/* #undef HAVE_X509_H */
-
-/* if you have the zlib.h header file */
-/* #undef HAVE_ZLIB_H */
-
-/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
-/* #undef NEED_REENTRANT */
-
-/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
-/* #undef NEED_THREAD_SAFE */
-
-/* cpu-machine-OS */
-#define OS "s390x-ibm-tpf"
-
-/* Name of package */
-#define PACKAGE "curl"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT \
-  "a suitable curl mailing list => https://curl.se/mail/"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "curl"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "curl -"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "curl"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "-"
-
-/* a suitable file to read random data from */
-/* #undef RANDOM_FILE */
-
-/* Define to the type of arg 1 for `select'. */
-#define SELECT_TYPE_ARG1 int
-
-/* Define to the type of args 2, 3 and 4 for `select'. */
-#define SELECT_TYPE_ARG234 (fd_set *)
-
-/* Define to the type of arg 5 for `select'. */
-#define SELECT_TYPE_ARG5 (struct timeval *)
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T 8
-
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
-/* Define to the size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 8
-
-/* The size of `size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T 8
-
-/* The size of `time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T 8
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define if you want to enable ares support */
-/* #undef USE_ARES */
-
-/* if GnuTLS is enabled */
-/* #undef USE_GNUTLS */
-
-/* If you want to build curl with the built-in manual */
-/* #undef USE_MANUAL */
-
-/* if OpenSSL is in use */
-/* #undef USE_OPENSSL */
-
-/* if SSL is enabled */
-/* #undef USE_OPENSSL */
-
-/* to enable SSPI support */
-/* #undef USE_WINDOWS_SSPI */
-
-/* Version number of package */
-#define VERSION "not-used"
-
-/* Define to avoid automatic inclusion of winsock.h */
-/* #undef WIN32_LEAN_AND_MEAN */
-
-/* Define to 1 if on AIX 3.
-   System headers sometimes define this.
-   We just want to avoid a redefinition error message.  */
-#ifndef _ALL_SOURCE
-/* # undef _ALL_SOURCE */
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* type to use in place of in_addr_t if not defined */
-/* #undef in_addr_t */
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* the signed version of size_t */
-/* #undef ssize_t */
-
-/* Define to 1 if you have the recv function. */
-#define HAVE_RECV 1
-
-/* Define to the type of arg 1 for recv. */
-#define RECV_TYPE_ARG1 int
-
-/* Define to the type of arg 2 for recv. */
-#define RECV_TYPE_ARG2 char *
-
-/* Define to the type of arg 3 for recv. */
-#define RECV_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recv. */
-#define RECV_TYPE_ARG4 int
-
-/* Define to the function return type for recv. */
-#define RECV_TYPE_RETV int
-
-/* Define to 1 if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
-/* Define to 1 if you have the send function. */
-#define HAVE_SEND 1
-
-/* Define to the type of arg 1 for send. */
-#define SEND_TYPE_ARG1 int
-
-/* Define to the type qualifier of arg 2 for send. */
-#define SEND_QUAL_ARG2 const
-
-/* Define to the type of arg 2 for send. */
-#define SEND_TYPE_ARG2 char *
-
-/* Define to the type of arg 3 for send. */
-#define SEND_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for send. */
-#define SEND_TYPE_ARG4 int
-
-/* Define to the function return type for send. */
-#define SEND_TYPE_RETV int
-
-#define CURL_DOES_CONVERSIONS
-#ifndef CURL_ICONV_CODESET_OF_HOST
-#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
-#endif
-
-
-#endif /* HEADER_CURL_CONFIG_TPF_H */
diff --git a/lib/config-vxworks.h b/lib/config-vxworks.h
deleted file mode 100644 (file)
index af1d873..0000000
+++ /dev/null
@@ -1,811 +0,0 @@
-#ifndef HEADER_CURL_CONFIG_VXWORKS_H
-#define HEADER_CURL_CONFIG_VXWORKS_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-/* =============================================================== */
-/*               Hand crafted config file for VxWorks              */
-/* =============================================================== */
-
-/* Location of default ca bundle */
-/* #undef CURL_CA_BUNDLE */
-
-/* Location of default ca path */
-/* #undef CURL_CA_PATH */
-
-/* to disable cookies support */
-/* #undef CURL_DISABLE_COOKIES */
-
-/* to disable cryptographic authentication */
-/* #undef CURL_DISABLE_CRYPTO_AUTH */
-
-/* to disable DICT */
-/* #undef CURL_DISABLE_DICT */
-
-/* to disable FILE */
-/* #undef CURL_DISABLE_FILE */
-
-/* to disable FTP */
-#define CURL_DISABLE_FTP 1
-
-/* to disable HTTP */
-/* #undef CURL_DISABLE_HTTP */
-
-/* to disable LDAP */
-#define CURL_DISABLE_LDAP 1
-
-/* to disable LDAPS */
-#define CURL_DISABLE_LDAPS 1
-
-/* to disable NTLM authentication */
-#define CURL_DISABLE_NTLM 1
-
-/* to disable proxies */
-/* #undef CURL_DISABLE_PROXY */
-
-/* to disable TELNET */
-#define CURL_DISABLE_TELNET 1
-
-/* to disable TFTP */
-#define CURL_DISABLE_TFTP 1
-
-/* to disable verbose strings */
-/* #undef CURL_DISABLE_VERBOSE_STRINGS */
-
-/* Definition to make a library symbol externally visible. */
-/* #undef CURL_EXTERN_SYMBOL */
-
-/* Use Windows LDAP implementation */
-/* #undef USE_WIN32_LDAP */
-
-/* your Entropy Gathering Daemon socket pathname */
-/* #undef EGD_SOCKET */
-
-/* Define if you want to enable IPv6 support */
-#define ENABLE_IPV6 1
-
-/* Define to 1 if you have the alarm function. */
-#define HAVE_ALARM 1
-
-/* Define to 1 if you have the <alloca.h> header file. */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <arpa/tftp.h> header file. */
-/* #undef HAVE_ARPA_TFTP_H */
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the `basename' function. */
-/* #undef HAVE_BASENAME */
-
-/* Define to 1 if bool is an available type. */
-#define HAVE_BOOL_T 1
-
-/* 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 `closesocket' function. */
-/* #undef HAVE_CLOSESOCKET */
-
-/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the fcntl function. */
-#define HAVE_FCNTL 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have a working fcntl O_NONBLOCK function. */
-#define HAVE_FCNTL_O_NONBLOCK 1
-
-/* Define to 1 if you have the freeaddrinfo function. */
-#define HAVE_FREEADDRINFO 1
-
-/* Define to 1 if you have the ftruncate function. */
-#define HAVE_FTRUNCATE 1
-
-/* Define to 1 if you have a working getaddrinfo function. */
-#define HAVE_GETADDRINFO 1
-
-/* Define to 1 if you have the `geteuid' function. */
-/* #undef HAVE_GETEUID */
-
-/* Define to 1 if you have the gethostbyname function. */
-#define HAVE_GETHOSTBYNAME 1
-
-/* Define to 1 if you have the gethostbyname_r function. */
-/* #undef HAVE_GETHOSTBYNAME_R */
-
-/* gethostbyname_r() takes 3 args */
-/* #undef HAVE_GETHOSTBYNAME_R_3 */
-
-/* gethostbyname_r() takes 5 args */
-/* #undef HAVE_GETHOSTBYNAME_R_5 */
-
-/* gethostbyname_r() takes 6 args */
-/* #undef HAVE_GETHOSTBYNAME_R_6 */
-
-/* Define to 1 if you have the gethostname function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have a working getifaddrs function. */
-/* #undef HAVE_GETIFADDRS */
-
-/* Define to 1 if you have the `getpass_r' function. */
-/* #undef HAVE_GETPASS_R */
-
-/* Define to 1 if you have the `getppid' function. */
-#define HAVE_GETPPID 1
-
-/* Define to 1 if you have the `getprotobyname' function. */
-#define HAVE_GETPROTOBYNAME 1
-
-/* Define to 1 if you have the `getpwuid' function. */
-/* #undef HAVE_GETPWUID */
-
-/* Define to 1 if you have the `getrlimit' function. */
-#define HAVE_GETRLIMIT 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-/* #undef HAVE_GETTIMEOFDAY */
-
-/* Define to 1 if you have a working glibc-style strerror_r function. */
-/* #undef HAVE_GLIBC_STRERROR_R */
-
-/* Define to 1 if you have a working gmtime_r function. */
-#define HAVE_GMTIME_R 1
-
-/* if you have the gssapi libraries */
-/* #undef HAVE_GSSAPI */
-
-/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
-/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
-
-/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
-/* #undef HAVE_GSSAPI_GSSAPI_H */
-
-/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
-/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */
-
-/* if you have the GNU gssapi libraries */
-/* #undef HAVE_GSSGNU */
-
-/* if you have the Heimdal gssapi libraries */
-/* #undef HAVE_GSSHEIMDAL */
-
-/* if you have the MIT gssapi libraries */
-/* #undef HAVE_GSSMIT */
-
-/* Define to 1 if you have the `idna_strerror' function. */
-/* #undef HAVE_IDNA_STRERROR */
-
-/* Define to 1 if you have the `idn_free' function. */
-/* #undef HAVE_IDN_FREE */
-
-/* Define to 1 if you have the <idn-free.h> header file. */
-/* #undef HAVE_IDN_FREE_H */
-
-/* Define to 1 if you have the <ifaddrs.h> header file. */
-/* #undef HAVE_IFADDRS_H */
-
-/* Define to 1 if you have the `inet_addr' function. */
-#define HAVE_INET_ADDR 1
-
-/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
-/* #undef HAVE_INET_NTOP */
-
-/* Define to 1 if you have a IPv6 capable working inet_pton function. */
-/* #undef HAVE_INET_PTON */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the ioctl function. */
-#define HAVE_IOCTL 1
-
-/* Define to 1 if you have the ioctlsocket function. */
-/* #undef HAVE_IOCTLSOCKET */
-
-/* Define to 1 if you have the IoctlSocket camel case function. */
-/* #undef HAVE_IOCTLSOCKET_CAMEL */
-
-/* Define to 1 if you have a working IoctlSocket camel case FIONBIO function.
-   */
-/* #undef HAVE_IOCTLSOCKET_CAMEL_FIONBIO */
-
-/* Define to 1 if you have a working ioctlsocket FIONBIO function. */
-/* #undef HAVE_IOCTLSOCKET_FIONBIO */
-
-/* Define to 1 if you have a working ioctl FIONBIO function. */
-#define HAVE_IOCTL_FIONBIO 1
-
-/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
-#define HAVE_IOCTL_SIOCGIFADDR 1
-
-/* Define to 1 if you have the <io.h> header file. */
-#define HAVE_IO_H 1
-
-/* if you have the Kerberos4 libraries (including -ldes) */
-/* #undef HAVE_KRB4 */
-
-/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
-/* #undef HAVE_KRB_GET_OUR_IP_FOR_REALM */
-
-/* Define to 1 if you have the <krb.h> header file. */
-/* #undef HAVE_KRB_H */
-
-/* Define to 1 if you have the lber.h header file. */
-/* #undef HAVE_LBER_H */
-
-/* Define to 1 if you have the ldapssl.h header file. */
-/* #undef HAVE_LDAPSSL_H */
-
-/* Define to 1 if you have the ldap.h header file. */
-/* #undef HAVE_LDAP_H */
-
-/* Use LDAPS implementation */
-/* #undef HAVE_LDAP_SSL */
-
-/* Define to 1 if you have the ldap_ssl.h header file. */
-/* #undef HAVE_LDAP_SSL_H */
-
-/* Define to 1 if you have the `ldap_url_parse' function. */
-/* #undef HAVE_LDAP_URL_PARSE */
-
-/* Define to 1 if you have the <libgen.h> header file. */
-/* #undef HAVE_LIBGEN_H */
-
-/* Define to 1 if you have the `idn' library (-lidn). */
-/* #undef HAVE_LIBIDN */
-
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-/* #undef HAVE_LIBRESOLV */
-
-/* Define to 1 if you have the `resolve' library (-lresolve). */
-/* #undef HAVE_LIBRESOLVE */
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-/* #undef HAVE_LIBSOCKET */
-
-/* Define to 1 if you have the `ssh2' library (-lssh2). */
-/* #undef HAVE_LIBSSH2 */
-
-/* Define to 1 if you have the <libssh2.h> header file. */
-/* #undef HAVE_LIBSSH2_H */
-
-/* Define to 1 if you have the `libssh2_version' function. */
-/* #undef HAVE_LIBSSH2_VERSION */
-
-/* if zlib is available */
-#define HAVE_LIBZ 1
-
-/* if your compiler supports LL */
-#define HAVE_LL 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if you have a working localtime_r function. */
-#define HAVE_LOCALTIME_R 1
-
-/* Define to 1 if the compiler supports the 'long long' data type. */
-#define HAVE_LONGLONG 1
-
-/* Define to 1 if you have the malloc.h header file. */
-#define HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the memory.h header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the MSG_NOSIGNAL flag. */
-/* #undef HAVE_MSG_NOSIGNAL */
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#define HAVE_NETDB_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#define HAVE_NETINET_TCP_H 1
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if NI_WITHSCOPEID exists and works. */
-/* #undef HAVE_NI_WITHSCOPEID */
-
-/* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE
-   */
-/* #undef HAVE_OLD_GSSMIT */
-
-/* Define to 1 if you have the <openssl/crypto.h> header file. */
-#define HAVE_OPENSSL_CRYPTO_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-#define HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/pem.h> header file. */
-#define HAVE_OPENSSL_PEM_H 1
-
-/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-#define HAVE_OPENSSL_PKCS12_H 1
-
-/* Define to 1 if you have the <openssl/rsa.h> header file. */
-#define HAVE_OPENSSL_RSA_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-#define HAVE_OPENSSL_SSL_H 1
-
-/* Define to 1 if you have the <openssl/x509.h> header file. */
-#define HAVE_OPENSSL_X509_H 1
-
-/* Define to 1 if you have the <pem.h> header file. */
-/* #undef HAVE_PEM_H */
-
-/* Define to 1 if you have the `pipe' function. */
-#define HAVE_PIPE 1
-
-/* Define to 1 if you have a working poll function. */
-/* #undef HAVE_POLL */
-
-/* If you have a fine poll */
-/* #undef HAVE_POLL_FINE */
-
-/* Define to 1 if you have the <poll.h> header file. */
-/* #undef HAVE_POLL_H */
-
-/* Define to 1 if you have a working POSIX-style strerror_r function. */
-/* #undef HAVE_POSIX_STRERROR_R */
-
-/* Define to 1 if you have the <pwd.h> header file. */
-/* #undef HAVE_PWD_H */
-
-/* Define to 1 if you have the `RAND_egd' function. */
-#define HAVE_RAND_EGD 1
-
-/* Define to 1 if you have the `RAND_screen' function. */
-/* #undef HAVE_RAND_SCREEN */
-
-/* Define to 1 if you have the `RAND_status' function. */
-#define HAVE_RAND_STATUS 1
-
-/* Define to 1 if you have the recv function. */
-#define HAVE_RECV 1
-
-/* Define to 1 if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to 1 if you have the select function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the send function. */
-#define HAVE_SEND 1
-
-/* Define to 1 if you have the <setjmp.h> header file. */
-#define HAVE_SETJMP_H 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the `setmode' function. */
-#define HAVE_SETMODE 1
-
-/* Define to 1 if you have the `setrlimit' function. */
-#define HAVE_SETRLIMIT 1
-
-/* Define to 1 if you have the setsockopt function. */
-#define HAVE_SETSOCKOPT 1
-
-/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-/* #undef HAVE_SETSOCKOPT_SO_NONBLOCK */
-
-/* Define to 1 if you have the sigaction function. */
-#define HAVE_SIGACTION 1
-
-/* Define to 1 if you have the siginterrupt function. */
-#define HAVE_SIGINTERRUPT 1
-
-/* Define to 1 if you have the signal function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the sigsetjmp function or macro. */
-/* #undef HAVE_SIGSETJMP */
-
-/* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
-#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if you have the <ssl.h> header file. */
-/* #undef HAVE_SSL_H */
-
-/* Define to 1 if you have the <stdbool.h> header file. */
-#define HAVE_STDBOOL_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#define HAVE_STDIO_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the strcasecmp function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the strcmpi function. */
-/* #undef HAVE_STRCMPI */
-
-/* Define to 1 if you have the strdup function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the strerror_r function. */
-#define HAVE_STRERROR_R 1
-
-/* Define to 1 if you have the stricmp function. */
-/* #undef HAVE_STRICMP */
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the strncmpi function. */
-/* #undef HAVE_STRNCMPI */
-
-/* Define to 1 if you have the strnicmp function. */
-/* #undef HAVE_STRNICMP */
-
-/* Define to 1 if you have the <stropts.h> header file. */
-/* #undef HAVE_STROPTS_H */
-
-/* Define to 1 if you have the strstr function. */
-#define HAVE_STRSTR 1
-
-/* Define to 1 if you have the strtok_r function. */
-#define HAVE_STRTOK_R 1
-
-/* Define to 1 if you have the strtoll function. */
-/* #undef HAVE_STRTOLL */
-
-/* if struct sockaddr_storage is defined */
-#define HAVE_STRUCT_SOCKADDR_STORAGE 1
-
-/* Define to 1 if you have the timeval struct. */
-#define HAVE_STRUCT_TIMEVAL 1
-
-/* Define to 1 if you have the <sys/filio.h> header file. */
-/* #undef HAVE_SYS_FILIO_H */
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-/* #undef HAVE_SYS_PARAM_H */
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-/* #undef HAVE_SYS_POLL_H */
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-/* #undef HAVE_SYS_SELECT_H */
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-/* #undef HAVE_SYS_TIME_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#define HAVE_SYS_UIO_H 1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#define HAVE_SYS_UN_H 1
-
-/* Define to 1 if you have the <sys/utime.h> header file. */
-#define HAVE_SYS_UTIME_H 1
-
-/* Define to 1 if you have the <termios.h> header file. */
-#define HAVE_TERMIOS_H 1
-
-/* Define to 1 if you have the <termio.h> header file. */
-#define HAVE_TERMIO_H 1
-
-/* Define to 1 if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define to 1 if you have the <tld.h> header file. */
-/* #undef HAVE_TLD_H */
-
-/* Define to 1 if you have the `tld_strerror' function. */
-/* #undef HAVE_TLD_STRERROR */
-
-/* Define to 1 if you have the `uname' function. */
-#define HAVE_UNAME 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `utime' function. */
-#define HAVE_UTIME 1
-
-/* Define to 1 if you have the <utime.h> header file. */
-#define HAVE_UTIME_H 1
-
-/* Define to 1 if compiler supports C99 variadic macro style. */
-#define HAVE_VARIADIC_MACROS_C99 1
-
-/* Define to 1 if compiler supports old gcc variadic macro style. */
-#define HAVE_VARIADIC_MACROS_GCC 1
-
-/* Define to 1 if you have a working vxworks-style strerror_r function. */
-#define HAVE_VXWORKS_STRERROR_R 1
-
-/* Define to 1 if you have the winber.h header file. */
-/* #undef HAVE_WINBER_H */
-
-/* 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 */
-
-/* Define this symbol if your OS supports changing the contents of argv */
-#define HAVE_WRITABLE_ARGV 1
-
-/* Define to 1 if you have the writev function. */
-#define HAVE_WRITEV 1
-
-/* Define to 1 if you have the ws2tcpip.h header file. */
-/* #undef HAVE_WS2TCPIP_H */
-
-/* Define to 1 if you have the <x509.h> header file. */
-/* #undef HAVE_X509_H */
-
-/* if you have the zlib.h header file */
-#define HAVE_ZLIB_H 1
-
-/* Define to 1 if you need the lber.h header file even with ldap.h */
-/* #undef NEED_LBER_H */
-
-/* Define to 1 if you need the malloc.h header file even with stdlib.h */
-/* #undef NEED_MALLOC_H */
-
-/* Define to 1 if you need the memory.h header file even with stdlib.h */
-/* #undef NEED_MEMORY_H */
-
-/* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
-/* #undef NEED_REENTRANT */
-
-/* Define to 1 if _THREAD_SAFE preprocessor symbol must be defined. */
-/* #undef NEED_THREAD_SAFE */
-
-/* Define to 1 if the open function requires three arguments. */
-#define OPEN_NEEDS_ARG3 1
-
-/* cpu-machine-OS */
-#define OS "unknown-unknown-vxworks"
-
-/* Name of package */
-#define PACKAGE "curl"
-
-/* a suitable file to read random data from */
-#define RANDOM_FILE "/dev/urandom"
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 int
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 void
-
-/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
-/* #undef RECVFROM_TYPE_ARG5_IS_VOID */
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 socklen_t
-
-/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
-/* #undef RECVFROM_TYPE_ARG6_IS_VOID */
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
-/* Define to the type of arg 1 for recv. */
-#define RECV_TYPE_ARG1 int
-
-/* Define to the type of arg 2 for recv. */
-#define RECV_TYPE_ARG2 void *
-
-/* Define to the type of arg 3 for recv. */
-#define RECV_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for recv. */
-#define RECV_TYPE_ARG4 int
-
-/* Define to the function return type for recv. */
-#define RECV_TYPE_RETV int
-
-/* Define to the type qualifier of arg 5 for select. */
-#define SELECT_QUAL_ARG5
-
-/* Define to the type of arg 1 for select. */
-#define SELECT_TYPE_ARG1 int
-
-/* Define to the type of args 2, 3 and 4 for select. */
-#define SELECT_TYPE_ARG234 fd_set *
-
-/* Define to the type of arg 5 for select. */
-#define SELECT_TYPE_ARG5 struct timeval *
-
-/* Define to the function return type for select. */
-#define SELECT_TYPE_RETV int
-
-/* Define to the type qualifier of arg 2 for send. */
-#define SEND_QUAL_ARG2 const
-
-/* Define to the type of arg 1 for send. */
-#define SEND_TYPE_ARG1 int
-
-/* Define to the type of arg 2 for send. */
-#define SEND_TYPE_ARG2 void *
-
-/* Define to the type of arg 3 for send. */
-#define SEND_TYPE_ARG3 size_t
-
-/* Define to the type of arg 4 for send. */
-#define SEND_TYPE_ARG4 int
-
-/* Define to the function return type for send. */
-#define SEND_TYPE_RETV int
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* The size of `off_t', as computed by sizeof. */
-#define SIZEOF_OFF_T 8
-
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
-/* The size of `size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T 4
-
-/* The size of `time_t', as computed by sizeof. */
-#define SIZEOF_TIME_T 4
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to the type of arg 3 for strerror_r. */
-/* #undef STRERROR_R_TYPE_ARG3 */
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define if you want to enable c-ares support */
-/* #undef USE_ARES */
-
-/* if GnuTLS is enabled */
-/* #undef USE_GNUTLS */
-
-/* if libSSH2 is in use */
-/* #undef USE_LIBSSH2 */
-
-/* If you want to build curl with the built-in manual */
-#define USE_MANUAL 1
-
-/* if NSS is enabled */
-/* #undef USE_NSS */
-
-/* if OpenSSL is in use */
-#define USE_OPENSSL 1
-
-/* Define to 1 if you are building a Windows target without large file
-   support. */
-/* #undef USE_WIN32_LARGE_FILES */
-
-/* to enable SSPI support */
-/* #undef USE_WINDOWS_SSPI */
-
-/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-/* #undef USE_YASSLEMUL */
-
-/* Define to avoid automatic inclusion of winsock.h */
-/* #undef WIN32_LEAN_AND_MEAN */
-
-/* Define to 1 if OS is AIX. */
-#ifndef _ALL_SOURCE
-/* #  undef _ALL_SOURCE */
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Type to use in place of in_addr_t when system does not provide it. */
-/* #undef in_addr_t */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
-   calls it, or to nothing if 'inline' is not supported under any name.  */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* the signed version of size_t */
-/* #undef ssize_t */
-
-#endif /* HEADER_CURL_CONFIG_VXWORKS_H */
index 89593a815d2de6beaaa4a05305981877c3e75804..00e8663d2fb85d09841006099df2298e2c194e10 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* ================================================================ */
 /* Define if you have the <fcntl.h> header file. */
 #define HAVE_FCNTL_H 1
 
-/* Define if you have the <getopt.h> header file. */
-#if defined(__MINGW32__) || defined(__POCC__)
-#define HAVE_GETOPT_H 1
-#endif
-
 /* Define to 1 if you have the <inttypes.h> header file. */
 #if defined(_MSC_VER) && (_MSC_VER >= 1800)
 #define HAVE_INTTYPES_H 1
@@ -81,7 +78,8 @@
 /* #define HAVE_SSL_H 1 */
 
 /* Define to 1 if you have the <stdbool.h> header file. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \
+    defined(__MINGW64_VERSION_MAJOR)
 #define HAVE_STDBOOL_H 1
 #endif
 
 #define HAVE_TIME_H 1
 
 /* Define if you have the <unistd.h> header file. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \
-    defined(__POCC__)
+#if defined(__MINGW32__) || defined(__LCC__) || defined(__POCC__)
 #define HAVE_UNISTD_H 1
 #endif
 
 #define HAVE_WS2TCPIP_H 1
 #endif
 
+/* Define to 1 if you have the <setjmp.h> header file. */
+#define HAVE_SETJMP_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <libgen.h> header file. */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_LIBGEN_H 1
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                        OTHER HEADER INFO                         */
 /* ---------------------------------------------------------------- */
 /* #define TIME_WITH_SYS_TIME 1 */
 
 /* Define to 1 if bool is an available type. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1800)
+#if (defined(_MSC_VER) && (_MSC_VER >= 1800)) || \
+    defined(__MINGW64_VERSION_MAJOR)
 #define HAVE_BOOL_T 1
 #endif
 
 /* Define if you have the closesocket function. */
 #define HAVE_CLOSESOCKET 1
 
-/* Define if you don't have vprintf but do have _doprnt. */
-/* #define HAVE_DOPRNT 1 */
-
 /* Define if you have the ftruncate function. */
-/* #define HAVE_FTRUNCATE 1 */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_FTRUNCATE 1
+#endif
 
 /* Define to 1 if you have the `getpeername' function. */
 #define HAVE_GETPEERNAME 1
 /* Define if you have the gethostname function. */
 #define HAVE_GETHOSTNAME 1
 
-/* Define if you have the getpass function. */
-/* #define HAVE_GETPASS 1 */
-
-/* Define if you have the getservbyname function. */
-#define HAVE_GETSERVBYNAME 1
-
-/* Define if you have the getprotobyname function. */
-#define HAVE_GETPROTOBYNAME
-
 /* Define if you have the gettimeofday function. */
 /* #define HAVE_GETTIMEOFDAY 1 */
 
-/* Define if you have the inet_addr function. */
-#define HAVE_INET_ADDR 1
-
 /* Define if you have the ioctlsocket function. */
 #define HAVE_IOCTLSOCKET 1
 
 /* Define if you have a working ioctlsocket FIONBIO function. */
 #define HAVE_IOCTLSOCKET_FIONBIO 1
 
-/* Define if you have the RAND_screen function when using SSL. */
-#define HAVE_RAND_SCREEN 1
-
-/* Define if you have the `RAND_status' function when using SSL. */
-#define HAVE_RAND_STATUS 1
-
-/* Define if you have the `CRYPTO_cleanup_all_ex_data' function.
-   This is present in OpenSSL versions after 0.9.6b */
-#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
 /* Define if you have the select function. */
 #define HAVE_SELECT 1
 
 /* Define if you have the setmode function. */
 #define HAVE_SETMODE 1
 
-/* Define if you have the setvbuf function. */
-#define HAVE_SETVBUF 1
-
 /* Define if you have the socket function. */
 #define HAVE_SOCKET 1
 
 /* Define if you have the strdup function. */
 #define HAVE_STRDUP 1
 
-/* Define if you have the strftime function. */
-#define HAVE_STRFTIME 1
-
 /* Define if you have the stricmp function. */
 #define HAVE_STRICMP 1
 
-/* Define if you have the strnicmp function. */
-#define HAVE_STRNICMP 1
-
-/* Define if you have the strstr function. */
-#define HAVE_STRSTR 1
-
 /* Define if you have the strtoll function. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__POCC__) || \
+#if defined(__MINGW32__) || defined(__POCC__) || \
     (defined(_MSC_VER) && (_MSC_VER >= 1800))
 #define HAVE_STRTOLL 1
 #endif
 /* Define to the function return type for recv. */
 #define RECV_TYPE_RETV int
 
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 SOCKET
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
 /* Define if you have the send function. */
 #define HAVE_SEND 1
 
 /* Define to the function return type for send. */
 #define SEND_TYPE_RETV int
 
+/* Define to 1 if you have the snprintf function. */
+#if defined(_MSC_VER) && (_MSC_VER >= 1900)
+#define HAVE_SNPRINTF 1
+#endif
+
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600  /* Vista */
+/* Define to 1 if you have a IPv6 capable working inet_ntop function. */
+#define HAVE_INET_NTOP 1
+/* Define to 1 if you have a IPv6 capable working inet_pton function. */
+#define HAVE_INET_PTON 1
+#endif
+
+/* Define to 1 if you have the `basename' function. */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_BASENAME 1
+#endif
+
+/* Define to 1 if you have the strtok_r function. */
+#if defined(__MINGW64_VERSION_MAJOR)
+#define HAVE_STRTOK_R 1
+#endif
+
+/* Define to 1 if you have the signal function. */
+#define HAVE_SIGNAL 1
+
 /* ---------------------------------------------------------------- */
 /*                       TYPEDEF REPLACEMENTS                       */
 /* ---------------------------------------------------------------- */
 
 /* Define if ssize_t is not an available 'typedefed' type. */
 #ifndef _SSIZE_T_DEFINED
-#  if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \
-      defined(__POCC__) || \
-      defined(__MINGW32__)
+#  if defined(__POCC__) || defined(__MINGW32__)
 #  elif defined(_WIN64)
 #    define _SSIZE_T_DEFINED
 #    define ssize_t __int64
 /* Define to the size of `int', as computed by sizeof. */
 #define SIZEOF_INT 4
 
-/* Define to the size of `long double', as computed by sizeof. */
-#define SIZEOF_LONG_DOUBLE 16
-
 /* Define to the size of `long long', as computed by sizeof. */
 /* #define SIZEOF_LONG_LONG 8 */
 
-/* Define to the size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
 /* Define to the size of `long', as computed by sizeof. */
 #define SIZEOF_LONG 4
 
 /* Define to the size of `curl_off_t', as computed by sizeof. */
 #define SIZEOF_CURL_OFF_T 8
 
+/* Define to the size of `off_t', as computed by sizeof. */
+#ifndef SIZEOF_OFF_T
+#define SIZEOF_OFF_T 8
+#endif
+
 /* ---------------------------------------------------------------- */
 /*               BSD-style lwIP TCP/IP stack SPECIFIC               */
 /* ---------------------------------------------------------------- */
 #  undef SEND_TYPE_ARG3
 #  define HAVE_FREEADDRINFO
 #  define HAVE_GETADDRINFO
-#  define HAVE_GETHOSTBYNAME
 #  define HAVE_GETHOSTBYNAME_R
 #  define HAVE_GETHOSTBYNAME_R_6
 #  define LWIP_POSIX_SOCKETS_IO_NAMES 0
 #endif
 
 /* Define if the compiler supports the 'long long' data type. */
-#if defined(__MINGW32__) || defined(__WATCOMC__)      || \
+#if defined(__MINGW32__) || \
     (defined(_MSC_VER)     && (_MSC_VER     >= 1310)) || \
     (defined(__BORLANDC__) && (__BORLANDC__ >= 0x561))
 #define HAVE_LONGLONG 1
 
 /* mingw-w64, mingw using >= MSVCR80, and visual studio >= 2005 (MSVCR80)
    all default to 64-bit time_t unless _USE_32BIT_TIME_T is defined */
-#ifdef __MINGW32__
-#  include <_mingw.h>
-#endif
 #if defined(__MINGW64_VERSION_MAJOR) || \
     (defined(__MINGW32__) && (__MSVCRT_VERSION__ >= 0x0800)) || \
     (defined(_MSC_VER) && (_MSC_VER >= 1400))
@@ -583,11 +551,6 @@ Vista
 /* Define if struct sockaddr_in6 has the sin6_scope_id member. */
 #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
 
-#if defined(HAVE_WINSOCK2_H) && defined(_WIN32_WINNT) && \
-    (_WIN32_WINNT >= 0x0600)
-#define HAVE_STRUCT_POLLFD 1
-#endif
-
 /* ---------------------------------------------------------------- */
 /*                        LARGE FILE SUPPORT                        */
 /* ---------------------------------------------------------------- */
@@ -604,10 +567,6 @@ Vista
 #  define USE_WIN32_LARGE_FILES
 #endif
 
-#if defined(__WATCOMC__) && !defined(USE_WIN32_LARGE_FILES)
-#  define USE_WIN32_LARGE_FILES
-#endif
-
 #if defined(__POCC__)
 #  undef USE_WIN32_LARGE_FILES
 #endif
@@ -616,6 +575,13 @@ Vista
 #  define USE_WIN32_SMALL_FILES
 #endif
 
+/* Number of bits in a file offset, on hosts where this is settable. */
+#if defined(USE_WIN32_LARGE_FILES) && defined(__MINGW64_VERSION_MAJOR)
+#  ifndef _FILE_OFFSET_BITS
+#  define _FILE_OFFSET_BITS 64
+#  endif
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                       DNS RESOLVER SPECIALTY                     */
 /* ---------------------------------------------------------------- */
@@ -641,7 +607,7 @@ Vista
 /*                           LDAP SUPPORT                           */
 /* ---------------------------------------------------------------- */
 
-#if defined(CURL_HAS_NOVELL_LDAPSDK) || defined(CURL_HAS_MOZILLA_LDAPSDK)
+#if defined(CURL_HAS_NOVELL_LDAPSDK)
 #undef USE_WIN32_LDAP
 #define HAVE_LDAP_SSL_H 1
 #define HAVE_LDAP_URL_PARSE 1
@@ -654,13 +620,6 @@ Vista
 #define USE_WIN32_LDAP 1
 #endif
 
-#if defined(__WATCOMC__) && defined(USE_WIN32_LDAP)
-#if __WATCOMC__ < 1280
-#define WINBERAPI  __declspec(cdecl)
-#define WINLDAPAPI __declspec(cdecl)
-#endif
-#endif
-
 #if defined(__POCC__) && defined(USE_WIN32_LDAP)
 #  define CURL_DISABLE_LDAP 1
 #endif
@@ -678,7 +637,7 @@ Vista
 /* ---------------------------------------------------------------- */
 
 /* Define cpu-machine-OS */
-#undef OS
+#if !defined(OS)
 #if defined(_M_IX86) || defined(__i386__) /* x86 (MSVC or gcc) */
 #define OS "i386-pc-win32"
 #elif defined(_M_X64) || defined(__x86_64__) /* x86_64 (MSVC >=2005 or gcc) */
@@ -692,6 +651,7 @@ Vista
 #else
 #define OS "unknown-pc-win32"
 #endif
+#endif
 
 /* Name of package */
 #define PACKAGE "curl"
index 889028b269c6c8f5eb488d0c281b5f4b3b1408b3..308bfe9e0aca3e85e8822559bea24c8bbd079651 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* ================================================================ */
@@ -42,9 +44,6 @@
 /* Define if you have the <fcntl.h> header file.  */
 #define HAVE_FCNTL_H 1
 
-/* Define if you have the <getopt.h> header file.  */
-/* #define HAVE_GETOPT_H 1 */
-
 /* Define if you have the <io.h> header file.  */
 #define HAVE_IO_H 1
 
 #define HAVE_TIME_H 1
 
 /* Define if you have the <unistd.h> header file.  */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__)
+#if defined(__MINGW32__) || defined(__LCC__)
 #define HAVE_UNISTD_H 1
 #endif
 
 /* Define if you have the closesocket function.  */
 #define HAVE_CLOSESOCKET 1
 
-/* Define if you don't have vprintf but do have _doprnt.  */
-/* #define HAVE_DOPRNT 1 */
-
 /* Define if you have the gethostname function.  */
 #define HAVE_GETHOSTNAME 1
 
-/* Define if you have the getpass function.  */
-/* #define HAVE_GETPASS 1 */
-
-/* Define if you have the getservbyname function.  */
-#define HAVE_GETSERVBYNAME 1
-
 /* Define if you have the gettimeofday function.  */
 /*  #define HAVE_GETTIMEOFDAY 1 */
 
-/* Define if you have the inet_addr function.  */
-#define HAVE_INET_ADDR 1
-
 /* Define if you have the ioctlsocket function. */
 #define HAVE_IOCTLSOCKET 1
 
 /* Define if you have a working ioctlsocket FIONBIO function. */
 #define HAVE_IOCTLSOCKET_FIONBIO 1
 
-/* Define if you have the RAND_screen function when using SSL  */
-#define HAVE_RAND_SCREEN 1
-
-/* Define if you have the `RAND_status' function when using SSL. */
-#define HAVE_RAND_STATUS 1
-
 /* Define if you have the select function.  */
 #define HAVE_SELECT 1
 
-/* Define if you have the setvbuf function.  */
-#define HAVE_SETVBUF 1
-
 /* Define if you have the socket function.  */
 #define HAVE_SOCKET 1
 
 /* Define if you have the strdup function.  */
 /* #define HAVE_STRDUP 1 */
 
-/* Define if you have the strftime function.  */
-/* #define HAVE_STRFTIME 1 */
-
 /* Define if you have the stricmp function. */
 /* #define HAVE_STRICMP 1 */
 
-/* Define if you have the strnicmp function. */
-/* #define HAVE_STRNICMP 1 */
-
-/* Define if you have the strstr function.  */
-#define HAVE_STRSTR 1
-
 /* Define if you have the strtoll function.  */
-#if defined(__MINGW32__) || defined(__WATCOMC__)
+#if defined(__MINGW32__)
 #define HAVE_STRTOLL 1
 #endif
 
 /* Define to the function return type for recv. */
 #define RECV_TYPE_RETV int
 
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 SOCKET
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
 /* Define if you have the send function. */
 #define HAVE_SEND 1
 
 #define in_addr_t unsigned long
 
 /* Define ssize_t if it is not an available 'typedefed' type */
-#if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || defined(__POCC__)
+#if defined(__POCC__)
 #elif defined(_WIN64)
 #define ssize_t __int64
 #else
 /* The size of `int', as computed by sizeof. */
 #define SIZEOF_INT 4
 
-/* The size of `long double', as computed by sizeof. */
-#define SIZEOF_LONG_DOUBLE 16
-
 /* The size of `long long', as computed by sizeof. */
 /* #define SIZEOF_LONG_LONG 8 */
 
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
 /* Define to the size of `long', as computed by sizeof. */
 #define SIZEOF_LONG 4
 
index fec1937f0bb497235d4542c95023cf27fd407120..a557ac6dc963c9a6f70ddbd878ef9ed07e8cc15b 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012 - 2016, Linus Nielsen Feltzing, <linus@haxx.se>
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -19,6 +19,8 @@
  * 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"
@@ -132,13 +134,11 @@ void Curl_conncache_destroy(struct conncache *connc)
 }
 
 /* creates a key to find a bundle for this connection */
-static void hashkey(struct connectdata *conn, char *buf,
-                    size_t len,  /* something like 128 is fine */
-                    const char **hostp)
+static void hashkey(struct connectdata *conn, char *buf, size_t len)
 {
   const char *hostname;
   long port = conn->remote_port;
-
+  DEBUGASSERT(len >= HASHKEY_SIZE);
 #ifndef CURL_DISABLE_PROXY
   if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
     hostname = conn->http_proxy.host.name;
@@ -151,12 +151,12 @@ static void hashkey(struct connectdata *conn, char *buf,
   else
     hostname = conn->host.name;
 
-  if(hostp)
-    /* report back which name we used */
-    *hostp = hostname;
-
-  /* put the number first so that the hostname gets cut off if too long */
-  msnprintf(buf, len, "%ld%s", port, hostname);
+  /* put the numbers first so that the hostname gets cut off if too long */
+#ifdef ENABLE_IPV6
+  msnprintf(buf, len, "%u/%ld/%s", conn->scope_id, port, hostname);
+#else
+  msnprintf(buf, len, "%ld/%s", port, hostname);
+#endif
   Curl_strntolower(buf, buf, len);
 }
 
@@ -179,27 +179,24 @@ size_t Curl_conncache_size(struct Curl_easy *data)
 struct connectbundle *
 Curl_conncache_find_bundle(struct Curl_easy *data,
                            struct connectdata *conn,
-                           struct conncache *connc,
-                           const char **hostp)
+                           struct conncache *connc)
 {
   struct connectbundle *bundle = NULL;
   CONNCACHE_LOCK(data);
   if(connc) {
     char key[HASHKEY_SIZE];
-    hashkey(conn, key, sizeof(key), hostp);
+    hashkey(conn, key, sizeof(key));
     bundle = Curl_hash_pick(&connc->hash, key, strlen(key));
   }
 
   return bundle;
 }
 
-static bool conncache_add_bundle(struct conncache *connc,
-                                 char *key,
-                                 struct connectbundle *bundle)
+static void *conncache_add_bundle(struct conncache *connc,
+                                  char *key,
+                                  struct connectbundle *bundle)
 {
-  void *p = Curl_hash_add(&connc->hash, key, strlen(key), bundle);
-
-  return p?TRUE:FALSE;
+  return Curl_hash_add(&connc->hash, key, strlen(key), bundle);
 }
 
 static void conncache_remove_bundle(struct conncache *connc,
@@ -235,10 +232,8 @@ CURLcode Curl_conncache_add_conn(struct Curl_easy *data)
   DEBUGASSERT(conn);
 
   /* *find_bundle() locks the connection cache */
-  bundle = Curl_conncache_find_bundle(data, conn, data->state.conn_cache,
-                                      NULL);
+  bundle = Curl_conncache_find_bundle(data, conn, data->state.conn_cache);
   if(!bundle) {
-    int rc;
     char key[HASHKEY_SIZE];
 
     result = bundle_create(&bundle);
@@ -246,10 +241,9 @@ CURLcode Curl_conncache_add_conn(struct Curl_easy *data)
       goto unlock;
     }
 
-    hashkey(conn, key, sizeof(key), NULL);
-    rc = conncache_add_bundle(data->state.conn_cache, key, bundle);
+    hashkey(conn, key, sizeof(key));
 
-    if(!rc) {
+    if(!conncache_add_bundle(data->state.conn_cache, key, bundle)) {
       bundle_destroy(bundle);
       result = CURLE_OUT_OF_MEMORY;
       goto unlock;
@@ -410,7 +404,7 @@ bool Curl_conncache_return_conn(struct Curl_easy *data,
     conn_candidate = Curl_conncache_extract_oldest(data);
     if(conn_candidate) {
       /* the winner gets the honour of being disconnected */
-      (void)Curl_disconnect(data, conn_candidate, /* dead_connection */ FALSE);
+      Curl_disconnect(data, conn_candidate, /* dead_connection */ FALSE);
     }
   }
 
@@ -504,7 +498,7 @@ Curl_conncache_extract_oldest(struct Curl_easy *data)
       conn = curr->ptr;
 
       if(!CONN_INUSE(conn) && !conn->bits.close &&
-         !conn->bits.connect_only) {
+         !conn->connect_only) {
         /* Set higher score for the age passed since the connection was used */
         score = Curl_timediff(now, conn->lastused);
 
@@ -535,6 +529,7 @@ void Curl_conncache_close_all_connections(struct conncache *connc)
 {
   struct connectdata *conn;
   char buffer[READBUFFER_MIN + 1];
+  SIGPIPE_VARIABLE(pipe_st);
   if(!connc->closure_handle)
     return;
   connc->closure_handle->state.buffer = buffer;
@@ -542,27 +537,23 @@ void Curl_conncache_close_all_connections(struct conncache *connc)
 
   conn = conncache_find_first_connection(connc);
   while(conn) {
-    SIGPIPE_VARIABLE(pipe_st);
     sigpipe_ignore(connc->closure_handle, &pipe_st);
     /* This will remove the connection from the cache */
     connclose(conn, "kill all");
     Curl_conncache_remove_conn(connc->closure_handle, conn, TRUE);
-    (void)Curl_disconnect(connc->closure_handle, conn, FALSE);
+    Curl_disconnect(connc->closure_handle, conn, FALSE);
     sigpipe_restore(&pipe_st);
 
     conn = conncache_find_first_connection(connc);
   }
 
   connc->closure_handle->state.buffer = NULL;
-  if(connc->closure_handle) {
-    SIGPIPE_VARIABLE(pipe_st);
-    sigpipe_ignore(connc->closure_handle, &pipe_st);
+  sigpipe_ignore(connc->closure_handle, &pipe_st);
 
-    Curl_hostcache_clean(connc->closure_handle,
-                         connc->closure_handle->dns.hostcache);
-    Curl_close(&connc->closure_handle);
-    sigpipe_restore(&pipe_st);
-  }
+  Curl_hostcache_clean(connc->closure_handle,
+                       connc->closure_handle->dns.hostcache);
+  Curl_close(&connc->closure_handle);
+  sigpipe_restore(&pipe_st);
 }
 
 #if 0
index e9c1e32f8729bb189f74df37b9cba983a2f47387..94664bc357acacd7c834fcaf36af0e39e83d2a4d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
@@ -21,6 +21,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -29,6 +31,7 @@
  * be shared.
  */
 
+#include <curl/curl.h>
 #include "timeval.h"
 
 struct connectdata;
@@ -87,8 +90,7 @@ void Curl_conncache_destroy(struct conncache *connc);
 /* return the correct bundle, to a host or a proxy */
 struct connectbundle *Curl_conncache_find_bundle(struct Curl_easy *data,
                                                  struct connectdata *conn,
-                                                 struct conncache *connc,
-                                                 const char **hostp);
+                                                 struct conncache *connc);
 /* returns number of connections currently held in the connection cache */
 size_t Curl_conncache_size(struct Curl_easy *data);
 
index 5252f9714d00aa11335b0017d0041ce9bef109e0..ac007c61b0c0713615f055d04000d47f73b9701e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -74,6 +76,7 @@
 #include "warnless.h"
 #include "conncache.h"
 #include "multihandle.h"
+#include "share.h"
 #include "version_win32.h"
 #include "quic.h"
 #include "socks.h"
@@ -137,6 +140,14 @@ tcpkeepalive(struct Curl_easy *data,
           (void *)&optval, sizeof(optval)) < 0) {
       infof(data, "Failed to set TCP_KEEPIDLE on fd %d", sockfd);
     }
+#elif defined(TCP_KEEPALIVE)
+    /* Mac OS X style */
+    optval = curlx_sltosi(data->set.tcp_keepidle);
+    KEEPALIVE_FACTOR(optval);
+    if(setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPALIVE,
+      (void *)&optval, sizeof(optval)) < 0) {
+      infof(data, "Failed to set TCP_KEEPALIVE on fd %d", sockfd);
+    }
 #endif
 #ifdef TCP_KEEPINTVL
     optval = curlx_sltosi(data->set.tcp_keepintvl);
@@ -146,15 +157,6 @@ tcpkeepalive(struct Curl_easy *data,
       infof(data, "Failed to set TCP_KEEPINTVL on fd %d", sockfd);
     }
 #endif
-#ifdef TCP_KEEPALIVE
-    /* Mac OS X style */
-    optval = curlx_sltosi(data->set.tcp_keepidle);
-    KEEPALIVE_FACTOR(optval);
-    if(setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPALIVE,
-          (void *)&optval, sizeof(optval)) < 0) {
-      infof(data, "Failed to set TCP_KEEPALIVE on fd %d", sockfd);
-    }
-#endif
 #endif
   }
 }
@@ -257,6 +259,9 @@ static CURLcode bindlocal(struct Curl_easy *data,
 #ifdef IP_BIND_ADDRESS_NO_PORT
   int on = 1;
 #endif
+#ifndef ENABLE_IPV6
+  (void)scope;
+#endif
 
   /*************************************************************
    * Select device to bind socket to
@@ -314,8 +319,11 @@ static CURLcode bindlocal(struct Curl_easy *data,
       }
 #endif
 
-      switch(Curl_if2ip(af, scope, conn->scope_id, dev,
-                        myhost, sizeof(myhost))) {
+      switch(Curl_if2ip(af,
+#ifdef ENABLE_IPV6
+                        scope, conn->scope_id,
+#endif
+                        dev, myhost, sizeof(myhost))) {
         case IF2IP_NOT_FOUND:
           if(is_interface) {
             /* Do not fall back to treating it as a host name */
@@ -464,8 +472,10 @@ static CURLcode bindlocal(struct Curl_easy *data,
     }
 
     if(--portnum > 0) {
-      infof(data, "Bind to local port %hu failed, trying next", port);
       port++; /* try next port */
+      if(port == 0)
+        break;
+      infof(data, "Bind to local port %hu failed, trying next", port - 1);
       /* We re-use/clobber the port variable here below */
       if(sock->sa_family == AF_INET)
         si4->sin_port = ntohs(port);
@@ -615,8 +625,10 @@ void Curl_persistconninfo(struct Curl_easy *data, struct connectdata *conn,
   else
     data->info.conn_local_ip[0] = 0;
   data->info.conn_scheme = conn->handler->scheme;
-  data->info.conn_protocol = conn->handler->protocol;
+  /* conn_protocol can only provide "old" protocols */
+  data->info.conn_protocol = (conn->handler->protocol) & CURLPROTO_MASK;
   data->info.conn_primary_port = conn->port;
+  data->info.conn_remote_port = conn->remote_port;
   data->info.conn_local_port = local_port;
 }
 
@@ -750,11 +762,10 @@ void Curl_updateconninfo(struct Curl_easy *data, struct connectdata *conn,
   char local_ip[MAX_IPADR_LEN] = "";
   int local_port = -1;
 
-  if(conn->transport == TRNSPRT_TCP) {
-    if(!conn->bits.reuse && !conn->bits.tcp_fastopen)
-      Curl_conninfo_remote(data, conn, sockfd);
-    Curl_conninfo_local(data, sockfd, local_ip, &local_port);
-  } /* end of TCP-only section */
+  if(!conn->bits.reuse &&
+     (conn->transport != TRNSPRT_TCP || !conn->bits.tcp_fastopen))
+    Curl_conninfo_remote(data, conn, sockfd);
+  Curl_conninfo_local(data, sockfd, local_ip, &local_port);
 
   /* persist connection info in session handle */
   Curl_persistconninfo(data, conn, local_ip, local_port);
@@ -892,6 +903,8 @@ CURLcode Curl_is_connected(struct Curl_easy *data,
         conn->tempsock[i] = CURL_SOCKET_BAD;
         post_SOCKS(data, conn, sockindex, connected);
         connkeep(conn, "HTTP/3 default");
+        if(conn->tempsock[other] != CURL_SOCKET_BAD)
+          Curl_quic_disconnect(data, conn, other);
         return CURLE_OK;
       }
       /* When a QUIC connect attempt fails, the better error explanation is in
@@ -1026,7 +1039,6 @@ CURLcode Curl_is_connected(struct Curl_easy *data,
      (conn->tempsock[1] == CURL_SOCKET_BAD)) {
     /* no more addresses to try */
     const char *hostname;
-    char buffer[STRERROR_LEN];
     CURLcode failreason = result;
 
     /* if the first address family runs out of addresses to try before the
@@ -1053,11 +1065,7 @@ CURLcode Curl_is_connected(struct Curl_easy *data,
           "%" CURL_FORMAT_TIMEDIFF_T " ms: %s",
           hostname, conn->port,
           Curl_timediff(now, data->progress.t_startsingle),
-#ifdef ENABLE_QUIC
-          (conn->transport == TRNSPRT_QUIC) ?
-          curl_easy_strerror(result) :
-#endif
-          Curl_strerror(error, buffer, sizeof(buffer)));
+          curl_easy_strerror(result));
 
     Curl_quic_disconnect(data, conn, 0);
     Curl_quic_disconnect(data, conn, 1);
@@ -1189,6 +1197,7 @@ static CURLcode singleipconnect(struct Curl_easy *data,
 #ifdef TCP_FASTOPEN_CONNECT
   int optval = 1;
 #endif
+  const char *ipmsg;
   char buffer[STRERROR_LEN];
   curl_socket_t *sockp = &conn->tempsock[tempindex];
   *sockp = CURL_SOCKET_BAD;
@@ -1206,7 +1215,13 @@ static CURLcode singleipconnect(struct Curl_easy *data,
     Curl_closesocket(data, conn, sockfd);
     return CURLE_OK;
   }
-  infof(data, "  Trying %s:%d...", ipaddress, port);
+#ifdef ENABLE_IPV6
+  if(addr.family == AF_INET6)
+    ipmsg = "  Trying [%s]:%d...";
+  else
+#endif
+    ipmsg = "  Trying %s:%d...";
+  infof(data, ipmsg, ipaddress, port);
 
 #ifdef ENABLE_IPV6
   is_tcp = (addr.family == AF_INET || addr.family == AF_INET6) &&
@@ -1481,7 +1496,11 @@ curl_socket_t Curl_getconnectinfo(struct Curl_easy *data,
     find.id_tofind = data->state.lastconnect_id;
     find.found = NULL;
 
-    Curl_conncache_foreach(data, data->multi_easy?
+    Curl_conncache_foreach(data,
+                           data->share && (data->share->specifier
+                           & (1<< CURL_LOCK_DATA_CONNECT))?
+                           &data->share->conn_cache:
+                           data->multi_easy?
                            &data->multi_easy->conn_cache:
                            &data->multi->conn_cache, &find, conn_is_conn);
 
@@ -1589,9 +1608,20 @@ CURLcode Curl_socket(struct Curl_easy *data,
    */
 
   addr->family = ai->ai_family;
-  addr->socktype = (conn->transport == TRNSPRT_TCP) ? SOCK_STREAM : SOCK_DGRAM;
-  addr->protocol = conn->transport != TRNSPRT_TCP ? IPPROTO_UDP :
-    ai->ai_protocol;
+  switch(conn->transport) {
+  case TRNSPRT_TCP:
+    addr->socktype = SOCK_STREAM;
+    addr->protocol = IPPROTO_TCP;
+    break;
+  case TRNSPRT_UNIX:
+    addr->socktype = SOCK_STREAM;
+    addr->protocol = IPPROTO_IP;
+    break;
+  default: /* UDP and QUIC */
+    addr->socktype = SOCK_DGRAM;
+    addr->protocol = IPPROTO_UDP;
+    break;
+  }
   addr->addrlen = ai->ai_addrlen;
 
   if(addr->addrlen > sizeof(struct Curl_sockaddr_storage))
@@ -1625,6 +1655,24 @@ CURLcode Curl_socket(struct Curl_easy *data,
   if(conn->transport == TRNSPRT_QUIC) {
     /* QUIC sockets need to be nonblocking */
     (void)curlx_nonblock(*sockfd, TRUE);
+    switch(addr->family) {
+#if defined(__linux__) && defined(IP_MTU_DISCOVER)
+    case AF_INET: {
+      int val = IP_PMTUDISC_DO;
+      (void)setsockopt(*sockfd, IPPROTO_IP, IP_MTU_DISCOVER, &val,
+                       sizeof(val));
+      break;
+    }
+#endif
+#if defined(__linux__) && defined(IPV6_MTU_DISCOVER)
+    case AF_INET6: {
+      int val = IPV6_PMTUDISC_DO;
+      (void)setsockopt(*sockfd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, &val,
+                       sizeof(val));
+      break;
+    }
+#endif
+    }
   }
 
 #if defined(ENABLE_IPV6) && defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
@@ -1634,20 +1682,6 @@ CURLcode Curl_socket(struct Curl_easy *data,
   }
 #endif
 
-#if defined(__linux__) && defined(IP_RECVERR)
-  if(addr->socktype == SOCK_DGRAM) {
-    int one = 1;
-    switch(addr->family) {
-    case AF_INET:
-      (void)setsockopt(*sockfd, SOL_IP, IP_RECVERR, &one, sizeof(one));
-      break;
-    case AF_INET6:
-      (void)setsockopt(*sockfd, SOL_IPV6, IPV6_RECVERR, &one, sizeof(one));
-      break;
-    }
-  }
-#endif
-
   return CURLE_OK;
 }
 
index 1a055f58de269c25efdde6c7f2120e49dd987034..582ff0813d1bc859a8f75835c79f246afcaf6752 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index c03637a391a00b1bad2eb513a3f6a49c7c55c5ed..bfc13e254db9cfa060e93849346a0d1e3fb29e88 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -26,7 +28,7 @@
 #include <curl/curl.h>
 #include <stddef.h>
 
-#ifdef HAVE_ZLIB_H
+#ifdef HAVE_LIBZ
 #include <zlib.h>
 #endif
 
@@ -80,8 +82,9 @@ typedef enum {
   ZLIB_INIT_GZIP             /* initialized in transparent gzip mode */
 } zlibInitState;
 
-/* Writer parameters. */
-struct zlib_params {
+/* Deflate and gzip writer. */
+struct zlib_writer {
+  struct contenc_writer super;
   zlibInitState zlib_init;   /* zlib init state */
   uInt trailerlen;           /* Remaining trailer byte count. */
   z_stream z;                /* State structure for zlib. */
@@ -133,7 +136,7 @@ exit_zlib(struct Curl_easy *data,
 }
 
 static CURLcode process_trailer(struct Curl_easy *data,
-                                struct zlib_params *zp)
+                                struct zlib_writer *zp)
 {
   z_stream *z = &zp->z;
   CURLcode result = CURLE_OK;
@@ -160,7 +163,7 @@ static CURLcode inflate_stream(struct Curl_easy *data,
                                struct contenc_writer *writer,
                                zlibInitState started)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;         /* zlib state structure */
   uInt nread = z->avail_in;
   Bytef *orig_in = z->next_in;
@@ -263,7 +266,7 @@ static CURLcode inflate_stream(struct Curl_easy *data,
 static CURLcode deflate_init_writer(struct Curl_easy *data,
                                     struct contenc_writer *writer)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;     /* zlib state structure */
 
   if(!writer->downstream)
@@ -283,7 +286,7 @@ static CURLcode deflate_unencode_write(struct Curl_easy *data,
                                        struct contenc_writer *writer,
                                        const char *buf, size_t nbytes)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;     /* zlib state structure */
 
   /* Set the compressed input when this function is called */
@@ -300,7 +303,7 @@ static CURLcode deflate_unencode_write(struct Curl_easy *data,
 static void deflate_close_writer(struct Curl_easy *data,
                                  struct contenc_writer *writer)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;     /* zlib state structure */
 
   exit_zlib(data, z, &zp->zlib_init, CURLE_OK);
@@ -312,7 +315,7 @@ static const struct content_encoding deflate_encoding = {
   deflate_init_writer,
   deflate_unencode_write,
   deflate_close_writer,
-  sizeof(struct zlib_params)
+  sizeof(struct zlib_writer)
 };
 
 
@@ -320,7 +323,7 @@ static const struct content_encoding deflate_encoding = {
 static CURLcode gzip_init_writer(struct Curl_easy *data,
                                  struct contenc_writer *writer)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;     /* zlib state structure */
 
   if(!writer->downstream)
@@ -437,7 +440,7 @@ static CURLcode gzip_unencode_write(struct Curl_easy *data,
                                     struct contenc_writer *writer,
                                     const char *buf, size_t nbytes)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;     /* zlib state structure */
 
   if(zp->zlib_init == ZLIB_INIT_GZIP) {
@@ -564,7 +567,7 @@ static CURLcode gzip_unencode_write(struct Curl_easy *data,
 static void gzip_close_writer(struct Curl_easy *data,
                               struct contenc_writer *writer)
 {
-  struct zlib_params *zp = (struct zlib_params *) &writer->params;
+  struct zlib_writer *zp = (struct zlib_writer *) writer;
   z_stream *z = &zp->z;     /* zlib state structure */
 
   exit_zlib(data, z, &zp->zlib_init, CURLE_OK);
@@ -576,15 +579,16 @@ static const struct content_encoding gzip_encoding = {
   gzip_init_writer,
   gzip_unencode_write,
   gzip_close_writer,
-  sizeof(struct zlib_params)
+  sizeof(struct zlib_writer)
 };
 
 #endif /* HAVE_LIBZ */
 
 
 #ifdef HAVE_BROTLI
-/* Writer parameters. */
-struct brotli_params {
+/* Brotli writer. */
+struct brotli_writer {
+  struct contenc_writer super;
   BrotliDecoderState *br;    /* State structure for brotli. */
 };
 
@@ -629,7 +633,7 @@ static CURLcode brotli_map_error(BrotliDecoderErrorCode be)
 static CURLcode brotli_init_writer(struct Curl_easy *data,
                                    struct contenc_writer *writer)
 {
-  struct brotli_params *bp = (struct brotli_params *) &writer->params;
+  struct brotli_writer *bp = (struct brotli_writer *) writer;
   (void) data;
 
   if(!writer->downstream)
@@ -643,7 +647,7 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data,
                                       struct contenc_writer *writer,
                                       const char *buf, size_t nbytes)
 {
-  struct brotli_params *bp = (struct brotli_params *) &writer->params;
+  struct brotli_writer *bp = (struct brotli_writer *) writer;
   const uint8_t *src = (const uint8_t *) buf;
   char *decomp;
   uint8_t *dst;
@@ -690,7 +694,8 @@ static CURLcode brotli_unencode_write(struct Curl_easy *data,
 static void brotli_close_writer(struct Curl_easy *data,
                                 struct contenc_writer *writer)
 {
-  struct brotli_params *bp = (struct brotli_params *) &writer->params;
+  struct brotli_writer *bp = (struct brotli_writer *) writer;
+
   (void) data;
 
   if(bp->br) {
@@ -705,14 +710,15 @@ static const struct content_encoding brotli_encoding = {
   brotli_init_writer,
   brotli_unencode_write,
   brotli_close_writer,
-  sizeof(struct brotli_params)
+  sizeof(struct brotli_writer)
 };
 #endif
 
 
 #ifdef HAVE_ZSTD
-/* Writer parameters. */
-struct zstd_params {
+/* Zstd writer. */
+struct zstd_writer {
+  struct contenc_writer super;
   ZSTD_DStream *zds;    /* State structure for zstd. */
   void *decomp;
 };
@@ -720,7 +726,8 @@ struct zstd_params {
 static CURLcode zstd_init_writer(struct Curl_easy *data,
                                  struct contenc_writer *writer)
 {
-  struct zstd_params *zp = (struct zstd_params *)&writer->params;
+  struct zstd_writer *zp = (struct zstd_writer *) writer;
+
   (void)data;
 
   if(!writer->downstream)
@@ -736,7 +743,7 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data,
                                     const char *buf, size_t nbytes)
 {
   CURLcode result = CURLE_OK;
-  struct zstd_params *zp = (struct zstd_params *)&writer->params;
+  struct zstd_writer *zp = (struct zstd_writer *) writer;
   ZSTD_inBuffer in;
   ZSTD_outBuffer out;
   size_t errorCode;
@@ -775,7 +782,8 @@ static CURLcode zstd_unencode_write(struct Curl_easy *data,
 static void zstd_close_writer(struct Curl_easy *data,
                               struct contenc_writer *writer)
 {
-  struct zstd_params *zp = (struct zstd_params *)&writer->params;
+  struct zstd_writer *zp = (struct zstd_writer *) writer;
+
   (void)data;
 
   if(zp->decomp) {
@@ -794,7 +802,7 @@ static const struct content_encoding zstd_encoding = {
   zstd_init_writer,
   zstd_unencode_write,
   zstd_close_writer,
-  sizeof(struct zstd_params)
+  sizeof(struct zstd_writer)
 };
 #endif
 
@@ -827,7 +835,7 @@ static const struct content_encoding identity_encoding = {
   identity_init_writer,
   identity_unencode_write,
   identity_close_writer,
-  0
+  sizeof(struct contenc_writer)
 };
 
 
@@ -919,7 +927,7 @@ static const struct content_encoding client_encoding = {
   client_init_writer,
   client_unencode_write,
   client_close_writer,
-  0
+  sizeof(struct contenc_writer)
 };
 
 
@@ -962,7 +970,7 @@ static const struct content_encoding error_encoding = {
   error_init_writer,
   error_unencode_write,
   error_close_writer,
-  0
+  sizeof(struct contenc_writer)
 };
 
 /* Create an unencoding writer stage using the given handler. */
@@ -971,8 +979,10 @@ new_unencoding_writer(struct Curl_easy *data,
                       const struct content_encoding *handler,
                       struct contenc_writer *downstream)
 {
-  size_t sz = offsetof(struct contenc_writer, params) + handler->paramsize;
-  struct contenc_writer *writer = (struct contenc_writer *)calloc(1, sz);
+  struct contenc_writer *writer;
+
+  DEBUGASSERT(handler->writersize >= sizeof(struct contenc_writer));
+  writer = (struct contenc_writer *) calloc(1, handler->writersize);
 
   if(writer) {
     writer->handler = handler;
@@ -1026,19 +1036,23 @@ static const struct content_encoding *find_encoding(const char *name,
   return NULL;
 }
 
+/* allow no more than 5 "chained" compression steps */
+#define MAX_ENCODE_STACK 5
+
 /* Set-up the unencoding stack from the Content-Encoding header value.
  * See RFC 7231 section 3.1.2.2. */
 CURLcode Curl_build_unencoding_stack(struct Curl_easy *data,
                                      const char *enclist, int maybechunked)
 {
   struct SingleRequest *k = &data->req;
+  int counter = 0;
 
   do {
     const char *name;
     size_t namelen;
 
     /* Parse a single encoding name. */
-    while(ISSPACE(*enclist) || *enclist == ',')
+    while(ISBLANK(*enclist) || *enclist == ',')
       enclist++;
 
     name = enclist;
@@ -1066,6 +1080,11 @@ CURLcode Curl_build_unencoding_stack(struct Curl_easy *data,
       if(!encoding)
         encoding = &error_encoding;  /* Defer error at stack use. */
 
+      if(++counter >= MAX_ENCODE_STACK) {
+        failf(data, "Reject response due to %u content encodings",
+              counter);
+        return CURLE_BAD_CONTENT_ENCODING;
+      }
       /* Stack the unencoding stage. */
       writer = new_unencoding_writer(data, encoding, k->writer_stack);
       if(!writer)
index acfd0c27b05e991eb62044b3f0d8f19f59380416..3c278cf7271ddb3921a87e185fb861de5fb461a6 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
 
 struct contenc_writer {
   const struct content_encoding *handler;  /* Encoding handler. */
   struct contenc_writer *downstream;  /* Downstream writer. */
-  void *params;  /* Encoding-specific storage (variable length). */
 };
 
 /* Content encoding writer. */
@@ -40,7 +41,7 @@ struct content_encoding {
                              const char *buf, size_t nbytes);
   void (*close_writer)(struct Curl_easy *data,
                        struct contenc_writer *writer);
-  size_t paramsize;
+  size_t writersize;
 };
 
 
index d418efa33d56020a396982b264e81b5f196f30a0..8eaedeeb7f98042b0a2d69deb437e0328acbefdc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /***
@@ -33,8 +35,9 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
         called before any cookies are set.
 
 struct Cookie *Curl_cookie_add(struct Curl_easy *data,
-                 struct CookieInfo *c, bool httpheader, char *lineptr,
-                 const char *domain, const char *path);
+                 struct CookieInfo *c, bool httpheader, bool noexpire,
+                 char *lineptr, const char *domain, const char *path,
+                 bool secure);
 
         The 'lineptr' parameter is a full "Set-cookie:" line as
         received from a server.
@@ -96,8 +99,8 @@ Example set of cookies:
 #include "curl_get_line.h"
 #include "curl_memrchr.h"
 #include "parsedate.h"
-#include "rand.h"
 #include "rename.h"
+#include "fopen.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -427,7 +430,38 @@ static void remove_expired(struct CookieInfo *cookies)
 /* Make sure domain contains a dot or is localhost. */
 static bool bad_domain(const char *domain)
 {
-  return !strchr(domain, '.') && !strcasecompare(domain, "localhost");
+  if(strcasecompare(domain, "localhost"))
+    return FALSE;
+  else {
+    /* there must be a dot present, but that dot must not be a trailing dot */
+    char *dot = strchr(domain, '.');
+    if(dot)
+      return dot[1] ? FALSE : TRUE;
+  }
+  return TRUE;
+}
+
+/*
+  RFC 6265 section 4.1.1 says a server should accept this range:
+
+  cookie-octet    = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
+
+  But Firefox and Chrome as of June 2022 accept space, comma and double-quotes
+  fine. The prime reason for filtering out control bytes is that some HTTP
+  servers return 400 for requests that contain such.
+*/
+static int invalid_octets(const char *p)
+{
+  /* Reject all bytes \x01 - \x1f (*except* \x09, TAB) + \x7f */
+  static const char badoctets[] = {
+    "\x01\x02\x03\x04\x05\x06\x07\x08\x0a"
+    "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
+    "\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f"
+  };
+  size_t len;
+  /* scan for all the octets that are *not* in cookie-octet */
+  len = strcspn(p, badoctets);
+  return (p[len] != '\0');
 }
 
 /*
@@ -460,6 +494,8 @@ Curl_cookie_add(struct Curl_easy *data,
   struct Cookie *clist;
   struct Cookie *co;
   struct Cookie *lastc = NULL;
+  struct Cookie *replace_co = NULL;
+  struct Cookie *replace_clist = NULL;
   time_t now = time(NULL);
   bool replace_old = FALSE;
   bool badcookie = FALSE; /* cookies are good by default. mmmmm yummy */
@@ -469,6 +505,10 @@ Curl_cookie_add(struct Curl_easy *data,
   (void)data;
 #endif
 
+  DEBUGASSERT(MAX_SET_COOKIE_AMOUNT <= 255); /* counter is an unsigned char */
+  if(data->req.setcookies >= MAX_SET_COOKIE_AMOUNT)
+    return NULL;
+
   /* First, alloc and init a new struct for it */
   co = calloc(1, sizeof(struct Cookie));
   if(!co)
@@ -497,7 +537,7 @@ Curl_cookie_add(struct Curl_easy *data,
     do {
       /* we have a <what>=<this> pair or a stand-alone word here */
       name[0] = what[0] = 0; /* init the buffers */
-      if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\r\n=] =%"
+      if(1 <= sscanf(ptr, "%" MAX_NAME_TXT "[^;\t\r\n=] =%"
                      MAX_NAME_TXT "[^;\r\n]",
                      name, what)) {
         /*
@@ -551,6 +591,13 @@ Curl_cookie_add(struct Curl_easy *data,
         while(*whatptr && ISBLANK(*whatptr))
           whatptr++;
 
+        /* Reject cookies with a TAB inside the content */
+        if(strchr(whatptr, '\t')) {
+          freecookie(co);
+          infof(data, "cookie contains TAB, dropping");
+          return NULL;
+        }
+
         /*
          * Check if we have a reserved prefix set before anything else, as we
          * otherwise have to test for the prefix in both the cookie name and
@@ -578,6 +625,11 @@ Curl_cookie_add(struct Curl_easy *data,
             badcookie = TRUE;
             break;
           }
+          if(invalid_octets(whatptr) || invalid_octets(name)) {
+            infof(data, "invalid octets in name/value, cookie dropped");
+            badcookie = TRUE;
+            break;
+          }
         }
         else if(!len) {
           /*
@@ -620,7 +672,7 @@ Curl_cookie_add(struct Curl_easy *data,
             break;
           }
         }
-        else if(strcasecompare("domain", name)) {
+        else if(strcasecompare("domain", name) && whatptr[0]) {
           bool is_ip;
 
           /*
@@ -808,7 +860,7 @@ Curl_cookie_add(struct Curl_easy *data,
       freecookie(co);
       return NULL;
     }
-
+    data->req.setcookies++;
   }
   else {
     /*
@@ -1012,12 +1064,53 @@ Curl_cookie_add(struct Curl_easy *data,
   }
 #endif
 
+  /* A non-secure cookie may not overlay an existing secure cookie. */
   myhash = cookiehash(co->domain);
   clist = c->cookies[myhash];
-  replace_old = FALSE;
   while(clist) {
     if(strcasecompare(clist->name, co->name)) {
       /* the names are identical */
+      bool matching_domains = FALSE;
+
+      if(clist->domain && co->domain) {
+        if(strcasecompare(clist->domain, co->domain))
+          /* The domains are identical */
+          matching_domains = TRUE;
+      }
+      else if(!clist->domain && !co->domain)
+        matching_domains = TRUE;
+
+      if(matching_domains && /* the domains were identical */
+         clist->spath && co->spath && /* both have paths */
+         clist->secure && !co->secure && !secure) {
+        size_t cllen;
+        const char *sep;
+
+        /*
+         * A non-secure cookie may not overlay an existing secure cookie.
+         * For an existing cookie "a" with path "/login", refuse a new
+         * cookie "a" with for example path "/login/en", while the path
+         * "/loginhelper" is ok.
+         */
+
+        sep = strchr(clist->spath + 1, '/');
+
+        if(sep)
+          cllen = sep - clist->spath;
+        else
+          cllen = strlen(clist->spath);
+
+        if(strncasecompare(clist->spath, co->spath, cllen)) {
+          infof(data, "cookie '%s' for domain '%s' dropped, would "
+                "overlay an existing cookie", co->name, co->domain);
+          freecookie(co);
+          return NULL;
+        }
+      }
+    }
+
+    if(!replace_co && strcasecompare(clist->name, co->name)) {
+      /* the names are identical */
 
       if(clist->domain && co->domain) {
         if(strcasecompare(clist->domain, co->domain) &&
@@ -1032,30 +1125,7 @@ Curl_cookie_add(struct Curl_easy *data,
         /* the domains were identical */
 
         if(clist->spath && co->spath) {
-          if(clist->secure && !co->secure && !secure) {
-            size_t cllen;
-            const char *sep;
-
-            /*
-             * A non-secure cookie may not overlay an existing secure cookie.
-             * For an existing cookie "a" with path "/login", refuse a new
-             * cookie "a" with for example path "/login/en", while the path
-             * "/loginhelper" is ok.
-             */
-
-            sep = strchr(clist->spath + 1, '/');
-
-            if(sep)
-              cllen = sep - clist->spath;
-            else
-              cllen = strlen(clist->spath);
-
-            if(strncasecompare(clist->spath, co->spath, cllen)) {
-              freecookie(co);
-              return NULL;
-            }
-          }
-          else if(strcasecompare(clist->spath, co->spath))
+          if(strcasecompare(clist->spath, co->spath))
             replace_old = TRUE;
           else
             replace_old = FALSE;
@@ -1077,42 +1147,37 @@ Curl_cookie_add(struct Curl_easy *data,
         freecookie(co);
         return NULL;
       }
-
       if(replace_old) {
-        co->next = clist->next; /* get the next-pointer first */
-
-        /* when replacing, creationtime is kept from old */
-        co->creationtime = clist->creationtime;
-
-        /* then free all the old pointers */
-        free(clist->name);
-        free(clist->value);
-        free(clist->domain);
-        free(clist->path);
-        free(clist->spath);
-        free(clist->expirestr);
-        free(clist->version);
-        free(clist->maxage);
-
-        *clist = *co;  /* then store all the new data */
-
-        free(co);   /* free the newly allocated memory */
-        co = clist; /* point to the previous struct instead */
-
-        /*
-         * We have replaced a cookie, now skip the rest of the list but make
-         * sure the 'lastc' pointer is properly set
-         */
-        do {
-          lastc = clist;
-          clist = clist->next;
-        } while(clist);
-        break;
+        replace_co = co;
+        replace_clist = clist;
       }
     }
     lastc = clist;
     clist = clist->next;
   }
+  if(replace_co) {
+    co = replace_co;
+    clist = replace_clist;
+    co->next = clist->next; /* get the next-pointer first */
+
+    /* when replacing, creationtime is kept from old */
+    co->creationtime = clist->creationtime;
+
+    /* then free all the old pointers */
+    free(clist->name);
+    free(clist->value);
+    free(clist->domain);
+    free(clist->path);
+    free(clist->spath);
+    free(clist->expirestr);
+    free(clist->version);
+    free(clist->maxage);
+
+    *clist = *co;  /* then store all the new data */
+
+    free(co);   /* free the newly allocated memory */
+    co = clist;
+  }
 
   if(c->running)
     /* Only show this when NOT reading the cookies from a file */
@@ -1188,12 +1253,15 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
     fp = stdin;
     fromfile = FALSE;
   }
-  else if(file && !*file) {
-    /* points to a "" string */
+  else if(!file || !*file) {
+    /* points to an empty string or NULL */
     fp = NULL;
   }
-  else
-    fp = file?fopen(file, FOPEN_READTEXT):NULL;
+  else {
+    fp = fopen(file, FOPEN_READTEXT);
+    if(!fp)
+      infof(data, "WARNING: failed to open cookie file \"%s\"", file);
+  }
 
   c->newsession = newsession; /* new session? */
 
@@ -1227,7 +1295,7 @@ struct CookieInfo *Curl_cookie_init(struct Curl_easy *data,
      */
     remove_expired(c);
 
-    if(fromfile)
+    if(fromfile && fp)
       fclose(fp);
   }
 
@@ -1346,7 +1414,8 @@ static struct Cookie *dup_cookie(struct Cookie *src)
  *
  * It shall only return cookies that haven't expired.
  */
-struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
+struct Cookie *Curl_cookie_getlist(struct Curl_easy *data,
+                                   struct CookieInfo *c,
                                    const char *host, const char *path,
                                    bool secure)
 {
@@ -1401,6 +1470,11 @@ struct Cookie *Curl_cookie_getlist(struct CookieInfo *c,
             mainco = newco;
 
             matches++;
+            if(matches >= MAX_COOKIE_SEND_AMOUNT) {
+              infof(data, "Included max number of cookies (%zu) in request!",
+                    matches);
+              break;
+            }
           }
           else
             goto fail;
@@ -1602,20 +1676,9 @@ static CURLcode cookie_output(struct Curl_easy *data,
     use_stdout = TRUE;
   }
   else {
-    unsigned char randsuffix[9];
-
-    if(Curl_rand_hex(data, randsuffix, sizeof(randsuffix)))
-      return 2;
-
-    tempstore = aprintf("%s.%s.tmp", filename, randsuffix);
-    if(!tempstore)
-      return CURLE_OUT_OF_MEMORY;
-
-    out = fopen(tempstore, FOPEN_WRITETEXT);
-    if(!out) {
-      error = CURLE_WRITE_ERROR;
+    error = Curl_fopen(data, filename, &out, &tempstore);
+    if(error)
       goto error;
-    }
   }
 
   fputs("# Netscape HTTP Cookie File\n"
@@ -1662,7 +1725,7 @@ static CURLcode cookie_output(struct Curl_easy *data,
   if(!use_stdout) {
     fclose(out);
     out = NULL;
-    if(Curl_rename(tempstore, filename)) {
+    if(tempstore && Curl_rename(tempstore, filename)) {
       unlink(tempstore);
       error = CURLE_WRITE_ERROR;
       goto error;
index 0ffe08e63a6f9d4f3d6003fcb905e4cf39ad301b..abc0a2e8a01ad1ff6529304689d44728aefc6943 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
@@ -81,10 +83,26 @@ struct CookieInfo {
 */
 #define MAX_COOKIE_LINE 5000
 
-/* This is the maximum length of a cookie name or content we deal with: */
+/* Maximum length of an incoming cookie name or content we deal with. Longer
+   cookies are ignored. */
 #define MAX_NAME 4096
 #define MAX_NAME_TXT "4095"
 
+/* Maximum size for an outgoing cookie line libcurl will use in an http
+   request. This is the default maximum length used in some versions of Apache
+   httpd. */
+#define MAX_COOKIE_HEADER_LEN 8190
+
+/* Maximum number of cookies libcurl will send in a single request, even if
+   there might be more cookies that match. One reason to cap the number is to
+   keep the maximum HTTP request within the maximum allowed size. */
+#define MAX_COOKIE_SEND_AMOUNT 150
+
+/* Maximum number of Set-Cookie: lines accepted in a single response. If more
+   such header lines are received, they are ignored. This value must be less
+   than 256 since an unsigned char is used to count. */
+#define MAX_SET_COOKIE_AMOUNT 50
+
 struct Curl_easy;
 /*
  * Add a cookie to the internal list of cookies. The domain and path arguments
@@ -97,7 +115,8 @@ struct Cookie *Curl_cookie_add(struct Curl_easy *data,
                                const char *domain, const char *path,
                                bool secure);
 
-struct Cookie *Curl_cookie_getlist(struct CookieInfo *c, const char *host,
+struct Cookie *Curl_cookie_getlist(struct Curl_easy *data,
+                                   struct CookieInfo *c, const char *host,
                                    const char *path, bool secure);
 void Curl_cookie_freelist(struct Cookie *cookies);
 void Curl_cookie_clearall(struct CookieInfo *cookies);
index 842fd7fe24bec5971cd57793b16afacfcfcdce25..72e778b34e333796a67dfdf57224912096e36d13 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -277,7 +279,7 @@ Curl_he2ai(const struct hostent *he, int port)
 
   for(i = 0; (curr = he->h_addr_list[i]) != NULL; i++) {
     size_t ss_size;
-    size_t namelen = strlen(he->h_name) + 1; /* include zero termination */
+    size_t namelen = strlen(he->h_name) + 1; /* include null-terminatior */
 #ifdef ENABLE_IPV6
     if(he->h_addrtype == AF_INET6)
       ss_size = sizeof(struct sockaddr_in6);
index 73a8c1b3340a4f521daea550e40f4372e5fc0864..b778121a7c0a097ee793d0f21d224c954f48cf5b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index d48edc424145eff473b8cb9889ae672d800acc20..85368a163c0db38b8d16fc29a86ac25a89ac8cfa 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
-CURLcode Curl_base64_encode(struct Curl_easy *data,
-                            const char *inputbuff, size_t insize,
+CURLcode Curl_base64_encode(const char *inputbuff, size_t insize,
                             char **outptr, size_t *outlen);
-CURLcode Curl_base64url_encode(struct Curl_easy *data,
-                               const char *inputbuff, size_t insize,
+CURLcode Curl_base64url_encode(const char *inputbuff, size_t insize,
                                char **outptr, size_t *outlen);
-
 CURLcode Curl_base64_decode(const char *src,
                             unsigned char **outptr, size_t *outlen);
 
index d2a0f438ccd816e9f305103dd949b2ce5e3b7e94..3ba14923cd2a71760f0fc8e573b38db76b79fd0a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* lib/curl_config.h.in.  Generated somehow by cmake.  */
 
-/* when building libcurl itself */
-#cmakedefine BUILDING_LIBCURL 1
-
 /* Location of default ca bundle */
 #cmakedefine CURL_CA_BUNDLE "${CURL_CA_BUNDLE}"
 
 /* Define to 1 if you have the alarm function. */
 #cmakedefine HAVE_ALARM 1
 
-/* Define to 1 if you have the <alloca.h> header file. */
-#cmakedefine HAVE_ALLOCA_H 1
-
 /* Define to 1 if you have the <arpa/inet.h> header file. */
 #cmakedefine HAVE_ARPA_INET_H 1
 
 /* Define to 1 if you have the <assert.h> header file. */
 #cmakedefine HAVE_ASSERT_H 1
 
+/* Define to 1 if you have _Atomic support. */
+#cmakedefine HAVE_ATOMIC 1
+
+/* Define to 1 if you have the `fchmod' function. */
+#cmakedefine HAVE_FCHMOD 1
+
 /* Define to 1 if you have the `basename' function. */
 #cmakedefine HAVE_BASENAME 1
 
 /* Define to 1 if you have the `closesocket' function. */
 #cmakedefine HAVE_CLOSESOCKET 1
 
-/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function. */
-#cmakedefine HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#cmakedefine HAVE_DLFCN_H 1
-
 /* Define to 1 if you have the <errno.h> header file. */
 #cmakedefine HAVE_ERRNO_H 1
 
 /* Define to 1 if you have a working getaddrinfo function. */
 #cmakedefine HAVE_GETADDRINFO 1
 
+/* Define to 1 if the getaddrinfo function is threadsafe. */
+#cmakedefine HAVE_GETADDRINFO_THREADSAFE 1
+
 /* Define to 1 if you have the `geteuid' function. */
 #cmakedefine HAVE_GETEUID 1
 
 /* Define to 1 if you have the `getppid' function. */
 #cmakedefine HAVE_GETPPID 1
 
-/* Define to 1 if you have the gethostbyname function. */
-#cmakedefine HAVE_GETHOSTBYNAME 1
-
 /* Define to 1 if you have the gethostbyname_r function. */
 #cmakedefine HAVE_GETHOSTBYNAME_R 1
 
 /* Define to 1 if you have the `getppid' function. */
 #cmakedefine HAVE_GETPPID 1
 
-/* Define to 1 if you have the `getprotobyname' function. */
-#cmakedefine HAVE_GETPROTOBYNAME 1
-
 /* Define to 1 if you have the `getpeername' function. */
 #cmakedefine HAVE_GETPEERNAME 1
 
 /* Define to 1 if you have the `idna_strerror' function. */
 #cmakedefine HAVE_IDNA_STRERROR 1
 
-/* Define to 1 if you have the `idn_free' function. */
-#cmakedefine HAVE_IDN_FREE 1
-
-/* Define to 1 if you have the <idn-free.h> header file. */
-#cmakedefine HAVE_IDN_FREE_H 1
-
 /* Define to 1 if you have the <ifaddrs.h> header file. */
 #cmakedefine HAVE_IFADDRS_H 1
 
-/* Define to 1 if you have the `inet_addr' function. */
-#cmakedefine HAVE_INET_ADDR 1
-
 /* Define to 1 if you have a IPv6 capable working inet_ntop function. */
 #cmakedefine HAVE_INET_NTOP 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #cmakedefine HAVE_INTTYPES_H 1
 
-/* Define to 1 if you have the ioctl function. */
-#cmakedefine HAVE_IOCTL 1
-
 /* Define to 1 if you have the ioctlsocket function. */
 #cmakedefine HAVE_IOCTLSOCKET 1
 
 /* Define to 1 if you have the <io.h> header file. */
 #cmakedefine HAVE_IO_H 1
 
-/* if you have the Kerberos4 libraries (including -ldes) */
-#cmakedefine HAVE_KRB4 1
-
-/* Define to 1 if you have the `krb_get_our_ip_for_realm' function. */
-#cmakedefine HAVE_KRB_GET_OUR_IP_FOR_REALM 1
-
-/* Define to 1 if you have the <krb.h> header file. */
-#cmakedefine HAVE_KRB_H 1
-
 /* Define to 1 if you have the lber.h header file. */
 #cmakedefine HAVE_LBER_H 1
 
-/* Define to 1 if you have the ldapssl.h header file. */
-#cmakedefine HAVE_LDAPSSL_H 1
-
 /* Define to 1 if you have the ldap.h header file. */
 #cmakedefine HAVE_LDAP_H 1
 
 /* Define to 1 if you have the idn2.h header file. */
 #cmakedefine HAVE_IDN2_H 1
 
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-#cmakedefine HAVE_LIBRESOLV 1
-
-/* Define to 1 if you have the `resolve' library (-lresolve). */
-#cmakedefine HAVE_LIBRESOLVE 1
-
 /* Define to 1 if you have the `socket' library (-lsocket). */
 #cmakedefine HAVE_LIBSOCKET 1
 
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
 #cmakedefine HAVE_LIBSSH2 1
 
-/* Define to 1 if you have the <libssh2.h> header file. */
-#cmakedefine HAVE_LIBSSH2_H 1
-
-/* Define to 1 if you have the <libssh/libssh.h> header file. */
-#cmakedefine HAVE_LIBSSH_LIBSSH_H 1
-
 /* if zlib is available */
 #cmakedefine HAVE_LIBZ 1
 
 /* if zstd is available */
 #cmakedefine HAVE_ZSTD 1
 
-/* if your compiler supports LL */
-#cmakedefine HAVE_LL 1
-
 /* Define to 1 if you have the <locale.h> header file. */
 #cmakedefine HAVE_LOCALE_H 1
 
-/* Define to 1 if you have a working localtime_r function. */
-#cmakedefine HAVE_LOCALTIME_R 1
-
 /* Define to 1 if the compiler supports the 'long long' data type. */
 #cmakedefine HAVE_LONGLONG 1
 
-/* Define to 1 if you have the malloc.h header file. */
-#cmakedefine HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#cmakedefine HAVE_MEMORY_H 1
-
 /* Define to 1 if you have the MSG_NOSIGNAL flag. */
 #cmakedefine HAVE_MSG_NOSIGNAL 1
 
 /* Define to 1 if you have the <net/if.h> header file. */
 #cmakedefine HAVE_NET_IF_H 1
 
-/* Define to 1 if NI_WITHSCOPEID exists and works. */
-#cmakedefine HAVE_NI_WITHSCOPEID 1
-
 /* if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE */
 #cmakedefine HAVE_OLD_GSSMIT 1
 
-/* Define to 1 if you have the <openssl/crypto.h> header file. */
-#cmakedefine HAVE_OPENSSL_CRYPTO_H 1
-
-/* Define to 1 if you have the <openssl/err.h> header file. */
-#cmakedefine HAVE_OPENSSL_ERR_H 1
-
-/* Define to 1 if you have the <openssl/pem.h> header file. */
-#cmakedefine HAVE_OPENSSL_PEM_H 1
-
-/* Define to 1 if you have the <openssl/pkcs12.h> header file. */
-#cmakedefine HAVE_OPENSSL_PKCS12_H 1
-
-/* Define to 1 if you have the <openssl/rsa.h> header file. */
-#cmakedefine HAVE_OPENSSL_RSA_H 1
-
-/* Define to 1 if you have the <openssl/ssl.h> header file. */
-#cmakedefine HAVE_OPENSSL_SSL_H 1
-
-/* Define to 1 if you have the <openssl/x509.h> header file. */
-#cmakedefine HAVE_OPENSSL_X509_H 1
-
-/* Define to 1 if you have the <pem.h> header file. */
-#cmakedefine HAVE_PEM_H 1
-
 /* Define to 1 if you have the `pipe' function. */
 #cmakedefine HAVE_PIPE 1
 
-/* Define to 1 if you have a working poll function. */
-#cmakedefine HAVE_POLL 1
-
 /* If you have a fine poll */
 #cmakedefine HAVE_POLL_FINE 1
 
 /* Define to 1 if you have the `RAND_egd' function. */
 #cmakedefine HAVE_RAND_EGD 1
 
-/* Define to 1 if you have the `RAND_screen' function. */
-#cmakedefine HAVE_RAND_SCREEN 1
-
-/* Define to 1 if you have the `RAND_status' function. */
-#cmakedefine HAVE_RAND_STATUS 1
-
 /* Define to 1 if you have the recv function. */
 #cmakedefine HAVE_RECV 1
 
-/* Define to 1 if you have the recvfrom function. */
-#cmakedefine HAVE_RECVFROM 1
-
 /* Define to 1 if you have the select function. */
 #cmakedefine HAVE_SELECT 1
 
 /* Define to 1 if you have the `setrlimit' function. */
 #cmakedefine HAVE_SETRLIMIT 1
 
-/* Define to 1 if you have the setsockopt function. */
-#cmakedefine HAVE_SETSOCKOPT 1
-
 /* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
 #cmakedefine HAVE_SETSOCKOPT_SO_NONBLOCK 1
 
 /* Define to 1 if you have the `socket' function. */
 #cmakedefine HAVE_SOCKET 1
 
+/* Define to 1 if you have the socketpair function. */
+#cmakedefine HAVE_SOCKETPAIR 1
+
 /* Define to 1 if you have the <ssl.h> header file. */
 #cmakedefine HAVE_SSL_H 1
 
+/* Define to 1 if you have the <stdatomic.h> header file. */
+#cmakedefine HAVE_STDATOMIC_H 1
+
 /* Define to 1 if you have the <stdbool.h> header file. */
 #cmakedefine HAVE_STDBOOL_H 1
 
 /* Define to 1 if you have the <stdint.h> header file. */
 #cmakedefine HAVE_STDINT_H 1
 
-/* Define to 1 if you have the <stdio.h> header file. */
-#cmakedefine HAVE_STDIO_H 1
-
 /* Define to 1 if you have the <stdlib.h> header file. */
 #cmakedefine HAVE_STDLIB_H 1
 
 /* Define to 1 if you have the strcasecmp function. */
 #cmakedefine HAVE_STRCASECMP 1
 
-/* Define to 1 if you have the strcasestr function. */
-#cmakedefine HAVE_STRCASESTR 1
-
 /* Define to 1 if you have the strcmpi function. */
 #cmakedefine HAVE_STRCMPI 1
 
 /* Define to 1 if you have the <string.h> header file. */
 #cmakedefine HAVE_STRING_H 1
 
-/* Define to 1 if you have the strncmpi function. */
-#cmakedefine HAVE_STRNCMPI 1
-
-/* Define to 1 if you have the strnicmp function. */
-#cmakedefine HAVE_STRNICMP 1
-
 /* Define to 1 if you have the <stropts.h> header file. */
 #cmakedefine HAVE_STROPTS_H 1
 
-/* Define to 1 if you have the strstr function. */
-#cmakedefine HAVE_STRSTR 1
-
 /* Define to 1 if you have the strtok_r function. */
 #cmakedefine HAVE_STRTOK_R 1
 
 /* Define to 1 if you have the <sys/types.h> header file. */
 #cmakedefine HAVE_SYS_TYPES_H 1
 
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#cmakedefine HAVE_SYS_UIO_H 1
-
 /* Define to 1 if you have the <sys/un.h> header file. */
 #cmakedefine HAVE_SYS_UN_H 1
 
 /* Define to 1 if you have the <time.h> header file. */
 #cmakedefine HAVE_TIME_H 1
 
-/* Define to 1 if you have the <tld.h> header file. */
-#cmakedefine HAVE_TLD_H 1
-
-/* Define to 1 if you have the `tld_strerror' function. */
-#cmakedefine HAVE_TLD_STRERROR 1
-
-/* Define to 1 if you have the `uname' function. */
-#cmakedefine HAVE_UNAME 1
-
 /* Define to 1 if you have the <unistd.h> header file. */
 #cmakedefine HAVE_UNISTD_H 1
 
 /* Define to 1 if compiler supports old gcc variadic macro style. */
 #cmakedefine HAVE_VARIADIC_MACROS_GCC 1
 
-/* Define to 1 if you have the winber.h header file. */
-#cmakedefine HAVE_WINBER_H 1
-
 /* Define to 1 if you have the windows.h header file. */
 #cmakedefine HAVE_WINDOWS_H 1
 
 /* Define this symbol if your OS supports changing the contents of argv */
 #cmakedefine HAVE_WRITABLE_ARGV 1
 
-/* Define to 1 if you have the writev function. */
-#cmakedefine HAVE_WRITEV 1
-
 /* Define to 1 if you have the ws2tcpip.h header file. */
 #cmakedefine HAVE_WS2TCPIP_H 1
 
-/* Define to 1 if you have the <x509.h> header file. */
-#cmakedefine HAVE_X509_H 1
-
 /* Define if you have the <process.h> header file. */
 #cmakedefine HAVE_PROCESS_H 1
 
-/* if you have the zlib.h header file */
-#cmakedefine HAVE_ZLIB_H 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
-#cmakedefine LT_OBJDIR ${LT_OBJDIR}
-
-/* If you lack a fine basename() prototype */
-#cmakedefine NEED_BASENAME_PROTO 1
-
 /* Define to 1 if you need the lber.h header file even with ldap.h */
 #cmakedefine NEED_LBER_H 1
 
 /* a suitable file to read random data from */
 #cmakedefine RANDOM_FILE "${RANDOM_FILE}"
 
-/* Define to the type of arg 1 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG1 ${RECVFROM_TYPE_ARG1}
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG2 ${RECVFROM_TYPE_ARG2}
-
-/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
-#cmakedefine RECVFROM_TYPE_ARG2_IS_VOID 1
-
-/* Define to the type of arg 3 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG3 ${RECVFROM_TYPE_ARG3}
-
-/* Define to the type of arg 4 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG4 ${RECVFROM_TYPE_ARG4}
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG5 ${RECVFROM_TYPE_ARG5}
-
-/* Define to 1 if the type pointed by arg 5 for recvfrom is void. */
-#cmakedefine RECVFROM_TYPE_ARG5_IS_VOID 1
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#cmakedefine RECVFROM_TYPE_ARG6 ${RECVFROM_TYPE_ARG6}
-
-/* Define to 1 if the type pointed by arg 6 for recvfrom is void. */
-#cmakedefine RECVFROM_TYPE_ARG6_IS_VOID 1
-
-/* Define to the function return type for recvfrom. */
-#cmakedefine RECVFROM_TYPE_RETV ${RECVFROM_TYPE_RETV}
-
-/* Define to the type of arg 1 for recv. */
-#cmakedefine RECV_TYPE_ARG1 ${RECV_TYPE_ARG1}
-
-/* Define to the type of arg 2 for recv. */
-#cmakedefine RECV_TYPE_ARG2 ${RECV_TYPE_ARG2}
-
-/* Define to the type of arg 3 for recv. */
-#cmakedefine RECV_TYPE_ARG3 ${RECV_TYPE_ARG3}
-
-/* Define to the type of arg 4 for recv. */
-#cmakedefine RECV_TYPE_ARG4 ${RECV_TYPE_ARG4}
-
-/* Define to the function return type for recv. */
-#cmakedefine RECV_TYPE_RETV ${RECV_TYPE_RETV}
-
-/* Define to the type qualifier of arg 5 for select. */
-#cmakedefine SELECT_QUAL_ARG5 ${SELECT_QUAL_ARG5}
-
-/* Define to the type of arg 1 for select. */
-#cmakedefine SELECT_TYPE_ARG1 ${SELECT_TYPE_ARG1}
-
-/* Define to the type of args 2, 3 and 4 for select. */
-#cmakedefine SELECT_TYPE_ARG234 ${SELECT_TYPE_ARG234}
-
-/* Define to the type of arg 5 for select. */
-#cmakedefine SELECT_TYPE_ARG5 ${SELECT_TYPE_ARG5}
-
-/* Define to the function return type for select. */
-#cmakedefine SELECT_TYPE_RETV ${SELECT_TYPE_RETV}
-
-/* Define to the type qualifier of arg 2 for send. */
-#cmakedefine SEND_QUAL_ARG2 ${SEND_QUAL_ARG2}
-
-/* Define to the type of arg 1 for send. */
-#cmakedefine SEND_TYPE_ARG1 ${SEND_TYPE_ARG1}
-
-/* Define to the type of arg 2 for send. */
-#cmakedefine SEND_TYPE_ARG2 ${SEND_TYPE_ARG2}
-
-/* Define to the type of arg 3 for send. */
-#cmakedefine SEND_TYPE_ARG3 ${SEND_TYPE_ARG3}
-
-/* Define to the type of arg 4 for send. */
-#cmakedefine SEND_TYPE_ARG4 ${SEND_TYPE_ARG4}
-
-/* Define to the function return type for send. */
-#cmakedefine SEND_TYPE_RETV ${SEND_TYPE_RETV}
-
 /*
  Note: SIZEOF_* variables are fetched with CMake through check_type_size().
  As per CMake documentation on CheckTypeSize, C preprocessor code is
 /* The size of `int', as computed by sizeof. */
 ${SIZEOF_INT_CODE}
 
-/* The size of `short', as computed by sizeof. */
-${SIZEOF_SHORT_CODE}
-
 /* The size of `long', as computed by sizeof. */
 ${SIZEOF_LONG_CODE}
 
@@ -879,9 +661,6 @@ ${SIZEOF_TIME_T_CODE}
 /* Define to 1 if you have the ANSI C header files. */
 #cmakedefine STDC_HEADERS 1
 
-/* Define to the type of arg 3 for strerror_r. */
-#cmakedefine STRERROR_R_TYPE_ARG3 ${STRERROR_R_TYPE_ARG3}
-
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 #cmakedefine TIME_WITH_SYS_TIME 1
 
@@ -915,6 +694,9 @@ ${SIZEOF_TIME_T_CODE}
 /* if libSSH2 is in use */
 #cmakedefine USE_LIBSSH2 1
 
+/* if libPSL is in use */
+#cmakedefine USE_LIBPSL 1
+
 /* If you want to build curl with the built-in manual */
 #cmakedefine USE_MANUAL 1
 
@@ -949,6 +731,9 @@ ${SIZEOF_TIME_T_CODE}
 /* Define to 1 if you have the quiche_conn_set_qlog_fd function. */
 #cmakedefine HAVE_QUICHE_CONN_SET_QLOG_FD 1
 
+/* to enable msh3 */
+#cmakedefine USE_MSH3 1
+
 /* if Unix domain sockets are enabled  */
 #cmakedefine USE_UNIX_SOCKETS
 
@@ -964,9 +749,6 @@ ${SIZEOF_TIME_T_CODE}
 /* enable multiple SSL backends */
 #cmakedefine CURL_WITH_MULTI_SSL 1
 
-/* Define to 1 if using yaSSL in OpenSSL compatibility mode. */
-#cmakedefine USE_YASSLEMUL 1
-
 /* Version number of package */
 #cmakedefine VERSION ${VERSION}
 
@@ -1010,3 +792,6 @@ ${SIZEOF_TIME_T_CODE}
 
 /* to make the compiler know the prototypes of Windows IDN APIs */
 #cmakedefine WANT_IDN_PROTOTYPES 1
+
+/* Define to 1 to enable websocket support. */
+#cmakedefine USE_WEBSOCKETS 1
index 2bce4ecc48aa07ed7cce5c1eee7eaa0a391b7d17..06e1dd252a82630c10c626d72e1c6eade711f5b9 100644 (file)
@@ -42,6 +42,9 @@
 /* to disable Gopher */
 #undef CURL_DISABLE_GOPHER
 
+/* disable headers-api */
+#undef CURL_DISABLE_HEADERS_API
+
 /* disable alt-svc */
 #undef CURL_DISABLE_HSTS
 
 /* Define to 1 if you have the alarm function. */
 #undef HAVE_ALARM
 
-/* Define to 1 if you have the <alloca.h> header file. */
-#undef HAVE_ALLOCA_H
-
 /* Define to 1 if you have the <arpa/inet.h> header file. */
 #undef HAVE_ARPA_INET_H
 
 /* Define to 1 if you have the <assert.h> header file. */
 #undef HAVE_ASSERT_H
 
+/* Define to 1 if you have _Atomic support. */
+#undef HAVE_ATOMIC
+
 /* Define to 1 if you have the basename function. */
 #undef HAVE_BASENAME
 
 /* Define to 1 if you have the <err.h> header file. */
 #undef HAVE_ERR_H
 
+/* Define to 1 if you have the `fchmod' function. */
+#undef HAVE_FCHMOD
+
 /* Define to 1 if you have the fcntl function. */
 #undef HAVE_FCNTL
 
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
-/* Define to 1 if you have the ioctl function. */
-#undef HAVE_IOCTL
-
 /* Define to 1 if you have the ioctlsocket function. */
 #undef HAVE_IOCTLSOCKET
 
 /* Define to 1 if you have a working ioctlsocket FIONBIO function. */
 #undef HAVE_IOCTLSOCKET_FIONBIO
 
-/* Define to 1 if you have a working ioctl FIONBIO function. */
-#undef HAVE_IOCTL_FIONBIO
-
-/* Define to 1 if you have a working ioctl SIOCGIFADDR function. */
-#undef HAVE_IOCTL_SIOCGIFADDR
-
 /* Define to 1 if you have the <io.h> header file. */
 #undef HAVE_IO_H
 
 /* Define to 1 if you have the lber.h header file. */
 #undef HAVE_LBER_H
 
-/* Define to 1 if you have the ldapssl.h header file. */
-#undef HAVE_LDAPSSL_H
-
 /* 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
 
 /* Define to 1 if you have the `ssh2' library (-lssh2). */
 #undef HAVE_LIBSSH2
 
-/* Define to 1 if you have the <libssh2.h> header file. */
-#undef HAVE_LIBSSH2_H
-
-/* Define to 1 if you have the <libssh/libssh.h> header file. */
-#undef HAVE_LIBSSH_LIBSSH_H
-
 /* Define to 1 if you have the `ssl' library (-lssl). */
 #undef HAVE_LIBSSL
 
 /* Define to 1 if you have the <linux/tcp.h> header file. */
 #undef HAVE_LINUX_TCP_H
 
-/* if your compiler supports LL */
-#undef HAVE_LL
-
 /* Define to 1 if you have the <locale.h> header file. */
 #undef HAVE_LOCALE_H
 
-/* Define to 1 if you have a working localtime_r function. */
-#undef HAVE_LOCALTIME_R
-
 /* Define to 1 if the compiler supports the 'long long' data type. */
 #undef HAVE_LONGLONG
 
 /* Define to 1 if you have the `mach_absolute_time' function. */
 #undef HAVE_MACH_ABSOLUTE_TIME
 
-/* Define to 1 if you have the malloc.h header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the memory.h header file. */
-#undef HAVE_MEMORY_H
-
 /* Define to 1 if you have the memrchr function or macro. */
 #undef HAVE_MEMRCHR
 
 /* Define to 1 if you have the MSG_NOSIGNAL flag. */
 #undef HAVE_MSG_NOSIGNAL
 
+/* Define to 1 if you have the <msh3.h> header file. */
+#undef HAVE_MSH3_H
+
 /* Define to 1 if you have the <netdb.h> header file. */
 #undef HAVE_NETDB_H
 
 /* Define to 1 if you have the <netinet/tcp.h> header file. */
 #undef HAVE_NETINET_TCP_H
 
+/* Define to 1 if you have the <netinet/udp.h> header file. */
+#undef HAVE_NETINET_UDP_H
+
 /* Define to 1 if you have the <net/if.h> header file. */
 #undef HAVE_NET_IF_H
 
 /* Define to 1 if you have the <openssl/rsa.h> header file. */
 #undef HAVE_OPENSSL_RSA_H
 
-/* if you have the function SRP_Calc_client_key */
+/* if you have the functions SSL_CTX_set_srp_username and
+   SSL_CTX_set_srp_password */
 #undef HAVE_OPENSSL_SRP
 
 /* Define to 1 if you have the <openssl/ssl.h> header file. */
 /* if you have the PK11_CreateManagedGenericObject function */
 #undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT
 
-/* Define to 1 if you have a working poll function. */
-#undef HAVE_POLL
-
 /* If you have a fine poll */
 #undef HAVE_POLL_FINE
 
 /* Define to 1 if you have the <rsa.h> header file. */
 #undef HAVE_RSA_H
 
+/* Define to 1 if you have the `sched_yield' function. */
+#undef HAVE_SCHED_YIELD
+
 /* Define to 1 if you have the select function. */
 #undef HAVE_SELECT
 
 /* Define to 1 if you have the send function. */
 #undef HAVE_SEND
 
+/* Define to 1 if you have the `sendmsg' function. */
+#undef HAVE_SENDMSG
+
 /* Define to 1 if you have the <setjmp.h> header file. */
 #undef HAVE_SETJMP_H
 
 /* Define to 1 if you have the `setrlimit' function. */
 #undef HAVE_SETRLIMIT
 
-/* Define to 1 if you have the setsockopt function. */
-#undef HAVE_SETSOCKOPT
-
-/* Define to 1 if you have a working setsockopt SO_NONBLOCK function. */
-#undef HAVE_SETSOCKOPT_SO_NONBLOCK
-
 /* Define to 1 if you have the sigaction function. */
 #undef HAVE_SIGACTION
 
 /* Define to 1 if you have the sigsetjmp function or macro. */
 #undef HAVE_SIGSETJMP
 
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
 /* Define to 1 if struct sockaddr_in6 has the sin6_scope_id member */
 #undef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
 
 /* Define to 1 if you have the <ssl.h> header file. */
 #undef HAVE_SSL_H
 
+/* Define to 1 if you have the <stdatomic.h> header file. */
+#undef HAVE_STDATOMIC_H
+
 /* Define to 1 if you have the <stdbool.h> header file. */
 #undef HAVE_STDBOOL_H
 
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
-/* Define to 1 if you have the strncmpi function. */
-#undef HAVE_STRNCMPI
-
-/* Define to 1 if you have the strnicmp function. */
-#undef HAVE_STRNICMP
-
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
-
-/* Define to 1 if you have the strstr function. */
-#undef HAVE_STRSTR
-
 /* Define to 1 if you have the strtok_r function. */
 #undef HAVE_STRTOK_R
 
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
-
 /* Define to 1 if you have the `utime' function. */
 #undef HAVE_UTIME
 
 /* Define to 1 if compiler supports old gcc variadic macro style. */
 #undef HAVE_VARIADIC_MACROS_GCC
 
-/* Define to 1 if you have the winber.h header file. */
-#undef HAVE_WINBER_H
-
 /* Define to 1 if you have the wincrypt.h header file. */
 #undef HAVE_WINCRYPT_H
 
 /* Define this symbol if your OS supports changing the contents of argv */
 #undef HAVE_WRITABLE_ARGV
 
-/* Define to 1 if you have the writev function. */
-#undef HAVE_WRITEV
-
 /* Define to 1 if you have the ws2tcpip.h header file. */
 #undef HAVE_WS2TCPIP_H
 
 /* Define to 1 if you have the <x509.h> header file. */
 #undef HAVE_X509_H
 
-/* if you have the zlib.h header file */
-#undef HAVE_ZLIB_H
-
 /* if libzstd is in use */
 #undef HAVE_ZSTD
 
 /* Define to 1 if you need the lber.h header file even with ldap.h */
 #undef NEED_LBER_H
 
-/* Define to 1 if you need the malloc.h header file even with stdlib.h */
-#undef NEED_MALLOC_H
-
-/* Define to 1 if you need the memory.h header file even with stdlib.h */
-#undef NEED_MEMORY_H
-
 /* Define to 1 if _REENTRANT preprocessor symbol must be defined. */
 #undef NEED_REENTRANT
 
 /* a suitable file to read random data from */
 #undef RANDOM_FILE
 
-/* Define to the type of arg 1 for recv. */
-#undef RECV_TYPE_ARG1
-
-/* Define to the type of arg 2 for recv. */
-#undef RECV_TYPE_ARG2
-
-/* Define to the type of arg 3 for recv. */
-#undef RECV_TYPE_ARG3
-
-/* Define to the type of arg 4 for recv. */
-#undef RECV_TYPE_ARG4
-
-/* Define to the function return type for recv. */
-#undef RECV_TYPE_RETV
-
-/* Define to the type qualifier of arg 5 for select. */
-#undef SELECT_QUAL_ARG5
-
-/* Define to the type of arg 1 for select. */
-#undef SELECT_TYPE_ARG1
-
-/* Define to the type of args 2, 3 and 4 for select. */
-#undef SELECT_TYPE_ARG234
-
-/* Define to the type of arg 5 for select. */
-#undef SELECT_TYPE_ARG5
-
-/* Define to the function return type for select. */
-#undef SELECT_TYPE_RETV
-
-/* Define to the type qualifier of arg 2 for send. */
-#undef SEND_QUAL_ARG2
-
-/* Define to the type of arg 1 for send. */
-#undef SEND_TYPE_ARG1
-
-/* Define to the type of arg 2 for send. */
-#undef SEND_TYPE_ARG2
-
-/* Define to the type of arg 3 for send. */
-#undef SEND_TYPE_ARG3
-
-/* Define to the type of arg 4 for send. */
-#undef SEND_TYPE_ARG4
-
-/* Define to the function return type for send. */
-#undef SEND_TYPE_RETV
-
-/* The number of bytes in type curl_off_t */
+/* Size of curl_off_t in number of bytes */
 #undef SIZEOF_CURL_OFF_T
 
-/* The number of bytes in type int */
+/* Size of int in number of bytes */
 #undef SIZEOF_INT
 
-/* The number of bytes in type long */
+/* Size of long in number of bytes */
 #undef SIZEOF_LONG
 
-/* The number of bytes in type long long */
+/* Size of long long in number of bytes */
 #undef SIZEOF_LONG_LONG
 
-/* The number of bytes in type off_t */
+/* Size of off_t in number of bytes */
 #undef SIZEOF_OFF_T
 
-/* The number of bytes in type short */
-#undef SIZEOF_SHORT
-
-/* The number of bytes in type size_t */
+/* Size of size_t in number of bytes */
 #undef SIZEOF_SIZE_T
 
-/* The number of bytes in type time_t */
+/* Size of time_t in number of bytes */
 #undef SIZEOF_TIME_T
 
 /* Define to 1 if all of the C90 standard headers exist (not just the ones
    backward compatibility; new code need not use it. */
 #undef STDC_HEADERS
 
-/* Define to the type of arg 3 for strerror_r. */
-#undef STRERROR_R_TYPE_ARG3
-
 /* if AmiSSL is in use */
 #undef USE_AMISSL
 
 /* if mbedTLS is enabled */
 #undef USE_MBEDTLS
 
-/* if MesaLink is enabled */
-#undef USE_MESALINK
+/* if msh3 is in use */
+#undef USE_MSH3
 
 /* if nghttp2 is in use */
 #undef USE_NGHTTP2
 /* if ngtcp2_crypto_openssl is in use */
 #undef USE_NGTCP2_CRYPTO_OPENSSL
 
+/* if ngtcp2_crypto_wolfssl is in use */
+#undef USE_NGTCP2_CRYPTO_WOLFSSL
+
 /* if NSS is enabled */
 #undef USE_NSS
 
 /* Use Unix domain sockets */
 #undef USE_UNIX_SOCKETS
 
+/* enable websockets support */
+#undef USE_WEBSOCKETS
+
 /* Define to 1 if you are building a Windows target with crypto API support.
    */
 #undef USE_WIN32_CRYPTO
diff --git a/lib/curl_ctype.c b/lib/curl_ctype.c
deleted file mode 100644 (file)
index d6cd08a..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifndef CURL_DOES_CONVERSIONS
-
-#undef _U
-#define _U (1<<0) /* upper case */
-#undef _L
-#define _L (1<<1) /* lower case */
-#undef _N
-#define _N (1<<2) /* decimal numerical digit */
-#undef _S
-#define _S (1<<3) /* space */
-#undef _P
-#define _P (1<<4) /* punctuation */
-#undef _C
-#define _C (1<<5) /* control */
-#undef _X
-#define _X (1<<6) /* hexadecimal letter */
-#undef _B
-#define _B (1<<7) /* blank */
-
-static const unsigned char ascii[128] = {
-  _C,   _C,     _C,     _C,     _C,     _C,     _C,     _C,
-  _C,   _C|_S,  _C|_S,  _C|_S,  _C|_S,  _C|_S,  _C,     _C,
-  _C,   _C,     _C,     _C,     _C,     _C,     _C,     _C,
-  _C,   _C,     _C,     _C,     _C,     _C,     _C,     _C,
-  _S|_B, _P,    _P,     _P,     _P,     _P,     _P,     _P,
-  _P,   _P,     _P,     _P,     _P,     _P,     _P,     _P,
-  _N,   _N,     _N,     _N,     _N,     _N,     _N,     _N,
-  _N,   _N,     _P,     _P,     _P,     _P,     _P,     _P,
-  _P,   _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U,
-  _U,   _U,     _U,     _U,     _U,     _U,     _U,     _U,
-  _U,   _U,     _U,     _U,     _U,     _U,     _U,     _U,
-  _U,   _U,     _U,     _P,     _P,     _P,     _P,     _P,
-  _P,   _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L,
-  _L,   _L,     _L,     _L,     _L,     _L,     _L,     _L,
-  _L,   _L,     _L,     _L,     _L,     _L,     _L,     _L,
-  _L,   _L,     _L,     _P,     _P,     _P,     _P,     _C
-};
-
-int Curl_isspace(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & _S);
-}
-
-int Curl_isdigit(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & _N);
-}
-
-int Curl_isalnum(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_N|_U|_L));
-}
-
-int Curl_isxdigit(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_N|_X));
-}
-
-int Curl_isgraph(int c)
-{
-  if((c < 0) || (c >= 0x80) || (c == ' '))
-    return FALSE;
-  return (ascii[c] & (_N|_X|_U|_L|_P|_S));
-}
-
-int Curl_isprint(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_N|_X|_U|_L|_P|_S));
-}
-
-int Curl_isalpha(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_U|_L));
-}
-
-int Curl_isupper(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_U));
-}
-
-int Curl_islower(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_L));
-}
-
-int Curl_iscntrl(int c)
-{
-  if((c < 0) || (c >= 0x80))
-    return FALSE;
-  return (ascii[c] & (_C));
-}
-
-#endif /* !CURL_DOES_CONVERSIONS */
index 17dfaa09424a384a6976032692c3b6976073c0a4..dc6b8cab8644b7ce0f27d7529f31844cbdf942a7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-/*
- * Uppercase macro versions of ANSI/ISO is*() functions/macros which
- * avoid negative number inputs with argument byte codes > 127.
+ * SPDX-License-Identifier: curl
  *
- * For non-ASCII platforms the C library character classification routines
- * are used despite being locale-dependent, because this is better than
- * not to work at all.
- */
-#include <ctype.h>
-
-#define ISSPACE(x)  (isspace((int)  ((unsigned char)x)))
-#define ISDIGIT(x)  (isdigit((int)  ((unsigned char)x)))
-#define ISALNUM(x)  (isalnum((int)  ((unsigned char)x)))
-#define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
-#define ISGRAPH(x)  (isgraph((int)  ((unsigned char)x)))
-#define ISALPHA(x)  (isalpha((int)  ((unsigned char)x)))
-#define ISPRINT(x)  (isprint((int)  ((unsigned char)x)))
-#define ISUPPER(x)  (isupper((int)  ((unsigned char)x)))
-#define ISLOWER(x)  (islower((int)  ((unsigned char)x)))
-#define ISCNTRL(x)  (iscntrl((int)  ((unsigned char)x)))
-#define ISASCII(x)  (isascii((int)  ((unsigned char)x)))
-
-#else
-
-int Curl_isspace(int c);
-int Curl_isdigit(int c);
-int Curl_isalnum(int c);
-int Curl_isxdigit(int c);
-int Curl_isgraph(int c);
-int Curl_isprint(int c);
-int Curl_isalpha(int c);
-int Curl_isupper(int c);
-int Curl_islower(int c);
-int Curl_iscntrl(int c);
-
-#define ISSPACE(x)  (Curl_isspace((int)  ((unsigned char)x)))
-#define ISDIGIT(x)  (Curl_isdigit((int)  ((unsigned char)x)))
-#define ISALNUM(x)  (Curl_isalnum((int)  ((unsigned char)x)))
-#define ISXDIGIT(x) (Curl_isxdigit((int) ((unsigned char)x)))
-#define ISGRAPH(x)  (Curl_isgraph((int)  ((unsigned char)x)))
-#define ISALPHA(x)  (Curl_isalpha((int)  ((unsigned char)x)))
-#define ISPRINT(x)  (Curl_isprint((int)  ((unsigned char)x)))
-#define ISUPPER(x)  (Curl_isupper((int)  ((unsigned char)x)))
-#define ISLOWER(x)  (Curl_islower((int)  ((unsigned char)x)))
-#define ISCNTRL(x)  (Curl_iscntrl((int)  ((unsigned char)x)))
-#define ISASCII(x)  (((x) >= 0) && ((x) <= 0x80))
-
-#endif
+ ***************************************************************************/
 
-#define ISBLANK(x)  (int)((((unsigned char)x) == ' ') ||        \
-                          (((unsigned char)x) == '\t'))
+#define ISLOWHEXALHA(x) (((x) >= 'a') && ((x) <= 'f'))
+#define ISUPHEXALHA(x) (((x) >= 'A') && ((x) <= 'F'))
+
+#define ISLOWCNTRL(x) ((x) >= 0 && ((x) <= 0x1f))
+#define IS7F(x) ((x) == 0x7f)
+
+#define ISLOWPRINT(x) (((x) >= 9) && ((x) <= 0x0d))
+
+#define ISPRINT(x)  (ISLOWPRINT(x) || (((x) >= ' ') && ((x) <= 0x7e)))
+#define ISGRAPH(x)  (ISLOWPRINT(x) || (((x) > ' ') && ((x) <= 0x7e)))
+#define ISCNTRL(x) (ISLOWCNTRL(x) || IS7F(x))
+#define ISALPHA(x) (ISLOWER(x) || ISUPPER(x))
+#define ISXDIGIT(x) (ISDIGIT(x) || ISLOWHEXALHA(x) || ISUPHEXALHA(x))
+#define ISALNUM(x)  (ISDIGIT(x) || ISLOWER(x) || ISUPPER(x))
+#define ISUPPER(x)  (((x) >= 'A') && ((x) <= 'Z'))
+#define ISLOWER(x)  (((x) >= 'a') && ((x) <= 'z'))
+#define ISDIGIT(x)  (((x) >= '0') && ((x) <= '9'))
+#define ISBLANK(x)  (((x) == ' ') || ((x) == '\t'))
+#define ISSPACE(x)  (ISBLANK(x) || (((x) >= 0xa) && ((x) <= 0x0d)))
 
 #endif /* HEADER_CURL_CTYPE_H */
index 76185cbf2104c106e623681593ca6e0f27780642..a2bf648c29320bc516ff22f5b7bb181d78fc870d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2015 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2015 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * 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(USE_NTLM) && !defined(USE_OPENSSL) && !defined(USE_WOLFSSL)
+#if defined(USE_CURL_NTLM_CORE) && !defined(USE_WOLFSSL) && \
+    (defined(USE_GNUTLS) || \
+     defined(USE_NSS) || \
+     defined(USE_SECTRANSP) || \
+     defined(USE_OS400CRYPTO) || \
+     defined(USE_WIN32_CRYPTO))
 
 #include "curl_des.h"
 
@@ -34,7 +41,7 @@
  *
  * The function is a port of the Java based oddParity() function over at:
  *
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
  *
  * Parameters:
  *
@@ -60,4 +67,4 @@ void Curl_des_set_odd_parity(unsigned char *bytes, size_t len)
   }
 }
 
-#endif /* USE_NTLM && !USE_OPENSSL */
+#endif
index 438706a0d294517972b0e8d2d9c13baf0d19112a..c1c167471a79abc1f11ed94c7a4341bf26108287 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2015 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2015 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
  * 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(USE_NTLM) && !defined(USE_OPENSSL)
+#if defined(USE_CURL_NTLM_CORE) && !defined(USE_WOLFSSL) && \
+    (defined(USE_GNUTLS) || \
+     defined(USE_NSS) || \
+     defined(USE_SECTRANSP) || \
+     defined(USE_OS400CRYPTO) || \
+     defined(USE_WIN32_CRYPTO))
 
 /* Applies odd parity to the given byte array */
 void Curl_des_set_odd_parity(unsigned char *bytes, size_t length);
 
-#endif /* USE_NTLM && !USE_OPENSSL */
+#endif
 
 #endif /* HEADER_CURL_DES_H */
index ecde74bfb1d0a78965a509060823cab209f516d5..3cc7734f31cfa20916485161cea399d01e171a64 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 4e12d7da4d961a84ebf50dbe28ce96cba1c59fd0..758d55f2c5b0e946c1f08b5638b8fd4d08bfc77c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Converts a 16-bit integer from little endian */
index 4bfa58598eb6da9cb27bb7a2323cb76983e2b71b..0dd1eb5ef58b8672642247bd91c9c4aafa26277f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 1c80ea779364543549a6944153266de0107418f9..8324be533d8e6e0c32f9f700a5482ebcb79e7ff7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #define CURL_FNMATCH_MATCH    0
index 8f3b0bd8c104477594418e7b59563a513119bfe2..22e3705f4cdec886a8f457c76a4e74cc4646f314 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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(CURL_DISABLE_COOKIES) || !defined(CURL_DISABLE_ALTSVC) ||  \
-  !defined(CURL_DISABLE_HSTS)
+  !defined(CURL_DISABLE_HSTS) || !defined(CURL_DISABLE_NETRC)
 
 #include "curl_get_line.h"
 #include "curl_memory.h"
@@ -31,8 +33,8 @@
 #include "memdebug.h"
 
 /*
- * get_line() makes sure to only return complete whole lines that fit in 'len'
- * bytes and end with a newline.
+ * Curl_get_line() makes sure to only return complete whole lines that fit in
+ * 'len' bytes and end with a newline.
  */
 char *Curl_get_line(char *buf, int len, FILE *input)
 {
index 597aa09a9cd230e9cb9547670b9c0811f308e035..b2a534d0019f43ae8457366290d4782f45daf9fe 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* get_line() makes sure to only return complete whole lines that fit in 'len'
index 2d5ff61cf6d2abf7ad2deb1b13da7e1bc38384e9..4747e938db8851a2d0e9959e27c5d422001c769d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 2161c40ac3f5d8760fbdacafca0c140fc78be82b..b7360969ac5bf1e0b83510480b1091cf4cf81f36 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Hostname buffer size */
index 8f340562bc156f2a3f33fc2cc5a94f62e68320a7..01ab48ec3e88d072d07d6574e3870d77714a6286 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -60,7 +62,7 @@ OM_uint32 Curl_gss_init_sec_context(
 #ifdef GSS_C_DELEG_POLICY_FLAG
     req_flags |= GSS_C_DELEG_POLICY_FLAG;
 #else
-    infof(data, "warning: support for CURLGSSAPI_DELEGATION_POLICY_FLAG not "
+    infof(data, "WARNING: support for CURLGSSAPI_DELEGATION_POLICY_FLAG not "
         "compiled in");
 #endif
   }
@@ -89,7 +91,7 @@ static size_t display_gss_error(OM_uint32 status, int type,
   OM_uint32 maj_stat;
   OM_uint32 min_stat;
   OM_uint32 msg_ctx = 0;
-  gss_buffer_desc status_string;
+  gss_buffer_desc status_string = GSS_C_EMPTY_BUFFER;
 
   do {
     maj_stat = gss_display_status(&min_stat,
@@ -98,10 +100,12 @@ static size_t display_gss_error(OM_uint32 status, int type,
                                   GSS_C_NO_OID,
                                   &msg_ctx,
                                   &status_string);
-    if(GSS_LOG_BUFFER_LEN > len + status_string.length + 3) {
-      len += msnprintf(buf + len, GSS_LOG_BUFFER_LEN - len,
-                       "%.*s. ", (int)status_string.length,
-                       (char *)status_string.value);
+    if(maj_stat == GSS_S_COMPLETE && status_string.length > 0) {
+      if(GSS_LOG_BUFFER_LEN > len + status_string.length + 3) {
+        len += msnprintf(buf + len, GSS_LOG_BUFFER_LEN - len,
+                         "%.*s. ", (int)status_string.length,
+                         (char *)status_string.value);
+      }
     }
     gss_release_buffer(&min_stat, &status_string);
   } while(!GSS_ERROR(maj_stat) && msg_ctx);
index 466d09ed0aa7d38ac6e684e3eca1a45da5ef006b..b4ed482aa22fbc33a96db2ee191a396aba643fe7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 5755655d024d3deba7401a57748793378ba0c930..36c0bd62e5f473ba47fd79d29e6b126ff6c9b66f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
 
+#include <curl/curl.h>
+
 #define HMAC_MD5_LENGTH 16
 
 typedef CURLcode (* HMAC_hinit_func)(void *context);
index ca06840742530faf96b604db5f6959af2daefc7a..ccd6f10e3ddb8108bdb6e1985e823ef6e0ea16cb 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 struct Curl_sec_client_mech {
index 124e18b133109561a5762d6d6c0f2eabb83c6a09..ba3ede42608c5a863488088f05a335704cf188b1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifndef CURL_DISABLE_LDAP
 extern const struct Curl_handler Curl_handler_ldap;
index f9dafcb53cee7c17ff534c2fa9a438cda316e796..8049355cff0d0dba14022da66693dba172328681 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index b7d7c1f5d25d110d38fc117a4bc10c6636bf1979..789329654b5f43de954f51c285f89b84752a98f0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
index 5806290637fd65149da191989eb7f23fc757ff2d..092fc9f75884b5b3691a7b68ab29ef32814f540d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 0bd845f690fc66faf50a4a9a176d7259b6cc232d..c329a6176acdaa882b7d1b1f868c61e6e160c720 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index c8394bb433895e4bd4cf8d4bfa4f117f80f6752b..e7654e1d9a757fc857c8c0371e3a37eb422a00e0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index e9d2a8cb88786d10213e8c1f0033b62fae1b14c9..309dccbfef2b1330179635c0715fd54fa1a0cee3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -104,7 +106,7 @@ int curlx_win32_open(const char *filename, int oflag, ...)
 #ifdef _UNICODE
   if(filename_w) {
     result = _wopen(filename_w, oflag, pmode);
-    free(filename_w);
+    curlx_unicodefree(filename_w);
   }
   else
     errno = EINVAL;
@@ -124,8 +126,8 @@ FILE *curlx_win32_fopen(const char *filename, const char *mode)
     result = _wfopen(filename_w, mode_w);
   else
     errno = EINVAL;
-  free(filename_w);
-  free(mode_w);
+  curlx_unicodefree(filename_w);
+  curlx_unicodefree(mode_w);
   return result;
 #else
   return (fopen)(filename, mode);
@@ -143,7 +145,7 @@ int curlx_win32_stat(const char *path, struct_stat *buffer)
 #else
     result = _wstati64(path_w, buffer);
 #endif
-    free(path_w);
+    curlx_unicodefree(path_w);
   }
   else
     errno = EINVAL;
@@ -164,7 +166,7 @@ int curlx_win32_access(const char *path, int mode)
   wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
   if(path_w) {
     result = _waccess(path_w, mode);
-    free(path_w);
+    curlx_unicodefree(path_w);
   }
   else
     errno = EINVAL;
index 491155e6a7134d603c5f72373d5591a0c7404d40..929714873a0d9d2468a1dfab8a79ffb94749b7f3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index ed123d0c1c3a54dec57d4484d04c2f3a490c3fa1..38e193c186a5b141c7897ff62521cee83a4d1b0f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -27,7 +29,7 @@
 /*
  * NTLM details:
  *
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
  * https://www.innovation.ch/java/ntlm.html
  */
 
 
 #if defined(USE_OPENSSL_DES) || defined(USE_WOLFSSL)
 
-#ifdef USE_WOLFSSL
-#include <wolfssl/options.h>
-#endif
-
+#if defined(USE_OPENSSL)
 #  include <openssl/des.h>
 #  include <openssl/md5.h>
 #  include <openssl/ssl.h>
 #  include <openssl/rand.h>
+#else
+#  include <wolfssl/options.h>
+#  include <wolfssl/openssl/des.h>
+#  include <wolfssl/openssl/md5.h>
+#  include <wolfssl/openssl/ssl.h>
+#  include <wolfssl/openssl/rand.h>
+#endif
+
 #  if (defined(OPENSSL_VERSION_NUMBER) && \
        (OPENSSL_VERSION_NUMBER < 0x00907001L)) && !defined(USE_WOLFSSL)
 #    define DES_key_schedule des_key_schedule
 #endif
 
 #include "urldata.h"
-#include "non-ascii.h"
 #include "strcase.h"
 #include "curl_ntlm_core.h"
 #include "curl_md5.h"
@@ -402,11 +408,9 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
 /*
  * Set up lanmanager hashed password
  */
-CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
-                                   const char *password,
+CURLcode Curl_ntlm_core_mk_lm_hash(const char *password,
                                    unsigned char *lmbuffer /* 21 bytes */)
 {
-  CURLcode result;
   unsigned char pw[14];
   static const unsigned char magic[] = {
     0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 /* i.e. KGS!@#$% */
@@ -416,14 +420,6 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
   Curl_strntoupper((char *)pw, password, len);
   memset(&pw[len], 0, 14 - len);
 
-  /*
-   * The LanManager hashed password needs to be created using the
-   * password in the network encoding not the host encoding.
-   */
-  result = Curl_convert_to_network(data, (char *)pw, 14);
-  if(result)
-    return result;
-
   {
     /* Create LanManager hashed password. */
 
@@ -455,7 +451,6 @@ CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
   return CURLE_OK;
 }
 
-#ifdef USE_NTRESPONSES
 static void ascii_to_unicode_le(unsigned char *dest, const char *src,
                                 size_t srclen)
 {
@@ -466,7 +461,7 @@ static void ascii_to_unicode_le(unsigned char *dest, const char *src,
   }
 }
 
-#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
+#if !defined(USE_WINDOWS_SSPI)
 
 static void ascii_uppercase_to_unicode_le(unsigned char *dest,
                                           const char *src, size_t srclen)
@@ -478,19 +473,17 @@ static void ascii_uppercase_to_unicode_le(unsigned char *dest,
   }
 }
 
-#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
+#endif /* !USE_WINDOWS_SSPI */
 
 /*
  * Set up nt hashed passwords
  * @unittest: 1600
  */
-CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
-                                   const char *password,
+CURLcode Curl_ntlm_core_mk_nt_hash(const char *password,
                                    unsigned char *ntbuffer /* 21 bytes */)
 {
   size_t len = strlen(password);
   unsigned char *pw;
-  CURLcode result;
   if(len > SIZE_T_MAX/2) /* avoid integer overflow */
     return CURLE_OUT_OF_MEMORY;
   pw = len ? malloc(len * 2) : (unsigned char *)strdup("");
@@ -499,22 +492,16 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
 
   ascii_to_unicode_le(pw, password, len);
 
-  /*
-   * The NT hashed password needs to be created using the password in the
-   * network encoding not the host encoding.
-   */
-  result = Curl_convert_to_network(data, (char *)pw, len * 2);
-  if(!result) {
-    /* Create NT hashed password. */
-    Curl_md4it(ntbuffer, pw, 2 * len);
-    memset(ntbuffer + 16, 0, 21 - 16);
-  }
+  /* Create NT hashed password. */
+  Curl_md4it(ntbuffer, pw, 2 * len);
+  memset(ntbuffer + 16, 0, 21 - 16);
+
   free(pw);
 
-  return result;
+  return CURLE_OK;
 }
 
-#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
+#if !defined(USE_WINDOWS_SSPI)
 
 /* Timestamp in tenths of a microsecond since January 1, 1601 00:00:00 UTC. */
 struct ms_filetime {
@@ -730,8 +717,6 @@ CURLcode  Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
   return result;
 }
 
-#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
-
-#endif /* USE_NTRESPONSES */
+#endif /* !USE_WINDOWS_SSPI */
 
 #endif /* USE_CURL_NTLM_CORE */
index 02b39d485841e71e9b3b4b1482a87b4c80675134..60444c9dc69cf97d5bad8943a62bf28fbf099bcb 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 #define NTLM_NEEDS_NSS_INIT
 #endif
 
-#if defined(USE_OPENSSL) || defined(USE_WOLFSSL)
 #ifdef USE_WOLFSSL
 #  include <wolfssl/options.h>
-#endif
+#  include <wolfssl/openssl/ssl.h>
+#elif defined(USE_OPENSSL)
 #  include <openssl/ssl.h>
 #endif
 
-/* Define USE_NTRESPONSES in order to make the type-3 message include
- * the NT response message. */
-#define USE_NTRESPONSES
-
-/* Define USE_NTLM2SESSION in order to make the type-3 message include the
-   NTLM2Session response message, requires USE_NTRESPONSES defined to 1 */
-#if defined(USE_NTRESPONSES)
-#define USE_NTLM2SESSION
-#endif
-
-/* Define USE_NTLM_V2 in order to allow the type-3 message to include the
-   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1 */
-#if defined(USE_NTRESPONSES)
-#define USE_NTLM_V2
-#endif
-
 /* Helpers to generate function byte arguments in little endian order */
 #define SHORTPAIR(x) ((int)((x) & 0xff)), ((int)(((x) >> 8) & 0xff))
 #define LONGQUARTET(x) ((int)((x) & 0xff)), ((int)(((x) >> 8) & 0xff)), \
@@ -67,16 +53,13 @@ void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                             const unsigned char *plaintext,
                             unsigned char *results);
 
-CURLcode Curl_ntlm_core_mk_lm_hash(struct Curl_easy *data,
-                                   const char *password,
+CURLcode Curl_ntlm_core_mk_lm_hash(const char *password,
                                    unsigned char *lmbuffer /* 21 bytes */);
 
-#ifdef USE_NTRESPONSES
-CURLcode Curl_ntlm_core_mk_nt_hash(struct Curl_easy *data,
-                                   const char *password,
+CURLcode Curl_ntlm_core_mk_nt_hash(const char *password,
                                    unsigned char *ntbuffer /* 21 bytes */);
 
-#if defined(USE_NTLM_V2) && !defined(USE_WINDOWS_SSPI)
+#if !defined(USE_WINDOWS_SSPI)
 
 CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
                        const unsigned char *data, unsigned int datalen,
@@ -98,9 +81,7 @@ CURLcode  Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
                                       unsigned char *challenge_server,
                                       unsigned char *lmresp);
 
-#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */
-
-#endif /* USE_NTRESPONSES */
+#endif /* !USE_WINDOWS_SSPI */
 
 #endif /* USE_CURL_NTLM_CORE */
 
index 5a3bc3c893fa27a7c2e0f7174f564bc8f570ecc5..33dcf0ce25cf980fbc257259fd9ac4df7d7d945c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -28,7 +30,7 @@
 /*
  * NTLM details:
  *
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
  * https://www.innovation.ch/java/ntlm.html
  */
 
index 961b5687339442c0f7bc3df22d9921598ebcce42..1f04db8c3dac6009c84920f2a1af229c77d242e7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 65106188c7221fdb469fe651c8e83d5ed916426f..b55e83047dd5dd4a5eaa9913833ae53acf463101 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl AND ISC
+ *
  ***************************************************************************/
 
 #include "curl_setup.h"
@@ -40,7 +42,7 @@ CURLcode Curl_getworkingpath(struct Curl_easy *data,
   char *working_path;
   size_t working_path_len;
   CURLcode result =
-    Curl_urldecode(data, data->state.up.path, 0, &working_path,
+    Curl_urldecode(data->state.up.path, 0, &working_path,
                    &working_path_len, REJECT_ZERO);
   if(result)
     return result;
@@ -120,7 +122,8 @@ CURLcode Curl_get_pathname(const char **cpp, char **path, char *homedir)
   bool relativePath = false;
   static const char WHITESPACE[] = " \t\r\n";
 
-  if(!*cp) {
+  DEBUGASSERT(homedir);
+  if(!*cp || !homedir) {
     *cpp = NULL;
     *path = NULL;
     return CURLE_QUOTE_ERROR;
index a376bd1d2a4fab0a4c5cee9f5d191c6930bc67e6..98e56eaad34564a8267eb041b9377c6e0630f597 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 9fa625f10818a09ae3c626c91f3a6f33cc91ad44..3823828cd9e0e09c31237bfa3bc5494971ad6881 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 24bdb3052ed5fdab280980a784aa60c4baba8c54..dd92d05b39c04f52d7ca8ede253d977038bef0e5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -45,7 +47,7 @@ CURLcode Curl_range(struct Curl_easy *data)
     from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
     if(from_t == CURL_OFFT_FLOW)
       return CURLE_RANGE_ERROR;
-    while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+    while(*ptr && (ISBLANK(*ptr) || (*ptr == '-')))
       ptr++;
     to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
     if(to_t == CURL_OFFT_FLOW)
index 0a07baf146000c4dffa1581423236fe35c09d747..33570abc2551af80571af0010ffc22f385eb68e9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 2fa026796e698ac9c37e33c0c321ccb50c71949c..b0c371041ea1867a61f77e6268befb135cb32c2e 100644 (file)
@@ -5,8 +5,8 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com>
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012, Howard Chu, <hyc@highlandsun.com>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
  * 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"
index f45fa71d1246342dc91e30400999e0391b1d8128..f856085dc3d605bf50fa0a050d6af202b0299ee3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010 - 2020, Howard Chu, <hyc@highlandsun.com>
+ * Copyright (C) 2010 - 2022, Howard Chu, <hyc@highlandsun.com>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifdef USE_LIBRTMP
 extern const struct Curl_handler Curl_handler_rtmp;
index 8d39e4f81b45ff4de27d074a4c99667ba7a47a70..9684ee476e162e2fd2dbcfcd2c14b94837931ffc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC2195 CRAM-MD5 authentication
  * RFC2617 Basic and Digest Access Authentication
  * RFC2831 DIGEST-MD5 authentication
@@ -48,7 +50,6 @@
 #include "warnless.h"
 #include "strtok.h"
 #include "sendf.h"
-#include "non-ascii.h" /* included for Curl_convert_... prototypes */
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
@@ -283,8 +284,7 @@ static CURLcode get_server_message(struct SASL *sasl, struct Curl_easy *data,
 }
 
 /* Encode the outgoing SASL message. */
-static CURLcode build_message(struct SASL *sasl, struct Curl_easy *data,
-                              struct bufref *msg)
+static CURLcode build_message(struct SASL *sasl, struct bufref *msg)
 {
   CURLcode result = CURLE_OK;
 
@@ -297,7 +297,7 @@ static CURLcode build_message(struct SASL *sasl, struct Curl_easy *data,
       char *base64;
       size_t base64len;
 
-      result = Curl_base64_encode(data, (const char *) Curl_bufref_ptr(msg),
+      result = Curl_base64_encode((const char *) Curl_bufref_ptr(msg),
                                   Curl_bufref_len(msg), &base64, &base64len);
       if(!result)
         Curl_bufref_set(msg, base64, base64len, curl_free);
@@ -312,10 +312,10 @@ static CURLcode build_message(struct SASL *sasl, struct Curl_easy *data,
  *
  * Check if we have enough auth data and capabilities to authenticate.
  */
-bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn)
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct Curl_easy *data)
 {
   /* Have credentials been provided? */
-  if(conn->bits.user_passwd)
+  if(data->state.aptr.user)
     return TRUE;
 
   /* EXTERNAL can authenticate without a user name and/or password */
@@ -367,7 +367,7 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
     if(force_ir || data->set.sasl_ir)
       result = Curl_auth_create_external_message(conn->user, &resp);
   }
-  else if(conn->bits.user_passwd) {
+  else if(data->state.aptr.user) {
 #if defined(USE_KERBEROS5)
     if((enabledmechs & SASL_MECH_GSSAPI) && Curl_auth_is_gssapi_supported() &&
        Curl_auth_user_contains_domain(conn->user)) {
@@ -494,7 +494,7 @@ CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
   if(!result && mech) {
     sasl->curmech = mech;
     if(Curl_bufref_ptr(&resp))
-      result = build_message(sasl, data, &resp);
+      result = build_message(sasl, &resp);
 
     if(sasl->params->maxirlen &&
        strlen(mech) + Curl_bufref_len(&resp) > sasl->params->maxirlen)
@@ -672,7 +672,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
 #endif
 
   case SASL_OAUTH2:
-    /* Create the authorisation message */
+    /* Create the authorization message */
     if(sasl->authused == SASL_MECH_OAUTHBEARER) {
       result = Curl_auth_create_oauth_bearer_message(conn->user,
                                                      hostname,
@@ -729,7 +729,7 @@ CURLcode Curl_sasl_continue(struct SASL *sasl, struct Curl_easy *data,
     newstate = SASL_CANCEL;
     break;
   case CURLE_OK:
-    result = build_message(sasl, data, &resp);
+    result = build_message(sasl, &resp);
     if(!result)
       result = sasl->params->contauth(data, sasl->curmech, &resp);
     break;
index 91458c74a063d4f6b8326e4ae2f6ceeb7f50b549..c709d56a6721c21b5e6b5c9b8cd85804565851d9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <curl/curl.h>
@@ -150,7 +152,7 @@ void Curl_sasl_init(struct SASL *sasl, struct Curl_easy *data,
                     const struct SASLproto *params);
 
 /* Check if we have enough auth data and capabilities to authenticate */
-bool Curl_sasl_can_authenticate(struct SASL *sasl, struct connectdata *conn);
+bool Curl_sasl_can_authenticate(struct SASL *sasl, struct Curl_easy *data);
 
 /* Calculate the required login details for SASL authentication  */
 CURLcode Curl_sasl_start(struct SASL *sasl, struct Curl_easy *data,
index 61384cdff6ad32d429128d99e56578f1ca1d8a07..ac27b130c60cc97f26f87b3fcecd86101b22c5e0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #if defined(BUILDING_LIBCURL) && !defined(CURL_NO_OLDIES)
 #define CURL_NO_OLDIES
 #endif
 
+/* define mingw version macros, eg __MINGW{32,64}_{MINOR,MAJOR}_VERSION */
+#ifdef __MINGW32__
+#include <_mingw.h>
+#endif
+
 /*
  * Disable Visual Studio warnings:
  * 4127 "conditional expression is constant"
 #  include "config-os400.h"
 #endif
 
-#ifdef TPF
-#  include "config-tpf.h"
-#endif
-
-#ifdef __VXWORKS__
-#  include "config-vxworks.h"
-#endif
-
 #ifdef __PLAN9__
 #  include "config-plan9.h"
 #endif
 /*  please, do it beyond the point further indicated in this file.  */
 /* ================================================================ */
 
-#include <curl/curl.h>
-
 /*
  * Disable other protocols when http is the only one desired.
  */
 
 /* ================================================================ */
 /* No system header file shall be included in this file before this */
-/* point. The only allowed ones are those included from curl/system.h */
+/* point.                                                           */
 /* ================================================================ */
 
 /*
 #  include "setup-win32.h"
 #endif
 
+#include <curl/system.h>
+
 /*
  * Use getaddrinfo to resolve the IPv4 address literal. If the current network
  * interface doesn't support IPv4, but supports IPv6, NAT64, and DNS64,
 #  include <extra/strdup.h>
 #endif
 
-#ifdef TPF
-#  include <strings.h>    /* for bzero, strcasecmp, and strncasecmp */
-#  include <string.h>     /* for strcpy and strlen */
-#  include <stdlib.h>     /* for rand and srand */
-#  include <sys/socket.h> /* for select and ioctl*/
-#  include <netdb.h>      /* for in_addr_t definition */
-#  include <tpf/sysapi.h> /* for tpf_process_signals */
-   /* change which select is used for libcurl */
-#  define select(a,b,c,d,e) tpf_select_libcurl(a,b,c,d,e)
-#endif
-
-#ifdef __VXWORKS__
-#  include <sockLib.h>    /* for generic BSD socket functions */
-#  include <ioLib.h>      /* for basic I/O interface functions */
-#endif
-
 #ifdef __AMIGA__
+#  ifdef __amigaos4__
+#    define __USE_INLINE__
+     /* use our own resolver which uses runtime feature detection */
+#    define CURLRES_AMIGA
+     /* getaddrinfo() currently crashes bsdsocket.library, so disable */
+#    undef HAVE_GETADDRINFO
+#    if !(defined(__NEWLIB__) || \
+          (defined(__CLIB2__) && defined(__THREAD_SAFE)))
+       /* disable threaded resolver with clib2 - requires newlib or clib-ts */
+#      undef USE_THREADS_POSIX
+#    endif
+#  endif
 #  include <exec/types.h>
 #  include <exec/execbase.h>
 #  include <proto/exec.h>
 #  include <proto/dos.h>
 #  include <unistd.h>
-#  ifdef HAVE_PROTO_BSDSOCKET_H
-#    include <proto/bsdsocket.h> /* ensure bsdsocket.library use */
-#    define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+#  if defined(HAVE_PROTO_BSDSOCKET_H) && \
+    (!defined(__amigaos4__) || defined(USE_AMISSL))
+     /* use bsdsocket.library directly, instead of libc networking functions */
+#    include <proto/bsdsocket.h>
+#    ifdef __amigaos4__
+       int Curl_amiga_select(int nfds, fd_set *readfds, fd_set *writefds,
+                             fd_set *errorfds, struct timeval *timeout);
+#      define select(a,b,c,d,e) Curl_amiga_select(a,b,c,d,e)
+#    else
+#      define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
+#    endif
+     /* must not use libc's fcntl() on bsdsocket.library sockfds! */
+#    undef HAVE_FCNTL
+#    undef HAVE_FCNTL_O_NONBLOCK
+#  else
+     /* use libc networking and hence close() and fnctl() */
+#    undef HAVE_CLOSESOCKET_CAMEL
+#    undef HAVE_IOCTLSOCKET_CAMEL
 #  endif
 /*
  * In clib2 arpa/inet.h warns that some prototypes may clash
 #include <assert.h>
 #endif
 
-#ifdef __TANDEM /* for nsr-tandem-nsk systems */
-#include <floss.h>
+#ifdef __TANDEM /* for ns*-tandem-nsk systems */
+# if ! defined __LP64
+#  include <floss.h> /* FLOSS is only used for 32-bit builds. */
+# endif
 #endif
 
 #ifndef STDC_HEADERS /* no standard C headers! */
 /* now undef the stock libc functions just to avoid them being used */
 #  undef HAVE_GETADDRINFO
 #  undef HAVE_FREEADDRINFO
-#  undef HAVE_GETHOSTBYNAME
 #elif defined(USE_THREADS_POSIX) || defined(USE_THREADS_WIN32)
 #  define CURLRES_ASYNCH
 #  define CURLRES_THREADED
 #  endif
 #endif
 
-#ifdef NETWARE
-int netware_init(void);
-#ifndef __NOVELL_LIBC__
-#include <sys/bsdskt.h>
-#include <sys/timeval.h>
-#endif
-#endif
-
 #if defined(HAVE_LIBIDN2) && defined(HAVE_IDN2_H) && !defined(USE_WIN32_IDN)
 /* The lib and header are present */
 #define USE_LIBIDN2
@@ -641,7 +644,7 @@ int netware_init(void);
 #if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
     defined(USE_MBEDTLS) || \
     defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || \
-    defined(USE_SECTRANSP) || defined(USE_GSKIT) || defined(USE_MESALINK) || \
+    defined(USE_SECTRANSP) || defined(USE_GSKIT) || \
     defined(USE_BEARSSL) || defined(USE_RUSTLS)
 #define USE_SSL    /* SSL support has been enabled */
 #endif
@@ -739,12 +742,12 @@ int netware_init(void);
 #define SHUT_RDWR 0x02
 #endif
 
-/* Define S_ISREG if not defined by system headers, f.e. MSVC */
+/* Define S_ISREG if not defined by system headers, e.g. MSVC */
 #if !defined(S_ISREG) && defined(S_IFMT) && defined(S_IFREG)
 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
 #endif
 
-/* Define S_ISDIR if not defined by system headers, f.e. MSVC */
+/* Define S_ISDIR if not defined by system headers, e.g. MSVC */
 #if !defined(S_ISDIR) && defined(S_IFMT) && defined(S_IFDIR)
 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
 #endif
@@ -804,6 +807,11 @@ endings either CRLF or LF so 't' is appropriate.
 #define CURLMAX(x,y) ((x)>(y)?(x):(y))
 #define CURLMIN(x,y) ((x)<(y)?(x):(y))
 
+/* A convenience macro to provide both the string literal and the length of
+   the string literal in one go, useful for functions that take "string,len"
+   as their argument */
+#define STRCONST(x) x,sizeof(x)-1
+
 /* Some versions of the Android SDK is missing the declaration */
 #if defined(HAVE_GETPWUID_R) && defined(HAVE_DECL_GETPWUID_R_MISSING)
 struct passwd;
@@ -821,8 +829,9 @@ int getpwuid_r(uid_t uid, struct passwd *pwd, char *buf,
 #define USE_HTTP2
 #endif
 
-#if defined(USE_NGTCP2) || defined(USE_QUICHE)
+#if defined(USE_NGTCP2) || defined(USE_QUICHE) || defined(USE_MSH3)
 #define ENABLE_QUIC
+#define USE_HTTP3
 #endif
 
 #if defined(USE_UNIX_SOCKETS) && defined(WIN32)
index 38018d23c7a4aaea0ce737af8121b08c7212391b..f09b00f9f2b3df58bd95f3579113c3db3b6e937e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 
@@ -31,7 +33,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
-#include <ctype.h>
 #include <time.h>
 
 #ifdef HAVE_ERRNO_H
@@ -86,6 +87,8 @@
 #include <sys/socket.h>
 #endif
 
+#include "functypes.h"
+
 #ifdef __hpux
 #  if !defined(_XOPEN_SOURCE_EXTENDED) || defined(_KERNEL)
 #    ifdef OLD_APP32_64BIT_OFF_T
@@ -148,20 +151,10 @@ struct timeval {
  * SEND_TYPE_RETV must also be defined.
  */
 
-#if !defined(RECV_TYPE_ARG1) || \
-    !defined(RECV_TYPE_ARG2) || \
-    !defined(RECV_TYPE_ARG3) || \
-    !defined(RECV_TYPE_ARG4) || \
-    !defined(RECV_TYPE_RETV)
-  /* */
-  Error Missing_definition_of_return_and_arguments_types_of_recv
-  /* */
-#else
 #define sread(x,y,z) (ssize_t)recv((RECV_TYPE_ARG1)(x), \
                                    (RECV_TYPE_ARG2)(y), \
                                    (RECV_TYPE_ARG3)(z), \
                                    (RECV_TYPE_ARG4)(0))
-#endif
 #else /* HAVE_RECV */
 #ifndef sread
   /* */
@@ -178,21 +171,10 @@ struct timeval {
                                     (SEND_TYPE_ARG3)(z))
 
 #elif defined(HAVE_SEND)
-#if !defined(SEND_TYPE_ARG1) || \
-    !defined(SEND_QUAL_ARG2) || \
-    !defined(SEND_TYPE_ARG2) || \
-    !defined(SEND_TYPE_ARG3) || \
-    !defined(SEND_TYPE_ARG4) || \
-    !defined(SEND_TYPE_RETV)
-  /* */
-  Error Missing_definition_of_return_and_arguments_types_of_send
-  /* */
-#else
 #define swrite(x,y,z) (ssize_t)send((SEND_TYPE_ARG1)(x), \
                                     (SEND_QUAL_ARG2 SEND_TYPE_ARG2)(y), \
                                     (SEND_TYPE_ARG3)(z), \
                                     (SEND_TYPE_ARG4)(SEND_4TH_ARG))
-#endif
 #else /* HAVE_SEND */
 #ifndef swrite
   /* */
@@ -202,46 +184,6 @@ struct timeval {
 #endif /* HAVE_SEND */
 
 
-#if 0
-#if defined(HAVE_RECVFROM)
-/*
- * Currently recvfrom is only used on udp sockets.
- */
-#if !defined(RECVFROM_TYPE_ARG1) || \
-    !defined(RECVFROM_TYPE_ARG2) || \
-    !defined(RECVFROM_TYPE_ARG3) || \
-    !defined(RECVFROM_TYPE_ARG4) || \
-    !defined(RECVFROM_TYPE_ARG5) || \
-    !defined(RECVFROM_TYPE_ARG6) || \
-    !defined(RECVFROM_TYPE_RETV)
-  /* */
-  Error Missing_definition_of_return_and_arguments_types_of_recvfrom
-  /* */
-#else
-#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1)  (s),  \
-                                                 (RECVFROM_TYPE_ARG2 *)(b),  \
-                                                 (RECVFROM_TYPE_ARG3)  (bl), \
-                                                 (RECVFROM_TYPE_ARG4)  (0),  \
-                                                 (RECVFROM_TYPE_ARG5 *)(f),  \
-                                                 (RECVFROM_TYPE_ARG6 *)(fl))
-#endif
-#else /* HAVE_RECVFROM */
-#ifndef sreadfrom
-  /* */
-  Error Missing_definition_of_macro_sreadfrom
-  /* */
-#endif
-#endif /* HAVE_RECVFROM */
-
-
-#ifdef RECVFROM_TYPE_ARG6_IS_VOID
-#  define RECVFROM_ARG6_T int
-#else
-#  define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
-#endif
-#endif /* if 0 */
-
-
 /*
  * Function-like macro definition used to close a socket.
  */
@@ -267,9 +209,6 @@ struct timeval {
 #  define sfcntl  fcntl
 #endif
 
-#define TOLOWER(x)  (tolower((int)  ((unsigned char)x)))
-
-
 /*
  * 'bool' stuff compatible with HP-UX headers.
  */
@@ -306,6 +245,14 @@ struct timeval {
 #  define HAVE_BOOL_T
 #endif
 
+/* the type we use for storing a single boolean bit */
+#ifdef _MSC_VER
+typedef bool bit;
+#define BIT(x) bool x
+#else
+typedef unsigned int bit;
+#define BIT(x) bit x:1
+#endif
 
 /*
  * Redefine TRUE and FALSE too, to catch current use. With this
index 55dc30ad74f5e097aac8cf50a2e01cd97e8c8794..754c761fb33d7ec4b9a08e8bdc32cfb0e29ee002 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com>
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifndef CURL_DISABLE_CRYPTO_AUTH
+#include <curl/curl.h>
 #include "curl_hmac.h"
 
 extern const struct HMAC_params Curl_HMAC_SHA256[1];
@@ -32,7 +35,7 @@ extern const struct HMAC_params Curl_HMAC_SHA256[1];
 /* SHA256_DIGEST_LENGTH is an enum value in wolfSSL. Need to import it from
  * sha.h*/
 #include <wolfssl/options.h>
-#include <openssl/sha.h>
+#include <wolfssl/openssl/sha.h>
 #else
 #define SHA256_DIGEST_LENGTH 32
 #endif
index 339bf549fbbd106d3ccf845e181ba18b99bcea71..33108c48e97b31aa69c9ebda7e1fa403e0a27672 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 881384d4e47b5a0081c8ebd844c11733c6919c51..ad111309c5300620b8e41b0116015d09de353db0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 414614401d6e775b9dcfb972d7614a2b544827b1..eb8e136087602670d6ff7d3ff77737930e12833a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index e10b7a1b0ee2a942947b2dbca787c1ac4bdd382c..63392f671fbddb71191c1321efad9776ae2342f2 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 9f21f60d5f7c3d2b82763a835575e040ca2ad614..1796afa00a70d3afc60b356bbe9f546e80df7ab3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 5d53b8f1ff1c2fea9f4d7db514f8f6d77b6f5c32..6f7678f5ca03f3cb4b8301ae6be390fe15335991 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -96,13 +98,13 @@ const struct Curl_handler Curl_handler_dict = {
   PROTOPT_NONE | PROTOPT_NOURLQUERY     /* flags */
 };
 
-static char *unescape_word(struct Curl_easy *data, const char *inputbuff)
+static char *unescape_word(const char *inputbuff)
 {
   char *newp = NULL;
   char *dictp;
   size_t len;
 
-  CURLcode result = Curl_urldecode(data, inputbuff, 0, &newp, &len,
+  CURLcode result = Curl_urldecode(inputbuff, 0, &newp, &len,
                                    REJECT_NADA);
   if(!newp || result)
     return NULL;
@@ -190,10 +192,6 @@ static CURLcode dict_do(struct Curl_easy *data, bool *done)
 
   *done = TRUE; /* unconditionally */
 
-  if(conn->bits.user_passwd) {
-    /* AUTH is missing */
-  }
-
   if(strncasecompare(path, DICT_MATCH, sizeof(DICT_MATCH)-1) ||
      strncasecompare(path, DICT_MATCH2, sizeof(DICT_MATCH2)-1) ||
      strncasecompare(path, DICT_MATCH3, sizeof(DICT_MATCH3)-1)) {
@@ -226,7 +224,7 @@ static CURLcode dict_do(struct Curl_easy *data, bool *done)
       strategy = (char *)".";
     }
 
-    eword = unescape_word(data, word);
+    eword = unescape_word(word);
     if(!eword)
       return CURLE_OUT_OF_MEMORY;
 
@@ -274,7 +272,7 @@ static CURLcode dict_do(struct Curl_easy *data, bool *done)
       database = (char *)"!";
     }
 
-    eword = unescape_word(data, word);
+    eword = unescape_word(word);
     if(!eword)
       return CURLE_OUT_OF_MEMORY;
 
index 6a6c772d13ac2109aec9d4c52fbc38157a13fc44..b283a0dfc118312dd2cfa947f467db77891fe394 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifndef CURL_DISABLE_DICT
index d6a21677017c36ef82c67284b28b026f4bf7af86..3b1d5d60ef860f5ae240629e82128fd221a2f973 100644 (file)
--- a/lib/doh.c
+++ b/lib/doh.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -69,12 +71,6 @@ static const char *doh_strerror(DOHcode code)
 }
 #endif
 
-#ifdef DEBUGBUILD
-#define UNITTEST
-#else
-#define UNITTEST static
-#endif
-
 /* @unittest 1655
  */
 UNITTEST DOHcode doh_encode(const char *host,
@@ -247,12 +243,13 @@ static CURLcode dohprobe(struct Curl_easy *data,
        the gcc typecheck helpers */
     struct dynbuf *resp = &p->serverdoh;
     ERROR_CHECK_SETOPT(CURLOPT_URL, url);
+    ERROR_CHECK_SETOPT(CURLOPT_DEFAULT_PROTOCOL, "https");
     ERROR_CHECK_SETOPT(CURLOPT_WRITEFUNCTION, doh_write_cb);
     ERROR_CHECK_SETOPT(CURLOPT_WRITEDATA, resp);
     ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDS, p->dohbuffer);
     ERROR_CHECK_SETOPT(CURLOPT_POSTFIELDSIZE, (long)p->dohlen);
     ERROR_CHECK_SETOPT(CURLOPT_HTTPHEADER, headers);
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
     ERROR_CHECK_SETOPT(CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
 #endif
 #ifndef CURLDEBUG
@@ -306,14 +303,6 @@ static CURLcode dohprobe(struct Curl_easy *data,
     }
     if(data->set.ssl.certinfo)
       ERROR_CHECK_SETOPT(CURLOPT_CERTINFO, 1L);
-    if(data->set.str[STRING_SSL_RANDOM_FILE]) {
-      ERROR_CHECK_SETOPT(CURLOPT_RANDOM_FILE,
-                         data->set.str[STRING_SSL_RANDOM_FILE]);
-    }
-    if(data->set.str[STRING_SSL_EGDSOCKET]) {
-      ERROR_CHECK_SETOPT(CURLOPT_EGDSOCKET,
-                         data->set.str[STRING_SSL_EGDSOCKET]);
-    }
     if(data->set.ssl.fsslctx)
       ERROR_CHECK_SETOPT(CURLOPT_SSL_CTX_FUNCTION, data->set.ssl.fsslctx);
     if(data->set.ssl.fsslctxp)
@@ -407,7 +396,7 @@ struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
     goto error;
   dohp->pending++;
 
-  if(Curl_ipv6works(data)) {
+  if((conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data)) {
     /* create IPv6 DoH request */
     result = dohprobe(data, &dohp->probe[DOH_PROBE_SLOT_IPADDR_V6],
                       DNS_TYPE_AAAA, hostname, data->set.str[STRING_DOH],
@@ -530,7 +519,7 @@ static DOHcode store_cname(const unsigned char *doh,
 
     if(length) {
       if(Curl_dyn_len(c)) {
-        if(Curl_dyn_add(c, "."))
+        if(Curl_dyn_addn(c, STRCONST(".")))
           return DOH_OUT_OF_MEM;
       }
       if((index + length) > dohlen)
@@ -803,7 +792,7 @@ doh2ai(const struct dohentry *de, const char *hostname, int port)
 #endif
   CURLcode result = CURLE_OK;
   int i;
-  size_t hostlen = strlen(hostname) + 1; /* include zero terminator */
+  size_t hostlen = strlen(hostname) + 1; /* include null-terminator */
 
   if(!de)
     /* no input == no output! */
@@ -911,7 +900,7 @@ CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
   if(!dohp->probe[DOH_PROBE_SLOT_IPADDR_V4].easy &&
      !dohp->probe[DOH_PROBE_SLOT_IPADDR_V6].easy) {
     failf(data, "Could not DoH-resolve: %s", data->state.async.hostname);
-    return data->conn->bits.proxy?CURLE_COULDNT_RESOLVE_PROXY:
+    return CONN_IS_PROXIED(data->conn)?CURLE_COULDNT_RESOLVE_PROXY:
       CURLE_COULDNT_RESOLVE_HOST;
   }
   else if(!dohp->pending) {
index 70e96e012f7e142c4ce7f4e63f945a51dcb1694b..678e807fe4800639a97eebd8a864ae4d0a30489f 100644 (file)
--- a/lib/doh.h
+++ b/lib/doh.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "urldata.h"
 
 #ifndef CURL_DISABLE_DOH
 
-/*
- * Curl_doh() resolve a name using DoH (DNS-over-HTTPS). It resolves a name
- * and returns a 'Curl_addrinfo *' with the address information.
- */
-
-struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
-                               const char *hostname,
-                               int port,
-                               int *waitp);
-
-CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
-                              struct Curl_dns_entry **dns);
-
-int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);
-
 typedef enum {
   DOH_OK,
   DOH_DNS_BAD_LABEL,    /* 1 */
@@ -67,6 +54,38 @@ typedef enum {
   DNS_TYPE_DNAME = 39           /* RFC6672 */
 } DNStype;
 
+/* one of these for each DoH request */
+struct dnsprobe {
+  CURL *easy;
+  DNStype dnstype;
+  unsigned char dohbuffer[512];
+  size_t dohlen;
+  struct dynbuf serverdoh;
+};
+
+struct dohdata {
+  struct curl_slist *headers;
+  struct dnsprobe probe[DOH_PROBE_SLOTS];
+  unsigned int pending; /* still outstanding requests */
+  int port;
+  const char *host;
+};
+
+/*
+ * Curl_doh() resolve a name using DoH (DNS-over-HTTPS). It resolves a name
+ * and returns a 'Curl_addrinfo *' with the address information.
+ */
+
+struct Curl_addrinfo *Curl_doh(struct Curl_easy *data,
+                               const char *hostname,
+                               int port,
+                               int *waitp);
+
+CURLcode Curl_doh_is_resolved(struct Curl_easy *data,
+                              struct Curl_dns_entry **dns);
+
+int Curl_doh_getsock(struct connectdata *conn, curl_socket_t *socks);
+
 #define DOH_MAX_ADDR 24
 #define DOH_MAX_CNAME 4
 
diff --git a/lib/dotdot.c b/lib/dotdot.c
deleted file mode 100644 (file)
index 3a1435f..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#include <curl/curl.h>
-
-#include "dotdot.h"
-#include "curl_memory.h"
-
-/* The last #include file should be: */
-#include "memdebug.h"
-
-/*
- * "Remove Dot Segments"
- * https://tools.ietf.org/html/rfc3986#section-5.2.4
- */
-
-/*
- * Curl_dedotdotify()
- * @unittest: 1395
- *
- * This function gets a null-terminated path with dot and dotdot sequences
- * passed in and strips them off according to the rules in RFC 3986 section
- * 5.2.4.
- *
- * The function handles a query part ('?' + stuff) appended but it expects
- * that fragments ('#' + stuff) have already been cut off.
- *
- * RETURNS
- *
- * an allocated dedotdotified output string
- */
-char *Curl_dedotdotify(const char *input)
-{
-  size_t inlen = strlen(input);
-  char *clone;
-  size_t clen = inlen; /* the length of the cloned input */
-  char *out = malloc(inlen + 1);
-  char *outptr;
-  char *orgclone;
-  char *queryp;
-  if(!out)
-    return NULL; /* out of memory */
-
-  *out = 0; /* null-terminates, for inputs like "./" */
-
-  /* get a cloned copy of the input */
-  clone = strdup(input);
-  if(!clone) {
-    free(out);
-    return NULL;
-  }
-  orgclone = clone;
-  outptr = out;
-
-  if(!*clone) {
-    /* zero length string, return that */
-    free(out);
-    return clone;
-  }
-
-  /*
-   * To handle query-parts properly, we must find it and remove it during the
-   * dotdot-operation and then append it again at the end to the output
-   * string.
-   */
-  queryp = strchr(clone, '?');
-  if(queryp)
-    *queryp = 0;
-
-  do {
-
-    /*  A.  If the input buffer begins with a prefix of "../" or "./", then
-        remove that prefix from the input buffer; otherwise, */
-
-    if(!strncmp("./", clone, 2)) {
-      clone += 2;
-      clen -= 2;
-    }
-    else if(!strncmp("../", clone, 3)) {
-      clone += 3;
-      clen -= 3;
-    }
-
-    /*  B.  if the input buffer begins with a prefix of "/./" or "/.", where
-        "."  is a complete path segment, then replace that prefix with "/" in
-        the input buffer; otherwise, */
-    else if(!strncmp("/./", clone, 3)) {
-      clone += 2;
-      clen -= 2;
-    }
-    else if(!strcmp("/.", clone)) {
-      clone[1]='/';
-      clone++;
-      clen -= 1;
-    }
-
-    /*  C.  if the input buffer begins with a prefix of "/../" or "/..", where
-        ".." is a complete path segment, then replace that prefix with "/" in
-        the input buffer and remove the last segment and its preceding "/" (if
-        any) from the output buffer; otherwise, */
-
-    else if(!strncmp("/../", clone, 4)) {
-      clone += 3;
-      clen -= 3;
-      /* remove the last segment from the output buffer */
-      while(outptr > out) {
-        outptr--;
-        if(*outptr == '/')
-          break;
-      }
-      *outptr = 0; /* null-terminate where it stops */
-    }
-    else if(!strcmp("/..", clone)) {
-      clone[2]='/';
-      clone += 2;
-      clen -= 2;
-      /* remove the last segment from the output buffer */
-      while(outptr > out) {
-        outptr--;
-        if(*outptr == '/')
-          break;
-      }
-      *outptr = 0; /* null-terminate where it stops */
-    }
-
-    /*  D.  if the input buffer consists only of "." or "..", then remove
-        that from the input buffer; otherwise, */
-
-    else if(!strcmp(".", clone) || !strcmp("..", clone)) {
-      *clone = 0;
-      *out = 0;
-    }
-
-    else {
-      /*  E.  move the first path segment in the input buffer to the end of
-          the output buffer, including the initial "/" character (if any) and
-          any subsequent characters up to, but not including, the next "/"
-          character or the end of the input buffer. */
-
-      do {
-        *outptr++ = *clone++;
-        clen--;
-      } while(*clone && (*clone != '/'));
-      *outptr = 0;
-    }
-
-  } while(*clone);
-
-  if(queryp) {
-    size_t qlen;
-    /* There was a query part, append that to the output. The 'clone' string
-       may now have been altered so we copy from the original input string
-       from the correct index. */
-    size_t oindex = queryp - orgclone;
-    qlen = strlen(&input[oindex]);
-    memcpy(outptr, &input[oindex], qlen + 1); /* include the end zero byte */
-  }
-
-  free(orgclone);
-  return out;
-}
diff --git a/lib/dotdot.h b/lib/dotdot.h
deleted file mode 100644 (file)
index ac1ea36..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef HEADER_CURL_DOTDOT_H
-#define HEADER_CURL_DOTDOT_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-char *Curl_dedotdotify(const char *input);
-#endif /* HEADER_CURL_DOTDOT_H */
index ada7e0ccf5ab7d16abdcadeaae1cc1c4daa241af..0b1cf9afd85657be71256333d881f8e688ce1ea4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -126,7 +128,6 @@ void Curl_dyn_reset(struct dynbuf *s)
   s->leng = 0;
 }
 
-#ifdef USE_NGTCP2
 /*
  * Specify the size of the tail to keep (number of bytes from the end of the
  * buffer). The rest will be dropped.
@@ -151,7 +152,6 @@ CURLcode Curl_dyn_tail(struct dynbuf *s, size_t trail)
   return CURLE_OK;
 
 }
-#endif
 
 /*
  * Appends a buffer with length.
@@ -253,3 +253,18 @@ size_t Curl_dyn_len(const struct dynbuf *s)
   DEBUGASSERT(!s->leng || s->bufr);
   return s->leng;
 }
+
+/*
+ * Set a new (smaller) length.
+ */
+CURLcode Curl_dyn_setlen(struct dynbuf *s, size_t set)
+{
+  DEBUGASSERT(s);
+  DEBUGASSERT(s->init == DYNINIT);
+  DEBUGASSERT(!s->leng || s->bufr);
+  if(set > s->leng)
+    return CURLE_BAD_FUNCTION_ARGUMENT;
+  s->leng = set;
+  s->bufr[s->leng] = 0;
+  return CURLE_OK;
+}
index 252411f8421a8c17fd064e22eaa2719ee924f084..04a728c7794faff1fc6b3a1033f59d88200b457d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020, 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
+#include <curl/curl.h>
+
 #ifndef BUILDING_LIBCURL
 /* this renames the functions so that the tool code can use the same code
    without getting symbol collisions */
 #define Curl_dyn_len(a) curlx_dyn_len(a)
 #define Curl_dyn_reset(a) curlx_dyn_reset(a)
 #define Curl_dyn_tail(a,b) curlx_dyn_tail(a,b)
+#define Curl_dyn_setlen(a,b) curlx_dyn_setlen(a,b)
 #define curlx_dynbuf dynbuf /* for the struct name */
 #endif
 
 struct dynbuf {
   char *bufr;    /* point to a null-terminated allocated buffer */
-  size_t leng;   /* number of bytes *EXCLUDING* the zero terminator */
+  size_t leng;   /* number of bytes *EXCLUDING* the null-terminator */
   size_t allc;   /* size of the current allocation */
   size_t toobig; /* size limit for the buffer */
 #ifdef DEBUGBUILD
@@ -61,6 +66,7 @@ CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap)
   WARN_UNUSED_RESULT;
 void Curl_dyn_reset(struct dynbuf *s);
 CURLcode Curl_dyn_tail(struct dynbuf *s, size_t trail);
+CURLcode Curl_dyn_setlen(struct dynbuf *s, size_t set);
 char *Curl_dyn_ptr(const struct dynbuf *s);
 unsigned char *Curl_dyn_uptr(const struct dynbuf *s);
 size_t Curl_dyn_len(const struct dynbuf *s);
index 20293a710b98b9805f146b93c317f6657d18435a..b8ac1ef8a81b0e9efd08479cf75cee0698a8d703 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -68,7 +70,6 @@
 #include "slist.h"
 #include "mime.h"
 #include "amigaos.h"
-#include "non-ascii.h"
 #include "warnless.h"
 #include "multiif.h"
 #include "sigpipe.h"
@@ -81,6 +82,8 @@
 #include "altsvc.h"
 #include "hsts.h"
 
+#include "easy_lock.h"
+
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
 static unsigned int  initialized;
 static long          init_flags;
 
+#ifdef GLOBAL_INIT_IS_THREADSAFE
+
+static curl_simple_lock s_lock = CURL_SIMPLE_LOCK_INIT;
+#define global_init_lock() curl_simple_lock_lock(&s_lock)
+#define global_init_unlock() curl_simple_lock_unlock(&s_lock)
+
+#else
+
+#define global_init_lock()
+#define global_init_unlock()
+
+#endif
+
 /*
  * strdup (and other memory functions) is redefined in complicated
  * ways, but at this point it must be defined as the system-supplied strdup
@@ -162,18 +178,12 @@ static CURLcode global_init(long flags, bool memoryfuncs)
 #endif
 
 #ifdef __AMIGA__
-  if(!Curl_amiga_init()) {
+  if(Curl_amiga_init()) {
     DEBUGF(fprintf(stderr, "Error: Curl_amiga_init failed\n"));
     goto fail;
   }
 #endif
 
-#ifdef NETWARE
-  if(netware_init()) {
-    DEBUGF(fprintf(stderr, "Warning: LONG namespace not available\n"));
-  }
-#endif
-
   if(Curl_resolver_global_init()) {
     DEBUGF(fprintf(stderr, "Error: resolver_global_init failed\n"));
     goto fail;
@@ -214,7 +224,14 @@ static CURLcode global_init(long flags, bool memoryfuncs)
  */
 CURLcode curl_global_init(long flags)
 {
-  return global_init(flags, TRUE);
+  CURLcode result;
+  global_init_lock();
+
+  result = global_init(flags, TRUE);
+
+  global_init_unlock();
+
+  return result;
 }
 
 /*
@@ -225,15 +242,20 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
                               curl_free_callback f, curl_realloc_callback r,
                               curl_strdup_callback s, curl_calloc_callback c)
 {
+  CURLcode result;
+
   /* Invalid input, return immediately */
   if(!m || !f || !r || !s || !c)
     return CURLE_FAILED_INIT;
 
+  global_init_lock();
+
   if(initialized) {
     /* Already initialized, don't do it again, but bump the variable anyway to
        work like curl_global_init() and require the same amount of cleanup
        calls. */
     initialized++;
+    global_init_unlock();
     return CURLE_OK;
   }
 
@@ -246,7 +268,11 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
   Curl_ccalloc = c;
 
   /* Call the actual init function, but without setting */
-  return global_init(flags, FALSE);
+  result = global_init(flags, FALSE);
+
+  global_init_unlock();
+
+  return result;
 }
 
 /**
@@ -255,11 +281,17 @@ CURLcode curl_global_init_mem(long flags, curl_malloc_callback m,
  */
 void curl_global_cleanup(void)
 {
-  if(!initialized)
+  global_init_lock();
+
+  if(!initialized) {
+    global_init_unlock();
     return;
+  }
 
-  if(--initialized)
+  if(--initialized) {
+    global_init_unlock();
     return;
+  }
 
   Curl_ssl_cleanup();
   Curl_resolver_global_cleanup();
@@ -280,6 +312,25 @@ void curl_global_cleanup(void)
 #endif
 
   init_flags  = 0;
+
+  global_init_unlock();
+}
+
+/*
+ * curl_global_sslset() globally initializes the SSL backend to use.
+ */
+CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
+                              const curl_ssl_backend ***avail)
+{
+  CURLsslset rc;
+
+  global_init_lock();
+
+  rc = Curl_init_sslset_nolock(id, name, avail);
+
+  global_init_unlock();
+
+  return rc;
 }
 
 /*
@@ -292,14 +343,18 @@ struct Curl_easy *curl_easy_init(void)
   struct Curl_easy *data;
 
   /* Make sure we inited the global SSL stuff */
+  global_init_lock();
+
   if(!initialized) {
-    result = curl_global_init(CURL_GLOBAL_DEFAULT);
+    result = global_init(CURL_GLOBAL_DEFAULT, TRUE);
     if(result) {
       /* something in the global init failed, return nothing */
       DEBUGF(fprintf(stderr, "Error: curl_global_init failed\n"));
+      global_init_unlock();
       return NULL;
     }
   }
+  global_init_unlock();
 
   /* We use curl_open() with undefined URL so far */
   result = Curl_open(&data);
@@ -514,19 +569,23 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
 
     /* wait for activity or timeout */
     pollrc = Curl_poll(fds, numfds, ev->ms);
+    if(pollrc < 0)
+      return CURLE_UNRECOVERABLE_POLL;
 
     after = Curl_now();
 
     ev->msbump = FALSE; /* reset here */
 
-    if(0 == pollrc) {
+    if(!pollrc) {
       /* timeout! */
       ev->ms = 0;
       /* fprintf(stderr, "call curl_multi_socket_action(TIMEOUT)\n"); */
       mcode = curl_multi_socket_action(multi, CURL_SOCKET_TIMEOUT, 0,
                                        &ev->running_handles);
     }
-    else if(pollrc > 0) {
+    else {
+      /* here pollrc is > 0 */
+
       /* loop over the monitored sockets to see which ones had activity */
       for(i = 0; i< numfds; i++) {
         if(fds[i].revents) {
@@ -552,8 +611,6 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
         }
       }
     }
-    else
-      return CURLE_RECV_ERROR;
 
     if(mcode)
       return CURLE_URL_MALFORMAT;
@@ -669,7 +726,7 @@ static CURLcode easy_perform(struct Curl_easy *data, bool events)
   else {
     /* this multi handle will only ever have a single easy handled attached
        to it, so make it use minimal hashes */
-    multi = Curl_multi_handle(1, 3);
+    multi = Curl_multi_handle(1, 3, 7);
     if(!multi)
       return CURLE_OUT_OF_MEMORY;
     data->multi_easy = multi;
@@ -845,6 +902,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
   outcurl->progress.flags    = data->progress.flags;
   outcurl->progress.callback = data->progress.callback;
 
+#ifndef CURL_DISABLE_COOKIES
   if(data->cookies) {
     /* If cookies are enabled in the parent handle, we enable them
        in the clone as well! */
@@ -863,6 +921,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
     if(!outcurl->state.cookielist)
       goto fail;
   }
+#endif
 
   if(data->state.url) {
     outcurl->state.url = strdup(data->state.url);
@@ -885,7 +944,7 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
       goto fail;
   }
 
-#ifdef USE_ALTSVC
+#ifndef CURL_DISABLE_ALTSVC
   if(data->asi) {
     outcurl->asi = Curl_altsvc_init();
     if(!outcurl->asi)
@@ -933,8 +992,6 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
   }
 #endif /* USE_ARES */
 
-  Curl_convert_setup(outcurl);
-
   Curl_initinfo(outcurl);
 
   outcurl->magic = CURLEASY_MAGIC_NUMBER;
@@ -946,8 +1003,10 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)
   fail:
 
   if(outcurl) {
+#ifndef CURL_DISABLE_COOKIES
     curl_slist_free_all(outcurl->state.cookielist);
     outcurl->state.cookielist = NULL;
+#endif
     Curl_safefree(outcurl->state.buffer);
     Curl_dyn_free(&outcurl->state.headerb);
     Curl_safefree(outcurl->state.url);
@@ -1074,6 +1133,16 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
     }
   }
 
+#ifdef USE_HYPER
+  if(!(newstate & KEEP_SEND_PAUSE)) {
+    /* need to wake the send body waker */
+    if(data->hyp.send_body_waker) {
+      hyper_waker_wake(data->hyp.send_body_waker);
+      data->hyp.send_body_waker = NULL;
+    }
+  }
+#endif
+
   /* if there's no error and we're not pausing both directions, we want
      to have this handle checked soon */
   if((newstate & (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) !=
@@ -1102,8 +1171,7 @@ CURLcode curl_easy_pause(struct Curl_easy *data, int action)
 }
 
 
-static CURLcode easy_connection(struct Curl_easy *data,
-                                curl_socket_t *sfd,
+static CURLcode easy_connection(struct Curl_easy *data, curl_socket_t *sfd,
                                 struct connectdata **connp)
 {
   if(!data)
@@ -1111,7 +1179,7 @@ static CURLcode easy_connection(struct Curl_easy *data,
 
   /* only allow these to be called on handles with CURLOPT_CONNECT_ONLY */
   if(!data->set.connect_only) {
-    failf(data, "CONNECT_ONLY is required!");
+    failf(data, "CONNECT_ONLY is required");
     return CURLE_UNSUPPORTED_PROTOCOL;
   }
 
@@ -1148,7 +1216,7 @@ CURLcode curl_easy_recv(struct Curl_easy *data, void *buffer, size_t buflen,
   if(!data->conn)
     /* on first invoke, the transfer has been detached from the connection and
        needs to be reattached */
-    Curl_attach_connnection(data, c);
+    Curl_attach_connection(data, c);
 
   *n = 0;
   result = Curl_read(data, sfd, buffer, buflen, &n1);
@@ -1162,11 +1230,12 @@ CURLcode curl_easy_recv(struct Curl_easy *data, void *buffer, size_t buflen,
 }
 
 /*
- * Sends data over the connected socket. Use after successful
- * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ * Sends data over the connected socket.
+ *
+ * This is the private internal version of curl_easy_send()
  */
-CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
-                        size_t buflen, size_t *n)
+CURLcode Curl_senddata(struct Curl_easy *data, const void *buffer,
+                       size_t buflen, ssize_t *n)
 {
   curl_socket_t sfd;
   CURLcode result;
@@ -1174,9 +1243,6 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
   struct connectdata *c = NULL;
   SIGPIPE_VARIABLE(pipe_st);
 
-  if(Curl_is_in_callback(data))
-    return CURLE_RECURSIVE_API_CALL;
-
   result = easy_connection(data, &sfd, &c);
   if(result)
     return result;
@@ -1184,7 +1250,7 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
   if(!data->conn)
     /* on first invoke, the transfer has been detached from the connection and
        needs to be reattached */
-    Curl_attach_connnection(data, c);
+    Curl_attach_connection(data, c);
 
   *n = 0;
   sigpipe_ignore(data, &pipe_st);
@@ -1198,8 +1264,25 @@ CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
   if(!result && !n1)
     return CURLE_AGAIN;
 
-  *n = (size_t)n1;
+  *n = n1;
+
+  return result;
+}
+
+/*
+ * Sends data over the connected socket. Use after successful
+ * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
+ */
+CURLcode curl_easy_send(struct Curl_easy *data, const void *buffer,
+                        size_t buflen, size_t *n)
+{
+  ssize_t written = 0;
+  CURLcode result;
+  if(Curl_is_in_callback(data))
+    return CURLE_RECURSIVE_API_CALL;
 
+  result = Curl_senddata(data, buffer, buflen, &written);
+  *n = (size_t)written;
   return result;
 }
 
@@ -1218,12 +1301,12 @@ static int conn_upkeep(struct Curl_easy *data,
   if(conn->handler->connection_check) {
     /* briefly attach the connection to this transfer for the purpose of
        checking it */
-    Curl_attach_connnection(data, conn);
+    Curl_attach_connection(data, conn);
 
     /* Do a protocol-specific keepalive check on the connection. */
     conn->handler->connection_check(data, conn, CONNCHECK_KEEPALIVE);
     /* detach the connection again */
-    Curl_detach_connnection(data);
+    Curl_detach_connection(data);
   }
 
   return 0; /* continue iteration */
diff --git a/lib/easy_lock.h b/lib/easy_lock.h
new file mode 100644 (file)
index 0000000..d96e56b
--- /dev/null
@@ -0,0 +1,105 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+
+#define GLOBAL_INIT_IS_THREADSAFE
+
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600
+
+#ifdef __MINGW32__
+#ifndef __MINGW64_VERSION_MAJOR
+#if (__MINGW32_MAJOR_VERSION < 5) || \
+    (__MINGW32_MAJOR_VERSION == 5 && __MINGW32_MINOR_VERSION == 0)
+/* mingw >= 5.0.1 defines SRWLOCK, and slightly different from MS define */
+typedef PVOID SRWLOCK, *PSRWLOCK;
+#endif
+#endif
+#ifndef SRWLOCK_INIT
+#define SRWLOCK_INIT NULL
+#endif
+#endif /* __MINGW32__ */
+
+#define curl_simple_lock SRWLOCK
+#define CURL_SIMPLE_LOCK_INIT SRWLOCK_INIT
+
+#define curl_simple_lock_lock(m) AcquireSRWLockExclusive(m)
+#define curl_simple_lock_unlock(m) ReleaseSRWLockExclusive(m)
+
+#elif defined(HAVE_ATOMIC) && defined(HAVE_STDATOMIC_H)
+#include <stdatomic.h>
+#if defined(HAVE_SCHED_YIELD)
+#include <sched.h>
+#endif
+
+#define curl_simple_lock atomic_int
+#define CURL_SIMPLE_LOCK_INIT 0
+
+/* a clang-thing */
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
+#ifndef __INTEL_COMPILER
+/* The Intel compiler tries to look like GCC *and* clang *and* lies in its
+   __has_builtin() function, so override it. */
+
+/* if GCC on i386/x86_64 or if the built-in is present */
+#if ( (defined(__GNUC__) && !defined(__clang__)) &&     \
+      (defined(__i386__) || defined(__x86_64__))) ||    \
+  __has_builtin(__builtin_ia32_pause)
+#define HAVE_BUILTIN_IA32_PAUSE
+#endif
+
+#endif
+
+static inline void curl_simple_lock_lock(curl_simple_lock *lock)
+{
+  for(;;) {
+    if(!atomic_exchange_explicit(lock, true, memory_order_acquire))
+      break;
+    /* Reduce cache coherency traffic */
+    while(atomic_load_explicit(lock, memory_order_relaxed)) {
+      /* Reduce load (not mandatory) */
+#ifdef HAVE_BUILTIN_IA32_PAUSE
+      __builtin_ia32_pause();
+#elif defined(__aarch64__)
+      __asm__ volatile("yield" ::: "memory");
+#elif defined(HAVE_SCHED_YIELD)
+      sched_yield();
+#endif
+    }
+  }
+}
+
+static inline void curl_simple_lock_unlock(curl_simple_lock *lock)
+{
+  atomic_store_explicit(lock, false, memory_order_release);
+}
+
+#else
+
+#undef  GLOBAL_INIT_IS_THREADSAFE
+
+#endif
index 7b2213fb24183d4d8d3642a6a3589e2d3981e64d..a639bb37588786322149a2330a531429dbc43237 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             ___|___/|_| ______|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.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
@@ -18,6 +18,8 @@
  * 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"
index 3364418285554a35e19be5b790959675ffa23b8e..205382cd078545e5ca85a5a93306007c11d2638b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
  * Prototypes for library-wide functions provided by easy.c
  */
+CURLcode Curl_senddata(struct Curl_easy *data, const void *buffer,
+                       size_t buflen, ssize_t *n);
+
 #ifdef CURLDEBUG
 CURL_EXTERN CURLcode curl_easy_perform_ev(struct Curl_easy *easy);
 #endif
index 04871ad1e3b7891ae70847102f046b46a64adefa..e59b63af7acd17a2edbbcc46279587dd95227dad 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             ___|___/|_| ______|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* This source code is generated by optiontable.pl - DO NOT EDIT BY HAND */
@@ -105,7 +107,8 @@ struct curl_easyoption Curl_easyopts[] = {
   {"FTP_CREATE_MISSING_DIRS", CURLOPT_FTP_CREATE_MISSING_DIRS,
    CURLOT_LONG, 0},
   {"FTP_FILEMETHOD", CURLOPT_FTP_FILEMETHOD, CURLOT_VALUES, 0},
-  {"FTP_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOT_LONG, 0},
+  {"FTP_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT,
+   CURLOT_LONG, CURLOT_FLAG_ALIAS},
   {"FTP_SKIP_PASV_IP", CURLOPT_FTP_SKIP_PASV_IP, CURLOT_LONG, 0},
   {"FTP_SSL", CURLOPT_USE_SSL, CURLOT_VALUES, CURLOT_FLAG_ALIAS},
   {"FTP_SSL_CCC", CURLOPT_FTP_SSL_CCC, CURLOT_LONG, 0},
@@ -201,6 +204,7 @@ struct curl_easyoption Curl_easyopts[] = {
   {"PROGRESSDATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
   {"PROGRESSFUNCTION", CURLOPT_PROGRESSFUNCTION, CURLOT_FUNCTION, 0},
   {"PROTOCOLS", CURLOPT_PROTOCOLS, CURLOT_LONG, 0},
+  {"PROTOCOLS_STR", CURLOPT_PROTOCOLS_STR, CURLOT_STRING, 0},
   {"PROXY", CURLOPT_PROXY, CURLOT_STRING, 0},
   {"PROXYAUTH", CURLOPT_PROXYAUTH, CURLOT_VALUES, 0},
   {"PROXYHEADER", CURLOPT_PROXYHEADER, CURLOT_SLIST, 0},
@@ -243,6 +247,7 @@ struct curl_easyoption Curl_easyopts[] = {
   {"READDATA", CURLOPT_READDATA, CURLOT_CBPTR, 0},
   {"READFUNCTION", CURLOPT_READFUNCTION, CURLOT_FUNCTION, 0},
   {"REDIR_PROTOCOLS", CURLOPT_REDIR_PROTOCOLS, CURLOT_LONG, 0},
+  {"REDIR_PROTOCOLS_STR", CURLOPT_REDIR_PROTOCOLS_STR, CURLOT_STRING, 0},
   {"REFERER", CURLOPT_REFERER, CURLOT_STRING, 0},
   {"REQUEST_TARGET", CURLOPT_REQUEST_TARGET, CURLOT_STRING, 0},
   {"RESOLVE", CURLOPT_RESOLVE, CURLOT_SLIST, 0},
@@ -262,8 +267,8 @@ struct curl_easyoption Curl_easyopts[] = {
   {"SASL_IR", CURLOPT_SASL_IR, CURLOT_LONG, 0},
   {"SEEKDATA", CURLOPT_SEEKDATA, CURLOT_CBPTR, 0},
   {"SEEKFUNCTION", CURLOPT_SEEKFUNCTION, CURLOT_FUNCTION, 0},
-  {"SERVER_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT,
-   CURLOT_LONG, CURLOT_FLAG_ALIAS},
+  {"SERVER_RESPONSE_TIMEOUT", CURLOPT_SERVER_RESPONSE_TIMEOUT,
+   CURLOT_LONG, 0},
   {"SERVICE_NAME", CURLOPT_SERVICE_NAME, CURLOT_STRING, 0},
   {"SHARE", CURLOPT_SHARE, CURLOT_OBJECT, 0},
   {"SOCKOPTDATA", CURLOPT_SOCKOPTDATA, CURLOT_CBPTR, 0},
@@ -273,6 +278,8 @@ struct curl_easyoption Curl_easyopts[] = {
   {"SOCKS5_GSSAPI_SERVICE", CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOT_STRING, 0},
   {"SSH_AUTH_TYPES", CURLOPT_SSH_AUTH_TYPES, CURLOT_VALUES, 0},
   {"SSH_COMPRESSION", CURLOPT_SSH_COMPRESSION, CURLOT_LONG, 0},
+  {"SSH_HOSTKEYDATA", CURLOPT_SSH_HOSTKEYDATA, CURLOT_CBPTR, 0},
+  {"SSH_HOSTKEYFUNCTION", CURLOPT_SSH_HOSTKEYFUNCTION, CURLOT_FUNCTION, 0},
   {"SSH_HOST_PUBLIC_KEY_MD5", CURLOPT_SSH_HOST_PUBLIC_KEY_MD5,
    CURLOT_STRING, 0},
   {"SSH_HOST_PUBLIC_KEY_SHA256", CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256,
@@ -347,10 +354,11 @@ struct curl_easyoption Curl_easyopts[] = {
   {"WRITEDATA", CURLOPT_WRITEDATA, CURLOT_CBPTR, 0},
   {"WRITEFUNCTION", CURLOPT_WRITEFUNCTION, CURLOT_FUNCTION, 0},
   {"WRITEHEADER", CURLOPT_HEADERDATA, CURLOT_CBPTR, CURLOT_FLAG_ALIAS},
+  {"WS_OPTIONS", CURLOPT_WS_OPTIONS, CURLOT_LONG, 0},
   {"XFERINFODATA", CURLOPT_XFERINFODATA, CURLOT_CBPTR, 0},
   {"XFERINFOFUNCTION", CURLOPT_XFERINFOFUNCTION, CURLOT_FUNCTION, 0},
   {"XOAUTH2_BEARER", CURLOPT_XOAUTH2_BEARER, CURLOT_STRING, 0},
-  {NULL, CURLOPT_LASTENTRY, 0, 0} /* end of table */
+  {NULL, CURLOPT_LASTENTRY, CURLOT_LONG, 0} /* end of table */
 };
 
 #ifdef DEBUGBUILD
@@ -360,6 +368,6 @@ struct curl_easyoption Curl_easyopts[] = {
  */
 int Curl_easyopts_check(void)
 {
-  return ((CURLOPT_LASTENTRY%10000) != (315 + 1));
+  return ((CURLOPT_LASTENTRY%10000) != (320 + 1));
 }
 #endif
index 91e11908bd4825d4ee385e0f78c39af990ed5f9a..33f816d6b67577bc0a7076ff1460fbf86388348c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* should probably go into the public header */
index 683b6fc4a65e49556f0c32ebc791f6355ce33f9e..da7e5524f724991b9e8c76fb743910aca98e72ed 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Escape and unescape URL encoding in strings. The functions return a new
@@ -29,7 +31,6 @@
 
 #include "urldata.h"
 #include "warnless.h"
-#include "non-ascii.h"
 #include "escape.h"
 #include "strdup.h"
 /* The last 3 #include files should be in this order */
@@ -39,7 +40,7 @@
 
 /* Portable character check (remember EBCDIC). Do not use isalnum() because
    its behavior is altered by the current locale.
-   See https://tools.ietf.org/html/rfc3986#section-2.3
+   See https://datatracker.ietf.org/doc/html/rfc3986#section-2.3
 */
 bool Curl_isunreserved(unsigned char in)
 {
@@ -76,12 +77,15 @@ char *curl_unescape(const char *string, int length)
   return curl_easy_unescape(NULL, string, length, NULL);
 }
 
+/* Escapes for URL the given unescaped string of given length.
+ * 'data' is ignored since 7.82.0.
+ */
 char *curl_easy_escape(struct Curl_easy *data, const char *string,
                        int inlength)
 {
   size_t length;
-  CURLcode result;
   struct dynbuf d;
+  (void)data;
 
   if(inlength < 0)
     return NULL;
@@ -102,16 +106,7 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
     }
     else {
       /* encode it */
-      char encoded[4];
-      result = Curl_convert_to_network(data, (char *)&in, 1);
-      if(result) {
-        /* Curl_convert_to_network calls failf if unsuccessful */
-        Curl_dyn_free(&d);
-        return NULL;
-      }
-
-      msnprintf(encoded, sizeof(encoded), "%%%02X", in);
-      if(Curl_dyn_add(&d, encoded))
+      if(Curl_dyn_addf(&d, "%%%02X", in))
         return NULL;
     }
     string++;
@@ -126,9 +121,6 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
  * Returns a pointer to a malloced string in *ostring with length given in
  * *olen. If length == 0, the length is assumed to be strlen(string).
  *
- * 'data' can be set to NULL but then this function can't convert network
- * data to host for non-ascii.
- *
  * ctrl options:
  * - REJECT_NADA: accept everything
  * - REJECT_CTRL: rejects control characters (byte codes lower than 32) in
@@ -139,8 +131,7 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
  * invokes that used TRUE/FALSE (0 and 1).
  */
 
-CURLcode Curl_urldecode(struct Curl_easy *data,
-                        const char *string, size_t length,
+CURLcode Curl_urldecode(const char *string, size_t length,
                         char **ostring, size_t *olen,
                         enum urlreject ctrl)
 {
@@ -148,7 +139,6 @@ CURLcode Curl_urldecode(struct Curl_easy *data,
   char *ns;
   size_t strindex = 0;
   unsigned long hex;
-  CURLcode result = CURLE_OK;
 
   DEBUGASSERT(string);
   DEBUGASSERT(ctrl >= REJECT_NADA); /* crash on TRUE/FALSE */
@@ -174,15 +164,6 @@ CURLcode Curl_urldecode(struct Curl_easy *data,
 
       in = curlx_ultouc(hex); /* this long is never bigger than 255 anyway */
 
-      if(data) {
-        result = Curl_convert_from_network(data, (char *)&in, 1);
-        if(result) {
-          /* Curl_convert_from_network calls failf if unsuccessful */
-          free(ns);
-          return result;
-        }
-      }
-
       string += 2;
       alloc -= 2;
     }
@@ -213,15 +194,17 @@ CURLcode Curl_urldecode(struct Curl_easy *data,
  * pointer to a malloced string with length given in *olen.
  * If length == 0, the length is assumed to be strlen(string).
  * If olen == NULL, no output length is stored.
+ * 'data' is ignored since 7.82.0.
  */
 char *curl_easy_unescape(struct Curl_easy *data, const char *string,
                          int length, int *olen)
 {
   char *str = NULL;
+  (void)data;
   if(length >= 0) {
     size_t inputlen = length;
     size_t outputlen;
-    CURLcode res = Curl_urldecode(data, string, inputlen, &str, &outputlen,
+    CURLcode res = Curl_urldecode(string, inputlen, &str, &outputlen,
                                   REJECT_NADA);
     if(res)
       return NULL;
index 46cb59039a1e3781494adcf66f6c46d8d6dfa55f..61d4611bf72cfa1e60df4017f183fc65e1bc9714 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* Escape and unescape URL encoding in strings. The functions return a new
  * allocated string or NULL if an error occurred.  */
@@ -32,8 +34,7 @@ enum urlreject {
   REJECT_ZERO
 };
 
-CURLcode Curl_urldecode(struct Curl_easy *data,
-                        const char *string, size_t length,
+CURLcode Curl_urldecode(const char *string, size_t length,
                         char **ostring, size_t *olen,
                         enum urlreject ctrl);
 
index 0420db3454919ce18efb908206e857880d3beb53..d82d57b46327ea2995d6e5e9593a5afb09f16f41 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -69,6 +71,8 @@
 
 #if defined(WIN32) || defined(MSDOS) || defined(__EMX__)
 #define DOS_FILESYSTEM 1
+#elif defined(__amigaos4__)
+#define AMIGA_FILESYSTEM 1
 #endif
 
 #ifdef OPEN_NEEDS_ARG3
@@ -147,7 +151,7 @@ static CURLcode file_connect(struct Curl_easy *data, bool *done)
 #endif
   size_t real_path_len;
 
-  CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &real_path,
+  CURLcode result = Curl_urldecode(data->state.up.path, 0, &real_path,
                                    &real_path_len, REJECT_ZERO);
   if(result)
     return result;
@@ -194,8 +198,33 @@ static CURLcode file_connect(struct Curl_easy *data, bool *done)
     return CURLE_URL_MALFORMAT;
   }
 
+  #ifdef AMIGA_FILESYSTEM
+  /*
+   * A leading slash in an AmigaDOS path denotes the parent
+   * directory, and hence we block this as it is relative.
+   * Absolute paths start with 'volumename:', so we check for
+   * this first. Failing that, we treat the path as a real unix
+   * path, but only if the application was compiled with -lunix.
+   */
+  fd = -1;
+  file->path = real_path;
+
+  if(real_path[0] == '/') {
+    extern int __unix_path_semantics;
+    if(strchr(real_path + 1, ':')) {
+      /* Amiga absolute path */
+      fd = open_readonly(real_path + 1, O_RDONLY);
+      file->path++;
+    }
+    else if(__unix_path_semantics) {
+      /* -lunix fallback */
+      fd = open_readonly(real_path, O_RDONLY);
+    }
+  }
+  #else
   fd = open_readonly(real_path, O_RDONLY);
   file->path = real_path;
+  #endif
 #endif
   file->freepath = real_path; /* free this when done */
 
@@ -234,7 +263,7 @@ static CURLcode file_disconnect(struct Curl_easy *data,
 {
   (void)dead_connection; /* not used */
   (void)conn;
-  return file_done(data, 0, 0);
+  return file_done(data, CURLE_OK, FALSE);
 }
 
 #ifdef DOS_FILESYSTEM
index 338f92e46a7abbf4bfaf366c06077ae7c5d7b6c6..826d45380dcc5c17e9809da552e1c47475de3ae6 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 
index b7e9f0f5e8ef69f42c6d61f50846528975801305..7bbf24bdeb12c9d5f63e3b3fe539439c58f161a2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 5ae23ad4a3b51cc9e905a3601252c29e52a3bcb1..5bad718cc85f10ec509dccb116af746097044d65 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <curl/curl.h>
diff --git a/lib/firefox-db2pem.sh b/lib/firefox-db2pem.sh
deleted file mode 100644 (file)
index 629a2e8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-# ***************************************************************************
-# *                                  _   _ ____  _
-# *  Project                     ___| | | |  _ \| |
-# *                             / __| | | | |_) | |
-# *                            | (__| |_| |  _ <| |___
-# *                             \___|\___/|_| \_\_____|
-# *
-# * Copyright (C) 1998 - 2020, 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.
-# *
-# ***************************************************************************
-# This shell script creates a fresh ca-bundle.crt file for use with libcurl.
-# It extracts all ca certs it finds in the local Firefox database and converts
-# them all into PEM format.
-#
-db=`ls -1d $HOME/.mozilla/firefox/*default*`
-out=$1
-
-if test -z "$out"; then
-  out="ca-bundle.crt" # use a sensible default
-fi
-
-currentdate=`date`
-
-cat >$out <<EOF
-##
-## Bundle of CA Root Certificates
-##
-## Converted at: ${currentdate}
-## These were converted from the local Firefox directory by the db2pem script.
-##
-EOF
-
-
-certutil -L -h 'Builtin Object Token' -d $db | \
-grep ' *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$' | \
-sed -e 's/ *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$//' -e 's/\(.*\)/"\1"/' | \
-sort | \
-while read nickname; \
- do echo $nickname | sed -e "s/Builtin Object Token://g"; \
-eval certutil -d $db -L -n "$nickname" -a ; \
-done >> $out
diff --git a/lib/fopen.c b/lib/fopen.c
new file mode 100644 (file)
index 0000000..ad3691b
--- /dev/null
@@ -0,0 +1,113 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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(CURL_DISABLE_COOKIES) || !defined(CURL_DISABLE_ALTSVC) ||  \
+  !defined(CURL_DISABLE_HSTS)
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#include "urldata.h"
+#include "rand.h"
+#include "fopen.h"
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/*
+ * Curl_fopen() opens a file for writing with a temp name, to be renamed
+ * to the final name when completed. If there is an existing file using this
+ * name at the time of the open, this function will clone the mode from that
+ * file.  if 'tempname' is non-NULL, it needs a rename after the file is
+ * written.
+ */
+CURLcode Curl_fopen(struct Curl_easy *data, const char *filename,
+                    FILE **fh, char **tempname)
+{
+  CURLcode result = CURLE_WRITE_ERROR;
+  unsigned char randsuffix[9];
+  char *tempstore = NULL;
+  struct_stat sb;
+  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;
+    goto fail;
+  }
+
+  result = Curl_rand_hex(data, randsuffix, sizeof(randsuffix));
+  if(result)
+    goto fail;
+
+  tempstore = aprintf("%s.%s.tmp", filename, randsuffix);
+  if(!tempstore) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto fail;
+  }
+
+  result = CURLE_WRITE_ERROR;
+  fd = open(tempstore, O_WRONLY | O_CREAT | O_EXCL, 0600);
+  if(fd == -1)
+    goto fail;
+
+#ifdef HAVE_FCHMOD
+  {
+    struct_stat nsb;
+    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)
+        goto fail;
+    }
+  }
+#endif
+
+  *fh = fdopen(fd, FOPEN_WRITETEXT);
+  if(!*fh)
+    goto fail;
+
+  *tempname = tempstore;
+  return CURLE_OK;
+
+fail:
+  if(fd != -1) {
+    close(fd);
+    unlink(tempstore);
+  }
+
+  free(tempstore);
+
+  *tempname = NULL;
+  return result;
+}
+
+#endif /* ! disabled */
diff --git a/lib/fopen.h b/lib/fopen.h
new file mode 100644 (file)
index 0000000..289e55f
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef HEADER_CURL_FOPEN_H
+#define HEADER_CURL_FOPEN_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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
+ *
+ ***************************************************************************/
+
+CURLcode Curl_fopen(struct Curl_easy *data, const char *filename,
+                    FILE **fh, char **tempname);
+
+#endif
index ac7a0009cd7b90ba8701e2be1f9d7f3cfe3e16af..46542b4329df4459a7e94db9551e3630b9a7cc53 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -33,7 +35,6 @@
 
 #include "urldata.h" /* for struct Curl_easy */
 #include "mime.h"
-#include "non-ascii.h"
 #include "vtls/vtls.h"
 #include "strcase.h"
 #include "sendf.h"
@@ -77,10 +78,15 @@ AddHttpPost(char *name, size_t namelength,
             struct curl_httppost **last_post)
 {
   struct curl_httppost *post;
+  if(!namelength && name)
+    namelength = strlen(name);
+  if((bufferlength > LONG_MAX) || (namelength > LONG_MAX))
+    /* avoid overflow in typecasts below */
+    return NULL;
   post = calloc(1, sizeof(struct curl_httppost));
   if(post) {
     post->name = name;
-    post->namelength = (long)(name?(namelength?namelength:strlen(name)):0);
+    post->namelength = (long)namelength;
     post->contents = value;
     post->contentlen = contentslength;
     post->buffer = buffer;
@@ -245,8 +251,10 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
       }
     }
     else {
-      /* This is not array-state, get next option */
-      option = va_arg(params, CURLformoption);
+      /* This is not array-state, get next option. This gets an 'int' with
+         va_arg() because CURLformoption might be a smaller type than int and
+         might cause compiler warnings and wrong behavior. */
+      option = (CURLformoption)va_arg(params, int);
       if(CURLFORM_END == option)
         break;
     }
@@ -269,14 +277,8 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
        * Set the Name property.
        */
     case CURLFORM_PTRNAME:
-#ifdef CURL_DOES_CONVERSIONS
-      /* Treat CURLFORM_PTR like CURLFORM_COPYNAME so that libcurl will copy
-       * the data in all cases so that we'll have safe memory for the eventual
-       * conversion.
-       */
-#else
       current_form->flags |= HTTPPOST_PTRNAME; /* fall through */
-#endif
+
       /* FALLTHROUGH */
     case CURLFORM_COPYNAME:
       if(current_form->name)
@@ -901,11 +903,6 @@ CURLcode Curl_getformdata(struct Curl_easy *data,
           else
             uclen = (size_t)clen;
           result = curl_mime_data(part, post->contents, uclen);
-#ifdef CURL_DOES_CONVERSIONS
-          /* Convert textual contents now. */
-          if(!result && data && part->datasize)
-            result = Curl_convert_to_network(data, part->data, part->datasize);
-#endif
         }
       }
 
index 09c6e9c28a13cac07a79e36133baa6d4c26c7710..c6c6397cd276c47122877bff22d2f3acf9a07345 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index f6921e42620cd207420dc18c6eaeffed0f45130b..f1a25b23dcfda35e54847d95bb1b453e0984ef6e 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -18,6 +18,8 @@
  * 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"
@@ -76,7 +78,6 @@
 #include "speedcheck.h"
 #include "warnless.h"
 #include "http_proxy.h"
-#include "non-ascii.h"
 #include "socks.h"
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -515,10 +516,9 @@ static CURLcode AllowServerConnect(struct Curl_easy *data, bool *connected)
   }
   else {
     /* Add timeout to multi handle and break out of the loop */
-    if(*connected == FALSE) {
-      Curl_expire(data, data->set.accepttimeout > 0 ?
-                  data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT, 0);
-    }
+    Curl_expire(data, data->set.accepttimeout ?
+                data->set.accepttimeout: DEFAULT_ACCEPT_TIMEOUT,
+                EXPIRE_FTP_ACCEPT);
   }
 
   return result;
@@ -592,7 +592,7 @@ static CURLcode ftp_readresp(struct Curl_easy *data,
      * This response code can come at any point so having it treated
      * generically is a good idea.
      */
-    infof(data, "We got a 421 - timeout!");
+    infof(data, "We got a 421 - timeout");
     state(data, FTP_STOP);
     return CURLE_OPERATION_TIMEDOUT;
   }
@@ -784,8 +784,9 @@ static CURLcode ftp_state_user(struct Curl_easy *data,
                                   &conn->proto.ftpc.pp, "USER %s",
                                   conn->user?conn->user:"");
   if(!result) {
+    struct ftp_conn *ftpc = &conn->proto.ftpc;
+    ftpc->ftp_trying_alternative = FALSE;
     state(data, FTP_USER);
-    data->state.ftp_trying_alternative = FALSE;
   }
   return result;
 }
@@ -1030,8 +1031,11 @@ static CURLcode ftp_state_use_port(struct Curl_easy *data,
     if(*addr != '\0') {
       /* attempt to get the address of the given interface name */
       switch(Curl_if2ip(conn->ip_addr->ai_family,
+#ifdef ENABLE_IPV6
                         Curl_ipv6_scope(conn->ip_addr->ai_addr),
-                        conn->scope_id, addr, hbuf, sizeof(hbuf))) {
+                        conn->scope_id,
+#endif
+                        addr, hbuf, sizeof(hbuf))) {
         case IF2IP_NOT_FOUND:
           /* not an interface, use the given string as host name instead */
           host = addr;
@@ -1163,7 +1167,7 @@ static CURLcode ftp_state_use_port(struct Curl_easy *data,
 
   /* maybe all ports were in use already*/
   if(port > port_max) {
-    failf(data, "bind() failed, we ran out of ports!");
+    failf(data, "bind() failed, we ran out of ports");
     Curl_closesocket(data, conn, portsock);
     return CURLE_FTP_PORT_FAILED;
   }
@@ -1460,7 +1464,7 @@ static CURLcode ftp_state_list(struct Curl_easy *data)
     /* url-decode before evaluation: e.g. paths starting/ending with %2f */
     const char *slashPos = NULL;
     char *rawPath = NULL;
-    result = Curl_urldecode(data, ftp->path, 0, &rawPath, NULL, REJECT_CTRL);
+    result = Curl_urldecode(ftp->path, 0, &rawPath, NULL, REJECT_CTRL);
     if(result)
       return result;
 
@@ -2125,9 +2129,11 @@ static CURLcode ftp_state_mdtm_resp(struct Curl_easy *data,
   default:
     infof(data, "unsupported MDTM reply format");
     break;
-  case 550: /* "No such file or directory" */
-    failf(data, "Given file does not exist");
-    result = CURLE_REMOTE_FILE_NOT_FOUND;
+  case 550: /* 550 is used for several different problems, e.g.
+               "No such file or directory" or "Permission denied".
+               It does not mean that the file does not exist at all. */
+    infof(data, "MDTM failed: file does not exist or permission problem,"
+          " continuing");
     break;
   }
 
@@ -2620,13 +2626,13 @@ static CURLcode ftp_state_user_resp(struct Curl_easy *data,
     (the server denies to log the specified user) */
 
     if(data->set.str[STRING_FTP_ALTERNATIVE_TO_USER] &&
-        !data->state.ftp_trying_alternative) {
+       !ftpc->ftp_trying_alternative) {
       /* Ok, USER failed.  Let's try the supplied command. */
       result =
         Curl_pp_sendf(data, &ftpc->pp, "%s",
                       data->set.str[STRING_FTP_ALTERNATIVE_TO_USER]);
       if(!result) {
-        data->state.ftp_trying_alternative = TRUE;
+        ftpc->ftp_trying_alternative = TRUE;
         state(data, FTP_USER);
       }
     }
@@ -2699,10 +2705,11 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
            set a valid level */
         Curl_sec_request_prot(conn, data->set.str[STRING_KRB_LEVEL]);
 
-        if(Curl_sec_login(data, conn))
-          infof(data, "Logging in with password in cleartext!");
-        else
-          infof(data, "Authentication successful");
+        if(Curl_sec_login(data, conn)) {
+          failf(data, "secure login failed");
+          return CURLE_WEIRD_SERVER_REPLY;
+        }
+        infof(data, "Authentication successful");
       }
 #endif
 
@@ -3247,7 +3254,7 @@ static CURLcode ftp_done(struct Curl_easy *data, CURLcode status,
 
   if(!result)
     /* get the url-decoded "raw" path */
-    result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen,
+    result = Curl_urldecode(ftp->path, 0, &rawPath, &pathLen,
                             REJECT_CTRL);
   if(result) {
     /* We can limp along anyway (and should try to since we may already be in
@@ -3379,7 +3386,7 @@ static CURLcode ftp_done(struct Curl_easy *data, CURLcode status,
        (ftp->transfer == PPTRANSFER_BODY)) {
       failf(data, "Uploaded unaligned file size (%" CURL_FORMAT_CURL_OFF_T
             " out of %" CURL_FORMAT_CURL_OFF_T " bytes)",
-            data->req.bytecount, data->state.infilesize);
+            data->req.writebytecount, data->state.infilesize);
       result = CURLE_PARTIAL_FILE;
     }
   }
@@ -3402,7 +3409,7 @@ static CURLcode ftp_done(struct Curl_easy *data, CURLcode status,
     else if(!ftpc->dont_check &&
             !data->req.bytecount &&
             (data->req.size>0)) {
-      failf(data, "No data was received!");
+      failf(data, "No data was received");
       result = CURLE_FTP_COULDNT_RETR_FILE;
     }
   }
@@ -3559,8 +3566,10 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
   bool connected = FALSE;
   bool complete = FALSE;
 
-  /* the ftp struct is inited in ftp_connect() */
-  struct FTP *ftp = data->req.p.ftp;
+  /* the ftp struct is inited in ftp_connect(). If we are connecting to an HTTP
+   * proxy then the state will not be valid until after that connection is
+   * complete */
+  struct FTP *ftp = NULL;
 
   /* if the second connection isn't done yet, wait for it */
   if(!conn->bits.tcpconnect[SECONDARYSOCKET]) {
@@ -3601,6 +3610,9 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
     return result;
 #endif
 
+  /* Curl_proxy_connect might have moved the protocol state */
+  ftp = data->req.p.ftp;
+
   if(ftpc->state) {
     /* already in a state so skip the initial commands.
        They are only done to kickstart the do_more state */
@@ -4131,9 +4143,11 @@ CURLcode ftp_parse_url_path(struct Curl_easy *data)
   ftpc->cwdfail = FALSE;
 
   /* url-decode ftp path before further evaluation */
-  result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, REJECT_CTRL);
-  if(result)
+  result = Curl_urldecode(ftp->path, 0, &rawPath, &pathLen, REJECT_CTRL);
+  if(result) {
+    failf(data, "path contains control characters");
     return result;
+  }
 
   switch(data->set.ftp_filemethod) {
     case FTPFILE_NOCWD: /* fastest, but less standard-compliant */
@@ -4231,7 +4245,7 @@ CURLcode ftp_parse_url_path(struct Curl_easy *data)
 
   if(data->set.upload && !ftpc->file && (ftp->transfer == PPTRANSFER_BODY)) {
     /* We need a file name when uploading. Return error! */
-    failf(data, "Uploading to a URL without a file name!");
+    failf(data, "Uploading to a URL without a file name");
     free(rawPath);
     return CURLE_URL_MALFORMAT;
   }
index 1cfdac0851f26b5315b22d9cbb862bec55a7ff66..7f6f4328d16dd673b321efdf79920ff4d3fc3c89 100644 (file)
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
+
 #include "pingpong.h"
 
 #ifndef CURL_DISABLE_FTP
@@ -149,6 +153,7 @@ struct ftp_conn {
   curl_off_t known_filesize; /* file size is different from -1, if wildcard
                                 LIST parsing was done and wc_statemach set
                                 it */
+  BIT(ftp_trying_alternative);
 };
 
 #define DEFAULT_ACCEPT_TIMEOUT   60000 /* milliseconds == one minute */
index 716ff381727a249ae8c3a8bbfa2c5ae3c745445c..40f5f3f1897f0472f512999d01d80de33f7c7de1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /**
@@ -420,7 +422,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
               char *endptr = finfo->b_data + 6;
               /* here we can deal with directory size, pass the leading
                  whitespace and then the digits */
-              while(ISSPACE(*endptr))
+              while(ISBLANK(*endptr))
                 endptr++;
               while(ISDIGIT(*endptr))
                 endptr++;
@@ -892,7 +894,7 @@ size_t Curl_ftp_parselist(char *buffer, size_t size, size_t nmemb,
         parser->item_length++;
         switch(parser->state.NT.sub.time) {
         case PL_WINNT_TIME_PRESPACE:
-          if(!ISSPACE(c)) {
+          if(!ISBLANK(c)) {
             parser->state.NT.sub.time = PL_WINNT_TIME_TIME;
           }
           break;
index e4cd8201d93426023261edd126d4a733e007a1c6..0a8054341740d6eef1b6205f7f781271b6ce2412 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
diff --git a/lib/functypes.h b/lib/functypes.h
new file mode 100644 (file)
index 0000000..8891b1d
--- /dev/null
@@ -0,0 +1,115 @@
+#ifndef HEADER_CURL_FUNCTYPES_H
+#define HEADER_CURL_FUNCTYPES_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+
+/* defaults:
+
+   ssize_t recv(int, void *, size_t, int);
+   ssize_t send(int, const void *, size_t, int);
+
+   If other argument or return types are needed:
+
+   1. For systems that run configure or cmake, the alternatives are provided
+      here.
+   2. For systems with config-*.h files, define them there.
+*/
+
+#ifdef WIN32
+/* int recv(SOCKET, char *, int, int) */
+#define RECV_TYPE_ARG1 SOCKET
+#define RECV_TYPE_ARG2 char *
+#define RECV_TYPE_ARG3 int
+#define RECV_TYPE_RETV int
+
+/* int send(SOCKET, const char *, int, int); */
+#define SEND_TYPE_ARG1 SOCKET
+#define SEND_TYPE_ARG2 char *
+#define SEND_TYPE_ARG3 int
+#define SEND_TYPE_RETV int
+
+#elif defined(__AMIGA__) /* Any AmigaOS flavour */
+
+/* long recv(long, char *, long, long); */
+#define RECV_TYPE_ARG1 long
+#define RECV_TYPE_ARG2 char *
+#define RECV_TYPE_ARG3 long
+#define RECV_TYPE_ARG4 long
+#define RECV_TYPE_RETV long
+
+/* int send(int, const char *, int, int); */
+#define SEND_TYPE_ARG1 int
+#define SEND_TYPE_ARG2 char *
+#define SEND_TYPE_ARG3 int
+#define SEND_TYPE_RETV int
+#endif
+
+
+#ifndef RECV_TYPE_ARG1
+#define RECV_TYPE_ARG1 int
+#endif
+
+#ifndef RECV_TYPE_ARG2
+#define RECV_TYPE_ARG2 void *
+#endif
+
+#ifndef RECV_TYPE_ARG3
+#define RECV_TYPE_ARG3 size_t
+#endif
+
+#ifndef RECV_TYPE_ARG4
+#define RECV_TYPE_ARG4 int
+#endif
+
+#ifndef RECV_TYPE_RETV
+#define RECV_TYPE_RETV ssize_t
+#endif
+
+#ifndef SEND_QUAL_ARG2
+#define SEND_QUAL_ARG2 const
+#endif
+
+#ifndef SEND_TYPE_ARG1
+#define SEND_TYPE_ARG1 int
+#endif
+
+#ifndef SEND_TYPE_ARG2
+#define SEND_TYPE_ARG2 void *
+#endif
+
+#ifndef SEND_TYPE_ARG3
+#define SEND_TYPE_ARG3 size_t
+#endif
+
+#ifndef SEND_TYPE_ARG4
+#define SEND_TYPE_ARG4 int
+#endif
+
+#ifndef SEND_TYPE_RETV
+#define SEND_TYPE_RETV ssize_t
+#endif
+
+#endif /* HEADER_CURL_FUNCTYPES_H */
index 92c53505c6881f708fa49bb30d43b31920444556..5f00fd13a46ec7c8686475a01d2343db30f8b373 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 9091e6139dc6ed858b681f4a503cffe76a280f5c..c3556b310282574985746404930c183f364ac4b2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -164,6 +166,20 @@ static CURLcode getinfo_char(struct Curl_easy *data, CURLINFO info,
   case CURLINFO_SCHEME:
     *param_charp = data->info.conn_scheme;
     break;
+  case CURLINFO_CAPATH:
+#ifdef CURL_CA_PATH
+    *param_charp = CURL_CA_PATH;
+#else
+    *param_charp = NULL;
+#endif
+    break;
+  case CURLINFO_CAINFO:
+#ifdef CURL_CA_BUNDLE
+    *param_charp = CURL_CA_BUNDLE;
+#else
+    *param_charp = NULL;
+#endif
+    break;
 
   default:
     return CURLE_UNKNOWN_OPTION;
@@ -285,6 +301,7 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
       /* return if the condition prevented the document to get transferred */
       *param_longp = data->info.timecond ? 1L : 0L;
     break;
+#ifndef CURL_DISABLE_RTSP
   case CURLINFO_RTSP_CLIENT_CSEQ:
     *param_longp = data->state.rtsp_next_client_CSeq;
     break;
@@ -294,6 +311,7 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,
   case CURLINFO_RTSP_CSEQ_RECV:
     *param_longp = data->state.rtsp_CSeq_recv;
     break;
+#endif
   case CURLINFO_HTTP_VERSION:
     switch(data->info.httpversion) {
     case 10:
@@ -560,7 +578,7 @@ CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info, ...)
   CURLcode result = CURLE_UNKNOWN_OPTION;
 
   if(!data)
-    return result;
+    return CURLE_BAD_FUNCTION_ARGUMENT;
 
   va_start(arg, info);
 
index f35d1b4b3442570e87fa9aa96247a0b5cbef29c6..1b5e8c20f885363ec11332a50ee60544ad4d4631 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info, ...);
 CURLcode Curl_initinfo(struct Curl_easy *data);
index f61232ff56135688e399359e144c099c527dc0ea..01f4bdef0ccb5e6983c9ec4a0992e794d30a743d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -165,7 +167,7 @@ static CURLcode gopher_do(struct Curl_easy *data, bool *done)
     newp += 2;
 
     /* ... and finally unescape */
-    result = Curl_urldecode(data, newp, 0, &sel, &len, REJECT_ZERO);
+    result = Curl_urldecode(newp, 0, &sel, &len, REJECT_ZERO);
     free(gopherpath);
     if(result)
       return result;
index 6b8bd554a668bd8513fafc847817b07c9302be50..4ea269d2b474048b0f30d812526dff0e7d2e50df 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifndef CURL_DISABLE_GOPHER
diff --git a/lib/h2h3.c b/lib/h2h3.c
new file mode 100644 (file)
index 0000000..50254ad
--- /dev/null
@@ -0,0 +1,309 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+#include "urldata.h"
+#include "h2h3.h"
+#include "transfer.h"
+#include "sendf.h"
+#include "strcase.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/*
+ * Curl_pseudo_headers() creates the array with pseudo headers to be
+ * used in a HTTP/2 or HTTP/3 request.
+ */
+
+#if defined(USE_NGHTTP2) || defined(ENABLE_QUIC)
+
+/* Index where :authority header field will appear in request header
+   field list. */
+#define AUTHORITY_DST_IDX 3
+
+/* USHRT_MAX is 65535 == 0xffff */
+#define HEADER_OVERFLOW(x) \
+  (x.namelen > 0xffff || x.valuelen > 0xffff - x.namelen)
+
+/*
+ * Check header memory for the token "trailers".
+ * Parse the tokens as separated by comma and surrounded by whitespace.
+ * Returns TRUE if found or FALSE if not.
+ */
+static bool contains_trailers(const char *p, size_t len)
+{
+  const char *end = p + len;
+  for(;;) {
+    for(; p != end && (*p == ' ' || *p == '\t'); ++p)
+      ;
+    if(p == end || (size_t)(end - p) < sizeof("trailers") - 1)
+      return FALSE;
+    if(strncasecompare("trailers", p, sizeof("trailers") - 1)) {
+      p += sizeof("trailers") - 1;
+      for(; p != end && (*p == ' ' || *p == '\t'); ++p)
+        ;
+      if(p == end || *p == ',')
+        return TRUE;
+    }
+    /* skip to next token */
+    for(; p != end && *p != ','; ++p)
+      ;
+    if(p == end)
+      return FALSE;
+    ++p;
+  }
+}
+
+typedef enum {
+  /* Send header to server */
+  HEADERINST_FORWARD,
+  /* Don't send header to server */
+  HEADERINST_IGNORE,
+  /* Discard header, and replace it with "te: trailers" */
+  HEADERINST_TE_TRAILERS
+} header_instruction;
+
+/* Decides how to treat given header field. */
+static header_instruction inspect_header(const char *name, size_t namelen,
+                                         const char *value, size_t valuelen) {
+  switch(namelen) {
+  case 2:
+    if(!strncasecompare("te", name, namelen))
+      return HEADERINST_FORWARD;
+
+    return contains_trailers(value, valuelen) ?
+           HEADERINST_TE_TRAILERS : HEADERINST_IGNORE;
+  case 7:
+    return strncasecompare("upgrade", name, namelen) ?
+           HEADERINST_IGNORE : HEADERINST_FORWARD;
+  case 10:
+    return (strncasecompare("connection", name, namelen) ||
+            strncasecompare("keep-alive", name, namelen)) ?
+           HEADERINST_IGNORE : HEADERINST_FORWARD;
+  case 16:
+    return strncasecompare("proxy-connection", name, namelen) ?
+           HEADERINST_IGNORE : HEADERINST_FORWARD;
+  case 17:
+    return strncasecompare("transfer-encoding", name, namelen) ?
+           HEADERINST_IGNORE : HEADERINST_FORWARD;
+  default:
+    return HEADERINST_FORWARD;
+  }
+}
+
+CURLcode Curl_pseudo_headers(struct Curl_easy *data,
+                             const char *mem, /* the request */
+                             const size_t len /* size of request */,
+                             struct h2h3req **hp)
+{
+  struct connectdata *conn = data->conn;
+  size_t nheader = 0;
+  size_t i;
+  size_t authority_idx;
+  char *hdbuf = (char *)mem;
+  char *end, *line_end;
+  struct h2h3pseudo *nva = NULL;
+  struct h2h3req *hreq = NULL;
+  char *vptr;
+
+  /* Calculate number of headers contained in [mem, mem + len). Assumes a
+     correctly generated HTTP header field block. */
+  for(i = 1; i < len; ++i) {
+    if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
+      ++nheader;
+      ++i;
+    }
+  }
+  if(nheader < 2) {
+    goto fail;
+  }
+  /* We counted additional 2 \r\n in the first and last line. We need 3
+     new headers: :method, :path and :scheme. Therefore we need one
+     more space. */
+  nheader += 1;
+  hreq = malloc(sizeof(struct h2h3req) +
+                sizeof(struct h2h3pseudo) * (nheader - 1));
+  if(!hreq) {
+    goto fail;
+  }
+
+  nva = &hreq->header[0];
+
+  /* Extract :method, :path from request line
+     We do line endings with CRLF so checking for CR is enough */
+  line_end = memchr(hdbuf, '\r', len);
+  if(!line_end) {
+    goto fail;
+  }
+
+  /* Method does not contain spaces */
+  end = memchr(hdbuf, ' ', line_end - hdbuf);
+  if(!end || end == hdbuf)
+    goto fail;
+  nva[0].name = H2H3_PSEUDO_METHOD;
+  nva[0].namelen = sizeof(H2H3_PSEUDO_METHOD) - 1;
+  nva[0].value = hdbuf;
+  nva[0].valuelen = (size_t)(end - hdbuf);
+
+  hdbuf = end + 1;
+
+  /* Path may contain spaces so scan backwards */
+  end = NULL;
+  for(i = (size_t)(line_end - hdbuf); i; --i) {
+    if(hdbuf[i - 1] == ' ') {
+      end = &hdbuf[i - 1];
+      break;
+    }
+  }
+  if(!end || end == hdbuf)
+    goto fail;
+  nva[1].name = H2H3_PSEUDO_PATH;
+  nva[1].namelen = sizeof(H2H3_PSEUDO_PATH) - 1;
+  nva[1].value = hdbuf;
+  nva[1].valuelen = (end - hdbuf);
+
+  nva[2].name = H2H3_PSEUDO_SCHEME;
+  nva[2].namelen = sizeof(H2H3_PSEUDO_SCHEME) - 1;
+  vptr = Curl_checkheaders(data, STRCONST(H2H3_PSEUDO_SCHEME));
+  if(vptr) {
+    vptr += sizeof(H2H3_PSEUDO_SCHEME);
+    while(*vptr && ISBLANK(*vptr))
+      vptr++;
+    nva[2].value = vptr;
+    infof(data, "set pseudo header %s to %s", H2H3_PSEUDO_SCHEME, vptr);
+  }
+  else {
+    if(conn->handler->flags & PROTOPT_SSL)
+      nva[2].value = "https";
+    else
+      nva[2].value = "http";
+  }
+  nva[2].valuelen = strlen((char *)nva[2].value);
+
+  authority_idx = 0;
+  i = 3;
+  while(i < nheader) {
+    size_t hlen;
+
+    hdbuf = line_end + 2;
+
+    /* check for next CR, but only within the piece of data left in the given
+       buffer */
+    line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
+    if(!line_end || (line_end == hdbuf))
+      goto fail;
+
+    /* header continuation lines are not supported */
+    if(*hdbuf == ' ' || *hdbuf == '\t')
+      goto fail;
+
+    for(end = hdbuf; end < line_end && *end != ':'; ++end)
+      ;
+    if(end == hdbuf || end == line_end)
+      goto fail;
+    hlen = end - hdbuf;
+
+    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
+      authority_idx = i;
+      nva[i].name = H2H3_PSEUDO_AUTHORITY;
+      nva[i].namelen = sizeof(H2H3_PSEUDO_AUTHORITY) - 1;
+    }
+    else {
+      nva[i].namelen = (size_t)(end - hdbuf);
+      /* Lower case the header name for HTTP/3 */
+      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
+      nva[i].name = hdbuf;
+    }
+    hdbuf = end + 1;
+    while(*hdbuf == ' ' || *hdbuf == '\t')
+      ++hdbuf;
+    end = line_end;
+
+    switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
+                          end - hdbuf)) {
+    case HEADERINST_IGNORE:
+      /* skip header fields prohibited by HTTP/2 specification. */
+      --nheader;
+      continue;
+    case HEADERINST_TE_TRAILERS:
+      nva[i].value = "trailers";
+      nva[i].valuelen = sizeof("trailers") - 1;
+      break;
+    default:
+      nva[i].value = hdbuf;
+      nva[i].valuelen = (end - hdbuf);
+    }
+
+    ++i;
+  }
+
+  /* :authority must come before non-pseudo header fields */
+  if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
+    struct h2h3pseudo authority = nva[authority_idx];
+    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
+      nva[i] = nva[i - 1];
+    }
+    nva[i] = authority;
+  }
+
+  /* Warn stream may be rejected if cumulative length of headers is too
+     large. */
+#define MAX_ACC 60000  /* <64KB to account for some overhead */
+  {
+    size_t acc = 0;
+
+    for(i = 0; i < nheader; ++i) {
+      acc += nva[i].namelen + nva[i].valuelen;
+
+      infof(data, "h2h3 [%.*s: %.*s]",
+            (int)nva[i].namelen, nva[i].name,
+            (int)nva[i].valuelen, nva[i].value);
+    }
+
+    if(acc > MAX_ACC) {
+      infof(data, "http_request: Warning: The cumulative length of all "
+            "headers exceeds %d bytes and that could cause the "
+            "stream to be rejected.", MAX_ACC);
+    }
+  }
+
+  hreq->entries = nheader;
+  *hp = hreq;
+
+  return CURLE_OK;
+
+  fail:
+  free(hreq);
+  return CURLE_OUT_OF_MEMORY;
+}
+
+void Curl_pseudo_free(struct h2h3req *hp)
+{
+  free(hp);
+}
+
+#endif /* USE_NGHTTP2 or HTTP/3 enabled */
diff --git a/lib/h2h3.h b/lib/h2h3.h
new file mode 100644 (file)
index 0000000..84caec5
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef HEADER_CURL_H2H3_H
+#define HEADER_CURL_H2H3_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+
+#define H2H3_PSEUDO_METHOD ":method"
+#define H2H3_PSEUDO_SCHEME ":scheme"
+#define H2H3_PSEUDO_AUTHORITY ":authority"
+#define H2H3_PSEUDO_PATH ":path"
+#define H2H3_PSEUDO_STATUS ":status"
+
+struct h2h3pseudo {
+  const char *name;
+  size_t namelen;
+  const char *value;
+  size_t valuelen;
+};
+
+struct h2h3req {
+  size_t entries;
+  struct h2h3pseudo header[1]; /* the array is allocated to contain entries */
+};
+
+/*
+ * Curl_pseudo_headers() creates the array with pseudo headers to be
+ * used in a HTTP/2 or HTTP/3 request. Returns an allocated struct.
+ * Free it with Curl_pseudo_free().
+ */
+CURLcode Curl_pseudo_headers(struct Curl_easy *data,
+                             const char *request,
+                             const size_t len,
+                             struct h2h3req **hp);
+
+/*
+ * Curl_pseudo_free() frees a h2h3req struct.
+ */
+void Curl_pseudo_free(struct h2h3req *hp);
+
+#endif /* HEADER_CURL_H2H3_H */
index 8848906947ba111ae46125e9f6fa5346618e8ae2..b6a2a33c720bb912c27dc4e7f3b0f8c52fdf14e1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index e166916a90b77080156c6d56540ea5d481caffbf..5b59bf1118468d8324a156cf587d01e0928a0e20 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
diff --git a/lib/headers.c b/lib/headers.c
new file mode 100644 (file)
index 0000000..978c918
--- /dev/null
@@ -0,0 +1,386 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2022, 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"
+
+#include "urldata.h"
+#include "strdup.h"
+#include "strcase.h"
+#include "headers.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+#if !defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_HEADERS_API)
+
+/* Generate the curl_header struct for the user. This function MUST assign all
+   struct fields in the output struct. */
+static void copy_header_external(struct Curl_easy *data,
+                                 struct Curl_header_store *hs,
+                                 size_t index,
+                                 size_t amount,
+                                 struct Curl_llist_element *e,
+                                 struct curl_header **hout)
+{
+  struct curl_header *h = *hout = &data->state.headerout;
+  h->name = hs->name;
+  h->value = hs->value;
+  h->amount = amount;
+  h->index = index;
+  /* this will randomly OR a reserved bit for the sole purpose of making it
+     impossible for applications to do == comparisons, as that would otherwise
+     be very tempting and then lead to the reserved bits not being reserved
+     anymore. */
+  h->origin = hs->type | (1<<27);
+  h->anchor = e;
+}
+
+/* public API */
+CURLHcode curl_easy_header(CURL *easy,
+                           const char *name,
+                           size_t nameindex,
+                           unsigned int type,
+                           int request,
+                           struct curl_header **hout)
+{
+  struct Curl_llist_element *e;
+  struct Curl_llist_element *e_pick = NULL;
+  struct Curl_easy *data = easy;
+  size_t match = 0;
+  size_t amount = 0;
+  struct Curl_header_store *hs = NULL;
+  struct Curl_header_store *pick = NULL;
+  if(!name || !hout || !data ||
+     (type > (CURLH_HEADER|CURLH_TRAILER|CURLH_CONNECT|CURLH_1XX|
+              CURLH_PSEUDO)) || !type || (request < -1))
+    return CURLHE_BAD_ARGUMENT;
+  if(!Curl_llist_count(&data->state.httphdrs))
+    return CURLHE_NOHEADERS; /* no headers available */
+  if(request > data->state.requests)
+    return CURLHE_NOREQUEST;
+  if(request == -1)
+    request = data->state.requests;
+
+  /* we need a first round to count amount of this header */
+  for(e = data->state.httphdrs.head; e; e = e->next) {
+    hs = e->ptr;
+    if(strcasecompare(hs->name, name) &&
+       (hs->type & type) &&
+       (hs->request == request)) {
+      amount++;
+      pick = hs;
+      e_pick = e;
+    }
+  }
+  if(!amount)
+    return CURLHE_MISSING;
+  else if(nameindex >= amount)
+    return CURLHE_BADINDEX;
+
+  if(nameindex == amount - 1)
+    /* if the last or only occurrence is what's asked for, then we know it */
+    hs = pick;
+  else {
+    for(e = data->state.httphdrs.head; e; e = e->next) {
+      hs = e->ptr;
+      if(strcasecompare(hs->name, name) &&
+         (hs->type & type) &&
+         (hs->request == request) &&
+         (match++ == nameindex)) {
+        e_pick = e;
+        break;
+      }
+    }
+    if(!e) /* this shouldn't happen */
+      return CURLHE_MISSING;
+  }
+  /* this is the name we want */
+  copy_header_external(data, hs, nameindex, amount, e_pick, hout);
+  return CURLHE_OK;
+}
+
+/* public API */
+struct curl_header *curl_easy_nextheader(CURL *easy,
+                                         unsigned int type,
+                                         int request,
+                                         struct curl_header *prev)
+{
+  struct Curl_easy *data = easy;
+  struct Curl_llist_element *pick;
+  struct Curl_llist_element *e;
+  struct Curl_header_store *hs;
+  struct curl_header *hout;
+  size_t amount = 0;
+  size_t index = 0;
+
+  if(request > data->state.requests)
+    return NULL;
+  if(request == -1)
+    request = data->state.requests;
+
+  if(prev) {
+    pick = prev->anchor;
+    if(!pick)
+      /* something is wrong */
+      return NULL;
+    pick = pick->next;
+  }
+  else
+    pick = data->state.httphdrs.head;
+
+  if(pick) {
+    /* make sure it is the next header of the desired type */
+    do {
+      hs = pick->ptr;
+      if((hs->type & type) && (hs->request == request))
+        break;
+      pick = pick->next;
+    } while(pick);
+  }
+
+  if(!pick)
+    /* no more headers available */
+    return NULL;
+
+  hs = pick->ptr;
+
+  /* count number of occurrences of this name within the mask and figure out
+     the index for the currently selected entry */
+  for(e = data->state.httphdrs.head; e; e = e->next) {
+    struct Curl_header_store *check = e->ptr;
+    if(strcasecompare(hs->name, check->name) &&
+       (check->request == request) &&
+       (check->type & type))
+      amount++;
+    if(e == pick)
+      index = amount - 1;
+  }
+
+  copy_header_external(data, hs, index, amount, pick, &hout);
+  return hout;
+}
+
+static CURLcode namevalue(char *header, size_t hlen, unsigned int type,
+                           char **name, char **value)
+{
+  char *end = header + hlen - 1; /* point to the last byte */
+  DEBUGASSERT(hlen);
+  *name = header;
+
+  if(type == CURLH_PSEUDO) {
+    if(*header != ':')
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+    header++;
+  }
+
+  /* Find the end of the header name */
+  while(*header && (*header != ':'))
+    ++header;
+
+  if(*header)
+    /* Skip over colon, null it */
+    *header++ = 0;
+  else
+    return CURLE_BAD_FUNCTION_ARGUMENT;
+
+  /* skip all leading space letters */
+  while(*header && ISBLANK(*header))
+    header++;
+
+  *value = header;
+
+  /* skip all trailing space letters */
+  while((end > header) && ISSPACE(*end))
+    *end-- = 0; /* nul terminate */
+  return CURLE_OK;
+}
+
+static CURLcode unfold_value(struct Curl_easy *data, const char *value,
+                             size_t vlen)  /* length of the incoming header */
+{
+  struct Curl_header_store *hs;
+  struct Curl_header_store *newhs;
+  size_t olen; /* length of the old value */
+  size_t oalloc; /* length of the old name + value + separator */
+  size_t offset;
+  DEBUGASSERT(data->state.prevhead);
+  hs = data->state.prevhead;
+  olen = strlen(hs->value);
+  offset = hs->value - hs->buffer;
+  oalloc = olen + offset + 1;
+
+  /* skip all trailing space letters */
+  while(vlen && ISSPACE(value[vlen - 1]))
+    vlen--;
+
+  /* save only one leading space */
+  while((vlen > 1) && ISBLANK(value[0]) && ISBLANK(value[1])) {
+    vlen--;
+    value++;
+  }
+
+  /* since this header block might move in the realloc below, it needs to
+     first be unlinked from the list and then re-added again after the
+     realloc */
+  Curl_llist_remove(&data->state.httphdrs, &hs->node, NULL);
+
+  /* new size = struct + new value length + old name+value length */
+  newhs = Curl_saferealloc(hs, sizeof(*hs) + vlen + oalloc + 1);
+  if(!newhs)
+    return CURLE_OUT_OF_MEMORY;
+  /* ->name' and ->value point into ->buffer (to keep the header allocation
+     in a single memory block), which now potentially have moved. Adjust
+     them. */
+  newhs->name = newhs->buffer;
+  newhs->value = &newhs->buffer[offset];
+
+  /* put the data at the end of the previous data, not the newline */
+  memcpy(&newhs->value[olen], value, vlen);
+  newhs->value[olen + vlen] = 0; /* null-terminate at newline */
+
+  /* insert this node into the list of headers */
+  Curl_llist_insert_next(&data->state.httphdrs, data->state.httphdrs.tail,
+                         newhs, &newhs->node);
+  data->state.prevhead = newhs;
+  return CURLE_OK;
+}
+
+
+/*
+ * Curl_headers_push() gets passed a full HTTP header to store. It gets called
+ * immediately before the header callback. The header is CRLF terminated.
+ */
+CURLcode Curl_headers_push(struct Curl_easy *data, const char *header,
+                           unsigned char type)
+{
+  char *value = NULL;
+  char *name = NULL;
+  char *end;
+  size_t hlen; /* length of the incoming header */
+  struct Curl_header_store *hs;
+  CURLcode result = CURLE_OUT_OF_MEMORY;
+
+  if((header[0] == '\r') || (header[0] == '\n'))
+    /* ignore the body separator */
+    return CURLE_OK;
+
+  end = strchr(header, '\r');
+  if(!end) {
+    end = strchr(header, '\n');
+    if(!end)
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+  }
+  hlen = end - header + 1;
+
+  if((header[0] == ' ') || (header[0] == '\t')) {
+    if(data->state.prevhead)
+      /* line folding, append value to the previous header's value */
+      return unfold_value(data, header, hlen);
+    else
+      /* can't unfold without a previous header */
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+  }
+
+  hs = calloc(1, sizeof(*hs) + hlen);
+  if(!hs)
+    return CURLE_OUT_OF_MEMORY;
+  memcpy(hs->buffer, header, hlen);
+  hs->buffer[hlen] = 0; /* nul terminate */
+
+  result = namevalue(hs->buffer, hlen, type, &name, &value);
+  if(result)
+    goto fail;
+
+  hs->name = name;
+  hs->value = value;
+  hs->type = type;
+  hs->request = data->state.requests;
+
+  /* insert this node into the list of headers */
+  Curl_llist_insert_next(&data->state.httphdrs, data->state.httphdrs.tail,
+                         hs, &hs->node);
+  data->state.prevhead = hs;
+  return CURLE_OK;
+  fail:
+  free(hs);
+  return result;
+}
+
+/*
+ * Curl_headers_init(). Init the headers subsystem.
+ */
+static void headers_init(struct Curl_easy *data)
+{
+  Curl_llist_init(&data->state.httphdrs, NULL);
+}
+
+/*
+ * Curl_headers_cleanup(). Free all stored headers and associated memory.
+ */
+CURLcode Curl_headers_cleanup(struct Curl_easy *data)
+{
+  struct Curl_llist_element *e;
+  struct Curl_llist_element *n;
+
+  for(e = data->state.httphdrs.head; e; e = n) {
+    struct Curl_header_store *hs = e->ptr;
+    n = e->next;
+    free(hs);
+  }
+  headers_init(data);
+  return CURLE_OK;
+}
+
+#else /* HTTP-disabled builds below */
+
+CURLHcode curl_easy_header(CURL *easy,
+                           const char *name,
+                           size_t index,
+                           unsigned int origin,
+                           int request,
+                           struct curl_header **hout)
+{
+  (void)easy;
+  (void)name;
+  (void)index;
+  (void)origin;
+  (void)request;
+  (void)hout;
+  return CURLHE_NOT_BUILT_IN;
+}
+
+struct curl_header *curl_easy_nextheader(CURL *easy,
+                                         unsigned int type,
+                                         int request,
+                                         struct curl_header *prev)
+{
+  (void)easy;
+  (void)type;
+  (void)request;
+  (void)prev;
+  return NULL;
+}
+#endif
diff --git a/lib/headers.h b/lib/headers.h
new file mode 100644 (file)
index 0000000..96332db
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef HEADER_CURL_HEADER_H
+#define HEADER_CURL_HEADER_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_HEADERS_API)
+
+struct Curl_header_store {
+  struct Curl_llist_element node;
+  char *name; /* points into 'buffer' */
+  char *value; /* points into 'buffer */
+  int request; /* 0 is the first request, then 1.. 2.. */
+  unsigned char type; /* CURLH_* defines */
+  char buffer[1]; /* this is the raw header blob */
+};
+
+/*
+ * Curl_headers_push() gets passed a full header to store.
+ */
+CURLcode Curl_headers_push(struct Curl_easy *data, const char *header,
+                           unsigned char type);
+
+/*
+ * Curl_headers_cleanup(). Free all stored headers and associated memory.
+ */
+CURLcode Curl_headers_cleanup(struct Curl_easy *data);
+
+#else
+#define Curl_headers_push(x,y,z) CURLE_OK
+#define Curl_headers_cleanup(x) Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_HEADER_H */
index 590abe6d2eb2c73557ffd3cfaad65eba2b25da33..dfb0db5757a8f060afac7b0bab370a63e4aee2e4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC2104 Keyed-Hashing for Message Authentication
  *
  ***************************************************************************/
@@ -39,8 +41,8 @@
  * Generic HMAC algorithm.
  *
  *   This module computes HMAC digests based on any hash function. Parameters
- * and computing procedures are set-up dynamically at HMAC computation
- * context initialisation.
+ * and computing procedures are set-up dynamically at HMAC computation context
+ * initialization.
  */
 
 static const unsigned char hmac_ipad = 0x36;
index f7d99ce9a61f0bf86846de7b40045fb3401c5f4d..0bfbe2ef860cb70ab4d46299a0ad14f2e7362872 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
diff --git a/lib/hostcheck.c b/lib/hostcheck.c
deleted file mode 100644 (file)
index cd45bd0..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#if defined(USE_OPENSSL)                                \
-  || defined(USE_GSKIT)                                 \
-  || defined(USE_SCHANNEL)
-/* these backends use functions from this file */
-
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_IN6_H
-#include <netinet/in6.h>
-#endif
-
-#include "hostcheck.h"
-#include "strcase.h"
-#include "hostip.h"
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-/*
- * Match a hostname against a wildcard pattern.
- * E.g.
- *  "foo.host.com" matches "*.host.com".
- *
- * We use the matching rule described in RFC6125, section 6.4.3.
- * https://tools.ietf.org/html/rfc6125#section-6.4.3
- *
- * In addition: ignore trailing dots in the host names and wildcards, so that
- * the names are used normalized. This is what the browsers do.
- *
- * Do not allow wildcard matching on IP numbers. There are apparently
- * certificates being used with an IP address in the CN field, thus making no
- * apparent distinction between a name and an IP. We need to detect the use of
- * an IP address and not wildcard match on such names.
- *
- * NOTE: hostmatch() gets called with copied buffers so that it can modify the
- * contents at will.
- */
-
-static int hostmatch(char *hostname, char *pattern)
-{
-  const char *pattern_label_end, *pattern_wildcard, *hostname_label_end;
-  int wildcard_enabled;
-  size_t prefixlen, suffixlen;
-
-  /* normalize pattern and hostname by stripping off trailing dots */
-  size_t len = strlen(hostname);
-  if(hostname[len-1]=='.')
-    hostname[len-1] = 0;
-  len = strlen(pattern);
-  if(pattern[len-1]=='.')
-    pattern[len-1] = 0;
-
-  pattern_wildcard = strchr(pattern, '*');
-  if(!pattern_wildcard)
-    return strcasecompare(pattern, hostname) ?
-      CURL_HOST_MATCH : CURL_HOST_NOMATCH;
-
-  /* detect IP address as hostname and fail the match if so */
-  if(Curl_host_is_ipnum(hostname))
-    return CURL_HOST_NOMATCH;
-
-  /* We require at least 2 dots in pattern to avoid too wide wildcard
-     match. */
-  wildcard_enabled = 1;
-  pattern_label_end = strchr(pattern, '.');
-  if(!pattern_label_end || !strchr(pattern_label_end + 1, '.') ||
-     pattern_wildcard > pattern_label_end ||
-     strncasecompare(pattern, "xn--", 4)) {
-    wildcard_enabled = 0;
-  }
-  if(!wildcard_enabled)
-    return strcasecompare(pattern, hostname) ?
-      CURL_HOST_MATCH : CURL_HOST_NOMATCH;
-
-  hostname_label_end = strchr(hostname, '.');
-  if(!hostname_label_end ||
-     !strcasecompare(pattern_label_end, hostname_label_end))
-    return CURL_HOST_NOMATCH;
-
-  /* The wildcard must match at least one character, so the left-most
-     label of the hostname is at least as large as the left-most label
-     of the pattern. */
-  if(hostname_label_end - hostname < pattern_label_end - pattern)
-    return CURL_HOST_NOMATCH;
-
-  prefixlen = pattern_wildcard - pattern;
-  suffixlen = pattern_label_end - (pattern_wildcard + 1);
-  return strncasecompare(pattern, hostname, prefixlen) &&
-    strncasecompare(pattern_wildcard + 1, hostname_label_end - suffixlen,
-                    suffixlen) ?
-    CURL_HOST_MATCH : CURL_HOST_NOMATCH;
-}
-
-int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)
-{
-  int res = 0;
-  if(!match_pattern || !*match_pattern ||
-      !hostname || !*hostname) /* sanity check */
-    ;
-  else {
-    char *matchp = strdup(match_pattern);
-    if(matchp) {
-      char *hostp = strdup(hostname);
-      if(hostp) {
-        if(hostmatch(hostp, matchp) == CURL_HOST_MATCH)
-          res = 1;
-        free(hostp);
-      }
-      free(matchp);
-    }
-  }
-
-  return res;
-}
-
-#endif /* OPENSSL, GSKIT or schannel+wince */
diff --git a/lib/hostcheck.h b/lib/hostcheck.h
deleted file mode 100644 (file)
index 52155f4..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef HEADER_CURL_HOSTCHECK_H
-#define HEADER_CURL_HOSTCHECK_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-
-#include <curl/curl.h>
-
-#define CURL_HOST_NOMATCH 0
-#define CURL_HOST_MATCH   1
-int Curl_cert_hostcheck(const char *match_pattern, const char *hostname);
-
-#endif /* HEADER_CURL_HOSTCHECK_H */
index 911d5ed6d379b1b8c4d928e306ea203a2760c19c..941ecacf4ad26a2e0900deb2b1c08081f9a2eecc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -179,7 +181,7 @@ create_hostcache_id(const char *name, int port, char *ptr, size_t buflen)
     len = buflen - 7;
   /* store and lower case the name */
   while(len--)
-    *ptr++ = (char)TOLOWER(*name++);
+    *ptr++ = Curl_raw_tolower(*name++);
   msnprintf(ptr, 7, ":%u", port);
 }
 
@@ -295,6 +297,31 @@ static struct Curl_dns_entry *fetch_addr(struct Curl_easy *data,
     }
   }
 
+  /* See if the returned entry matches the required resolve mode */
+  if(dns && data->conn->ip_version != CURL_IPRESOLVE_WHATEVER) {
+    int pf = PF_INET;
+    bool found = false;
+    struct Curl_addrinfo *addr = dns->addr;
+
+#ifdef PF_INET6
+    if(data->conn->ip_version == CURL_IPRESOLVE_V6)
+      pf = PF_INET6;
+#endif
+
+    while(addr) {
+      if(addr->ai_family == pf) {
+        found = true;
+        break;
+      }
+      addr = addr->ai_next;
+    }
+
+    if(!found) {
+      infof(data, "Hostname in DNS cache doesn't have needed family, zapped");
+      dns = NULL; /* the memory deallocation is being handled by the hash */
+      Curl_hash_delete(data->dns.hostcache, entry_id, entry_len + 1);
+    }
+  }
   return dns;
 }
 
@@ -461,12 +488,12 @@ Curl_cache_addr(struct Curl_easy *data,
 }
 
 #ifdef ENABLE_IPV6
-/* return a static IPv6 resolve for 'localhost' */
-static struct Curl_addrinfo *get_localhost6(int port)
+/* return a static IPv6 ::1 for the name */
+static struct Curl_addrinfo *get_localhost6(int port, const char *name)
 {
   struct Curl_addrinfo *ca;
   const size_t ss_size = sizeof(struct sockaddr_in6);
-  const size_t hostlen = strlen("localhost");
+  const size_t hostlen = strlen(name);
   struct sockaddr_in6 sa6;
   unsigned char ipv6[16];
   unsigned short port16 = (unsigned short)(port & 0xffff);
@@ -491,19 +518,19 @@ static struct Curl_addrinfo *get_localhost6(int port)
   ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
   memcpy(ca->ai_addr, &sa6, ss_size);
   ca->ai_canonname = (char *)ca->ai_addr + ss_size;
-  strcpy(ca->ai_canonname, "localhost");
+  strcpy(ca->ai_canonname, name);
   return ca;
 }
 #else
-#define get_localhost6(x) NULL
+#define get_localhost6(x,y) NULL
 #endif
 
-/* return a static IPv4 resolve for 'localhost' */
-static struct Curl_addrinfo *get_localhost(int port)
+/* return a static IPv4 127.0.0.1 for the given name */
+static struct Curl_addrinfo *get_localhost(int port, const char *name)
 {
   struct Curl_addrinfo *ca;
   const size_t ss_size = sizeof(struct sockaddr_in);
-  const size_t hostlen = strlen("localhost");
+  const size_t hostlen = strlen(name);
   struct sockaddr_in sa;
   unsigned int ipv4;
   unsigned short port16 = (unsigned short)(port & 0xffff);
@@ -527,8 +554,8 @@ static struct Curl_addrinfo *get_localhost(int port)
   ca->ai_addr = (void *)((char *)ca + sizeof(struct Curl_addrinfo));
   memcpy(ca->ai_addr, &sa, ss_size);
   ca->ai_canonname = (char *)ca->ai_addr + ss_size;
-  strcpy(ca->ai_canonname, "localhost");
-  ca->ai_next = get_localhost6(port);
+  strcpy(ca->ai_canonname, name);
+  ca->ai_next = get_localhost6(port, name);
   return ca;
 }
 
@@ -544,7 +571,11 @@ bool Curl_ipv6works(struct Curl_easy *data)
        have the info kept for fast re-use */
     DEBUGASSERT(data);
     DEBUGASSERT(data->multi);
-    return data->multi->ipv6_works;
+    if(data->multi->ipv6_up == IPV6_UNKNOWN) {
+      bool works = Curl_ipv6works(NULL);
+      data->multi->ipv6_up = works ? IPV6_WORKS : IPV6_DEAD;
+    }
+    return data->multi->ipv6_up == IPV6_WORKS;
   }
   else {
     int ipv6_works = -1;
@@ -581,6 +612,17 @@ bool Curl_host_is_ipnum(const char *hostname)
   return FALSE;
 }
 
+
+/* return TRUE if 'part' is a case insensitive tail of 'full' */
+static bool tailmatch(const char *full, const char *part)
+{
+  size_t plen = strlen(part);
+  size_t flen = strlen(full);
+  if(plen > flen)
+    return FALSE;
+  return strncasecompare(part, &full[flen - plen], plen);
+}
+
 /*
  * Curl_resolv() is the main name resolve function within libcurl. It resolves
  * a name and returns a pointer to the entry in the 'entry' argument (if one
@@ -716,8 +758,9 @@ enum resolve_t Curl_resolv(struct Curl_easy *data,
       if(conn->ip_version == CURL_IPRESOLVE_V6 && !Curl_ipv6works(data))
         return CURLRESOLV_ERROR;
 
-      if(strcasecompare(hostname, "localhost"))
-        addr = get_localhost(port);
+      if(strcasecompare(hostname, "localhost") ||
+         tailmatch(hostname, ".localhost"))
+        addr = get_localhost(port, hostname);
 #ifndef CURL_DISABLE_DOH
       else if(allowDOH && data->set.doh && !ipnum)
         addr = Curl_doh(data, hostname, port, &respwait);
@@ -945,7 +988,7 @@ clean_up:
          less than 1! */
       alarm(1);
       rc = CURLRESOLV_TIMEDOUT;
-      failf(data, "Previous alarm fired off!");
+      failf(data, "Previous alarm fired off");
     }
     else
       alarm((unsigned int)alarm_set);
@@ -991,9 +1034,9 @@ static void freednsentry(void *freethis)
 /*
  * Curl_init_dnscache() inits a new DNS cache.
  */
-void Curl_init_dnscache(struct Curl_hash *hash)
+void Curl_init_dnscache(struct Curl_hash *hash, int size)
 {
-  Curl_hash_init(hash, 7, Curl_hash_str, Curl_str_key_compare,
+  Curl_hash_init(hash, size, Curl_hash_str, Curl_str_key_compare,
                  freednsentry);
 }
 
@@ -1131,7 +1174,7 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
 
         ai = Curl_str2addr(address, port);
         if(!ai) {
-          infof(data, "Resolve address '%s' found illegal!", address);
+          infof(data, "Resolve address '%s' found illegal", address);
           goto err;
         }
 
@@ -1150,7 +1193,7 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
       error = false;
    err:
       if(error) {
-        failf(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'!",
+        failf(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'",
               hostp->data);
         Curl_freeaddrinfo(head);
         return CURLE_SETOPT_OPTION_SYNTAX;
@@ -1167,8 +1210,8 @@ CURLcode Curl_loadhostpairs(struct Curl_easy *data)
       dns = Curl_hash_pick(data->dns.hostcache, entry_id, entry_len + 1);
 
       if(dns) {
-        infof(data, "RESOLVE %s:%d is - old addresses discarded!",
-                hostname, port);
+        infof(data, "RESOLVE %s:%d is - old addresses discarded",
+              hostname, port);
         /* delete old entry, there are two reasons for this
          1. old entry may have different addresses.
          2. even if entry with correct addresses is already in the cache,
@@ -1220,6 +1263,7 @@ CURLcode Curl_resolv_check(struct Curl_easy *data,
                            struct Curl_dns_entry **dns)
 {
 #if defined(CURL_DISABLE_DOH) && !defined(CURLRES_ASYNCH)
+  (void)data;
   (void)dns;
 #endif
 #ifndef CURL_DISABLE_DOH
@@ -1267,7 +1311,7 @@ CURLcode Curl_once_resolved(struct Curl_easy *data, bool *protocol_done)
   result = Curl_setup_conn(data, protocol_done);
 
   if(result) {
-    Curl_detach_connnection(data);
+    Curl_detach_connection(data);
     Curl_conncache_remove_conn(data, conn, TRUE);
     Curl_disconnect(data, conn, TRUE);
   }
index 1db5981842f14a611316666c68379cd06b0306d2..9d3170737c03cd19fce85f46a43f5ec92ccb7d9c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -130,7 +132,7 @@ void Curl_resolv_unlock(struct Curl_easy *data,
                         struct Curl_dns_entry *dns);
 
 /* init a new dns cache */
-void Curl_init_dnscache(struct Curl_hash *hash);
+void Curl_init_dnscache(struct Curl_hash *hash, int hashsize);
 
 /* prune old entries from the DNS cache */
 void Curl_hostcache_prune(struct Curl_easy *data);
index 1fd791015c6358be00032c766416d5d53a8be6b0..1dd54e879dbb6d274175438fa08766c24a14fa76 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -110,7 +112,8 @@ struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data,
 #endif /* CURLRES_SYNCH */
 #endif /* CURLRES_IPV4 */
 
-#if defined(CURLRES_IPV4) && !defined(CURLRES_ARES)
+#if defined(CURLRES_IPV4) && \
+   !defined(CURLRES_ARES) && !defined(CURLRES_AMIGA)
 
 /*
  * Curl_ipv4_resolve_r() - ipv4 threadsafe resolver function.
@@ -295,4 +298,5 @@ struct Curl_addrinfo *Curl_ipv4_resolve_r(const char *hostname,
 
   return ai;
 }
-#endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) */
+#endif /* defined(CURLRES_IPV4) && !defined(CURLRES_ARES) &&
+                                   !defined(CURLRES_AMIGA) */
index c2d5f08e325ecc2428b9ffb12627bb371fecffc6..c62c254c7224dda9234603a098dce5fd2a058f3a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -94,8 +96,8 @@ static void dump_addrinfo(struct connectdata *conn,
  * non-ares version).
  *
  * Returns name information about the given hostname and port number. If
- * successful, the 'addrinfo' is returned and the forth argument will point to
- * memory we need to free after use. That memory *MUST* be freed with
+ * successful, the 'addrinfo' is returned and the fourth argument will point
+ * to memory we need to free after use. That memory *MUST* be freed with
  * Curl_freeaddrinfo(), nothing else.
  */
 struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data,
@@ -115,7 +117,7 @@ struct Curl_addrinfo *Curl_getaddrinfo(struct Curl_easy *data,
 
   *waitp = 0; /* synchronous response only */
 
-  if(Curl_ipv6works(data))
+  if((data->conn->ip_version != CURL_IPRESOLVE_V4) && Curl_ipv6works(data))
     /* The stack seems to be IPv6-enabled */
     pf = PF_UNSPEC;
 
index c00c2744c43ee1e0685a8c487120dbef0010f50f..ee54363bf9813a99ec794e803dd5e8e2f514a983 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 052dc1157188901314d1c46409a1a545a20f7168..e3b686ebfa487c0fe1c65cf2b06eb98af1784f5d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * The Strict-Transport-Security header is defined in RFC 6797:
- * https://tools.ietf.org/html/rfc6797
+ * https://datatracker.ietf.org/doc/html/rfc6797
  */
 #include "curl_setup.h"
 
@@ -35,7 +37,7 @@
 #include "sendf.h"
 #include "strtoofft.h"
 #include "parsedate.h"
-#include "rand.h"
+#include "fopen.h"
 #include "rename.h"
 #include "strtoofft.h"
 
@@ -114,16 +116,25 @@ static CURLcode hsts_create(struct hsts *h,
                             curl_off_t expires)
 {
   struct stsentry *sts = hsts_entry();
+  char *duphost;
+  size_t hlen;
   if(!sts)
     return CURLE_OUT_OF_MEMORY;
 
-  sts->expires = expires;
-  sts->includeSubDomains = subdomains;
-  sts->host = strdup(hostname);
-  if(!sts->host) {
+  duphost = strdup(hostname);
+  if(!duphost) {
     free(sts);
     return CURLE_OUT_OF_MEMORY;
   }
+
+  hlen = strlen(duphost);
+  if(duphost[hlen - 1] == '.')
+    /* strip off trailing any dot */
+    duphost[--hlen] = 0;
+
+  sts->host = duphost;
+  sts->expires = expires;
+  sts->includeSubDomains = subdomains;
   Curl_llist_insert_next(&h->list, h->list.tail, sts, &sts->node);
   return CURLE_OK;
 }
@@ -145,7 +156,7 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
     return CURLE_OK;
 
   do {
-    while(*p && ISSPACE(*p))
+    while(*p && ISBLANK(*p))
       p++;
     if(Curl_strncasecompare("max-age=", p, 8)) {
       bool quoted = FALSE;
@@ -156,7 +167,7 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
         return CURLE_BAD_FUNCTION_ARGUMENT;
 
       p += 8;
-      while(*p && ISSPACE(*p))
+      while(*p && ISBLANK(*p))
         p++;
       if(*p == '\"') {
         p++;
@@ -189,7 +200,7 @@ CURLcode Curl_hsts_parse(struct hsts *h, const char *hostname,
         p++;
     }
 
-    while(*p && ISSPACE(*p))
+    while(*p && ISBLANK(*p))
       p++;
     if(*p == ';')
       p++;
@@ -238,10 +249,21 @@ struct stsentry *Curl_hsts(struct hsts *h, const char *hostname,
                            bool subdomain)
 {
   if(h) {
+    char buffer[MAX_HSTS_HOSTLEN + 1];
     time_t now = time(NULL);
     size_t hlen = strlen(hostname);
     struct Curl_llist_element *e;
     struct Curl_llist_element *n;
+
+    if((hlen > MAX_HSTS_HOSTLEN) || !hlen)
+      return NULL;
+    memcpy(buffer, hostname, hlen);
+    if(hostname[hlen-1] == '.')
+      /* remove the trailing dot */
+      --hlen;
+    buffer[hlen] = 0;
+    hostname = buffer;
+
     for(e = h->list.head; e; e = n) {
       struct stsentry *sts = e->ptr;
       n = e->next;
@@ -334,8 +356,7 @@ CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
   struct Curl_llist_element *n;
   CURLcode result = CURLE_OK;
   FILE *out;
-  char *tempstore;
-  unsigned char randsuffix[9];
+  char *tempstore = NULL;
 
   if(!h)
     /* no cache activated */
@@ -349,17 +370,8 @@ CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
     /* marked as read-only, no file or zero length file name */
     goto skipsave;
 
-  if(Curl_rand_hex(data, randsuffix, sizeof(randsuffix)))
-    return CURLE_FAILED_INIT;
-
-  tempstore = aprintf("%s.%s.tmp", file, randsuffix);
-  if(!tempstore)
-    return CURLE_OUT_OF_MEMORY;
-
-  out = fopen(tempstore, FOPEN_WRITETEXT);
-  if(!out)
-    result = CURLE_WRITE_ERROR;
-  else {
+  result = Curl_fopen(data, file, &out, &tempstore);
+  if(!result) {
     fputs("# Your HSTS cache. https://curl.se/docs/hsts.html\n"
           "# This file was generated by libcurl! Edit at your own risk.\n",
           out);
@@ -371,10 +383,10 @@ CURLcode Curl_hsts_save(struct Curl_easy *data, struct hsts *h,
         break;
     }
     fclose(out);
-    if(!result && Curl_rename(tempstore, file))
+    if(!result && tempstore && Curl_rename(tempstore, file))
       result = CURLE_WRITE_ERROR;
 
-    if(result)
+    if(result && tempstore)
       unlink(tempstore);
   }
   free(tempstore);
@@ -440,7 +452,7 @@ static CURLcode hsts_pull(struct Curl_easy *data, struct hsts *h)
     CURLSTScode sc;
     DEBUGASSERT(h);
     do {
-      char buffer[257];
+      char buffer[MAX_HSTS_HOSTLEN + 1];
       struct curl_hstsentry e;
       e.name = buffer;
       e.namelen = sizeof(buffer)-1;
@@ -474,8 +486,7 @@ static CURLcode hsts_pull(struct Curl_easy *data, struct hsts *h)
 
 /*
  * Load the HSTS cache from the given file. The text based line-oriented file
- * format is documented here:
- * https://github.com/curl/curl/wiki/HSTS
+ * format is documented here: https://curl.se/docs/hsts.html
  *
  * This function only returns error on major problems that prevent hsts
  * handling to work completely. It will ignore individual syntactical errors
index 653c05348d82d2186ceb04ed4b9e39cc46a66fda..0e36a7756bdb2649b6b388dd22bd8a7e5fea9b1e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index f08a343e3b303bd11f278aabbef8603eba47695c..f57859e8b05998e9285facfdee74063c8136f8fe 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include "content_encoding.h"
 #include "http_proxy.h"
 #include "warnless.h"
-#include "non-ascii.h"
 #include "http2.h"
 #include "connect.h"
 #include "strdup.h"
 #include "altsvc.h"
 #include "hsts.h"
+#include "ws.h"
 #include "c-hyper.h"
 
 /* The last 3 #include files should be in this order */
@@ -113,6 +115,10 @@ static int https_getsock(struct Curl_easy *data,
 #endif
 static CURLcode http_setup_conn(struct Curl_easy *data,
                                 struct connectdata *conn);
+#ifdef USE_WEBSOCKETS
+static CURLcode ws_setup_conn(struct Curl_easy *data,
+                              struct connectdata *conn);
+#endif
 
 /*
  * HTTP handler interface.
@@ -141,6 +147,32 @@ const struct Curl_handler Curl_handler_http = {
   PROTOPT_USERPWDCTRL
 };
 
+#ifdef USE_WEBSOCKETS
+const struct Curl_handler Curl_handler_ws = {
+  "WS",                                 /* scheme */
+  ws_setup_conn,                        /* setup_connection */
+  Curl_http,                            /* do_it */
+  Curl_http_done,                       /* done */
+  ZERO_NULL,                            /* do_more */
+  Curl_http_connect,                    /* connect_it */
+  ZERO_NULL,                            /* connecting */
+  ZERO_NULL,                            /* doing */
+  ZERO_NULL,                            /* proto_getsock */
+  http_getsock_do,                      /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  ZERO_NULL,                            /* perform_getsock */
+  ZERO_NULL,                            /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  ZERO_NULL,                            /* connection_check */
+  ZERO_NULL,                            /* attach connection */
+  PORT_HTTP,                            /* defport */
+  CURLPROTO_WS,                         /* protocol */
+  CURLPROTO_HTTP,                       /* family */
+  PROTOPT_CREDSPERREQUEST |             /* flags */
+  PROTOPT_USERPWDCTRL
+};
+#endif
+
 #ifdef USE_SSL
 /*
  * HTTPS handler interface.
@@ -165,11 +197,38 @@ const struct Curl_handler Curl_handler_https = {
   PORT_HTTPS,                           /* defport */
   CURLPROTO_HTTPS,                      /* protocol */
   CURLPROTO_HTTP,                       /* family */
-  PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN_NPN | /* flags */
+  PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN | /* flags */
+  PROTOPT_USERPWDCTRL
+};
+
+#ifdef USE_WEBSOCKETS
+const struct Curl_handler Curl_handler_wss = {
+  "WSS",                                /* scheme */
+  ws_setup_conn,                        /* setup_connection */
+  Curl_http,                            /* do_it */
+  Curl_http_done,                       /* done */
+  ZERO_NULL,                            /* do_more */
+  Curl_http_connect,                    /* connect_it */
+  https_connecting,                     /* connecting */
+  ZERO_NULL,                            /* doing */
+  https_getsock,                        /* proto_getsock */
+  http_getsock_do,                      /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  ZERO_NULL,                            /* perform_getsock */
+  ZERO_NULL,                            /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  ZERO_NULL,                            /* connection_check */
+  ZERO_NULL,                            /* attach connection */
+  PORT_HTTPS,                           /* defport */
+  CURLPROTO_WSS,                        /* protocol */
+  CURLPROTO_HTTP,                       /* family */
+  PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | /* flags */
   PROTOPT_USERPWDCTRL
 };
 #endif
 
+#endif
+
 static CURLcode http_setup_conn(struct Curl_easy *data,
                                 struct connectdata *conn)
 {
@@ -204,6 +263,16 @@ static CURLcode http_setup_conn(struct Curl_easy *data,
   return CURLE_OK;
 }
 
+#ifdef USE_WEBSOCKETS
+static CURLcode ws_setup_conn(struct Curl_easy *data,
+                              struct connectdata *conn)
+{
+  /* websockets is 1.1 only (for now) */
+  data->state.httpwant = CURL_HTTP_VERSION_1_1;
+  return http_setup_conn(data, conn);
+}
+#endif
+
 #ifndef CURL_DISABLE_PROXY
 /*
  * checkProxyHeaders() checks the linked list of custom proxy headers
@@ -216,10 +285,10 @@ static CURLcode http_setup_conn(struct Curl_easy *data,
  */
 char *Curl_checkProxyheaders(struct Curl_easy *data,
                              const struct connectdata *conn,
-                             const char *thisheader)
+                             const char *thisheader,
+                             const size_t thislen)
 {
   struct curl_slist *head;
-  size_t thislen = strlen(thisheader);
 
   for(head = (conn->bits.proxy && data->set.sep_headers) ?
         data->set.proxyheaders : data->set.headers;
@@ -233,7 +302,7 @@ char *Curl_checkProxyheaders(struct Curl_easy *data,
 }
 #else
 /* disabled */
-#define Curl_checkProxyheaders(x,y,z) NULL
+#define Curl_checkProxyheaders(x,y,z,a) NULL
 #endif
 
 /*
@@ -327,7 +396,7 @@ static CURLcode http_output_basic(struct Curl_easy *data, bool proxy)
   if(!out)
     return CURLE_OUT_OF_MEMORY;
 
-  result = Curl_base64_encode(data, out, strlen(out), &authorization, &size);
+  result = Curl_base64_encode(out, strlen(out), &authorization, &size);
   if(result)
     goto fail;
 
@@ -588,7 +657,7 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data)
   if(data->state.authproblem)
     return data->set.http_fail_on_error?CURLE_HTTP_RETURNED_ERROR:CURLE_OK;
 
-  if((conn->bits.user_passwd || data->set.str[STRING_BEARER]) &&
+  if((data->state.aptr.user || data->set.str[STRING_BEARER]) &&
      ((data->req.httpcode == 401) ||
       (conn->bits.authneg && data->req.httpcode < 300))) {
     pickhost = pickoneauth(&data->state.authhost, authmask);
@@ -667,6 +736,7 @@ output_auth_headers(struct Curl_easy *data,
 {
   const char *auth = NULL;
   CURLcode result = CURLE_OK;
+  (void)conn;
 
 #ifdef CURL_DISABLE_CRYPTO_AUTH
   (void)request;
@@ -725,10 +795,10 @@ output_auth_headers(struct Curl_easy *data,
     if(
 #ifndef CURL_DISABLE_PROXY
       (proxy && conn->bits.proxy_user_passwd &&
-       !Curl_checkProxyheaders(data, conn, "Proxy-authorization")) ||
+       !Curl_checkProxyheaders(data, conn, STRCONST("Proxy-authorization"))) ||
 #endif
-      (!proxy && conn->bits.user_passwd &&
-       !Curl_checkheaders(data, "Authorization"))) {
+      (!proxy && data->state.aptr.user &&
+       !Curl_checkheaders(data, STRCONST("Authorization")))) {
       auth = "Basic";
       result = http_output_basic(data, proxy);
       if(result)
@@ -742,7 +812,7 @@ output_auth_headers(struct Curl_easy *data,
   if(authstatus->picked == CURLAUTH_BEARER) {
     /* Bearer */
     if((!proxy && data->set.str[STRING_BEARER] &&
-        !Curl_checkheaders(data, "Authorization"))) {
+        !Curl_checkheaders(data, STRCONST("Authorization")))) {
       auth = "Bearer";
       result = http_output_bearer(data);
       if(result)
@@ -811,7 +881,7 @@ Curl_http_output_auth(struct Curl_easy *data,
 #ifndef CURL_DISABLE_PROXY
     (conn->bits.httpproxy && conn->bits.proxy_user_passwd) ||
 #endif
-     conn->bits.user_passwd || data->set.str[STRING_BEARER])
+     data->state.aptr.user || data->set.str[STRING_BEARER])
     /* continue please */;
   else {
     authhost->done = TRUE;
@@ -847,17 +917,14 @@ Curl_http_output_auth(struct Curl_easy *data,
        with it */
     authproxy->done = TRUE;
 
-  /* To prevent the user+password to get sent to other than the original
-     host due to a location-follow, we do some weirdo checks here */
-  if(!data->state.this_is_a_follow ||
+  /* To prevent the user+password to get sent to other than the original host
+     due to a location-follow */
+  if(Curl_auth_allowed_to_host(data)
 #ifndef CURL_DISABLE_NETRC
-     conn->bits.netrc ||
+     || conn->bits.netrc
 #endif
-     !data->state.first_host ||
-     data->set.allow_auth_to_other_hosts ||
-     strcasecompare(data->state.first_host, conn->host.name)) {
+    )
     result = output_auth_headers(data, conn, authhost, request, path, FALSE);
-  }
   else
     authhost->done = TRUE;
 
@@ -1143,7 +1210,7 @@ static bool http_should_fail(struct Curl_easy *data)
   ** Either we're not authenticating, or we're supposed to
   ** be authenticating something else.  This is an error.
   */
-  if((httpcode == 401) && !data->conn->bits.user_passwd)
+  if((httpcode == 401) && !data->state.aptr.user)
     return TRUE;
 #ifndef CURL_DISABLE_PROXY
   if((httpcode == 407) && !data->conn->bits.proxy_user_passwd)
@@ -1251,14 +1318,6 @@ CURLcode Curl_buffer_send(struct dynbuf *in,
 
   DEBUGASSERT(size > (size_t)included_body_bytes);
 
-  result = Curl_convert_to_network(data, ptr, headersize);
-  /* Curl_convert_to_network calls failf if unsuccessful */
-  if(result) {
-    /* conversion failed, free memory and return to the caller */
-    Curl_dyn_free(in);
-    return result;
-  }
-
   if((conn->handler->flags & PROTOPT_SSL
 #ifndef CURL_DISABLE_PROXY
       || conn->http_proxy.proxytype == CURLPROXY_HTTPS
@@ -1425,18 +1484,22 @@ CURLcode Curl_buffer_send(struct dynbuf *in,
 bool
 Curl_compareheader(const char *headerline, /* line to check */
                    const char *header,  /* header keyword _with_ colon */
-                   const char *content) /* content string to find */
+                   const size_t hlen,   /* len of the keyword in bytes */
+                   const char *content, /* content string to find */
+                   const size_t clen)   /* len of the content in bytes */
 {
   /* RFC2616, section 4.2 says: "Each header field consists of a name followed
    * by a colon (":") and the field value. Field names are case-insensitive.
    * The field value MAY be preceded by any amount of LWS, though a single SP
    * is preferred." */
 
-  size_t hlen = strlen(header);
-  size_t clen;
   size_t len;
   const char *start;
   const char *end;
+  DEBUGASSERT(hlen);
+  DEBUGASSERT(clen);
+  DEBUGASSERT(header);
+  DEBUGASSERT(content);
 
   if(!strncasecompare(headerline, header, hlen))
     return FALSE; /* doesn't start with header */
@@ -1460,7 +1523,6 @@ Curl_compareheader(const char *headerline, /* line to check */
   }
 
   len = end-start; /* length of the content part of the input line */
-  clen = strlen(content); /* length of the word to find */
 
   /* find the content string in the rest of the line */
   for(; len >= clen; len--, start++) {
@@ -1509,7 +1571,7 @@ CURLcode Curl_http_connect(struct Curl_easy *data, bool *done)
   }
 #endif
 
-  if(conn->given->protocol & CURLPROTO_HTTPS) {
+  if(conn->given->flags & PROTOPT_SSL) {
     /* perform SSL initialization */
     result = https_connecting(data, done);
     if(result)
@@ -1546,7 +1608,7 @@ static CURLcode add_haproxy_protocol_header(struct Curl_easy *data)
 #ifdef USE_UNIX_SOCKETS
   if(data->conn->unix_domain_socket)
     /* the buffer is large enough to hold this! */
-    result = Curl_dyn_add(&req, "PROXY UNKNOWN\r\n");
+    result = Curl_dyn_addn(&req, STRCONST("PROXY UNKNOWN\r\n"));
   else {
 #endif
   /* Emit the correct prefix for IPv6 */
@@ -1634,6 +1696,7 @@ CURLcode Curl_http_done(struct Curl_easy *data,
   Curl_mime_cleanpart(&http->form);
   Curl_dyn_reset(&data->state.headerb);
   Curl_hyper_done(data);
+  Curl_ws_done(data);
 
   if(status)
     return status;
@@ -1713,13 +1776,13 @@ static CURLcode expect100(struct Curl_easy *data,
     /* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
        Expect: 100-continue to the headers which actually speeds up post
        operations (as there is one packet coming back from the web server) */
-    const char *ptr = Curl_checkheaders(data, "Expect");
+    const char *ptr = Curl_checkheaders(data, STRCONST("Expect"));
     if(ptr) {
       data->state.expect100header =
-        Curl_compareheader(ptr, "Expect:", "100-continue");
+        Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue"));
     }
     else {
-      result = Curl_dyn_add(req, "Expect: 100-continue\r\n");
+      result = Curl_dyn_addn(req, STRCONST("Expect: 100-continue\r\n"));
       if(!result)
         data->state.expect100header = TRUE;
     }
@@ -1772,7 +1835,7 @@ CURLcode Curl_http_compile_trailers(struct curl_slist *trailers,
         return result;
     }
     else
-      infof(handle, "Malformatted trailing header ! Skipping trailer.");
+      infof(handle, "Malformatted trailing header, skipping trailer");
     trailers = trailers->next;
   }
   result = Curl_dyn_add(b, endofline_network);
@@ -1867,7 +1930,7 @@ CURLcode Curl_add_custom_headers(struct Curl_easy *data,
           ptr = optr;
         }
       }
-      if(ptr) {
+      if(ptr && (ptr != headers->data)) {
         /* we require a colon for this to be a true header */
 
         ptr++; /* pass the colon */
@@ -1910,10 +1973,7 @@ CURLcode Curl_add_custom_headers(struct Curl_easy *data,
                    checkprefix("Cookie:", compare)) &&
                   /* be careful of sending this potentially sensitive header to
                      other hosts */
-                  (data->state.this_is_a_follow &&
-                   data->state.first_host &&
-                   !data->set.allow_auth_to_other_hosts &&
-                   !strcasecompare(data->state.first_host, conn->host.name)))
+                  !Curl_auth_allowed_to_host(data))
             ;
           else {
 #ifdef USE_HYPER
@@ -1949,6 +2009,7 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data,
   CURLcode result;
   char datestr[80];
   const char *condp;
+  size_t len;
 
   if(data->set.timecondition == CURL_TIMECOND_NONE)
     /* no condition was asked for */
@@ -1967,16 +2028,19 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data,
 
   case CURL_TIMECOND_IFMODSINCE:
     condp = "If-Modified-Since";
+    len = 17;
     break;
   case CURL_TIMECOND_IFUNMODSINCE:
     condp = "If-Unmodified-Since";
+    len = 19;
     break;
   case CURL_TIMECOND_LASTMOD:
     condp = "Last-Modified";
+    len = 13;
     break;
   }
 
-  if(Curl_checkheaders(data, condp)) {
+  if(Curl_checkheaders(data, condp, len)) {
     /* A custom header was specified; it will be sent instead. */
     return CURLE_OK;
   }
@@ -2022,7 +2086,7 @@ CURLcode Curl_add_timecondition(struct Curl_easy *data,
 void Curl_http_method(struct Curl_easy *data, struct connectdata *conn,
                       const char **method, Curl_HttpReq *reqp)
 {
-  Curl_HttpReq httpreq = data->state.httpreq;
+  Curl_HttpReq httpreq = (Curl_HttpReq)data->state.httpreq;
   const char *request;
   if((conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_FTP)) &&
      data->set.upload)
@@ -2065,7 +2129,7 @@ CURLcode Curl_http_useragent(struct Curl_easy *data)
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(data, "User-Agent")) {
+  if(Curl_checkheaders(data, STRCONST("User-Agent"))) {
     free(data->state.aptr.uagent);
     data->state.aptr.uagent = NULL;
   }
@@ -2085,10 +2149,11 @@ CURLcode Curl_http_host(struct Curl_easy *data, struct connectdata *conn)
       return CURLE_OUT_OF_MEMORY;
 
     data->state.first_remote_port = conn->remote_port;
+    data->state.first_remote_protocol = conn->handler->protocol;
   }
   Curl_safefree(data->state.aptr.host);
 
-  ptr = Curl_checkheaders(data, "Host");
+  ptr = Curl_checkheaders(data, STRCONST("Host"));
   if(ptr && (!data->state.this_is_a_follow ||
              strcasecompare(data->state.first_host, conn->host.name))) {
 #if !defined(CURL_DISABLE_COOKIES)
@@ -2140,9 +2205,9 @@ CURLcode Curl_http_host(struct Curl_easy *data, struct connectdata *conn)
        [brackets] if the host name is a plain IPv6-address. RFC2732-style. */
     const char *host = conn->host.name;
 
-    if(((conn->given->protocol&CURLPROTO_HTTPS) &&
+    if(((conn->given->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS)) &&
         (conn->remote_port == PORT_HTTPS)) ||
-       ((conn->given->protocol&CURLPROTO_HTTP) &&
+       ((conn->given->protocol&(CURLPROTO_HTTP|CURLPROTO_WS)) &&
         (conn->remote_port == PORT_HTTP)) )
       /* if(HTTPS on port 443) OR (HTTP on port 80) then don't include
          the port number in the host string */
@@ -2305,7 +2370,7 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn,
 
 #ifndef CURL_DISABLE_MIME
   if(http->sendit) {
-    const char *cthdr = Curl_checkheaders(data, "Content-Type");
+    const char *cthdr = Curl_checkheaders(data, STRCONST("Content-Type"));
 
     /* Read and seek body only. */
     http->sendit->flags |= MIME_BODY_ONLY;
@@ -2330,11 +2395,12 @@ CURLcode Curl_http_body(struct Curl_easy *data, struct connectdata *conn,
   }
 #endif
 
-  ptr = Curl_checkheaders(data, "Transfer-Encoding");
+  ptr = Curl_checkheaders(data, STRCONST("Transfer-Encoding"));
   if(ptr) {
     /* Some kind of TE is requested, check if 'chunked' is chosen */
     data->req.upload_chunky =
-      Curl_compareheader(ptr, "Transfer-Encoding:", "chunked");
+      Curl_compareheader(ptr,
+                         STRCONST("Transfer-Encoding:"), STRCONST("chunked"));
   }
   else {
     if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
@@ -2394,7 +2460,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
       http->postsize = data->state.infilesize;
 
     if((http->postsize != -1) && !data->req.upload_chunky &&
-       (conn->bits.authneg || !Curl_checkheaders(data, "Content-Length"))) {
+       (conn->bits.authneg ||
+        !Curl_checkheaders(data, STRCONST("Content-Length")))) {
       /* only add Content-Length if not uploading chunked */
       result = Curl_dyn_addf(r, "Content-Length: %" CURL_FORMAT_CURL_OFF_T
                              "\r\n", http->postsize);
@@ -2409,7 +2476,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
     }
 
     /* end of headers */
-    result = Curl_dyn_add(r, "\r\n");
+    result = Curl_dyn_addn(r, STRCONST("\r\n"));
     if(result)
       return result;
 
@@ -2434,7 +2501,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
     /* This is form posting using mime data. */
     if(conn->bits.authneg) {
       /* nothing to post! */
-      result = Curl_dyn_add(r, "Content-Length: 0\r\n\r\n");
+      result = Curl_dyn_addn(r, STRCONST("Content-Length: 0\r\n\r\n"));
       if(result)
         return result;
 
@@ -2454,7 +2521,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
        we don't upload data chunked, as RFC2616 forbids us to set both
        kinds of headers (Transfer-Encoding: chunked and Content-Length) */
     if(http->postsize != -1 && !data->req.upload_chunky &&
-       (conn->bits.authneg || !Curl_checkheaders(data, "Content-Length"))) {
+       (conn->bits.authneg ||
+        !Curl_checkheaders(data, STRCONST("Content-Length")))) {
       /* we allow replacing this header if not during auth negotiation,
          although it isn't very wise to actually set your own */
       result = Curl_dyn_addf(r,
@@ -2481,10 +2549,10 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
        the somewhat bigger ones we allow the app to disable it. Just make
        sure that the expect100header is always set to the preferred value
        here. */
-    ptr = Curl_checkheaders(data, "Expect");
+    ptr = Curl_checkheaders(data, STRCONST("Expect"));
     if(ptr) {
       data->state.expect100header =
-        Curl_compareheader(ptr, "Expect:", "100-continue");
+        Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue"));
     }
     else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) {
       result = expect100(data, conn, r);
@@ -2495,7 +2563,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
       data->state.expect100header = FALSE;
 
     /* make the request end in a true CRLF */
-    result = Curl_dyn_add(r, "\r\n");
+    result = Curl_dyn_addn(r, STRCONST("\r\n"));
     if(result)
       return result;
 
@@ -2534,7 +2602,8 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
        we don't upload data chunked, as RFC2616 forbids us to set both
        kinds of headers (Transfer-Encoding: chunked and Content-Length) */
     if((http->postsize != -1) && !data->req.upload_chunky &&
-       (conn->bits.authneg || !Curl_checkheaders(data, "Content-Length"))) {
+       (conn->bits.authneg ||
+        !Curl_checkheaders(data, STRCONST("Content-Length")))) {
       /* we allow replacing this header if not during auth negotiation,
          although it isn't very wise to actually set your own */
       result = Curl_dyn_addf(r, "Content-Length: %" CURL_FORMAT_CURL_OFF_T
@@ -2543,9 +2612,9 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
         return result;
     }
 
-    if(!Curl_checkheaders(data, "Content-Type")) {
-      result = Curl_dyn_add(r, "Content-Type: application/"
-                            "x-www-form-urlencoded\r\n");
+    if(!Curl_checkheaders(data, STRCONST("Content-Type"))) {
+      result = Curl_dyn_addn(r, STRCONST("Content-Type: application/"
+                                         "x-www-form-urlencoded\r\n"));
       if(result)
         return result;
     }
@@ -2554,10 +2623,10 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
        the somewhat bigger ones we allow the app to disable it. Just make
        sure that the expect100header is always set to the preferred value
        here. */
-    ptr = Curl_checkheaders(data, "Expect");
+    ptr = Curl_checkheaders(data, STRCONST("Expect"));
     if(ptr) {
       data->state.expect100header =
-        Curl_compareheader(ptr, "Expect:", "100-continue");
+        Curl_compareheader(ptr, STRCONST("Expect:"), STRCONST("100-continue"));
     }
     else if(http->postsize > EXPECT_100_THRESHOLD || http->postsize < 0) {
       result = expect100(data, conn, r);
@@ -2584,7 +2653,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
            get the data duplicated with malloc() and family. */
 
         /* end of headers! */
-        result = Curl_dyn_add(r, "\r\n");
+        result = Curl_dyn_addn(r, STRCONST("\r\n"));
         if(result)
           return result;
 
@@ -2606,12 +2675,12 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
               result = Curl_dyn_addn(r, data->set.postfields,
                                      (size_t)http->postsize);
               if(!result)
-                result = Curl_dyn_add(r, "\r\n");
+                result = Curl_dyn_addn(r, STRCONST("\r\n"));
               included_body += 2;
             }
           }
           if(!result) {
-            result = Curl_dyn_add(r, "\x30\x0d\x0a\x0d\x0a");
+            result = Curl_dyn_addn(r, STRCONST("\x30\x0d\x0a\x0d\x0a"));
             /* 0  CR  LF  CR  LF */
             included_body += 5;
           }
@@ -2634,7 +2703,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
         Curl_pgrsSetUploadSize(data, http->postsize);
 
         /* end of headers! */
-        result = Curl_dyn_add(r, "\r\n");
+        result = Curl_dyn_addn(r, STRCONST("\r\n"));
         if(result)
           return result;
       }
@@ -2643,14 +2712,14 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
 #endif
     {
        /* end of headers! */
-      result = Curl_dyn_add(r, "\r\n");
+      result = Curl_dyn_addn(r, STRCONST("\r\n"));
       if(result)
         return result;
 
       if(data->req.upload_chunky && conn->bits.authneg) {
         /* Chunky upload is selected and we're negotiating auth still, send
            end-of-data only */
-        result = Curl_dyn_add(r, (char *)"\x30\x0d\x0a\x0d\x0a");
+        result = Curl_dyn_addn(r, (char *)STRCONST("\x30\x0d\x0a\x0d\x0a"));
         /* 0  CR  LF  CR  LF */
         if(result)
           return result;
@@ -2678,7 +2747,7 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
     break;
 
   default:
-    result = Curl_dyn_add(r, "\r\n");
+    result = Curl_dyn_addn(r, STRCONST("\r\n"));
     if(result)
       return result;
 
@@ -2687,6 +2756,13 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
                               FIRSTSOCKET);
     if(result)
       failf(data, "Failed sending HTTP request");
+#ifdef USE_WEBSOCKETS
+    else if((conn->handler->protocol & (CURLPROTO_WS|CURLPROTO_WSS)) &&
+            !(data->set.connect_only))
+      /* Set up the transfer for two-way since without CONNECT_ONLY set, this
+         request probably wants to send data too post upgrade */
+      Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, FIRSTSOCKET);
+#endif
     else
       /* HTTP GET/HEAD download: */
       Curl_setup_transfer(data, FIRSTSOCKET, -1, TRUE, -1);
@@ -2696,13 +2772,16 @@ CURLcode Curl_http_bodysend(struct Curl_easy *data, struct connectdata *conn,
 }
 
 #if !defined(CURL_DISABLE_COOKIES)
+
 CURLcode Curl_http_cookies(struct Curl_easy *data,
                            struct connectdata *conn,
                            struct dynbuf *r)
 {
   CURLcode result = CURLE_OK;
   char *addcookies = NULL;
-  if(data->set.str[STRING_COOKIE] && !Curl_checkheaders(data, "Cookie"))
+  bool linecap = FALSE;
+  if(data->set.str[STRING_COOKIE] &&
+     !Curl_checkheaders(data, STRCONST("Cookie")))
     addcookies = data->set.str[STRING_COOKIE];
 
   if(data->cookies || addcookies) {
@@ -2713,12 +2792,12 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
       const char *host = data->state.aptr.cookiehost ?
         data->state.aptr.cookiehost : conn->host.name;
       const bool secure_context =
-        conn->handler->protocol&CURLPROTO_HTTPS ||
+        conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
         strcasecompare("localhost", host) ||
         !strcmp(host, "127.0.0.1") ||
         !strcmp(host, "[::1]") ? TRUE : FALSE;
       Curl_share_lock(data, CURL_LOCK_DATA_COOKIE, CURL_LOCK_ACCESS_SINGLE);
-      co = Curl_cookie_getlist(data->cookies, host, data->state.up.path,
+      co = Curl_cookie_getlist(data, data->cookies, host, data->state.up.path,
                                secure_context);
       Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
     }
@@ -2728,10 +2807,17 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
       while(co) {
         if(co->value) {
           if(0 == count) {
-            result = Curl_dyn_add(r, "Cookie: ");
+            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) {
+            infof(data, "Restricted outgoing cookies due to header size, "
+                  "'%s' not sent", co->name);
+            linecap = TRUE;
+            break;
+          }
           result = Curl_dyn_addf(r, "%s%s=%s", count?"; ":"",
                                  co->name, co->value);
           if(result)
@@ -2742,16 +2828,16 @@ CURLcode Curl_http_cookies(struct Curl_easy *data,
       }
       Curl_cookie_freelist(store);
     }
-    if(addcookies && !result) {
+    if(addcookies && !result && !linecap) {
       if(!count)
-        result = Curl_dyn_add(r, "Cookie: ");
+        result = Curl_dyn_addn(r, STRCONST("Cookie: "));
       if(!result) {
         result = Curl_dyn_addf(r, "%s%s", count?"; ":"", addcookies);
         count++;
       }
     }
     if(count && !result)
-      result = Curl_dyn_add(r, "\r\n");
+      result = Curl_dyn_addn(r, STRCONST("\r\n"));
 
     if(result)
       return result;
@@ -2770,14 +2856,14 @@ CURLcode Curl_http_range(struct Curl_easy *data,
      * ones if any such are specified.
      */
     if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
-       !Curl_checkheaders(data, "Range")) {
+       !Curl_checkheaders(data, STRCONST("Range"))) {
       /* if a line like this was already allocated, free the previous one */
       free(data->state.aptr.rangeline);
       data->state.aptr.rangeline = aprintf("Range: bytes=%s\r\n",
                                            data->state.range);
     }
     else if((httpreq == HTTPREQ_POST || httpreq == HTTPREQ_PUT) &&
-            !Curl_checkheaders(data, "Content-Range")) {
+            !Curl_checkheaders(data, STRCONST("Content-Range"))) {
 
       /* if a line like this was already allocated, free the previous one */
       free(data->state.aptr.rangeline);
@@ -2923,7 +3009,7 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data,
       /* The resume point is at the end of file, consider this fine even if it
          doesn't allow resume from here. */
       infof(data, "The entire document is already downloaded");
-      connclose(conn, "already downloaded");
+      streamclose(conn, "already downloaded");
       /* Abort download */
       k->keepon &= ~KEEP_RECV;
       *done = TRUE;
@@ -2948,10 +3034,10 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data,
       /* We're simulating a http 304 from server so we return
          what should have been returned from the server */
       data->info.httpcode = 304;
-      infof(data, "Simulate a HTTP 304 response!");
+      infof(data, "Simulate a HTTP 304 response");
       /* we abort the transfer before it is completed == we ruin the
          re-use ability. Close the connection */
-      connclose(conn, "Simulated 304 handling");
+      streamclose(conn, "Simulated 304 handling");
       return CURLE_OK;
     }
   } /* we have a time condition */
@@ -2962,14 +3048,14 @@ CURLcode Curl_http_firstwrite(struct Curl_easy *data,
 #ifdef HAVE_LIBZ
 CURLcode Curl_transferencode(struct Curl_easy *data)
 {
-  if(!Curl_checkheaders(data, "TE") &&
+  if(!Curl_checkheaders(data, STRCONST("TE")) &&
      data->set.http_transfer_encoding) {
     /* When we are to insert a TE: header in the request, we must also insert
        TE in a Connection: header, so we need to merge the custom provided
        Connection: header and prevent the original to get sent. Note that if
        the user has inserted his/her own TE: header we don't do this magic
        but then assume that the user will handle it all! */
-    char *cptr = Curl_checkheaders(data, "Connection");
+    char *cptr = Curl_checkheaders(data, STRCONST("Connection"));
 #define TE_HEADER "TE: gzip\r\n"
 
     Curl_safefree(data->state.aptr.te);
@@ -3019,7 +3105,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   if(conn->transport != TRNSPRT_QUIC) {
     if(conn->httpversion < 20) { /* unless the connection is re-used and
                                     already http2 */
-      switch(conn->negnpn) {
+      switch(conn->alpn) {
       case CURL_HTTP_VERSION_2:
         conn->httpversion = 20; /* we know we're on HTTP/2 now */
 
@@ -3089,13 +3175,13 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   }
 
   Curl_safefree(data->state.aptr.ref);
-  if(data->state.referer && !Curl_checkheaders(data, "Referer")) {
+  if(data->state.referer && !Curl_checkheaders(data, STRCONST("Referer"))) {
     data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
     if(!data->state.aptr.ref)
       return CURLE_OUT_OF_MEMORY;
   }
 
-  if(!Curl_checkheaders(data, "Accept-Encoding") &&
+  if(!Curl_checkheaders(data, STRCONST("Accept-Encoding")) &&
      data->set.str[STRING_ENCODING]) {
     Curl_safefree(data->state.aptr.accept_encoding);
     data->state.aptr.accept_encoding =
@@ -3117,7 +3203,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   if(result)
     return result;
 
-  p_accept = Curl_checkheaders(data, "Accept")?NULL:"Accept: */*\r\n";
+  p_accept = Curl_checkheaders(data,
+                               STRCONST("Accept"))?NULL:"Accept: */*\r\n";
 
   result = Curl_http_resume(data, conn, httpreq);
   if(result)
@@ -3147,7 +3234,7 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   }
 
 #ifndef CURL_DISABLE_ALTSVC
-  if(conn->bits.altused && !Curl_checkheaders(data, "Alt-Used")) {
+  if(conn->bits.altused && !Curl_checkheaders(data, STRCONST("Alt-Used"))) {
     altused = aprintf("Alt-Used: %s:%d\r\n",
                       conn->conn_to_host.name, conn->conn_to_port);
     if(!altused) {
@@ -3194,8 +3281,10 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
 #ifndef CURL_DISABLE_PROXY
                   (conn->bits.httpproxy &&
                    !conn->bits.tunnel_proxy &&
-                   !Curl_checkheaders(data, "Proxy-Connection") &&
-                   !Curl_checkProxyheaders(data, conn, "Proxy-Connection"))?
+                   !Curl_checkheaders(data, STRCONST("Proxy-Connection")) &&
+                   !Curl_checkProxyheaders(data,
+                                           conn,
+                                           STRCONST("Proxy-Connection")))?
                   "Proxy-Connection: Keep-Alive\r\n":"",
 #else
                   "",
@@ -3228,6 +3317,8 @@ CURLcode Curl_http(struct Curl_easy *data, bool *done)
   }
 
   result = Curl_http_cookies(data, conn, &req);
+  if(!result && conn->handler->protocol&(CURLPROTO_WS|CURLPROTO_WSS))
+    result = Curl_ws_request(data, &req);
   if(!result)
     result = Curl_add_timecondition(data, &req);
   if(!result)
@@ -3308,20 +3399,6 @@ checkhttpprefix(struct Curl_easy *data,
   struct curl_slist *head = data->set.http200aliases;
   statusline rc = STATUS_BAD;
   statusline onmatch = len >= 5? STATUS_DONE : STATUS_UNKNOWN;
-#ifdef CURL_DOES_CONVERSIONS
-  /* convert from the network encoding using a scratch area */
-  char *scratch = strdup(s);
-  if(!scratch) {
-    failf(data, "Failed to allocate memory for conversion!");
-    return FALSE; /* can't return CURLE_OUT_OF_MEMORY so return FALSE */
-  }
-  if(CURLE_OK != Curl_convert_from_network(data, scratch, strlen(s) + 1)) {
-    /* Curl_convert_from_network calls failf if unsuccessful */
-    free(scratch);
-    return FALSE; /* can't return CURLE_foobar so return FALSE */
-  }
-  s = scratch;
-#endif /* CURL_DOES_CONVERSIONS */
 
   while(head) {
     if(checkprefixmax(head->data, s, len)) {
@@ -3334,9 +3411,6 @@ checkhttpprefix(struct Curl_easy *data,
   if((rc != STATUS_DONE) && (checkprefixmax("HTTP/", s, len)))
     rc = onmatch;
 
-#ifdef CURL_DOES_CONVERSIONS
-  free(scratch);
-#endif /* CURL_DOES_CONVERSIONS */
   return rc;
 }
 
@@ -3347,26 +3421,9 @@ checkrtspprefix(struct Curl_easy *data,
 {
   statusline result = STATUS_BAD;
   statusline onmatch = len >= 5? STATUS_DONE : STATUS_UNKNOWN;
-
-#ifdef CURL_DOES_CONVERSIONS
-  /* convert from the network encoding using a scratch area */
-  char *scratch = strdup(s);
-  if(!scratch) {
-    failf(data, "Failed to allocate memory for conversion!");
-    return FALSE; /* can't return CURLE_OUT_OF_MEMORY so return FALSE */
-  }
-  if(CURLE_OK != Curl_convert_from_network(data, scratch, strlen(s) + 1)) {
-    /* Curl_convert_from_network calls failf if unsuccessful */
-    result = FALSE; /* can't return CURLE_foobar so return FALSE */
-  }
-  else if(checkprefixmax("RTSP/", scratch, len))
-    result = onmatch;
-  free(scratch);
-#else
   (void)data; /* unused */
   if(checkprefixmax("RTSP/", s, len))
     result = onmatch;
-#endif /* CURL_DOES_CONVERSIONS */
 
   return result;
 }
@@ -3412,7 +3469,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
         return CURLE_FILESIZE_EXCEEDED;
       }
       streamclose(conn, "overflow content-length");
-      infof(data, "Overflow Content-Length: value!");
+      infof(data, "Overflow Content-Length: value");
     }
     else {
       /* negative or just rubbish - bad HTTP */
@@ -3436,7 +3493,9 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
 #ifndef CURL_DISABLE_PROXY
   else if((conn->httpversion == 10) &&
           conn->bits.httpproxy &&
-          Curl_compareheader(headp, "Proxy-Connection:", "keep-alive")) {
+          Curl_compareheader(headp,
+                             STRCONST("Proxy-Connection:"),
+                             STRCONST("keep-alive"))) {
     /*
      * When a HTTP/1.0 reply comes when using a proxy, the
      * 'Proxy-Connection: keep-alive' line tells us the
@@ -3444,21 +3503,25 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
      * Default action for 1.0 is to close.
      */
     connkeep(conn, "Proxy-Connection keep-alive"); /* don't close */
-    infof(data, "HTTP/1.0 proxy connection set to keep alive!");
+    infof(data, "HTTP/1.0 proxy connection set to keep alive");
   }
   else if((conn->httpversion == 11) &&
           conn->bits.httpproxy &&
-          Curl_compareheader(headp, "Proxy-Connection:", "close")) {
+          Curl_compareheader(headp,
+                             STRCONST("Proxy-Connection:"),
+                             STRCONST("close"))) {
     /*
      * We get a HTTP/1.1 response from a proxy and it says it'll
      * close down after this transfer.
      */
     connclose(conn, "Proxy-Connection: asked to close after done");
-    infof(data, "HTTP/1.1 proxy connection set close!");
+    infof(data, "HTTP/1.1 proxy connection set close");
   }
 #endif
   else if((conn->httpversion == 10) &&
-          Curl_compareheader(headp, "Connection:", "keep-alive")) {
+          Curl_compareheader(headp,
+                             STRCONST("Connection:"),
+                             STRCONST("keep-alive"))) {
     /*
      * A HTTP/1.0 reply with the 'Connection: keep-alive' line
      * tells us the connection will be kept alive for our
@@ -3466,9 +3529,10 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
      *
      * [RFC2068, section 19.7.1] */
     connkeep(conn, "Connection keep-alive");
-    infof(data, "HTTP/1.0 connection set to keep alive!");
+    infof(data, "HTTP/1.0 connection set to keep alive");
   }
-  else if(Curl_compareheader(headp, "Connection:", "close")) {
+  else if(Curl_compareheader(headp,
+                             STRCONST("Connection:"), STRCONST("close"))) {
     /*
      * [RFC 2616, section 8.1.2.1]
      * "Connection: close" is HTTP/1.1 language and means that
@@ -3519,15 +3583,15 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
   else if(checkprefix("Retry-After:", headp)) {
     /* Retry-After = HTTP-date / delay-seconds */
     curl_off_t retry_after = 0; /* zero for unknown or "now" */
-    time_t date = Curl_getdate_capped(headp + strlen("Retry-After:"));
-    if(-1 == date) {
-      /* not a date, try it as a decimal number */
-      (void)curlx_strtoofft(headp + strlen("Retry-After:"),
-                            NULL, 10, &retry_after);
+    /* Try it as a decimal number, if it works it is not a date */
+    (void)curlx_strtoofft(headp + strlen("Retry-After:"),
+                          NULL, 10, &retry_after);
+    if(!retry_after) {
+      time_t date = Curl_getdate_capped(headp + strlen("Retry-After:"));
+      if(-1 != date)
+        /* convert date to number of seconds into the future */
+        retry_after = date - time(NULL);
     }
-    else
-      /* convert date to number of seconds into the future */
-      retry_after = date - time(NULL);
     data->info.retry_after = retry_after; /* store it */
   }
   else if(!k->http_bodyless && checkprefix("Content-Range:", headp)) {
@@ -3539,7 +3603,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
        The second format was added since Sun's webserver
        JavaWebServer/1.1.1 obviously sends the header this way!
        The third added since some servers use that!
-       The forth means the requested range was unsatisfied.
+       The fourth means the requested range was unsatisfied.
     */
 
     char *ptr = headp + strlen("Content-Range:");
@@ -3567,7 +3631,7 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
     const char *host = data->state.aptr.cookiehost?
       data->state.aptr.cookiehost:conn->host.name;
     const bool secure_context =
-      conn->handler->protocol&CURLPROTO_HTTPS ||
+      conn->handler->protocol&(CURLPROTO_HTTPS|CURLPROTO_WSS) ||
       strcasecompare("localhost", host) ||
       !strcmp(host, "127.0.0.1") ||
       !strcmp(host, "[::1]") ? TRUE : FALSE;
@@ -3651,7 +3715,14 @@ CURLcode Curl_http_header(struct Curl_easy *data, struct connectdata *conn,
 #ifndef CURL_DISABLE_HSTS
   /* If enabled, the header is incoming and this is over HTTPS */
   else if(data->hsts && checkprefix("Strict-Transport-Security:", headp) &&
-          (conn->handler->flags & PROTOPT_SSL)) {
+          ((conn->handler->flags & PROTOPT_SSL) ||
+#ifdef CURLDEBUG
+           /* allow debug builds to circumvent the HTTPS restriction */
+           getenv("CURL_HSTS_HTTP")
+#else
+           0
+#endif
+            )) {
     CURLcode check =
       Curl_hsts_parse(data->hsts, data->state.up.hostname,
                       headp + strlen("Strict-Transport-Security:"));
@@ -3733,7 +3804,7 @@ CURLcode Curl_http_statusline(struct Curl_easy *data,
     connclose(conn, "HTTP/1.0 close after body");
   }
   else if(conn->httpversion == 20 ||
-          (k->upgr101 == UPGR101_REQUESTED && k->httpcode == 101)) {
+          (k->upgr101 == UPGR101_H2 && k->httpcode == 101)) {
     DEBUGF(infof(data, "HTTP/2 found, allow multiplexing"));
     /* HTTP/2 cannot avoid multiplexing since it is a core functionality
        of the protocol */
@@ -3795,6 +3866,34 @@ CURLcode Curl_http_size(struct Curl_easy *data)
   return CURLE_OK;
 }
 
+static CURLcode verify_header(struct Curl_easy *data)
+{
+  struct SingleRequest *k = &data->req;
+  const char *header = Curl_dyn_ptr(&data->state.headerb);
+  size_t hlen = Curl_dyn_len(&data->state.headerb);
+  char *ptr = memchr(header, 0x00, hlen);
+  if(ptr) {
+    /* this is bad, bail out */
+    failf(data, "Nul byte in header");
+    return CURLE_WEIRD_SERVER_REPLY;
+  }
+  if(k->headerline < 2)
+    /* the first "header" is the status-line and it has no colon */
+    return CURLE_OK;
+  if(((header[0] == ' ') || (header[0] == '\t')) && k->headerline > 2)
+    /* line folding, can't happen on line 2 */
+    ;
+  else {
+    ptr = memchr(header, ':', hlen);
+    if(!ptr) {
+      /* this is bad, bail out */
+      failf(data, "Header without colon");
+      return CURLE_WEIRD_SERVER_REPLY;
+    }
+  }
+  return CURLE_OK;
+}
+
 /*
  * Read any HTTP header lines from the server and pass them to the client app.
  */
@@ -3903,21 +4002,10 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
       size_t headerlen;
       /* Zero-length header line means end of headers! */
 
-#ifdef CURL_DOES_CONVERSIONS
-      if(0x0d == *headp) {
-        *headp = '\r'; /* replace with CR in host encoding */
-        headp++;       /* pass the CR byte */
-      }
-      if(0x0a == *headp) {
-        *headp = '\n'; /* replace with LF in host encoding */
-        headp++;       /* pass the LF byte */
-      }
-#else
       if('\r' == *headp)
         headp++; /* pass the \r byte */
       if('\n' == *headp)
         headp++; /* pass the \n byte */
-#endif /* CURL_DOES_CONVERSIONS */
 
       if(100 <= k->httpcode && 199 >= k->httpcode) {
         /* "A user agent MAY ignore unexpected 1xx status responses." */
@@ -3942,9 +4030,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
           break;
         case 101:
           /* Switching Protocols */
-          if(k->upgr101 == UPGR101_REQUESTED) {
+          if(k->upgr101 == UPGR101_H2) {
             /* Switching to HTTP/2 */
-            infof(data, "Received 101");
+            infof(data, "Received 101, Switching to HTTP/2");
             k->upgr101 = UPGR101_RECEIVED;
 
             /* we'll get more headers (HTTP/2 response) */
@@ -3958,8 +4046,21 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
               return result;
             *nread = 0;
           }
+#ifdef USE_WEBSOCKETS
+          else if(k->upgr101 == UPGR101_WS) {
+            /* verify the response */
+            result = Curl_ws_accept(data);
+            if(result)
+              return result;
+            k->header = FALSE; /* no more header to parse! */
+            if(data->set.connect_only) {
+              k->keepon &= ~KEEP_RECV; /* read no more content */
+              *nread = 0;
+            }
+          }
+#endif
           else {
-            /* Switching to another protocol (e.g. WebSocket) */
+            /* Not switching to another protocol */
             k->header = FALSE; /* no more header to parse! */
           }
           break;
@@ -4028,9 +4129,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
 
       /* now, only output this if the header AND body are requested:
        */
-      writetype = CLIENTWRITE_HEADER;
-      if(data->set.include_header)
-        writetype |= CLIENTWRITE_BODY;
+      writetype = CLIENTWRITE_HEADER |
+        (data->set.include_header ? CLIENTWRITE_BODY : 0) |
+        ((k->httpcode/100 == 1) ? CLIENTWRITE_1XX : 0);
 
       headerlen = Curl_dyn_len(&data->state.headerb);
       result = Curl_client_write(data, writetype,
@@ -4052,6 +4153,16 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
         return CURLE_HTTP_RETURNED_ERROR;
       }
 
+#ifdef USE_WEBSOCKETS
+      /* All non-101 HTTP status codes are bad when wanting to upgrade to
+         websockets */
+      if(data->req.upgr101 == UPGR101_WS) {
+        failf(data, "Refused WebSockets upgrade: %d", k->httpcode);
+        return CURLE_HTTP_RETURNED_ERROR;
+      }
+#endif
+
+
       data->req.deductheadercount =
         (100 <= k->httpcode && 199 >= k->httpcode)?data->req.headerbytecount:0;
 
@@ -4127,7 +4238,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
         if(conn->bits.rewindaftersend) {
           /* We rewind after a complete send, so thus we continue
              sending now */
-          infof(data, "Keep sending data to get tossed away!");
+          infof(data, "Keep sending data to get tossed away");
           k->keepon |= KEEP_SEND;
         }
       }
@@ -4183,36 +4294,18 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
      * Checks for special headers coming up.
      */
 
+    writetype = CLIENTWRITE_HEADER;
     if(!k->headerline++) {
       /* This is the first header, it MUST be the error code line
          or else we consider this to be the body right away! */
       int httpversion_major;
       int rtspversion_major;
       int nc = 0;
-#ifdef CURL_DOES_CONVERSIONS
-#define HEADER1 scratch
-#define SCRATCHSIZE 21
-      CURLcode res;
-      char scratch[SCRATCHSIZE + 1]; /* "HTTP/major.minor 123" */
-      /* We can't really convert this yet because we don't know if it's the
-         1st header line or the body.  So we do a partial conversion into a
-         scratch area, leaving the data at 'headp' as-is.
-      */
-      strncpy(&scratch[0], headp, SCRATCHSIZE);
-      scratch[SCRATCHSIZE] = 0; /* null terminate */
-      res = Curl_convert_from_network(data,
-                                      &scratch[0],
-                                      SCRATCHSIZE);
-      if(res)
-        /* Curl_convert_from_network calls failf if unsuccessful */
-        return res;
-#else
 #define HEADER1 headp /* no conversion needed, just use headp */
-#endif /* CURL_DOES_CONVERSIONS */
 
       if(conn->handler->protocol & PROTO_FAMILY_HTTP) {
         /*
-         * https://tools.ietf.org/html/rfc7230#section-3.1.2
+         * https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2
          *
          * The response code is always a three-digit number in HTTP as the spec
          * says. We allow any three-digit number here, but we cannot make
@@ -4254,10 +4347,10 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
           switch(httpversion) {
           case 10:
           case 11:
-#if defined(USE_NGHTTP2) || defined(USE_HYPER)
+#ifdef USE_HTTP2
           case 20:
 #endif
-#if defined(ENABLE_QUIC)
+#ifdef ENABLE_QUIC
           case 30:
 #endif
             conn->httpversion = (unsigned char)httpversion;
@@ -4326,6 +4419,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
         result = Curl_http_statusline(data, conn);
         if(result)
           return result;
+        writetype |= CLIENTWRITE_STATUS;
       }
       else {
         k->header = FALSE;   /* this is not a header line */
@@ -4333,8 +4427,7 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
       }
     }
 
-    result = Curl_convert_from_network(data, headp, strlen(headp));
-    /* Curl_convert_from_network calls failf if unsuccessful */
+    result = verify_header(data);
     if(result)
       return result;
 
@@ -4345,10 +4438,10 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
     /*
      * End of header-checks. Write them to the client.
      */
-
-    writetype = CLIENTWRITE_HEADER;
     if(data->set.include_header)
       writetype |= CLIENTWRITE_BODY;
+    if(k->httpcode/100 == 1)
+      writetype |= CLIENTWRITE_1XX;
 
     Curl_debug(data, CURLINFO_HEADER_IN, headp,
                Curl_dyn_len(&data->state.headerb));
index b4aaba2a26bbcaecb9ff8a9be5232e43db3c7d13..f7cbb34244dc210ed3624f1f572837053023f8cb 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
+#include "ws.h"
 
 typedef enum {
   HTTPREQ_GET,
@@ -38,22 +41,38 @@ typedef enum {
 #include <nghttp2/nghttp2.h>
 #endif
 
+#if defined(_WIN32) && defined(ENABLE_QUIC)
+#include <stdint.h>
+#endif
+
 extern const struct Curl_handler Curl_handler_http;
 
 #ifdef USE_SSL
 extern const struct Curl_handler Curl_handler_https;
 #endif
 
+#ifdef USE_WEBSOCKETS
+extern const struct Curl_handler Curl_handler_ws;
+
+#ifdef USE_SSL
+extern const struct Curl_handler Curl_handler_wss;
+#endif
+#endif /* websockets */
+
+
 /* Header specific functions */
 bool Curl_compareheader(const char *headerline,  /* line to check */
                         const char *header,   /* header keyword _with_ colon */
-                        const char *content); /* content string to find */
+                        const size_t hlen,   /* len of the keyword in bytes */
+                        const char *content, /* content string to find */
+                        const size_t clen);   /* len of the content in bytes */
 
 char *Curl_copy_header_value(const char *header);
 
 char *Curl_checkProxyheaders(struct Curl_easy *data,
                              const struct connectdata *conn,
-                             const char *thisheader);
+                             const char *thisheader,
+                             const size_t thislen);
 CURLcode Curl_buffer_send(struct dynbuf *in,
                           struct Curl_easy *data,
                           curl_off_t *bytes_written,
@@ -160,6 +179,29 @@ CURLcode Curl_http_auth_act(struct Curl_easy *data);
 struct h3out; /* see ngtcp2 */
 #endif
 
+#ifdef USE_MSH3
+#ifdef _WIN32
+#define msh3_lock CRITICAL_SECTION
+#define msh3_lock_initialize(lock) InitializeCriticalSection(lock)
+#define msh3_lock_uninitialize(lock) DeleteCriticalSection(lock)
+#define msh3_lock_acquire(lock) EnterCriticalSection(lock)
+#define msh3_lock_release(lock) LeaveCriticalSection(lock)
+#else /* !_WIN32 */
+#include <pthread.h>
+#define msh3_lock pthread_mutex_t
+#define msh3_lock_initialize(lock) { \
+  pthread_mutexattr_t attr; \
+  pthread_mutexattr_init(&attr); \
+  pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); \
+  pthread_mutex_init(lock, &attr); \
+  pthread_mutexattr_destroy(&attr); \
+}
+#define msh3_lock_uninitialize(lock) pthread_mutex_destroy(lock)
+#define msh3_lock_acquire(lock) pthread_mutex_lock(lock)
+#define msh3_lock_release(lock) pthread_mutex_unlock(lock)
+#endif /* _WIN32 */
+#endif /* USE_MSH3 */
+
 /****************************************************************************
  * HTTP unique setup
  ***************************************************************************/
@@ -186,6 +228,10 @@ struct HTTP {
     HTTPSEND_BODY     /* sending body */
   } sending;
 
+#ifdef USE_WEBSOCKETS
+  struct websocket ws;
+#endif
+
 #ifndef CURL_DISABLE_HTTP
   struct dynbuf send_buffer; /* used if the request couldn't be sent in one
                                 chunk, points to an allocated send_buffer
@@ -195,13 +241,11 @@ struct HTTP {
   /*********** for HTTP/2 we store stream-local data here *************/
   int32_t stream_id; /* stream we are interested in */
 
-  bool bodystarted;
   /* We store non-final and final response headers here, per-stream */
   struct dynbuf header_recvbuf;
   size_t nread_header_recvbuf; /* number of bytes in header_recvbuf fed into
                                   upper layer */
   struct dynbuf trailer_recvbuf;
-  int status_code; /* HTTP status code */
   const uint8_t *pausedata; /* pointer to data received in on_data_chunk */
   size_t pauselen; /* the number of bytes left in data */
   bool close_handled; /* TRUE if stream closure is handled by libcurl */
@@ -212,6 +256,8 @@ struct HTTP {
   uint32_t error; /* HTTP/2 stream error code */
 #endif
 #if defined(USE_NGHTTP2) || defined(USE_NGHTTP3)
+  bool bodystarted;
+  int status_code; /* HTTP status code */
   bool closed; /* TRUE on HTTP2 stream close */
   char *mem;     /* points to a buffer in memory to store received data */
   size_t len;    /* size of the buffer 'mem' points to */
@@ -225,11 +271,14 @@ struct HTTP {
 #endif
 
 #ifdef ENABLE_QUIC
+#ifndef USE_MSH3
   /*********** for HTTP/3 we store stream-local data here *************/
   int64_t stream3_id; /* stream we are interested in */
+  uint64_t error3; /* HTTP/3 stream error code */
   bool firstheader;  /* FALSE until headers arrive */
   bool firstbody;  /* FALSE until body arrives */
   bool h3req;    /* FALSE until request is issued */
+#endif
   bool upload_done;
 #endif
 #ifdef USE_NGHTTP3
@@ -237,6 +286,21 @@ struct HTTP {
   struct h3out *h3out; /* per-stream buffers for upload */
   struct dynbuf overflow; /* excess data received during a single Curl_read */
 #endif
+#ifdef USE_MSH3
+  struct MSH3_REQUEST *req;
+  msh3_lock recv_lock;
+  /* Receive Buffer (Headers and Data) */
+  uint8_t* recv_buf;
+  size_t recv_buf_alloc;
+  /* Receive Headers */
+  size_t recv_header_len;
+  bool recv_header_complete;
+  /* Receive Data */
+  size_t recv_data_len;
+  bool recv_data_complete;
+  /* General Receive Error */
+  CURLcode recv_error;
+#endif
 };
 
 #ifdef USE_NGHTTP2
index e74400a4caa0517fdf26a9d24b8e24efaa8cbae0..b7409b027d2cb43c5c9f319d034ac946f21d5816 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include "connect.h"
 #include "strtoofft.h"
 #include "strdup.h"
+#include "transfer.h"
 #include "dynbuf.h"
+#include "h2h3.h"
+#include "headers.h"
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
@@ -64,7 +69,6 @@
 #define H2BUGF(x) do { } while(0)
 #endif
 
-
 static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
                           char *mem, size_t len, CURLcode *err);
 static bool http2_connisdead(struct Curl_easy *data,
@@ -200,9 +204,9 @@ static bool http2_connisdead(struct Curl_easy *data, struct connectdata *conn)
         nread = ((Curl_recv *)httpc->recv_underlying)(
           data, FIRSTSOCKET, httpc->inbuf, H2_BUFSIZE, &result);
       if(nread != -1) {
-        infof(data,
-              "%d bytes stray data read before trying h2 connection",
-              (int)nread);
+        H2BUGF(infof(data,
+                     "%d bytes stray data read before trying h2 connection",
+                     (int)nread));
         httpc->nread_inbuf = 0;
         httpc->inbuflen = nread;
         if(h2_process_pending_input(data, httpc, &result) < 0)
@@ -513,7 +517,7 @@ static int set_transfer_url(struct Curl_easy *data,
   if(!u)
     return 5;
 
-  v = curl_pushheader_byname(hp, ":scheme");
+  v = curl_pushheader_byname(hp, H2H3_PSEUDO_SCHEME);
   if(v) {
     uc = curl_url_set(u, CURLUPART_SCHEME, v, 0);
     if(uc) {
@@ -522,7 +526,7 @@ static int set_transfer_url(struct Curl_easy *data,
     }
   }
 
-  v = curl_pushheader_byname(hp, ":authority");
+  v = curl_pushheader_byname(hp, H2H3_PSEUDO_AUTHORITY);
   if(v) {
     uc = curl_url_set(u, CURLUPART_HOST, v, 0);
     if(uc) {
@@ -531,7 +535,7 @@ static int set_transfer_url(struct Curl_easy *data,
     }
   }
 
-  v = curl_pushheader_byname(hp, ":path");
+  v = curl_pushheader_byname(hp, H2H3_PSEUDO_PATH);
   if(v) {
     uc = curl_url_set(u, CURLUPART_PATH, v, 0);
     if(uc) {
@@ -560,7 +564,7 @@ static int push_promise(struct Curl_easy *data,
                         const nghttp2_push_promise *frame)
 {
   int rv; /* one of the CURL_PUSH_* defines */
-  H2BUGF(infof(data, "PUSH_PROMISE received, stream %u!",
+  H2BUGF(infof(data, "PUSH_PROMISE received, stream %u",
                frame->promised_stream_id));
   if(data->multi->push_cb) {
     struct HTTP *stream;
@@ -580,11 +584,11 @@ static int push_promise(struct Curl_easy *data,
     heads.data = data;
     heads.frame = frame;
     /* ask the application */
-    H2BUGF(infof(data, "Got PUSH_PROMISE, ask application!"));
+    H2BUGF(infof(data, "Got PUSH_PROMISE, ask application"));
 
     stream = data->req.p.http;
     if(!stream) {
-      failf(data, "Internal NULL stream!");
+      failf(data, "Internal NULL stream");
       (void)Curl_close(&newhandle);
       rv = CURL_PUSH_DENY;
       goto fail;
@@ -641,7 +645,7 @@ static int push_promise(struct Curl_easy *data,
                                               frame->promised_stream_id,
                                               newhandle);
     if(rv) {
-      infof(data, "failed to set user_data for stream %d",
+      infof(data, "failed to set user_data for stream %u",
             frame->promised_stream_id);
       DEBUGASSERT(0);
       rv = CURL_PUSH_DENY;
@@ -651,7 +655,7 @@ static int push_promise(struct Curl_easy *data,
     Curl_dyn_init(&newstream->trailer_recvbuf, DYN_H2_TRAILERS);
   }
   else {
-    H2BUGF(infof(data, "Got PUSH_PROMISE, ignore it!"));
+    H2BUGF(infof(data, "Got PUSH_PROMISE, ignore it"));
     rv = CURL_PUSH_DENY;
   }
   fail:
@@ -711,19 +715,19 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
   data_s = nghttp2_session_get_stream_user_data(session, stream_id);
   if(!data_s) {
     H2BUGF(infof(data,
-                 "No Curl_easy associated with stream: %x",
+                 "No Curl_easy associated with stream: %u",
                  stream_id));
     return 0;
   }
 
   stream = data_s->req.p.http;
   if(!stream) {
-    H2BUGF(infof(data_s, "No proto pointer for stream: %x",
+    H2BUGF(infof(data_s, "No proto pointer for stream: %u",
                  stream_id));
     return NGHTTP2_ERR_CALLBACK_FAILURE;
   }
 
-  H2BUGF(infof(data_s, "on_frame_recv() header %x stream %x",
+  H2BUGF(infof(data_s, "on_frame_recv() header %x stream %u",
                frame->hd.type, stream_id));
 
   switch(frame->hd.type) {
@@ -757,7 +761,7 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
       stream->status_code = -1;
     }
 
-    result = Curl_dyn_add(&stream->header_recvbuf, "\r\n");
+    result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST("\r\n"));
     if(result)
       return NGHTTP2_ERR_CALLBACK_FAILURE;
 
@@ -800,7 +804,7 @@ static int on_frame_recv(nghttp2_session *session, const nghttp2_frame *frame,
     }
     break;
   default:
-    H2BUGF(infof(data_s, "Got frame type %x for stream %u!",
+    H2BUGF(infof(data_s, "Got frame type %x for stream %u",
                  frame->hd.type, stream_id));
     break;
   }
@@ -823,10 +827,14 @@ static int on_data_chunk_recv(nghttp2_session *session, uint8_t flags,
 
   /* get the stream from the hash based on Stream ID */
   data_s = nghttp2_session_get_stream_user_data(session, stream_id);
-  if(!data_s)
-    /* Receiving a Stream ID not in the hash should not happen, this is an
-       internal error more than anything else! */
-    return NGHTTP2_ERR_CALLBACK_FAILURE;
+  if(!data_s) {
+    /* Receiving a Stream ID not in the hash should not happen - unless
+       we have aborted a transfer artificially and there were more data
+       in the pipeline. Silently ignore. */
+    H2BUGF(fprintf(stderr, "Data for stream %u but it doesn't exist\n",
+                   stream_id));
+    return 0;
+  }
 
   stream = data_s->req.p.http;
   if(!stream)
@@ -907,15 +915,15 @@ static int on_stream_close(nghttp2_session *session, int32_t stream_id,
     /* remove the entry from the hash as the stream is now gone */
     rv = nghttp2_session_set_stream_user_data(session, stream_id, 0);
     if(rv) {
-      infof(data_s, "http/2: failed to clear user_data for stream %d!",
+      infof(data_s, "http/2: failed to clear user_data for stream %u",
             stream_id);
       DEBUGASSERT(0);
     }
     if(stream_id == httpc->pause_stream_id) {
-      H2BUGF(infof(data_s, "Stopped the pause stream!"));
+      H2BUGF(infof(data_s, "Stopped the pause stream"));
       httpc->pause_stream_id = 0;
     }
-    H2BUGF(infof(data_s, "Removed stream %u hash!", stream_id));
+    H2BUGF(infof(data_s, "Removed stream %u hash", stream_id));
     stream->stream_id = 0; /* cleared */
   }
   return 0;
@@ -1000,7 +1008,7 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
 
   stream = data_s->req.p.http;
   if(!stream) {
-    failf(data_s, "Internal NULL stream!");
+    failf(data_s, "Internal NULL stream");
     return NGHTTP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -1009,7 +1017,7 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
   if(frame->hd.type == NGHTTP2_PUSH_PROMISE) {
     char *h;
 
-    if(!strcmp(":authority", (const char *)name)) {
+    if(!strcmp(H2H3_PSEUDO_AUTHORITY, (const char *)name)) {
       /* pseudo headers are lower case */
       int rc = 0;
       char *check = aprintf("%s:%d", conn->host.name, conn->remote_port);
@@ -1044,6 +1052,12 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
     else if(stream->push_headers_used ==
             stream->push_headers_alloc) {
       char **headp;
+      if(stream->push_headers_alloc > 1000) {
+        /* this is beyond crazy many headers, bail out */
+        failf(data_s, "Too many PUSH_PROMISE headers");
+        Curl_safefree(stream->push_headers);
+        return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+      }
       stream->push_headers_alloc *= 2;
       headp = Curl_saferealloc(stream->push_headers,
                                stream->push_headers_alloc * sizeof(char *));
@@ -1072,22 +1086,27 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
     return 0;
   }
 
-  if(namelen == sizeof(":status") - 1 &&
-     memcmp(":status", name, namelen) == 0) {
+  if(namelen == sizeof(H2H3_PSEUDO_STATUS) - 1 &&
+     memcmp(H2H3_PSEUDO_STATUS, name, namelen) == 0) {
     /* nghttp2 guarantees :status is received first and only once, and
        value is 3 digits status code, and decode_status_code always
        succeeds. */
+    char buffer[32];
     stream->status_code = decode_status_code(value, valuelen);
     DEBUGASSERT(stream->status_code != -1);
-
-    result = Curl_dyn_add(&stream->header_recvbuf, "HTTP/2 ");
+    msnprintf(buffer, sizeof(buffer), H2H3_PSEUDO_STATUS ":%u\r",
+              stream->status_code);
+    result = Curl_headers_push(data_s, buffer, CURLH_PSEUDO);
+    if(result)
+      return NGHTTP2_ERR_CALLBACK_FAILURE;
+    result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST("HTTP/2 "));
     if(result)
       return NGHTTP2_ERR_CALLBACK_FAILURE;
     result = Curl_dyn_addn(&stream->header_recvbuf, value, valuelen);
     if(result)
       return NGHTTP2_ERR_CALLBACK_FAILURE;
     /* the space character after the status code is mandatory */
-    result = Curl_dyn_add(&stream->header_recvbuf, " \r\n");
+    result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST(" \r\n"));
     if(result)
       return NGHTTP2_ERR_CALLBACK_FAILURE;
     /* if we receive data for another handle, wake that up */
@@ -1105,13 +1124,13 @@ static int on_header(nghttp2_session *session, const nghttp2_frame *frame,
   result = Curl_dyn_addn(&stream->header_recvbuf, name, namelen);
   if(result)
     return NGHTTP2_ERR_CALLBACK_FAILURE;
-  result = Curl_dyn_add(&stream->header_recvbuf, ": ");
+  result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST(": "));
   if(result)
     return NGHTTP2_ERR_CALLBACK_FAILURE;
   result = Curl_dyn_addn(&stream->header_recvbuf, value, valuelen);
   if(result)
     return NGHTTP2_ERR_CALLBACK_FAILURE;
-  result = Curl_dyn_add(&stream->header_recvbuf, "\r\n");
+  result = Curl_dyn_addn(&stream->header_recvbuf, STRCONST("\r\n"));
   if(result)
     return NGHTTP2_ERR_CALLBACK_FAILURE;
   /* if we receive data for another handle, wake that up */
@@ -1227,17 +1246,18 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
      !httpc->h2) /* not HTTP/2 ? */
     return;
 
-  if(premature) {
+  /* do this before the reset handling, as that might clear ->stream_id */
+  if(http->stream_id == httpc->pause_stream_id) {
+    H2BUGF(infof(data, "DONE the pause stream (%u)", http->stream_id));
+    httpc->pause_stream_id = 0;
+  }
+  if(premature || (!http->closed && http->stream_id)) {
     /* RST_STREAM */
     set_transfer(httpc, data); /* set the transfer */
+    H2BUGF(infof(data, "RST stream %u", http->stream_id));
     if(!nghttp2_submit_rst_stream(httpc->h2, NGHTTP2_FLAG_NONE,
                                   http->stream_id, NGHTTP2_STREAM_CLOSED))
       (void)nghttp2_session_send(httpc->h2);
-
-    if(http->stream_id == httpc->pause_stream_id) {
-      infof(data, "stopped the pause stream!");
-      httpc->pause_stream_id = 0;
-    }
   }
 
   if(data->state.drain)
@@ -1248,7 +1268,7 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
     int rv = nghttp2_session_set_stream_user_data(httpc->h2,
                                                   http->stream_id, 0);
     if(rv) {
-      infof(data, "http/2: failed to clear user_data for stream %d!",
+      infof(data, "http/2: failed to clear user_data for stream %u",
             http->stream_id);
       DEBUGASSERT(0);
     }
@@ -1257,6 +1277,27 @@ void Curl_http2_done(struct Curl_easy *data, bool premature)
   }
 }
 
+static int client_new(struct connectdata *conn,
+                      nghttp2_session_callbacks *callbacks)
+{
+#if NGHTTP2_VERSION_NUM < 0x013200
+  /* before 1.50.0 */
+  return nghttp2_session_client_new(&conn->proto.httpc.h2, callbacks, conn);
+#else
+  nghttp2_option *o;
+  int rc = nghttp2_option_new(&o);
+  if(rc)
+    return rc;
+  /* turn off RFC 9113 leading and trailing white spaces validation against
+     HTTP field value. */
+  nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation(o, 1);
+  rc = nghttp2_session_client_new2(&conn->proto.httpc.h2, callbacks, conn,
+                                   o);
+  nghttp2_option_del(o);
+  return rc;
+#endif
+}
+
 /*
  * Initialize nghttp2 for a Curl connection
  */
@@ -1273,7 +1314,7 @@ static CURLcode http2_init(struct Curl_easy *data, struct connectdata *conn)
     rc = nghttp2_session_callbacks_new(&callbacks);
 
     if(rc) {
-      failf(data, "Couldn't initialize nghttp2 callbacks!");
+      failf(data, "Couldn't initialize nghttp2 callbacks");
       return CURLE_OUT_OF_MEMORY; /* most likely at least */
     }
 
@@ -1297,12 +1338,12 @@ static CURLcode http2_init(struct Curl_easy *data, struct connectdata *conn)
     nghttp2_session_callbacks_set_error_callback(callbacks, error_callback);
 
     /* The nghttp2 session is not yet setup, do it */
-    rc = nghttp2_session_client_new(&conn->proto.httpc.h2, callbacks, conn);
+    rc = client_new(conn, callbacks);
 
     nghttp2_session_callbacks_del(callbacks);
 
     if(rc) {
-      failf(data, "Couldn't initialize nghttp2!");
+      failf(data, "Couldn't initialize nghttp2");
       return CURLE_OUT_OF_MEMORY; /* most likely at least */
     }
   }
@@ -1337,7 +1378,7 @@ CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
   }
   conn->proto.httpc.binlen = binlen;
 
-  result = Curl_base64url_encode(data, (const char *)binsettings, binlen,
+  result = Curl_base64url_encode((const char *)binsettings, binlen,
                                  &base64, &blen);
   if(result) {
     Curl_dyn_free(req);
@@ -1351,7 +1392,7 @@ CURLcode Curl_http2_request_upgrade(struct dynbuf *req,
                          NGHTTP2_CLEARTEXT_PROTO_VERSION_ID, base64);
   free(base64);
 
-  k->upgr101 = UPGR101_REQUESTED;
+  k->upgr101 = UPGR101_H2;
 
   return result;
 }
@@ -1507,7 +1548,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
   /* Reset to FALSE to prevent infinite loop in readwrite_data function. */
   stream->closed = FALSE;
   if(stream->error == NGHTTP2_REFUSED_STREAM) {
-    H2BUGF(infof(data, "REFUSED_STREAM (%d), try again on a new connection!",
+    H2BUGF(infof(data, "REFUSED_STREAM (%u), try again on a new connection",
                  stream->stream_id));
     connclose(conn, "REFUSED_STREAM"); /* don't use this anymore */
     data->state.refused_stream = TRUE;
@@ -1515,7 +1556,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
     return -1;
   }
   else if(stream->error != NGHTTP2_NO_ERROR) {
-    failf(data, "HTTP/2 stream %d was not closed cleanly: %s (err %u)",
+    failf(data, "HTTP/2 stream %u was not closed cleanly: %s (err %u)",
           stream->stream_id, nghttp2_http2_strerror(stream->error),
           stream->error);
     *err = CURLE_HTTP2_STREAM;
@@ -1523,7 +1564,7 @@ static ssize_t http2_handle_stream_close(struct connectdata *conn,
   }
 
   if(!stream->bodystarted) {
-    failf(data, "HTTP/2 stream %d was closed cleanly, but before getting "
+    failf(data, "HTTP/2 stream %u was closed cleanly, but before getting "
           " all response header fields, treated as error",
           stream->stream_id);
     *err = CURLE_HTTP2_STREAM;
@@ -1666,7 +1707,7 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
            ));
 
   if((data->state.drain) && stream->memlen) {
-    H2BUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u!! (%p => %p)",
+    H2BUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u (%p => %p)",
                  stream->memlen, stream->stream_id,
                  stream->mem, mem));
     if(mem != stream->mem) {
@@ -1728,7 +1769,7 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
     if(stream->closed)
       /* closed overrides paused */
       return 0;
-    H2BUGF(infof(data, "stream %x is paused, pause id: %x",
+    H2BUGF(infof(data, "stream %u is paused, pause id: %u",
                  stream->stream_id, httpc->pause_stream_id));
     *err = CURLE_AGAIN;
     return -1;
@@ -1759,7 +1800,7 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
           /* This will happen when the server or proxy server is SIGKILLed
              during data transfer. We should emit an error since our data
              received may be incomplete. */
-          failf(data, "HTTP/2 stream %d was not closed cleanly before"
+          failf(data, "HTTP/2 stream %u was not closed cleanly before"
                 " end of the underlying stream",
                 stream->stream_id);
           *err = CURLE_HTTP2_STREAM;
@@ -1816,80 +1857,6 @@ static ssize_t http2_recv(struct Curl_easy *data, int sockindex,
   return -1;
 }
 
-/* Index where :authority header field will appear in request header
-   field list. */
-#define AUTHORITY_DST_IDX 3
-
-/* USHRT_MAX is 65535 == 0xffff */
-#define HEADER_OVERFLOW(x) \
-  (x.namelen > 0xffff || x.valuelen > 0xffff - x.namelen)
-
-/*
- * Check header memory for the token "trailers".
- * Parse the tokens as separated by comma and surrounded by whitespace.
- * Returns TRUE if found or FALSE if not.
- */
-static bool contains_trailers(const char *p, size_t len)
-{
-  const char *end = p + len;
-  for(;;) {
-    for(; p != end && (*p == ' ' || *p == '\t'); ++p)
-      ;
-    if(p == end || (size_t)(end - p) < sizeof("trailers") - 1)
-      return FALSE;
-    if(strncasecompare("trailers", p, sizeof("trailers") - 1)) {
-      p += sizeof("trailers") - 1;
-      for(; p != end && (*p == ' ' || *p == '\t'); ++p)
-        ;
-      if(p == end || *p == ',')
-        return TRUE;
-    }
-    /* skip to next token */
-    for(; p != end && *p != ','; ++p)
-      ;
-    if(p == end)
-      return FALSE;
-    ++p;
-  }
-}
-
-typedef enum {
-  /* Send header to server */
-  HEADERINST_FORWARD,
-  /* Don't send header to server */
-  HEADERINST_IGNORE,
-  /* Discard header, and replace it with "te: trailers" */
-  HEADERINST_TE_TRAILERS
-} header_instruction;
-
-/* Decides how to treat given header field. */
-static header_instruction inspect_header(const char *name, size_t namelen,
-                                         const char *value, size_t valuelen) {
-  switch(namelen) {
-  case 2:
-    if(!strncasecompare("te", name, namelen))
-      return HEADERINST_FORWARD;
-
-    return contains_trailers(value, valuelen) ?
-           HEADERINST_TE_TRAILERS : HEADERINST_IGNORE;
-  case 7:
-    return strncasecompare("upgrade", name, namelen) ?
-           HEADERINST_IGNORE : HEADERINST_FORWARD;
-  case 10:
-    return (strncasecompare("connection", name, namelen) ||
-            strncasecompare("keep-alive", name, namelen)) ?
-           HEADERINST_IGNORE : HEADERINST_FORWARD;
-  case 16:
-    return strncasecompare("proxy-connection", name, namelen) ?
-           HEADERINST_IGNORE : HEADERINST_FORWARD;
-  case 17:
-    return strncasecompare("transfer-encoding", name, namelen) ?
-           HEADERINST_IGNORE : HEADERINST_FORWARD;
-  default:
-    return HEADERINST_FORWARD;
-  }
-}
-
 static ssize_t http2_send(struct Curl_easy *data, int sockindex,
                           const void *mem, size_t len, CURLcode *err)
 {
@@ -1904,14 +1871,12 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
   struct HTTP *stream = data->req.p.http;
   nghttp2_nv *nva = NULL;
   size_t nheader;
-  size_t i;
-  size_t authority_idx;
-  char *hdbuf = (char *)mem;
-  char *end, *line_end;
   nghttp2_data_provider data_prd;
   int32_t stream_id;
   nghttp2_session *h2 = httpc->h2;
   nghttp2_priority_spec pri_spec;
+  CURLcode result;
+  struct h2h3req *hreq;
 
   (void)sockindex;
 
@@ -1919,7 +1884,7 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
 
   if(stream->stream_id != -1) {
     if(stream->close_handled) {
-      infof(data, "stream %d closed", stream->stream_id);
+      infof(data, "stream %u closed", stream->stream_id);
       *err = CURLE_HTTP2_STREAM;
       return -1;
     }
@@ -1977,174 +1942,29 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
     return len;
   }
 
-  /* Calculate number of headers contained in [mem, mem + len) */
-  /* Here, we assume the curl http code generate *correct* HTTP header
-     field block */
-  nheader = 0;
-  for(i = 1; i < len; ++i) {
-    if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
-      ++nheader;
-      ++i;
-    }
+  result = Curl_pseudo_headers(data, mem, len, &hreq);
+  if(result) {
+    *err = result;
+    return -1;
   }
-  if(nheader < 2)
-    goto fail;
+  nheader = hreq->entries;
 
-  /* We counted additional 2 \r\n in the first and last line. We need 3
-     new headers: :method, :path and :scheme. Therefore we need one
-     more space. */
-  nheader += 1;
   nva = malloc(sizeof(nghttp2_nv) * nheader);
   if(!nva) {
+    Curl_pseudo_free(hreq);
     *err = CURLE_OUT_OF_MEMORY;
     return -1;
   }
-
-  /* Extract :method, :path from request line
-     We do line endings with CRLF so checking for CR is enough */
-  line_end = memchr(hdbuf, '\r', len);
-  if(!line_end)
-    goto fail;
-
-  /* Method does not contain spaces */
-  end = memchr(hdbuf, ' ', line_end - hdbuf);
-  if(!end || end == hdbuf)
-    goto fail;
-  nva[0].name = (unsigned char *)":method";
-  nva[0].namelen = strlen((char *)nva[0].name);
-  nva[0].value = (unsigned char *)hdbuf;
-  nva[0].valuelen = (size_t)(end - hdbuf);
-  nva[0].flags = NGHTTP2_NV_FLAG_NONE;
-  if(HEADER_OVERFLOW(nva[0])) {
-    failf(data, "Failed sending HTTP request: Header overflow");
-    goto fail;
-  }
-
-  hdbuf = end + 1;
-
-  /* Path may contain spaces so scan backwards */
-  end = NULL;
-  for(i = (size_t)(line_end - hdbuf); i; --i) {
-    if(hdbuf[i - 1] == ' ') {
-      end = &hdbuf[i - 1];
-      break;
-    }
-  }
-  if(!end || end == hdbuf)
-    goto fail;
-  nva[1].name = (unsigned char *)":path";
-  nva[1].namelen = strlen((char *)nva[1].name);
-  nva[1].value = (unsigned char *)hdbuf;
-  nva[1].valuelen = (size_t)(end - hdbuf);
-  nva[1].flags = NGHTTP2_NV_FLAG_NONE;
-  if(HEADER_OVERFLOW(nva[1])) {
-    failf(data, "Failed sending HTTP request: Header overflow");
-    goto fail;
-  }
-
-  nva[2].name = (unsigned char *)":scheme";
-  nva[2].namelen = strlen((char *)nva[2].name);
-  if(conn->handler->flags & PROTOPT_SSL)
-    nva[2].value = (unsigned char *)"https";
-  else
-    nva[2].value = (unsigned char *)"http";
-  nva[2].valuelen = strlen((char *)nva[2].value);
-  nva[2].flags = NGHTTP2_NV_FLAG_NONE;
-  if(HEADER_OVERFLOW(nva[2])) {
-    failf(data, "Failed sending HTTP request: Header overflow");
-    goto fail;
-  }
-
-  authority_idx = 0;
-  i = 3;
-  while(i < nheader) {
-    size_t hlen;
-
-    hdbuf = line_end + 2;
-
-    /* check for next CR, but only within the piece of data left in the given
-       buffer */
-    line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
-    if(!line_end || (line_end == hdbuf))
-      goto fail;
-
-    /* header continuation lines are not supported */
-    if(*hdbuf == ' ' || *hdbuf == '\t')
-      goto fail;
-
-    for(end = hdbuf; end < line_end && *end != ':'; ++end)
-      ;
-    if(end == hdbuf || end == line_end)
-      goto fail;
-    hlen = end - hdbuf;
-
-    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
-      authority_idx = i;
-      nva[i].name = (unsigned char *)":authority";
-      nva[i].namelen = strlen((char *)nva[i].name);
-    }
-    else {
-      nva[i].namelen = (size_t)(end - hdbuf);
-      /* Lower case the header name for HTTP/2 */
-      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
-      nva[i].name = (unsigned char *)hdbuf;
-    }
-    hdbuf = end + 1;
-    while(*hdbuf == ' ' || *hdbuf == '\t')
-      ++hdbuf;
-    end = line_end;
-
-    switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
-                          end - hdbuf)) {
-    case HEADERINST_IGNORE:
-      /* skip header fields prohibited by HTTP/2 specification. */
-      --nheader;
-      continue;
-    case HEADERINST_TE_TRAILERS:
-      nva[i].value = (uint8_t*)"trailers";
-      nva[i].valuelen = sizeof("trailers") - 1;
-      break;
-    default:
-      nva[i].value = (unsigned char *)hdbuf;
-      nva[i].valuelen = (size_t)(end - hdbuf);
-    }
-
-    nva[i].flags = NGHTTP2_NV_FLAG_NONE;
-    if(HEADER_OVERFLOW(nva[i])) {
-      failf(data, "Failed sending HTTP request: Header overflow");
-      goto fail;
-    }
-    ++i;
-  }
-
-  /* :authority must come before non-pseudo header fields */
-  if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
-    nghttp2_nv authority = nva[authority_idx];
-    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
-      nva[i] = nva[i - 1];
-    }
-    nva[i] = authority;
-  }
-
-  /* Warn stream may be rejected if cumulative length of headers is too large.
-     It appears nghttp2 will not send a header frame larger than 64KB. */
-#define MAX_ACC 60000  /* <64KB to account for some overhead */
-  {
-    size_t acc = 0;
-
-    for(i = 0; i < nheader; ++i) {
-      acc += nva[i].namelen + nva[i].valuelen;
-
-      H2BUGF(infof(data, "h2 header: %.*s:%.*s",
-                   nva[i].namelen, nva[i].name,
-                   nva[i].valuelen, nva[i].value));
-    }
-
-    if(acc > MAX_ACC) {
-      infof(data, "http2_send: Warning: The cumulative length of all "
-            "headers exceeds %d bytes and that could cause the "
-            "stream to be rejected.", MAX_ACC);
+  else {
+    unsigned int i;
+    for(i = 0; i < nheader; i++) {
+      nva[i].name = (unsigned char *)hreq->header[i].name;
+      nva[i].namelen = hreq->header[i].namelen;
+      nva[i].value = (unsigned char *)hreq->header[i].value;
+      nva[i].valuelen = hreq->header[i].valuelen;
+      nva[i].flags = NGHTTP2_NV_FLAG_NONE;
     }
+    Curl_pseudo_free(hreq);
   }
 
   h2_pri_spec(data, &pri_spec);
@@ -2177,13 +1997,13 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
 
   if(stream_id < 0) {
     H2BUGF(infof(data,
-                 "http2_send() nghttp2_submit_request error (%s)%d",
+                 "http2_send() nghttp2_submit_request error (%s)%u",
                  nghttp2_strerror(stream_id), stream_id));
     *err = CURLE_SEND_ERROR;
     return -1;
   }
 
-  infof(data, "Using Stream ID: %x (easy handle %p)",
+  infof(data, "Using Stream ID: %u (easy handle %p)",
         stream_id, (void *)data);
   stream->stream_id = stream_id;
 
@@ -2213,11 +2033,6 @@ static ssize_t http2_send(struct Curl_easy *data, int sockindex,
   nghttp2_session_resume_data(h2, stream->stream_id);
 
   return len;
-
-fail:
-  free(nva);
-  *err = CURLE_SEND_ERROR;
-  return -1;
 }
 
 CURLcode Curl_http2_setup(struct Curl_easy *data,
@@ -2271,8 +2086,6 @@ CURLcode Curl_http2_setup(struct Curl_easy *data,
   httpc->pause_stream_id = 0;
   httpc->drain_total = 0;
 
-  infof(data, "Connection state changed (HTTP/2 confirmed)");
-
   return CURLE_OK;
 }
 
@@ -2310,7 +2123,7 @@ CURLcode Curl_http2_switched(struct Curl_easy *data,
                                               stream->stream_id,
                                               data);
     if(rv) {
-      infof(data, "http/2: failed to set user_data for stream %d!",
+      infof(data, "http/2: failed to set user_data for stream %u",
             stream->stream_id);
       DEBUGASSERT(0);
     }
index d6986d97faf8c2cc3007c3e3bba4666b5191628e..f0390596ce0c2006cb33ed14fbbf821224017dc9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 751e5af5f91241e2e1089963e8aee415a0bab294..440eb385f89222cc3a337d6aeeed6b45d0869d07 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -27,8 +29,6 @@
 #include "urldata.h"
 #include "strcase.h"
 #include "strdup.h"
-#include "vauth/vauth.h"
-#include "vauth/digest.h"
 #include "http_aws_sigv4.h"
 #include "curl_sha256.h"
 #include "transfer.h"
@@ -44,6 +44,8 @@
 #include "curl_memory.h"
 #include "memdebug.h"
 
+#include "slist.h"
+
 #define HMAC_SHA256(k, kl, d, dl, o)        \
   do {                                      \
     ret = Curl_hmacit(Curl_HMAC_SHA256,     \
                       (unsigned int)kl,     \
                       (unsigned char *)d,   \
                       (unsigned int)dl, o); \
-    if(ret != CURLE_OK) {                   \
+    if(ret) {                               \
       goto fail;                            \
     }                                       \
   } while(0)
 
+#define TIMESTAMP_SIZE 17
+
 static void sha256_to_hex(char *dst, unsigned char *sha, size_t dst_l)
 {
   int i;
 
   DEBUGASSERT(dst_l >= 65);
   for(i = 0; i < 32; ++i) {
-    curl_msnprintf(dst + (i * 2), dst_l - (i * 2), "%02x", sha[i]);
+    msnprintf(dst + (i * 2), dst_l - (i * 2), "%02x", sha[i]);
+  }
+}
+
+static char *find_date_hdr(struct Curl_easy *data, const char *sig_hdr)
+{
+  char *tmp = Curl_checkheaders(data, sig_hdr, strlen(sig_hdr));
+
+  if(tmp)
+    return tmp;
+  return Curl_checkheaders(data, STRCONST("Date"));
+}
+
+/* remove whitespace, and lowercase all headers */
+static void trim_headers(struct curl_slist *head)
+{
+  struct curl_slist *l;
+  for(l = head; l; l = l->next) {
+    char *value; /* to read from */
+    char *store;
+    size_t colon = strcspn(l->data, ":");
+    Curl_strntolower(l->data, l->data, colon);
+
+    value = &l->data[colon];
+    if(!*value)
+      continue;
+    ++value;
+    store = value;
+
+    /* skip leading whitespace */
+    while(*value && ISBLANK(*value))
+      value++;
+
+    while(*value) {
+      int space = 0;
+      while(*value && ISBLANK(*value)) {
+        value++;
+        space++;
+      }
+      if(space) {
+        /* replace any number of consecutive whitespace with a single space,
+           unless at the end of the string, then nothing */
+        if(*value)
+          *store++ = ' ';
+      }
+      else
+        *store++ = *value++;
+    }
+    *store = 0; /* null terminate */
+  }
+}
+
+/* maximum lenth for the aws sivg4 parts */
+#define MAX_SIGV4_LEN 64
+#define MAX_SIGV4_LEN_TXT "64"
+
+#define DATE_HDR_KEY_LEN (MAX_SIGV4_LEN + sizeof("X--Date"))
+
+#define MAX_HOST_LEN 255
+/* FQDN + host: */
+#define FULL_HOST_LEN (MAX_HOST_LEN + sizeof("host:"))
+
+/* string been x-PROVIDER-date:TIMESTAMP, I need +1 for ':' */
+#define DATE_FULL_HDR_LEN (DATE_HDR_KEY_LEN + TIMESTAMP_SIZE + 1)
+
+/* timestamp should point to a buffer of at last TIMESTAMP_SIZE bytes */
+static CURLcode make_headers(struct Curl_easy *data,
+                             const char *hostname,
+                             char *timestamp,
+                             char *provider1,
+                             char **date_header,
+                             struct dynbuf *canonical_headers,
+                             struct dynbuf *signed_headers)
+{
+  char date_hdr_key[DATE_HDR_KEY_LEN];
+  char date_full_hdr[DATE_FULL_HDR_LEN];
+  struct curl_slist *head = NULL;
+  struct curl_slist *tmp_head = NULL;
+  CURLcode ret = CURLE_OUT_OF_MEMORY;
+  struct curl_slist *l;
+  int again = 1;
+
+  /* provider1 mid */
+  Curl_strntolower(provider1, provider1, strlen(provider1));
+  provider1[0] = Curl_raw_toupper(provider1[0]);
+
+  msnprintf(date_hdr_key, DATE_HDR_KEY_LEN, "X-%s-Date", provider1);
+
+  /* provider1 lowercase */
+  Curl_strntolower(provider1, provider1, 1); /* first byte only */
+  msnprintf(date_full_hdr, DATE_FULL_HDR_LEN,
+            "x-%s-date:%s", provider1, timestamp);
+
+  if(Curl_checkheaders(data, STRCONST("Host"))) {
+    head = NULL;
+  }
+  else {
+    char full_host[FULL_HOST_LEN + 1];
+
+    if(data->state.aptr.host) {
+      size_t pos;
+
+      if(strlen(data->state.aptr.host) > FULL_HOST_LEN) {
+        ret = CURLE_URL_MALFORMAT;
+        goto fail;
+      }
+      strcpy(full_host, data->state.aptr.host);
+      /* remove /r/n as the separator for canonical request must be '\n' */
+      pos = strcspn(full_host, "\n\r");
+      full_host[pos] = 0;
+    }
+    else {
+      if(strlen(hostname) > MAX_HOST_LEN) {
+        ret = CURLE_URL_MALFORMAT;
+        goto fail;
+      }
+      msnprintf(full_host, FULL_HOST_LEN, "host:%s", hostname);
+    }
+
+    head = curl_slist_append(NULL, full_host);
+    if(!head)
+      goto fail;
+  }
+
+
+  for(l = data->set.headers; l; l = l->next) {
+    tmp_head = curl_slist_append(head, l->data);
+    if(!tmp_head)
+      goto fail;
+    head = tmp_head;
+  }
+
+  trim_headers(head);
+
+  *date_header = find_date_hdr(data, date_hdr_key);
+  if(!*date_header) {
+    tmp_head = curl_slist_append(head, date_full_hdr);
+    if(!tmp_head)
+      goto fail;
+    head = tmp_head;
+    *date_header = curl_maprintf("%s: %s", date_hdr_key, timestamp);
+  }
+  else {
+    char *value;
+
+    *date_header = strdup(*date_header);
+    if(!*date_header)
+      goto fail;
+
+    value = strchr(*date_header, ':');
+    if(!value)
+      goto fail;
+    ++value;
+    while(ISBLANK(*value))
+      ++value;
+    strncpy(timestamp, value, TIMESTAMP_SIZE - 1);
+    timestamp[TIMESTAMP_SIZE - 1] = 0;
+  }
+
+  /* alpha-sort in a case sensitive manner */
+  do {
+    again = 0;
+    for(l = head; l; l = l->next) {
+      struct curl_slist *next = l->next;
+
+      if(next && strcmp(l->data, next->data) > 0) {
+        char *tmp = l->data;
+
+        l->data = next->data;
+        next->data = tmp;
+        again = 1;
+      }
+    }
+  } while(again);
+
+  for(l = head; l; l = l->next) {
+    char *tmp;
+
+    if(Curl_dyn_add(canonical_headers, l->data))
+      goto fail;
+    if(Curl_dyn_add(canonical_headers, "\n"))
+      goto fail;
+
+    tmp = strchr(l->data, ':');
+    if(tmp)
+      *tmp = 0;
+
+    if(l != head) {
+      if(Curl_dyn_add(signed_headers, ";"))
+        goto fail;
+    }
+    if(Curl_dyn_add(signed_headers, l->data))
+      goto fail;
   }
+
+  ret = CURLE_OK;
+fail:
+  curl_slist_free_all(head);
+
+  return ret;
 }
 
 CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
@@ -71,29 +273,21 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
   CURLcode ret = CURLE_OUT_OF_MEMORY;
   struct connectdata *conn = data->conn;
   size_t len;
-  const char *tmp0;
-  const char *tmp1;
-  char *provider0_low = NULL;
-  char *provider0_up = NULL;
-  char *provider1_low = NULL;
-  char *provider1_mid = NULL;
-  char *region = NULL;
-  char *service = NULL;
+  const char *arg;
+  char provider0[MAX_SIGV4_LEN + 1]="";
+  char provider1[MAX_SIGV4_LEN + 1]="";
+  char region[MAX_SIGV4_LEN + 1]="";
+  char service[MAX_SIGV4_LEN + 1]="";
   const char *hostname = conn->host.name;
-#ifdef DEBUGBUILD
-  char *force_timestamp;
-#endif
   time_t clock;
   struct tm tm;
-  char timestamp[17];
+  char timestamp[TIMESTAMP_SIZE];
   char date[9];
-  const char *content_type = Curl_checkheaders(data, "Content-Type");
-  char *canonical_headers = NULL;
-  char *signed_headers = NULL;
-  Curl_HttpReq httpreq;
-  const char *method;
-  size_t post_data_len;
-  const char *post_data = data->set.postfields ? data->set.postfields : "";
+  struct dynbuf canonical_headers;
+  struct dynbuf signed_headers;
+  char *date_header = NULL;
+  const char *post_data = data->set.postfields;
+  size_t post_data_len = 0;
   unsigned char sha_hash[32];
   char sha_hex[65];
   char *canonical_request = NULL;
@@ -101,20 +295,23 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
   char *credential_scope = NULL;
   char *str_to_sign = NULL;
   const char *user = data->state.aptr.user ? data->state.aptr.user : "";
-  const char *passwd = data->state.aptr.passwd ? data->state.aptr.passwd : "";
   char *secret = NULL;
-  unsigned char tmp_sign0[32] = {0};
-  unsigned char tmp_sign1[32] = {0};
+  unsigned char sign0[32] = {0};
+  unsigned char sign1[32] = {0};
   char *auth_headers = NULL;
 
   DEBUGASSERT(!proxy);
   (void)proxy;
 
-  if(Curl_checkheaders(data, "Authorization")) {
+  if(Curl_checkheaders(data, STRCONST("Authorization"))) {
     /* Authorization already present, Bailing out */
     return CURLE_OK;
   }
 
+  /* we init thoses buffers here, so goto fail will free initialized dynbuf */
+  Curl_dyn_init(&canonical_headers, CURL_MAX_HTTP_HEADER);
+  Curl_dyn_init(&signed_headers, CURL_MAX_HTTP_HEADER);
+
   /*
    * Parameters parsing
    * Google and Outscale use the same OSC or GOOG,
@@ -122,223 +319,154 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
    * AWS is the default because most of non-amazon providers
    * are still using aws:amz as a prefix.
    */
-  tmp0 = data->set.str[STRING_AWS_SIGV4] ?
+  arg = data->set.str[STRING_AWS_SIGV4] ?
     data->set.str[STRING_AWS_SIGV4] : "aws:amz";
-  tmp1 = strchr(tmp0, ':');
-  len = tmp1 ? (size_t)(tmp1 - tmp0) : strlen(tmp0);
-  if(len < 1) {
-    infof(data, "first provider can't be empty");
+
+  /* provider1[:provider2[:region[:service]]]
+
+     No string can be longer than N bytes of non-whitespace
+   */
+  (void)sscanf(arg, "%" MAX_SIGV4_LEN_TXT "[^:]"
+               ":%" MAX_SIGV4_LEN_TXT "[^:]"
+               ":%" MAX_SIGV4_LEN_TXT "[^:]"
+               ":%" MAX_SIGV4_LEN_TXT "s",
+               provider0, provider1, region, service);
+  if(!provider0[0]) {
+    failf(data, "first provider can't be empty");
     ret = CURLE_BAD_FUNCTION_ARGUMENT;
     goto fail;
   }
-  provider0_low = malloc(len + 1);
-  provider0_up = malloc(len + 1);
-  if(!provider0_low || !provider0_up) {
-    goto fail;
-  }
-  Curl_strntolower(provider0_low, tmp0, len);
-  provider0_low[len] = '\0';
-  Curl_strntoupper(provider0_up, tmp0, len);
-  provider0_up[len] = '\0';
-
-  if(tmp1) {
-    tmp0 = tmp1 + 1;
-    tmp1 = strchr(tmp0, ':');
-    len = tmp1 ? (size_t)(tmp1 - tmp0) : strlen(tmp0);
-    if(len < 1) {
-      infof(data, "second provider can't be empty");
-      ret = CURLE_BAD_FUNCTION_ARGUMENT;
-      goto fail;
-    }
-    provider1_low = malloc(len + 1);
-    provider1_mid = malloc(len + 1);
-    if(!provider1_low || !provider1_mid) {
-      goto fail;
-    }
-    Curl_strntolower(provider1_low, tmp0, len);
-    provider1_low[len] = '\0';
-    Curl_strntolower(provider1_mid, tmp0, len);
-    provider1_mid[0] = Curl_raw_toupper(provider1_mid[0]);
-    provider1_mid[len] = '\0';
-
-    if(tmp1) {
-      tmp0 = tmp1 + 1;
-      tmp1 = strchr(tmp0, ':');
-      len = tmp1 ? (size_t)(tmp1 - tmp0) : strlen(tmp0);
-      if(len < 1) {
-        infof(data, "region can't be empty");
-        ret = CURLE_BAD_FUNCTION_ARGUMENT;
-        goto fail;
-      }
-      region = Curl_memdup(tmp0, len + 1);
-      if(!region) {
-        goto fail;
-      }
-      region[len] = '\0';
+  else if(!provider1[0])
+    strcpy(provider1, provider0);
 
-      if(tmp1) {
-        tmp0 = tmp1 + 1;
-        service = strdup(tmp0);
-        if(!service) {
-          goto fail;
-        }
-        if(strlen(service) < 1) {
-          infof(data, "service can't be empty");
-          ret = CURLE_BAD_FUNCTION_ARGUMENT;
-          goto fail;
-        }
-      }
-    }
-  }
-  else {
-    provider1_low = Curl_memdup(provider0_low, len + 1);
-    provider1_mid = Curl_memdup(provider0_low, len + 1);
-    if(!provider1_low || !provider1_mid) {
-      goto fail;
-    }
-    provider1_mid[0] = Curl_raw_toupper(provider1_mid[0]);
-  }
-
-  if(!service) {
-    tmp0 = hostname;
-    tmp1 = strchr(tmp0, '.');
-    len = tmp1 - tmp0;
-    if(!tmp1 || len < 1) {
-      infof(data, "service missing in parameters or hostname");
+  if(!service[0]) {
+    char *hostdot = strchr(hostname, '.');
+    if(!hostdot) {
+      failf(data, "service missing in parameters and hostname");
       ret = CURLE_URL_MALFORMAT;
       goto fail;
     }
-    service = Curl_memdup(tmp0, len + 1);
-    if(!service) {
+    len = hostdot - hostname;
+    if(len > MAX_SIGV4_LEN) {
+      failf(data, "service too long in hostname");
+      ret = CURLE_URL_MALFORMAT;
       goto fail;
     }
+    strncpy(service, hostname, len);
     service[len] = '\0';
 
-    if(!region) {
-      tmp0 = tmp1 + 1;
-      tmp1 = strchr(tmp0, '.');
-      len = tmp1 - tmp0;
-      if(!tmp1 || len < 1) {
-        infof(data, "region missing in parameters or hostname");
+    if(!region[0]) {
+      const char *reg = hostdot + 1;
+      const char *hostreg = strchr(reg, '.');
+      if(!hostreg) {
+        failf(data, "region missing in parameters and hostname");
         ret = CURLE_URL_MALFORMAT;
         goto fail;
       }
-      region = Curl_memdup(tmp0, len + 1);
-      if(!region) {
+      len = hostreg - reg;
+      if(len > MAX_SIGV4_LEN) {
+        failf(data, "region too long in hostname");
+        ret = CURLE_URL_MALFORMAT;
         goto fail;
       }
+      strncpy(region, reg, len);
       region[len] = '\0';
     }
   }
 
 #ifdef DEBUGBUILD
-  force_timestamp = getenv("CURL_FORCETIME");
-  if(force_timestamp)
-    clock = 0;
-  else
-    time(&clock);
+  {
+    char *force_timestamp = getenv("CURL_FORCETIME");
+    if(force_timestamp)
+      clock = 0;
+    else
+      time(&clock);
+  }
 #else
   time(&clock);
 #endif
   ret = Curl_gmtime(clock, &tm);
-  if(ret != CURLE_OK) {
+  if(ret) {
     goto fail;
   }
   if(!strftime(timestamp, sizeof(timestamp), "%Y%m%dT%H%M%SZ", &tm)) {
+    ret = CURLE_OUT_OF_MEMORY;
     goto fail;
   }
+
+  ret = make_headers(data, hostname, timestamp, provider1,
+                     &date_header, &canonical_headers, &signed_headers);
+  if(ret)
+    goto fail;
+  ret = CURLE_OUT_OF_MEMORY;
+
   memcpy(date, timestamp, sizeof(date));
   date[sizeof(date) - 1] = 0;
 
-  if(content_type) {
-    content_type = strchr(content_type, ':');
-    if(!content_type) {
-      ret = CURLE_FAILED_INIT;
-      goto fail;
-    }
-    content_type++;
-    /* Skip whitespace now */
-    while(*content_type == ' ' || *content_type == '\t')
-      ++content_type;
-
-    canonical_headers = curl_maprintf("content-type:%s\n"
-                                      "host:%s\n"
-                                      "x-%s-date:%s\n",
-                                      content_type,
-                                      hostname,
-                                      provider1_low, timestamp);
-    signed_headers = curl_maprintf("content-type;host;x-%s-date",
-                                   provider1_low);
-  }
-  else {
-    canonical_headers = curl_maprintf("host:%s\n"
-                                      "x-%s-date:%s\n",
-                                      hostname,
-                                      provider1_low, timestamp);
-    signed_headers = curl_maprintf("host;x-%s-date", provider1_low);
-  }
-
-  if(!canonical_headers || !signed_headers) {
-    goto fail;
+  if(post_data) {
+    if(data->set.postfieldsize < 0)
+      post_data_len = strlen(post_data);
+    else
+      post_data_len = (size_t)data->set.postfieldsize;
   }
-
-  if(data->set.postfieldsize < 0)
-    post_data_len = strlen(post_data);
-  else
-    post_data_len = (size_t)data->set.postfieldsize;
   if(Curl_sha256it(sha_hash, (const unsigned char *) post_data,
-                   post_data_len)) {
+                   post_data_len))
     goto fail;
-  }
 
   sha256_to_hex(sha_hex, sha_hash, sizeof(sha_hex));
 
-  Curl_http_method(data, conn, &method, &httpreq);
-
-  canonical_request =
-    curl_maprintf("%s\n" /* HTTPRequestMethod */
-                  "%s\n" /* CanonicalURI */
-                  "%s\n" /* CanonicalQueryString */
-                  "%s\n" /* CanonicalHeaders */
-                  "%s\n" /* SignedHeaders */
-                  "%s",  /* HashedRequestPayload in hex */
-                  method,
-                  data->state.up.path,
-                  data->state.up.query ? data->state.up.query : "",
-                  canonical_headers,
-                  signed_headers,
-                  sha_hex);
-  if(!canonical_request) {
-    goto fail;
+  {
+    Curl_HttpReq httpreq;
+    const char *method;
+
+    Curl_http_method(data, conn, &method, &httpreq);
+
+    canonical_request =
+      curl_maprintf("%s\n" /* HTTPRequestMethod */
+                    "%s\n" /* CanonicalURI */
+                    "%s\n" /* CanonicalQueryString */
+                    "%s\n" /* CanonicalHeaders */
+                    "%s\n" /* SignedHeaders */
+                    "%s",  /* HashedRequestPayload in hex */
+                    method,
+                    data->state.up.path,
+                    data->state.up.query ? data->state.up.query : "",
+                    Curl_dyn_ptr(&canonical_headers),
+                    Curl_dyn_ptr(&signed_headers),
+                    sha_hex);
+    if(!canonical_request)
+      goto fail;
   }
 
-  request_type = curl_maprintf("%s4_request", provider0_low);
-  if(!request_type) {
+  /* provider 0 lowercase */
+  Curl_strntolower(provider0, provider0, strlen(provider0));
+  request_type = curl_maprintf("%s4_request", provider0);
+  if(!request_type)
     goto fail;
-  }
 
   credential_scope = curl_maprintf("%s/%s/%s/%s",
                                    date, region, service, request_type);
-  if(!credential_scope) {
+  if(!credential_scope)
     goto fail;
-  }
 
   if(Curl_sha256it(sha_hash, (unsigned char *) canonical_request,
-                   strlen(canonical_request))) {
+                   strlen(canonical_request)))
     goto fail;
-  }
 
   sha256_to_hex(sha_hex, sha_hash, sizeof(sha_hex));
 
+  /* provider 0 uppercase */
+  Curl_strntoupper(provider0, provider0, strlen(provider0));
+
   /*
-   * Google allow to use rsa key instead of HMAC, so this code might change
-   * In the future, but for now we support only HMAC version
+   * Google allows using RSA key instead of HMAC, so this code might change
+   * in the future. For now we ony support HMAC.
    */
   str_to_sign = curl_maprintf("%s4-HMAC-SHA256\n" /* Algorithm */
                               "%s\n" /* RequestDateTime */
                               "%s\n" /* CredentialScope */
                               "%s",  /* HashedCanonicalRequest in hex */
-                              provider0_up,
+                              provider0,
                               timestamp,
                               credential_scope,
                               sha_hex);
@@ -346,36 +474,33 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
     goto fail;
   }
 
-  secret = curl_maprintf("%s4%s", provider0_up, passwd);
-  if(!secret) {
+  /* provider 0 uppercase */
+  secret = curl_maprintf("%s4%s", provider0,
+                         data->state.aptr.passwd ?
+                         data->state.aptr.passwd : "");
+  if(!secret)
     goto fail;
-  }
 
-  HMAC_SHA256(secret, strlen(secret),
-              date, strlen(date), tmp_sign0);
-  HMAC_SHA256(tmp_sign0, sizeof(tmp_sign0),
-              region, strlen(region), tmp_sign1);
-  HMAC_SHA256(tmp_sign1, sizeof(tmp_sign1),
-              service, strlen(service), tmp_sign0);
-  HMAC_SHA256(tmp_sign0, sizeof(tmp_sign0),
-              request_type, strlen(request_type), tmp_sign1);
-  HMAC_SHA256(tmp_sign1, sizeof(tmp_sign1),
-              str_to_sign, strlen(str_to_sign), tmp_sign0);
+  HMAC_SHA256(secret, strlen(secret), date, strlen(date), sign0);
+  HMAC_SHA256(sign0, sizeof(sign0), region, strlen(region), sign1);
+  HMAC_SHA256(sign1, sizeof(sign1), service, strlen(service), sign0);
+  HMAC_SHA256(sign0, sizeof(sign0), request_type, strlen(request_type), sign1);
+  HMAC_SHA256(sign1, sizeof(sign1), str_to_sign, strlen(str_to_sign), sign0);
 
-  sha256_to_hex(sha_hex, tmp_sign0, sizeof(sha_hex));
+  sha256_to_hex(sha_hex, sign0, sizeof(sha_hex));
 
+  /* provider 0 uppercase */
   auth_headers = curl_maprintf("Authorization: %s4-HMAC-SHA256 "
                                "Credential=%s/%s, "
                                "SignedHeaders=%s, "
                                "Signature=%s\r\n"
-                               "X-%s-Date: %s\r\n",
-                               provider0_up,
+                               "%s\r\n",
+                               provider0,
                                user,
                                credential_scope,
-                               signed_headers,
+                               Curl_dyn_ptr(&signed_headers),
                                sha_hex,
-                               provider1_mid,
-                               timestamp);
+                               date_header);
   if(!auth_headers) {
     goto fail;
   }
@@ -386,19 +511,14 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
   ret = CURLE_OK;
 
 fail:
-  free(provider0_low);
-  free(provider0_up);
-  free(provider1_low);
-  free(provider1_mid);
-  free(region);
-  free(service);
-  free(canonical_headers);
-  free(signed_headers);
+  Curl_dyn_free(&canonical_headers);
+  Curl_dyn_free(&signed_headers);
   free(canonical_request);
   free(request_type);
   free(credential_scope);
   free(str_to_sign);
   free(secret);
+  free(date_header);
   return ret;
 }
 
index 886b31440f76c4620fb366a04799433670be9cbe..85755e937b4b7cd3a427288dbab1e63217d81a68 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index beb96958846a406abf0e7521405a1f442065ff31..0b836851ac7d5157e314b771fee48bd6e23ed2c6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -29,7 +31,6 @@
 #include "dynbuf.h"
 #include "content_encoding.h"
 #include "http.h"
-#include "non-ascii.h" /* for Curl_convert_to_network prototype */
 #include "strtoofft.h"
 #include "warnless.h"
 
 
  */
 
-#ifdef CURL_DOES_CONVERSIONS
-/* Check for an ASCII hex digit.
-   We avoid the use of ISXDIGIT to accommodate non-ASCII hosts. */
-static bool isxdigit_ascii(char digit)
-{
-  return (digit >= 0x30 && digit <= 0x39) /* 0-9 */
-    || (digit >= 0x41 && digit <= 0x46) /* A-F */
-    || (digit >= 0x61 && digit <= 0x66); /* a-f */
-}
-#else
 #define isxdigit_ascii(x) Curl_isxdigit(x)
-#endif
 
 void Curl_httpchunk_init(struct Curl_easy *data)
 {
@@ -110,7 +100,7 @@ void Curl_httpchunk_init(struct Curl_easy *data)
 CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
                               char *datap,
                               ssize_t datalen,
-                              ssize_t *wrotep,
+                              ssize_t *wrote,
                               CURLcode *extrap)
 {
   CURLcode result = CURLE_OK;
@@ -119,7 +109,6 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
   struct SingleRequest *k = &data->req;
   size_t piece;
   curl_off_t length = (curl_off_t)datalen;
-  size_t *wrote = (size_t *)wrotep;
 
   *wrote = 0; /* nothing's written yet */
 
@@ -136,7 +125,7 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
   while(length) {
     switch(ch->state) {
     case CHUNK_HEX:
-      if(isxdigit_ascii(*datap)) {
+      if(ISXDIGIT(*datap)) {
         if(ch->hexindex < CHUNK_MAXNUM_LEN) {
           ch->hexbuffer[ch->hexindex] = *datap;
           datap++;
@@ -157,14 +146,6 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
         /* length and datap are unmodified */
         ch->hexbuffer[ch->hexindex] = 0;
 
-        /* convert to host encoding before calling strtoul */
-        result = Curl_convert_from_network(data, ch->hexbuffer, ch->hexindex);
-        if(result) {
-          /* Curl_convert_from_network calls failf if unsuccessful */
-          /* Treat it as a bad hex character */
-          return CHUNKE_ILLEGAL_HEX;
-        }
-
         if(curlx_strtoofft(ch->hexbuffer, &endptr, 16, &ch->datasize))
           return CHUNKE_ILLEGAL_HEX;
         ch->state = CHUNK_LF; /* now wait for the CRLF */
@@ -234,21 +215,16 @@ CHUNKcode Curl_httpchunk_read(struct Curl_easy *data,
 
         if(tr) {
           size_t trlen;
-          result = Curl_dyn_add(&conn->trailer, (char *)"\x0d\x0a");
+          result = Curl_dyn_addn(&conn->trailer, (char *)STRCONST("\x0d\x0a"));
           if(result)
             return CHUNKE_OUT_OF_MEMORY;
 
           tr = Curl_dyn_ptr(&conn->trailer);
           trlen = Curl_dyn_len(&conn->trailer);
-          /* Convert to host encoding before calling Curl_client_write */
-          result = Curl_convert_from_network(data, tr, trlen);
-          if(result)
-            /* Curl_convert_from_network calls failf if unsuccessful */
-            /* Treat it as a bad chunk */
-            return CHUNKE_BAD_CHUNK;
-
           if(!data->set.http_te_skip) {
-            result = Curl_client_write(data, CLIENTWRITE_HEADER, tr, trlen);
+            result = Curl_client_write(data,
+                                       CLIENTWRITE_HEADER|CLIENTWRITE_TRAILER,
+                                       tr, trlen);
             if(result) {
               *extrap = result;
               return CHUNKE_PASSTHRU_ERROR;
index 741a9a3bc3591d8c07ee13844773f32482c1166c..2cf5507c21e66404b963cc246b480d51606e87aa 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 struct connectdata;
index 34bb5a8e0814e4a09fe6a27d2c52c1c3580f50a1..a71c6b7cfb9ccab5c3023c70255fe856cb0ad430 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -56,11 +58,11 @@ CURLcode Curl_input_digest(struct Curl_easy *data,
     digest = &data->state.digest;
   }
 
-  if(!checkprefix("Digest", header) || !ISSPACE(header[6]))
+  if(!checkprefix("Digest", header) || !ISBLANK(header[6]))
     return CURLE_BAD_CONTENT_ENCODING;
 
   header += strlen("Digest");
-  while(*header && ISSPACE(*header))
+  while(*header && ISBLANK(*header))
     header++;
 
   return Curl_auth_decode_digest_http_message(header, digest);
index 89438d1a1ffd194403e4854453bf42a3ddd78607..eea90b7439d7c0a0a47a9e7e2f19e7ee3c831c05 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 5f764dc136b2697ee3b6113e6e11bb76449b8dc4..5909f85b0d69d0d2a0b4c267ff829f0ff6e2d6b4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -82,7 +84,7 @@ CURLcode Curl_input_negotiate(struct Curl_easy *data, struct connectdata *conn,
 
   /* Obtain the input token, if any */
   header += strlen("Negotiate");
-  while(*header && ISSPACE(*header))
+  while(*header && ISBLANK(*header))
     header++;
 
   len = strlen(header);
@@ -161,7 +163,7 @@ CURLcode Curl_output_negotiate(struct Curl_easy *data,
         return result;
     }
 
-    result = Curl_auth_create_spnego_message(data, neg_ctx, &base64, &len);
+    result = Curl_auth_create_spnego_message(neg_ctx, &base64, &len);
     if(result)
       return result;
 
index 2640a3ee016500bdb7865db5b801ccd6acc7d02c..6e2096c697e1d7c450e4eded77f99f50158ff0c6 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #if !defined(CURL_DISABLE_HTTP) && defined(USE_SPNEGO)
index a6526db9f7aa74603c1e73d37d0d5356eec744b7..5a6a9779055785a3c049c4490489cc55c5b7c823 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -27,7 +29,7 @@
 /*
  * NTLM details:
  *
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
  * https://www.innovation.ch/java/ntlm.html
  */
 
@@ -213,8 +215,7 @@ CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
                                                  ntlm, &ntlmmsg);
     if(!result) {
       DEBUGASSERT(Curl_bufref_len(&ntlmmsg) != 0);
-      result = Curl_base64_encode(data,
-                                  (const char *) Curl_bufref_ptr(&ntlmmsg),
+      result = Curl_base64_encode((const char *) Curl_bufref_ptr(&ntlmmsg),
                                   Curl_bufref_len(&ntlmmsg), &base64, &len);
       if(!result) {
         free(*allocuserpwd);
@@ -233,8 +234,7 @@ CURLcode Curl_output_ntlm(struct Curl_easy *data, bool proxy)
     result = Curl_auth_create_ntlm_type3_message(data, userp, passwdp,
                                                  ntlm, &ntlmmsg);
     if(!result && Curl_bufref_len(&ntlmmsg)) {
-      result = Curl_base64_encode(data,
-                                  (const char *) Curl_bufref_ptr(&ntlmmsg),
+      result = Curl_base64_encode((const char *) Curl_bufref_ptr(&ntlmmsg),
                                   Curl_bufref_len(&ntlmmsg), &base64, &len);
       if(!result) {
         free(*allocuserpwd);
index 5b4fa00baa975b7155d1be3991bff6c34ef85022..cec63b82c34ab606203609d467415373d6b5b4c8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index e13f485a734228ca71ce13c1aa4728057c35f9f0..cc20b3a801941a03e9f43921d4e1240b3b80f794 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -35,7 +37,6 @@
 #include "url.h"
 #include "select.h"
 #include "progress.h"
-#include "non-ascii.h"
 #include "connect.h"
 #include "curlx.h"
 #include "vtls/vtls.h"
@@ -173,7 +174,7 @@ static CURLcode connect_init(struct Curl_easy *data, bool reinit)
     s = calloc(1, sizeof(struct http_connect_state));
     if(!s)
       return CURLE_OUT_OF_MEMORY;
-    infof(data, "allocate connect buffer!");
+    infof(data, "allocate connect buffer");
     conn->connect_state = s;
     Curl_dyn_init(&s->rcvbuf, DYN_PROXY_CONNECT_HEADERS);
 
@@ -211,17 +212,15 @@ void Curl_connect_done(struct Curl_easy *data)
     Curl_dyn_free(&s->rcvbuf);
     Curl_dyn_free(&s->req);
 
-    /* restore the protocol pointer, if not already done */
-    if(s->prot_save)
-      data->req.p.http = s->prot_save;
-    s->prot_save = NULL;
+    /* restore the protocol pointer */
+    data->req.p.http = s->prot_save;
     data->info.httpcode = 0; /* clear it as it might've been used for the
                                 proxy */
     data->req.ignorebody = FALSE;
 #ifdef USE_HYPER
     data->state.hconnect = FALSE;
 #endif
-    infof(data, "CONNECT phase completed!");
+    infof(data, "CONNECT phase completed");
   }
 }
 
@@ -245,7 +244,7 @@ static CURLcode CONNECT_host(struct Curl_easy *data,
   if(!hostheader)
     return CURLE_OUT_OF_MEMORY;
 
-  if(!Curl_checkProxyheaders(data, conn, "Host")) {
+  if(!Curl_checkProxyheaders(data, conn, STRCONST("Host"))) {
     host = aprintf("Host: %s\r\n", hostheader);
     if(!host) {
       free(hostheader);
@@ -324,25 +323,29 @@ static CURLcode CONNECT(struct Curl_easy *data,
                         data->state.aptr.proxyuserpwd?
                         data->state.aptr.proxyuserpwd:"");
 
-        if(!result && !Curl_checkProxyheaders(data, conn, "User-Agent") &&
+        if(!result && !Curl_checkProxyheaders(data,
+                                              conn, STRCONST("User-Agent")) &&
            data->set.str[STRING_USERAGENT])
           result = Curl_dyn_addf(req, "User-Agent: %s\r\n",
                                  data->set.str[STRING_USERAGENT]);
 
-        if(!result && !Curl_checkProxyheaders(data, conn, "Proxy-Connection"))
-          result = Curl_dyn_add(req, "Proxy-Connection: Keep-Alive\r\n");
+        if(!result && !Curl_checkProxyheaders(data, conn,
+                                              STRCONST("Proxy-Connection")))
+          result = Curl_dyn_addn(req,
+                                 STRCONST("Proxy-Connection: Keep-Alive\r\n"));
 
         if(!result)
           result = Curl_add_custom_headers(data, TRUE, req);
 
         if(!result)
           /* CRLF terminate the request */
-          result = Curl_dyn_add(req, "\r\n");
+          result = Curl_dyn_addn(req, STRCONST("\r\n"));
 
         if(!result) {
           /* Send the connect request to the proxy */
           result = Curl_buffer_send(req, data, &data->info.request_size, 0,
                                     sockindex);
+          s->headerlines = 0;
         }
         if(result)
           failf(data, "Failed sending CONNECT to proxy");
@@ -388,8 +391,8 @@ static CURLcode CONNECT(struct Curl_easy *data,
 
         if(!result)
           /* send to debug callback! */
-          result = Curl_debug(data, CURLINFO_HEADER_OUT,
-                              k->upload_fromhere, bytes_written);
+          Curl_debug(data, CURLINFO_HEADER_OUT,
+                     k->upload_fromhere, bytes_written);
 
         s->nsend -= bytes_written;
         k->upload_fromhere += bytes_written;
@@ -470,7 +473,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
         }
 
         if(Curl_dyn_addn(&s->rcvbuf, &byte, 1)) {
-          failf(data, "CONNECT response too large!");
+          failf(data, "CONNECT response too large");
           return CURLE_RECV_ERROR;
         }
 
@@ -478,23 +481,18 @@ static CURLcode CONNECT(struct Curl_easy *data,
         if(byte != 0x0a)
           continue;
 
+        s->headerlines++;
         linep = Curl_dyn_ptr(&s->rcvbuf);
         perline = Curl_dyn_len(&s->rcvbuf); /* amount of bytes in this line */
 
-        /* convert from the network encoding */
-        result = Curl_convert_from_network(data, linep, perline);
-        /* Curl_convert_from_network calls failf if unsuccessful */
-        if(result)
-          return result;
-
         /* output debug if that is requested */
         Curl_debug(data, CURLINFO_HEADER_IN, linep, perline);
 
         if(!data->set.suppress_connect_headers) {
           /* send the header to the callback */
-          int writetype = CLIENTWRITE_HEADER;
-          if(data->set.include_header)
-            writetype |= CLIENTWRITE_BODY;
+          int writetype = CLIENTWRITE_HEADER | CLIENTWRITE_CONNECT |
+            (data->set.include_header ? CLIENTWRITE_BODY : 0) |
+            (s->headerlines == 1 ? CLIENTWRITE_STATUS : 0);
 
           result = Curl_client_write(data, writetype, linep, perline);
           if(result)
@@ -596,7 +594,8 @@ static CURLcode CONNECT(struct Curl_easy *data,
                                   strlen("Content-Length:"), NULL, 10, &s->cl);
           }
         }
-        else if(Curl_compareheader(linep, "Connection:", "close"))
+        else if(Curl_compareheader(linep,
+                                   STRCONST("Connection:"), STRCONST("close")))
           s->close_connection = TRUE;
         else if(checkprefix("Transfer-Encoding:", linep)) {
           if(k->httpcode/100 == 2) {
@@ -607,14 +606,17 @@ static CURLcode CONNECT(struct Curl_easy *data,
                   "CONNECT %03d response", k->httpcode);
           }
           else if(Curl_compareheader(linep,
-                                     "Transfer-Encoding:", "chunked")) {
+                                     STRCONST("Transfer-Encoding:"),
+                                     STRCONST("chunked"))) {
             infof(data, "CONNECT responded chunked");
             s->chunked_encoding = TRUE;
             /* init our chunky engine */
             Curl_httpchunk_init(data);
           }
         }
-        else if(Curl_compareheader(linep, "Proxy-Connection:", "close"))
+        else if(Curl_compareheader(linep,
+                                   STRCONST("Proxy-Connection:"),
+                                   STRCONST("close")))
           s->close_connection = TRUE;
         else if(2 == sscanf(linep, "HTTP/1.%d %d",
                             &subversion,
@@ -765,6 +767,9 @@ static CURLcode CONNECT(struct Curl_easy *data,
       }
 
       options = hyper_clientconn_options_new();
+      hyper_clientconn_options_set_preserve_header_case(options, 1);
+      hyper_clientconn_options_set_preserve_header_order(options, 1);
+
       if(!options) {
         failf(data, "Couldn't create hyper client options");
         result = CURLE_OUT_OF_MEMORY;
@@ -877,7 +882,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
           goto error;
       }
 
-      if(!Curl_checkProxyheaders(data, conn, "User-Agent") &&
+      if(!Curl_checkProxyheaders(data, conn, STRCONST("User-Agent")) &&
          data->set.str[STRING_USERAGENT]) {
         struct dynbuf ua;
         Curl_dyn_init(&ua, DYN_HTTP_REQUEST);
@@ -891,7 +896,7 @@ static CURLcode CONNECT(struct Curl_easy *data,
         Curl_dyn_free(&ua);
       }
 
-      if(!Curl_checkProxyheaders(data, conn, "Proxy-Connection")) {
+      if(!Curl_checkProxyheaders(data, conn, STRCONST("Proxy-Connection"))) {
         result = Curl_hyper_header(data, headers,
                                    "Proxy-Connection: Keep-Alive");
         if(result)
@@ -962,6 +967,13 @@ static CURLcode CONNECT(struct Curl_easy *data,
       break;
     }
 
+    if(conn->bits.close && data->req.newurl) {
+      /* Connection closed by server. Don't use it anymore */
+      Curl_closesocket(data, conn, conn->sock[sockindex]);
+      conn->sock[sockindex] = CURL_SOCKET_BAD;
+      break;
+    }
+
     /* If we are supposed to continue and request a new URL, which basically
      * means the HTTP authentication is still going on so if the tunnel
      * is complete we start over in INIT state */
index 2820e11841c269b3a0ad9c5468d81fe854d7f5c4..1e650ee5714be0fb5e84e4212f067ec8609a804e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -59,6 +61,7 @@ struct http_connect_state {
   struct dynbuf rcvbuf;
   struct dynbuf req;
   size_t nsend;
+  size_t headerlines;
   enum keeponval {
     KEEPON_DONE,
     KEEPON_CONNECT,
index 1d475a4effb889920593f8b1d435cca0babd0bea..2433d927ee33c4a5cb61b3625812ac25ec0d3d88 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
  /*
@@ -65,10 +67,10 @@ WINBASEAPI int WINAPI IdnToUnicode(DWORD dwFlags,
 
 #define IDN_MAX_LENGTH 255
 
-bool curl_win32_idn_to_ascii(const char *in, char **out);
-bool curl_win32_ascii_to_idn(const char *in, char **out);
+bool Curl_win32_idn_to_ascii(const char *in, char **out);
+bool Curl_win32_ascii_to_idn(const char *in, char **out);
 
-bool curl_win32_idn_to_ascii(const char *in, char **out)
+bool Curl_win32_idn_to_ascii(const char *in, char **out)
 {
   bool success = FALSE;
 
@@ -76,18 +78,22 @@ bool curl_win32_idn_to_ascii(const char *in, char **out)
   if(in_w) {
     wchar_t punycode[IDN_MAX_LENGTH];
     int chars = IdnToAscii(0, in_w, -1, punycode, IDN_MAX_LENGTH);
-    free(in_w);
+    curlx_unicodefree(in_w);
     if(chars) {
-      *out = curlx_convert_wchar_to_UTF8(punycode);
-      if(*out)
-        success = TRUE;
+      char *mstr = curlx_convert_wchar_to_UTF8(punycode);
+      if(mstr) {
+        *out = strdup(mstr);
+        curlx_unicodefree(mstr);
+        if(*out)
+          success = TRUE;
+      }
     }
   }
 
   return success;
 }
 
-bool curl_win32_ascii_to_idn(const char *in, char **out)
+bool Curl_win32_ascii_to_idn(const char *in, char **out)
 {
   bool success = FALSE;
 
@@ -97,11 +103,15 @@ bool curl_win32_ascii_to_idn(const char *in, char **out)
     wchar_t unicode[IDN_MAX_LENGTH];
     int chars = IdnToUnicode(0, in_w, curlx_uztosi(in_len),
                              unicode, IDN_MAX_LENGTH);
-    free(in_w);
+    curlx_unicodefree(in_w);
     if(chars) {
-      *out = curlx_convert_wchar_to_UTF8(unicode);
-      if(*out)
-        success = TRUE;
+      char *mstr = curlx_convert_wchar_to_UTF8(unicode);
+      if(mstr) {
+        *out = strdup(mstr);
+        curlx_unicodefree(mstr);
+        if(*out)
+          success = TRUE;
+      }
     }
   }
 
index 132b3eeeea3bfce7286f5e75d0fdf4313d09858a..c29194878f5a2023d82bf0746eb5806bd1f328da 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 ENABLE_IPV6
 /* Return the scope of the given address. */
 unsigned int Curl_ipv6_scope(const struct sockaddr *sa)
 {
-#ifndef ENABLE_IPV6
-  (void) sa;
-#else
   if(sa->sa_family == AF_INET6) {
     const struct sockaddr_in6 * sa6 = (const struct sockaddr_in6 *)(void *) sa;
     const unsigned char *b = sa6->sin6_addr.s6_addr;
@@ -88,27 +88,25 @@ unsigned int Curl_ipv6_scope(const struct sockaddr *sa)
       break;
     }
   }
-#endif
-
   return IPV6_SCOPE_GLOBAL;
 }
-
+#endif
 
 #if defined(HAVE_GETIFADDRS)
 
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+                          unsigned int remote_scope,
+                          unsigned int local_scope_id,
+#endif
+                          const char *interf,
                           char *buf, int buf_size)
 {
   struct ifaddrs *iface, *head;
   if2ip_result_t res = IF2IP_NOT_FOUND;
 
-#ifndef ENABLE_IPV6
-  (void) remote_scope;
-#endif
-
-#if !defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) || \
-    !defined(ENABLE_IPV6)
+#if defined(ENABLE_IPV6) && \
+    !defined(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID)
   (void) local_scope_id;
 #endif
 
@@ -181,8 +179,12 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
 
 #elif defined(HAVE_IOCTL_SIOCGIFADDR)
 
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+                          unsigned int remote_scope,
+                          unsigned int local_scope_id,
+#endif
+                          const char *interf,
                           char *buf, int buf_size)
 {
   struct ifreq req;
@@ -192,8 +194,10 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
   size_t len;
   const char *r;
 
+#ifdef ENABLE_IPV6
   (void)remote_scope;
   (void)local_scope_id;
+#endif
 
   if(!interf || (af != AF_INET))
     return IF2IP_NOT_FOUND;
@@ -230,13 +234,19 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
 
 #else
 
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+                          unsigned int remote_scope,
+                          unsigned int local_scope_id,
+#endif
+                          const char *interf,
                           char *buf, int buf_size)
 {
     (void) af;
+#ifdef ENABLE_IPV6
     (void) remote_scope;
     (void) local_scope_id;
+#endif
     (void) interf;
     (void) buf;
     (void) buf_size;
index e074e476dc32d3bf7d7ad534823f356d53bd9a2e..5d15459e98ea45a21b69f1335d66298fe64101ef 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2020, 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
 #define IPV6_SCOPE_UNIQUELOCAL  3       /* Unique local */
 #define IPV6_SCOPE_NODELOCAL    4       /* Loopback. */
 
+#ifdef ENABLE_IPV6
 unsigned int Curl_ipv6_scope(const struct sockaddr *sa);
+#else
+#define Curl_ipv6_scope(x) 0
+#endif
 
 typedef enum {
   IF2IP_NOT_FOUND = 0, /* Interface not found */
@@ -38,8 +44,12 @@ typedef enum {
   IF2IP_FOUND = 2 /* The address has been stored in "buf" */
 } if2ip_result_t;
 
-if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope,
-                          unsigned int local_scope_id, const char *interf,
+if2ip_result_t Curl_if2ip(int af,
+#ifdef ENABLE_IPV6
+                          unsigned int remote_scope,
+                          unsigned int local_scope_id,
+#endif
+                          const char *interf,
                           char *buf, int buf_size);
 
 #ifdef __INTERIX
index 958ad1456c1b85d451bd6ab8d8deb3320a0f5849..ffa08bf7a403c4492fbfb3ecff7474ab4c209f56 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC2195 CRAM-MD5 authentication
  * RFC2595 Using TLS with IMAP, POP3 and ACAP
  * RFC2831 DIGEST-MD5 authentication
@@ -81,6 +83,7 @@
 #include "bufref.h"
 #include "curl_sasl.h"
 #include "warnless.h"
+#include "curl_ctype.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -507,7 +510,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(!conn->bits.user_passwd) {
+  if(!data->state.aptr.user) {
     state(data, IMAP_STOP);
 
     return result;
@@ -608,7 +611,7 @@ static CURLcode imap_perform_authentication(struct Curl_easy *data,
   /* Check if already authenticated OR if there is enough data to authenticate
      with and end the connect phase if we don't */
   if(imapc->preauth ||
-     !Curl_sasl_can_authenticate(&imapc->sasl, conn)) {
+     !Curl_sasl_can_authenticate(&imapc->sasl, data)) {
     state(data, IMAP_STOP);
     return result;
   }
@@ -624,7 +627,7 @@ static CURLcode imap_perform_authentication(struct Curl_easy *data,
       result = imap_perform_login(data, conn);
     else {
       /* Other mechanisms not supported */
-      infof(data, "No known authentication mechanisms supported!");
+      infof(data, "No known authentication mechanisms supported");
       result = CURLE_LOGIN_DENIED;
     }
   }
@@ -777,7 +780,7 @@ static CURLcode imap_perform_append(struct Curl_easy *data)
                                        NULL, MIMESTRATEGY_MAIL);
 
     if(!result)
-      if(!Curl_checkheaders(data, "Mime-Version"))
+      if(!Curl_checkheaders(data, STRCONST("Mime-Version")))
         result = Curl_mime_add_header(&data->set.mimepost.curlheaders,
                                       "Mime-Version: 1.0");
 
@@ -874,7 +877,7 @@ static CURLcode imap_state_servergreet_resp(struct Curl_easy *data,
     /* PREAUTH */
     struct imap_conn *imapc = &conn->proto.imapc;
     imapc->preauth = TRUE;
-    infof(data, "PREAUTH connection, already authenticated!");
+    infof(data, "PREAUTH connection, already authenticated");
   }
   else if(imapcode != IMAP_RESP_OK) {
     failf(data, "Got unexpected imap-server response");
@@ -1883,22 +1886,17 @@ static char *imap_atom(const char *str, bool escape_only)
  */
 static bool imap_is_bchar(char ch)
 {
+  /* Performing the alnum check with this macro is faster because of ASCII
+     arithmetic */
+  if(ISALNUM(ch))
+    return true;
+
   switch(ch) {
     /* bchar */
     case ':': case '@': case '/':
     /* bchar -> achar */
     case '&': case '=':
-    /* bchar -> achar -> uchar -> unreserved */
-    case '0': case '1': case '2': case '3': case '4': case '5': case '6':
-    case '7': case '8': case '9':
-    case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
-    case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N':
-    case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U':
-    case 'V': case 'W': case 'X': case 'Y': case 'Z':
-    case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g':
-    case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
-    case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u':
-    case 'v': case 'w': case 'x': case 'y': case 'z':
+    /* bchar -> achar -> uchar -> unreserved (without alphanumeric) */
     case '-': case '.': case '_': case '~':
     /* bchar -> achar -> uchar -> sub-delims-sh */
     case '!': case '$': case '\'': case '(': case ')': case '*':
@@ -1986,7 +1984,7 @@ static CURLcode imap_parse_url_path(struct Curl_easy *data)
     if(end > begin && end[-1] == '/')
       end--;
 
-    result = Curl_urldecode(data, begin, end - begin, &imap->mailbox, NULL,
+    result = Curl_urldecode(begin, end - begin, &imap->mailbox, NULL,
                             REJECT_CTRL);
     if(result)
       return result;
@@ -2009,7 +2007,7 @@ static CURLcode imap_parse_url_path(struct Curl_easy *data)
       return CURLE_URL_MALFORMAT;
 
     /* Decode the name parameter */
-    result = Curl_urldecode(data, begin, ptr - begin, &name, NULL,
+    result = Curl_urldecode(begin, ptr - begin, &name, NULL,
                             REJECT_CTRL);
     if(result)
       return result;
@@ -2020,7 +2018,7 @@ static CURLcode imap_parse_url_path(struct Curl_easy *data)
       ptr++;
 
     /* Decode the value parameter */
-    result = Curl_urldecode(data, begin, ptr - begin, &value, &valuelen,
+    result = Curl_urldecode(begin, ptr - begin, &value, &valuelen,
                             REJECT_CTRL);
     if(result) {
       free(name);
@@ -2108,7 +2106,7 @@ static CURLcode imap_parse_custom_request(struct Curl_easy *data)
 
   if(custom) {
     /* URL decode the custom request */
-    result = Curl_urldecode(data, custom, 0, &imap->custom, NULL, REJECT_CTRL);
+    result = Curl_urldecode(custom, 0, &imap->custom, NULL, REJECT_CTRL);
 
     /* Extract the parameters if specified */
     if(!result) {
index ef6515d8c295684695ffec69f9811b9cb2a5b543..43cc1e98fc13b4e38c5ff4f0253499bbaa1fc3f4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "pingpong.h"
index b5f9b808afd0592340c54e1db892768f67ffcccf..024f8da36dacb742c2772785d52a7804cedcbe68 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1996-2021  Internet Software Consortium.
+ * Copyright (C) 1996-2022  Internet Software Consortium.
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -13,6 +13,8 @@
  * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * SPDX-License-Identifier: ISC
  */
 /*
  * Original code by Paul Vixie. "curlified" by Gisle Vanem.
index 067632aaee3cbc2d9e2b0faf0a48f9c1791ae172..18fbd8ba3a94371b78fd61514a35cb9975fc2658 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index ada57af289a4e6ba80be616a3cee97c12aca0119..47fb77834da2b31fe583a9d500a9c7509f5f857f 100644 (file)
@@ -1,6 +1,6 @@
 /* This is from the BIND 4.9.4 release, modified to compile by itself */
 
-/* Copyright (c) 1996 - 2021 by Internet Software Consortium.
+/* Copyright (c) 2003 - 2022 by Internet Software Consortium.
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -14,6 +14,8 @@
  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  * SOFTWARE.
+ *
+ * SPDX-License-Identifier: ISC
  */
 
 #include "curl_setup.h"
index ec1237309fb4dd337da98ea16b372ae57ef7a942..92ae93ea1f25a72ac22975cd74554e541d65ad9f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 5edd34cbdf957e16fe49a4a2b5108c243e6df875..517491c4658bf2fcb7f1d3c6544a054ca03cd826 100644 (file)
@@ -2,9 +2,11 @@
  *
  * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
  * (Royal Institute of Technology, Stockholm, Sweden).
- * Copyright (c) 2004 - 2021 Daniel Stenberg
+ * Copyright (c) 2004 - 2022 Daniel Stenberg
  * All rights reserved.
  *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -47,7 +49,6 @@
 #include "sendf.h"
 #include "curl_krb5.h"
 #include "warnless.h"
-#include "non-ascii.h"
 #include "strcase.h"
 #include "strdup.h"
 
@@ -81,11 +82,6 @@ static CURLcode ftpsend(struct Curl_easy *data, struct connectdata *conn,
   write_len += 2;
   bytes_written = 0;
 
-  result = Curl_convert_to_network(data, s, write_len);
-  /* Curl_convert_to_network calls failf if unsuccessful */
-  if(result)
-    return result;
-
   for(;;) {
 #ifdef HAVE_GSSAPI
     conn->data_prot = PROT_CMD;
@@ -146,11 +142,8 @@ krb5_decode(void *app_data, void *buf, int len,
   enc.value = buf;
   enc.length = len;
   maj = gss_unwrap(&min, *context, &enc, &dec, NULL, NULL);
-  if(maj != GSS_S_COMPLETE) {
-    if(len >= 4)
-      strcpy(buf, "599 ");
+  if(maj != GSS_S_COMPLETE)
     return -1;
-  }
 
   memcpy(buf, dec.value, dec.length);
   len = curlx_uztosi(dec.length);
@@ -298,7 +291,7 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn)
       if(output_buffer.length) {
         char *cmd;
 
-        result = Curl_base64_encode(data, (char *)output_buffer.value,
+        result = Curl_base64_encode((char *)output_buffer.value,
                                     output_buffer.length, &p, &base64_sz);
         if(result) {
           infof(data, "base64-encoding: %s", curl_easy_strerror(result));
@@ -512,6 +505,7 @@ static CURLcode read_data(struct connectdata *conn,
 {
   int len;
   CURLcode result;
+  int nread;
 
   result = socket_read(fd, &len, sizeof(len));
   if(result)
@@ -520,7 +514,10 @@ static CURLcode read_data(struct connectdata *conn,
   if(len) {
     /* only realloc if there was a length */
     len = ntohl(len);
-    buf->data = Curl_saferealloc(buf->data, len);
+    if(len > CURL_MAX_INPUT_LENGTH)
+      len = 0;
+    else
+      buf->data = Curl_saferealloc(buf->data, len);
   }
   if(!len || !buf->data)
     return CURLE_OUT_OF_MEMORY;
@@ -528,8 +525,11 @@ static CURLcode read_data(struct connectdata *conn,
   result = socket_read(fd, buf->data, len);
   if(result)
     return result;
-  buf->size = conn->mech->decode(conn->app_data, buf->data, len,
-                                 conn->data_prot, conn);
+  nread = conn->mech->decode(conn->app_data, buf->data, len,
+                             conn->data_prot, conn);
+  if(nread < 0)
+    return CURLE_RECV_ERROR;
+  buf->size = (size_t)nread;
   buf->index = 0;
   return CURLE_OK;
 }
@@ -612,7 +612,7 @@ static void do_sec_send(struct Curl_easy *data, struct connectdata *conn,
     return; /* error */
 
   if(iscmd) {
-    error = Curl_base64_encode(data, buffer, curlx_sitouz(bytes),
+    error = Curl_base64_encode(buffer, curlx_sitouz(bytes),
                                &cmd_buffer, &cmd_size);
     if(error) {
       free(buffer);
index 3154db5cf0dd131d43c9e48ccb0c8c18e3a43e7c..b073349042b179ebc21663ceee5a1b5e45a78615 100644 (file)
@@ -5,7 +5,7 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
  * OpenLDAP library versions, USE_OPENLDAP shall not be defined.
  */
 
+/* Wincrypt must be included before anything that could include OpenSSL. */
+#if defined(USE_WIN32_CRYPTO)
+#include <wincrypt.h>
+/* Undefine wincrypt conflicting symbols for BoringSSL. */
+#undef X509_NAME
+#undef X509_EXTENSIONS
+#undef PKCS7_ISSUER_AND_SERIAL
+#undef PKCS7_SIGNER_INFO
+#undef OCSP_REQUEST
+#undef OCSP_RESPONSE
+#endif
+
 #ifdef USE_WIN32_LDAP           /* Use Windows LDAP implementation. */
 # include <winldap.h>
 # ifndef LDAP_VENDOR_NAME
@@ -306,8 +320,8 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
   rc = _ldap_url_parse(data, conn, &ludp);
 #endif
   if(rc) {
-    failf(data, "LDAP local: %s", ldap_err2string(rc));
-    result = CURLE_LDAP_INVALID_URL;
+    failf(data, "Bad LDAP URL: %s", ldap_err2string(rc));
+    result = CURLE_URL_MALFORMAT;
     goto quit;
   }
 
@@ -328,7 +342,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
   host = conn->host.name;
 #endif
 
-  if(conn->bits.user_passwd) {
+  if(data->state.aptr.user) {
     user = conn->user;
     passwd = conn->passwd;
   }
@@ -342,7 +356,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
 #ifdef HAVE_LDAP_SSL
 #ifdef USE_WIN32_LDAP
     /* Win32 LDAP SDK doesn't support insecure mode without CA! */
-    server = ldap_sslinit(host, (int)conn->port, 1);
+    server = ldap_sslinit(host, conn->port, 1);
     ldap_set_option(server, LDAP_OPT_SSL, LDAP_OPT_ON);
 #else
     int ldap_option;
@@ -361,7 +375,7 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
          (strcasecompare(data->set.ssl.cert_type, "DER")))
         cert_type = LDAPSSL_CERT_FILETYPE_DER;
       if(!ldap_ca) {
-        failf(data, "LDAP local: ERROR %s CA cert not set!",
+        failf(data, "LDAP local: ERROR %s CA cert not set",
               (cert_type == LDAPSSL_CERT_FILETYPE_DER ? "DER" : "PEM"));
         result = CURLE_SSL_CERTPROBLEM;
         goto quit;
@@ -388,9 +402,9 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
       result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
-    server = ldapssl_init(host, (int)conn->port, 1);
+    server = ldapssl_init(host, conn->port, 1);
     if(!server) {
-      failf(data, "LDAP local: Cannot connect to %s:%ld",
+      failf(data, "LDAP local: Cannot connect to %s:%u",
             conn->host.dispname, conn->port);
       result = CURLE_COULDNT_CONNECT;
       goto quit;
@@ -400,12 +414,12 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
       /* OpenLDAP SDK supports BASE64 files. */
       if((data->set.ssl.cert_type) &&
          (!strcasecompare(data->set.ssl.cert_type, "PEM"))) {
-        failf(data, "LDAP local: ERROR OpenLDAP only supports PEM cert-type!");
+        failf(data, "LDAP local: ERROR OpenLDAP only supports PEM cert-type");
         result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
       if(!ldap_ca) {
-        failf(data, "LDAP local: ERROR PEM CA cert not set!");
+        failf(data, "LDAP local: ERROR PEM CA cert not set");
         result = CURLE_SSL_CERTPROBLEM;
         goto quit;
       }
@@ -429,9 +443,9 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
       result = CURLE_SSL_CERTPROBLEM;
       goto quit;
     }
-    server = ldap_init(host, (int)conn->port);
+    server = ldap_init(host, conn->port);
     if(!server) {
-      failf(data, "LDAP local: Cannot connect to %s:%ld",
+      failf(data, "LDAP local: Cannot connect to %s:%u",
             conn->host.dispname, conn->port);
       result = CURLE_COULDNT_CONNECT;
       goto quit;
@@ -470,9 +484,9 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
     goto quit;
   }
   else {
-    server = ldap_init(host, (int)conn->port);
+    server = ldap_init(host, conn->port);
     if(!server) {
-      failf(data, "LDAP local: Cannot connect to %s:%ld",
+      failf(data, "LDAP local: Cannot connect to %s:%u",
             conn->host.dispname, conn->port);
       result = CURLE_COULDNT_CONNECT;
       goto quit;
@@ -636,11 +650,8 @@ static CURLcode ldap_do(struct Curl_easy *data, bool *done)
           if((attr_len > 7) &&
              (strcmp(";binary", (char *) attr + (attr_len - 7)) == 0)) {
             /* Binary attribute, encode to base64. */
-            result = Curl_base64_encode(data,
-                                        vals[i]->bv_val,
-                                        vals[i]->bv_len,
-                                        &val_b64,
-                                        &val_b64_sz);
+            result = Curl_base64_encode(vals[i]->bv_val, vals[i]->bv_len,
+                                        &val_b64, &val_b64_sz);
             if(result) {
               ldap_value_free_len(vals);
               FREE_ON_WINLDAP(attr);
@@ -870,7 +881,7 @@ static int _ldap_url_parse2(struct Curl_easy *data,
     LDAP_TRACE(("DN '%s'\n", dn));
 
     /* Unescape the DN */
-    result = Curl_urldecode(data, dn, 0, &unescaped, NULL, REJECT_ZERO);
+    result = Curl_urldecode(dn, 0, &unescaped, NULL, REJECT_ZERO);
     if(result) {
       rc = LDAP_NO_MEMORY;
 
@@ -935,7 +946,7 @@ static int _ldap_url_parse2(struct Curl_easy *data,
       LDAP_TRACE(("attr[%zu] '%s'\n", i, attributes[i]));
 
       /* Unescape the attribute */
-      result = Curl_urldecode(data, attributes[i], 0, &unescaped, NULL,
+      result = Curl_urldecode(attributes[i], 0, &unescaped, NULL,
                               REJECT_ZERO);
       if(result) {
         free(attributes);
@@ -1005,7 +1016,7 @@ static int _ldap_url_parse2(struct Curl_easy *data,
     LDAP_TRACE(("filter '%s'\n", filter));
 
     /* Unescape the filter */
-    result = Curl_urldecode(data, filter, 0, &unescaped, NULL, REJECT_ZERO);
+    result = Curl_urldecode(filter, 0, &unescaped, NULL, REJECT_ZERO);
     if(result) {
       rc = LDAP_NO_MEMORY;
 
index 0e5311b5a4e7b6dae8b459f2b6f7e3c07cf09734..fee5827e48192488a6debc08330869efca3061c8 100644 (file)
@@ -15,7 +15,7 @@
        <string>se.curl.libcurl</string>
 
        <key>CFBundleVersion</key>
-       <string>7.81.0</string>
+       <string>7.86.0-DEV</string>
 
        <key>CFBundleName</key>
        <string>libcurl</string>
@@ -27,9 +27,9 @@
        <string>????</string>
 
        <key>CFBundleShortVersionString</key>
-       <string>libcurl 7.81.0</string>
+       <string>libcurl 7.86.0-DEV</string>
 
        <key>CFBundleGetInfoString</key>
-       <string>libcurl.plist 7.81.0</string>
+       <string>libcurl.plist 7.86.0-DEV</string>
 </dict>
 </plist>
diff --git a/lib/libcurl.plist.in b/lib/libcurl.plist.in
new file mode 100644 (file)
index 0000000..d2e6492
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>6.0</string>
+
+       <key>CFBundleDevelopmentRegion</key>
+       <string>English</string>
+
+       <key>CFBundleExecutable</key>
+       <string>curl</string>
+
+       <key>CFBundleIdentifier</key>
+       <string>se.curl.libcurl</string>
+
+       <key>CFBundleVersion</key>
+       <string>@CURL_PLIST_VERSION@</string>
+
+       <key>CFBundleName</key>
+       <string>libcurl</string>
+
+       <key>CFBundlePackageType</key>
+       <string>FMWK</string>
+
+       <key>CFBundleSignature</key>
+       <string>????</string>
+
+       <key>CFBundleShortVersionString</key>
+       <string>libcurl @CURL_PLIST_VERSION@</string>
+
+       <key>CFBundleGetInfoString</key>
+       <string>libcurl.plist @CURL_PLIST_VERSION@</string>
+</dict>
+</plist>
index fde6c8cae128c6ec9f0716e111a9ac685db2eff3..23134a7102853343066b9a9289b47785d5a108bb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <winver.h>
 #include "../include/curl/curlver.h"
index e78da7da827ff706a946b5a3758bf7d01dcff7c4..fa2d366cb42b349e4db787791bb6e18a2bc7bcdb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index ceae2dd1b73590928f73234c31ab73a19a7ce91a..2fcb91ca50c300cb67ab709bf259be70cfadc9fa 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 698a8f4deb4beacda1a84c7c9a43ca4e910b71ae..d5c8fe615e1315748537476c4164284ddde9598c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # libcurl Makefile for AmigaOS ...
@@ -29,7 +31,7 @@ ATCPSDKI= /GG/netinclude
 
 
 CC = m68k-amigaos-gcc
-CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall
+CFLAGS = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
 
 include Makefile.inc
 OBJS = $(CSOURCES:.c=.o)
index ef1a24a7f54a554d5ec5b1de7aa488b7b7169830..bb95f2bbfdc72e2951ab6e6d95fdb342ece1b596 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2003 - 2021, Gisle Vanem <gvanem@yahoo.no>.
+# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
 # Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 #
index 117cce4fd989daee826537a6a070a6ce7da10f4c..e976fe7bdc07b69374ff08b4d9c52da3e27bdcb2 100644 (file)
--- a/lib/md4.c
+++ b/lib/md4.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -30,7 +32,8 @@
 
 #ifdef USE_OPENSSL
 #include <openssl/opensslconf.h>
-#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3)
+#if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
+   !defined(USE_AMISSL)
 /* OpenSSL 3.0.0 marks the MD4 functions as deprecated */
 #define OPENSSL_NO_MD4
 #endif
@@ -39,7 +42,7 @@
 #ifdef USE_WOLFSSL
 #include <wolfssl/options.h>
 #ifdef NO_MD4
-#define OPENSSL_NO_MD4
+#define WOLFSSL_NO_MD4
 #endif
 #endif
 
@@ -82,9 +85,11 @@ static void MD4_Final(unsigned char *result, MD4_CTX *ctx)
   md4_digest(ctx, MD4_DIGEST_SIZE, result);
 }
 
-#elif (defined(USE_OPENSSL) || defined(USE_WOLFSSL)) && \
-      !defined(OPENSSL_NO_MD4)
 /* When OpenSSL or wolfSSL is available, we use their MD4 functions. */
+#elif defined(USE_WOLFSSL) && !defined(WOLFSSL_NO_MD4)
+#include <wolfssl/openssl/md4.h>
+
+#elif defined(USE_OPENSSL) && !defined(OPENSSL_NO_MD4)
 #include <openssl/md4.h>
 
 #elif (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && \
index c6923e036b91201a114ef302e39a82122b35b1b7..5be639929d7081b6c6a8657e3b7e90ff4c8b8270 100644 (file)
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -39,7 +41,7 @@
 #endif
 #endif /* USE_MBEDTLS */
 
-#if defined(USE_OPENSSL) && !defined(USE_AMISSL)
+#ifdef USE_OPENSSL
   #include <openssl/opensslconf.h>
   #if !defined(OPENSSL_NO_MD5) && !defined(OPENSSL_NO_DEPRECATED_3_0)
     #define USE_OPENSSL_MD5
 /* The last #include file should be: */
 #include "memdebug.h"
 
-typedef struct md5_ctx MD5_CTX;
+typedef struct md5_ctx my_md5_ctx;
 
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
 {
   md5_init(ctx);
   return CURLE_OK;
 }
 
-static void MD5_Update(MD5_CTX *ctx,
-                       const unsigned char *input,
-                       unsigned int inputLen)
+static void my_md5_update(my_md5_ctx *ctx,
+                          const unsigned char *input,
+                          unsigned int inputLen)
 {
   md5_update(ctx, inputLen, input);
 }
 
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
 {
   md5_digest(ctx, 16, digest);
 }
@@ -83,11 +85,38 @@ static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
 #elif defined(USE_OPENSSL_MD5) || defined(USE_WOLFSSL_MD5)
 
 /* When OpenSSL or wolfSSL is available, we use their MD5 functions. */
+#if defined(USE_OPENSSL_MD5)
 #include <openssl/md5.h>
+#elif defined(USE_WOLFSSL_MD5)
+#include <wolfssl/openssl/md5.h>
+#endif
+
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
+typedef MD5_CTX my_md5_ctx;
+
+static CURLcode my_md5_init(my_md5_ctx *ctx)
+{
+  if(!MD5_Init(ctx))
+    return CURLE_OUT_OF_MEMORY;
+
+  return CURLE_OK;
+}
+
+static void my_md5_update(my_md5_ctx *ctx,
+                          const unsigned char *input,
+                          unsigned int len)
+{
+  (void)MD5_Update(ctx, input, len);
+}
+
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
+{
+  (void)MD5_Final(digest, ctx);
+}
+
 #elif defined(USE_MBEDTLS)
 
 #include <mbedtls/md5.h>
@@ -97,21 +126,25 @@ static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
 /* The last #include file should be: */
 #include "memdebug.h"
 
-typedef mbedtls_md5_context MD5_CTX;
+typedef mbedtls_md5_context my_md5_ctx;
 
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
 {
-#if !defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
-  (void) mbedtls_md5_starts(ctx);
+#if (MBEDTLS_VERSION_NUMBER >= 0x03000000)
+  if(mbedtls_md5_starts(ctx))
+    return CURLE_OUT_OF_MEMORY;
+#elif defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
+  if(mbedtls_md5_starts_ret(ctx))
+    return CURLE_OUT_OF_MEMORY;
 #else
-  (void) mbedtls_md5_starts_ret(ctx);
+  (void)mbedtls_md5_starts(ctx);
 #endif
   return CURLE_OK;
 }
 
-static void MD5_Update(MD5_CTX *ctx,
-                       const unsigned char *data,
-                       unsigned int length)
+static void my_md5_update(my_md5_ctx *ctx,
+                          const unsigned char *data,
+                          unsigned int length)
 {
 #if !defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
   (void) mbedtls_md5_update(ctx, data, length);
@@ -120,7 +153,7 @@ static void MD5_Update(MD5_CTX *ctx,
 #endif
 }
 
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
 {
 #if !defined(HAS_MBEDTLS_RESULT_CODE_BASED_FUNCTIONS)
   (void) mbedtls_md5_finish(ctx, digest);
@@ -143,25 +176,27 @@ static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
    Declaring the functions as static like this seems to be a bit more
    reliable than defining COMMON_DIGEST_FOR_OPENSSL on older cats. */
 #  include <CommonCrypto/CommonDigest.h>
-#  define MD5_CTX CC_MD5_CTX
+#  define my_md5_ctx CC_MD5_CTX
 #include "curl_memory.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
 {
-  CC_MD5_Init(ctx);
+  if(!CC_MD5_Init(ctx))
+    return CURLE_OUT_OF_MEMORY;
+
   return CURLE_OK;
 }
 
-static void MD5_Update(MD5_CTX *ctx,
-                       const unsigned char *input,
-                       unsigned int inputLen)
+static void my_md5_update(my_md5_ctx *ctx,
+                          const unsigned char *input,
+                          unsigned int inputLen)
 {
   CC_MD5_Update(ctx, input, inputLen);
 }
 
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
 {
   CC_MD5_Final(digest, ctx);
 }
@@ -177,25 +212,30 @@ struct md5_ctx {
   HCRYPTPROV hCryptProv;
   HCRYPTHASH hHash;
 };
-typedef struct md5_ctx MD5_CTX;
+typedef struct md5_ctx my_md5_ctx;
 
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
 {
-  if(CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
-                         CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {
-    CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash);
+  if(!CryptAcquireContext(&ctx->hCryptProv, NULL, NULL, PROV_RSA_FULL,
+                          CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+    return CURLE_OUT_OF_MEMORY;
+
+  if(!CryptCreateHash(ctx->hCryptProv, CALG_MD5, 0, 0, &ctx->hHash)) {
+    CryptReleaseContext(ctx->hCryptProv, 0);
+    return CURLE_OUT_OF_MEMORY;
   }
+
   return CURLE_OK;
 }
 
-static void MD5_Update(MD5_CTX *ctx,
-                       const unsigned char *input,
-                       unsigned int inputLen)
+static void my_md5_update(my_md5_ctx *ctx,
+                          const unsigned char *input,
+                          unsigned int inputLen)
 {
   CryptHashData(ctx->hHash, (unsigned char *)input, inputLen, 0);
 }
 
-static void MD5_Final(unsigned char *digest, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *digest, my_md5_ctx *ctx)
 {
   unsigned long length = 0;
   CryptGetHashParam(ctx->hHash, HP_HASHVAL, NULL, &length, 0);
@@ -263,11 +303,12 @@ struct md5_ctx {
   unsigned char buffer[64];
   MD5_u32plus block[16];
 };
-typedef struct md5_ctx MD5_CTX;
+typedef struct md5_ctx my_md5_ctx;
 
-static CURLcode MD5_Init(MD5_CTX *ctx);
-static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
-static void MD5_Final(unsigned char *result, MD5_CTX *ctx);
+static CURLcode my_md5_init(my_md5_ctx *ctx);
+static void my_md5_update(my_md5_ctx *ctx, const void *data,
+                          unsigned long size);
+static void my_md5_final(unsigned char *result, my_md5_ctx *ctx);
 
 /*
  * The basic MD5 functions.
@@ -318,7 +359,7 @@ static void MD5_Final(unsigned char *result, MD5_CTX *ctx);
  * This processes one or more 64-byte data blocks, but does NOT update
  * the bit counters.  There are no alignment requirements.
  */
-static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
+static const void *body(my_md5_ctx *ctx, const void *data, unsigned long size)
 {
   const unsigned char *ptr;
   MD5_u32plus a, b, c, d;
@@ -426,7 +467,7 @@ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
   return ptr;
 }
 
-static CURLcode MD5_Init(MD5_CTX *ctx)
+static CURLcode my_md5_init(my_md5_ctx *ctx)
 {
   ctx->a = 0x67452301;
   ctx->b = 0xefcdab89;
@@ -439,7 +480,8 @@ static CURLcode MD5_Init(MD5_CTX *ctx)
   return CURLE_OK;
 }
 
-static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
+static void my_md5_update(my_md5_ctx *ctx, const void *data,
+                          unsigned long size)
 {
   MD5_u32plus saved_lo;
   unsigned long used;
@@ -474,7 +516,7 @@ static void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
   memcpy(ctx->buffer, data, size);
 }
 
-static void MD5_Final(unsigned char *result, MD5_CTX *ctx)
+static void my_md5_final(unsigned char *result, my_md5_ctx *ctx)
 {
   unsigned long used, available;
 
@@ -530,13 +572,13 @@ static void MD5_Final(unsigned char *result, MD5_CTX *ctx)
 const struct HMAC_params Curl_HMAC_MD5[] = {
   {
     /* Hash initialization function. */
-    CURLX_FUNCTION_CAST(HMAC_hinit_func, MD5_Init),
+    CURLX_FUNCTION_CAST(HMAC_hinit_func, my_md5_init),
     /* Hash update function. */
-    CURLX_FUNCTION_CAST(HMAC_hupdate_func, MD5_Update),
+    CURLX_FUNCTION_CAST(HMAC_hupdate_func, my_md5_update),
     /* Hash computation end function. */
-    CURLX_FUNCTION_CAST(HMAC_hfinal_func, MD5_Final),
+    CURLX_FUNCTION_CAST(HMAC_hfinal_func, my_md5_final),
     /* Size of hash context structure. */
-    sizeof(MD5_CTX),
+    sizeof(my_md5_ctx),
     /* Maximum key length. */
     64,
     /* Result size. */
@@ -547,13 +589,13 @@ const struct HMAC_params Curl_HMAC_MD5[] = {
 const struct MD5_params Curl_DIGEST_MD5[] = {
   {
     /* Digest initialization function */
-    CURLX_FUNCTION_CAST(Curl_MD5_init_func, MD5_Init),
+    CURLX_FUNCTION_CAST(Curl_MD5_init_func, my_md5_init),
     /* Digest update function */
-    CURLX_FUNCTION_CAST(Curl_MD5_update_func, MD5_Update),
+    CURLX_FUNCTION_CAST(Curl_MD5_update_func, my_md5_update),
     /* Digest computation end function */
-    CURLX_FUNCTION_CAST(Curl_MD5_final_func, MD5_Final),
+    CURLX_FUNCTION_CAST(Curl_MD5_final_func, my_md5_final),
     /* Size of digest context struct */
-    sizeof(MD5_CTX),
+    sizeof(my_md5_ctx),
     /* Result size */
     16
   }
@@ -564,15 +606,17 @@ const struct MD5_params Curl_DIGEST_MD5[] = {
  * Returns CURLE_OK on success.
  */
 CURLcode Curl_md5it(unsigned char *outbuffer, const unsigned char *input,
-                const size_t len)
+                    const size_t len)
 {
-  MD5_CTX ctx;
+  CURLcode result;
+  my_md5_ctx ctx;
 
-  MD5_Init(&ctx);
-  MD5_Update(&ctx, input, curlx_uztoui(len));
-  MD5_Final(outbuffer, &ctx);
-
-  return CURLE_OK;
+  result = my_md5_init(&ctx);
+  if(!result) {
+    my_md5_update(&ctx, input, curlx_uztoui(len));
+    my_md5_final(outbuffer, &ctx);
+  }
+  return result;
 }
 
 struct MD5_context *Curl_MD5_init(const struct MD5_params *md5params)
@@ -594,7 +638,11 @@ struct MD5_context *Curl_MD5_init(const struct MD5_params *md5params)
 
   ctxt->md5_hash = md5params;
 
-  (*md5params->md5_init_func)(ctxt->md5_hashctx);
+  if((*md5params->md5_init_func)(ctxt->md5_hashctx)) {
+    free(ctxt->md5_hashctx);
+    free(ctxt);
+    return NULL;
+  }
 
   return ctxt;
 }
index 050c5d4b2f1e2a18a7d6f6bc8e629c2906bdcc43..15fb4915594b317dd108e7503c30585c43ccb9d1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -127,7 +129,8 @@ static bool countcheck(const char *func, int line, const char *source)
   return FALSE; /* allow this */
 }
 
-void *curl_dbg_malloc(size_t wantedsize, int line, const char *source)
+ALLOC_FUNC void *curl_dbg_malloc(size_t wantedsize,
+                                 int line, const char *source)
 {
   struct memdebug *mem;
   size_t size;
@@ -153,8 +156,8 @@ void *curl_dbg_malloc(size_t wantedsize, int line, const char *source)
   return (mem ? mem->mem : NULL);
 }
 
-void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
-                      int line, const char *source)
+ALLOC_FUNC void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
+                                 int line, const char *source)
 {
   struct memdebug *mem;
   size_t size, user_size;
@@ -181,7 +184,8 @@ void *curl_dbg_calloc(size_t wanted_elements, size_t wanted_size,
   return (mem ? mem->mem : NULL);
 }
 
-char *curl_dbg_strdup(const char *str, int line, const char *source)
+ALLOC_FUNC char *curl_dbg_strdup(const char *str,
+                                 int line, const char *source)
 {
   char *mem;
   size_t len;
@@ -205,7 +209,8 @@ char *curl_dbg_strdup(const char *str, int line, const char *source)
 }
 
 #if defined(WIN32) && defined(UNICODE)
-wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line, const char *source)
+ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str,
+                                    int line, const char *source)
 {
   wchar_t *mem;
   size_t wsiz, bsiz;
@@ -408,8 +413,8 @@ int curl_dbg_sclose(curl_socket_t sockfd, int line, const char *source)
   return res;
 }
 
-FILE *curl_dbg_fopen(const char *file, const char *mode,
-                    int line, const char *source)
+ALLOC_FUNC FILE *curl_dbg_fopen(const char *file, const char *mode,
+                                int line, const char *source)
 {
   FILE *res = fopen(file, mode);
 
@@ -420,8 +425,8 @@ FILE *curl_dbg_fopen(const char *file, const char *mode,
   return res;
 }
 
-FILE *curl_dbg_fdopen(int filedes, const char *mode,
-                      int line, const char *source)
+ALLOC_FUNC FILE *curl_dbg_fdopen(int filedes, const char *mode,
+                                 int line, const char *source)
 {
   FILE *res = fdopen(filedes, mode);
   if(source)
index 8e88cea580360ba3bae616b8f90348745f748c92..7fc90e83a03c535d722e4aafedd7dab2f30574f3 100644 (file)
@@ -8,7 +8,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -21,6 +21,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
  * as well as the library. Do not mix with library internals!
  */
 
+#include <curl/curl.h>
+#include "functypes.h"
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#  define ALLOC_FUNC __attribute__((malloc))
+#  define ALLOC_SIZE(s) __attribute__((alloc_size(s)))
+#  define ALLOC_SIZE2(n, s) __attribute__((alloc_size(n, s)))
+#elif defined(_MSC_VER)
+#  define ALLOC_FUNC __declspec(restrict)
+#  define ALLOC_SIZE(s)
+#  define ALLOC_SIZE2(n, s)
+#else
+#  define ALLOC_FUNC
+#  define ALLOC_SIZE(s)
+#  define ALLOC_SIZE2(n, s)
+#endif
+
 #define CURL_MT_LOGFNAME_BUFSIZE 512
 
 extern FILE *curl_dbg_logfile;
 
 /* memory functions */
-CURL_EXTERN void *curl_dbg_malloc(size_t size, int line, const char *source);
-CURL_EXTERN void *curl_dbg_calloc(size_t elements, size_t size, int line,
-                                  const char *source);
-CURL_EXTERN void *curl_dbg_realloc(void *ptr, size_t size, int line,
-                                   const char *source);
+CURL_EXTERN ALLOC_FUNC ALLOC_SIZE(1) void *curl_dbg_malloc(size_t size,
+                                                           int line,
+                                                           const char *source);
+CURL_EXTERN ALLOC_FUNC ALLOC_SIZE2(1, 2) void *curl_dbg_calloc(size_t elements,
+                                   size_t size, int line, const char *source);
+CURL_EXTERN ALLOC_SIZE(2) void *curl_dbg_realloc(void *ptr,
+                                                 size_t size,
+                                                 int line,
+                                                 const char *source);
 CURL_EXTERN void curl_dbg_free(void *ptr, int line, const char *source);
-CURL_EXTERN char *curl_dbg_strdup(const char *str, int line, const char *src);
+CURL_EXTERN ALLOC_FUNC char *curl_dbg_strdup(const char *str, int line,
+                                             const char *src);
 #if defined(WIN32) && defined(UNICODE)
-CURL_EXTERN wchar_t *curl_dbg_wcsdup(const wchar_t *str, int line,
-                                     const char *source);
+CURL_EXTERN ALLOC_FUNC wchar_t *curl_dbg_wcsdup(const wchar_t *str,
+                                                int line,
+                                                const char *source);
 #endif
 
 CURL_EXTERN void curl_dbg_memdebug(const char *logname);
@@ -77,10 +102,10 @@ CURL_EXTERN RECV_TYPE_RETV curl_dbg_recv(RECV_TYPE_ARG1 sockfd,
                                          const char *source);
 
 /* FILE functions */
-CURL_EXTERN FILE *curl_dbg_fopen(const char *file, const char *mode, int line,
-                                 const char *source);
-CURL_EXTERN FILE *curl_dbg_fdopen(int filedes, const char *mode,
+CURL_EXTERN ALLOC_FUNC FILE *curl_dbg_fopen(const char *file, const char *mode,
                                   int line, const char *source);
+CURL_EXTERN ALLOC_FUNC FILE *curl_dbg_fdopen(int filedes, const char *mode,
+                                             int line, const char *source);
 
 CURL_EXTERN int curl_dbg_fclose(FILE *file, int line, const char *source);
 
index 7783b8990a03e4350e2d53ddb5f72a603eb13fda..042141fc80b19598212d1f1f3ac8bacd378a02f7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include <curl/curl.h>
 
 #include "mime.h"
-#include "non-ascii.h"
 #include "warnless.h"
 #include "urldata.h"
 #include "sendf.h"
 
-#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \
-  !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)
+#if !defined(CURL_DISABLE_MIME) && (!defined(CURL_DISABLE_HTTP) ||      \
+                                    !defined(CURL_DISABLE_SMTP) ||      \
+                                    !defined(CURL_DISABLE_IMAP))
 
 #if defined(HAVE_LIBGEN_H) && defined(HAVE_BASENAME)
 #include <libgen.h>
@@ -315,7 +317,7 @@ static char *escape_string(struct Curl_easy *data,
 
   Curl_dyn_init(&db, CURL_MAX_INPUT_LENGTH);
 
-  for(result = Curl_dyn_add(&db, ""); !result && *src; src++) {
+  for(result = Curl_dyn_addn(&db, STRCONST("")); !result && *src; src++) {
     for(p = table; *p && **p != *src; p++)
       ;
 
@@ -340,9 +342,9 @@ static char *match_header(struct curl_slist *hdr, const char *lbl, size_t len)
 }
 
 /* Get a header from an slist. */
-static char *search_header(struct curl_slist *hdrlist, const char *hdr)
+static char *search_header(struct curl_slist *hdrlist,
+                           const char *hdr, size_t len)
 {
-  size_t len = strlen(hdr);
   char *value = NULL;
 
   for(; !value && hdrlist; hdrlist = hdrlist->next)
@@ -506,15 +508,6 @@ static size_t encoder_base64_read(char *buffer, size_t size, bool ateof,
     }
   }
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* This is now textual data, Convert character codes. */
-  if(part->easy && cursize) {
-    CURLcode result = Curl_convert_to_network(part->easy, buffer, cursize);
-    if(result)
-      return READ_ERROR;
-  }
-#endif
-
   return cursize;
 }
 
@@ -768,7 +761,7 @@ static void mime_file_free(void *ptr)
 static size_t readback_bytes(struct mime_state *state,
                              char *buffer, size_t bufsize,
                              const char *bytes, size_t numbytes,
-                             const char *trail)
+                             const char *trail, size_t traillen)
 {
   size_t sz;
   size_t offset = curlx_sotouz(state->offset);
@@ -778,13 +771,11 @@ static size_t readback_bytes(struct mime_state *state,
     bytes += offset;
   }
   else {
-    size_t tsz = strlen(trail);
-
     sz = offset - numbytes;
-    if(sz >= tsz)
+    if(sz >= traillen)
       return 0;
     bytes = trail + sz;
-    sz = tsz - sz;
+    sz = traillen - sz;
   }
 
   if(sz > bufsize)
@@ -925,9 +916,6 @@ static size_t readback_part(curl_mimepart *part,
                             char *buffer, size_t bufsize, bool *hasread)
 {
   size_t cursize = 0;
-#ifdef CURL_DOES_CONVERSIONS
-  char *convbuf = buffer;
-#endif
 
   /* Readback from part. */
 
@@ -956,26 +944,18 @@ static size_t readback_part(curl_mimepart *part,
         mimesetstate(&part->state, MIMESTATE_USERHEADERS, part->userheaders);
       else {
         sz = readback_bytes(&part->state, buffer, bufsize,
-                            hdr->data, strlen(hdr->data), "\r\n");
+                            hdr->data, strlen(hdr->data), STRCONST("\r\n"));
         if(!sz)
           mimesetstate(&part->state, part->state.state, hdr->next);
       }
       break;
     case MIMESTATE_EOH:
-      sz = readback_bytes(&part->state, buffer, bufsize, "\r\n", 2, "");
+      sz = readback_bytes(&part->state, buffer, bufsize, STRCONST("\r\n"),
+                          STRCONST(""));
       if(!sz)
         mimesetstate(&part->state, MIMESTATE_BODY, NULL);
       break;
     case MIMESTATE_BODY:
-#ifdef CURL_DOES_CONVERSIONS
-      if(part->easy && convbuf < buffer) {
-        CURLcode result = Curl_convert_to_network(part->easy, convbuf,
-                                                  buffer - convbuf);
-        if(result)
-          return READ_ERROR;
-        convbuf = buffer;
-      }
-#endif
       cleanup_encoder_state(&part->encstate);
       mimesetstate(&part->state, MIMESTATE_CONTENT, NULL);
       break;
@@ -1012,16 +992,6 @@ static size_t readback_part(curl_mimepart *part,
     bufsize -= sz;
   }
 
-#ifdef CURL_DOES_CONVERSIONS
-      if(part->easy && convbuf < buffer &&
-         part->state.state < MIMESTATE_BODY) {
-        CURLcode result = Curl_convert_to_network(part->easy, convbuf,
-                                                  buffer - convbuf);
-        if(result)
-          return READ_ERROR;
-      }
-#endif
-
   return cursize;
 }
 
@@ -1031,10 +1001,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
 {
   curl_mime *mime = (curl_mime *) instream;
   size_t cursize = 0;
-#ifdef CURL_DOES_CONVERSIONS
-  char *convbuf = buffer;
-#endif
-
   (void) size;   /* Always 1. */
 
   while(nitems) {
@@ -1043,9 +1009,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
     switch(mime->state.state) {
     case MIMESTATE_BEGIN:
     case MIMESTATE_BODY:
-#ifdef CURL_DOES_CONVERSIONS
-      convbuf = buffer;
-#endif
       mimesetstate(&mime->state, MIMESTATE_BOUNDARY1, mime->firstpart);
       /* The first boundary always follows the header termination empty line,
          so is always preceded by a CRLF. We can then spare 2 characters
@@ -1053,23 +1016,19 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
       mime->state.offset += 2;
       break;
     case MIMESTATE_BOUNDARY1:
-      sz = readback_bytes(&mime->state, buffer, nitems, "\r\n--", 4, "");
+      sz = readback_bytes(&mime->state, buffer, nitems, STRCONST("\r\n--"),
+                          STRCONST(""));
       if(!sz)
         mimesetstate(&mime->state, MIMESTATE_BOUNDARY2, part);
       break;
     case MIMESTATE_BOUNDARY2:
-      sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
-                          strlen(mime->boundary), part? "\r\n": "--\r\n");
+      if(part)
+        sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
+                            MIME_BOUNDARY_LEN, STRCONST("\r\n"));
+      else
+        sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
+                            MIME_BOUNDARY_LEN, STRCONST("--\r\n"));
       if(!sz) {
-#ifdef CURL_DOES_CONVERSIONS
-        if(mime->easy && convbuf < buffer) {
-          CURLcode result = Curl_convert_to_network(mime->easy, convbuf,
-                                                    buffer - convbuf);
-          if(result)
-            return READ_ERROR;
-          convbuf = buffer;
-        }
-#endif
         mimesetstate(&mime->state, MIMESTATE_CONTENT, part);
       }
       break;
@@ -1086,9 +1045,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
       case STOP_FILLING:
         return cursize? cursize: sz;
       case 0:
-#ifdef CURL_DOES_CONVERSIONS
-        convbuf = buffer;
-#endif
         mimesetstate(&mime->state, MIMESTATE_BOUNDARY1, part->nextpart);
         break;
       }
@@ -1105,16 +1061,6 @@ static size_t mime_subparts_read(char *buffer, size_t size, size_t nitems,
     nitems -= sz;
   }
 
-#ifdef CURL_DOES_CONVERSIONS
-      if(mime->easy && convbuf < buffer &&
-         mime->state.state <= MIMESTATE_CONTENT) {
-        CURLcode result = Curl_convert_to_network(mime->easy, convbuf,
-                                                  buffer - convbuf);
-        if(result)
-          return READ_ERROR;
-      }
-#endif
-
   return cursize;
 }
 
@@ -1341,8 +1287,9 @@ curl_mime *curl_mime_init(struct Curl_easy *easy)
     mime->firstpart = NULL;
     mime->lastpart = NULL;
 
-    memset(mime->boundary, '-', 24);
-    if(Curl_rand_hex(easy, (unsigned char *) &mime->boundary[24],
+    memset(mime->boundary, '-', MIME_BOUNDARY_DASHES);
+    if(Curl_rand_hex(easy,
+                     (unsigned char *) &mime->boundary[MIME_BOUNDARY_DASHES],
                      MIME_RAND_BOUNDARY_CHARS + 1)) {
       /* failed to get random separator, bail out */
       free(mime);
@@ -1619,7 +1566,7 @@ CURLcode Curl_mime_set_subparts(curl_mimepart *part,
         root = root->parent->parent;
       if(subparts == root) {
         if(part->easy)
-          failf(part->easy, "Can't add itself as a subpart!");
+          failf(part->easy, "Can't add itself as a subpart");
         return CURLE_BAD_FUNCTION_ARGUMENT;
       }
     }
@@ -1675,10 +1622,9 @@ CURLcode Curl_mime_rewind(curl_mimepart *part)
 
 /* Compute header list size. */
 static size_t slist_size(struct curl_slist *s,
-                         size_t overhead, const char *skip)
+                         size_t overhead, const char *skip, size_t skiplen)
 {
   size_t size = 0;
-  size_t skiplen = skip? strlen(skip): 0;
 
   for(; s; s = s->next)
     if(!skip || !match_header(s, skip, skiplen))
@@ -1696,7 +1642,7 @@ static curl_off_t multipart_size(curl_mime *mime)
   if(!mime)
     return 0;           /* Not present -> empty. */
 
-  boundarysize = 4 + strlen(mime->boundary) + 2;
+  boundarysize = 4 + MIME_BOUNDARY_LEN + 2;
   size = boundarysize;  /* Final boundary - CRLF after headers. */
 
   for(part = mime->firstpart; part; part = part->nextpart) {
@@ -1727,8 +1673,8 @@ curl_off_t Curl_mime_size(curl_mimepart *part)
 
   if(size >= 0 && !(part->flags & MIME_BODY_ONLY)) {
     /* Compute total part size. */
-    size += slist_size(part->curlheaders, 2, NULL);
-    size += slist_size(part->userheaders, 2, "Content-Type");
+    size += slist_size(part->curlheaders, 2, NULL, 0);
+    size += slist_size(part->userheaders, 2, STRCONST("Content-Type"));
     size += 2;    /* CRLF after headers. */
   }
   return size;
@@ -1804,10 +1750,9 @@ const char *Curl_mime_contenttype(const char *filename)
   return NULL;
 }
 
-static bool content_type_match(const char *contenttype, const char *target)
+static bool content_type_match(const char *contenttype,
+                               const char *target, size_t len)
 {
-  size_t len = strlen(target);
-
   if(contenttype && strncasecompare(contenttype, target, len))
     switch(contenttype[len]) {
     case '\0':
@@ -1843,7 +1788,7 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
   /* Check if content type is specified. */
   customct = part->mimetype;
   if(!customct)
-    customct = search_header(part->userheaders, "Content-Type");
+    customct = search_header(part->userheaders, STRCONST("Content-Type"));
   if(customct)
     contenttype = customct;
 
@@ -1872,12 +1817,12 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
       boundary = mime->boundary;
   }
   else if(contenttype && !customct &&
-          content_type_match(contenttype, "text/plain"))
+          content_type_match(contenttype, STRCONST("text/plain")))
     if(strategy == MIMESTRATEGY_MAIL || !part->filename)
       contenttype = NULL;
 
   /* Issue content-disposition header only if not already set by caller. */
-  if(!search_header(part->userheaders, "Content-Disposition")) {
+  if(!search_header(part->userheaders, STRCONST("Content-Disposition"))) {
     if(!disposition)
       if(part->filename || part->name ||
         (contenttype && !strncasecompare(contenttype, "multipart/", 10)))
@@ -1924,7 +1869,8 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
   }
 
   /* Content-Transfer-Encoding header. */
-  if(!search_header(part->userheaders, "Content-Transfer-Encoding")) {
+  if(!search_header(part->userheaders,
+                    STRCONST("Content-Transfer-Encoding"))) {
     if(part->encoder)
       cte = part->encoder->name;
     else if(contenttype && strategy == MIMESTRATEGY_MAIL &&
@@ -1948,7 +1894,7 @@ CURLcode Curl_mime_prepare_headers(curl_mimepart *part,
     curl_mimepart *subpart;
 
     disposition = NULL;
-    if(content_type_match(contenttype, "multipart/form-data"))
+    if(content_type_match(contenttype, STRCONST("multipart/form-data")))
       disposition = "form-data";
     for(subpart = mime->firstpart; subpart; subpart = subpart->nextpart) {
       ret = Curl_mime_prepare_headers(subpart, NULL, disposition, strategy);
@@ -1979,8 +1925,8 @@ void Curl_mime_unpause(curl_mimepart *part)
 }
 
 
-#else /* !CURL_DISABLE_HTTP && !CURL_DISABLE_MIME ||
-         !CURL_DISABLE_SMTP || !CURL_DISABLE_IMAP */
+#else /* !CURL_DISABLE_MIME && (!CURL_DISABLE_HTTP ||
+                                !CURL_DISABLE_SMTP || !CURL_DISABLE_IMAP) */
 
 /* Mime not compiled in: define stubs for externally-referenced functions. */
 curl_mime *curl_mime_init(CURL *easy)
index 56642ae661ee5be21314d570e9d8f09dfe5e109b..bafde29f4006cb2fe552310bd21673b0d2cd2cb4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
 
+#define MIME_BOUNDARY_DASHES            24  /* leading boundary dashes */
 #define MIME_RAND_BOUNDARY_CHARS        16  /* Nb. of random boundary chars. */
 #define MAX_ENCODED_LINE_LENGTH         76  /* Maximum encoded line length. */
 #define ENCODING_BUFFER_SIZE            256 /* Encoding temp buffers size. */
@@ -91,8 +94,8 @@ struct mime_state {
   curl_off_t offset;          /* State-dependent offset. */
 };
 
-/* minimum buffer size for the boundary string */
-#define MIME_BOUNDARY_LEN (24 + MIME_RAND_BOUNDARY_CHARS + 1)
+/* Boundary string length. */
+#define MIME_BOUNDARY_LEN (MIME_BOUNDARY_DASHES + MIME_RAND_BOUNDARY_CHARS)
 
 /* A mime multipart. */
 struct curl_mime {
@@ -100,7 +103,7 @@ struct curl_mime {
   curl_mimepart *parent;           /* Parent part. */
   curl_mimepart *firstpart;        /* First part. */
   curl_mimepart *lastpart;         /* Last part. */
-  char boundary[MIME_BOUNDARY_LEN]; /* The part boundary. */
+  char boundary[MIME_BOUNDARY_LEN + 1]; /* The part boundary. */
   struct mime_state state;         /* Current readback state. */
 };
 
@@ -131,8 +134,9 @@ struct curl_mimepart {
 
 CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...);
 
-#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) ||     \
-  !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)
+#if !defined(CURL_DISABLE_MIME) && (!defined(CURL_DISABLE_HTTP) ||      \
+                                    !defined(CURL_DISABLE_SMTP) ||      \
+                                    !defined(CURL_DISABLE_IMAP))
 
 /* Prototypes. */
 void Curl_mime_initpart(struct curl_mimepart *part, struct Curl_easy *easy);
diff --git a/lib/mk-ca-bundle.pl b/lib/mk-ca-bundle.pl
deleted file mode 100755 (executable)
index e5a7420..0000000
+++ /dev/null
@@ -1,625 +0,0 @@
-#!/usr/bin/env perl
-# ***************************************************************************
-# *                                  _   _ ____  _
-# *  Project                     ___| | | |  _ \| |
-# *                             / __| | | | |_) | |
-# *                            | (__| |_| |  _ <| |___
-# *                             \___|\___/|_| \_\_____|
-# *
-# * Copyright (C) 1998 - 2021, 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.
-# *
-# ***************************************************************************
-# This Perl script creates a fresh ca-bundle.crt file for use with libcurl.
-# It downloads certdata.txt from Mozilla's source tree (see URL below),
-# then parses certdata.txt and extracts CA Root Certificates into PEM format.
-# These are then processed with the OpenSSL commandline tool to produce the
-# final ca-bundle.crt file.
-# The script is based on the parse-certs script written by Roland Krikava.
-# This Perl script works on almost any platform since its only external
-# dependency is the OpenSSL commandline tool for optional text listing.
-# Hacked by Guenter Knauf.
-#
-use Encode;
-use Getopt::Std;
-use MIME::Base64;
-use strict;
-use warnings;
-use vars qw($opt_b $opt_d $opt_f $opt_h $opt_i $opt_k $opt_l $opt_m $opt_n $opt_p $opt_q $opt_s $opt_t $opt_u $opt_v $opt_w);
-use List::Util;
-use Text::Wrap;
-use Time::Local;
-my $MOD_SHA = "Digest::SHA";
-eval "require $MOD_SHA";
-if ($@) {
-  $MOD_SHA = "Digest::SHA::PurePerl";
-  eval "require $MOD_SHA";
-}
-eval "require LWP::UserAgent";
-
-my %urls = (
-  'nss' =>
-    'https://hg.mozilla.org/projects/nss/raw-file/default/lib/ckfw/builtins/certdata.txt',
-  'central' =>
-    'https://hg.mozilla.org/mozilla-central/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
-  'beta' =>
-    'https://hg.mozilla.org/releases/mozilla-beta/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
-  'release' =>
-    'https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
-);
-
-$opt_d = 'release';
-
-# If the OpenSSL commandline is not in search path you can configure it here!
-my $openssl = 'openssl';
-
-my $version = '1.28';
-
-$opt_w = 76; # default base64 encoded lines length
-
-# default cert types to include in the output (default is to include CAs which may issue SSL server certs)
-my $default_mozilla_trust_purposes = "SERVER_AUTH";
-my $default_mozilla_trust_levels = "TRUSTED_DELEGATOR";
-$opt_p = $default_mozilla_trust_purposes . ":" . $default_mozilla_trust_levels;
-
-my @valid_mozilla_trust_purposes = (
-  "DIGITAL_SIGNATURE",
-  "NON_REPUDIATION",
-  "KEY_ENCIPHERMENT",
-  "DATA_ENCIPHERMENT",
-  "KEY_AGREEMENT",
-  "KEY_CERT_SIGN",
-  "CRL_SIGN",
-  "SERVER_AUTH",
-  "CLIENT_AUTH",
-  "CODE_SIGNING",
-  "EMAIL_PROTECTION",
-  "IPSEC_END_SYSTEM",
-  "IPSEC_TUNNEL",
-  "IPSEC_USER",
-  "TIME_STAMPING",
-  "STEP_UP_APPROVED"
-);
-
-my @valid_mozilla_trust_levels = (
-  "TRUSTED_DELEGATOR",    # CAs
-  "NOT_TRUSTED",          # Don't trust these certs.
-  "MUST_VERIFY_TRUST",    # This explicitly tells us that it ISN'T a CA but is otherwise ok. In other words, this should tell the app to ignore any other sources that claim this is a CA.
-  "TRUSTED"               # This cert is trusted, but only for itself and not for delegates (i.e. it is not a CA).
-);
-
-my $default_signature_algorithms = $opt_s = "MD5";
-
-my @valid_signature_algorithms = (
-  "MD5",
-  "SHA1",
-  "SHA256",
-  "SHA384",
-  "SHA512"
-);
-
-$0 =~ s@.*(/|\\)@@;
-$Getopt::Std::STANDARD_HELP_VERSION = 1;
-getopts('bd:fhiklmnp:qs:tuvw:');
-
-if(!defined($opt_d)) {
-    # to make plain "-d" use not cause warnings, and actually still work
-    $opt_d = 'release';
-}
-
-# Use predefined URL or else custom URL specified on command line.
-my $url;
-if(defined($urls{$opt_d})) {
-  $url = $urls{$opt_d};
-  if(!$opt_k && $url !~ /^https:\/\//i) {
-    die "The URL for '$opt_d' is not HTTPS. Use -k to override (insecure).\n";
-  }
-}
-else {
-  $url = $opt_d;
-}
-
-my $curl = `curl -V`;
-
-if ($opt_i) {
-  print ("=" x 78 . "\n");
-  print "Script Version                   : $version\n";
-  print "Perl Version                     : $]\n";
-  print "Operating System Name            : $^O\n";
-  print "Getopt::Std.pm Version           : ${Getopt::Std::VERSION}\n";
-  print "Encode::Encoding.pm Version      : ${Encode::Encoding::VERSION}\n";
-  print "MIME::Base64.pm Version          : ${MIME::Base64::VERSION}\n";
-  print "LWP::UserAgent.pm Version        : ${LWP::UserAgent::VERSION}\n" if($LWP::UserAgent::VERSION);
-  print "LWP.pm Version                   : ${LWP::VERSION}\n" if($LWP::VERSION);
-  print "Digest::SHA.pm Version           : ${Digest::SHA::VERSION}\n" if ($Digest::SHA::VERSION);
-  print "Digest::SHA::PurePerl.pm Version : ${Digest::SHA::PurePerl::VERSION}\n" if ($Digest::SHA::PurePerl::VERSION);
-  print ("=" x 78 . "\n");
-}
-
-sub warning_message() {
-  if ( $opt_d =~ m/^risk$/i ) { # Long Form Warning and Exit
-    print "Warning: Use of this script may pose some risk:\n";
-    print "\n";
-    print "  1) If you use HTTP URLs they are subject to a man in the middle attack\n";
-    print "  2) Default to 'release', but more recent updates may be found in other trees\n";
-    print "  3) certdata.txt file format may change, lag time to update this script\n";
-    print "  4) Generally unwise to blindly trust CAs without manual review & verification\n";
-    print "  5) Mozilla apps use additional security checks aren't represented in certdata\n";
-    print "  6) Use of this script will make a security engineer grind his teeth and\n";
-    print "     swear at you.  ;)\n";
-    exit;
-  } else { # Short Form Warning
-    print "Warning: Use of this script may pose some risk, -d risk for more details.\n";
-  }
-}
-
-sub HELP_MESSAGE() {
-  print "Usage:\t${0} [-b] [-d<certdata>] [-f] [-i] [-k] [-l] [-n] [-p<purposes:levels>] [-q] [-s<algorithms>] [-t] [-u] [-v] [-w<l>] [<outputfile>]\n";
-  print "\t-b\tbackup an existing version of ca-bundle.crt\n";
-  print "\t-d\tspecify Mozilla tree to pull certdata.txt or custom URL\n";
-  print "\t\t  Valid names are:\n";
-  print "\t\t    ", join( ", ", map { ( $_ =~ m/$opt_d/ ) ? "$_ (default)" : "$_" } sort keys %urls ), "\n";
-  print "\t-f\tforce rebuild even if certdata.txt is current\n";
-  print "\t-i\tprint version info about used modules\n";
-  print "\t-k\tallow URLs other than HTTPS, enable HTTP fallback (insecure)\n";
-  print "\t-l\tprint license info about certdata.txt\n";
-  print "\t-m\tinclude meta data in output\n";
-  print "\t-n\tno download of certdata.txt (to use existing)\n";
-  print wrap("\t","\t\t", "-p\tlist of Mozilla trust purposes and levels for certificates to include in output. Takes the form of a comma separated list of purposes, a colon, and a comma separated list of levels. (default: $default_mozilla_trust_purposes:$default_mozilla_trust_levels)"), "\n";
-  print "\t\t  Valid purposes are:\n";
-  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_mozilla_trust_purposes ) ), "\n";
-  print "\t\t  Valid levels are:\n";
-  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_mozilla_trust_levels ) ), "\n";
-  print "\t-q\tbe really quiet (no progress output at all)\n";
-  print wrap("\t","\t\t", "-s\tcomma separated list of certificate signatures/hashes to output in plain text mode. (default: $default_signature_algorithms)\n");
-  print "\t\t  Valid signature algorithms are:\n";
-  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_signature_algorithms ) ), "\n";
-  print "\t-t\tinclude plain text listing of certificates\n";
-  print "\t-u\tunlink (remove) certdata.txt after processing\n";
-  print "\t-v\tbe verbose and print out processed CAs\n";
-  print "\t-w <l>\twrap base64 output lines after <l> chars (default: ${opt_w})\n";
-  exit;
-}
-
-sub VERSION_MESSAGE() {
-  print "${0} version ${version} running Perl ${]} on ${^O}\n";
-}
-
-warning_message() unless ($opt_q || $url =~ m/^(ht|f)tps:/i );
-HELP_MESSAGE() if ($opt_h);
-
-sub report($@) {
-  my $output = shift;
-
-  print STDERR $output . "\n" unless $opt_q;
-}
-
-sub is_in_list($@) {
-  my $target = shift;
-
-  return defined(List::Util::first { $target eq $_ } @_);
-}
-
-# Parses $param_string as a case insensitive comma separated list with optional whitespace
-# validates that only allowed parameters are supplied
-sub parse_csv_param($$@) {
-  my $description = shift;
-  my $param_string = shift;
-  my @valid_values = @_;
-
-  my @values = map {
-    s/^\s+//;  # strip leading spaces
-    s/\s+$//;  # strip trailing spaces
-    uc $_      # return the modified string as upper case
-  } split( ',', $param_string );
-
-  # Find all values which are not in the list of valid values or "ALL"
-  my @invalid = grep { !is_in_list($_,"ALL",@valid_values) } @values;
-
-  if ( scalar(@invalid) > 0 ) {
-    # Tell the user which parameters were invalid and print the standard help message which will exit
-    print "Error: Invalid ", $description, scalar(@invalid) == 1 ? ": " : "s: ", join( ", ", map { "\"$_\"" } @invalid ), "\n";
-    HELP_MESSAGE();
-  }
-
-  @values = @valid_values if ( is_in_list("ALL",@values) );
-
-  return @values;
-}
-
-sub sha256 {
-  my $result;
-  if ($Digest::SHA::VERSION || $Digest::SHA::PurePerl::VERSION) {
-    open(FILE, $_[0]) or die "Can't open '$_[0]': $!";
-    binmode(FILE);
-    $result = $MOD_SHA->new(256)->addfile(*FILE)->hexdigest;
-    close(FILE);
-  } else {
-    # Use OpenSSL command if Perl Digest::SHA modules not available
-    $result = `"$openssl" dgst -r -sha256 "$_[0]"`;
-    $result =~ s/^([0-9a-f]{64}) .+/$1/is;
-  }
-  return $result;
-}
-
-
-sub oldhash {
-  my $hash = "";
-  open(C, "<$_[0]") || return 0;
-  while(<C>) {
-    chomp;
-    if($_ =~ /^\#\# SHA256: (.*)/) {
-      $hash = $1;
-      last;
-    }
-  }
-  close(C);
-  return $hash;
-}
-
-if ( $opt_p !~ m/:/ ) {
-  print "Error: Mozilla trust identifier list must include both purposes and levels\n";
-  HELP_MESSAGE();
-}
-
-(my $included_mozilla_trust_purposes_string, my $included_mozilla_trust_levels_string) = split( ':', $opt_p );
-my @included_mozilla_trust_purposes = parse_csv_param( "trust purpose", $included_mozilla_trust_purposes_string, @valid_mozilla_trust_purposes );
-my @included_mozilla_trust_levels = parse_csv_param( "trust level", $included_mozilla_trust_levels_string, @valid_mozilla_trust_levels );
-
-my @included_signature_algorithms = parse_csv_param( "signature algorithm", $opt_s, @valid_signature_algorithms );
-
-sub should_output_cert(%) {
-  my %trust_purposes_by_level = @_;
-
-  foreach my $level (@included_mozilla_trust_levels) {
-    # for each level we want to output, see if any of our desired purposes are included
-    return 1 if ( defined( List::Util::first { is_in_list( $_, @included_mozilla_trust_purposes ) } @{$trust_purposes_by_level{$level}} ) );
-  }
-
-  return 0;
-}
-
-my $crt = $ARGV[0] || 'ca-bundle.crt';
-(my $txt = $url) =~ s@(.*/|\?.*)@@g;
-
-my $stdout = $crt eq '-';
-my $resp;
-my $fetched;
-
-my $oldhash = oldhash($crt);
-
-report "SHA256 of old file: $oldhash";
-
-if(!$opt_n) {
-  report "Downloading $txt ...";
-
-  # If we have an HTTPS URL then use curl
-  if($url =~ /^https:\/\//i) {
-    if($curl) {
-      if($curl =~ /^Protocols:.* https( |$)/m) {
-        report "Get certdata with curl!";
-        my $proto = !$opt_k ? "--proto =https" : "";
-        my $quiet = $opt_q ? "-s" : "";
-        my @out = `curl -w %{response_code} $proto $quiet -o "$txt" "$url"`;
-        if(!$? && @out && $out[0] == 200) {
-          $fetched = 1;
-          report "Downloaded $txt";
-        }
-        else {
-          report "Failed downloading via HTTPS with curl";
-          if(-e $txt && !unlink($txt)) {
-            report "Failed to remove '$txt': $!";
-          }
-        }
-      }
-      else {
-        report "curl lacks https support";
-      }
-    }
-    else {
-      report "curl not found";
-    }
-  }
-
-  # If nothing was fetched then use LWP
-  if(!$fetched) {
-    if($url =~ /^https:\/\//i) {
-      report "Falling back to HTTP";
-      $url =~ s/^https:\/\//http:\/\//i;
-    }
-    if(!$opt_k) {
-      report "URLs other than HTTPS are disabled by default, to enable use -k";
-      exit 1;
-    }
-    report "Get certdata with LWP!";
-    if(!defined(${LWP::UserAgent::VERSION})) {
-      report "LWP is not available (LWP::UserAgent not found)";
-      exit 1;
-    }
-    my $ua  = new LWP::UserAgent(agent => "$0/$version");
-    $ua->env_proxy();
-    $resp = $ua->mirror($url, $txt);
-    if($resp && $resp->code eq '304') {
-      report "Not modified";
-      exit 0 if -e $crt && !$opt_f;
-    }
-    else {
-      $fetched = 1;
-      report "Downloaded $txt";
-    }
-    if(!$resp || $resp->code !~ /^(?:200|304)$/) {
-      report "Unable to download latest data: "
-        . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed");
-      exit 1 if -e $crt || ! -r $txt;
-    }
-  }
-}
-
-my $filedate = $resp ? $resp->last_modified : (stat($txt))[9];
-my $datesrc = "as of";
-if(!$filedate) {
-    # mxr.mozilla.org gave us a time, hg.mozilla.org does not!
-    $filedate = time();
-    $datesrc="downloaded on";
-}
-
-# get the hash from the download file
-my $newhash= sha256($txt);
-
-if(!$opt_f && $oldhash eq $newhash) {
-    report "Downloaded file identical to previous run\'s source file. Exiting";
-    if($opt_u && -e $txt && !unlink($txt)) {
-        report "Failed to remove $txt: $!\n";
-    }
-    exit;
-}
-
-report "SHA256 of new file: $newhash";
-
-my $currentdate = scalar gmtime($filedate);
-
-my $format = $opt_t ? "plain text and " : "";
-if( $stdout ) {
-    open(CRT, '> -') or die "Couldn't open STDOUT: $!\n";
-} else {
-    open(CRT,">$crt.~") or die "Couldn't open $crt.~: $!\n";
-}
-print CRT <<EOT;
-##
-## Bundle of CA Root Certificates
-##
-## Certificate data from Mozilla ${datesrc}: ${currentdate} GMT
-##
-## This is a bundle of X.509 certificates of public Certificate Authorities
-## (CA). These were automatically extracted from Mozilla's root certificates
-## file (certdata.txt).  This file can be found in the mozilla source tree:
-## ${url}
-##
-## It contains the certificates in ${format}PEM format and therefore
-## can be directly used with curl / libcurl / php_curl, or with
-## an Apache+mod_ssl webserver for SSL client authentication.
-## Just configure this file as the SSLCACertificateFile.
-##
-## Conversion done with mk-ca-bundle.pl version $version.
-## SHA256: $newhash
-##
-
-EOT
-
-report "Processing  '$txt' ...";
-my $caname;
-my $certnum = 0;
-my $skipnum = 0;
-my $start_of_cert = 0;
-my @precert;
-my $cka_value;
-my $valid = 1;
-
-open(TXT,"$txt") or die "Couldn't open $txt: $!\n";
-while (<TXT>) {
-  if (/\*\*\*\*\* BEGIN LICENSE BLOCK \*\*\*\*\*/) {
-    print CRT;
-    print if ($opt_l);
-    while (<TXT>) {
-      print CRT;
-      print if ($opt_l);
-      last if (/\*\*\*\*\* END LICENSE BLOCK \*\*\*\*\*/);
-    }
-  }
-# Not Valid After : Thu Sep 30 14:01:15 2021
-  elsif(/^# Not Valid After : (.*)/) {
-      my $stamp = $1;
-      use Time::Piece;
-      my $t = Time::Piece->strptime
-          ($stamp, "%a %b %d %H:%M:%S %Y");
-      my $delta = ($t->epoch - time()); # negative means no longer valid
-      if($delta < 0) {
-          $skipnum++;
-          report "Skipping: $caname is not valid anymore" if ($opt_v);
-          $valid = 0;
-      }
-      else {
-          $valid = 1;
-      }
-      next;
-  }
-  elsif(/^# (Issuer|Serial Number|Subject|Not Valid Before|Fingerprint \(MD5\)|Fingerprint \(SHA1\)):/) {
-      push @precert, $_;
-      next;
-  }
-  elsif(/^#|^\s*$/) {
-      undef @precert;
-      next;
-  }
-  chomp;
-
-  # Example:
-  # CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
-  # \062\060\060\066\061\067\060\060\060\060\060\060\132
-  # END
-
-  if (/^CKA_NSS_SERVER_DISTRUST_AFTER (CK_BBOOL CK_FALSE|MULTILINE_OCTAL)/) {
-      if($1 eq "MULTILINE_OCTAL") {
-          my @timestamp;
-          while (<TXT>) {
-              last if (/^END/);
-              chomp;
-              my @octets = split(/\\/);
-              shift @octets;
-              for (@octets) {
-                  push @timestamp, chr(oct);
-              }
-          }
-          # A trailing Z in the timestamp signifies UTC
-          if($timestamp[12] ne "Z") {
-              report "distrust date stamp is not using UTC";
-          }
-          # Example date: 200617000000Z
-          # Means 2020-06-17 00:00:00 UTC
-          my $distrustat =
-            timegm($timestamp[10] . $timestamp[11], # second
-                   $timestamp[8] . $timestamp[9],   # minute
-                   $timestamp[6] . $timestamp[7],   # hour
-                   $timestamp[4] . $timestamp[5],   # day
-                   ($timestamp[2] . $timestamp[3]) - 1, # month
-                   "20" . $timestamp[0] . $timestamp[1]); # year
-          if(time >= $distrustat) {
-              # not trusted anymore
-              $skipnum++;
-              report "Skipping: $caname is not trusted anymore" if ($opt_v);
-              $valid = 0;
-          }
-          else {
-              # still trusted
-          }
-      }
-      next;
-  }
-
-  # this is a match for the start of a certificate
-  if (/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
-    $start_of_cert = 1
-  }
-  if ($start_of_cert && /^CKA_LABEL UTF8 \"(.*)\"/) {
-    $caname = $1;
-  }
-  my %trust_purposes_by_level;
-  if ($start_of_cert && /^CKA_VALUE MULTILINE_OCTAL/) {
-    $cka_value="";
-    while (<TXT>) {
-      last if (/^END/);
-      chomp;
-      my @octets = split(/\\/);
-      shift @octets;
-      for (@octets) {
-        $cka_value .= chr(oct);
-      }
-    }
-  }
-  if(/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/ && $valid) {
-    # now scan the trust part to determine how we should trust this cert
-    while (<TXT>) {
-      last if (/^#/);
-      if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
-        if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
-          report "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2";
-        } elsif ( !is_in_list($2,@valid_mozilla_trust_levels) ) {
-          report "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2";
-        } else {
-          push @{$trust_purposes_by_level{$2}}, $1;
-        }
-      }
-    }
-
-    if ( !should_output_cert(%trust_purposes_by_level) ) {
-      $skipnum ++;
-      report "Skipping: $caname" if ($opt_v);
-    } else {
-      my $data = $cka_value;
-      $cka_value = "";
-
-      if(!length($data)) {
-          # if empty, skip
-          next;
-      }
-      my $encoded = MIME::Base64::encode_base64($data, '');
-      $encoded =~ s/(.{1,${opt_w}})/$1\n/g;
-      my $pem = "-----BEGIN CERTIFICATE-----\n"
-              . $encoded
-              . "-----END CERTIFICATE-----\n";
-      print CRT "\n$caname\n";
-      print CRT @precert if($opt_m);
-      my $maxStringLength = length(decode('UTF-8', $caname, Encode::FB_CROAK | Encode::LEAVE_SRC));
-      if ($opt_t) {
-        foreach my $key (sort keys %trust_purposes_by_level) {
-           my $string = $key . ": " . join(", ", @{$trust_purposes_by_level{$key}});
-           $maxStringLength = List::Util::max( length($string), $maxStringLength );
-           print CRT $string . "\n";
-        }
-      }
-      print CRT ("=" x $maxStringLength . "\n");
-      if (!$opt_t) {
-        print CRT $pem;
-      } else {
-        my $pipe = "";
-        foreach my $hash (@included_signature_algorithms) {
-          $pipe = "|$openssl x509 -" . $hash . " -fingerprint -noout -inform PEM";
-          if (!$stdout) {
-            $pipe .= " >> $crt.~";
-            close(CRT) or die "Couldn't close $crt.~: $!";
-          }
-          open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
-          print TMP $pem;
-          close(TMP) or die "Couldn't close openssl pipe: $!";
-          if (!$stdout) {
-            open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
-          }
-        }
-        $pipe = "|$openssl x509 -text -inform PEM";
-        if (!$stdout) {
-          $pipe .= " >> $crt.~";
-          close(CRT) or die "Couldn't close $crt.~: $!";
-        }
-        open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
-        print TMP $pem;
-        close(TMP) or die "Couldn't close openssl pipe: $!";
-        if (!$stdout) {
-          open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
-        }
-      }
-      report "Parsing: $caname" if ($opt_v);
-      $certnum ++;
-      $start_of_cert = 0;
-    }
-    undef @precert;
-  }
-
-}
-close(TXT) or die "Couldn't close $txt: $!\n";
-close(CRT) or die "Couldn't close $crt.~: $!\n";
-unless( $stdout ) {
-    if ($opt_b && -e $crt) {
-        my $bk = 1;
-        while (-e "$crt.~${bk}~") {
-            $bk++;
-        }
-        rename $crt, "$crt.~${bk}~" or die "Failed to create backup $crt.~$bk}~: $!\n";
-    } elsif( -e $crt ) {
-        unlink( $crt ) or die "Failed to remove $crt: $!\n";
-    }
-    rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
-}
-if($opt_u && -e $txt && !unlink($txt)) {
-  report "Failed to remove $txt: $!\n";
-}
-report "Done ($certnum CA certs processed, $skipnum skipped).";
diff --git a/lib/mk-ca-bundle.vbs b/lib/mk-ca-bundle.vbs
deleted file mode 100755 (executable)
index 21b4c19..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-'***************************************************************************\r
-'*                                  _   _ ____  _\r
-'*  Project                     ___| | | |  _ \| |\r
-'*                             / __| | | | |_) | |\r
-'*                            | (__| |_| |  _ <| |___\r
-'*                             \___|\___/|_| \_\_____|\r
-'*\r
-'* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\r
-'*\r
-'* This software is licensed as described in the file COPYING, which\r
-'* you should have received as part of this distribution. The terms\r
-'* are also available at https://curl.se/docs/copyright.html.\r
-'*\r
-'* You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
-'* copies of the Software, and permit persons to whom the Software is\r
-'* furnished to do so, under the terms of the COPYING file.\r
-'*\r
-'* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
-'* KIND, either express or implied.\r
-'*\r
-'***************************************************************************\r
-'* Script to fetch certdata.txt from Mozilla.org site and create a\r
-'* ca-bundle.crt for use with OpenSSL / libcurl / libcurl bindings\r
-'* Requires WinHttp.WinHttpRequest.5.1 and ADODB.Stream which are part of\r
-'* W2000 SP3 or later, WXP SP1 or later, W2003 Server SP1 or later.\r
-'* Hacked by Guenter Knauf\r
-'***************************************************************************\r
-Option Explicit\r
-Const myVersion = "0.4.0"\r
-\r
-Const myUrl = "https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt"\r
-\r
-Const myOpenSSL = "openssl.exe"\r
-Dim myUseOpenSSL\r
-myUseOpenSSL = TRUE          ' Flag: TRUE to use OpenSSL. If TRUE and is not\r
-                             ' found then a warning is shown before continuing.\r
-\r
-Const myCdSavF = TRUE        ' Flag: save downloaded data to file certdata.txt\r
-Const myCaBakF = TRUE        ' Flag: backup existing ca-bundle certificate\r
-Const myAskLiF = TRUE        ' Flag: display certdata.txt license agreement\r
-Const myWrapLe = 76          ' Default length of base64 output lines\r
-\r
-' cert info code doesn't work properly with any recent openssl, leave disabled.\r
-' Also: we want our certificate output by default to be as similar as possible\r
-' to mk-ca-bundle.pl and setting this TRUE changes the base64 width to\r
-' OpenSSL's built-in default width, which is not the same as mk-ca-bundle.pl.\r
-Const myAskTiF = FALSE       ' Flag: ask to include certificate text info\r
-\r
-'\r
-'******************* Nothing to configure below! *******************\r
-'\r
-Const adTypeBinary = 1\r
-Const adTypeText = 2\r
-Const adSaveCreateNotExist = 1\r
-Const adSaveCreateOverWrite = 2\r
-Dim objShell, objNetwork, objFSO, objHttp\r
-Dim myBase, mySelf, myStream, myTmpFh, myCdData, myCdFile\r
-Dim myCaFile, myTmpName, myBakNum, myOptTxt, i\r
-Set objNetwork = WScript.CreateObject("WScript.Network")\r
-Set objShell = WScript.CreateObject("WScript.Shell")\r
-Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")\r
-Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")\r
-If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")\r
-myBase = Left(WScript.ScriptFullName, InstrRev(WScript.ScriptFullName, "\"))\r
-mySelf = Left(WScript.ScriptName, InstrRev(WScript.ScriptName, ".") - 1) & " " & myVersion\r
-\r
-myCdFile = Mid(myUrl, InstrRev(myUrl, "/") + 1)\r
-myCaFile = "ca-bundle.crt"\r
-myTmpName = InputBox("It will take a minute to download and parse the " & _\r
-                     "certificate data." & _\r
-                     vbLf & vbLf & _\r
-                     "Please enter the output filename:", mySelf, myCaFile)\r
-If (myTmpName = "") Then\r
-  WScript.Quit 1\r
-End If\r
-myCaFile = myTmpName\r
-If (myCdFile = "") Then\r
-  MsgBox("URL does not contain filename!"), vbCritical, mySelf\r
-  WScript.Quit 1\r
-End If\r
-\r
-' Don't use OpenSSL if it's not present.\r
-If (myUseOpenSSL = TRUE) Then\r
-  Dim errnum\r
-\r
-  On Error Resume Next\r
-  Call objShell.Run("""" & myOpenSSL & """ version", 0, TRUE)\r
-  errnum = Err.Number\r
-  On Error GoTo 0\r
-\r
-  If Not (errnum = 0) Then\r
-    myUseOpenSSL = FALSE\r
-    MsgBox("OpenSSL was not found so the certificate bundle will not " & _\r
-           "include the SHA256 hash of the raw certificate data file " & _\r
-           "that was used to generate the certificates in the bundle. " & _\r
-           vbLf & vbLf & _\r
-           "This does not have any effect on the certificate output, " & _\r
-           "so this script will continue." & _\r
-           vbLf & vbLf & _\r
-           "If you want to set a custom location for OpenSSL or disable " & _\r
-           "this message then edit the variables at the start of the " & _\r
-           "script."), vbInformation, mySelf\r
-  End If\r
-End If\r
-\r
-If (myAskTiF = TRUE) And (myUseOpenSSL = TRUE) Then\r
-  If (6 = objShell.PopUp("Do you want to include text information about " & _\r
-                         "each certificate?" & vbLf & _\r
-                         "(Requires OpenSSL.exe in the current directory " & _\r
-                         "or search path)",, _\r
-          mySelf, vbQuestion + vbYesNo + vbDefaultButton2)) Then\r
-    myOptTxt = TRUE\r
-  Else\r
-    myOptTxt = FALSE\r
-  End If\r
-End If\r
-\r
-' Uncomment the line below to ignore SSL invalid cert errors\r
-' objHttp.Option(4) = 256 + 512 + 4096 + 8192\r
-objHttp.SetTimeouts 0, 5000, 10000, 10000\r
-objHttp.Open "GET", myUrl, FALSE\r
-objHttp.setRequestHeader "User-Agent", WScript.ScriptName & "/" & myVersion\r
-objHttp.Send ""\r
-If Not (objHttp.Status = 200) Then\r
-  MsgBox("Failed to download '" & myCdFile & "': " & objHttp.Status & " - " & objHttp.StatusText), vbCritical, mySelf\r
-  WScript.Quit 1\r
-End If\r
-' Write received data to file if enabled\r
-If (myCdSavF = TRUE) Then\r
-  Call SaveBinaryData(myCdFile, objHttp.ResponseBody)\r
-End If\r
-' Convert data from ResponseBody instead of using ResponseText because of UTF-8\r
-myCdData = ConvertBinaryToUTF8(objHttp.ResponseBody)\r
-Set objHttp = Nothing\r
-' Backup exitsing ca-bundle certificate file\r
-If (myCaBakF = TRUE) Then\r
-  If objFSO.FileExists(myCaFile) Then\r
-    Dim myBakFile, b\r
-    b = 1\r
-    myBakFile = myCaFile & ".~" & b & "~"\r
-    While objFSO.FileExists(myBakFile)\r
-      b = b + 1\r
-      myBakFile = myCaFile & ".~" & b & "~"\r
-    Wend\r
-    Set myTmpFh = objFSO.GetFile(myCaFile)\r
-    myTmpFh.Move myBakFile\r
-  End If\r
-End If\r
-\r
-' Process the received data\r
-Dim myLines, myPattern, myInsideCert, myInsideLicense, myLicenseText, myNumCerts, myNumSkipped\r
-Dim myLabel, myOctets, myData, myPem, myRev, myUntrusted, j\r
-myNumSkipped = 0\r
-myNumCerts = 0\r
-myData = ""\r
-myLines = Split(myCdData, vbLf, -1)\r
-Set myStream = CreateObject("ADODB.Stream")\r
-myStream.Open\r
-myStream.Type = adTypeText\r
-myStream.Charset = "utf-8"\r
-myStream.WriteText "##" & vbLf & _\r
-  "## Bundle of CA Root Certificates" & vbLf & _\r
-  "##" & vbLf & _\r
-  "## Certificate data from Mozilla as of: " & _\r
-    ConvertDateToString(LocalDateToUTC(Now)) & " GMT" & vbLf & _\r
-  "##" & vbLf & _\r
-  "## This is a bundle of X.509 certificates of public Certificate Authorities" & vbLf & _\r
-  "## (CA). These were automatically extracted from Mozilla's root certificates" & vbLf & _\r
-  "## file (certdata.txt).  This file can be found in the mozilla source tree:" & vbLf & _\r
-  "## " & myUrl & vbLf & _\r
-  "##" & vbLf & _\r
-  "## It contains the certificates in PEM format and therefore" & vbLf & _\r
-  "## can be directly used with curl / libcurl / php_curl, or with" & vbLf & _\r
-  "## an Apache+mod_ssl webserver for SSL client authentication." & vbLf & _\r
-  "## Just configure this file as the SSLCACertificateFile." & vbLf & _\r
-  "##" & vbLf & _\r
-  "## Conversion done with mk-ca-bundle.vbs version " & myVersion & "." & vbLf\r
-If (myCdSavF = TRUE) And (myUseOpenSSL = TRUE) Then\r
-  myStream.WriteText "## SHA256: " & FileSHA256(myCdFile) & vbLf\r
-End If\r
-myStream.WriteText "##" & vbLf & vbLf\r
-\r
-myStream.WriteText vbLf\r
-For i = 0 To UBound(myLines)\r
-  If InstrRev(myLines(i), "CKA_LABEL ") Then\r
-    myPattern = "^CKA_LABEL\s+[A-Z0-9]+\s+""(.+?)"""\r
-    myLabel = RegExprFirst(myPattern, myLines(i))\r
-  End If\r
-  If (myInsideCert = TRUE) Then\r
-    If InstrRev(myLines(i), "END") Then\r
-      myInsideCert = FALSE\r
-      While (i < UBound(myLines)) And Not (myLines(i) = "#")\r
-        i = i + 1\r
-        If InstrRev(myLines(i), "CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR") Then\r
-          myUntrusted = FALSE\r
-        End If\r
-      Wend\r
-      If (myUntrusted = TRUE) Then\r
-        myNumSkipped = myNumSkipped + 1\r
-      Else\r
-        myStream.WriteText myLabel & vbLf\r
-        myStream.WriteText String(Len(myLabel), "=") & vbLf\r
-        myPem = "-----BEGIN CERTIFICATE-----" & vbLf & _\r
-                Base64Encode(myData) & vbLf & _\r
-                "-----END CERTIFICATE-----" & vbLf\r
-        If (myOptTxt = FALSE) Then\r
-          myStream.WriteText myPem & vbLf\r
-        Else\r
-          Dim myCmd, myRval, myTmpIn, myTmpOut\r
-          myTmpIn = objFSO.GetSpecialFolder(2).Path & "\" & objFSO.GetTempName\r
-          myTmpOut = objFSO.GetSpecialFolder(2).Path & "\" & objFSO.GetTempName\r
-          Set myTmpFh = objFSO.OpenTextFile(myTmpIn, 2, TRUE)\r
-          myTmpFh.Write myPem\r
-          myTmpFh.Close\r
-          myCmd = """" & myOpenSSL & """ x509 -md5 -fingerprint -text " & _\r
-                  "-inform PEM -in " & myTmpIn & " -out " & myTmpOut\r
-          myRval = objShell.Run (myCmd, 0, TRUE)\r
-          objFSO.DeleteFile myTmpIn, TRUE\r
-          If Not (myRval = 0) Then\r
-            MsgBox("Failed to process PEM cert with OpenSSL commandline!"), vbCritical, mySelf\r
-            objFSO.DeleteFile myTmpOut, TRUE\r
-            WScript.Quit 3\r
-          End If\r
-          Set myTmpFh = objFSO.OpenTextFile(myTmpOut, 1)\r
-          myStream.WriteText myTmpFh.ReadAll & vbLf\r
-          myTmpFh.Close\r
-          objFSO.DeleteFile myTmpOut, TRUE\r
-        End If\r
-        myNumCerts = myNumCerts + 1\r
-      End If\r
-    Else\r
-      myOctets = Split(myLines(i), "\")\r
-      For j = 1 To UBound(myOctets)\r
-        myData = myData & Chr(CByte("&o" & myOctets(j)))\r
-      Next\r
-    End If\r
-  End If\r
-  If InstrRev(myLines(i), "CVS_ID ") Then\r
-    myPattern = "^CVS_ID\s+""(.+?)"""\r
-    myRev = RegExprFirst(myPattern, myLines(i))\r
-    myStream.WriteText "# " & myRev & vbLf & vbLf\r
-  End If\r
-  If InstrRev(myLines(i), "CKA_VALUE MULTILINE_OCTAL") Then\r
-    myInsideCert = TRUE\r
-    myUntrusted = TRUE\r
-    myData = ""\r
-  End If\r
-  If InstrRev(myLines(i), "***** BEGIN LICENSE BLOCK *****") Then\r
-    myInsideLicense = TRUE\r
-  End If\r
-  If (myInsideLicense = TRUE) Then\r
-    myStream.WriteText myLines(i) & vbLf\r
-    myLicenseText = myLicenseText & Mid(myLines(i), 2) & vbLf\r
-  End If\r
-  If InstrRev(myLines(i), "***** END LICENSE BLOCK *****") Then\r
-    myInsideLicense = FALSE\r
-    If (myAskLiF = TRUE) Then\r
-      If Not (6 = objShell.PopUp(myLicenseText & vbLf & _\r
-              "Do you agree to the license shown above (required to proceed) ?",, _\r
-              mySelf, vbQuestion + vbYesNo + vbDefaultButton1)) Then\r
-        myStream.Close\r
-        objFSO.DeleteFile myCaFile, TRUE\r
-        WScript.Quit 2\r
-      End If\r
-    End If\r
-  End If\r
-Next\r
-\r
-' To stop the UTF-8 BOM from being written the stream has to be copied and\r
-' then saved as binary.\r
-Dim myCopy\r
-Set myCopy = CreateObject("ADODB.Stream")\r
-myCopy.Type = adTypeBinary\r
-myCopy.Open\r
-myStream.Position = 3 ' Skip UTF-8 BOM\r
-myStream.CopyTo myCopy\r
-myCopy.SaveToFile myCaFile, adSaveCreateOverWrite\r
-myCopy.Close\r
-myStream.Close\r
-Set myCopy = Nothing\r
-Set myStream = Nothing\r
-\r
-' Done\r
-objShell.PopUp "Done (" & myNumCerts & " CA certs processed, " & myNumSkipped & _\r
-               " untrusted skipped).", 20, mySelf, vbInformation\r
-WScript.Quit 0\r
-\r
-Function ConvertBinaryToUTF8(arrBytes)\r
-  Dim objStream\r
-  Set objStream = CreateObject("ADODB.Stream")\r
-  objStream.Open\r
-  objStream.Type = adTypeBinary\r
-  objStream.Write arrBytes\r
-  objStream.Position = 0\r
-  objStream.Type = adTypeText\r
-  objStream.Charset = "utf-8"\r
-  ConvertBinaryToUTF8 = objStream.ReadText\r
-  Set objStream = Nothing\r
-End Function\r
-\r
-Function SaveBinaryData(filename, data)\r
-  Dim objStream\r
-  Set objStream = CreateObject("ADODB.Stream")\r
-  objStream.Type = adTypeBinary\r
-  objStream.Open\r
-  objStream.Write data\r
-  objStream.SaveToFile filename, adSaveCreateOverWrite\r
-  objStream.Close\r
-  Set objStream = Nothing\r
-End Function\r
-\r
-Function RegExprFirst(SearchPattern, TheString)\r
-  Dim objRegExp, Matches                        ' create variables.\r
-  Set objRegExp = New RegExp                    ' create a regular expression.\r
-  objRegExp.Pattern = SearchPattern             ' sets the search pattern.\r
-  objRegExp.IgnoreCase = TRUE                   ' set to ignores case.\r
-  objRegExp.Global = TRUE                       ' set to global search.\r
-  Set Matches = objRegExp.Execute(TheString)    ' do the search.\r
-  If (Matches.Count) Then\r
-    RegExprFirst = Matches(0).SubMatches(0)     ' return first match.\r
-  Else\r
-    RegExprFirst = ""\r
-  End If\r
-  Set objRegExp = Nothing\r
-End Function\r
-\r
-Function Base64Encode(inData)\r
-  Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"\r
-  Dim cOut, sOut, lWrap, I\r
-  lWrap = Int(myWrapLe * 3 / 4)\r
-\r
-  'For each group of 3 bytes\r
-  For I = 1 To Len(inData) Step 3\r
-    Dim nGroup, pOut, sGroup\r
-\r
-    'Create one long from this 3 bytes.\r
-    nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _\r
-             &H100 * MyASC(Mid(inData, I + 1, 1)) + _\r
-             MyASC(Mid(inData, I + 2, 1))\r
-\r
-    'Oct splits the long To 8 groups with 3 bits\r
-    nGroup = Oct(nGroup)\r
-\r
-    'Add leading zeros\r
-    nGroup = String(8 - Len(nGroup), "0") & nGroup\r
-\r
-    'Convert To base64\r
-    pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) & _\r
-           Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) & _\r
-           Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) & _\r
-           Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)\r
-\r
-    'Add the part To OutPut string\r
-    sOut = sOut + pOut\r
-\r
-    'Add a new line For Each myWrapLe chars In dest\r
-    If (I < Len(inData) - 2) Then\r
-      If (I + 2) Mod lWrap = 0 Then sOut = sOut & vbLf\r
-    End If\r
-  Next\r
-  Select Case Len(inData) Mod 3\r
-    Case 1: '8 bit final\r
-      sOut = Left(sOut, Len(sOut) - 2) & "=="\r
-    Case 2: '16 bit final\r
-      sOut = Left(sOut, Len(sOut) - 1) & "="\r
-  End Select\r
-  Base64Encode = sOut\r
-End Function\r
-\r
-Function MyASC(OneChar)\r
-  If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)\r
-End Function\r
-\r
-' Return the date in the same format as perl to match mk-ca-bundle.pl output:\r
-' Wed Sep  7 03:12:05 2016\r
-Function ConvertDateToString(input)\r
-  Dim output\r
-  output = WeekDayName(WeekDay(input), TRUE) & " " & _\r
-           MonthName(Month(input), TRUE) & " "\r
-  If (Len(Day(input)) = 1) Then\r
-    output = output & " "\r
-  End If\r
-  output = output & _\r
-           Day(input) & " " & _\r
-           FormatDateTime(input, vbShortTime) & ":"\r
-  If (Len(Second(input)) = 1) Then\r
-    output = output & "0"\r
-  End If\r
-  output = output & _\r
-           Second(input) & " " & _\r
-           Year(input)\r
-  ConvertDateToString = output\r
-End Function\r
-\r
-' Convert local Date to UTC. Microsoft says:\r
-' Use Win32_ComputerSystem CurrentTimeZone property, because it automatically\r
-' adjusts the Time Zone bias for daylight saving time; Win32_Time Zone Bias\r
-' property does not.\r
-' https://msdn.microsoft.com/en-us/library/windows/desktop/ms696015.aspx\r
-Function LocalDateToUTC(localdate)\r
-  Dim item, offset\r
-  For Each item In GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")\r
-    offset = item.CurrentTimeZone ' the offset in minutes\r
-  Next\r
-  If (offset < 0) Then\r
-    LocalDateToUTC = DateAdd("n",  ABS(offset), localdate)\r
-  Else\r
-    LocalDateToUTC = DateAdd("n", -ABS(offset), localdate)\r
-  End If\r
-  'objShell.PopUp LocalDateToUTC\r
-End Function\r
-\r
-Function FileSHA256(filename)\r
-  Dim cmd, rval, tmpOut, tmpFh\r
-  if (myUseOpenSSL = TRUE) Then\r
-    tmpOut = objFSO.GetSpecialFolder(2).Path & "\" & objFSO.GetTempName\r
-    cmd = """" & myOpenSSL & """ dgst -r -sha256 -out """ & tmpOut & """ """ & filename & """"\r
-    rval = objShell.Run(cmd, 0, TRUE)\r
-    If Not (rval = 0) Then\r
-      MsgBox("Failed to get sha256 of """ & filename & """ with OpenSSL commandline!"), vbCritical, mySelf\r
-      objFSO.DeleteFile tmpOut, TRUE\r
-      WScript.Quit 3\r
-    End If\r
-    Set tmpFh = objFSO.OpenTextFile(tmpOut, 1)\r
-    FileSHA256 = RegExprFirst("^([0-9a-f]{64}) .+", tmpFh.ReadAll)\r
-    tmpFh.Close\r
-    objFSO.DeleteFile tmpOut, TRUE\r
-  Else\r
-    FileSHA256 = ""\r
-  End If\r
-End Function\r
index 0fd3afc8aeffbe38c20674e850137325f11e90f5..8a7c17a7ffb067de650955a6218463969f50cba9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1999 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  *
  * Purpose:
  *  A merge of Bjorn Reese's format() function and Daniel's dsprintf()
@@ -65,7 +67,6 @@
  */
 
 #if (defined(__BORLANDC__) && (__BORLANDC__ >= 0x520)) || \
-    (defined(__WATCOMC__) && defined(__386__)) || \
     (defined(__POCC__) && defined(_MSC_VER)) || \
     (defined(_WIN32_WCE)) || \
     (defined(__MINGW32__)) || \
@@ -317,6 +318,11 @@ static int dprintf_Pass1(const char *format, struct va_stack *vto,
             flags |= FLAGS_PREC;
             precision = strtol(fmt, &fmt, 10);
           }
+          if((flags & (FLAGS_PREC | FLAGS_PRECPARAM)) ==
+             (FLAGS_PREC | FLAGS_PRECPARAM))
+            /* it is not permitted to use both kinds of precision for the same
+               argument */
+            return 1;
           break;
         case 'h':
           flags |= FLAGS_SHORT;
@@ -593,7 +599,7 @@ static int dprintf_formatf(
 
   /* Do the actual %-code parsing */
   if(dprintf_Pass1(format, vto, endpos, ap_save))
-    return -1;
+    return 0;
 
   end = &endpos[0]; /* the initial end-position from the list dprintf_Pass1()
                        created for us */
@@ -830,6 +836,8 @@ static int dprintf_formatf(
         }
         else if(prec != -1)
           len = (size_t)prec;
+        else if(*str == '\0')
+          len = 0;
         else
           len = strlen(str);
 
@@ -953,11 +961,22 @@ static int dprintf_formatf(
         else
           *fptr++ = 'f';
 
-        *fptr = 0; /* and a final zero termination */
+        *fptr = 0; /* and a final null-termination */
 
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wformat-nonliteral"
+#endif
         /* NOTE NOTE NOTE!! Not all sprintf implementations return number of
            output characters */
+#ifdef HAVE_SNPRINTF
+        (snprintf)(work, sizeof(work), formatbuf, p->data.dnum);
+#else
         (sprintf)(work, formatbuf, p->data.dnum);
+#endif
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
         DEBUGASSERT(strlen(work) <= sizeof(work));
         for(fptr = work; *fptr; fptr++)
           OUTCHAR(*fptr);
@@ -1015,11 +1034,12 @@ int curl_mvsnprintf(char *buffer, size_t maxlength, const char *format,
   info.max = maxlength;
 
   retcode = dprintf_formatf(&info, addbyter, format, ap_save);
-  if((retcode != -1) && info.max) {
+  if(info.max) {
     /* we terminate this with a zero byte */
     if(info.max == info.length) {
       /* we're at maximum, scrap the last letter */
       info.buffer[-1] = 0;
+      DEBUGASSERT(retcode);
       retcode--; /* don't count the nul byte */
     }
     else
@@ -1057,13 +1077,12 @@ extern int Curl_dyn_vprintf(struct dynbuf *dyn,
 /* appends the formatted string, returns 0 on success, 1 on error */
 int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save)
 {
-  int retcode;
   struct asprintf info;
   info.b = dyn;
   info.fail = 0;
 
-  retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save);
-  if((-1 == retcode) || info.fail) {
+  (void)dprintf_formatf(&info, alloc_addbyter, format, ap_save);
+  if(info.fail) {
     Curl_dyn_free(info.b);
     return 1;
   }
@@ -1072,15 +1091,14 @@ int Curl_dyn_vprintf(struct dynbuf *dyn, const char *format, va_list ap_save)
 
 char *curl_mvaprintf(const char *format, va_list ap_save)
 {
-  int retcode;
   struct asprintf info;
   struct dynbuf dyn;
   info.b = &dyn;
   Curl_dyn_init(info.b, DYN_APRINTF);
   info.fail = 0;
 
-  retcode = dprintf_formatf(&info, alloc_addbyter, format, ap_save);
-  if((-1 == retcode) || info.fail) {
+  (void)dprintf_formatf(&info, alloc_addbyter, format, ap_save);
+  if(info.fail) {
     Curl_dyn_free(info.b);
     return NULL;
   }
index fcd40b41e600e77ed71b93b7bcf1813c79044cce..4f3d14386fece980622c40c050d947a1160b5c4c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2019, Björn Stenberg, <bjorn@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * 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"
@@ -60,6 +62,8 @@
  */
 
 static CURLcode mqtt_do(struct Curl_easy *data, bool *done);
+static CURLcode mqtt_done(struct Curl_easy *data,
+                          CURLcode status, bool premature);
 static CURLcode mqtt_doing(struct Curl_easy *data, bool *done);
 static int mqtt_getsock(struct Curl_easy *data, struct connectdata *conn,
                         curl_socket_t *sock);
@@ -74,7 +78,7 @@ const struct Curl_handler Curl_handler_mqtt = {
   "MQTT",                             /* scheme */
   mqtt_setup_conn,                    /* setup_connection */
   mqtt_do,                            /* do_it */
-  ZERO_NULL,                          /* done */
+  mqtt_done,                          /* done */
   ZERO_NULL,                          /* do_more */
   ZERO_NULL,                          /* connect_it */
   ZERO_NULL,                          /* connecting */
@@ -182,7 +186,7 @@ static int add_passwd(const char *passwd, const size_t plen,
   return 0;
 }
 
-/* add user to the CONN packet */
+/* add user to the CONNECT packet */
 static int add_user(const char *username, const size_t ulen,
                     unsigned char *pkt, const size_t start, int remain_pos)
 {
@@ -200,7 +204,7 @@ static int add_user(const char *username, const size_t ulen,
   return 0;
 }
 
-/* add client ID to the CONN packet */
+/* add client ID to the CONNECT packet */
 static int add_client_id(const char *client_id, const size_t client_id_len,
                          char *pkt, const size_t start)
 {
@@ -212,7 +216,7 @@ static int add_client_id(const char *client_id, const size_t client_id_len,
   return 0;
 }
 
-/* Set initial values of CONN packet */
+/* Set initial values of CONNECT packet */
 static int init_connpack(char *packet, char *remain, int remain_pos)
 {
   /* Fixed header starts */
@@ -289,7 +293,7 @@ static CURLcode mqtt_connect(struct Curl_easy *data)
     return CURLE_OUT_OF_MEMORY;
   memset(packet, 0, packetlen);
 
-  /* set initial values for CONN pack */
+  /* set initial values for the CONNECT packet */
   pos = init_connpack(packet, remain, remain_pos);
 
   result = Curl_rand_hex(data, (unsigned char *)&client_id[clen],
@@ -344,7 +348,9 @@ end:
 static CURLcode mqtt_disconnect(struct Curl_easy *data)
 {
   CURLcode result = CURLE_OK;
+  struct MQTT *mq = data->req.p.mqtt;
   result = mqtt_send(data, (char *)"\xe0\x00", 2);
+  Curl_safefree(mq->sendleftovers);
   return result;
 }
 
@@ -383,11 +389,18 @@ static CURLcode mqtt_get_topic(struct Curl_easy *data,
                                char **topic, size_t *topiclen)
 {
   char *path = data->state.up.path;
-  if(strlen(path) > 1)
-    return Curl_urldecode(data, path + 1, 0, topic, topiclen,
-                          REJECT_NADA);
-  failf(data, "No MQTT topic found. Forgot to URL encode it?");
-  return CURLE_URL_MALFORMAT;
+  CURLcode result = CURLE_URL_MALFORMAT;
+  if(strlen(path) > 1) {
+    result = Curl_urldecode(path + 1, 0, topic, topiclen, REJECT_NADA);
+    if(!result && (*topiclen > 0xffff)) {
+      failf(data, "Too long MQTT topic");
+      result = CURLE_URL_MALFORMAT;
+    }
+  }
+  else
+    failf(data, "No MQTT topic found. Forgot to URL encode it?");
+
+  return result;
 }
 
 static CURLcode mqtt_subscribe(struct Curl_easy *data)
@@ -685,13 +698,23 @@ static CURLcode mqtt_do(struct Curl_easy *data, bool *done)
 
   result = mqtt_connect(data);
   if(result) {
-    failf(data, "Error %d sending MQTT CONN request", result);
+    failf(data, "Error %d sending MQTT CONNECT request", result);
     return result;
   }
   mqstate(data, MQTT_FIRST, MQTT_CONNACK);
   return CURLE_OK;
 }
 
+static CURLcode mqtt_done(struct Curl_easy *data,
+                          CURLcode status, bool premature)
+{
+  struct MQTT *mq = data->req.p.mqtt;
+  (void)status;
+  (void)premature;
+  Curl_safefree(mq->sendleftovers);
+  return CURLE_OK;
+}
+
 static CURLcode mqtt_doing(struct Curl_easy *data, bool *done)
 {
   CURLcode result = CURLE_OK;
@@ -719,8 +742,14 @@ static CURLcode mqtt_doing(struct Curl_easy *data, bool *done)
   case MQTT_FIRST:
     /* Read the initial byte only */
     result = Curl_read(data, sockfd, (char *)&mq->firstbyte, 1, &nread);
-    if(!nread)
+    if(result)
+      break;
+    else if(!nread) {
+      failf(data, "Connection disconnected");
+      *done = TRUE;
+      result = CURLE_RECV_ERROR;
       break;
+    }
     Curl_debug(data, CURLINFO_HEADER_IN, (char *)&mq->firstbyte, 1);
     /* remember the first byte */
     mq->npacket = 0;
index fb52c723264d050093e8e605463d8968cd5fdfcf..c400d9b14e53ea21d933ca08cf0bc5793ea771e8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2020, Björn Stenberg, <bjorn@haxx.se>
+ * Copyright (C) 2019 - 2022, Björn Stenberg, <bjorn@haxx.se>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifndef CURL_DISABLE_MQTT
index f8dcc63b471f7a8071265f5be114f7ee77b9ff75..51acba73ac67b3b3166bcec11ea3a4292bc184ae 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -43,7 +45,6 @@
 #include "multihandle.h"
 #include "sigpipe.h"
 #include "vtls/vtls.h"
-#include "connect.h"
 #include "http_proxy.h"
 #include "http2.h"
 #include "socketpair.h"
 #include "curl_memory.h"
 #include "memdebug.h"
 
+#ifdef __APPLE__
+
+#define wakeup_write  write
+#define wakeup_read   read
+#define wakeup_close  close
+#define wakeup_create pipe
+
+#else /* __APPLE__ */
+
+#define wakeup_write     swrite
+#define wakeup_read      sread
+#define wakeup_close     sclose
+#define wakeup_create(p) Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, p)
+
+#endif /* __APPLE__ */
+
 /*
   CURL_SOCKET_HASH_TABLE_SIZE should be a prime number. Increasing it from 97
   to 911 takes on a 32-bit machine 4 x 804 = 3211 more bytes.  Still, every
 #define CURL_CONNECTION_HASH_SIZE 97
 #endif
 
+#ifndef CURL_DNS_HASH_SIZE
+#define CURL_DNS_HASH_SIZE 71
+#endif
+
 #define CURL_MULTI_HANDLE 0x000bab1e
 
 #define GOOD_MULTI_HANDLE(x) \
@@ -118,7 +139,7 @@ static void init_completed(struct Curl_easy *data)
 
   /* Important: reset the conn pointer so that we don't point to memory
      that could be freed anytime */
-  Curl_detach_connnection(data);
+  Curl_detach_connection(data);
   Curl_expire_clear(data); /* stop all timers */
 }
 
@@ -370,7 +391,8 @@ static CURLMcode multi_addmsg(struct Curl_multi *multi,
 }
 
 struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
-                                     int chashsize) /* connection hash */
+                                     int chashsize, /* connection hash */
+                                     int dnssize) /* dns hash */
 {
   struct Curl_multi *multi = calloc(1, sizeof(struct Curl_multi));
 
@@ -379,7 +401,7 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
 
   multi->magic = CURL_MULTI_HANDLE;
 
-  Curl_init_dnscache(&multi->hostcache);
+  Curl_init_dnscache(&multi->hostcache, dnssize);
 
   sh_init(&multi->sockhash, hashsize);
 
@@ -394,7 +416,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
   /* -1 means it not set by user, use the default value */
   multi->maxconnects = -1;
   multi->max_concurrent_streams = 100;
-  multi->ipv6_works = Curl_ipv6works(NULL);
 
 #ifdef USE_WINSOCK
   multi->wsa_event = WSACreateEvent();
@@ -402,14 +423,14 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
     goto error;
 #else
 #ifdef ENABLE_WAKEUP
-  if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, multi->wakeup_pair) < 0) {
+  if(wakeup_create(multi->wakeup_pair) < 0) {
     multi->wakeup_pair[0] = CURL_SOCKET_BAD;
     multi->wakeup_pair[1] = CURL_SOCKET_BAD;
   }
   else if(curlx_nonblock(multi->wakeup_pair[0], TRUE) < 0 ||
           curlx_nonblock(multi->wakeup_pair[1], TRUE) < 0) {
-    sclose(multi->wakeup_pair[0]);
-    sclose(multi->wakeup_pair[1]);
+    wakeup_close(multi->wakeup_pair[0]);
+    wakeup_close(multi->wakeup_pair[1]);
     multi->wakeup_pair[0] = CURL_SOCKET_BAD;
     multi->wakeup_pair[1] = CURL_SOCKET_BAD;
   }
@@ -433,7 +454,8 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */
 struct Curl_multi *curl_multi_init(void)
 {
   return Curl_multi_handle(CURL_SOCKET_HASH_TABLE_SIZE,
-                           CURL_CONNECTION_HASH_SIZE);
+                           CURL_CONNECTION_HASH_SIZE,
+                           CURL_DNS_HASH_SIZE);
 }
 
 CURLMcode curl_multi_add_handle(struct Curl_multi *multi,
@@ -627,7 +649,7 @@ static CURLcode multi_done(struct Curl_easy *data,
   if(CURLE_ABORTED_BY_CALLBACK != result) {
     /* avoid this if we already aborted by callback to avoid this calling
        another callback */
-    CURLcode rc = Curl_pgrsDone(data);
+    int rc = Curl_pgrsDone(data);
     if(!result && rc)
       result = CURLE_ABORTED_BY_CALLBACK;
   }
@@ -635,7 +657,7 @@ static CURLcode multi_done(struct Curl_easy *data,
   process_pending_handles(data->multi); /* connection / multiplex */
 
   CONNCACHE_LOCK(data);
-  Curl_detach_connnection(data);
+  Curl_detach_connection(data);
   if(CONN_INUSE(conn)) {
     /* Stop if still used. */
     CONNCACHE_UNLOCK(data);
@@ -687,16 +709,10 @@ static CURLcode multi_done(struct Curl_easy *data,
 #endif
      ) || conn->bits.close
        || (premature && !(conn->handler->flags & PROTOPT_STREAM))) {
-    CURLcode res2;
     connclose(conn, "disconnecting");
     Curl_conncache_remove_conn(data, conn, FALSE);
     CONNCACHE_UNLOCK(data);
-    res2 = Curl_disconnect(data, conn, premature);
-
-    /* If we had an error already, make sure we return that one. But
-       if we got a new error, return that. */
-    if(!result && res2)
-      result = res2;
+    Curl_disconnect(data, conn, premature);
   }
   else {
     char buffer[256];
@@ -709,14 +725,15 @@ 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;
     msnprintf(buffer, sizeof(buffer),
               "Connection #%ld to host %s left intact",
-              conn->connection_id, host);
+              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 = conn->connection_id;
+      data->state.lastconnect_id = connection_id;
       infof(data, "%s", buffer);
     }
     else
@@ -724,7 +741,6 @@ static CURLcode multi_done(struct Curl_easy *data,
   }
 
   Curl_safefree(data->state.buffer);
-  Curl_free_request_state(data);
   return result;
 }
 
@@ -735,7 +751,7 @@ static int close_connect_only(struct Curl_easy *data,
   if(data->state.lastconnect_id != conn->connection_id)
     return 0;
 
-  if(!conn->bits.connect_only)
+  if(!conn->connect_only)
     return 1;
 
   connclose(conn, "Removing connect-only easy handle");
@@ -830,7 +846,25 @@ CURLMcode curl_multi_remove_handle(struct Curl_multi *multi,
                                       that vanish with this handle */
 
   /* Remove the association between the connection and the handle */
-  Curl_detach_connnection(data);
+  Curl_detach_connection(data);
+
+  if(data->set.connect_only && !data->multi_easy) {
+    /* This removes a handle that was part the multi interface that used
+       CONNECT_ONLY, that connection is now left alive but since this handle
+       has bits.close set nothing can use that transfer anymore and it is
+       forbidden from reuse. And this easy handle cannot find the connection
+       anymore once removed from the multi handle
+
+       Better close the connection here, at once.
+    */
+    struct connectdata *c;
+    curl_socket_t s;
+    s = Curl_getconnectinfo(data, &c);
+    if((s != CURL_SOCKET_BAD) && c) {
+      Curl_conncache_remove_conn(data, c, TRUE);
+      Curl_disconnect(data, c, TRUE);
+    }
+  }
 
   if(data->state.lastconnect_id != -1) {
     /* Mark any connect-only connection for closure */
@@ -905,12 +939,12 @@ bool Curl_multiplex_wanted(const struct Curl_multi *multi)
 }
 
 /*
- * Curl_detach_connnection() removes the given transfer from the connection.
+ * Curl_detach_connection() removes the given transfer from the connection.
  *
  * This is the only function that should clear data->conn. This will
  * occasionally be called with the data->conn pointer already cleared.
  */
-void Curl_detach_connnection(struct Curl_easy *data)
+void Curl_detach_connection(struct Curl_easy *data)
 {
   struct connectdata *conn = data->conn;
   if(conn) {
@@ -922,11 +956,11 @@ void Curl_detach_connnection(struct Curl_easy *data)
 }
 
 /*
- * Curl_attach_connnection() attaches this transfer to this connection.
+ * Curl_attach_connection() attaches this transfer to this connection.
  *
  * This is the only function that should assign data->conn
  */
-void Curl_attach_connnection(struct Curl_easy *data,
+void Curl_attach_connection(struct Curl_easy *data,
                              struct connectdata *conn)
 {
   DEBUGASSERT(!data->conn);
@@ -1313,16 +1347,19 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
       pollrc = Curl_poll(ufds, nfds, 0); /* just pre-check with WinSock */
     else
       pollrc = 0;
-    if(pollrc <= 0) /* now wait... if not ready during the pre-check above */
-      WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, timeout_ms, FALSE);
 #else
     pollrc = Curl_poll(ufds, nfds, timeout_ms); /* wait... */
 #endif
+    if(pollrc < 0)
+      return CURLM_UNRECOVERABLE_POLL;
 
     if(pollrc > 0) {
       retcode = pollrc;
 #ifdef USE_WINSOCK
     }
+    else { /* now wait... if not ready during the pre-check (pollrc == 0) */
+      WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, timeout_ms, FALSE);
+    }
     /* With WinSock, we have to run the following section unconditionally
        to call WSAEventSelect(fd, event, 0) on all the sockets */
     {
@@ -1334,20 +1371,23 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
         unsigned r = ufds[curlfds + i].revents;
         unsigned short mask = 0;
 #ifdef USE_WINSOCK
+        curl_socket_t s = extra_fds[i].fd;
         wsa_events.lNetworkEvents = 0;
-        if(WSAEnumNetworkEvents(extra_fds[i].fd, NULL, &wsa_events) == 0) {
+        if(WSAEnumNetworkEvents(s, NULL, &wsa_events) == 0) {
           if(wsa_events.lNetworkEvents & (FD_READ|FD_ACCEPT|FD_CLOSE))
             mask |= CURL_WAIT_POLLIN;
           if(wsa_events.lNetworkEvents & (FD_WRITE|FD_CONNECT|FD_CLOSE))
             mask |= CURL_WAIT_POLLOUT;
           if(wsa_events.lNetworkEvents & FD_OOB)
             mask |= CURL_WAIT_POLLPRI;
-          if(ret && pollrc <= 0 && wsa_events.lNetworkEvents)
+          if(ret && !pollrc && wsa_events.lNetworkEvents)
             retcode++;
         }
-        WSAEventSelect(extra_fds[i].fd, multi->wsa_event, 0);
-        if(pollrc <= 0)
+        WSAEventSelect(s, multi->wsa_event, 0);
+        if(!pollrc) {
+          extra_fds[i].revents = mask;
           continue;
+        }
 #endif
         if(r & POLLIN)
           mask |= CURL_WAIT_POLLIN;
@@ -1370,7 +1410,7 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
             if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) {
               wsa_events.lNetworkEvents = 0;
               if(WSAEnumNetworkEvents(sockbunch[i], NULL, &wsa_events) == 0) {
-                if(ret && pollrc <= 0 && wsa_events.lNetworkEvents)
+                if(ret && !pollrc && wsa_events.lNetworkEvents)
                   retcode++;
               }
               WSAEventSelect(sockbunch[i], multi->wsa_event, 0);
@@ -1397,7 +1437,7 @@ static CURLMcode multi_wait(struct Curl_multi *multi,
                data from it until it receives an error (except EINTR).
                In normal cases it will get EAGAIN or EWOULDBLOCK
                when there is no more data, breaking the loop. */
-            nread = sread(multi->wakeup_pair[0], buf, sizeof(buf));
+            nread = wakeup_read(multi->wakeup_pair[0], buf, sizeof(buf));
             if(nread <= 0) {
               if(nread < 0 && EINTR == SOCKERRNO)
                 continue;
@@ -1490,7 +1530,7 @@ CURLMcode curl_multi_wakeup(struct Curl_multi *multi)
          that will call curl_multi_wait(). If swrite() returns that it
          would block, it's considered successful because it means that
          previous calls to this function will wake up the poll(). */
-      if(swrite(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
+      if(wakeup_write(multi->wakeup_pair[1], buf, sizeof(buf)) < 0) {
         int err = SOCKERRNO;
         int return_success;
 #ifdef USE_WINSOCK
@@ -1546,7 +1586,7 @@ CURLMcode Curl_multi_add_perform(struct Curl_multi *multi,
 
     /* take this handle to the perform state right away */
     multistate(data, MSTATE_PERFORMING);
-    Curl_attach_connnection(data, conn);
+    Curl_attach_connection(data, conn);
     k->keepon |= KEEP_RECV; /* setup to receive! */
   }
   return rc;
@@ -1759,6 +1799,10 @@ CURLcode Curl_preconnect(struct Curl_easy *data)
   return CURLE_OK;
 }
 
+static void set_in_callback(struct Curl_multi *multi, bool value)
+{
+  multi->in_callback = value;
+}
 
 static CURLMcode multi_runsingle(struct Curl_multi *multi,
                                  struct curltime *nowp,
@@ -1795,7 +1839,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
     rc = CURLM_OK;
 
     if(multi_ischanged(multi, TRUE)) {
-      DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!"));
+      DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue"));
       process_pending_handles(multi); /* multiplexed */
     }
 
@@ -2098,7 +2142,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         }
       }
 
-      if(data->set.connect_only) {
+      if(data->set.connect_only == 1) {
         /* keep connection open for application to use the socket */
         connkeep(data->conn, "CONNECT_ONLY");
         multistate(data, MSTATE_DONE);
@@ -2169,8 +2213,8 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
           Curl_posttransfer(data);
           drc = multi_done(data, result, FALSE);
 
-          /* When set to retry the connection, we must to go back to
-           * the CONNECT state */
+          /* When set to retry the connection, we must go back to the CONNECT
+           * state */
           if(newurl) {
             if(!drc || (drc == CURLE_SEND_ERROR)) {
               follow = FOLLOW_RETRY;
@@ -2382,7 +2426,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
         CURLcode ret = Curl_retry_request(data, &newurl);
 
         if(!ret) {
-          infof(data, "Downgrades to HTTP/1.1!");
+          infof(data, "Downgrades to HTTP/1.1");
           streamclose(data->conn, "Disconnect HTTP/2 for HTTP/1");
           data->state.httpwant = CURL_HTTP_VERSION_1_1;
           /* clear the error message bit too as we ignore the one we got */
@@ -2560,7 +2604,7 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
             /* This is where we make sure that the conn pointer is reset.
                We don't have to do this in every case block above where a
                failure is detected */
-            Curl_detach_connnection(data);
+            Curl_detach_connection(data);
 
             /* remove connection from cache */
             Curl_conncache_remove_conn(data, conn, TRUE);
@@ -2722,8 +2766,8 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi)
     WSACloseEvent(multi->wsa_event);
 #else
 #ifdef ENABLE_WAKEUP
-    sclose(multi->wakeup_pair[0]);
-    sclose(multi->wakeup_pair[1]);
+    wakeup_close(multi->wakeup_pair[0]);
+    wakeup_close(multi->wakeup_pair[1]);
 #endif
 #endif
     free(multi);
@@ -2872,8 +2916,10 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
       continue;
 
     if(multi->socket_cb) {
+      set_in_callback(multi, TRUE);
       rc = multi->socket_cb(data, s, comboaction, multi->socket_userp,
                             entry->socketp);
+      set_in_callback(multi, FALSE);
       if(rc == -1) {
         multi->dead = TRUE;
         return CURLM_ABORTED_BY_CALLBACK;
@@ -2914,8 +2960,10 @@ static CURLMcode singlesocket(struct Curl_multi *multi,
         entry->readers--;
       if(!entry->users) {
         if(multi->socket_cb) {
+          set_in_callback(multi, TRUE);
           rc = multi->socket_cb(data, s, CURL_POLL_REMOVE,
                                 multi->socket_userp, entry->socketp);
+          set_in_callback(multi, FALSE);
           if(rc == -1) {
             multi->dead = TRUE;
             return CURLM_ABORTED_BY_CALLBACK;
@@ -2969,9 +3017,12 @@ void Curl_multi_closed(struct Curl_easy *data, curl_socket_t s)
 
       if(entry) {
         int rc = 0;
-        if(multi->socket_cb)
+        if(multi->socket_cb) {
+          set_in_callback(multi, TRUE);
           rc = multi->socket_cb(data, s, CURL_POLL_REMOVE,
                                 multi->socket_userp, entry->socketp);
+          set_in_callback(multi, FALSE);
+        }
 
         /* now remove it from the socket hash */
         sh_delentry(entry, &multi->sockhash, s);
@@ -3343,7 +3394,9 @@ CURLMcode Curl_update_timer(struct Curl_multi *multi)
       multi->timer_lastcall = none;
       /* there's no timeout now but there was one previously, tell the app to
          disable it */
+      set_in_callback(multi, TRUE);
       rc = multi->timer_cb(multi, -1, multi->timer_userp);
+      set_in_callback(multi, FALSE);
       if(rc == -1) {
         multi->dead = TRUE;
         return CURLM_ABORTED_BY_CALLBACK;
@@ -3362,7 +3415,9 @@ CURLMcode Curl_update_timer(struct Curl_multi *multi)
 
   multi->timer_lastcall = multi->timetree->key;
 
+  set_in_callback(multi, TRUE);
   rc = multi->timer_cb(multi, timeout_ms, multi->timer_userp);
+  set_in_callback(multi, FALSE);
   if(rc == -1) {
     multi->dead = TRUE;
     return CURLM_ABORTED_BY_CALLBACK;
@@ -3561,9 +3616,6 @@ CURLMcode curl_multi_assign(struct Curl_multi *multi, curl_socket_t s,
 {
   struct Curl_sh_entry *there = NULL;
 
-  if(multi->in_callback)
-    return CURLM_RECURSIVE_API_CALL;
-
   there = sh_getentry(&multi->sockhash, s);
 
   if(!there)
index db7f130efd65d49aa5072e15fcca680e5776f102..a997784ea3772b70c2f9f9cdc5760e87e7ee8123 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "llist.h"
@@ -148,11 +150,13 @@ struct Curl_multi {
                                    0 is used for read, 1 is used for write */
 #endif
 #endif
-  /* multiplexing wanted */
-  bool multiplexing;
-  bool recheckstate; /* see Curl_multi_connchanged */
+#define IPV6_UNKNOWN 0
+#define IPV6_DEAD    1
+#define IPV6_WORKS   2
+  unsigned char ipv6_up;       /* IPV6_* defined */
+  bool multiplexing;           /* multiplexing wanted */
+  bool recheckstate;           /* see Curl_multi_connchanged */
   bool in_callback;            /* true while executing a callback */
-  bool ipv6_works;
 #ifdef USE_OPENSSL
   bool ssl_seeded;
 #endif
index f4d0ada8e8fa3ffc005495cc8ac68f1964dbbc47..0cb9d4f7f2a7b0e775d5bad8671df0495986bdca 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -31,17 +33,18 @@ void Curl_expire(struct Curl_easy *data, timediff_t milli, expire_id);
 void Curl_expire_clear(struct Curl_easy *data);
 void Curl_expire_done(struct Curl_easy *data, expire_id id);
 CURLMcode Curl_update_timer(struct Curl_multi *multi) WARN_UNUSED_RESULT;
-void Curl_attach_connnection(struct Curl_easy *data,
+void Curl_attach_connection(struct Curl_easy *data,
                              struct connectdata *conn);
-void Curl_detach_connnection(struct Curl_easy *data);
+void Curl_detach_connection(struct Curl_easy *data);
 bool Curl_multiplex_wanted(const struct Curl_multi *multi);
 void Curl_set_in_callback(struct Curl_easy *data, bool value);
 bool Curl_is_in_callback(struct Curl_easy *easy);
 CURLcode Curl_preconnect(struct Curl_easy *data);
 
 /* Internal version of curl_multi_init() accepts size parameters for the
-   socket and connection hashes */
-struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize);
+   socket, connection and dns hashes */
+struct Curl_multi *Curl_multi_handle(int hashsize, int chashsize,
+                                     int dnssize);
 
 /* the write bits start at bit 16 for the *getsock() bitmap */
 #define GETSOCK_WRITEBITSTART 16
index 0a4ae2cdcaf4690a3f107c2e6377fa9308090361..4461b8492fda9092c9cd14665c9d59252b8d427d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -31,6 +33,7 @@
 #include "netrc.h"
 #include "strtok.h"
 #include "strcase.h"
+#include "curl_get_line.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -56,8 +59,6 @@ enum host_lookup_state {
 static int parsenetrc(const char *host,
                       char **loginp,
                       char **passwordp,
-                      bool *login_changed,
-                      bool *password_changed,
                       char *netrcfile)
 {
   FILE *file;
@@ -71,31 +72,87 @@ static int parsenetrc(const char *host,
 
   char state_login = 0;      /* Found a login keyword */
   char state_password = 0;   /* Found a password keyword */
-  int state_our_login = FALSE;  /* With specific_login, found *our* login
-                                   name */
+  int state_our_login = TRUE;  /* With specific_login, found *our* login
+                                  name (or login-less line) */
 
   DEBUGASSERT(netrcfile);
 
   file = fopen(netrcfile, FOPEN_READTEXT);
   if(file) {
-    char *tok;
-    char *tok_buf;
     bool done = FALSE;
     char netrcbuffer[4096];
     int  netrcbuffsize = (int)sizeof(netrcbuffer);
 
-    while(!done && fgets(netrcbuffer, netrcbuffsize, file)) {
+    while(!done && Curl_get_line(netrcbuffer, netrcbuffsize, file)) {
+      char *tok;
+      char *tok_end;
+      bool quoted;
       if(state == MACDEF) {
         if((netrcbuffer[0] == '\n') || (netrcbuffer[0] == '\r'))
           state = NOTHING;
         else
           continue;
       }
-      tok = strtok_r(netrcbuffer, " \t\n", &tok_buf);
-      if(tok && *tok == '#')
-        /* treat an initial hash as a comment line */
-        continue;
+      tok = netrcbuffer;
       while(tok) {
+        while(ISBLANK(*tok))
+          tok++;
+        /* tok is first non-space letter */
+        if(!*tok || (*tok == '#'))
+          /* end of line or the rest is a comment */
+          break;
+
+        /* leading double-quote means quoted string */
+        quoted = (*tok == '\"');
+
+        tok_end = tok;
+        if(!quoted) {
+          while(!ISSPACE(*tok_end))
+            tok_end++;
+          *tok_end = 0;
+        }
+        else {
+          bool escape = FALSE;
+          bool endquote = FALSE;
+          char *store = tok;
+          tok_end++; /* pass the leading quote */
+          while(*tok_end) {
+            char s = *tok_end;
+            if(escape) {
+              escape = FALSE;
+              switch(s) {
+              case 'n':
+                s = '\n';
+                break;
+              case 'r':
+                s = '\r';
+                break;
+              case 't':
+                s = '\t';
+                break;
+              }
+            }
+            else if(s == '\\') {
+              escape = TRUE;
+              tok_end++;
+              continue;
+            }
+            else if(s == '\"') {
+              tok_end++; /* pass the ending quote */
+              endquote = TRUE;
+              break;
+            }
+            *store++ = s;
+            tok_end++;
+          }
+          *store = 0;
+          if(escape || !endquote) {
+            /* bad syntax, get out */
+            retcode = NETRC_FAILED;
+            goto out;
+          }
+        }
+
         if((login && *login) && (password && *password)) {
           done = TRUE;
           break;
@@ -140,9 +197,9 @@ static int parsenetrc(const char *host,
           /* we are now parsing sub-keywords concerning "our" host */
           if(state_login) {
             if(specific_login) {
-              state_our_login = strcasecompare(login, tok);
+              state_our_login = !Curl_timestrcmp(login, tok);
             }
-            else if(!login || strcmp(login, tok)) {
+            else if(!login || Curl_timestrcmp(login, tok)) {
               if(login_alloc) {
                 free(login);
                 login_alloc = FALSE;
@@ -158,7 +215,7 @@ static int parsenetrc(const char *host,
           }
           else if(state_password) {
             if((state_our_login || !specific_login)
-                && (!password || strcmp(password, tok))) {
+               && (!password || Curl_timestrcmp(password, tok))) {
               if(password_alloc) {
                 free(password);
                 password_alloc = FALSE;
@@ -183,27 +240,22 @@ static int parsenetrc(const char *host,
           }
           break;
         } /* switch (state) */
-
-        tok = strtok_r(NULL, " \t\n", &tok_buf);
-      } /* while(tok) */
-    } /* while fgets() */
+        tok = ++tok_end;
+      }
+    } /* while Curl_get_line() */
 
     out:
     if(!retcode) {
       /* success */
-      *login_changed = FALSE;
-      *password_changed = FALSE;
       if(login_alloc) {
         if(*loginp)
           free(*loginp);
         *loginp = login;
-        *login_changed = TRUE;
       }
       if(password_alloc) {
         if(*passwordp)
           free(*passwordp);
         *passwordp = password;
-        *password_changed = TRUE;
       }
     }
     else {
@@ -224,17 +276,16 @@ static int parsenetrc(const char *host,
  * *loginp and *passwordp MUST be allocated if they aren't NULL when passed
  * in.
  */
-int Curl_parsenetrc(const char *host,
-                    char **loginp,
-                    char **passwordp,
-                    bool *login_changed,
-                    bool *password_changed,
+int Curl_parsenetrc(const char *host, char **loginp, char **passwordp,
                     char *netrcfile)
 {
   int retcode = 1;
   char *filealloc = NULL;
 
   if(!netrcfile) {
+#if defined(HAVE_GETPWUID_R) && defined(HAVE_GETEUID)
+    char pwbuf[1024];
+#endif
     char *home = NULL;
     char *homea = curl_getenv("HOME"); /* portable environment reader */
     if(homea) {
@@ -243,7 +294,6 @@ int Curl_parsenetrc(const char *host,
     }
     else {
       struct passwd pw, *pw_res;
-      char pwbuf[1024];
       if(!getpwuid_r(geteuid(), &pw, pwbuf, sizeof(pwbuf), &pw_res)
          && pw_res) {
         home = pw.pw_dir;
@@ -256,6 +306,13 @@ int Curl_parsenetrc(const char *host,
       if(pw) {
         home = pw->pw_dir;
       }
+#elif defined(_WIN32)
+    }
+    else {
+      homea = curl_getenv("USERPROFILE");
+      if(homea) {
+        home = homea;
+      }
 #endif
     }
 
@@ -268,8 +325,7 @@ int Curl_parsenetrc(const char *host,
       free(homea);
       return -1;
     }
-    retcode = parsenetrc(host, loginp, passwordp, login_changed,
-                         password_changed, filealloc);
+    retcode = parsenetrc(host, loginp, passwordp, filealloc);
     free(filealloc);
 #ifdef WIN32
     if(retcode == NETRC_FILE_MISSING) {
@@ -279,16 +335,14 @@ int Curl_parsenetrc(const char *host,
         free(homea);
         return -1;
       }
-      retcode = parsenetrc(host, loginp, passwordp, login_changed,
-                           password_changed, filealloc);
+      retcode = parsenetrc(host, loginp, passwordp, filealloc);
       free(filealloc);
     }
 #endif
     free(homea);
   }
   else
-    retcode = parsenetrc(host, loginp, passwordp, login_changed,
-                         password_changed, netrcfile);
+    retcode = parsenetrc(host, loginp, passwordp, netrcfile);
   return retcode;
 }
 
index 4938a5916a3d2a9ab035ef65a638113c47268e71..53d005672134dd066587c5acdb85f106c11472e5 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
 #ifndef CURL_DISABLE_NETRC
 
 /* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */
-int Curl_parsenetrc(const char *host,
-                    char **loginp,
-                    char **passwordp,
-                    bool *login_changed,
-                    bool *password_changed,
-                    char *filename);
+int Curl_parsenetrc(const char *host, char **loginp,
+                    char **passwordp, char *filename);
   /* Assume: (*passwordp)[0]=0, host[0] != 0.
    * If (*loginp)[0] = 0, search for login and password within a machine
    * section in the netrc.
diff --git a/lib/non-ascii.c b/lib/non-ascii.c
deleted file mode 100644 (file)
index 3b77ae9..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-#include <curl/curl.h>
-
-#include "non-ascii.h"
-#include "formdata.h"
-#include "sendf.h"
-#include "urldata.h"
-#include "multiif.h"
-#include "strerror.h"
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-#ifdef HAVE_ICONV
-#include <iconv.h>
-/* set default codesets for iconv */
-#ifndef CURL_ICONV_CODESET_OF_NETWORK
-#define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-#endif
-#ifndef CURL_ICONV_CODESET_FOR_UTF8
-#define CURL_ICONV_CODESET_FOR_UTF8   "UTF-8"
-#endif
-#define ICONV_ERROR  (size_t)-1
-#endif /* HAVE_ICONV */
-
-/*
- * Curl_convert_clone() returns a malloced copy of the source string (if
- * returning CURLE_OK), with the data converted to network format.
- */
-CURLcode Curl_convert_clone(struct Curl_easy *data,
-                           const char *indata,
-                           size_t insize,
-                           char **outbuf)
-{
-  char *convbuf;
-  CURLcode result;
-
-  convbuf = malloc(insize);
-  if(!convbuf)
-    return CURLE_OUT_OF_MEMORY;
-
-  memcpy(convbuf, indata, insize);
-  result = Curl_convert_to_network(data, convbuf, insize);
-  if(result) {
-    free(convbuf);
-    return result;
-  }
-
-  *outbuf = convbuf; /* return the converted buffer */
-
-  return CURLE_OK;
-}
-
-/*
- * Curl_convert_to_network() is an internal function for performing ASCII
- * conversions on non-ASCII platforms. It converts the buffer _in place_.
- */
-CURLcode Curl_convert_to_network(struct Curl_easy *data,
-                                 char *buffer, size_t length)
-{
-  if(data && data->set.convtonetwork) {
-    /* use translation callback */
-    CURLcode result;
-    Curl_set_in_callback(data, true);
-    result = data->set.convtonetwork(buffer, length);
-    Curl_set_in_callback(data, false);
-    if(result) {
-      failf(data,
-            "CURLOPT_CONV_TO_NETWORK_FUNCTION callback returned %d: %s",
-            (int)result, curl_easy_strerror(result));
-    }
-
-    return result;
-  }
-  else {
-#ifdef HAVE_ICONV
-    /* do the translation ourselves */
-    iconv_t tmpcd = (iconv_t) -1;
-    iconv_t *cd = &tmpcd;
-    char *input_ptr, *output_ptr;
-    size_t in_bytes, out_bytes, rc;
-    char ebuffer[STRERROR_LEN];
-
-    /* open an iconv conversion descriptor if necessary */
-    if(data)
-      cd = &data->outbound_cd;
-    if(*cd == (iconv_t)-1) {
-      *cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
-                       CURL_ICONV_CODESET_OF_HOST);
-      if(*cd == (iconv_t)-1) {
-        failf(data,
-              "The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
-              CURL_ICONV_CODESET_OF_NETWORK,
-              CURL_ICONV_CODESET_OF_HOST,
-              errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
-        return CURLE_CONV_FAILED;
-      }
-    }
-    /* call iconv */
-    input_ptr = output_ptr = buffer;
-    in_bytes = out_bytes = length;
-    rc = iconv(*cd, &input_ptr, &in_bytes,
-               &output_ptr, &out_bytes);
-    if(!data)
-      iconv_close(tmpcd);
-    if((rc == ICONV_ERROR) || (in_bytes)) {
-      failf(data,
-            "The Curl_convert_to_network iconv call failed with errno %i: %s",
-            errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
-      return CURLE_CONV_FAILED;
-    }
-#else
-    failf(data, "CURLOPT_CONV_TO_NETWORK_FUNCTION callback required");
-    return CURLE_CONV_REQD;
-#endif /* HAVE_ICONV */
-  }
-
-  return CURLE_OK;
-}
-
-/*
- * Curl_convert_from_network() is an internal function for performing ASCII
- * conversions on non-ASCII platforms. It converts the buffer _in place_.
- */
-CURLcode Curl_convert_from_network(struct Curl_easy *data,
-                                   char *buffer, size_t length)
-{
-  if(data && data->set.convfromnetwork) {
-    /* use translation callback */
-    CURLcode result;
-    Curl_set_in_callback(data, true);
-    result = data->set.convfromnetwork(buffer, length);
-    Curl_set_in_callback(data, false);
-    if(result) {
-      failf(data,
-            "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback returned %d: %s",
-            (int)result, curl_easy_strerror(result));
-    }
-
-    return result;
-  }
-  else {
-#ifdef HAVE_ICONV
-    /* do the translation ourselves */
-    iconv_t tmpcd = (iconv_t) -1;
-    iconv_t *cd = &tmpcd;
-    char *input_ptr, *output_ptr;
-    size_t in_bytes, out_bytes, rc;
-    char ebuffer[STRERROR_LEN];
-
-    /* open an iconv conversion descriptor if necessary */
-    if(data)
-      cd = &data->inbound_cd;
-    if(*cd == (iconv_t)-1) {
-      *cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
-                       CURL_ICONV_CODESET_OF_NETWORK);
-      if(*cd == (iconv_t)-1) {
-        failf(data,
-              "The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
-              CURL_ICONV_CODESET_OF_HOST,
-              CURL_ICONV_CODESET_OF_NETWORK,
-              errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
-        return CURLE_CONV_FAILED;
-      }
-    }
-    /* call iconv */
-    input_ptr = output_ptr = buffer;
-    in_bytes = out_bytes = length;
-    rc = iconv(*cd, &input_ptr, &in_bytes,
-               &output_ptr, &out_bytes);
-    if(!data)
-      iconv_close(tmpcd);
-    if((rc == ICONV_ERROR) || (in_bytes)) {
-      failf(data,
-            "Curl_convert_from_network iconv call failed with errno %i: %s",
-            errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
-      return CURLE_CONV_FAILED;
-    }
-#else
-    failf(data, "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback required");
-    return CURLE_CONV_REQD;
-#endif /* HAVE_ICONV */
-  }
-
-  return CURLE_OK;
-}
-
-/*
- * Curl_convert_from_utf8() is an internal function for performing UTF-8
- * conversions on non-ASCII platforms.
- */
-CURLcode Curl_convert_from_utf8(struct Curl_easy *data,
-                                char *buffer, size_t length)
-{
-  if(data && data->set.convfromutf8) {
-    /* use translation callback */
-    CURLcode result;
-    Curl_set_in_callback(data, true);
-    result = data->set.convfromutf8(buffer, length);
-    Curl_set_in_callback(data, false);
-    if(result) {
-      failf(data,
-            "CURLOPT_CONV_FROM_UTF8_FUNCTION callback returned %d: %s",
-            (int)result, curl_easy_strerror(result));
-    }
-
-    return result;
-  }
-  else {
-#ifdef HAVE_ICONV
-    /* do the translation ourselves */
-    iconv_t tmpcd = (iconv_t) -1;
-    iconv_t *cd = &tmpcd;
-    char *input_ptr;
-    char *output_ptr;
-    size_t in_bytes, out_bytes, rc;
-    char ebuffer[STRERROR_LEN];
-
-    /* open an iconv conversion descriptor if necessary */
-    if(data)
-      cd = &data->utf8_cd;
-    if(*cd == (iconv_t)-1) {
-      *cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
-                       CURL_ICONV_CODESET_FOR_UTF8);
-      if(*cd == (iconv_t)-1) {
-        failf(data,
-              "The iconv_open(\"%s\", \"%s\") call failed with errno %i: %s",
-              CURL_ICONV_CODESET_OF_HOST,
-              CURL_ICONV_CODESET_FOR_UTF8,
-              errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
-        return CURLE_CONV_FAILED;
-      }
-    }
-    /* call iconv */
-    input_ptr = output_ptr = buffer;
-    in_bytes = out_bytes = length;
-    rc = iconv(*cd, &input_ptr, &in_bytes,
-               &output_ptr, &out_bytes);
-    if(!data)
-      iconv_close(tmpcd);
-    if((rc == ICONV_ERROR) || (in_bytes)) {
-      failf(data,
-            "The Curl_convert_from_utf8 iconv call failed with errno %i: %s",
-            errno, Curl_strerror(errno, ebuffer, sizeof(ebuffer)));
-      return CURLE_CONV_FAILED;
-    }
-    if(output_ptr < input_ptr) {
-      /* null terminate the now shorter output string */
-      *output_ptr = 0x00;
-    }
-#else
-    failf(data, "CURLOPT_CONV_FROM_UTF8_FUNCTION callback required");
-    return CURLE_CONV_REQD;
-#endif /* HAVE_ICONV */
-  }
-
-  return CURLE_OK;
-}
-
-/*
- * Init conversion stuff for a Curl_easy
- */
-void Curl_convert_init(struct Curl_easy *data)
-{
-#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
-  /* conversion descriptors for iconv calls */
-  data->outbound_cd = (iconv_t)-1;
-  data->inbound_cd  = (iconv_t)-1;
-  data->utf8_cd     = (iconv_t)-1;
-#else
-  (void)data;
-#endif /* CURL_DOES_CONVERSIONS && HAVE_ICONV */
-}
-
-/*
- * Setup conversion stuff for a Curl_easy
- */
-void Curl_convert_setup(struct Curl_easy *data)
-{
-  data->inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
-                                CURL_ICONV_CODESET_OF_NETWORK);
-  data->outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
-                                 CURL_ICONV_CODESET_OF_HOST);
-  data->utf8_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
-                             CURL_ICONV_CODESET_FOR_UTF8);
-}
-
-/*
- * Close conversion stuff for a Curl_easy
- */
-
-void Curl_convert_close(struct Curl_easy *data)
-{
-#ifdef HAVE_ICONV
-  /* close iconv conversion descriptors */
-  if(data->inbound_cd != (iconv_t)-1) {
-    iconv_close(data->inbound_cd);
-  }
-  if(data->outbound_cd != (iconv_t)-1) {
-    iconv_close(data->outbound_cd);
-  }
-  if(data->utf8_cd != (iconv_t)-1) {
-    iconv_close(data->utf8_cd);
-  }
-#else
-  (void)data;
-#endif /* HAVE_ICONV */
-}
-
-#endif /* CURL_DOES_CONVERSIONS */
diff --git a/lib/non-ascii.h b/lib/non-ascii.h
deleted file mode 100644 (file)
index 458e8ef..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#ifndef HEADER_CURL_NON_ASCII_H
-#define HEADER_CURL_NON_ASCII_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-#include "curl_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-#include "urldata.h"
-
-/*
- * Curl_convert_clone() returns a malloced copy of the source string (if
- * returning CURLE_OK), with the data converted to network format.
- *
- * If no conversion was needed *outbuf may be NULL.
- */
-CURLcode Curl_convert_clone(struct Curl_easy *data,
-                            const char *indata,
-                            size_t insize,
-                            char **outbuf);
-
-void Curl_convert_init(struct Curl_easy *data);
-void Curl_convert_setup(struct Curl_easy *data);
-void Curl_convert_close(struct Curl_easy *data);
-
-CURLcode Curl_convert_to_network(struct Curl_easy *data,
-                                 char *buffer, size_t length);
-CURLcode Curl_convert_from_network(struct Curl_easy *data,
-                                 char *buffer, size_t length);
-CURLcode Curl_convert_from_utf8(struct Curl_easy *data,
-                                 char *buffer, size_t length);
-#else
-#define Curl_convert_clone(a,b,c,d) ((void)a, CURLE_OK)
-#define Curl_convert_init(x) Curl_nop_stmt
-#define Curl_convert_setup(x) Curl_nop_stmt
-#define Curl_convert_close(x) Curl_nop_stmt
-#define Curl_convert_to_network(a,b,c) ((void)a, CURLE_OK)
-#define Curl_convert_from_network(a,b,c) ((void)a, CURLE_OK)
-#define Curl_convert_from_utf8(a,b,c) ((void)a, CURLE_OK)
-#endif
-
-#endif /* HEADER_CURL_NON_ASCII_H */
index fda2e9ad792343eb5c424801f8c84544f923b01d..ce73af31c195762d6b981f151ab94c75b5466976 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -75,7 +77,7 @@ int curlx_nonblock(curl_socket_t sockfd,    /* operate on this */
 
 #elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK)
 
-  /* BeOS */
+  /* Orbis OS */
   long b = nonblock ? 1L : 0L;
   return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
 
index 761dab4f6d6339c18e5c720eedb6fc7e140865d8..a42f443a497f025f2fb184f2d4141ea573f85671 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <curl/curl.h> /* for curl_socket_t */
diff --git a/lib/noproxy.c b/lib/noproxy.c
new file mode 100644 (file)
index 0000000..81f1e09
--- /dev/null
@@ -0,0 +1,222 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+
+#ifndef CURL_DISABLE_PROXY
+
+#include "inet_pton.h"
+#include "strcase.h"
+#include "noproxy.h"
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+/*
+ * Curl_cidr4_match() returns TRUE if the given IPv4 address is within the
+ * specified CIDR address range.
+ */
+UNITTEST bool Curl_cidr4_match(const char *ipv4,    /* 1.2.3.4 address */
+                               const char *network, /* 1.2.3.4 address */
+                               unsigned int bits)
+{
+  unsigned int address = 0;
+  unsigned int check = 0;
+
+  if(bits > 32)
+    /* strange input */
+    return FALSE;
+
+  if(1 != Curl_inet_pton(AF_INET, ipv4, &address))
+    return FALSE;
+  if(1 != Curl_inet_pton(AF_INET, network, &check))
+    return FALSE;
+
+  if(bits && (bits != 32)) {
+    unsigned int mask = 0xffffffff << (32 - bits);
+    unsigned int haddr = htonl(address);
+    unsigned int hcheck = htonl(check);
+#if 0
+    fprintf(stderr, "Host %s (%x) network %s (%x) bits %u mask %x => %x\n",
+            ipv4, haddr, network, hcheck, bits, mask,
+            (haddr ^ hcheck) & mask);
+#endif
+    if((haddr ^ hcheck) & mask)
+      return FALSE;
+    return TRUE;
+  }
+  return (address == check);
+}
+
+UNITTEST bool Curl_cidr6_match(const char *ipv6,
+                               const char *network,
+                               unsigned int bits)
+{
+#ifdef ENABLE_IPV6
+  int bytes;
+  int rest;
+  unsigned char address[16];
+  unsigned char check[16];
+
+  if(!bits)
+    bits = 128;
+
+  bytes = bits/8;
+  rest = bits & 0x07;
+  if(1 != Curl_inet_pton(AF_INET6, ipv6, address))
+    return FALSE;
+  if(1 != Curl_inet_pton(AF_INET6, network, check))
+    return FALSE;
+  if((bytes > 16) || ((bytes == 16) && rest))
+    return FALSE;
+  if(bytes && memcmp(address, check, bytes))
+    return FALSE;
+  if(rest && !((address[bytes] ^ check[bytes]) & (0xff << (8 - rest))))
+    return FALSE;
+
+  return TRUE;
+#else
+  (void)ipv6;
+  (void)network;
+  (void)bits;
+  return FALSE;
+#endif
+}
+
+enum nametype {
+  TYPE_HOST,
+  TYPE_IPV4,
+  TYPE_IPV6
+};
+
+/****************************************************************
+* Checks if the host is in the noproxy list. returns TRUE if it matches and
+* therefore the proxy should NOT be used.
+****************************************************************/
+bool Curl_check_noproxy(const char *name, const char *no_proxy)
+{
+  /* no_proxy=domain1.dom,host.domain2.dom
+   *   (a comma-separated list of hosts which should
+   *   not be proxied, or an asterisk to override
+   *   all proxy variables)
+   */
+  if(no_proxy && no_proxy[0]) {
+    const char *p = no_proxy;
+    size_t namelen;
+    enum nametype type = TYPE_HOST;
+    char hostip[128];
+    if(!strcmp("*", no_proxy))
+      return TRUE;
+
+    /* NO_PROXY was specified and it wasn't just an asterisk */
+
+    if(name[0] == '[') {
+      char *endptr;
+      /* IPv6 numerical address */
+      endptr = strchr(name, ']');
+      if(!endptr)
+        return FALSE;
+      name++;
+      namelen = endptr - name;
+      if(namelen >= sizeof(hostip))
+        return FALSE;
+      memcpy(hostip, name, namelen);
+      hostip[namelen] = 0;
+      name = hostip;
+      type = TYPE_IPV6;
+    }
+    else {
+      unsigned int address;
+      if(1 == Curl_inet_pton(AF_INET, name, &address))
+        type = TYPE_IPV4;
+      namelen = strlen(name);
+    }
+
+    while(*p) {
+      const char *token;
+      size_t tokenlen = 0;
+      bool match = FALSE;
+
+      /* pass blanks */
+      while(*p && ISBLANK(*p))
+        p++;
+
+      token = p;
+      /* pass over the pattern */
+      while(*p && !ISBLANK(*p) && (*p != ',')) {
+        p++;
+        tokenlen++;
+      }
+
+      if(tokenlen) {
+        switch(type) {
+        case TYPE_HOST:
+          if(*token == '.') {
+            ++token;
+            --tokenlen;
+            /* tailmatch */
+            match = (tokenlen <= namelen) &&
+              strncasecompare(token, name + (namelen - tokenlen), namelen);
+          }
+          else
+            match = (tokenlen == namelen) &&
+              strncasecompare(token, name, namelen);
+          break;
+        case TYPE_IPV4:
+          /* FALLTHROUGH */
+        case TYPE_IPV6: {
+          const char *check = token;
+          char *slash = strchr(check, '/');
+          unsigned int bits = 0;
+          char checkip[128];
+          /* if the slash is part of this token, use it */
+          if(slash && (slash < &check[tokenlen])) {
+            bits = atoi(slash + 1);
+            /* copy the check name to a temp buffer */
+            if(tokenlen >= sizeof(checkip))
+              break;
+            memcpy(checkip, check, tokenlen);
+            checkip[ slash - check ] = 0;
+            check = checkip;
+          }
+          if(type == TYPE_IPV6)
+            match = Curl_cidr6_match(name, check, bits);
+          else
+            match = Curl_cidr4_match(name, check, bits);
+          break;
+        }
+        }
+        if(match)
+          return TRUE;
+      } /* if(tokenlen) */
+      while(*p == ',')
+        p++;
+    } /* while(*p) */
+  } /* NO_PROXY was specified and it wasn't just an asterisk */
+
+  return FALSE;
+}
+
+#endif /* CURL_DISABLE_PROXY */
diff --git a/lib/noproxy.h b/lib/noproxy.h
new file mode 100644 (file)
index 0000000..8800a21
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef HEADER_CURL_NOPROXY_H
+#define HEADER_CURL_NOPROXY_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+
+#ifndef CURL_DISABLE_PROXY
+
+#ifdef DEBUGBUILD
+
+UNITTEST bool Curl_cidr4_match(const char *ipv4,    /* 1.2.3.4 address */
+                               const char *network, /* 1.2.3.4 address */
+                               unsigned int bits);
+UNITTEST bool Curl_cidr6_match(const char *ipv6,
+                               const char *network,
+                               unsigned int bits);
+#endif
+
+bool Curl_check_noproxy(const char *name, const char *no_proxy);
+
+#endif
+
+#endif /* HEADER_CURL_NOPROXY_H */
diff --git a/lib/nwlib.c b/lib/nwlib.c
deleted file mode 100644 (file)
index 7693268..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef NETWARE /* Novell NetWare */
-
-#ifdef __NOVELL_LIBC__
-/* For native LibC-based NLM we need to register as a real lib. */
-#include <library.h>
-#include <netware.h>
-#include <screen.h>
-#include <nks/thread.h>
-#include <nks/synch.h>
-
-#include "curl_memory.h"
-/* The last #include file should be: */
-#include "memdebug.h"
-
-struct libthreaddata {
-  int     _errno;
-  void    *twentybytes;
-};
-
-struct libdata {
-  int         x;
-  int         y;
-  int         z;
-  void        *tenbytes;
-  NXKey_t     perthreadkey;   /* if -1, no key obtained... */
-  NXMutex_t   *lock;
-};
-
-int         gLibId      = -1;
-void        *gLibHandle = (void *) NULL;
-rtag_t      gAllocTag   = (rtag_t) NULL;
-NXMutex_t   *gLibLock   = (NXMutex_t *) NULL;
-
-/* internal library function prototypes... */
-int  DisposeLibraryData(void *);
-void DisposeThreadData(void *);
-int  GetOrSetUpData(int id, struct libdata **data,
-                    struct libthreaddata **threaddata);
-
-
-int _NonAppStart(void        *NLMHandle,
-                 void        *errorScreen,
-                 const char  *cmdLine,
-                 const char  *loadDirPath,
-                 size_t      uninitializedDataLength,
-                 void        *NLMFileHandle,
-                 int         (*readRoutineP)(int conn,
-                                             void *fileHandle, size_t offset,
-                                             size_t nbytes,
-                                             size_t *bytesRead,
-                                             void *buffer),
-                  size_t      customDataOffset,
-                  size_t      customDataSize,
-                  int         messageCount,
-                  const char  **messages)
-{
-  NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0);
-
-#ifndef __GNUC__
-#pragma unused(cmdLine)
-#pragma unused(loadDirPath)
-#pragma unused(uninitializedDataLength)
-#pragma unused(NLMFileHandle)
-#pragma unused(readRoutineP)
-#pragma unused(customDataOffset)
-#pragma unused(customDataSize)
-#pragma unused(messageCount)
-#pragma unused(messages)
-#endif
-
-  /*
-   * Here we process our command line, post errors (to the error screen),
-   * perform initializations and anything else we need to do before being able
-   * to accept calls into us. If we succeed, we return non-zero and the NetWare
-   * Loader will leave us up, otherwise we fail to load and get dumped.
-   */
-  gAllocTag = AllocateResourceTag(NLMHandle,
-                                  "<library-name> memory allocations",
-                                  AllocSignature);
-
-  if(!gAllocTag) {
-    OutputToScreen(errorScreen, "Unable to allocate resource tag for "
-                   "library memory allocations.\n");
-    return -1;
-  }
-
-  gLibId = register_library(DisposeLibraryData);
-
-  if(gLibId < -1) {
-    OutputToScreen(errorScreen, "Unable to register library with kernel.\n");
-    return -1;
-  }
-
-  gLibHandle = NLMHandle;
-
-  gLibLock = NXMutexAlloc(0, 0, &liblock);
-
-  if(!gLibLock) {
-    OutputToScreen(errorScreen, "Unable to allocate library data lock.\n");
-    return -1;
-  }
-
-  return 0;
-}
-
-/*
- * Here we clean up any resources we allocated. Resource tags is a big part
- * of what we created, but NetWare doesn't ask us to free those.
- */
-void _NonAppStop(void)
-{
-  (void) unregister_library(gLibId);
-  NXMutexFree(gLibLock);
-}
-
-/*
- * This function cannot be the first in the file for if the file is linked
- * first, then the check-unload function's offset will be nlmname.nlm+0
- * which is how to tell that there isn't one. When the check function is
- * first in the linked objects, it is ambiguous. For this reason, we will
- * put it inside this file after the stop function.
- *
- * Here we check to see if it's alright to ourselves to be unloaded. If not,
- * we return a non-zero value. Right now, there isn't any reason not to allow
- * it.
- */
-int _NonAppCheckUnload(void)
-{
-    return 0;
-}
-
-int GetOrSetUpData(int id, struct libdata **appData,
-                   struct libthreaddata **threadData)
-{
-  int                 err;
-  struct libdata      *app_data;
-  struct libthreaddata *thread_data;
-  NXKey_t             key;
-  NX_LOCK_INFO_ALLOC(liblock, "Application Data Lock", 0);
-
-  err         = 0;
-  thread_data = (struct libthreaddata_t *) NULL;
-
-  /*
-   * Attempt to get our data for the application calling us. This is where we
-   * store whatever application-specific information we need to carry in
-   * support of calling applications.
-   */
-  app_data = (struct libdata *) get_app_data(id);
-
-  if(!app_data) {
-    /*
-     * This application hasn't called us before; set up application AND
-     * per-thread data. Of course, just in case a thread from this same
-     * application is calling us simultaneously, we better lock our application
-     * data-creation mutex. We also need to recheck for data after we acquire
-     * the lock because WE might be that other thread that was too late to
-     * create the data and the first thread in will have created it.
-     */
-    NXLock(gLibLock);
-
-    app_data = (struct libdata *) get_app_data(id);
-    if(!app_data) {
-      app_data = calloc(1, sizeof(struct libdata));
-
-      if(app_data) {
-        app_data->tenbytes = malloc(10);
-        app_data->lock     = NXMutexAlloc(0, 0, &liblock);
-
-        if(!app_data->tenbytes || !app_data->lock) {
-          if(app_data->lock)
-            NXMutexFree(app_data->lock);
-          free(app_data->tenbytes);
-          free(app_data);
-          app_data = (libdata_t *) NULL;
-          err      = ENOMEM;
-        }
-
-        if(app_data) {
-          /*
-           * Here we burn in the application data that we were trying to get
-           * by calling get_app_data(). Next time we call the first function,
-           * we'll get this data we're just now setting. We also go on here to
-           * establish the per-thread data for the calling thread, something
-           * we'll have to do on each application thread the first time
-           * it calls us.
-           */
-          err = set_app_data(gLibId, app_data);
-
-          if(err) {
-            if(app_data->lock)
-              NXMutexFree(app_data->lock);
-            free(app_data->tenbytes);
-            free(app_data);
-            app_data = (libdata_t *) NULL;
-            err      = ENOMEM;
-          }
-          else {
-            /* create key for thread-specific data... */
-            err = NXKeyCreate(DisposeThreadData, (void *) NULL, &key);
-
-            if(err)                /* (no more keys left?) */
-              key = -1;
-
-            app_data->perthreadkey = key;
-          }
-        }
-      }
-    }
-
-    NXUnlock(gLibLock);
-  }
-
-  if(app_data) {
-    key = app_data->perthreadkey;
-
-    if(key != -1 /* couldn't create a key? no thread data */
-        && !(err = NXKeyGetValue(key, (void **) &thread_data))
-        && !thread_data) {
-      /*
-       * Allocate the per-thread data for the calling thread. Regardless of
-       * whether there was already application data or not, this may be the
-       * first call by a new thread. The fact that we allocation 20 bytes on
-       * a pointer is not very important, this just helps to demonstrate that
-       * we can have arbitrarily complex per-thread data.
-       */
-      thread_data = malloc(sizeof(struct libthreaddata));
-
-      if(thread_data) {
-        thread_data->_errno      = 0;
-        thread_data->twentybytes = malloc(20);
-
-        if(!thread_data->twentybytes) {
-          free(thread_data);
-          thread_data = (struct libthreaddata *) NULL;
-          err         = ENOMEM;
-        }
-
-        err = NXKeySetValue(key, thread_data);
-        if(err) {
-          free(thread_data->twentybytes);
-          free(thread_data);
-          thread_data = (struct libthreaddata *) NULL;
-        }
-      }
-    }
-  }
-
-  if(appData)
-    *appData = app_data;
-
-  if(threadData)
-    *threadData = thread_data;
-
-  return err;
-}
-
-int DisposeLibraryData(void *data)
-{
-  if(data) {
-    void *tenbytes = ((libdata_t *) data)->tenbytes;
-
-    free(tenbytes);
-    free(data);
-  }
-
-  return 0;
-}
-
-void DisposeThreadData(void *data)
-{
-  if(data) {
-    void *twentybytes = ((struct libthreaddata *) data)->twentybytes;
-
-    free(twentybytes);
-    free(data);
-  }
-}
-
-#else /* __NOVELL_LIBC__ */
-/* For native CLib-based NLM seems we can do a bit more simple. */
-#include <nwthread.h>
-
-int main(void)
-{
-  /* initialize any globals here... */
-
-  /* do this if any global initializing was done
-  SynchronizeStart();
-  */
-  ExitThread(TSR_THREAD, 0);
-  return 0;
-}
-
-#endif /* __NOVELL_LIBC__ */
-
-#else /* NETWARE */
-
-#ifdef __POCC__
-#  pragma warn(disable:2024)  /* Disable warning #2024: Empty input file */
-#endif
-
-#endif /* NETWARE */
diff --git a/lib/nwos.c b/lib/nwos.c
deleted file mode 100644 (file)
index 8894031..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#ifdef NETWARE /* Novell NetWare */
-
-#ifdef __NOVELL_LIBC__
-/* For native LibC-based NLM we need to do nothing. */
-int netware_init(void)
-{
-  return 0;
-}
-
-#else /* __NOVELL_LIBC__ */
-
-/* For native CLib-based NLM we need to initialize the LONG namespace. */
-#include <nwnspace.h>
-#include <nwthread.h>
-#include <nwadv.h>
-/* Make the CLIB Ctx stuff link */
-#include <netdb.h>
-NETDB_DEFINE_CONTEXT
-/* Make the CLIB Inet stuff link */
-#include <netinet/in.h>
-#include <arpa/inet.h>
-NETINET_DEFINE_CONTEXT
-
-int netware_init(void)
-{
-  int rc = 0;
-  unsigned int myHandle = GetNLMHandle();
-  /* import UnAugmentAsterisk dynamically for NW4.x compatibility */
-  void (*pUnAugmentAsterisk)(int) = (void(*)(int))
-          ImportSymbol(myHandle, "UnAugmentAsterisk");
-  /* import UseAccurateCaseForPaths dynamically for NW3.x compatibility */
-  void (*pUseAccurateCaseForPaths)(int) = (void(*)(int))
-          ImportSymbol(myHandle, "UseAccurateCaseForPaths");
-  if(pUnAugmentAsterisk)
-    pUnAugmentAsterisk(1);
-  if(pUseAccurateCaseForPaths)
-    pUseAccurateCaseForPaths(1);
-  UnimportSymbol(myHandle, "UnAugmentAsterisk");
-  UnimportSymbol(myHandle, "UseAccurateCaseForPaths");
-  /* set long name space */
-  if((SetCurrentNameSpace(4) == 255)) {
-    rc = 1;
-  }
-  if((SetTargetNameSpace(4) == 255)) {
-    rc = rc + 2;
-  }
-  return rc;
-}
-
-/* dummy function to satisfy newer prelude */
-int __init_environment(void)
-{
-  return 0;
-}
-
-/* dummy function to satisfy newer prelude */
-int __deinit_environment(void)
-{
-  return 0;
-}
-
-#endif /* __NOVELL_LIBC__ */
-
-#endif /* NETWARE */
index 0ffb6a36a2acf3a4764b954c4ddd0d2666187fa3..3a93b6728dd5f7a7bf1bcda99918f48ccf45e321 100644 (file)
@@ -5,7 +5,7 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * 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"
@@ -46,6 +48,8 @@
 #include "curl_ldap.h"
 #include "curl_base64.h"
 #include "connect.h"
+#include "curl_sasl.h"
+#include "strcase.h"
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
@@ -76,6 +80,8 @@ typedef enum {
   OLDAP_SSL,            /* Performing SSL handshake. */
   OLDAP_STARTTLS,       /* STARTTLS request sent. */
   OLDAP_TLS,            /* Performing TLS handshake. */
+  OLDAP_MECHS,          /* Get SASL authentication mechanisms. */
+  OLDAP_SASL,           /* SASL binding reply. */
   OLDAP_BIND,           /* Simple bind reply. */
   OLDAP_BINDV2,         /* Simple bind reply in protocol version 2. */
   OLDAP_LAST            /* Never used */
@@ -96,6 +102,13 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done);
 static CURLcode oldap_disconnect(struct Curl_easy *data,
                                  struct connectdata *conn, bool dead);
 
+static CURLcode oldap_perform_auth(struct Curl_easy *data, const char *mech,
+                                   const struct bufref *initresp);
+static CURLcode oldap_continue_auth(struct Curl_easy *data, const char *mech,
+                                    const struct bufref *resp);
+static CURLcode oldap_cancel_auth(struct Curl_easy *data, const char *mech);
+static CURLcode oldap_get_message(struct Curl_easy *data, struct bufref *out);
+
 static Curl_recv oldap_recv;
 
 /*
@@ -154,10 +167,26 @@ const struct Curl_handler Curl_handler_ldaps = {
 };
 #endif
 
+/* SASL parameters for the ldap protocol */
+static const struct SASLproto saslldap = {
+  "ldap",                     /* The service name */
+  oldap_perform_auth,         /* Send authentication command */
+  oldap_continue_auth,        /* Send authentication continuation */
+  oldap_cancel_auth,          /* Send authentication cancellation */
+  oldap_get_message,          /* Get SASL response message */
+  0,                          /* Maximum initial response length (no max) */
+  LDAP_SASL_BIND_IN_PROGRESS, /* Code received when continuation is expected */
+  LDAP_SUCCESS,               /* Code to receive upon authentication success */
+  SASL_AUTH_NONE,             /* Default mechanisms */
+  0                           /* Configuration flags */
+};
+
 struct ldapconninfo {
+  struct SASL sasl;          /* SASL-related parameters */
   LDAP *ld;                  /* Openldap connection handle. */
   Curl_recv *recv;           /* For stacking SSL handler */
   Curl_send *send;
+  struct berval *servercred; /* SASL data from server. */
   ldapstate state;           /* Current machine state. */
   int proto;                 /* LDAP_PROTO_TCP/LDAP_PROTO_UDP/LDAP_PROTO_IPC */
   int msgid;                 /* Current message id. */
@@ -184,6 +213,8 @@ static void state(struct Curl_easy *data, ldapstate newstate)
     "SSL",
     "STARTTLS",
     "TLS",
+    "MECHS",
+    "SASL",
     "BIND",
     "BINDV2",
     /* LAST */
@@ -251,6 +282,37 @@ static CURLcode oldap_url_parse(struct Curl_easy *data, LDAPURLDesc **ludp)
   return result;
 }
 
+/* Parse the login options. */
+static CURLcode oldap_parse_login_options(struct connectdata *conn)
+{
+  CURLcode result = CURLE_OK;
+  struct ldapconninfo *li = conn->proto.ldapc;
+  const char *ptr = conn->options;
+
+  while(!result && ptr && *ptr) {
+    const char *key = ptr;
+    const char *value;
+
+    while(*ptr && *ptr != '=')
+        ptr++;
+
+    value = ptr + 1;
+
+    while(*ptr && *ptr != ';')
+      ptr++;
+
+    if(checkprefix("AUTH=", key))
+      result = Curl_sasl_parse_url_auth_option(&li->sasl, value, ptr - value);
+    else
+      result = CURLE_SETOPT_OPTION_SYNTAX;
+
+    if(*ptr == ';')
+      ptr++;
+  }
+
+  return result == CURLE_URL_MALFORMAT? CURLE_SETOPT_OPTION_SYNTAX: result;
+}
+
 static CURLcode oldap_setup_connection(struct Curl_easy *data,
                                        struct connectdata *conn)
 {
@@ -271,14 +333,94 @@ static CURLcode oldap_setup_connection(struct Curl_easy *data,
       conn->proto.ldapc = li;
       connkeep(conn, "OpenLDAP default");
 
+      /* Initialize the SASL storage */
+      Curl_sasl_init(&li->sasl, data, &saslldap);
+
       /* Clear the TLS upgraded flag */
       conn->bits.tls_upgraded = FALSE;
+
+      result = oldap_parse_login_options(conn);
     }
   }
 
   return result;
 }
 
+/*
+ * Get the SASL authentication challenge from the server credential buffer.
+ */
+static CURLcode oldap_get_message(struct Curl_easy *data, struct bufref *out)
+{
+  struct berval *servercred = data->conn->proto.ldapc->servercred;
+
+  if(!servercred || !servercred->bv_val)
+    return CURLE_WEIRD_SERVER_REPLY;
+  Curl_bufref_set(out, servercred->bv_val, servercred->bv_len, NULL);
+  return CURLE_OK;
+}
+
+/*
+ * Sends an initial SASL bind request to the server.
+ */
+static CURLcode oldap_perform_auth(struct Curl_easy *data, const char *mech,
+                                   const struct bufref *initresp)
+{
+  struct connectdata *conn = data->conn;
+  struct ldapconninfo *li = conn->proto.ldapc;
+  CURLcode result = CURLE_OK;
+  struct berval cred;
+  struct berval *pcred = &cred;
+  int rc;
+
+  cred.bv_val = (char *) Curl_bufref_ptr(initresp);
+  cred.bv_len = Curl_bufref_len(initresp);
+  if(!cred.bv_val)
+    pcred = NULL;
+  rc = ldap_sasl_bind(li->ld, NULL, mech, pcred, NULL, NULL, &li->msgid);
+  if(rc != LDAP_SUCCESS)
+    result = oldap_map_error(rc, CURLE_LDAP_CANNOT_BIND);
+  return result;
+}
+
+/*
+ * Sends SASL continuation.
+ */
+static CURLcode oldap_continue_auth(struct Curl_easy *data, const char *mech,
+                                    const struct bufref *resp)
+{
+  struct connectdata *conn = data->conn;
+  struct ldapconninfo *li = conn->proto.ldapc;
+  CURLcode result = CURLE_OK;
+  struct berval cred;
+  struct berval *pcred = &cred;
+  int rc;
+
+  cred.bv_val = (char *) Curl_bufref_ptr(resp);
+  cred.bv_len = Curl_bufref_len(resp);
+  if(!cred.bv_val)
+    pcred = NULL;
+  rc = ldap_sasl_bind(li->ld, NULL, mech, pcred, NULL, NULL, &li->msgid);
+  if(rc != LDAP_SUCCESS)
+    result = oldap_map_error(rc, CURLE_LDAP_CANNOT_BIND);
+  return result;
+}
+
+/*
+ * Sends SASL bind cancellation.
+ */
+static CURLcode oldap_cancel_auth(struct Curl_easy *data, const char *mech)
+{
+  struct ldapconninfo *li = data->conn->proto.ldapc;
+  CURLcode result = CURLE_OK;
+  int rc = ldap_sasl_bind(li->ld, NULL, LDAP_SASL_NULL, NULL, NULL, NULL,
+                          &li->msgid);
+
+  (void)mech;
+  if(rc != LDAP_SUCCESS)
+    result = oldap_map_error(rc, CURLE_LDAP_CANNOT_BIND);
+  return result;
+}
+
 /* Starts LDAP simple bind. */
 static CURLcode oldap_perform_bind(struct Curl_easy *data, ldapstate newstate)
 {
@@ -292,7 +434,7 @@ static CURLcode oldap_perform_bind(struct Curl_easy *data, ldapstate newstate)
   passwd.bv_val = NULL;
   passwd.bv_len = 0;
 
-  if(conn->bits.user_passwd) {
+  if(data->state.aptr.user) {
     binddn = conn->user;
     passwd.bv_val = conn->passwd;
     passwd.bv_len = strlen(passwd.bv_val);
@@ -304,11 +446,45 @@ static CURLcode oldap_perform_bind(struct Curl_easy *data, ldapstate newstate)
     state(data, newstate);
   else
     result = oldap_map_error(rc,
-                             conn->bits.user_passwd?
+                             data->state.aptr.user?
                              CURLE_LOGIN_DENIED: CURLE_LDAP_CANNOT_BIND);
   return result;
 }
 
+/* Query the supported SASL authentication mechanisms. */
+static CURLcode oldap_perform_mechs(struct Curl_easy *data)
+{
+  CURLcode result = CURLE_OK;
+  struct ldapconninfo *li = data->conn->proto.ldapc;
+  int rc;
+  static const char * const supportedSASLMechanisms[] = {
+    "supportedSASLMechanisms",
+    NULL
+  };
+
+  rc = ldap_search_ext(li->ld, "", LDAP_SCOPE_BASE, "(objectclass=*)",
+                       (char **) supportedSASLMechanisms, 0,
+                       NULL, NULL, NULL, 0, &li->msgid);
+  if(rc == LDAP_SUCCESS)
+    state(data, OLDAP_MECHS);
+  else
+    result = oldap_map_error(rc, CURLE_LOGIN_DENIED);
+  return result;
+}
+
+/* Starts SASL bind. */
+static CURLcode oldap_perform_sasl(struct Curl_easy *data)
+{
+  saslprogress progress = SASL_IDLE;
+  struct ldapconninfo *li = data->conn->proto.ldapc;
+  CURLcode result = Curl_sasl_start(&li->sasl, data, TRUE, &progress);
+
+  state(data, OLDAP_SASL);
+  if(!result && progress != SASL_INPROGRESS)
+    result = CURLE_LOGIN_DENIED;
+  return result;
+}
+
 #ifdef USE_SSL
 static Sockbuf_IO ldapsb_tls;
 
@@ -414,11 +590,106 @@ static CURLcode oldap_connect(struct Curl_easy *data, bool *done)
   }
 #endif
 
+  if(li->sasl.prefmech != SASL_AUTH_NONE)
+    return oldap_perform_mechs(data);
+
   /* Force bind even if anonymous bind is not needed in protocol version 3
      to detect missing version 3 support. */
   return oldap_perform_bind(data, OLDAP_BIND);
 }
 
+/* Handle the supported SASL mechanisms query response */
+static CURLcode oldap_state_mechs_resp(struct Curl_easy *data,
+                                       LDAPMessage *msg, int code)
+{
+  struct connectdata *conn = data->conn;
+  struct ldapconninfo *li = conn->proto.ldapc;
+  int rc;
+  BerElement *ber = NULL;
+  CURLcode result = CURLE_OK;
+  struct berval bv, *bvals;
+
+  switch(ldap_msgtype(msg)) {
+  case LDAP_RES_SEARCH_ENTRY:
+    /* Got a list of supported SASL mechanisms. */
+    if(code != LDAP_SUCCESS && code != LDAP_NO_RESULTS_RETURNED)
+      return CURLE_LOGIN_DENIED;
+
+    rc = ldap_get_dn_ber(li->ld, msg, &ber, &bv);
+    if(rc < 0)
+      return oldap_map_error(rc, CURLE_BAD_CONTENT_ENCODING);
+    for(rc = ldap_get_attribute_ber(li->ld, msg, ber, &bv, &bvals);
+        rc == LDAP_SUCCESS;
+        rc = ldap_get_attribute_ber(li->ld, msg, ber, &bv, &bvals)) {
+      int i;
+
+      if(!bv.bv_val)
+        break;
+
+      if(bvals) {
+        for(i = 0; bvals[i].bv_val; i++) {
+          size_t llen;
+          unsigned short mech = Curl_sasl_decode_mech((char *) bvals[i].bv_val,
+                                                      bvals[i].bv_len, &llen);
+          if(bvals[i].bv_len == llen)
+            li->sasl.authmechs |= mech;
+        }
+        ber_memfree(bvals);
+      }
+    }
+    ber_free(ber, 0);
+    break;
+
+  case LDAP_RES_SEARCH_RESULT:
+    switch(code) {
+    case LDAP_SIZELIMIT_EXCEEDED:
+      infof(data, "Too many authentication mechanisms\n");
+      /* FALLTHROUGH */
+    case LDAP_SUCCESS:
+    case LDAP_NO_RESULTS_RETURNED:
+      if(Curl_sasl_can_authenticate(&li->sasl, data))
+        result = oldap_perform_sasl(data);
+      else
+        result = CURLE_LOGIN_DENIED;
+      break;
+    default:
+      result = oldap_map_error(code, CURLE_LOGIN_DENIED);
+      break;
+    }
+    break;
+  default:
+    break;
+  }
+  return result;
+}
+
+/* Handle a SASL bind response. */
+static CURLcode oldap_state_sasl_resp(struct Curl_easy *data,
+                                      LDAPMessage *msg, int code)
+{
+  struct connectdata *conn = data->conn;
+  struct ldapconninfo *li = conn->proto.ldapc;
+  CURLcode result = CURLE_OK;
+  saslprogress progress;
+  int rc;
+
+  li->servercred = NULL;
+  rc = ldap_parse_sasl_bind_result(li->ld, msg, &li->servercred, 0);
+  if(rc != LDAP_SUCCESS) {
+    failf(data, "LDAP local: sasl ldap_parse_result %s", ldap_err2string(rc));
+    result = oldap_map_error(rc, CURLE_LOGIN_DENIED);
+  }
+  else {
+    result = Curl_sasl_continue(&li->sasl, data, code, &progress);
+    if(!result && progress != SASL_INPROGRESS)
+      state(data, OLDAP_STOP);
+  }
+
+  if(li->servercred)
+    ber_bvfree(li->servercred);
+  return result;
+}
+
 /* Handle a simple bind response. */
 static CURLcode oldap_state_bind_resp(struct Curl_easy *data, LDAPMessage *msg,
                                       int code)
@@ -459,12 +730,20 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
   if(li->state != OLDAP_SSL && li->state != OLDAP_TLS) {
     /* Get response to last command. */
     rc = ldap_result(li->ld, li->msgid, LDAP_MSG_ONE, &tv, &msg);
-    if(!rc)
-      return CURLE_OK;                    /* Timed out. */
-    if(rc < 0) {
-      failf(data, "LDAP local: connecting ldap_result %s",
-            ldap_err2string(rc));
-      return oldap_map_error(rc, CURLE_COULDNT_CONNECT);
+    switch(rc) {
+    case 0:                               /* Timed out. */
+      return CURLE_OK;
+    case LDAP_RES_SEARCH_ENTRY:
+    case LDAP_RES_SEARCH_REFERENCE:
+      break;
+    default:
+      li->msgid = 0;                      /* Nothing to abandon upon error. */
+      if(rc < 0) {
+        failf(data, "LDAP local: connecting ldap_result %s",
+              ldap_err2string(rc));
+        return oldap_map_error(rc, CURLE_COULDNT_CONNECT);
+      }
+      break;
     }
 
     /* Get error code from message. */
@@ -477,11 +756,11 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
     }
 
     /* If protocol version 3 is not supported, fallback to version 2. */
-    if(code == LDAP_PROTOCOL_ERROR && li->state != OLDAP_BINDV2
+    if(code == LDAP_PROTOCOL_ERROR && li->state != OLDAP_BINDV2 &&
 #ifdef USE_SSL
-       && (ssl_installed(conn) || data->set.use_ssl <= CURLUSESSL_TRY)
+       (ssl_installed(conn) || data->set.use_ssl <= CURLUSESSL_TRY) &&
 #endif
-       ) {
+       li->sasl.prefmech == SASL_AUTH_NONE) {
       static const int version = LDAP_VERSION2;
 
       ldap_set_option(li->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
@@ -496,13 +775,19 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
 #ifdef USE_SSL
   case OLDAP_SSL:
     result = oldap_ssl_connect(data, OLDAP_SSL);
-    if(!result && ssl_installed(conn))
-      result = oldap_perform_bind(data, OLDAP_BIND);
+    if(!result && ssl_installed(conn)) {
+      if(li->sasl.prefmech != SASL_AUTH_NONE)
+        result = oldap_perform_mechs(data);
+      else
+        result = oldap_perform_bind(data, OLDAP_BIND);
+    }
     break;
   case OLDAP_STARTTLS:
     if(code != LDAP_SUCCESS) {
       if(data->set.use_ssl != CURLUSESSL_TRY)
         result = oldap_map_error(code, CURLE_USE_SSL_FAILED);
+      else if(li->sasl.prefmech != SASL_AUTH_NONE)
+        result = oldap_perform_mechs(data);
       else
         result = oldap_perform_bind(data, OLDAP_BIND);
       break;
@@ -514,7 +799,9 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
       result = oldap_map_error(code, CURLE_USE_SSL_FAILED);
     else if(ssl_installed(conn)) {
       conn->bits.tls_upgraded = TRUE;
-      if(conn->bits.user_passwd)
+      if(li->sasl.prefmech != SASL_AUTH_NONE)
+        result = oldap_perform_mechs(data);
+      else if(data->state.aptr.user)
         result = oldap_perform_bind(data, OLDAP_BIND);
       else {
         state(data, OLDAP_STOP); /* Version 3 supported: no bind required */
@@ -524,6 +811,12 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
     break;
 #endif
 
+  case OLDAP_MECHS:
+    result = oldap_state_mechs_resp(data, msg, code);
+    break;
+  case OLDAP_SASL:
+    result = oldap_state_sasl_resp(data, msg, code);
+    break;
   case OLDAP_BIND:
   case OLDAP_BINDV2:
     result = oldap_state_bind_resp(data, msg, code);
@@ -540,6 +833,10 @@ static CURLcode oldap_connecting(struct Curl_easy *data, bool *done)
   if(*done)
     conn->recv[FIRSTSOCKET] = oldap_recv;
 
+  if(result && li->msgid) {
+    ldap_abandon_ext(li->ld, li->msgid, NULL, NULL);
+    li->msgid = 0;
+  }
   return result;
 }
 
@@ -549,6 +846,9 @@ static CURLcode oldap_disconnect(struct Curl_easy *data,
 {
   struct ldapconninfo *li = conn->proto.ldapc;
   (void) dead_connection;
+#ifndef USE_SSL
+  (void)data;
+#endif
 
   if(li) {
     if(li->ld) {
@@ -562,6 +862,7 @@ static CURLcode oldap_disconnect(struct Curl_easy *data,
       ldap_unbind_ext(li->ld, NULL, NULL);
       li->ld = NULL;
     }
+    Curl_sasl_cleanup(conn, li->sasl.authused);
     conn->proto.ldapc = NULL;
     free(li);
   }
@@ -632,21 +933,21 @@ static CURLcode oldap_done(struct Curl_easy *data, CURLcode res,
   return CURLE_OK;
 }
 
-static CURLcode client_write(struct Curl_easy *data, const char *prefix,
-                             const char *value, size_t len, const char *suffix)
+static CURLcode client_write(struct Curl_easy *data,
+                             const char *prefix, size_t plen,
+                             const char *value, size_t len,
+                             const char *suffix, size_t slen)
 {
   CURLcode result = CURLE_OK;
-  size_t l;
 
   if(prefix) {
-    l = strlen(prefix);
     /* If we have a zero-length value and the prefix ends with a space
        separator, drop the latter. */
-    if(!len && l && prefix[l - 1] == ' ')
-      l--;
-    result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) prefix, l);
+    if(!len && plen && prefix[plen - 1] == ' ')
+      plen--;
+    result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) prefix, plen);
     if(!result)
-      data->req.bytecount += l;
+      data->req.bytecount += plen;
   }
   if(!result && value) {
     result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) value, len);
@@ -654,10 +955,9 @@ static CURLcode client_write(struct Curl_easy *data, const char *prefix,
       data->req.bytecount += len;
   }
   if(!result && suffix) {
-    l = strlen(suffix);
-    result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) suffix, l);
+    result = Curl_client_write(data, CLIENTWRITE_BODY, (char *) suffix, slen);
     if(!result)
-      data->req.bytecount += l;
+      data->req.bytecount += slen;
   }
   return result;
 }
@@ -734,7 +1034,8 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
       break;
     }
 
-    result = client_write(data, "DN: ", bv.bv_val, bv.bv_len, "\n");
+    result = client_write(data, STRCONST("DN: "), bv.bv_val, bv.bv_len,
+                          STRCONST("\n"));
     if(result)
       break;
 
@@ -747,7 +1048,8 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
         break;
 
       if(!bvals) {
-        result = client_write(data, "\t", bv.bv_val, bv.bv_len, ":\n");
+        result = client_write(data, STRCONST("\t"), bv.bv_val, bv.bv_len,
+                              STRCONST(":\n"));
         if(result)
           break;
         continue;
@@ -759,14 +1061,15 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
       for(i = 0; bvals[i].bv_val != NULL; i++) {
         int binval = 0;
 
-        result = client_write(data, "\t", bv.bv_val, bv.bv_len, ":");
+        result = client_write(data, STRCONST("\t"), bv.bv_val, bv.bv_len,
+                              STRCONST(":"));
         if(result)
           break;
 
         if(!binary) {
           /* check for leading or trailing whitespace */
-          if(ISSPACE(bvals[i].bv_val[0]) ||
-             ISSPACE(bvals[i].bv_val[bvals[i].bv_len - 1]))
+          if(ISBLANK(bvals[i].bv_val[0]) ||
+             ISBLANK(bvals[i].bv_val[bvals[i].bv_len - 1]))
             binval = 1;
           else {
             /* check for unprintable characters */
@@ -784,15 +1087,17 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
 
           /* Binary value, encode to base64. */
           if(bvals[i].bv_len)
-            result = Curl_base64_encode(data, bvals[i].bv_val, bvals[i].bv_len,
+            result = Curl_base64_encode(bvals[i].bv_val, bvals[i].bv_len,
                                         &val_b64, &val_b64_sz);
           if(!result)
-            result = client_write(data, ": ", val_b64, val_b64_sz, "\n");
+            result = client_write(data, STRCONST(": "), val_b64, val_b64_sz,
+                                  STRCONST("\n"));
           free(val_b64);
         }
         else
-          result = client_write(data, " ",
-                                bvals[i].bv_val, bvals[i].bv_len, "\n");
+          result = client_write(data, STRCONST(" "),
+                                bvals[i].bv_val, bvals[i].bv_len,
+                                STRCONST("\n"));
         if(result)
           break;
       }
@@ -800,7 +1105,7 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
       ber_memfree(bvals);
       bvals = NULL;
       if(!result)
-        result = client_write(data, "\n", NULL, 0, NULL);
+        result = client_write(data, STRCONST("\n"), NULL, 0, NULL, 0);
       if(result)
         break;
     }
@@ -808,7 +1113,7 @@ static ssize_t oldap_recv(struct Curl_easy *data, int sockindex, char *buf,
     ber_free(ber, 0);
 
     if(!result)
-      result = client_write(data, "\n", NULL, 0, NULL);
+      result = client_write(data, STRCONST("\n"), NULL, 0, NULL, 0);
     if(!result)
       result = CURLE_AGAIN;
     break;
index 3c38f2c4c23a1c0e11e7520b3f6811261b4e4192..5ed88195fb57c414627fe727d4e8804fcd8b8834 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
   A brief summary of the date string formats this parser groks:
index a99faf9e36e5399134f5d9384d336318959049d3..4e4347754d1d6cef1074978be519cd6ce40c7559 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 extern const char * const Curl_wkday[7];
index 84c7f51de52110e47186bff8f02dbda45646c564..d4e6be98c47b3fbb1eb31b3ea5d28583b1587687 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  *   'pingpong' is for generic back-and-forth support functions used by FTP,
  *   IMAP, POP3, SMTP and whatever more that likes them.
  *
@@ -32,7 +34,6 @@
 #include "speedcheck.h"
 #include "pingpong.h"
 #include "multiif.h"
-#include "non-ascii.h"
 #include "vtls/vtls.h"
 
 /* The last 3 #include files should be in this order */
@@ -199,11 +200,6 @@ CURLcode Curl_pp_vsendf(struct Curl_easy *data,
   s = Curl_dyn_ptr(&pp->sendbuf);
   Curl_pp_init(data, pp);
 
-  result = Curl_convert_to_network(data, s, write_len);
-  /* Curl_convert_to_network calls failf if unsuccessful */
-  if(result)
-    return result;
-
 #ifdef HAVE_GSSAPI
   conn->data_prot = PROT_CMD;
 #endif
@@ -299,7 +295,7 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
        */
       if((ptr + pp->cache_size) > (buf + data->set.buffer_size + 1)) {
         failf(data, "cached response data too big to handle");
-        return CURLE_RECV_ERROR;
+        return CURLE_WEIRD_SERVER_REPLY;
       }
       memcpy(ptr, pp->cache, pp->cache_size);
       gotbytes = (ssize_t)pp->cache_size;
@@ -324,11 +320,6 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
       if(result == CURLE_AGAIN)
         return CURLE_OK; /* return */
 
-      if(!result && (gotbytes > 0))
-        /* convert from the network encoding */
-        result = Curl_convert_from_network(data, ptr, gotbytes);
-      /* Curl_convert_from_network calls failf if unsuccessful */
-
       if(result)
         /* Set outer result variable to this error. */
         keepon = FALSE;
@@ -339,7 +330,7 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
     else if(gotbytes <= 0) {
       keepon = FALSE;
       result = CURLE_RECV_ERROR;
-      failf(data, "response reading failed");
+      failf(data, "response reading failed (errno: %d)", SOCKERRNO);
     }
     else {
       /* we got a whole chunk of data, which can be anything from one
@@ -407,7 +398,8 @@ CURLcode Curl_pp_readresp(struct Curl_easy *data,
       }
       else if(keepon) {
 
-        if((perline == gotbytes) && (gotbytes > data->set.buffer_size/2)) {
+        if((perline == gotbytes) &&
+           (gotbytes > (ssize_t)data->set.buffer_size/2)) {
           /* We got an excessive line without newlines and we need to deal
              with it. We keep the first bytes of the line then we throw
              away the rest. */
index 8f56f3f865e8865fc789fda0c6b64d628ab11dde..cefae073a6d469e811fd5a47d8ee3aadf3035066 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index d4ca67877d7fb711ba5f7bf0793d826e14ca4e07..3151a3f56a34e63a1e32007f3b055d0039900251 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC1734 POP3 Authentication
  * RFC1939 POP3 protocol
  * RFC2195 CRAM-MD5 authentication
@@ -401,7 +403,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(!conn->bits.user_passwd) {
+  if(!data->state.aptr.user) {
     state(data, POP3_STOP);
 
     return result;
@@ -435,7 +437,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(!conn->bits.user_passwd) {
+  if(!data->state.aptr.user) {
     state(data, POP3_STOP);
 
     return result;
@@ -545,7 +547,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, conn)) {
+  if(!Curl_sasl_can_authenticate(&pop3c->sasl, data)) {
     state(data, POP3_STOP);
     return result;
   }
@@ -571,7 +573,7 @@ static CURLcode pop3_perform_authentication(struct Curl_easy *data,
       result = pop3_perform_user(data, conn);
     else {
       /* Other mechanisms not supported */
-      infof(data, "No known authentication mechanisms supported!");
+      infof(data, "No known authentication mechanisms supported");
       result = CURLE_LOGIN_DENIED;
     }
   }
@@ -924,7 +926,7 @@ static CURLcode pop3_state_command_resp(struct Curl_easy *data,
 
   if(pop3code != '+') {
     state(data, POP3_STOP);
-    return CURLE_RECV_ERROR;
+    return CURLE_WEIRD_SERVER_REPLY;
   }
 
   /* This 'OK' line ends with a CR LF pair which is the two first bytes of the
@@ -1423,7 +1425,7 @@ static CURLcode pop3_parse_url_path(struct Curl_easy *data)
   const char *path = &data->state.up.path[1]; /* skip leading path */
 
   /* URL decode the path for the message ID */
-  return Curl_urldecode(data, path, 0, &pop3->id, NULL, REJECT_CTRL);
+  return Curl_urldecode(path, 0, &pop3->id, NULL, REJECT_CTRL);
 }
 
 /***********************************************************************
@@ -1440,7 +1442,7 @@ static CURLcode pop3_parse_custom_request(struct Curl_easy *data)
 
   /* URL decode the custom request */
   if(custom)
-    result = Curl_urldecode(data, custom, 0, &pop3->custom, NULL, REJECT_CTRL);
+    result = Curl_urldecode(custom, 0, &pop3->custom, NULL, REJECT_CTRL);
 
   return result;
 }
index 17629ee2df0a6d823c4df1025a419c183dc49312..bb0645f9bfbae152fc2aec6621790f3f991ee37c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "pingpong.h"
index f5ef6bd5269af449c190e24a7a89ce492dbe7d1e..4a1e1daa816b70d95427e015fd69d5c08450e995 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index ac4ebc0980a92d87b165de2e6e4f51fb1bc577ad..a129315147547484201358c618ca1cdbf6b5a41d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "timeval.h"
index e46091863fddff29139c330aba5a10ac542e509e..60c98a4ca45ec50ee4767d70792b62e5e053d9f4 100644 (file)
--- a/lib/psl.c
+++ b/lib/psl.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index c10367471dbf2f13cf988577e566fa128c64896a..34f0a5cae8233f47be8966b5cf8ca8f13151c831 100644 (file)
--- a/lib/psl.h
+++ b/lib/psl.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifdef USE_LIBPSL
index b030359ddda14d6809327d5896cd6c47f18395de..b35774735eb4aaa3372a455fc56192497986f07b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -31,6 +33,9 @@
 #ifdef USE_QUICHE
 #include "vquic/quiche.h"
 #endif
+#ifdef USE_MSH3
+#include "vquic/msh3.h"
+#endif
 
 #include "urldata.h"
 
@@ -51,6 +56,7 @@ void Curl_quic_done(struct Curl_easy *data, bool premature);
 bool Curl_quic_data_pending(const struct Curl_easy *data);
 void Curl_quic_disconnect(struct Curl_easy *data,
                           struct connectdata *conn, int tempindex);
+CURLcode Curl_quic_idle(struct Curl_easy *data);
 
 #else /* ENABLE_QUIC */
 #define Curl_quic_done_sending(x)
index 8f2c1ba29e723afb26b90447ee8b12859f41abcd..2e7e7e8238b23582894eb13aea49d70dabc3c88e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include "curl_memory.h"
 #include "memdebug.h"
 
+#ifdef WIN32
+
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+#  define HAVE_MINGW_ORIGINAL
+#endif
+
+#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 && \
+  !defined(HAVE_MINGW_ORIGINAL)
+#  define HAVE_WIN_BCRYPTGENRANDOM
+#  include <bcrypt.h>
+#  ifdef _MSC_VER
+#    pragma comment(lib, "bcrypt.lib")
+#  endif
+#  ifndef BCRYPT_USE_SYSTEM_PREFERRED_RNG
+#  define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002
+#  endif
+#  ifndef STATUS_SUCCESS
+#  define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
+#  endif
+#elif defined(USE_WIN32_CRYPTO)
+#  include <wincrypt.h>
+#  ifdef _MSC_VER
+#    pragma comment(lib, "advapi32.lib")
+#  endif
+#endif
+
+CURLcode Curl_win32_random(unsigned char *entropy, size_t length)
+{
+  memset(entropy, 0, length);
+
+#if defined(HAVE_WIN_BCRYPTGENRANDOM)
+  if(BCryptGenRandom(NULL, entropy, (ULONG)length,
+                     BCRYPT_USE_SYSTEM_PREFERRED_RNG) != STATUS_SUCCESS)
+    return CURLE_FAILED_INIT;
+
+  return CURLE_OK;
+#elif defined(USE_WIN32_CRYPTO)
+  {
+    HCRYPTPROV hCryptProv = 0;
+
+    if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
+                            CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
+      return CURLE_FAILED_INIT;
+
+    if(!CryptGenRandom(hCryptProv, (DWORD)length, entropy)) {
+      CryptReleaseContext(hCryptProv, 0UL);
+      return CURLE_FAILED_INIT;
+    }
+
+    CryptReleaseContext(hCryptProv, 0UL);
+  }
+  return CURLE_OK;
+#else
+  return CURLE_NOT_BUILT_IN;
+#endif
+}
+#endif
+
 static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
 {
   unsigned int r;
@@ -71,7 +131,15 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
 
   /* ---- non-cryptographic version following ---- */
 
-#ifdef RANDOM_FILE
+#ifdef WIN32
+  if(!seeded) {
+    result = Curl_win32_random((unsigned char *)rnd, sizeof(*rnd));
+    if(result != CURLE_NOT_BUILT_IN)
+      return result;
+  }
+#endif
+
+#if defined(RANDOM_FILE) && !defined(WIN32)
   if(!seeded) {
     /* if there's a random file to read a seed from, use it */
     int fd = open(RANDOM_FILE, O_RDONLY);
@@ -87,7 +155,7 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
 
   if(!seeded) {
     struct curltime now = Curl_now();
-    infof(data, "WARNING: Using weak random seed");
+    infof(data, "WARNING: using weak random seed");
     randseed += (unsigned int)now.tv_usec + (unsigned int)now.tv_sec;
     randseed = randseed * 1103515245 + 12345;
     randseed = randseed * 1103515245 + 12345;
@@ -106,7 +174,8 @@ static CURLcode randit(struct Curl_easy *data, unsigned int *rnd)
  * 'rndptr' points to.
  *
  * If libcurl is built without TLS support or with a TLS backend that lacks a
- * proper random API (Gskit or mbedTLS), this function will use "weak" random.
+ * proper random API (rustls, Gskit or mbedTLS), this function will use "weak"
+ * random.
  *
  * When built *with* TLS support and a backend that offers strong random, it
  * will return error if it cannot provide strong random values.
@@ -143,7 +212,7 @@ CURLcode Curl_rand(struct Curl_easy *data, unsigned char *rnd, size_t num)
 
 /*
  * Curl_rand_hex() fills the 'rnd' buffer with a given 'num' size with random
- * hexadecimal digits PLUS a zero terminating byte. It must be an odd number
+ * hexadecimal digits PLUS a null-terminating byte. It must be an odd number
  * size.
  */
 
@@ -166,7 +235,7 @@ CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd,
     /* make sure it fits in the local buffer and that it is an odd number! */
     return CURLE_BAD_FUNCTION_ARGUMENT;
 
-  num--; /* save one for zero termination */
+  num--; /* save one for null-termination */
 
   result = Curl_rand(data, buffer, num/2);
   if(result)
index 02d95d8e6452c03818115a23574b8c60f0cf2f47..30fc29615a334f6d82591370ef3180a40a66a83d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -40,10 +42,16 @@ CURLcode Curl_rand(struct Curl_easy *data, unsigned char *rnd, size_t num);
 
 /*
  * Curl_rand_hex() fills the 'rnd' buffer with a given 'num' size with random
- * hexadecimal digits PLUS a zero terminating byte. It must be an odd number
+ * hexadecimal digits PLUS a null-terminating byte. It must be an odd number
  * size.
  */
 CURLcode Curl_rand_hex(struct Curl_easy *data, unsigned char *rnd,
                        size_t num);
 
+#ifdef WIN32
+/* Random generator shared between the Schannel vtls and Curl_rand*()
+   functions */
+CURLcode Curl_win32_random(unsigned char *entropy, size_t length);
+#endif
+
 #endif /* HEADER_CURL_RAND_H */
index f858d4369558126cca711f77f19f77edff221e67..cfb3699fb709295b1d2d6b09e15ea42362b6f94c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "rename.h"
index 534f7471c824624b6a29435a3c09b676584ce72e..9958e2cd2322a811e5f57a899e7ae5226edf3fd1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 int Curl_rename(const char *oldpath, const char *newpath);
index 30fefb9b829cf5385064eb79d14d3596ef7d2691..6d3bf97e6ca96d4f6f0cf5a8f80f495cf0cc54c9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -219,7 +221,7 @@ static CURLcode rtsp_done(struct Curl_easy *data,
 
   httpStatus = Curl_http_done(data, status, premature);
 
-  if(rtsp) {
+  if(rtsp && !status && !httpStatus) {
     /* Check the sequence numbers */
     long CSeq_sent = rtsp->CSeq_sent;
     long CSeq_recv = rtsp->CSeq_recv;
@@ -340,7 +342,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
   }
 
   /* Transport Header for SETUP requests */
-  p_transport = Curl_checkheaders(data, "Transport");
+  p_transport = Curl_checkheaders(data, STRCONST("Transport"));
   if(rtspreq == RTSPREQ_SETUP && !p_transport) {
     /* New Transport: setting? */
     if(data->set.str[STRING_RTSP_TRANSPORT]) {
@@ -364,11 +366,11 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
   /* Accept Headers for DESCRIBE requests */
   if(rtspreq == RTSPREQ_DESCRIBE) {
     /* Accept Header */
-    p_accept = Curl_checkheaders(data, "Accept")?
+    p_accept = Curl_checkheaders(data, STRCONST("Accept"))?
       NULL:"Accept: application/sdp\r\n";
 
     /* Accept-Encoding header */
-    if(!Curl_checkheaders(data, "Accept-Encoding") &&
+    if(!Curl_checkheaders(data, STRCONST("Accept-Encoding")) &&
        data->set.str[STRING_ENCODING]) {
       Curl_safefree(data->state.aptr.accept_encoding);
       data->state.aptr.accept_encoding =
@@ -385,11 +387,12 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(data, "User-Agent") && data->state.aptr.uagent) {
+  if(Curl_checkheaders(data, STRCONST("User-Agent")) &&
+     data->state.aptr.uagent) {
     Curl_safefree(data->state.aptr.uagent);
     data->state.aptr.uagent = NULL;
   }
-  else if(!Curl_checkheaders(data, "User-Agent") &&
+  else if(!Curl_checkheaders(data, STRCONST("User-Agent")) &&
           data->set.str[STRING_USERAGENT]) {
     p_uagent = data->state.aptr.uagent;
   }
@@ -405,7 +408,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
 
   /* Referrer */
   Curl_safefree(data->state.aptr.ref);
-  if(data->state.referer && !Curl_checkheaders(data, "Referer"))
+  if(data->state.referer && !Curl_checkheaders(data, STRCONST("Referer")))
     data->state.aptr.ref = aprintf("Referer: %s\r\n", data->state.referer);
   else
     data->state.aptr.ref = NULL;
@@ -422,7 +425,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
      (rtspreq  & (RTSPREQ_PLAY | RTSPREQ_PAUSE | RTSPREQ_RECORD))) {
 
     /* Check to see if there is a range set in the custom headers */
-    if(!Curl_checkheaders(data, "Range") && data->state.range) {
+    if(!Curl_checkheaders(data, STRCONST("Range")) && data->state.range) {
       Curl_safefree(data->state.aptr.rangeline);
       data->state.aptr.rangeline = aprintf("Range: %s\r\n", data->state.range);
       p_range = data->state.aptr.rangeline;
@@ -432,11 +435,11 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
   /*
    * Sanity check the custom headers
    */
-  if(Curl_checkheaders(data, "CSeq")) {
+  if(Curl_checkheaders(data, STRCONST("CSeq"))) {
     failf(data, "CSeq cannot be set as a custom header.");
     return CURLE_RTSP_CSEQ_ERROR;
   }
-  if(Curl_checkheaders(data, "Session")) {
+  if(Curl_checkheaders(data, STRCONST("Session"))) {
     failf(data, "Session ID cannot be set as a custom header.");
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
@@ -523,7 +526,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
     if(putsize > 0 || postsize > 0) {
       /* As stated in the http comments, it is probably not wise to
        * actually set a custom Content-Length in the headers */
-      if(!Curl_checkheaders(data, "Content-Length")) {
+      if(!Curl_checkheaders(data, STRCONST("Content-Length"))) {
         result =
           Curl_dyn_addf(&req_buffer,
                         "Content-Length: %" CURL_FORMAT_CURL_OFF_T"\r\n",
@@ -534,18 +537,20 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
 
       if(rtspreq == RTSPREQ_SET_PARAMETER ||
          rtspreq == RTSPREQ_GET_PARAMETER) {
-        if(!Curl_checkheaders(data, "Content-Type")) {
-          result = Curl_dyn_addf(&req_buffer,
-                                 "Content-Type: text/parameters\r\n");
+        if(!Curl_checkheaders(data, STRCONST("Content-Type"))) {
+          result = Curl_dyn_addn(&req_buffer,
+                                 STRCONST("Content-Type: "
+                                          "text/parameters\r\n"));
           if(result)
             return result;
         }
       }
 
       if(rtspreq == RTSPREQ_ANNOUNCE) {
-        if(!Curl_checkheaders(data, "Content-Type")) {
-          result = Curl_dyn_addf(&req_buffer,
-                                 "Content-Type: application/sdp\r\n");
+        if(!Curl_checkheaders(data, STRCONST("Content-Type"))) {
+          result = Curl_dyn_addn(&req_buffer,
+                                 STRCONST("Content-Type: "
+                                          "application/sdp\r\n"));
           if(result)
             return result;
         }
@@ -563,7 +568,7 @@ static CURLcode rtsp_do(struct Curl_easy *data, bool *done)
   /* RTSP never allows chunked transfer */
   data->req.forbidchunk = TRUE;
   /* Finish the request buffer */
-  result = Curl_dyn_add(&req_buffer, "\r\n");
+  result = Curl_dyn_addn(&req_buffer, STRCONST("\r\n"));
   if(result)
     return result;
 
@@ -789,7 +794,7 @@ CURLcode Curl_rtsp_parseheader(struct Curl_easy *data, char *header)
 
     /* Find the first non-space letter */
     start = header + 8;
-    while(*start && ISSPACE(*start))
+    while(*start && ISBLANK(*start))
       start++;
 
     if(!*start) {
index da11ade0438b13e711ab0d93d67386bfd70acce7..377c828605876c8ca3a6c14ba8416b3d6a8a4b17 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifdef USE_HYPER
 #define CURL_DISABLE_RTSP 1
index 70d7ee5c266a71d4299add61764b4162bf673fc2..2ac07467728c601682916aea2d03753d86e789e6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #error "We can't compile without select() or poll() support."
 #endif
 
-#if defined(__BEOS__) && !defined(__HAIKU__)
-/* BeOS has FD_SET defined in socket.h */
-#include <socket.h>
-#endif
-
 #ifdef MSDOS
 #include <dos.h>  /* delay() */
 #endif
 
-#ifdef __VXWORKS__
-#include <strings.h>  /* bzero() in FD_SET */
-#endif
-
 #include <curl/curl.h>
 
 #include "urldata.h"
 #include "connect.h"
 #include "select.h"
-#include "timeval.h"
+#include "timediff.h"
 #include "warnless.h"
 
 /*
@@ -102,26 +95,7 @@ int Curl_wait_ms(timediff_t timeout_ms)
 #else
   {
     struct timeval pending_tv;
-    timediff_t tv_sec = timeout_ms / 1000;
-    timediff_t tv_usec = (timeout_ms % 1000) * 1000; /* max=999999 */
-#ifdef HAVE_SUSECONDS_T
-#if TIMEDIFF_T_MAX > TIME_T_MAX
-    /* tv_sec overflow check in case time_t is signed */
-    if(tv_sec > TIME_T_MAX)
-      tv_sec = TIME_T_MAX;
-#endif
-    pending_tv.tv_sec = (time_t)tv_sec;
-    pending_tv.tv_usec = (suseconds_t)tv_usec;
-#else
-#if TIMEDIFF_T_MAX > INT_MAX
-    /* tv_sec overflow check in case time_t is signed */
-    if(tv_sec > INT_MAX)
-      tv_sec = INT_MAX;
-#endif
-    pending_tv.tv_sec = (int)tv_sec;
-    pending_tv.tv_usec = (int)tv_usec;
-#endif
-    r = select(0, NULL, NULL, NULL, &pending_tv);
+    r = select(0, NULL, NULL, NULL, curlx_mstotv(&pending_tv, timeout_ms));
   }
 #endif /* HAVE_POLL_FINE */
 #endif /* USE_WINSOCK */
@@ -161,43 +135,7 @@ static int our_select(curl_socket_t maxfd,   /* highest socket number */
   }
 #endif
 
-  ptimeout = &pending_tv;
-  if(timeout_ms < 0) {
-    ptimeout = NULL;
-  }
-  else if(timeout_ms > 0) {
-    timediff_t tv_sec = timeout_ms / 1000;
-    timediff_t tv_usec = (timeout_ms % 1000) * 1000; /* max=999999 */
-#ifdef HAVE_SUSECONDS_T
-#if TIMEDIFF_T_MAX > TIME_T_MAX
-    /* tv_sec overflow check in case time_t is signed */
-    if(tv_sec > TIME_T_MAX)
-      tv_sec = TIME_T_MAX;
-#endif
-    pending_tv.tv_sec = (time_t)tv_sec;
-    pending_tv.tv_usec = (suseconds_t)tv_usec;
-#elif defined(WIN32) /* maybe also others in the future */
-#if TIMEDIFF_T_MAX > LONG_MAX
-    /* tv_sec overflow check on Windows there we know it is long */
-    if(tv_sec > LONG_MAX)
-      tv_sec = LONG_MAX;
-#endif
-    pending_tv.tv_sec = (long)tv_sec;
-    pending_tv.tv_usec = (long)tv_usec;
-#else
-#if TIMEDIFF_T_MAX > INT_MAX
-    /* tv_sec overflow check in case time_t is signed */
-    if(tv_sec > INT_MAX)
-      tv_sec = INT_MAX;
-#endif
-    pending_tv.tv_sec = (int)tv_sec;
-    pending_tv.tv_usec = (int)tv_usec;
-#endif
-  }
-  else {
-    pending_tv.tv_sec = 0;
-    pending_tv.tv_usec = 0;
-  }
+  ptimeout = curlx_mstotv(&pending_tv, timeout_ms);
 
 #ifdef USE_WINSOCK
   /* WinSock select() must not be called with an fd_set that contains zero
@@ -372,8 +310,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
   else
     pending_ms = 0;
   r = poll(ufds, nfds, pending_ms);
-  if(r <= 0)
+  if(r <= 0) {
+    if((r == -1) && (SOCKERRNO == EINTR))
+      /* make EINTR from select or poll not a "lethal" error */
+      r = 0;
     return r;
+  }
 
   for(i = 0; i < nfds; i++) {
     if(ufds[i].fd == CURL_SOCKET_BAD)
@@ -416,8 +358,12 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
      value).
   */
   r = our_select(maxfd, &fds_read, &fds_write, &fds_err, timeout_ms);
-  if(r <= 0)
+  if(r <= 0) {
+    if((r == -1) && (SOCKERRNO == EINTR))
+      /* make EINTR from select or poll not a "lethal" error */
+      r = 0;
     return r;
+  }
 
   r = 0;
   for(i = 0; i < nfds; i++) {
@@ -450,23 +396,3 @@ int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms)
 
   return r;
 }
-
-#ifdef TPF
-/*
- * This is a replacement for select() on the TPF platform.
- * It is used whenever libcurl calls select().
- * The call below to tpf_process_signals() is required because
- * TPF's select calls are not signal interruptible.
- *
- * Return values are the same as select's.
- */
-int tpf_select_libcurl(int maxfds, fd_set *reads, fd_set *writes,
-                       fd_set *excepts, struct timeval *tv)
-{
-   int rc;
-
-   rc = tpf_select_bsd(maxfds, reads, writes, excepts, tv);
-   tpf_process_signals();
-   return rc;
-}
-#endif /* TPF */
index 59a571dbbd9fd36f23f3a4b1d44dfacef02b3d54..f2cf8bbd9fae274931bc08a34befc28eaba99c74 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -34,8 +36,7 @@
  * Definition of pollfd struct and constants for platforms lacking them.
  */
 
-#if !defined(HAVE_STRUCT_POLLFD) && \
-    !defined(HAVE_SYS_POLL_H) && \
+#if !defined(HAVE_SYS_POLL_H) && \
     !defined(HAVE_POLL_H) && \
     !defined(POLLIN)
 
@@ -83,22 +84,11 @@ int Curl_socket_check(curl_socket_t readfd, curl_socket_t readfd2,
 int Curl_poll(struct pollfd ufds[], unsigned int nfds, timediff_t timeout_ms);
 int Curl_wait_ms(timediff_t timeout_ms);
 
-#ifdef TPF
-int tpf_select_libcurl(int maxfds, fd_set* reads, fd_set* writes,
-                       fd_set* excepts, struct timeval *tv);
-#endif
-
-/* TPF sockets are not in range [0..FD_SETSIZE-1], which
-   unfortunately makes it impossible for us to easily check if they're valid
-
+/*
    With Winsock the valid range is [0..INVALID_SOCKET-1] according to
    https://docs.microsoft.com/en-us/windows/win32/winsock/socket-data-type-2
 */
-#if defined(TPF)
-#define VALID_SOCK(x) 1
-#define VERIFY_SOCK(x) Curl_nop_stmt
-#define FDSET_SOCK(x) 1
-#elif defined(USE_WINSOCK)
+#ifdef USE_WINSOCK
 #define VALID_SOCK(s) ((s) < INVALID_SOCKET)
 #define FDSET_SOCK(x) 1
 #define VERIFY_SOCK(x) do { \
index bcfa27a501ff4c17ed8f5eaa1343b53dd72dab2d..d26b7e7cd794dee355efd966ffe3dc23e9ae628c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include "vssh/ssh.h"
 #include "easyif.h"
 #include "multiif.h"
-#include "non-ascii.h"
 #include "strerror.h"
 #include "select.h"
 #include "strdup.h"
 #include "http2.h"
+#include "headers.h"
+#include "ws.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
 #include "memdebug.h"
 
-#ifdef CURL_DO_LINEEND_CONV
+#if defined(CURL_DO_LINEEND_CONV) && !defined(CURL_DISABLE_FTP)
 /*
  * convert_lineends() changes CRLF (\r\n) end-of-line markers to a single LF
  * (\n), with special processing for CRLF sequences that are split between two
@@ -132,7 +135,7 @@ static size_t convert_lineends(struct Curl_easy *data,
   }
   return size;
 }
-#endif /* CURL_DO_LINEEND_CONV */
+#endif /* CURL_DO_LINEEND_CONV && !CURL_DISABLE_FTP */
 
 #ifdef USE_RECV_BEFORE_SEND_WORKAROUND
 bool Curl_recv_has_postponed_data(struct connectdata *conn, int sockindex)
@@ -243,7 +246,7 @@ void Curl_infof(struct Curl_easy *data, const char *fmt, ...)
   DEBUGASSERT(!strchr(fmt, '\n'));
   if(data && data->set.verbose) {
     va_list ap;
-    size_t len;
+    int len;
     char buffer[MAXINFO + 2];
     va_start(ap, fmt);
     len = mvsnprintf(buffer, MAXINFO, fmt, ap);
@@ -263,7 +266,7 @@ void Curl_failf(struct Curl_easy *data, const char *fmt, ...)
   DEBUGASSERT(!strchr(fmt, '\n'));
   if(data->set.verbose || data->set.errorbuffer) {
     va_list ap;
-    size_t len;
+    int len;
     char error[CURL_ERROR_SIZE + 2];
     va_start(ap, fmt);
     len = mvsnprintf(error, CURL_ERROR_SIZE, fmt, ap);
@@ -494,6 +497,9 @@ static CURLcode pausewrite(struct Curl_easy *data,
       }
     }
     DEBUGASSERT(i < 3);
+    if(i >= 3)
+      /* There are more types to store than what fits: very bad */
+      return CURLE_OUT_OF_MEMORY;
   }
   else
     i = 0;
@@ -529,6 +535,7 @@ static CURLcode chop_write(struct Curl_easy *data,
   curl_write_callback writebody = NULL;
   char *ptr = optr;
   size_t len = olen;
+  void *writebody_ptr = data->set.out;
 
   if(!len)
     return CURLE_OK;
@@ -539,8 +546,18 @@ static CURLcode chop_write(struct Curl_easy *data,
     return pausewrite(data, type, ptr, len);
 
   /* Determine the callback(s) to use. */
-  if(type & CLIENTWRITE_BODY)
+  if(type & CLIENTWRITE_BODY) {
+#ifdef USE_WEBSOCKETS
+    if(conn->handler->protocol & (CURLPROTO_WS|CURLPROTO_WSS)) {
+      struct HTTP *ws = data->req.p.http;
+      writebody = Curl_ws_writecb;
+      ws->ws.data = data;
+      writebody_ptr = ws;
+    }
+    else
+#endif
     writebody = data->set.fwrite_func;
+  }
   if((type & CLIENTWRITE_HEADER) &&
      (data->set.fwrite_header || data->set.writeheader)) {
     /*
@@ -558,7 +575,7 @@ static CURLcode chop_write(struct Curl_easy *data,
     if(writebody) {
       size_t wrote;
       Curl_set_in_callback(data, true);
-      wrote = writebody(ptr, 1, chunklen, data->set.out);
+      wrote = writebody(ptr, 1, chunklen, writebody_ptr);
       Curl_set_in_callback(data, false);
 
       if(CURL_WRITEFUNC_PAUSE == wrote) {
@@ -566,7 +583,7 @@ static CURLcode chop_write(struct Curl_easy *data,
           /* Protocols that work without network cannot be paused. This is
              actually only FILE:// just now, and it can't pause since the
              transfer isn't done using the "normal" procedure. */
-          failf(data, "Write callback asked for PAUSE when not supported!");
+          failf(data, "Write callback asked for PAUSE when not supported");
           return CURLE_WRITE_ERROR;
         }
         return pausewrite(data, type, ptr, len);
@@ -581,21 +598,37 @@ static CURLcode chop_write(struct Curl_easy *data,
     len -= chunklen;
   }
 
+#ifndef CURL_DISABLE_HTTP
+  /* HTTP header, but not status-line */
+  if((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
+     (type & CLIENTWRITE_HEADER) && !(type & CLIENTWRITE_STATUS) ) {
+    unsigned char htype = (unsigned char)
+      (type & CLIENTWRITE_CONNECT ? CURLH_CONNECT :
+       (type & CLIENTWRITE_1XX ? CURLH_1XX :
+        (type & CLIENTWRITE_TRAILER ? CURLH_TRAILER :
+         CURLH_HEADER)));
+    CURLcode result = Curl_headers_push(data, optr, htype);
+    if(result)
+      return result;
+  }
+#endif
+
   if(writeheader) {
     size_t wrote;
-    ptr = optr;
-    len = olen;
+
     Curl_set_in_callback(data, true);
-    wrote = writeheader(ptr, 1, len, data->set.writeheader);
+    wrote = writeheader(optr, 1, olen, data->set.writeheader);
     Curl_set_in_callback(data, false);
 
     if(CURL_WRITEFUNC_PAUSE == wrote)
       /* here we pass in the HEADER bit only since if this was body as well
          then it was passed already and clearly that didn't trigger the
          pause, so this is saved for later with the HEADER bit only */
-      return pausewrite(data, CLIENTWRITE_HEADER, ptr, len);
-
-    if(wrote != len) {
+      return pausewrite(data, CLIENTWRITE_HEADER |
+                        (type & (CLIENTWRITE_STATUS|CLIENTWRITE_CONNECT|
+                                 CLIENTWRITE_1XX|CLIENTWRITE_TRAILER)),
+                        optr, olen);
+    if(wrote != olen) {
       failf(data, "Failed writing header");
       return CURLE_WRITE_ERROR;
     }
@@ -619,29 +652,15 @@ CURLcode Curl_client_write(struct Curl_easy *data,
                            char *ptr,
                            size_t len)
 {
-  struct connectdata *conn = data->conn;
-
-  DEBUGASSERT(!(type & ~CLIENTWRITE_BOTH));
-
-  if(!len)
-    return CURLE_OK;
-
+#if !defined(CURL_DISABLE_FTP) && defined(CURL_DO_LINEEND_CONV)
   /* FTP data may need conversion. */
   if((type & CLIENTWRITE_BODY) &&
-    (conn->handler->protocol & PROTO_FAMILY_FTP) &&
-    conn->proto.ftpc.transfertype == 'A') {
-    /* convert from the network encoding */
-    CURLcode result = Curl_convert_from_network(data, ptr, len);
-    /* Curl_convert_from_network calls failf if unsuccessful */
-    if(result)
-      return result;
-
-#ifdef CURL_DO_LINEEND_CONV
+     (data->conn->handler->protocol & PROTO_FAMILY_FTP) &&
+     data->conn->proto.ftpc.transfertype == 'A') {
     /* convert end-of-line markers */
     len = convert_lineends(data, ptr, len);
-#endif /* CURL_DO_LINEEND_CONV */
-    }
-
+  }
+#endif
   return chop_write(data, type, ptr, len);
 }
 
@@ -709,55 +728,17 @@ CURLcode Curl_read(struct Curl_easy *data,   /* transfer */
 }
 
 /* return 0 on success */
-int Curl_debug(struct Curl_easy *data, curl_infotype type,
-               char *ptr, size_t size)
+void Curl_debug(struct Curl_easy *data, curl_infotype type,
+                char *ptr, size_t size)
 {
-  int rc = 0;
   if(data->set.verbose) {
     static const char s_infotype[CURLINFO_END][3] = {
       "* ", "< ", "> ", "{ ", "} ", "{ ", "} " };
-
-#ifdef CURL_DOES_CONVERSIONS
-    char *buf = NULL;
-    size_t conv_size = 0;
-
-    switch(type) {
-    case CURLINFO_HEADER_OUT:
-      buf = Curl_memdup(ptr, size);
-      if(!buf)
-        return 1;
-      conv_size = size;
-
-      /* Special processing is needed for this block if it
-       * contains both headers and data (separated by CRLFCRLF).
-       * We want to convert just the headers, leaving the data as-is.
-       */
-      if(size > 4) {
-        size_t i;
-        for(i = 0; i < size-4; i++) {
-          if(memcmp(&buf[i], "\x0d\x0a\x0d\x0a", 4) == 0) {
-            /* convert everything through this CRLFCRLF but no further */
-            conv_size = i + 4;
-            break;
-          }
-        }
-      }
-
-      Curl_convert_from_network(data, buf, conv_size);
-      /* Curl_convert_from_network calls failf if unsuccessful */
-      /* we might as well continue even if it fails...   */
-      ptr = buf; /* switch pointer to use my buffer instead */
-      break;
-    default:
-      /* leave everything else as-is */
-      break;
-    }
-#endif /* CURL_DOES_CONVERSIONS */
-
     if(data->set.fdebug) {
+      bool inCallback = Curl_is_in_callback(data);
       Curl_set_in_callback(data, true);
-      rc = (*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
-      Curl_set_in_callback(data, false);
+      (void)(*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
+      Curl_set_in_callback(data, inCallback);
     }
     else {
       switch(type) {
@@ -766,20 +747,10 @@ int Curl_debug(struct Curl_easy *data, curl_infotype type,
       case CURLINFO_HEADER_IN:
         fwrite(s_infotype[type], 2, 1, data->set.err);
         fwrite(ptr, size, 1, data->set.err);
-#ifdef CURL_DOES_CONVERSIONS
-        if(size != conv_size) {
-          /* we had untranslated data so we need an explicit newline */
-          fwrite("\n", 1, 1, data->set.err);
-        }
-#endif
         break;
       default: /* nada */
         break;
       }
     }
-#ifdef CURL_DOES_CONVERSIONS
-    free(buf);
-#endif
   }
-  return rc;
 }
index 108a5e934a2fc810d80a52a357264c8114d898fe..7c4c1280a0746de4611eb84c18c4f1b3a98d9de0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -45,8 +47,12 @@ void Curl_failf(struct Curl_easy *, const char *fmt, ...);
 
 #define failf Curl_failf
 
-#define CLIENTWRITE_BODY   (1<<0)
-#define CLIENTWRITE_HEADER (1<<1)
+#define CLIENTWRITE_BODY    (1<<0)
+#define CLIENTWRITE_HEADER  (1<<1)
+#define CLIENTWRITE_STATUS  (1<<2) /* the first "header" is the status line */
+#define CLIENTWRITE_CONNECT (1<<3) /* a CONNECT response */
+#define CLIENTWRITE_1XX     (1<<4) /* a 1xx response */
+#define CLIENTWRITE_TRAILER (1<<5) /* a trailer header */
 #define CLIENTWRITE_BOTH   (CLIENTWRITE_BODY|CLIENTWRITE_HEADER)
 
 CURLcode Curl_client_write(struct Curl_easy *data, int type, char *ptr,
@@ -83,8 +89,8 @@ CURLcode Curl_write_plain(struct Curl_easy *data,
                           ssize_t *written);
 
 /* the function used to output verbose information */
-int Curl_debug(struct Curl_easy *data, curl_infotype type,
-               char *ptr, size_t size);
+void Curl_debug(struct Curl_easy *data, curl_infotype type,
+                char *ptr, size_t size);
 
 
 #endif /* HEADER_CURL_SENDF_H */
index 599ed5d994e4ca8a709403831332489b666d4695..5b5975485c6423ebd3f55d62c1cba8b7cc032b2a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -62,19 +64,12 @@ CURLcode Curl_setstropt(char **charp, const char *s)
   Curl_safefree(*charp);
 
   if(s) {
-    char *str = strdup(s);
+    if(strlen(s) > CURL_MAX_INPUT_LENGTH)
+      return CURLE_BAD_FUNCTION_ARGUMENT;
 
-    if(str) {
-      size_t len = strlen(str);
-      if(len > CURL_MAX_INPUT_LENGTH) {
-        free(str);
-        return CURLE_BAD_FUNCTION_ARGUMENT;
-      }
-    }
-    if(!str)
+    *charp = strdup(s);
+    if(!*charp)
       return CURLE_OUT_OF_MEMORY;
-
-    *charp = str;
   }
 
   return CURLE_OK;
@@ -153,6 +148,40 @@ static CURLcode setstropt_userpwd(char *option, char **userp, char **passwdp)
 #define C_SSLVERSION_VALUE(x) (x & 0xffff)
 #define C_SSLVERSION_MAX_VALUE(x) (x & 0xffff0000)
 
+static CURLcode protocol2num(const char *str, curl_prot_t *val)
+{
+  if(!str)
+    return CURLE_BAD_FUNCTION_ARGUMENT;
+
+  if(curl_strequal(str, "all")) {
+    *val = ~(curl_prot_t) 0;
+    return CURLE_OK;
+  }
+
+  *val = 0;
+
+  do {
+    const char *token = str;
+    size_t tlen;
+
+    str = strchr(str, ',');
+    tlen = str? (size_t) (str - token): strlen(token);
+    if(tlen) {
+      const struct Curl_handler *h = Curl_builtin_scheme(token, tlen);
+
+      if(!h)
+        return CURLE_UNSUPPORTED_PROTOCOL;
+
+      *val |= h->protocol;
+    }
+  } while(str++);
+
+  if(!*val)
+    /* no protocol listed */
+    return CURLE_BAD_FUNCTION_ARGUMENT;
+  return CURLE_OK;
+}
+
 /*
  * Do not make Curl_vsetopt() static: it is called from
  * packages/OS400/ccsidcurl.c.
@@ -170,7 +199,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     arg = va_arg(param, long);
     if(arg < -1)
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.dns_cache_timeout = arg;
+    else if(arg > INT_MAX)
+      arg = INT_MAX;
+
+    data->set.dns_cache_timeout = (int)arg;
     break;
   case CURLOPT_DNS_USE_GLOBAL_CACHE:
     /* deprecated */
@@ -208,19 +240,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     break;
 #endif
   case CURLOPT_RANDOM_FILE:
-    /*
-     * This is the path name to a file that contains random data to seed
-     * the random SSL stuff with. The file is only used for reading.
-     */
-    result = Curl_setstropt(&data->set.str[STRING_SSL_RANDOM_FILE],
-                            va_arg(param, char *));
     break;
   case CURLOPT_EGDSOCKET:
-    /*
-     * The Entropy Gathering Daemon socket pathname
-     */
-    result = Curl_setstropt(&data->set.str[STRING_SSL_EGDSOCKET],
-                            va_arg(param, char *));
     break;
   case CURLOPT_MAXCONNECTS:
     /*
@@ -323,12 +344,12 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     break;
   case CURLOPT_SERVER_RESPONSE_TIMEOUT:
     /*
-     * Option that specifies how quickly an server response must be obtained
+     * Option that specifies how quickly a server response must be obtained
      * before it is considered failure. For pingpong protocols.
      */
     arg = va_arg(param, long);
     if((arg >= 0) && (arg <= (INT_MAX/1000)))
-      data->set.server_response_timeout = arg * 1000;
+      data->set.server_response_timeout = (unsigned int)arg * 1000;
     else
       return CURLE_BAD_FUNCTION_ARGUMENT;
     break;
@@ -358,7 +379,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     arg = va_arg(param, long);
     if((arg < CURL_NETRC_IGNORED) || (arg >= CURL_NETRC_LAST))
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.use_netrc = (enum CURL_NETRC_OPTION)arg;
+    data->set.use_netrc = (unsigned char)arg;
     break;
   case CURLOPT_NETRC_FILE:
     /*
@@ -630,8 +651,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     }
     else
       data->set.method = HTTPREQ_GET;
+    data->set.upload = FALSE;
     break;
 
+#ifndef CURL_DISABLE_MIME
   case CURLOPT_HTTPPOST:
     /*
      * Set to make us do HTTP POST
@@ -640,6 +663,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     data->set.method = HTTPREQ_POST_FORM;
     data->set.opt_no_body = FALSE; /* this is implied */
     break;
+#endif
 
   case CURLOPT_AWS_SIGV4:
     /*
@@ -655,18 +679,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
       data->set.httpauth = CURLAUTH_AWS_SIGV4;
     break;
 
-  case CURLOPT_MIMEPOST:
-    /*
-     * Set to make us do MIME/form POST
-     */
-    result = Curl_mime_set_subparts(&data->set.mimepost,
-                                    va_arg(param, curl_mime *), FALSE);
-    if(!result) {
-      data->set.method = HTTPREQ_POST_MIME;
-      data->set.opt_no_body = FALSE; /* this is implied */
-    }
-    break;
-
   case CURLOPT_REFERER:
     /*
      * String to set in the HTTP Referer: field.
@@ -688,13 +700,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
                             va_arg(param, char *));
     break;
 
-  case CURLOPT_HTTPHEADER:
-    /*
-     * Set a list with HTTP headers to use (or replace internals with)
-     */
-    data->set.headers = va_arg(param, struct curl_slist *);
-    break;
-
 #ifndef CURL_DISABLE_PROXY
   case CURLOPT_PROXYHEADER:
     /*
@@ -895,7 +900,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
       ;
     else
 #endif
-#if !defined(USE_NGHTTP2) && !defined(USE_HYPER)
+#ifndef USE_HTTP2
     if(arg >= CURL_HTTP_VERSION_2)
       return CURLE_UNSUPPORTED_PROTOCOL;
 #else
@@ -932,6 +937,36 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     break;
 #endif   /* CURL_DISABLE_HTTP */
 
+#if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_SMTP) ||       \
+    !defined(CURL_DISABLE_IMAP)
+# if !defined(CURL_DISABLE_HTTP) || !defined(CURL_DISABLE_MIME)
+  case CURLOPT_HTTPHEADER:
+    /*
+     * Set a list with HTTP headers to use (or replace internals with)
+     */
+    data->set.headers = va_arg(param, struct curl_slist *);
+    break;
+# endif
+
+# ifndef CURL_DISABLE_MIME
+  case CURLOPT_MIMEPOST:
+    /*
+     * Set to make us do MIME POST
+     */
+    result = Curl_mime_set_subparts(&data->set.mimepost,
+                                    va_arg(param, curl_mime *), FALSE);
+    if(!result) {
+      data->set.method = HTTPREQ_POST_MIME;
+      data->set.opt_no_body = FALSE; /* this is implied */
+    }
+    break;
+
+  case CURLOPT_MIME_OPTIONS:
+    data->set.mime_options = (unsigned int)va_arg(param, long);
+    break;
+# endif
+#endif
+
   case CURLOPT_HTTPAUTH:
     /*
      * Set HTTP Authentication type BITMASK.
@@ -1120,13 +1155,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
       break;
     }
     break;
-#endif   /* CURL_DISABLE_PROXY */
 
   case CURLOPT_SOCKS5_AUTH:
     data->set.socks5auth = va_arg(param, unsigned long);
     if(data->set.socks5auth & ~(CURLAUTH_BASIC | CURLAUTH_GSSAPI))
       result = CURLE_NOT_BUILT_IN;
     break;
+#endif   /* CURL_DISABLE_PROXY */
+
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   case CURLOPT_SOCKS5_GSSAPI_NEC:
     /*
@@ -1275,7 +1311,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
        (arg > CURLFTP_CREATE_DIR_RETRY))
       result = CURLE_BAD_FUNCTION_ARGUMENT;
     else
-      data->set.ftp_create_missing_dirs = (int)arg;
+      data->set.ftp_create_missing_dirs = (unsigned char)arg;
     break;
   case CURLOPT_READDATA:
     /*
@@ -1365,12 +1401,12 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     break;
   case CURLOPT_PORT:
     /*
-     * The port number to use when getting the URL
+     * The port number to use when getting the URL. 0 disables it.
      */
     arg = va_arg(param, long);
     if((arg < 0) || (arg > 65535))
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.use_port = arg;
+    data->set.use_port = (unsigned short)arg;
     break;
   case CURLOPT_TIMEOUT:
     /*
@@ -1379,16 +1415,16 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
      */
     arg = va_arg(param, long);
     if((arg >= 0) && (arg <= (INT_MAX/1000)))
-      data->set.timeout = arg * 1000;
+      data->set.timeout = (unsigned int)arg * 1000;
     else
       return CURLE_BAD_FUNCTION_ARGUMENT;
     break;
 
   case CURLOPT_TIMEOUT_MS:
-    arg = va_arg(param, long);
-    if(arg < 0)
-      return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.timeout = arg;
+    uarg = va_arg(param, unsigned long);
+    if(uarg >= UINT_MAX)
+      uarg = UINT_MAX;
+    data->set.timeout = (unsigned int)uarg;
     break;
 
   case CURLOPT_CONNECTTIMEOUT:
@@ -1397,27 +1433,29 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
      */
     arg = va_arg(param, long);
     if((arg >= 0) && (arg <= (INT_MAX/1000)))
-      data->set.connecttimeout = arg * 1000;
+      data->set.connecttimeout = (unsigned int)arg * 1000;
     else
       return CURLE_BAD_FUNCTION_ARGUMENT;
     break;
 
   case CURLOPT_CONNECTTIMEOUT_MS:
-    arg = va_arg(param, long);
-    if(arg < 0)
-      return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.connecttimeout = arg;
+    uarg = va_arg(param, unsigned long);
+    if(uarg >= UINT_MAX)
+      uarg = UINT_MAX;
+    data->set.connecttimeout = (unsigned int)uarg;
     break;
 
+#ifndef CURL_DISABLE_FTP
   case CURLOPT_ACCEPTTIMEOUT_MS:
     /*
-     * The maximum time you allow curl to wait for server connect
+     * The maximum time for curl to wait for FTP server connect
      */
-    arg = va_arg(param, long);
-    if(arg < 0)
-      return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.accepttimeout = arg;
+    uarg = va_arg(param, unsigned long);
+    if(uarg >= UINT_MAX)
+      uarg = UINT_MAX;
+    data->set.accepttimeout = (unsigned int)uarg;
     break;
+#endif
 
   case CURLOPT_USERPWD:
     /*
@@ -1617,13 +1655,9 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
      * Set data write callback
      */
     data->set.fwrite_func = va_arg(param, curl_write_callback);
-    if(!data->set.fwrite_func) {
-      data->set.is_fwrite_set = 0;
+    if(!data->set.fwrite_func)
       /* When set to NULL, reset to our internal default function */
       data->set.fwrite_func = (curl_write_callback)fwrite;
-    }
-    else
-      data->set.is_fwrite_set = 1;
     break;
   case CURLOPT_READFUNCTION:
     /*
@@ -1650,24 +1684,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
      */
     data->set.seek_client = va_arg(param, void *);
     break;
-  case CURLOPT_CONV_FROM_NETWORK_FUNCTION:
-    /*
-     * "Convert from network encoding" callback
-     */
-    data->set.convfromnetwork = va_arg(param, curl_conv_callback);
-    break;
-  case CURLOPT_CONV_TO_NETWORK_FUNCTION:
-    /*
-     * "Convert to network encoding" callback
-     */
-    data->set.convtonetwork = va_arg(param, curl_conv_callback);
-    break;
-  case CURLOPT_CONV_FROM_UTF8_FUNCTION:
-    /*
-     * "Convert from UTF-8 encoding" callback
-     */
-    data->set.convfromutf8 = va_arg(param, curl_conv_callback);
-    break;
   case CURLOPT_IOCTLFUNCTION:
     /*
      * I/O control callback. Might be NULL.
@@ -2189,7 +2205,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     else if(arg < READBUFFER_MIN)
       arg = READBUFFER_MIN;
 
-    data->set.buffer_size = arg;
+    data->set.buffer_size = (int)arg;
     break;
 
   case CURLOPT_UPLOAD_BUFFERSIZE:
@@ -2317,6 +2333,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
 
   case CURLOPT_SSL_OPTIONS:
     arg = va_arg(param, long);
+    data->set.ssl.primary.ssl_options = (unsigned char)(arg & 0xff);
     data->set.ssl.enable_beast = !!(arg & CURLSSLOPT_ALLOW_BEAST);
     data->set.ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
     data->set.ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
@@ -2330,6 +2347,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
 #ifndef CURL_DISABLE_PROXY
   case CURLOPT_PROXY_SSL_OPTIONS:
     arg = va_arg(param, long);
+    data->set.proxy_ssl.primary.ssl_options = (unsigned char)(arg & 0xff);
     data->set.proxy_ssl.enable_beast = !!(arg & CURLSSLOPT_ALLOW_BEAST);
     data->set.proxy_ssl.no_revoke = !!(arg & CURLSSLOPT_NO_REVOKE);
     data->set.proxy_ssl.no_partialchain = !!(arg & CURLSSLOPT_NO_PARTIALCHAIN);
@@ -2381,9 +2399,14 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
 
   case CURLOPT_CONNECT_ONLY:
     /*
-     * No data transfer, set up connection and let application use the socket
+     * No data transfer.
+     * (1) - only do connection
+     * (2) - do first get request but get no content
      */
-    data->set.connect_only = (0 != va_arg(param, long)) ? TRUE : FALSE;
+    arg = va_arg(param, long);
+    if(arg > 2)
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+    data->set.connect_only = (unsigned char)arg;
     break;
 
   case CURLOPT_SOCKOPTFUNCTION:
@@ -2456,7 +2479,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
 #ifdef USE_SSH
     /* we only include SSH options if explicitly built to support SSH */
   case CURLOPT_SSH_AUTH_TYPES:
-    data->set.ssh_auth_types = va_arg(param, long);
+    data->set.ssh_auth_types = (unsigned int)va_arg(param, long);
     break;
 
   case CURLOPT_SSH_PUBLIC_KEYFILE:
@@ -2499,7 +2522,19 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     result = Curl_setstropt(&data->set.str[STRING_SSH_KNOWNHOSTS],
                             va_arg(param, char *));
     break;
+#ifdef USE_LIBSSH2
+  case CURLOPT_SSH_HOSTKEYFUNCTION:
+    /* the callback to check the hostkey without the knownhost file */
+    data->set.ssh_hostkeyfunc = va_arg(param, curl_sshhostkeycallback);
+    break;
 
+  case CURLOPT_SSH_HOSTKEYDATA:
+    /*
+     * Custom client data to pass to the SSH keyfunc callback
+     */
+    data->set.ssh_hostkeyfunc_userp = va_arg(param, void *);
+    break;
+#endif
   case CURLOPT_SSH_KEYFUNCTION:
     /* setting to NULL is fine since the ssh.c functions themselves will
        then revert to use the internal default */
@@ -2544,7 +2579,7 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     arg = va_arg(param, long);
     if((arg < 0) || (arg > 0777))
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.new_file_perms = arg;
+    data->set.new_file_perms = (unsigned int)arg;
     break;
 
   case CURLOPT_NEW_DIRECTORY_PERMS:
@@ -2554,10 +2589,11 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     arg = va_arg(param, long);
     if((arg < 0) || (arg > 0777))
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.new_directory_perms = arg;
+    data->set.new_directory_perms = (unsigned int)arg;
     break;
 #endif
 
+#ifdef ENABLE_IPV6
   case CURLOPT_ADDRESS_SCOPE:
     /*
      * Use this scope id when using IPv6
@@ -2571,22 +2607,43 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
 #endif
     data->set.scope_id = (unsigned int)uarg;
     break;
+#endif
 
   case CURLOPT_PROTOCOLS:
     /* set the bitmask for the protocols that are allowed to be used for the
        transfer, which thus helps the app which takes URLs from users or other
        external inputs and want to restrict what protocol(s) to deal
        with. Defaults to CURLPROTO_ALL. */
-    data->set.allowed_protocols = va_arg(param, long);
+    data->set.allowed_protocols = (curl_prot_t)va_arg(param, long);
     break;
 
   case CURLOPT_REDIR_PROTOCOLS:
     /* set the bitmask for the protocols that libcurl is allowed to follow to,
        as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
        to be set in both bitmasks to be allowed to get redirected to. */
-    data->set.redir_protocols = va_arg(param, long);
+    data->set.redir_protocols = (curl_prot_t)va_arg(param, long);
     break;
 
+  case CURLOPT_PROTOCOLS_STR: {
+    curl_prot_t prot;
+    argptr = va_arg(param, char *);
+    result = protocol2num(argptr, &prot);
+    if(result)
+      return result;
+    data->set.allowed_protocols = prot;
+    break;
+  }
+
+  case CURLOPT_REDIR_PROTOCOLS_STR: {
+    curl_prot_t prot;
+    argptr = va_arg(param, char *);
+    result = protocol2num(argptr, &prot);
+    if(result)
+      return result;
+    data->set.redir_protocols = prot;
+    break;
+  }
+
   case CURLOPT_DEFAULT_PROTOCOL:
     /* Set the protocol to use when the URL doesn't include any protocol */
     result = Curl_setstropt(&data->set.str[STRING_DEFAULT_PROTOCOL],
@@ -2615,15 +2672,8 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     break;
 #endif
 
-#if (!defined(CURL_DISABLE_HTTP) && !defined(CURL_DISABLE_MIME)) || \
-  !defined(CURL_DISABLE_SMTP) || !defined(CURL_DISABLE_IMAP)
-  case CURLOPT_MIME_OPTIONS:
-    data->set.mime_options = va_arg(param, long);
-    break;
-#endif
-
   case CURLOPT_SASL_AUTHZID:
-    /* Authorisation identity (identity to act as) */
+    /* Authorization identity (identity to act as) */
     result = Curl_setstropt(&data->set.str[STRING_SASL_AUTHZID],
                             va_arg(param, char *));
     break;
@@ -2766,49 +2816,52 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
   case CURLOPT_TLSAUTH_USERNAME:
     result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME],
                             va_arg(param, char *));
-    if(data->set.str[STRING_TLSAUTH_USERNAME] && !data->set.ssl.authtype)
-      data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
+    if(data->set.str[STRING_TLSAUTH_USERNAME] &&
+       !data->set.ssl.primary.authtype)
+      data->set.ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
     break;
+#ifndef CURL_DISABLE_PROXY
   case CURLOPT_PROXY_TLSAUTH_USERNAME:
     result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_USERNAME_PROXY],
                             va_arg(param, char *));
-#ifndef CURL_DISABLE_PROXY
     if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
-       !data->set.proxy_ssl.authtype)
-      data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
-#endif
+       !data->set.proxy_ssl.primary.authtype)
+      data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default to
+                                                                  SRP */
     break;
+#endif
   case CURLOPT_TLSAUTH_PASSWORD:
     result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD],
                             va_arg(param, char *));
-    if(data->set.str[STRING_TLSAUTH_USERNAME] && !data->set.ssl.authtype)
-      data->set.ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
+    if(data->set.str[STRING_TLSAUTH_USERNAME] &&
+       !data->set.ssl.primary.authtype)
+      data->set.ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default */
     break;
+#ifndef CURL_DISABLE_PROXY
   case CURLOPT_PROXY_TLSAUTH_PASSWORD:
     result = Curl_setstropt(&data->set.str[STRING_TLSAUTH_PASSWORD_PROXY],
                             va_arg(param, char *));
-#ifndef CURL_DISABLE_PROXY
     if(data->set.str[STRING_TLSAUTH_USERNAME_PROXY] &&
-       !data->set.proxy_ssl.authtype)
-      data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP; /* default to SRP */
-#endif
+       !data->set.proxy_ssl.primary.authtype)
+      data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_SRP; /* default */
     break;
+#endif
   case CURLOPT_TLSAUTH_TYPE:
     argptr = va_arg(param, char *);
     if(!argptr ||
        strncasecompare(argptr, "SRP", strlen("SRP")))
-      data->set.ssl.authtype = CURL_TLSAUTH_SRP;
+      data->set.ssl.primary.authtype = CURL_TLSAUTH_SRP;
     else
-      data->set.ssl.authtype = CURL_TLSAUTH_NONE;
+      data->set.ssl.primary.authtype = CURL_TLSAUTH_NONE;
     break;
 #ifndef CURL_DISABLE_PROXY
   case CURLOPT_PROXY_TLSAUTH_TYPE:
     argptr = va_arg(param, char *);
     if(!argptr ||
        strncasecompare(argptr, "SRP", strlen("SRP")))
-      data->set.proxy_ssl.authtype = CURL_TLSAUTH_SRP;
+      data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_SRP;
     else
-      data->set.proxy_ssl.authtype = CURL_TLSAUTH_NONE;
+      data->set.proxy_ssl.primary.authtype = CURL_TLSAUTH_NONE;
     break;
 #endif
 #endif
@@ -2849,13 +2902,17 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     arg = va_arg(param, long);
     if(arg < 0)
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.tcp_keepidle = arg;
+    else if(arg > INT_MAX)
+      arg = INT_MAX;
+    data->set.tcp_keepidle = (int)arg;
     break;
   case CURLOPT_TCP_KEEPINTVL:
     arg = va_arg(param, long);
     if(arg < 0)
       return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.tcp_keepintvl = arg;
+    else if(arg > INT_MAX)
+      arg = INT_MAX;
+    data->set.tcp_keepintvl = (int)arg;
     break;
   case CURLOPT_TCP_FASTOPEN:
 #if defined(CONNECT_DATA_IDEMPOTENT) || defined(MSG_FASTOPEN) || \
@@ -2866,7 +2923,6 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
 #endif
     break;
   case CURLOPT_SSL_ENABLE_NPN:
-    data->set.ssl_enable_npn = (0 != va_arg(param, long)) ? TRUE : FALSE;
     break;
   case CURLOPT_SSL_ENABLE_ALPN:
     data->set.ssl_enable_alpn = (0 != va_arg(param, long)) ? TRUE : FALSE;
@@ -2922,10 +2978,10 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
     data->set.suppress_connect_headers = (0 != va_arg(param, long))?TRUE:FALSE;
     break;
   case CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS:
-    arg = va_arg(param, long);
-    if(arg < 0)
-      return CURLE_BAD_FUNCTION_ARGUMENT;
-    data->set.happy_eyeballs_timeout = arg;
+    uarg = va_arg(param, unsigned long);
+    if(uarg >= UINT_MAX)
+      uarg = UINT_MAX;
+    data->set.happy_eyeballs_timeout = (unsigned int)uarg;
     break;
 #ifndef CURL_DISABLE_SHUFFLE_DNS
   case CURLOPT_DNS_SHUFFLE_ADDRESSES:
@@ -3042,6 +3098,15 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option, va_list param)
   case CURLOPT_PREREQDATA:
     data->set.prereq_userp = va_arg(param, void *);
     break;
+#ifdef USE_WEBSOCKETS
+  case CURLOPT_WS_OPTIONS: {
+    bool raw;
+    arg = va_arg(param, long);
+    raw = (arg & CURLWS_RAW_MODE);
+    data->set.ws_raw_mode = raw;
+    break;
+  }
+#endif
   default:
     /* unknown tag and its companion, just ignore: */
     result = CURLE_UNKNOWN_OPTION;
index affbfd9960c5e775b14e4a6804f691dbf94eabff..ffc77a71dcda4a7ad25223e103ed505390b35acc 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 CURLcode Curl_setstropt(char **charp, const char *s);
index 8c97371e4dea28a2247e7fb986cbd7119a58fe9b..6023ca20ded165bf7302f2939d241d103ab8725a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 
index a6710d907642984858a14d6c758ec46aeed40837..b570683d789a83aedc8cf635fd690747bef04347 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*                                                                         */
index fa8742f3b1faaeb112835fa0f68eff6f07f8f7c6..bc5f8efc3c6c8627306cc3d39124b3c5752a7f2e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
 
 #ifdef HAVE_WINDOWS_H
 #  if defined(UNICODE) && !defined(_UNICODE)
-#    define _UNICODE
+#    error "UNICODE is defined but _UNICODE is not defined"
 #  endif
 #  if defined(_UNICODE) && !defined(UNICODE)
-#    define UNICODE
+#    error "_UNICODE is defined but UNICODE is not defined"
+#  endif
+/*
+ * Don't include unneeded stuff in Windows headers to avoid compiler
+ * warnings and macro clashes.
+ * Make sure to define this macro before including any Windows headers.
+ */
+#  ifndef WIN32_LEAN_AND_MEAN
+#    define WIN32_LEAN_AND_MEAN
+#  endif
+#  ifndef NOGDI
+#    define NOGDI
 #  endif
 #  include <winerror.h>
 #  include <windows.h>
index cf7ea4f54366d98c79356736a4db25e97f4dfac9..60720f5b138d254b19e771f0347e3a1744c3a26c 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com>
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
@@ -19,6 +19,8 @@
  * 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"
@@ -40,7 +42,7 @@
 
 #include <openssl/opensslv.h>
 
-#if (OPENSSL_VERSION_NUMBER >= 0x0090700fL)
+#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
 #define USE_OPENSSL_SHA256
 #endif
 
 
 #if defined(USE_OPENSSL_SHA256)
 
-/* When OpenSSL is available we use the SHA256-function from OpenSSL */
+/* When OpenSSL or wolfSSL is available is available we use their
+ * SHA256-functions.
+ */
+#if defined(USE_OPENSSL)
 #include <openssl/evp.h>
+#elif defined(USE_WOLFSSL)
+#include <wolfssl/openssl/evp.h>
+#endif
 
 #include "curl_memory.h"
 
index 403563fdd6e6291d464349648296e14f22e119d8..1a083e72a085f2160dcc7fbe828331318e359149 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -39,7 +41,7 @@ curl_share_init(void)
   if(share) {
     share->magic = CURL_GOOD_SHARE;
     share->specifier |= (1<<CURL_LOCK_DATA_SHARE);
-    Curl_init_dnscache(&share->hostcache);
+    Curl_init_dnscache(&share->hostcache, 23);
   }
 
   return share;
index 222e34ba6ea0abe5b169abeacdbbb63e9fc77041..32be41691a2f974785d0c4f5062df50283761001 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index d6ec5fca3c1ce329d8f178a1b5240e14fa1ced7c..d12b31764d06ab04f7b3e600da8910c893fdde40 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 907c203f3823e3e46eec6298e06bfb911df2c81d..6c80722c77d69b010e4c048ea27c8bc2264bfc08 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 3114259cfe0ffc0f4814fde51cbff0e046ed6e4e..4e5834c90a15617e54e7fa9b092ff221668b84d8 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index fd49cf6aaf6ebed63087504146dc8b4ad0f85034..a62e858143bce0bbd45580ac83a6e0e88bdddc42 100644 (file)
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2016 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2016 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * 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"
@@ -32,7 +34,7 @@
 #include <process.h>
 #ifdef CURL_WINDOWS_APP
 #define getpid GetCurrentProcessId
-#elif !defined(MSDOS)
+#elif defined(WIN32)
 #define getpid _getpid
 #endif
 #endif
@@ -262,7 +264,7 @@ static CURLcode smb_connect(struct Curl_easy *data, bool *done)
   (void) done;
 
   /* Check we have a username and password to authenticate with */
-  if(!conn->bits.user_passwd)
+  if(!data->state.aptr.user)
     return CURLE_LOGIN_DENIED;
 
   /* Initialize the connection state */
@@ -299,6 +301,7 @@ static CURLcode smb_connect(struct Curl_easy *data, bool *done)
 static CURLcode smb_recv_message(struct Curl_easy *data, void **msg)
 {
   struct connectdata *conn = data->conn;
+  curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
   struct smb_conn *smbc = &conn->proto.smbc;
   char *buf = smbc->recv_buf;
   ssize_t bytes_read;
@@ -307,7 +310,7 @@ static CURLcode smb_recv_message(struct Curl_easy *data, void **msg)
   size_t len = MAX_MESSAGE_SIZE - smbc->got;
   CURLcode result;
 
-  result = Curl_read(data, FIRSTSOCKET, buf + smbc->got, len, &bytes_read);
+  result = Curl_read(data, sockfd, buf + smbc->got, len, &bytes_read);
   if(result)
     return result;
 
@@ -377,11 +380,12 @@ static CURLcode smb_send(struct Curl_easy *data, ssize_t len,
                          size_t upload_size)
 {
   struct connectdata *conn = data->conn;
+  curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
   struct smb_conn *smbc = &conn->proto.smbc;
   ssize_t bytes_written;
   CURLcode result;
 
-  result = Curl_write(data, FIRSTSOCKET, data->state.ulbuf,
+  result = Curl_write(data, sockfd, data->state.ulbuf,
                       len, &bytes_written);
   if(result)
     return result;
@@ -399,6 +403,7 @@ static CURLcode smb_send(struct Curl_easy *data, ssize_t len,
 static CURLcode smb_flush(struct Curl_easy *data)
 {
   struct connectdata *conn = data->conn;
+  curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
   struct smb_conn *smbc = &conn->proto.smbc;
   ssize_t bytes_written;
   ssize_t len = smbc->send_size - smbc->sent;
@@ -407,7 +412,7 @@ static CURLcode smb_flush(struct Curl_easy *data)
   if(!smbc->send_size)
     return CURLE_OK;
 
-  result = Curl_write(data, FIRSTSOCKET,
+  result = Curl_write(data, sockfd,
                       data->state.ulbuf + smbc->sent,
                       len, &bytes_written);
   if(result)
@@ -459,14 +464,10 @@ static CURLcode smb_send_setup(struct Curl_easy *data)
   if(byte_count > sizeof(msg.bytes))
     return CURLE_FILESIZE_EXCEEDED;
 
-  Curl_ntlm_core_mk_lm_hash(data, conn->passwd, lm_hash);
+  Curl_ntlm_core_mk_lm_hash(conn->passwd, lm_hash);
   Curl_ntlm_core_lm_resp(lm_hash, smbc->challenge, lm);
-#ifdef USE_NTRESPONSES
-  Curl_ntlm_core_mk_nt_hash(data, conn->passwd, nt_hash);
+  Curl_ntlm_core_mk_nt_hash(conn->passwd, nt_hash);
   Curl_ntlm_core_lm_resp(nt_hash, smbc->challenge, nt);
-#else
-  memset(nt, 0, sizeof(nt));
-#endif
 
   memset(&msg, 0, sizeof(msg));
   msg.word_count = SMB_WC_SETUP_ANDX;
@@ -989,7 +990,7 @@ static CURLcode smb_parse_url_path(struct Curl_easy *data,
   char *slash;
 
   /* URL decode the path */
-  CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &path, NULL,
+  CURLcode result = Curl_urldecode(data->state.up.path, 0, &path, NULL,
                                    REJECT_CTRL);
   if(result)
     return result;
index 0e3c2ec112aeb34bfaa84c4717962370c61a85d8..919f3ac142e3d5bcdec5d73d7249ea3dcb7bd005 100644 (file)
--- a/lib/smb.h
+++ b/lib/smb.h
@@ -7,8 +7,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies
+ * Copyright (C) 2018 - 2022, 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
@@ -21,6 +21,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 enum smb_conn_state {
index 6c0829378350eb7ecb7906acc8e94634bbe39e85..6ebb41af6699311c2330de05040f532103920975 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC1870 SMTP Service Extension for Message Size
  * RFC2195 CRAM-MD5 authentication
  * RFC2831 DIGEST-MD5 authentication
@@ -492,7 +494,7 @@ static CURLcode smtp_perform_authentication(struct Curl_easy *data)
   /* Check we have enough data to authenticate with, and the
      server supports authentication, and end the connect phase if not */
   if(!smtpc->auth_supported ||
-     !Curl_sasl_can_authenticate(&smtpc->sasl, conn)) {
+     !Curl_sasl_can_authenticate(&smtpc->sasl, data)) {
     state(data, SMTP_STOP);
     return result;
   }
@@ -505,7 +507,7 @@ static CURLcode smtp_perform_authentication(struct Curl_easy *data)
       state(data, SMTP_AUTH);
     else {
       /* Other mechanisms not supported */
-      infof(data, "No known authentication mechanisms supported!");
+      infof(data, "No known authentication mechanisms supported");
       result = CURLE_LOGIN_DENIED;
     }
   }
@@ -698,7 +700,7 @@ static CURLcode smtp_perform_mail(struct Curl_easy *data)
                                        NULL, MIMESTRATEGY_MAIL);
 
     if(!result)
-      if(!Curl_checkheaders(data, "Mime-Version"))
+      if(!Curl_checkheaders(data, STRCONST("Mime-Version")))
         result = Curl_mime_add_header(&data->set.mimepost.curlheaders,
                                       "Mime-Version: 1.0");
 
@@ -1037,7 +1039,7 @@ static CURLcode smtp_state_command_resp(struct Curl_easy *data, int smtpcode,
   if((smtp->rcpt && smtpcode/100 != 2 && smtpcode != 553 && smtpcode != 1) ||
      (!smtp->rcpt && smtpcode/100 != 2 && smtpcode != 1)) {
     failf(data, "Command failed: %d", smtpcode);
-    result = CURLE_RECV_ERROR;
+    result = CURLE_WEIRD_SERVER_REPLY;
   }
   else {
     /* Temporarily add the LF character back and send as body to the client */
@@ -1182,7 +1184,7 @@ static CURLcode smtp_state_postdata_resp(struct Curl_easy *data,
   (void)instate; /* no use for this yet */
 
   if(smtpcode != 250)
-    result = CURLE_RECV_ERROR;
+    result = CURLE_WEIRD_SERVER_REPLY;
 
   /* End of DONE phase */
   state(data, SMTP_STOP);
@@ -1724,8 +1726,7 @@ static CURLcode smtp_parse_url_path(struct Curl_easy *data)
   }
 
   /* URL decode the path and use it as the domain in our EHLO */
-  return Curl_urldecode(data, path, 0, &smtpc->domain, NULL,
-                        REJECT_CTRL);
+  return Curl_urldecode(path, 0, &smtpc->domain, NULL, REJECT_CTRL);
 }
 
 /***********************************************************************
@@ -1742,7 +1743,7 @@ static CURLcode smtp_parse_custom_request(struct Curl_easy *data)
 
   /* URL decode the custom request */
   if(custom)
-    result = Curl_urldecode(data, custom, 0, &smtp->custom, NULL, REJECT_CTRL);
+    result = Curl_urldecode(custom, 0, &smtp->custom, NULL, REJECT_CTRL);
 
   return result;
 }
@@ -1819,7 +1820,9 @@ static CURLcode smtp_parse_address(struct Curl_easy *data, const char *fqma,
   return result;
 }
 
-CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread)
+CURLcode Curl_smtp_escape_eob(struct Curl_easy *data,
+                              const ssize_t nread,
+                              const ssize_t offset)
 {
   /* When sending a SMTP payload we must detect CRLF. sequences making sure
      they are sent as CRLF.. instead, as a . on the beginning of a line will
@@ -1841,7 +1844,7 @@ CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread)
 
     scratch = newscratch = malloc(2 * data->set.upload_buffer_size);
     if(!newscratch) {
-      failf(data, "Failed to alloc scratch buffer!");
+      failf(data, "Failed to alloc scratch buffer");
 
       return CURLE_OUT_OF_MEMORY;
     }
@@ -1853,7 +1856,9 @@ CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread)
 
   /* This loop can be improved by some kind of Boyer-Moore style of
      approach but that is saved for later... */
-  for(i = 0, si = 0; i < nread; i++) {
+  if(offset)
+    memcpy(scratch, data->req.upload_fromhere, offset);
+  for(i = offset, si = offset; i < nread; i++) {
     if(SMTP_EOB[smtp->eob] == data->req.upload_fromhere[i]) {
       smtp->eob++;
 
index 1fe45346ee98369498395d1e1ca2b9c149f91bb8..24c5589e439052121818346b16332cd063c74729 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2009 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2009 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "pingpong.h"
@@ -91,6 +93,8 @@ extern const struct Curl_handler Curl_handler_smtps;
 #define SMTP_EOB_REPL "\x0d\x0a\x2e\x2e"
 #define SMTP_EOB_REPL_LEN 4
 
-CURLcode Curl_smtp_escape_eob(struct Curl_easy *data, const ssize_t nread);
+CURLcode Curl_smtp_escape_eob(struct Curl_easy *data,
+                              const ssize_t nread,
+                              const ssize_t offset);
 
 #endif /* HEADER_CURL_SMTP_H */
index 84c08d9bb55455322798505de6a6c23c318fe431..77ec833ee05dc9e20f98bf4baaff4a02a3474ae9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 409d2ad6671d3e822082d22981ff44c23c24e3cc..0f8798f087d7b836364d1586e6aedb26b95ba5b0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index cdcc0b921eb42162d27ca6c7b9f619c21abcf8ed..de70df673aad898270661d5ac3bdb8c540768b28 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
  * 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"
 #ifndef HAVE_SOCKETPAIR
+#include <curl/curl.h>
+
 int Curl_socketpair(int domain, int type, int protocol,
                     curl_socket_t socks[2]);
 #else
index a014aa6684c458d8c05e4dbd77c16f2c8e9ca062..52c29880a67c17669c0666f97b535265f5ab82fb 100644 (file)
@@ -18,6 +18,8 @@
  * 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"
@@ -326,7 +328,7 @@ CURLproxycode Curl_SOCKS4(const char *proxy_user,
     if(proxy_user) {
       size_t plen = strlen(proxy_user);
       if(plen >= (size_t)data->set.buffer_size - 8) {
-        failf(data, "Too long SOCKS proxy user name, can't use!");
+        failf(data, "Too long SOCKS proxy user name, can't use");
         return CURLPX_LONG_USER;
       }
       /* copy the proxy name WITH trailing zero */
index b0c7f9b26b4654f02ab91fd6e89c5062d23ef05e..ff83aa5614068fdecd9a619a370ff58b0c052c5b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -69,7 +71,7 @@ CURLproxycode Curl_SOCKS5(const char *proxy_name,
 
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
 /*
- * This function handles the SOCKS5 GSS-API negotiation and initialisation
+ * This function handles the SOCKS5 GSS-API negotiation and initialization
  */
 CURLcode Curl_SOCKS5_gssapi_negotiate(int sockindex,
                                       struct Curl_easy *data);
index 8ef2f8f37402b601561c54de28a16d1b36a086e0..f14099febfe69d8c087e9e86c3faac2e7c139561 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2009, Markus Moeller, <markus_moeller@compuserve.com>
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012, Markus Moeller, <markus_moeller@compuserve.com>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
  * 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"
@@ -51,7 +53,7 @@ static int check_gss_err(struct Curl_easy *data,
   if(GSS_ERROR(major_status)) {
     OM_uint32 maj_stat, min_stat;
     OM_uint32 msg_ctx = 0;
-    gss_buffer_desc status_string;
+    gss_buffer_desc status_string = GSS_C_EMPTY_BUFFER;
     char buf[1024];
     size_t len;
 
index ffc8703468fadb7ee27563d551168b00f3e6dc52..210a0dfbc52cc6675ec3e97d2e930b0fdb2f5e77 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2009, 2011, Markus Moeller, <markus_moeller@compuserve.com>
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012, 2011, Markus Moeller, <markus_moeller@compuserve.com>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
  * 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"
index 841d256b484a26510cb7e77c6ef3e37280101221..3ddc43d2de8af35951f18b23fe291a93fcec62e8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 1d4c7bfeff213baa3c3da66d7c5fded922867cb2..cb44eb04ec0b91e4bc9253851b0021db050d9fe1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index bcc0795212a9066482d5b1212cacbbedf48c27b2..33b44aa1c6f5d3ed621465cb967577dac532d6e5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1997 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -101,7 +103,7 @@ struct Curl_tree *Curl_splayinsert(struct curltime i,
                                    struct Curl_tree *node)
 {
   static const struct curltime KEY_NOTUSED = {
-    (time_t)-1, (unsigned int)-1
+    ~0, -1
   }; /* will *NEVER* appear */
 
   if(!node)
@@ -211,7 +213,7 @@ int Curl_splayremove(struct Curl_tree *t,
                      struct Curl_tree **newroot)
 {
   static const struct curltime KEY_NOTUSED = {
-    (time_t)-1, (unsigned int)-1
+    ~0, -1
   }; /* will *NEVER* appear */
   struct Curl_tree *x;
 
index eb9f65f1e07e491b2ba17475a0d20511fed48442..015e2ca52f4e7aba786d80d68b9ab5f7996fbb46 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1997 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1997 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 #include "timeval.h"
index 955e3c79eadb00e225d994d6b8d38fc85694bcb6..09d2a8a9610d2a22085bd0763d79fe8a52a7dc95 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
 #include "strcase.h"
 
-static char raw_tolower(char in);
-
-/* Portable, consistent toupper (remember EBCDIC). Do not use toupper() because
-   its behavior is altered by the current locale. */
+/* Mapping table to go from lowercase to uppercase for plain ASCII.*/
+static const unsigned char touppermap[256] = {
+0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 65,
+66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+85, 86, 87, 88, 89, 90, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+246, 247, 248, 249, 250, 251, 252, 253, 254, 255
+};
+
+/* Mapping table to go from uppercase to lowercase for plain ASCII.*/
+static const unsigned char tolowermap[256] = {
+0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95,
+96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
+};
+
+
+/* Portable, consistent toupper. Do not use toupper() because its behavior is
+   altered by the current locale. */
 char Curl_raw_toupper(char in)
 {
-#if !defined(CURL_DOES_CONVERSIONS)
-  if(in >= 'a' && in <= 'z')
-    return (char)('A' + in - 'a');
-#else
-  switch(in) {
-  case 'a':
-    return 'A';
-  case 'b':
-    return 'B';
-  case 'c':
-    return 'C';
-  case 'd':
-    return 'D';
-  case 'e':
-    return 'E';
-  case 'f':
-    return 'F';
-  case 'g':
-    return 'G';
-  case 'h':
-    return 'H';
-  case 'i':
-    return 'I';
-  case 'j':
-    return 'J';
-  case 'k':
-    return 'K';
-  case 'l':
-    return 'L';
-  case 'm':
-    return 'M';
-  case 'n':
-    return 'N';
-  case 'o':
-    return 'O';
-  case 'p':
-    return 'P';
-  case 'q':
-    return 'Q';
-  case 'r':
-    return 'R';
-  case 's':
-    return 'S';
-  case 't':
-    return 'T';
-  case 'u':
-    return 'U';
-  case 'v':
-    return 'V';
-  case 'w':
-    return 'W';
-  case 'x':
-    return 'X';
-  case 'y':
-    return 'Y';
-  case 'z':
-    return 'Z';
-  }
-#endif
-
-  return in;
+  return touppermap[(unsigned char) in];
 }
 
 
-/* Portable, consistent tolower (remember EBCDIC). Do not use tolower() because
-   its behavior is altered by the current locale. */
-static char raw_tolower(char in)
+/* Portable, consistent tolower. Do not use tolower() because its behavior is
+   altered by the current locale. */
+char Curl_raw_tolower(char in)
 {
-#if !defined(CURL_DOES_CONVERSIONS)
-  if(in >= 'A' && in <= 'Z')
-    return (char)('a' + in - 'A');
-#else
-  switch(in) {
-  case 'A':
-    return 'a';
-  case 'B':
-    return 'b';
-  case 'C':
-    return 'c';
-  case 'D':
-    return 'd';
-  case 'E':
-    return 'e';
-  case 'F':
-    return 'f';
-  case 'G':
-    return 'g';
-  case 'H':
-    return 'h';
-  case 'I':
-    return 'i';
-  case 'J':
-    return 'j';
-  case 'K':
-    return 'k';
-  case 'L':
-    return 'l';
-  case 'M':
-    return 'm';
-  case 'N':
-    return 'n';
-  case 'O':
-    return 'o';
-  case 'P':
-    return 'p';
-  case 'Q':
-    return 'q';
-  case 'R':
-    return 'r';
-  case 'S':
-    return 's';
-  case 'T':
-    return 't';
-  case 'U':
-    return 'u';
-  case 'V':
-    return 'v';
-  case 'W':
-    return 'w';
-  case 'X':
-    return 'x';
-  case 'Y':
-    return 'y';
-  case 'Z':
-    return 'z';
-  }
-#endif
-
-  return in;
+  return tolowermap[(unsigned char) in];
 }
 
-
 /*
  * Curl_strcasecompare() is for doing "raw" case insensitive strings. This is
  * meant to be locale independent and only compare strings we know are safe
@@ -171,9 +89,6 @@ static char raw_tolower(char in)
  * https://daniel.haxx.se/blog/2008/10/15/strcasecmp-in-turkish/ for some
  * further explanation to why this function is necessary.
  *
- * The function is capable of comparing a-z case insensitively even for
- * non-ascii.
- *
  * @unittest: 1301
  */
 
@@ -182,14 +97,15 @@ int Curl_strcasecompare(const char *first, const char *second)
   while(*first && *second) {
     if(Curl_raw_toupper(*first) != Curl_raw_toupper(*second))
       /* get out of the loop as soon as they don't match */
-      break;
+      return 0;
     first++;
     second++;
   }
-  /* we do the comparison here (possibly again), just to make sure that if the
-     loop above is skipped because one of the strings reached zero, we must not
-     return this as a successful match */
-  return (Curl_raw_toupper(*first) == Curl_raw_toupper(*second));
+  /* If we're here either the strings are the same or the length is different.
+     We can just test if the "current" character is non-zero for one and zero
+     for the other. Note that the characters may not be exactly the same even
+     if they match, we only want to compare zero-ness. */
+  return !*first == !*second;
 }
 
 int Curl_safe_strcasecompare(const char *first, const char *second)
@@ -247,10 +163,42 @@ void Curl_strntolower(char *dest, const char *src, size_t n)
     return;
 
   do {
-    *dest++ = raw_tolower(*src);
+    *dest++ = Curl_raw_tolower(*src);
   } while(*src++ && --n);
 }
 
+/* Compare case-sensitive NUL-terminated strings, taking care of possible
+ * null pointers. Return true if arguments match.
+ */
+bool Curl_safecmp(char *a, char *b)
+{
+  if(a && b)
+    return !strcmp(a, b);
+  return !a && !b;
+}
+
+/*
+ * Curl_timestrcmp() returns 0 if the two strings are identical. The time this
+ * function spends is a function of the shortest string, not of the contents.
+ */
+int Curl_timestrcmp(const char *a, const char *b)
+{
+  int match = 0;
+  int i = 0;
+
+  if(a && b) {
+    while(1) {
+      match |= a[i]^b[i];
+      if(!a[i] || !b[i])
+        break;
+      i++;
+    }
+  }
+  else
+    return a || b;
+  return match;
+}
+
 /* --- public functions --- */
 
 int curl_strequal(const char *first, const char *second)
index 10dc6988174f420ff60f4c40b16a3714f5e96194..65a575385df771a4e7c2535b9c236da5976903d4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <curl/curl.h>
@@ -28,8 +30,9 @@
  * Only "raw" case insensitive strings. This is meant to be locale independent
  * and only compare strings we know are safe for this.
  *
- * The function is capable of comparing a-z case insensitively even for
- * non-ascii.
+ * The function is capable of comparing a-z case insensitively.
+ *
+ * Result is 1 if text matches and 0 if not.
  */
 
 #define strcasecompare(a,b) Curl_strcasecompare(a,b)
@@ -40,12 +43,16 @@ int Curl_safe_strcasecompare(const char *first, const char *second);
 int Curl_strncasecompare(const char *first, const char *second, size_t max);
 
 char Curl_raw_toupper(char in);
+char Curl_raw_tolower(char in);
 
 /* checkprefix() is a shorter version of the above, used when the first
-   argument is zero-byte terminated */
-#define checkprefix(a,b)    curl_strnequal(a,b,strlen(a))
+   argument is the string literal */
+#define checkprefix(a,b)    curl_strnequal(b, STRCONST(a))
 
 void Curl_strntoupper(char *dest, const char *src, size_t n);
 void Curl_strntolower(char *dest, const char *src, size_t n);
 
+bool Curl_safecmp(char *a, char *b);
+int Curl_timestrcmp(const char *first, const char *second);
+
 #endif /* HEADER_CURL_STRCASE_H */
index 85cf33b3edbb526a31de50882d7fe73aadd34595..ac22b6ddafe0de039c7f6314cd089dfb290ebeb7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 8c8a6f20e1c110334329a8902e5ea13e8e56ed91..fb46808b8386efa78c4ba4c31739a679062c22f9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 07d73a74b7f6b116c783955494cdf657e1ae5655..b9a51e26b96bd69db2ff0fbd2e38e37271345dd3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2004 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2022, 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
  * 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 HAVE_STRERROR_R
 #  if (!defined(HAVE_POSIX_STRERROR_R) && \
-       !defined(HAVE_GLIBC_STRERROR_R) && \
-       !defined(HAVE_VXWORKS_STRERROR_R)) || \
-      (defined(HAVE_POSIX_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)) || \
-      (defined(HAVE_GLIBC_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)) || \
+       !defined(HAVE_GLIBC_STRERROR_R)) || \
       (defined(HAVE_POSIX_STRERROR_R) && defined(HAVE_GLIBC_STRERROR_R))
-#    error "strerror_r MUST be either POSIX, glibc or vxworks-style"
+#    error "strerror_r MUST be either POSIX, glibc style"
 #  endif
 #endif
 
@@ -224,9 +223,6 @@ curl_easy_strerror(CURLcode error)
   case CURLE_BAD_CONTENT_ENCODING:
     return "Unrecognized or bad HTTP Content or Transfer-Encoding";
 
-  case CURLE_LDAP_INVALID_URL:
-    return "Invalid LDAP URL";
-
   case CURLE_FILESIZE_EXCEEDED:
     return "Maximum file size exceeded";
 
@@ -269,12 +265,6 @@ curl_easy_strerror(CURLcode error)
   case CURLE_TFTP_NOSUCHUSER:
     return "TFTP: No such user";
 
-  case CURLE_CONV_FAILED:
-    return "Conversion failed";
-
-  case CURLE_CONV_REQD:
-    return "Caller must register CURLOPT_CONV_ callback options";
-
   case CURLE_REMOTE_FILE_NOT_FOUND:
     return "Remote file not found";
 
@@ -326,6 +316,9 @@ curl_easy_strerror(CURLcode error)
   case CURLE_SSL_CLIENTCERT:
     return "SSL Client Certificate required";
 
+  case CURLE_UNRECOVERABLE_POLL:
+    return "Unrecoverable error in select/poll";
+
     /* error codes not used by current libcurl */
   case CURLE_OBSOLETE20:
   case CURLE_OBSOLETE24:
@@ -337,6 +330,9 @@ curl_easy_strerror(CURLcode error)
   case CURLE_OBSOLETE50:
   case CURLE_OBSOLETE51:
   case CURLE_OBSOLETE57:
+  case CURLE_OBSOLETE62:
+  case CURLE_OBSOLETE75:
+  case CURLE_OBSOLETE76:
   case CURL_LAST:
     break;
   }
@@ -407,6 +403,9 @@ curl_multi_strerror(CURLMcode error)
   case CURLM_ABORTED_BY_CALLBACK:
     return "Operation was aborted by an application callback";
 
+  case CURLM_UNRECOVERABLE_POLL:
+    return "Unrecoverable error in select/poll";
+
   case CURLM_LAST:
     break;
   }
@@ -477,7 +476,7 @@ curl_url_strerror(CURLUcode error)
     return "Port number was not a decimal number between 0 and 65535";
 
   case CURLUE_UNSUPPORTED_SCHEME:
-    return "This libcurl build doesn't support the given URL scheme";
+    return "Unsupported URL scheme";
 
   case CURLUE_URLDECODE:
     return "URL decode error, most likely because of rubbish in the input";
@@ -531,7 +530,7 @@ curl_url_strerror(CURLUcode error)
     return "Bad file:// URL";
 
   case CURLUE_BAD_SLASHES:
-    return "Unsupported number of slashes";
+    return "Unsupported number of slashes following scheme";
 
   case CURLUE_BAD_SCHEME:
     return "Bad scheme";
@@ -883,18 +882,6 @@ const char *Curl_strerror(int err, char *buf, size_t buflen)
     else
       msnprintf(buf, max, "Unknown error %d", err);
   }
-#elif defined(HAVE_STRERROR_R) && defined(HAVE_VXWORKS_STRERROR_R)
- /*
-  * The vxworks-style strerror_r() does use the buffer we pass to the function.
-  * The buffer size should be at least NAME_MAX (256)
-  */
-  {
-    char buffer[256];
-    if(OK == strerror_r(err, buffer))
-      strncpy(buf, buffer, max);
-    else
-      msnprintf(buf, max, "Unknown error %d", err);
-  }
 #else
   {
     /* !checksrc! disable STRERROR 1 */
index 96a7e27c51ad03f9b77fa2f6640fb4bbeeb85e73..658f16c10e6a3face8f328bf2e9e240f84e1e100 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "urldata.h"
index d53e587ab308aad16dad022c6130ad97a2bea772..6120bcc28eb24d21a2aabde905bc650e25448762 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 831ef0c009fa6ed757061e06f1892b028b79ddfb..641a3daed89d28db0ad2f025412057d7a153440b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 #include <stddef.h>
index ac87cfc5bdae385770f71fb5b9df00f371d1e920..30deb8c05b290b2581555877a045736fac719b7c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <errno.h>
@@ -85,7 +87,7 @@ static curl_off_t strtooff(const char *nptr, char **endptr, int base)
 
   /* Skip leading whitespace. */
   end = (char *)nptr;
-  while(ISSPACE(end[0])) {
+  while(ISBLANK(end[0])) {
     end++;
   }
 
@@ -220,9 +222,9 @@ CURLofft curlx_strtoofft(const char *str, char **endp, int base,
   errno = 0;
   *num = 0; /* clear by default */
 
-  while(*str && ISSPACE(*str))
+  while(*str && ISBLANK(*str))
     str++;
-  if('-' == *str) {
+  if(('-' == *str) || (ISSPACE(*str))) {
     if(endp)
       *endp = (char *)str; /* didn't actually move */
     return CURL_OFFT_INVAL; /* nothing parsed */
index 4d22ba36c970817063efcc9bab14737e8449ff72..311dae4403cf49adaaa8905de9c322b05a0371ae 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 9a6dd9cef6f6d490decefa8e95c712197e32b3ab..bede9c7dcdb60e18222d40304fdb91692c8cc1e8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2016 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
index 69e0c812c08b543c5fc7a8cfed0b4c0f9e47ff02..167804e3c5fca8e913d4edaa49673681785abba5 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2016 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
  * 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"
index a81bb81c3675ac47fa5b94c1e16bd49ca27d2db5..923c7f82bd1fb3b750ff93151c9396549f35074e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -687,7 +689,7 @@ static void printsub(struct Curl_easy *data,
             infof(data, "%s", CURL_TELCMD(j));
           else
             infof(data, "%d", j);
-          infof(data, ", not IAC SE!) ");
+          infof(data, ", not IAC SE) ");
         }
       }
       length -= 2;
@@ -781,7 +783,7 @@ static CURLcode check_telnet_options(struct Curl_easy *data)
 
   /* Add the user name as an environment variable if it
      was given on the command line */
-  if(conn->bits.user_passwd) {
+  if(data->state.aptr.user) {
     msnprintf(option_arg, sizeof(option_arg), "USER,%s", conn->user);
     beg = curl_slist_append(tn->telnet_vars, option_arg);
     if(!beg) {
index 1427473a9f93b8329824d3efa5e2847c60b8ce91..6dd99b48dcf0d6d5503339469cb99fd55471063d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifndef CURL_DISABLE_TELNET
 extern const struct Curl_handler Curl_handler_telnet;
index f8c68441cac97b0251e1cdaf2de35399ccb5ecd0..9e6d9490ed34d35ac6111f2755a8981a3a283a0c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -327,7 +329,7 @@ static CURLcode tftp_parse_option_ack(struct tftp_state_data *state,
 
     infof(data, "got option=(%s) value=(%s)", option, value);
 
-    if(checkprefix(option, TFTP_OPTION_BLKSIZE)) {
+    if(checkprefix(TFTP_OPTION_BLKSIZE, option)) {
       long blksize;
 
       blksize = strtol(value, NULL, 10);
@@ -359,7 +361,7 @@ static CURLcode tftp_parse_option_ack(struct tftp_state_data *state,
       infof(data, "%s (%d) %s (%d)", "blksize parsed from OACK",
             state->blksize, "requested", state->requested_blksize);
     }
-    else if(checkprefix(option, TFTP_OPTION_TSIZE)) {
+    else if(checkprefix(TFTP_OPTION_TSIZE, option)) {
       long tsize = 0;
 
       tsize = strtol(value, NULL, 10);
@@ -463,7 +465,7 @@ static CURLcode tftp_send_first(struct tftp_state_data *state,
     /* As RFC3617 describes the separator slash is not actually part of the
        file name so we skip the always-present first letter of the path
        string. */
-    result = Curl_urldecode(data, &state->data->state.up.path[1], 0,
+    result = Curl_urldecode(&state->data->state.up.path[1], 0,
                             &filename, NULL, REJECT_ZERO);
     if(result)
       return result;
index 4b5bea2757d51f8a0c7b7e1fef39d8644f72049b..3f1fda6382b5e4879127f3d69a117d41a0c8efe4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifndef CURL_DISABLE_TFTP
 extern const struct Curl_handler Curl_handler_tftp;
diff --git a/lib/timediff.c b/lib/timediff.c
new file mode 100644 (file)
index 0000000..c589318
--- /dev/null
@@ -0,0 +1,88 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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 "timediff.h"
+
+#include <limits.h>
+
+/*
+ * Converts number of milliseconds into a timeval structure.
+ *
+ * Return values:
+ *    NULL IF tv is NULL or ms < 0 (eg. no timeout -> blocking select)
+ *    tv with 0 in both fields IF ms == 0 (eg. 0ms timeout -> polling select)
+ *    tv with converted fields IF ms > 0 (eg. >0ms timeout -> waiting select)
+ */
+struct timeval *curlx_mstotv(struct timeval *tv, timediff_t ms)
+{
+  if(!tv)
+    return NULL;
+
+  if(ms < 0)
+    return NULL;
+
+  if(ms > 0) {
+    timediff_t tv_sec = ms / 1000;
+    timediff_t tv_usec = (ms % 1000) * 1000; /* max=999999 */
+#ifdef HAVE_SUSECONDS_T
+#if TIMEDIFF_T_MAX > TIME_T_MAX
+    /* tv_sec overflow check in case time_t is signed */
+    if(tv_sec > TIME_T_MAX)
+      tv_sec = TIME_T_MAX;
+#endif
+    tv->tv_sec = (time_t)tv_sec;
+    tv->tv_usec = (suseconds_t)tv_usec;
+#elif defined(WIN32) /* maybe also others in the future */
+#if TIMEDIFF_T_MAX > LONG_MAX
+    /* tv_sec overflow check on Windows there we know it is long */
+    if(tv_sec > LONG_MAX)
+      tv_sec = LONG_MAX;
+#endif
+    tv->tv_sec = (long)tv_sec;
+    tv->tv_usec = (long)tv_usec;
+#else
+#if TIMEDIFF_T_MAX > INT_MAX
+    /* tv_sec overflow check in case time_t is signed */
+    if(tv_sec > INT_MAX)
+      tv_sec = INT_MAX;
+#endif
+    tv->tv_sec = (int)tv_sec;
+    tv->tv_usec = (int)tv_usec;
+#endif
+  }
+  else {
+    tv->tv_sec = 0;
+    tv->tv_usec = 0;
+  }
+
+  return tv;
+}
+
+/*
+ * Converts a timeval structure into number of milliseconds.
+ */
+timediff_t curlx_tvtoms(struct timeval *tv)
+{
+  return (tv->tv_sec*1000) + (timediff_t)(((double)tv->tv_usec)/1000.0);
+}
diff --git a/lib/timediff.h b/lib/timediff.h
new file mode 100644 (file)
index 0000000..90e5474
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef HEADER_CURL_TIMEDIFF_H
+#define HEADER_CURL_TIMEDIFF_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+
+/* Use a larger type even for 32 bit time_t systems so that we can keep
+   microsecond accuracy in it */
+typedef curl_off_t timediff_t;
+#define CURL_FORMAT_TIMEDIFF_T CURL_FORMAT_CURL_OFF_T
+
+#define TIMEDIFF_T_MAX CURL_OFF_T_MAX
+#define TIMEDIFF_T_MIN CURL_OFF_T_MIN
+
+/*
+ * Converts number of milliseconds into a timeval structure.
+ *
+ * Return values:
+ *    NULL IF tv is NULL or ms < 0 (eg. no timeout -> blocking select)
+ *    tv with 0 in both fields IF ms == 0 (eg. 0ms timeout -> polling select)
+ *    tv with converted fields IF ms > 0 (eg. >0ms timeout -> waiting select)
+ */
+struct timeval *curlx_mstotv(struct timeval *tv, timediff_t ms);
+
+/*
+ * Converts a timeval structure into number of milliseconds.
+ */
+timediff_t curlx_tvtoms(struct timeval *tv);
+
+#endif /* HEADER_CURL_TIMEDIFF_H */
index ca98fe50e50eb528558f92d68e9ec84c9eb2f63e..647d7b0fc5914773437359b94e41cdfc6d17b54b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "timeval.h"
index 685e72961d19bdb3887765469d3492305612cff2..8d4fef4e176bbbeec1eeda71a7aeeb09f5bb7a76 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
 
-/* Use a larger type even for 32 bit time_t systems so that we can keep
-   microsecond accuracy in it */
-typedef curl_off_t timediff_t;
-#define CURL_FORMAT_TIMEDIFF_T CURL_FORMAT_CURL_OFF_T
-
-#define TIMEDIFF_T_MAX CURL_OFF_T_MAX
-#define TIMEDIFF_T_MIN CURL_OFF_T_MIN
+#include "timediff.h"
 
 struct curltime {
   time_t tv_sec; /* seconds */
index 22704fa158329b24ce00de52a7d4ead422d12705..441da7342915c1f4e0b9b926b602ef6e5bd36e75 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include "select.h"
 #include "multiif.h"
 #include "connect.h"
-#include "non-ascii.h"
 #include "http2.h"
 #include "mime.h"
 #include "strcase.h"
 #include "urlapi-int.h"
 #include "hsts.h"
 #include "setopt.h"
+#include "headers.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
  * Returns a pointer to the first matching header or NULL if none matched.
  */
 char *Curl_checkheaders(const struct Curl_easy *data,
-                        const char *thisheader)
+                        const char *thisheader,
+                        const size_t thislen)
 {
   struct curl_slist *head;
-  size_t thislen = strlen(thisheader);
   DEBUGASSERT(thislen);
   DEBUGASSERT(thisheader[thislen-1] != ':');
 
@@ -165,20 +167,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
   curl_read_callback readfunc = NULL;
   void *extra_data = NULL;
 
-#ifdef CURL_DOES_CONVERSIONS
-  bool sending_http_headers = FALSE;
-  struct connectdata *conn = data->conn;
-
-  if(conn->handler->protocol&(PROTO_FAMILY_HTTP|CURLPROTO_RTSP)) {
-    const struct HTTP *http = data->req.p.http;
-
-    if(http->sending == HTTPSEND_REQUEST)
-      /* We're sending the HTTP request headers, not the data.
-         Remember that so we don't re-translate them into garbage. */
-      sending_http_headers = TRUE;
-  }
-#endif
-
 #ifndef CURL_DISABLE_HTTP
   if(data->state.trailers_state == TRAILERS_INITIALIZED) {
     struct curl_slist *trailers = NULL;
@@ -216,6 +204,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
   }
 #endif
 
+#ifndef CURL_DISABLE_HTTP
   /* if we are transmitting trailing data, we don't need to write
      a chunk size so we skip this */
   if(data->req.upload_chunky &&
@@ -225,7 +214,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
     data->req.upload_fromhere += (8 + 2); /* 32bit hex + CRLF */
   }
 
-#ifndef CURL_DISABLE_HTTP
   if(data->state.trailers_state == TRAILERS_SENDING) {
     /* if we're here then that means that we already sent the last empty chunk
        but we didn't send a final CR LF, so we sent 0 CR LF. We then start
@@ -260,7 +248,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
       /* protocols that work without network cannot be paused. This is
          actually only FILE:// just now, and it can't pause since the transfer
          isn't done using the "normal" procedure. */
-      failf(data, "Read callback asked for PAUSE when not supported!");
+      failf(data, "Read callback asked for PAUSE when not supported");
       return CURLE_READ_ERROR;
     }
 
@@ -281,6 +269,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
     return CURLE_READ_ERROR;
   }
 
+#ifndef CURL_DISABLE_HTTP
   if(!data->req.forbidchunk && data->req.upload_chunky) {
     /* if chunked Transfer-Encoding
      *    build chunk:
@@ -331,15 +320,12 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
 
       /* always append ASCII CRLF to the data unless
          we have a valid trailer callback */
-#ifndef CURL_DISABLE_HTTP
       if((nread-hexlen) == 0 &&
           data->set.trailer_callback != NULL &&
           data->state.trailers_state == TRAILERS_NONE) {
         data->state.trailers_state = TRAILERS_INITIALIZED;
       }
-      else
-#endif
-      {
+      else {
         memcpy(data->req.upload_fromhere + nread,
                endofline_network,
                strlen(endofline_network));
@@ -347,27 +333,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
       }
     }
 
-#ifdef CURL_DOES_CONVERSIONS
-    {
-      CURLcode result;
-      size_t length;
-      if(data->state.prefer_ascii)
-        /* translate the protocol and data */
-        length = nread;
-      else
-        /* just translate the protocol portion */
-        length = hexlen;
-      if(length) {
-        result = Curl_convert_to_network(data, data->req.upload_fromhere,
-                                         length);
-        /* Curl_convert_to_network calls failf if unsuccessful */
-        if(result)
-          return result;
-      }
-    }
-#endif /* CURL_DOES_CONVERSIONS */
-
-#ifndef CURL_DISABLE_HTTP
     if(data->state.trailers_state == TRAILERS_SENDING &&
        !trailers_left(data)) {
       Curl_dyn_free(&data->state.trailers_buf);
@@ -379,7 +344,6 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
       infof(data, "Signaling end of chunked upload after trailers.");
     }
     else
-#endif
       if((nread - hexlen) == 0 &&
          data->state.trailers_state != TRAILERS_INITIALIZED) {
         /* mark this as done once this chunk is transferred */
@@ -391,15 +355,7 @@ CURLcode Curl_fillreadbuffer(struct Curl_easy *data, size_t bytes,
     if(added_crlf)
       nread += strlen(endofline_network); /* for the added end of line */
   }
-#ifdef CURL_DOES_CONVERSIONS
-  else if((data->state.prefer_ascii) && (!sending_http_headers)) {
-    CURLcode result;
-    result = Curl_convert_to_network(data, data->req.upload_fromhere, nread);
-    /* Curl_convert_to_network calls failf if unsuccessful */
-    if(result)
-      return result;
-  }
-#endif /* CURL_DOES_CONVERSIONS */
+#endif
 
   *nreadp = nread;
 
@@ -503,7 +459,7 @@ static int data_pending(const struct Curl_easy *data)
   /* in the case of libssh2, we can never be really sure that we have emptied
      its internal buffers so we MUST always try until we get EAGAIN back */
   return conn->handler->protocol&(CURLPROTO_SCP|CURLPROTO_SFTP) ||
-#if defined(USE_NGHTTP2)
+#ifdef USE_NGHTTP2
     /* For HTTP/2, we may read up everything including response body
        with header fields in Curl_http_readwrite_headers. If no
        content-length is provided, curl waits for the connection
@@ -583,18 +539,25 @@ static CURLcode readwrite_data(struct Curl_easy *data,
     bool is_http2 = ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
                      (conn->httpversion == 20));
 #endif
+    bool is_http3 =
+#ifdef ENABLE_QUIC
+      ((conn->handler->protocol & PROTO_FAMILY_HTTP) &&
+       (conn->httpversion == 30));
+#else
+      FALSE;
+#endif
 
     if(
 #ifdef USE_NGHTTP2
-       /* For HTTP/2, read data without caring about the content
-          length. This is safe because body in HTTP/2 is always
-          segmented thanks to its framing layer. Meanwhile, we have to
-          call Curl_read to ensure that http2_handle_stream_close is
-          called when we read all incoming bytes for a particular
-          stream. */
-       !is_http2 &&
+      /* For HTTP/2, read data without caring about the content length. This
+         is safe because body in HTTP/2 is always segmented thanks to its
+         framing layer. Meanwhile, we have to call Curl_read to ensure that
+         http2_handle_stream_close is called when we read all incoming bytes
+         for a particular stream. */
+      !is_http2 &&
 #endif
-       k->size != -1 && !k->header) {
+      !is_http3 && /* Same reason mentioned above. */
+      k->size != -1 && !k->header) {
       /* make sure we don't read too much */
       curl_off_t totalleft = k->size - k->bytecount;
       if(totalleft < (curl_off_t)bytestoread)
@@ -615,7 +578,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, "readwrite_data: we're done!"));
+      DEBUGF(infof(data, "readwrite_data: we're done"));
       nread = 0;
     }
 
@@ -641,6 +604,9 @@ static CURLcode readwrite_data(struct Curl_easy *data,
         DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
       else
 #endif
+      if(is_http3 && !nread)
+        DEBUGF(infof(data, "nread == 0, stream closed, bailing"));
+      else
         DEBUGF(infof(data, "nread <= 0, server closed connection, bailing"));
       k->keepon &= ~KEEP_RECV;
       break;
@@ -798,7 +764,13 @@ static CURLcode readwrite_data(struct Curl_easy *data,
         if(nread < 0) /* this should be unusual */
           nread = 0;
 
-        k->keepon &= ~KEEP_RECV; /* we're done reading */
+        /* HTTP/3 over QUIC should keep reading until QUIC connection
+           is closed.  In contrast to HTTP/2 which can stop reading
+           from TCP connection, HTTP/3 over QUIC needs ACK from server
+           to ensure stream closure.  It should keep reading. */
+        if(!is_http3) {
+          k->keepon &= ~KEEP_RECV; /* we're done reading */
+        }
       }
 
       k->bytecount += nread;
@@ -944,6 +916,9 @@ static void win_update_buffer_size(curl_socket_t sockfd)
 #define win_update_buffer_size(x)
 #endif
 
+#define curl_upload_refill_watermark(data) \
+        ((ssize_t)((data)->set.upload_buffer_size >> 5))
+
 /*
  * Send data to upload to the server, when the socket is writable.
  */
@@ -965,13 +940,25 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
 
   do {
     curl_off_t nbody;
+    ssize_t offset = 0;
+
+    if(0 != k->upload_present &&
+       k->upload_present < curl_upload_refill_watermark(data) &&
+       !k->upload_chunky &&/*(variable sized chunked header; append not safe)*/
+       !k->upload_done &&  /*!(k->upload_done once k->upload_present sent)*/
+       !(k->writebytecount + k->upload_present - k->pendingheader ==
+         data->state.infilesize)) {
+      offset = k->upload_present;
+    }
 
     /* only read more data if there's no upload data already
-       present in the upload buffer */
-    if(0 == k->upload_present) {
+       present in the upload buffer, or if appending to upload buffer */
+    if(0 == k->upload_present || offset) {
       result = Curl_get_upload_buffer(data);
       if(result)
         return result;
+      if(offset && k->upload_fromhere != data->state.ulbuf)
+        memmove(data->state.ulbuf, k->upload_fromhere, offset);
       /* init the "upload from here" pointer */
       k->upload_fromhere = data->state.ulbuf;
 
@@ -1004,12 +991,14 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
             sending_http_headers = FALSE;
         }
 
-        result = Curl_fillreadbuffer(data, data->set.upload_buffer_size,
+        k->upload_fromhere += offset;
+        result = Curl_fillreadbuffer(data, data->set.upload_buffer_size-offset,
                                      &fillcount);
+        k->upload_fromhere -= offset;
         if(result)
           return result;
 
-        nread = fillcount;
+        nread = offset + fillcount;
       }
       else
         nread = 0; /* we're done uploading/reading */
@@ -1039,7 +1028,7 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
         if(!data->state.scratch) {
           data->state.scratch = malloc(2 * data->set.upload_buffer_size);
           if(!data->state.scratch) {
-            failf(data, "Failed to alloc scratch buffer!");
+            failf(data, "Failed to alloc scratch buffer");
 
             return CURLE_OUT_OF_MEMORY;
           }
@@ -1051,7 +1040,9 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
          * That means the hex values for ASCII CR (0x0d) & LF (0x0a)
          * must be used instead of the escape sequences \r & \n.
          */
-        for(i = 0, si = 0; i < nread; i++, si++) {
+        if(offset)
+          memcpy(data->state.scratch, k->upload_fromhere, offset);
+        for(i = offset, si = offset; i < nread; i++, si++) {
           if(k->upload_fromhere[i] == 0x0a) {
             data->state.scratch[si++] = 0x0d;
             data->state.scratch[si] = 0x0a;
@@ -1081,12 +1072,12 @@ static CURLcode readwrite_upload(struct Curl_easy *data,
 
 #ifndef CURL_DISABLE_SMTP
       if(conn->handler->protocol & PROTO_FAMILY_SMTP) {
-        result = Curl_smtp_escape_eob(data, nread);
+        result = Curl_smtp_escape_eob(data, nread, offset);
         if(result)
           return result;
       }
 #endif /* CURL_DISABLE_SMTP */
-    } /* if 0 == k->upload_present */
+    } /* if 0 == k->upload_present or appended to upload buffer */
     else {
       /* We have a partial buffer left from a previous "round". Use
          that instead of reading more data */
@@ -1197,10 +1188,12 @@ CURLcode Curl_readwrite(struct connectdata *conn,
   else
     fd_write = CURL_SOCKET_BAD;
 
+#if defined(USE_HTTP2) || defined(USE_HTTP3)
   if(data->state.drain) {
     select_res |= CURL_CSELECT_IN;
     DEBUGF(infof(data, "Curl_readwrite: forcibly told to drain data"));
   }
+#endif
 
   if(!select_res) /* Call for select()/poll() only, if read/write/error
                      status is not known. */
@@ -1266,6 +1259,14 @@ CURLcode Curl_readwrite(struct connectdata *conn,
         infof(data, "Done waiting for 100-continue");
       }
     }
+
+#ifdef ENABLE_QUIC
+    if(conn->transport == TRNSPRT_QUIC) {
+      result = Curl_quic_idle(data);
+      if(result)
+        return result;
+    }
+#endif
   }
 
   if(Curl_pgrsUpdate(data))
@@ -1404,7 +1405,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
 
   if(!data->state.url && !data->set.uh) {
     /* we can't do anything without URL */
-    failf(data, "No URL set!");
+    failf(data, "No URL set");
     return CURLE_URL_MALFORMAT;
   }
 
@@ -1421,7 +1422,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
     uc = curl_url_get(data->set.uh,
                       CURLUPART_URL, &data->set.str[STRING_SET_URL], 0);
     if(uc) {
-      failf(data, "No URL set!");
+      failf(data, "No URL set");
       return CURLE_URL_MALFORMAT;
     }
   }
@@ -1438,7 +1439,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
   if(result)
     return result;
 
-  data->state.wildcardmatch = data->set.wildcard_enabled;
+  data->state.requests = 0;
   data->state.followlocation = 0; /* reset the location-follow counter */
   data->state.this_is_a_follow = FALSE; /* reset this */
   data->state.errorbuf = FALSE; /* no error has occurred */
@@ -1460,10 +1461,11 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
   else
     data->state.infilesize = 0;
 
+#ifndef CURL_DISABLE_COOKIES
   /* If there is a list of cookie files to read, do it now! */
   if(data->state.cookielist)
     Curl_cookie_loadfiles(data);
-
+#endif
   /* If there is a list of host pairs to deal with */
   if(data->state.resolve)
     result = Curl_loadhostpairs(data);
@@ -1493,6 +1495,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
     data->state.authproxy.picked &= data->state.authproxy.want;
 
 #ifndef CURL_DISABLE_FTP
+    data->state.wildcardmatch = data->set.wildcard_enabled;
     if(data->state.wildcardmatch) {
       struct WildcardData *wc = &data->wildcard;
       if(wc->state < CURLWC_INIT) {
@@ -1533,6 +1536,7 @@ CURLcode Curl_pretransfer(struct Curl_easy *data)
                             data->set.str[STRING_PROXYPASSWORD]);
 
   data->req.headerbytecount = 0;
+  Curl_headers_cleanup(data);
   return result;
 }
 
@@ -1577,6 +1581,8 @@ CURLcode Curl_follow(struct Curl_easy *data,
 
   DEBUGASSERT(type != FOLLOW_NONE);
 
+  if(type != FOLLOW_FAKE)
+    data->state.requests++; /* count all real follows */
   if(type == FOLLOW_REDIR) {
     if((data->set.maxredirs != -1) &&
        (data->state.followlocation >= data->set.maxredirs)) {
@@ -1603,7 +1609,7 @@ CURLcode Curl_follow(struct Curl_easy *data,
           data->state.referer_alloc = FALSE;
         }
 
-        /* Make a copy of the URL without crenditals and fragment */
+        /* Make a copy of the URL without credentials and fragment */
         u = curl_url();
         if(!u)
           return CURLE_OUT_OF_MEMORY;
@@ -1631,7 +1637,7 @@ 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))
+     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;
@@ -1640,10 +1646,14 @@ CURLcode Curl_follow(struct Curl_easy *data,
   uc = curl_url_set(data->state.uh, CURLUPART_URL, newurl,
                     (type == FOLLOW_FAKE) ? CURLU_NON_SUPPORT_SCHEME :
                     ((type == FOLLOW_REDIR) ? CURLU_URLENCODE : 0) |
-                    CURLU_ALLOW_SPACE);
+                    CURLU_ALLOW_SPACE |
+                    (data->set.path_as_is ? CURLU_PATH_AS_IS : 0));
   if(uc) {
-    if(type != FOLLOW_FAKE)
+    if(type != FOLLOW_FAKE) {
+      failf(data, "The redirect target URL could not be parsed: %s",
+            curl_url_strerror(uc));
       return Curl_uc_to_curlcode(uc);
+    }
 
     /* the URL could not be parsed for some reason, but since this is FAKE
        mode, just duplicate the field as-is */
@@ -1652,10 +1662,57 @@ CURLcode Curl_follow(struct Curl_easy *data,
       return CURLE_OUT_OF_MEMORY;
   }
   else {
-
     uc = curl_url_get(data->state.uh, CURLUPART_URL, &newurl, 0);
     if(uc)
       return Curl_uc_to_curlcode(uc);
+
+    /* Clear auth if this redirects to a different port number or protocol,
+       unless permitted */
+    if(!data->set.allow_auth_to_other_hosts && (type != FOLLOW_FAKE)) {
+      char *portnum;
+      int port;
+      bool clear = FALSE;
+
+      if(data->set.use_port && data->state.allow_port)
+        /* a custom port is used */
+        port = (int)data->set.use_port;
+      else {
+        uc = curl_url_get(data->state.uh, CURLUPART_PORT, &portnum,
+                          CURLU_DEFAULT_PORT);
+        if(uc) {
+          free(newurl);
+          return Curl_uc_to_curlcode(uc);
+        }
+        port = atoi(portnum);
+        free(portnum);
+      }
+      if(port != data->info.conn_remote_port) {
+        infof(data, "Clear auth, redirects to port from %u to %u",
+              data->info.conn_remote_port, port);
+        clear = TRUE;
+      }
+      else {
+        char *scheme;
+        const struct Curl_handler *p;
+        uc = curl_url_get(data->state.uh, CURLUPART_SCHEME, &scheme, 0);
+        if(uc) {
+          free(newurl);
+          return Curl_uc_to_curlcode(uc);
+        }
+
+        p = Curl_builtin_scheme(scheme, CURL_ZERO_TERMINATED);
+        if(p && (p->protocol != data->info.conn_protocol)) {
+          infof(data, "Clear auth, redirects scheme from %s to %s",
+                data->info.conn_scheme, scheme);
+          clear = TRUE;
+        }
+        free(scheme);
+      }
+      if(clear) {
+        Curl_safefree(data->state.aptr.user);
+        Curl_safefree(data->state.aptr.passwd);
+      }
+    }
   }
 
   if(type == FOLLOW_FAKE) {
@@ -1807,10 +1864,12 @@ CURLcode Curl_retry_request(struct Curl_easy *data, char **url)
     return CURLE_OK;
 
   if((data->req.bytecount + data->req.headerbytecount == 0) &&
-      conn->bits.reuse &&
-      (!data->set.opt_no_body
-        || (conn->handler->protocol & PROTO_FAMILY_HTTP)) &&
-      (data->set.rtspreq != RTSPREQ_RECEIVE))
+     conn->bits.reuse &&
+     (!data->set.opt_no_body || (conn->handler->protocol & PROTO_FAMILY_HTTP))
+#ifndef CURL_DISABLE_RTSP
+     && (data->set.rtspreq != RTSPREQ_RECEIVE)
+#endif
+    )
     /* We got no data, we attempted to re-use a connection. For HTTP this
        can be a retry so we try again regardless if we expected a body.
        For other protocols we only try again only if we expected a body.
@@ -1882,11 +1941,14 @@ Curl_setup_transfer(
   struct SingleRequest *k = &data->req;
   struct connectdata *conn = data->conn;
   struct HTTP *http = data->req.p.http;
-  bool httpsending = ((conn->handler->protocol&PROTO_FAMILY_HTTP) &&
-                      (http->sending == HTTPSEND_REQUEST));
+  bool httpsending;
+
   DEBUGASSERT(conn != NULL);
   DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
 
+  httpsending = ((conn->handler->protocol&PROTO_FAMILY_HTTP) &&
+                 (http->sending == HTTPSEND_REQUEST));
+
   if(conn->bits.multiplex || conn->httpversion == 20 || httpsending) {
     /* when multiplexing, the read/write sockets need to be the same! */
     conn->sockfd = sockindex == -1 ?
index 0fa3d55e8267792e40696132a63e6472255fb550..65fe68e812fe23b5b12c57e3900800cc03c03e79 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #define Curl_headersep(x) ((((x)==':') || ((x)==';')))
 char *Curl_checkheaders(const struct Curl_easy *data,
-                        const char *thisheader);
+                        const char *thisheader,
+                        const size_t thislen);
 
 void Curl_init_CONNECT(struct Curl_easy *data);
 
index 9f1013554f5defa9b98fe8bea1c06089473a109d..be5ffca2d8b20c00e7d2eb878f131ec5b084fbb8 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -18,6 +18,8 @@
  * 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"
 #endif
 
 #elif defined(USE_WIN32_IDN)
-/* prototype for curl_win32_idn_to_ascii() */
-bool curl_win32_idn_to_ascii(const char *in, char **out);
+/* prototype for Curl_win32_idn_to_ascii() */
+bool Curl_win32_idn_to_ascii(const char *in, char **out);
 #endif  /* USE_LIBIDN2 */
 
+#include "doh.h"
 #include "urldata.h"
 #include "netrc.h"
 
@@ -99,11 +102,11 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
 #include "easyif.h"
 #include "speedcheck.h"
 #include "warnless.h"
-#include "non-ascii.h"
 #include "getinfo.h"
 #include "urlapi-int.h"
 #include "system_win32.h"
 #include "hsts.h"
+#include "noproxy.h"
 
 /* And now for the protocols */
 #include "ftp.h"
@@ -126,26 +129,17 @@ bool curl_win32_idn_to_ascii(const char *in, char **out);
 #include "http_proxy.h"
 #include "conncache.h"
 #include "multihandle.h"
-#include "dotdot.h"
 #include "strdup.h"
 #include "setopt.h"
 #include "altsvc.h"
 #include "dynbuf.h"
+#include "headers.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
 #include "memdebug.h"
 
-/* Count of the backend ssl objects to allocate */
-#ifdef USE_SSL
-#  ifndef CURL_DISABLE_PROXY
-#    define SSL_BACKEND_CNT 4
-#  else
-#    define SSL_BACKEND_CNT 2
-#  endif
-#endif
-
 static void conn_free(struct connectdata *conn);
 
 /* Some parts of the code (e.g. chunked encoding) assume this buffer has at
@@ -156,6 +150,13 @@ static void conn_free(struct connectdata *conn);
 # error READBUFFER_SIZE is too small
 #endif
 
+#ifdef USE_UNIX_SOCKETS
+#define UNIX_SOCKET_PREFIX "localhost"
+#endif
+
+/* Reject URLs exceeding this length */
+#define MAX_URL_LEN 0xffff
+
 /*
 * get_protocol_family()
 *
@@ -167,7 +168,7 @@ static void conn_free(struct connectdata *conn);
 *
 * Returns the family as a single bit protocol identifier.
 */
-static unsigned int get_protocol_family(const struct Curl_handler *h)
+static curl_prot_t get_protocol_family(const struct Curl_handler *h)
 {
   DEBUGASSERT(h);
   DEBUGASSERT(h->family);
@@ -191,6 +192,16 @@ static const struct Curl_handler * const protocols[] = {
   &Curl_handler_http,
 #endif
 
+#ifdef USE_WEBSOCKETS
+#if defined(USE_SSL) && !defined(CURL_DISABLE_HTTP)
+  &Curl_handler_wss,
+#endif
+
+#ifndef CURL_DISABLE_HTTP
+  &Curl_handler_ws,
+#endif
+#endif
+
 #ifndef CURL_DISABLE_FTP
   &Curl_handler_ftp,
 #endif
@@ -381,7 +392,7 @@ CURLcode Curl_close(struct Curl_easy **datap)
 
   /* Detach connection if any is left. This should not be normal, but can be
      the case for example with CONNECT_ONLY + recv/send (test 556) */
-  Curl_detach_connnection(data);
+  Curl_detach_connection(data);
   m = data->multi;
   if(m)
     /* This handle is still part of a multi handle, take care of this first
@@ -442,10 +453,10 @@ CURLcode Curl_close(struct Curl_easy **datap)
   Curl_safefree(data->info.wouldredirect);
 
   /* this destroys the channel and we cannot use it anymore after this */
+  Curl_resolver_cancel(data);
   Curl_resolver_cleanup(data->state.async.resolver);
 
   Curl_http2_cleanup_dependencies(data);
-  Curl_convert_close(data);
 
   /* No longer a dirty share, if it exists */
   if(data->share) {
@@ -481,6 +492,7 @@ CURLcode Curl_close(struct Curl_easy **datap)
   /* destruct wildcard structures if it is needed */
   Curl_wildcard_dtor(&data->wildcard);
   Curl_freeset(data);
+  Curl_headers_cleanup(data);
   free(data);
   return CURLE_OK;
 }
@@ -504,22 +516,18 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
   /* use fread as default function to read input */
   set->fread_func_set = (curl_read_callback)fread;
   set->is_fread_set = 0;
-  set->is_fwrite_set = 0;
 
   set->seek_func = ZERO_NULL;
   set->seek_client = ZERO_NULL;
 
-  /* conversion callbacks for non-ASCII hosts */
-  set->convfromnetwork = ZERO_NULL;
-  set->convtonetwork   = ZERO_NULL;
-  set->convfromutf8    = ZERO_NULL;
-
   set->filesize = -1;        /* we don't know the size */
   set->postfieldsize = -1;   /* unknown size */
   set->maxredirs = -1;       /* allow any amount by default */
 
   set->method = HTTPREQ_GET; /* Default HTTP request */
+#ifndef CURL_DISABLE_RTSP
   set->rtspreq = RTSPREQ_OPTIONS; /* Default RTSP request */
+#endif
 #ifndef CURL_DISABLE_FTP
   set->ftp_use_epsv = TRUE;   /* FTP defaults to EPSV operations */
   set->ftp_use_eprt = TRUE;   /* FTP defaults to EPRT operations */
@@ -535,10 +543,12 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
   set->proxyport = 0;
   set->proxytype = CURLPROXY_HTTP; /* defaults to HTTP proxy */
   set->httpauth = CURLAUTH_BASIC;  /* defaults to basic */
-  set->proxyauth = CURLAUTH_BASIC; /* defaults to basic */
 
+#ifndef CURL_DISABLE_PROXY
+  set->proxyauth = CURLAUTH_BASIC; /* defaults to basic */
   /* SOCKS5 proxy auth defaults to username/password + GSS-API */
   set->socks5auth = CURLAUTH_BASIC | CURLAUTH_GSSAPI;
+#endif
 
   /* make libcurl quiet by default: */
   set->hide_progress = TRUE;  /* CURLOPT_NOPROGRESS changes these */
@@ -556,10 +566,10 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
   set->ssl.primary.verifypeer = TRUE;
   set->ssl.primary.verifyhost = TRUE;
 #ifdef USE_TLS_SRP
-  set->ssl.authtype = CURL_TLSAUTH_NONE;
+  set->ssl.primary.authtype = CURL_TLSAUTH_NONE;
 #endif
-  set->ssh_auth_types = CURLSSH_AUTH_DEFAULT; /* defaults to any auth
-                                                      type */
+   /* defaults to any auth type */
+  set->ssh_auth_types = CURLSSH_AUTH_DEFAULT;
   set->ssl.primary.sessionid = TRUE; /* session ID caching enabled by
                                         default */
 #ifndef CURL_DISABLE_PROXY
@@ -568,11 +578,7 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
 
   set->new_file_perms = 0644;    /* Default permissions */
   set->new_directory_perms = 0755; /* Default permissions */
-
-  /* for the *protocols fields we don't use the CURLPROTO_ALL convenience
-     define since we internally only use the lower 16 bits for the passed
-     in bitmask to not conflict with the private bits */
-  set->allowed_protocols = CURLPROTO_ALL;
+  set->allowed_protocols = (curl_prot_t) CURLPROTO_ALL;
   set->redir_protocols = CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FTP |
                          CURLPROTO_FTPS;
 
@@ -612,29 +618,30 @@ CURLcode Curl_init_userdefined(struct Curl_easy *data)
 #endif
   }
 
+#ifndef CURL_DISABLE_FTP
   set->wildcard_enabled = FALSE;
   set->chunk_bgn      = ZERO_NULL;
   set->chunk_end      = ZERO_NULL;
+  set->fnmatch = ZERO_NULL;
+#endif
   set->tcp_keepalive = FALSE;
   set->tcp_keepintvl = 60;
   set->tcp_keepidle = 60;
   set->tcp_fastopen = FALSE;
   set->tcp_nodelay = TRUE;
-  set->ssl_enable_npn = TRUE;
   set->ssl_enable_alpn = TRUE;
   set->expect_100_timeout = 1000L; /* Wait for a second by default. */
   set->sep_headers = TRUE; /* separated header lists by default */
   set->buffer_size = READBUFFER_SIZE;
   set->upload_buffer_size = UPLOADBUFFER_DEFAULT;
   set->happy_eyeballs_timeout = CURL_HET_DEFAULT;
-  set->fnmatch = ZERO_NULL;
   set->upkeep_interval_ms = CURL_UPKEEP_INTERVAL_DEFAULT;
   set->maxconnects = DEFAULT_CONNCACHE_SIZE; /* for easy handles */
   set->maxage_conn = 118;
   set->maxlifetime_conn = 0;
   set->http09_allowed = FALSE;
   set->httpwant =
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
     CURL_HTTP_VERSION_2TLS
 #else
     CURL_HTTP_VERSION_1_1
@@ -677,7 +684,6 @@ CURLcode Curl_open(struct Curl_easy **curl)
   result = Curl_init_userdefined(data);
   if(!result) {
     Curl_dyn_init(&data->state.headerb, CURL_MAX_HTTP_HEADER);
-    Curl_convert_init(data);
     Curl_initinfo(data);
 
     /* most recent connection is not yet defined */
@@ -745,22 +751,15 @@ static void conn_shutdown(struct Curl_easy *data, struct connectdata *conn)
   DEBUGASSERT(data);
   infof(data, "Closing connection %ld", conn->connection_id);
 
-#ifndef USE_HYPER
-  if(conn->connect_state && conn->connect_state->prot_save) {
-    /* If this was closed with a CONNECT in progress, cleanup this temporary
-       struct arrangement */
-    data->req.p.http = NULL;
-    Curl_safefree(conn->connect_state->prot_save);
-  }
-#endif
-
   /* possible left-overs from the async name resolvers */
   Curl_resolver_cancel(data);
 
   /* close the SSL stuff before we close any sockets since they will/may
      write to the sockets */
   Curl_ssl_close(data, conn, FIRSTSOCKET);
+#ifndef CURL_DISABLE_FTP
   Curl_ssl_close(data, conn, SECONDARYSOCKET);
+#endif
 
   /* close possibly still open sockets */
   if(CURL_SOCKET_BAD != conn->sock[SECONDARYSOCKET])
@@ -794,6 +793,7 @@ static void conn_free(struct connectdata *conn)
   Curl_safefree(conn->passwd);
   Curl_safefree(conn->sasl_authzid);
   Curl_safefree(conn->options);
+  Curl_safefree(conn->oauth_bearer);
   Curl_dyn_free(&conn->trailer);
   Curl_safefree(conn->host.rawalloc); /* host name buffer */
   Curl_safefree(conn->conn_to_host.rawalloc); /* host name buffer */
@@ -830,8 +830,8 @@ static void conn_free(struct connectdata *conn)
  *
  */
 
-CURLcode Curl_disconnect(struct Curl_easy *data,
-                         struct connectdata *conn, bool dead_connection)
+void Curl_disconnect(struct Curl_easy *data,
+                     struct connectdata *conn, bool dead_connection)
 {
   /* there must be a connection to close */
   DEBUGASSERT(conn);
@@ -851,7 +851,7 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
    */
   if(CONN_INUSE(conn) && !dead_connection) {
     DEBUGF(infof(data, "Curl_disconnect when inuse: %zu", CONN_INUSE(conn)));
-    return CURLE_OK;
+    return;
   }
 
   if(conn->dns_entry) {
@@ -865,13 +865,13 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
   /* Cleanup NEGOTIATE connection-related data */
   Curl_http_auth_cleanup_negotiate(conn);
 
-  if(conn->bits.connect_only)
+  if(conn->connect_only)
     /* treat the connection as dead in CONNECT_ONLY situations */
     dead_connection = TRUE;
 
   /* temporarily attach the connection to this transfer handle for the
      disconnect and shutdown */
-  Curl_attach_connnection(data, conn);
+  Curl_attach_connection(data, conn);
 
   if(conn->handler->disconnect)
     /* This is set if protocol-specific cleanups should be made */
@@ -880,10 +880,9 @@ CURLcode Curl_disconnect(struct Curl_easy *data,
   conn_shutdown(data, conn);
 
   /* detach it again */
-  Curl_detach_connnection(data);
+  Curl_detach_connection(data);
 
   conn_free(conn);
-  return CURLE_OK;
 }
 
 /*
@@ -949,20 +948,12 @@ socks_proxy_info_matches(const struct proxy_info *data,
 
   /* the user information is case-sensitive
      or at least it is not defined as case-insensitive
-     see https://tools.ietf.org/html/rfc3986#section-3.2.1 */
-  if(!data->user != !needle->user)
-    return FALSE;
-  /* curl_strequal does a case insentive comparison, so do not use it here! */
-  if(data->user &&
-     needle->user &&
-     strcmp(data->user, needle->user) != 0)
-    return FALSE;
-  if(!data->passwd != !needle->passwd)
-    return FALSE;
-  /* curl_strequal does a case insentive comparison, so do not use it here! */
-  if(data->passwd &&
-     needle->passwd &&
-     strcmp(data->passwd, needle->passwd) != 0)
+     see https://datatracker.ietf.org/doc/html/rfc3986#section-3.2.1 */
+
+  /* curl_strequal does a case insensitive comparison,
+     so do not use it here! */
+  if(Curl_timestrcmp(data->user, needle->user) ||
+     Curl_timestrcmp(data->passwd, needle->passwd))
     return FALSE;
   return TRUE;
 }
@@ -1033,12 +1024,12 @@ static bool extract_if_dead(struct connectdata *conn,
 
       /* briefly attach the connection to this transfer for the purpose of
          checking it */
-      Curl_attach_connnection(data, conn);
+      Curl_attach_connection(data, conn);
 
       state = conn->handler->connection_check(data, conn, CONNCHECK_ISDEAD);
       dead = (state & CONNRESULT_DEAD);
       /* detach the connection again */
-      Curl_detach_connnection(data);
+      Curl_detach_connection(data);
 
     }
     else {
@@ -1047,7 +1038,7 @@ static bool extract_if_dead(struct connectdata *conn,
     }
 
     if(dead) {
-      infof(data, "Connection %ld seems to be dead!", conn->connection_id);
+      infof(data, "Connection %ld seems to be dead", conn->connection_id);
       Curl_conncache_remove_conn(data, conn, FALSE);
       return TRUE;
     }
@@ -1105,7 +1096,7 @@ static void prune_dead_connections(struct Curl_easy *data)
       Curl_conncache_remove_conn(data, prune.extracted, TRUE);
 
       /* disconnect it */
-      (void)Curl_disconnect(data, prune.extracted, TRUE);
+      Curl_disconnect(data, prune.extracted, TRUE);
     }
     CONNCACHE_LOCK(data);
     data->state.conn_cache->last_cleanup = now;
@@ -1113,6 +1104,17 @@ static void prune_dead_connections(struct Curl_easy *data)
   }
 }
 
+#ifdef USE_SSH
+static bool ssh_config_matches(struct connectdata *one,
+                               struct connectdata *two)
+{
+  return (Curl_safecmp(one->proto.sshc.rsa, two->proto.sshc.rsa) &&
+          Curl_safecmp(one->proto.sshc.rsa_pub, two->proto.sshc.rsa_pub));
+}
+#else
+#define ssh_config_matches(x,y) FALSE
+#endif
+
 /*
  * Given one filled in connection struct (named needle), this function should
  * detect if there already is one that has all the significant details
@@ -1136,7 +1138,6 @@ ConnectionExists(struct Curl_easy *data,
   bool foundPendingCandidate = FALSE;
   bool canmultiplex = IsMultiplexingPossible(data, needle);
   struct connectbundle *bundle;
-  const char *hostbundle;
 
 #ifdef USE_NTLM
   bool wantNTLMhttp = ((data->state.authhost.want &
@@ -1157,15 +1158,14 @@ ConnectionExists(struct Curl_easy *data,
 
   /* Look up the bundle with all the connections to this particular host.
      Locks the connection cache, beware of early returns! */
-  bundle = Curl_conncache_find_bundle(data, needle, data->state.conn_cache,
-                                      &hostbundle);
+  bundle = Curl_conncache_find_bundle(data, needle, data->state.conn_cache);
   if(bundle) {
     /* Max pipe length is zero (unlimited) for multiplexed connections */
     struct Curl_llist_element *curr;
 
-    infof(data, "Found bundle for host %s: %p [%s]",
-          hostbundle, (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ?
-                                       "can multiplex" : "serially"));
+    infof(data, "Found bundle for host: %p [%s]",
+          (void *)bundle, (bundle->multiuse == BUNDLE_MULTIPLEX ?
+                           "can multiplex" : "serially"));
 
     /* We can't multiplex if we don't know anything about the server */
     if(canmultiplex) {
@@ -1182,11 +1182,11 @@ ConnectionExists(struct Curl_easy *data,
       }
       if((bundle->multiuse == BUNDLE_MULTIPLEX) &&
          !Curl_multiplex_wanted(data->multi)) {
-        infof(data, "Could multiplex, but not asked to!");
+        infof(data, "Could multiplex, but not asked to");
         canmultiplex = FALSE;
       }
       if(bundle->multiuse == BUNDLE_NO_MULTIUSE) {
-        infof(data, "Can not multiplex, even if we wanted to!");
+        infof(data, "Can not multiplex, even if we wanted to");
         canmultiplex = FALSE;
       }
     }
@@ -1203,13 +1203,13 @@ ConnectionExists(struct Curl_easy *data,
       check = curr->ptr;
       curr = curr->next;
 
-      if(check->bits.connect_only || check->bits.close)
+      if(check->connect_only || check->bits.close)
         /* connect-only or to-be-closed connections will not be reused */
         continue;
 
       if(extract_if_dead(check, data)) {
         /* disconnect it */
-        (void)Curl_disconnect(data, check, TRUE);
+        Curl_disconnect(data, check, TRUE);
         continue;
       }
 
@@ -1355,8 +1355,10 @@ ConnectionExists(struct Curl_easy *data,
       if(!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) {
         /* This protocol requires credentials per connection,
            so verify that we're using the same name and password as well */
-        if(strcmp(needle->user, check->user) ||
-           strcmp(needle->passwd, check->passwd)) {
+        if(Curl_timestrcmp(needle->user, check->user) ||
+           Curl_timestrcmp(needle->passwd, check->passwd) ||
+           Curl_timestrcmp(needle->sasl_authzid, check->sasl_authzid) ||
+           Curl_timestrcmp(needle->oauth_bearer, check->oauth_bearer)) {
           /* one of them was different */
           continue;
         }
@@ -1369,6 +1371,11 @@ ConnectionExists(struct Curl_easy *data,
          (data->state.httpwant < CURL_HTTP_VERSION_2_0))
         continue;
 
+      if(get_protocol_family(needle->handler) == PROTO_FAMILY_SSH) {
+        if(!ssh_config_matches(needle, check))
+          continue;
+      }
+
       if((needle->handler->flags&PROTOPT_SSL)
 #ifndef CURL_DISABLE_PROXY
          || !needle->bits.httpproxy || needle->bits.tunnel_proxy
@@ -1427,8 +1434,8 @@ ConnectionExists(struct Curl_easy *data,
            possible. (Especially we must not reuse the same connection if
            partway through a handshake!) */
         if(wantNTLMhttp) {
-          if(strcmp(needle->user, check->user) ||
-             strcmp(needle->passwd, check->passwd)) {
+          if(Curl_timestrcmp(needle->user, check->user) ||
+             Curl_timestrcmp(needle->passwd, check->passwd)) {
 
             /* we prefer a credential match, but this is at least a connection
                that can be reused and "upgraded" to NTLM */
@@ -1450,8 +1457,10 @@ ConnectionExists(struct Curl_easy *data,
           if(!check->http_proxy.user || !check->http_proxy.passwd)
             continue;
 
-          if(strcmp(needle->http_proxy.user, check->http_proxy.user) ||
-             strcmp(needle->http_proxy.passwd, check->http_proxy.passwd))
+          if(Curl_timestrcmp(needle->http_proxy.user,
+                             check->http_proxy.user) ||
+             Curl_timestrcmp(needle->http_proxy.passwd,
+                             check->http_proxy.passwd))
             continue;
         }
         else if(check->proxy_ntlm_state != NTLMSTATE_NONE) {
@@ -1507,7 +1516,7 @@ ConnectionExists(struct Curl_easy *data,
 #endif
           /* When not multiplexed, we have a match here! */
           chosen = check;
-          infof(data, "Multiplexed connection found!");
+          infof(data, "Multiplexed connection found");
           break;
         }
         else {
@@ -1521,7 +1530,7 @@ ConnectionExists(struct Curl_easy *data,
 
   if(chosen) {
     /* mark it as used before releasing the lock */
-    Curl_attach_connnection(data, chosen);
+    Curl_attach_connection(data, chosen);
     CONNCACHE_UNLOCK(data);
     *usethis = chosen;
     return TRUE; /* yes, we found one to use! */
@@ -1574,20 +1583,6 @@ bool Curl_is_ASCII_name(const char *hostname)
   return TRUE;
 }
 
-/*
- * Strip single trailing dot in the hostname,
- * primarily for SNI and http host header.
- */
-static void strip_trailing_dot(struct hostname *host)
-{
-  size_t len;
-  if(!host || !host->name)
-    return;
-  len = strlen(host->name);
-  if(len && (host->name[len-1] == '.'))
-    host->name[len-1] = 0;
-}
-
 /*
  * Perform any necessary IDN conversion of hostname
  */
@@ -1637,7 +1632,7 @@ CURLcode Curl_idnconvert_hostname(struct Curl_easy *data,
 #elif defined(USE_WIN32_IDN)
     char *ace_hostname = NULL;
 
-    if(curl_win32_idn_to_ascii(host->name, &ace_hostname)) {
+    if(Curl_win32_idn_to_ascii(host->name, &ace_hostname)) {
       host->encalloc = ace_hostname;
       /* change the name pointer to point to the encoded hostname */
       host->name = host->encalloc;
@@ -1668,7 +1663,7 @@ void Curl_free_idnconverted_hostname(struct hostname *host)
   }
 #elif defined(USE_WIN32_IDN)
   free(host->encalloc); /* must be freed with free() since this was
-                           allocated by curl_win32_idn_to_ascii */
+                           allocated by Curl_win32_idn_to_ascii */
   host->encalloc = NULL;
 #else
   (void)host;
@@ -1690,18 +1685,35 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
      Note that these backend pointers can be swapped by vtls (eg ssl backend
      data becomes proxy backend data). */
   {
-    size_t sslsize = Curl_ssl->sizeof_ssl_backend_data;
-    char *ssl = calloc(SSL_BACKEND_CNT, sslsize);
+    size_t onesize = Curl_ssl->sizeof_ssl_backend_data;
+    size_t totalsize = onesize;
+    char *ssl;
+
+#ifndef CURL_DISABLE_FTP
+    totalsize *= 2;
+#endif
+#ifndef CURL_DISABLE_PROXY
+    totalsize *= 2;
+#endif
+
+    ssl = calloc(1, totalsize);
     if(!ssl) {
       free(conn);
       return NULL;
     }
     conn->ssl_extra = ssl;
-    conn->ssl[0].backend = (void *)ssl;
-    conn->ssl[1].backend = (void *)(ssl + sslsize);
+    conn->ssl[FIRSTSOCKET].backend = (void *)ssl;
+#ifndef CURL_DISABLE_FTP
+    ssl += onesize;
+    conn->ssl[SECONDARYSOCKET].backend = (void *)ssl;
+#endif
 #ifndef CURL_DISABLE_PROXY
-    conn->proxy_ssl[0].backend = (void *)(ssl + 2 * sslsize);
-    conn->proxy_ssl[1].backend = (void *)(ssl + 3 * sslsize);
+    ssl += onesize;
+    conn->proxy_ssl[FIRSTSOCKET].backend = (void *)ssl;
+#ifndef CURL_DISABLE_FTP
+    ssl += onesize;
+    conn->proxy_ssl[SECONDARYSOCKET].backend = (void *)ssl;
+#endif
 #endif
   }
 #endif
@@ -1761,7 +1773,6 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
   conn->bits.tunnel_proxy = data->set.tunnel_thru_httpproxy;
 #endif /* CURL_DISABLE_PROXY */
 
-  conn->bits.user_passwd = (data->state.aptr.user) ? TRUE : FALSE;
 #ifndef CURL_DISABLE_FTP
   conn->bits.ftp_use_epsv = data->set.ftp_use_epsv;
   conn->bits.ftp_use_eprt = data->set.ftp_use_eprt;
@@ -1769,14 +1780,16 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
   conn->ssl_config.verifystatus = data->set.ssl.primary.verifystatus;
   conn->ssl_config.verifypeer = data->set.ssl.primary.verifypeer;
   conn->ssl_config.verifyhost = data->set.ssl.primary.verifyhost;
+  conn->ssl_config.ssl_options = data->set.ssl.primary.ssl_options;
 #ifndef CURL_DISABLE_PROXY
   conn->proxy_ssl_config.verifystatus =
     data->set.proxy_ssl.primary.verifystatus;
   conn->proxy_ssl_config.verifypeer = data->set.proxy_ssl.primary.verifypeer;
   conn->proxy_ssl_config.verifyhost = data->set.proxy_ssl.primary.verifyhost;
+  conn->proxy_ssl_config.ssl_options = data->set.proxy_ssl.primary.ssl_options;
 #endif
   conn->ip_version = data->set.ipver;
-  conn->bits.connect_only = data->set.connect_only;
+  conn->connect_only = data->set.connect_only;
   conn->transport = TRNSPRT_TCP; /* most of them are TCP streams */
 
 #if !defined(CURL_DISABLE_HTTP) && defined(USE_NTLM) && \
@@ -1820,15 +1833,18 @@ static struct connectdata *allocate_conn(struct Curl_easy *data)
 }
 
 /* returns the handler if the given scheme is built-in */
-const struct Curl_handler *Curl_builtin_scheme(const char *scheme)
+const struct Curl_handler *Curl_builtin_scheme(const char *scheme,
+                                               size_t schemelen)
 {
   const struct Curl_handler * const *pp;
   const struct Curl_handler *p;
   /* Scan protocol handler table and match against 'scheme'. The handler may
      be changed later when the protocol specific setup function is called. */
+  if(schemelen == CURL_ZERO_TERMINATED)
+    schemelen = strlen(scheme);
   for(pp = protocols; (p = *pp) != NULL; pp++)
-    if(strcasecompare(p->scheme, scheme))
-      /* Protocol found in table. Check if allowed */
+    if(strncasecompare(p->scheme, scheme, schemelen) && !p->scheme[schemelen])
+      /* Protocol found in table. */
       return p;
   return NULL; /* not found */
 }
@@ -1838,7 +1854,8 @@ static CURLcode findprotocol(struct Curl_easy *data,
                              struct connectdata *conn,
                              const char *protostr)
 {
-  const struct Curl_handler *p = Curl_builtin_scheme(protostr);
+  const struct Curl_handler *p = Curl_builtin_scheme(protostr,
+                                                     CURL_ZERO_TERMINATED);
 
   if(p && /* Protocol found in table. Check if allowed */
      (data->set.allowed_protocols & p->protocol)) {
@@ -1882,6 +1899,7 @@ CURLcode Curl_uc_to_curlcode(CURLUcode uc)
   }
 }
 
+#ifdef ENABLE_IPV6
 /*
  * If the URL was set with an IPv6 numerical address with a zone id part, set
  * the scope_id based on that!
@@ -1931,6 +1949,9 @@ static void zonefrom_url(CURLU *uh, struct Curl_easy *data,
     free(zoneid);
   }
 }
+#else
+#define zonefrom_url(a,b,c) Curl_nop_stmt
+#endif
 
 /*
  * Parse URL and fill in the relevant members of the connection struct.
@@ -1958,7 +1979,7 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
     return CURLE_OUT_OF_MEMORY;
 
   if(data->set.str[STRING_DEFAULT_PROTOCOL] &&
-     !Curl_is_absolute_url(data->state.url, NULL, 0)) {
+     !Curl_is_absolute_url(data->state.url, NULL, 0, TRUE)) {
     char *url = aprintf("%s://%s", data->set.str[STRING_DEFAULT_PROTOCOL],
                         data->state.url);
     if(!url)
@@ -2002,10 +2023,60 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
     if(!strcasecompare("file", data->state.up.scheme))
       return CURLE_OUT_OF_MEMORY;
   }
+  else if(strlen(data->state.up.hostname) > MAX_URL_LEN) {
+    failf(data, "Too long host name (maximum is %d)", MAX_URL_LEN);
+    return CURLE_URL_MALFORMAT;
+  }
+  hostname = data->state.up.hostname;
+
+  if(hostname && hostname[0] == '[') {
+    /* This looks like an IPv6 address literal. See if there is an address
+       scope. */
+    size_t hlen;
+    conn->bits.ipv6_ip = TRUE;
+    /* cut off the brackets! */
+    hostname++;
+    hlen = strlen(hostname);
+    hostname[hlen - 1] = 0;
+
+    zonefrom_url(uh, data, conn);
+  }
+
+  /* make sure the connect struct gets its own copy of the host name */
+  conn->host.rawalloc = strdup(hostname ? hostname : "");
+  if(!conn->host.rawalloc)
+    return CURLE_OUT_OF_MEMORY;
+  conn->host.name = conn->host.rawalloc;
+
+  /*************************************************************
+   * IDN-convert the hostnames
+   *************************************************************/
+  result = Curl_idnconvert_hostname(data, &conn->host);
+  if(result)
+    return result;
+  if(conn->bits.conn_to_host) {
+    result = Curl_idnconvert_hostname(data, &conn->conn_to_host);
+    if(result)
+      return result;
+  }
+#ifndef CURL_DISABLE_PROXY
+  if(conn->bits.httpproxy) {
+    result = Curl_idnconvert_hostname(data, &conn->http_proxy.host);
+    if(result)
+      return result;
+  }
+  if(conn->bits.socksproxy) {
+    result = Curl_idnconvert_hostname(data, &conn->socks_proxy.host);
+    if(result)
+      return result;
+  }
+#endif
 
 #ifndef CURL_DISABLE_HSTS
+  /* HSTS upgrade */
   if(data->hsts && strcasecompare("http", data->state.up.scheme)) {
-    if(Curl_hsts(data->hsts, data->state.up.hostname, TRUE)) {
+    /* This MUST use the IDN decoded name */
+    if(Curl_hsts(data->hsts, conn->host.name, TRUE)) {
       char *url;
       Curl_safefree(data->state.up.scheme);
       uc = curl_url_set(uh, CURLUPART_SCHEME, "https", 0);
@@ -2038,45 +2109,47 @@ 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.user) {
-    /* we don't use the URL API's URL decoder option here since it rejects
-       control codes and we want to allow them for some schemes in the user
-       and password fields */
-    uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0);
+  if(!data->state.aptr.passwd) {
+    uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
     if(!uc) {
       char *decoded;
-      result = Curl_urldecode(NULL, data->state.up.user, 0, &decoded, NULL,
+      result = Curl_urldecode(data->state.up.password, 0, &decoded, NULL,
                               conn->handler->flags&PROTOPT_USERPWDCTRL ?
                               REJECT_ZERO : REJECT_CTRL);
       if(result)
         return result;
-      conn->user = decoded;
-      conn->bits.user_passwd = TRUE;
-      result = Curl_setstropt(&data->state.aptr.user, decoded);
+      conn->passwd = decoded;
+      result = Curl_setstropt(&data->state.aptr.passwd, decoded);
       if(result)
         return result;
     }
-    else if(uc != CURLUE_NO_USER)
+    else if(uc != CURLUE_NO_PASSWORD)
       return Curl_uc_to_curlcode(uc);
   }
 
-  if(!data->state.aptr.passwd) {
-    uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0);
+  if(!data->set.str[STRING_USERNAME]) {
+    /* we don't use the URL API's URL decoder option here since it rejects
+       control codes and we want to allow them for some schemes in the user
+       and password fields */
+    uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0);
     if(!uc) {
       char *decoded;
-      result = Curl_urldecode(NULL, data->state.up.password, 0, &decoded, NULL,
+      result = Curl_urldecode(data->state.up.user, 0, &decoded, NULL,
                               conn->handler->flags&PROTOPT_USERPWDCTRL ?
                               REJECT_ZERO : REJECT_CTRL);
       if(result)
         return result;
-      conn->passwd = decoded;
-      conn->bits.user_passwd = TRUE;
-      result = Curl_setstropt(&data->state.aptr.passwd, decoded);
-      if(result)
-        return result;
+      conn->user = decoded;
+      result = Curl_setstropt(&data->state.aptr.user, decoded);
     }
-    else if(uc != CURLUE_NO_PASSWORD)
+    else if(uc != CURLUE_NO_USER)
       return Curl_uc_to_curlcode(uc);
+    else if(data->state.aptr.passwd) {
+      /* no user was set but a password, set a blank user */
+      result = Curl_setstropt(&data->state.aptr.user, "");
+    }
+    if(result)
+      return result;
   }
 
   uc = curl_url_get(uh, CURLUPART_OPTIONS, &data->state.up.options,
@@ -2089,7 +2162,8 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
   else if(uc != CURLUE_NO_OPTIONS)
     return Curl_uc_to_curlcode(uc);
 
-  uc = curl_url_get(uh, CURLUPART_PATH, &data->state.up.path, 0);
+  uc = curl_url_get(uh, CURLUPART_PATH, &data->state.up.path,
+                    CURLU_URLENCODE);
   if(uc)
     return Curl_uc_to_curlcode(uc);
 
@@ -2103,34 +2177,16 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data,
     unsigned long port = strtoul(data->state.up.port, NULL, 10);
     conn->port = conn->remote_port =
       (data->set.use_port && data->state.allow_port) ?
-      (int)data->set.use_port : curlx_ultous(port);
+      data->set.use_port : curlx_ultous(port);
   }
 
   (void)curl_url_get(uh, CURLUPART_QUERY, &data->state.up.query, 0);
 
-  hostname = data->state.up.hostname;
-  if(hostname && hostname[0] == '[') {
-    /* This looks like an IPv6 address literal. See if there is an address
-       scope. */
-    size_t hlen;
-    conn->bits.ipv6_ip = TRUE;
-    /* cut off the brackets! */
-    hostname++;
-    hlen = strlen(hostname);
-    hostname[hlen - 1] = 0;
-
-    zonefrom_url(uh, data, conn);
-  }
-
-  /* make sure the connect struct gets its own copy of the host name */
-  conn->host.rawalloc = strdup(hostname ? hostname : "");
-  if(!conn->host.rawalloc)
-    return CURLE_OUT_OF_MEMORY;
-  conn->host.name = conn->host.rawalloc;
-
+#ifdef ENABLE_IPV6
   if(data->set.scope_id)
     /* Override any scope that was set above.  */
     conn->scope_id = data->set.scope_id;
+#endif
 
   return CURLE_OK;
 }
@@ -2223,83 +2279,6 @@ void Curl_free_request_state(struct Curl_easy *data)
 
 
 #ifndef CURL_DISABLE_PROXY
-/****************************************************************
-* Checks if the host is in the noproxy list. returns true if it matches
-* and therefore the proxy should NOT be used.
-****************************************************************/
-static bool check_noproxy(const char *name, const char *no_proxy)
-{
-  /* no_proxy=domain1.dom,host.domain2.dom
-   *   (a comma-separated list of hosts which should
-   *   not be proxied, or an asterisk to override
-   *   all proxy variables)
-   */
-  if(no_proxy && no_proxy[0]) {
-    size_t tok_start;
-    size_t tok_end;
-    const char *separator = ", ";
-    size_t no_proxy_len;
-    size_t namelen;
-    char *endptr;
-    if(strcasecompare("*", no_proxy)) {
-      return TRUE;
-    }
-
-    /* NO_PROXY was specified and it wasn't just an asterisk */
-
-    no_proxy_len = strlen(no_proxy);
-    if(name[0] == '[') {
-      /* IPv6 numerical address */
-      endptr = strchr(name, ']');
-      if(!endptr)
-        return FALSE;
-      name++;
-      namelen = endptr - name;
-    }
-    else
-      namelen = strlen(name);
-
-    for(tok_start = 0; tok_start < no_proxy_len; tok_start = tok_end + 1) {
-      while(tok_start < no_proxy_len &&
-            strchr(separator, no_proxy[tok_start]) != NULL) {
-        /* Look for the beginning of the token. */
-        ++tok_start;
-      }
-
-      if(tok_start == no_proxy_len)
-        break; /* It was all trailing separator chars, no more tokens. */
-
-      for(tok_end = tok_start; tok_end < no_proxy_len &&
-            strchr(separator, no_proxy[tok_end]) == NULL; ++tok_end)
-        /* Look for the end of the token. */
-        ;
-
-      /* To match previous behavior, where it was necessary to specify
-       * ".local.com" to prevent matching "notlocal.com", we will leave
-       * the '.' off.
-       */
-      if(no_proxy[tok_start] == '.')
-        ++tok_start;
-
-      if((tok_end - tok_start) <= namelen) {
-        /* Match the last part of the name to the domain we are checking. */
-        const char *checkn = name + namelen - (tok_end - tok_start);
-        if(strncasecompare(no_proxy + tok_start, checkn,
-                           tok_end - tok_start)) {
-          if((tok_end - tok_start) == namelen || *(checkn - 1) == '.') {
-            /* We either have an exact match, or the previous character is a .
-             * so it is within the same domain, so no proxy for this host.
-             */
-            return TRUE;
-          }
-        }
-      } /* if((tok_end - tok_start) <= namelen) */
-    } /* for(tok_start = 0; tok_start < no_proxy_len;
-         tok_start = tok_end + 1) */
-  } /* NO_PROXY was specified and it wasn't just an asterisk */
-
-  return FALSE;
-}
 
 #ifndef CURL_DISABLE_HTTP
 /****************************************************************
@@ -2339,7 +2318,7 @@ static char *detect_proxy(struct Curl_easy *data,
 
   /* Now, build <protocol>_proxy and check for such a one to use */
   while(*protop)
-    *envp++ = (char)tolower((int)*protop++);
+    *envp++ = Curl_raw_tolower(*protop++);
 
   /* append _proxy */
   strcpy(envp, "_proxy");
@@ -2397,13 +2376,18 @@ static CURLcode parse_proxy(struct Curl_easy *data,
   int port = -1;
   char *proxyuser = NULL;
   char *proxypasswd = NULL;
-  char *host;
+  char *host = NULL;
   bool sockstype;
   CURLUcode uc;
   struct proxy_info *proxyinfo;
   CURLU *uhp = curl_url();
   CURLcode result = CURLE_OK;
   char *scheme = NULL;
+#ifdef USE_UNIX_SOCKETS
+  char *path = NULL;
+  bool is_unix_proxy = FALSE;
+#endif
+
 
   if(!uhp) {
     result = CURLE_OUT_OF_MEMORY;
@@ -2528,21 +2512,54 @@ static CURLcode parse_proxy(struct Curl_easy *data,
     result = CURLE_OUT_OF_MEMORY;
     goto error;
   }
-  Curl_safefree(proxyinfo->host.rawalloc);
-  proxyinfo->host.rawalloc = host;
-  if(host[0] == '[') {
-    /* this is a numerical IPv6, strip off the brackets */
-    size_t len = strlen(host);
-    host[len-1] = 0; /* clear the trailing bracket */
-    host++;
-    zonefrom_url(uhp, data, conn);
+#ifdef USE_UNIX_SOCKETS
+  if(sockstype && strcasecompare(UNIX_SOCKET_PREFIX, host)) {
+    uc = curl_url_get(uhp, CURLUPART_PATH, &path, CURLU_URLDECODE);
+    if(uc) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto error;
+    }
+    /* path will be "/", if no path was was found */
+    if(strcmp("/", path)) {
+      is_unix_proxy = TRUE;
+      free(host);
+      host = aprintf(UNIX_SOCKET_PREFIX"%s", path);
+      if(!host) {
+        result = CURLE_OUT_OF_MEMORY;
+        goto error;
+      }
+      Curl_safefree(proxyinfo->host.rawalloc);
+      proxyinfo->host.rawalloc = host;
+      proxyinfo->host.name = host;
+      host = NULL;
+    }
+  }
+
+  if(!is_unix_proxy) {
+#endif
+    Curl_safefree(proxyinfo->host.rawalloc);
+    proxyinfo->host.rawalloc = host;
+    if(host[0] == '[') {
+      /* this is a numerical IPv6, strip off the brackets */
+      size_t len = strlen(host);
+      host[len-1] = 0; /* clear the trailing bracket */
+      host++;
+      zonefrom_url(uhp, data, conn);
+    }
+    proxyinfo->host.name = host;
+    host = NULL;
+#ifdef USE_UNIX_SOCKETS
   }
-  proxyinfo->host.name = host;
+#endif
 
   error:
   free(proxyuser);
   free(proxypasswd);
+  free(host);
   free(scheme);
+#ifdef USE_UNIX_SOCKETS
+  free(path);
+#endif
   curl_url_cleanup(uhp);
   return result;
 }
@@ -2560,14 +2577,14 @@ static CURLcode parse_proxy_auth(struct Curl_easy *data,
   CURLcode result = CURLE_OK;
 
   if(proxyuser) {
-    result = Curl_urldecode(data, proxyuser, 0, &conn->http_proxy.user, NULL,
+    result = Curl_urldecode(proxyuser, 0, &conn->http_proxy.user, NULL,
                             REJECT_ZERO);
     if(!result)
       result = Curl_setstropt(&data->state.aptr.proxyuser,
                               conn->http_proxy.user);
   }
   if(!result && proxypasswd) {
-    result = Curl_urldecode(data, proxypasswd, 0, &conn->http_proxy.passwd,
+    result = Curl_urldecode(proxypasswd, 0, &conn->http_proxy.passwd,
                             NULL, REJECT_ZERO);
     if(!result)
       result = Curl_setstropt(&data->state.aptr.proxypasswd,
@@ -2630,8 +2647,8 @@ static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
     }
   }
 
-  if(check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY] ?
-      data->set.str[STRING_NOPROXY] : no_proxy)) {
+  if(Curl_check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY] ?
+                        data->set.str[STRING_NOPROXY] : no_proxy)) {
     Curl_safefree(proxy);
     Curl_safefree(socksproxy);
   }
@@ -2669,16 +2686,16 @@ static CURLcode create_conn_helper_init_proxy(struct Curl_easy *data,
    * connection that may exist registered to the same proxy host.
    ***********************************************************************/
   if(proxy || socksproxy) {
+    curl_proxytype ptype = (curl_proxytype)conn->http_proxy.proxytype;
     if(proxy) {
-      result = parse_proxy(data, conn, proxy, conn->http_proxy.proxytype);
+      result = parse_proxy(data, conn, proxy, ptype);
       Curl_safefree(proxy); /* parse_proxy copies the proxy string */
       if(result)
         goto out;
     }
 
     if(socksproxy) {
-      result = parse_proxy(data, conn, socksproxy,
-                           conn->socks_proxy.proxytype);
+      result = parse_proxy(data, conn, socksproxy, ptype);
       /* parse_proxy copies the socks proxy string */
       Curl_safefree(socksproxy);
       if(result)
@@ -2828,15 +2845,15 @@ CURLcode Curl_parse_login_details(const char *login, const size_t len,
           (psep && psep > osep ? (size_t)(psep - osep) :
                                  (size_t)(login + len - osep)) - 1 : 0);
 
-  /* Allocate the user portion buffer */
-  if(userp && ulen) {
+  /* Allocate the user portion buffer, which can be zero length */
+  if(userp) {
     ubuf = malloc(ulen + 1);
     if(!ubuf)
       result = CURLE_OUT_OF_MEMORY;
   }
 
   /* Allocate the password portion buffer */
-  if(!result && passwdp && plen) {
+  if(!result && passwdp && psep) {
     pbuf = malloc(plen + 1);
     if(!pbuf) {
       free(ubuf);
@@ -2899,7 +2916,7 @@ static CURLcode parse_remote_port(struct Curl_easy *data,
     /* if set, we use this instead of the port possibly given in the URL */
     char portbuf[16];
     CURLUcode uc;
-    conn->remote_port = (unsigned short)data->set.use_port;
+    conn->remote_port = data->set.use_port;
     msnprintf(portbuf, sizeof(portbuf), "%d", conn->remote_port);
     uc = curl_url_set(data->state.uh, CURLUPART_PORT, portbuf, 0);
     if(uc)
@@ -2921,14 +2938,6 @@ static CURLcode override_login(struct Curl_easy *data,
   char **passwdp = &conn->passwd;
   char **optionsp = &conn->options;
 
-#ifndef CURL_DISABLE_NETRC
-  if(data->set.use_netrc == CURL_NETRC_REQUIRED && conn->bits.user_passwd) {
-    Curl_safefree(*userp);
-    Curl_safefree(*passwdp);
-    conn->bits.user_passwd = FALSE; /* disable user+password */
-  }
-#endif
-
   if(data->set.str[STRING_OPTIONS]) {
     free(*optionsp);
     *optionsp = strdup(data->set.str[STRING_OPTIONS]);
@@ -2937,38 +2946,62 @@ static CURLcode override_login(struct Curl_easy *data,
   }
 
 #ifndef CURL_DISABLE_NETRC
+  if(data->set.use_netrc == CURL_NETRC_REQUIRED) {
+    Curl_safefree(*userp);
+    Curl_safefree(*passwdp);
+  }
   conn->bits.netrc = FALSE;
   if(data->set.use_netrc && !data->set.str[STRING_USERNAME]) {
-    bool netrc_user_changed = FALSE;
-    bool netrc_passwd_changed = FALSE;
     int ret;
+    bool url_provided = FALSE;
+
+    if(data->state.aptr.user) {
+      /* there was a user name in the URL. Use the URL decoded version */
+      userp = &data->state.aptr.user;
+      url_provided = TRUE;
+    }
 
     ret = Curl_parsenetrc(conn->host.name,
                           userp, passwdp,
-                          &netrc_user_changed, &netrc_passwd_changed,
                           data->set.str[STRING_NETRC_FILE]);
     if(ret > 0) {
       infof(data, "Couldn't find host %s in the %s file; using defaults",
             conn->host.name, data->set.str[STRING_NETRC_FILE]);
     }
     else if(ret < 0) {
-      return CURLE_OUT_OF_MEMORY;
+      failf(data, ".netrc parser error");
+      return CURLE_READ_ERROR;
     }
     else {
       /* set bits.netrc TRUE to remember that we got the name from a .netrc
          file, so that it is safe to use even if we followed a Location: to a
          different host or similar. */
       conn->bits.netrc = TRUE;
-      conn->bits.user_passwd = TRUE; /* enable user+password */
+    }
+    if(url_provided) {
+      Curl_safefree(conn->user);
+      conn->user = strdup(*userp);
+      if(!conn->user)
+        return CURLE_OUT_OF_MEMORY;
+    }
+    /* no user was set but a password, set a blank user */
+    if(userp && !*userp && *passwdp) {
+      *userp = strdup("");
+      if(!*userp)
+        return CURLE_OUT_OF_MEMORY;
     }
   }
 #endif
 
   /* for updated strings, we update them in the URL */
   if(*userp) {
-    CURLcode result = Curl_setstropt(&data->state.aptr.user, *userp);
-    if(result)
-      return result;
+    CURLcode result;
+    if(data->state.aptr.user != *userp) {
+      /* nothing to do then */
+      result = Curl_setstropt(&data->state.aptr.user, *userp);
+      if(result)
+        return result;
+    }
   }
   if(data->state.aptr.user) {
     uc = curl_url_set(data->state.uh, CURLUPART_USER, data->state.aptr.user,
@@ -2981,7 +3014,6 @@ static CURLcode override_login(struct Curl_easy *data,
         return CURLE_OUT_OF_MEMORY;
     }
   }
-
   if(*passwdp) {
     CURLcode result = Curl_setstropt(&data->state.aptr.passwd, *passwdp);
     if(result)
@@ -3005,14 +3037,15 @@ static CURLcode override_login(struct Curl_easy *data,
 /*
  * Set the login details so they're available in the connection
  */
-static CURLcode set_login(struct connectdata *conn)
+static CURLcode set_login(struct Curl_easy *data,
+                          struct connectdata *conn)
 {
   CURLcode result = CURLE_OK;
   const char *setuser = CURL_DEFAULT_USER;
   const char *setpasswd = CURL_DEFAULT_PASSWORD;
 
   /* If our protocol needs a password and we have none, use the defaults */
-  if((conn->handler->flags & PROTOPT_NEEDSPWD) && !conn->bits.user_passwd)
+  if((conn->handler->flags & PROTOPT_NEEDSPWD) && !data->state.aptr.user)
     ;
   else {
     setuser = "";
@@ -3098,7 +3131,7 @@ static CURLcode parse_connect_to_host_port(struct Curl_easy *data,
      * name nor a numeric can legally start with a bracket.
      */
 #else
-    failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in!");
+    failf(data, "Use of IPv6 in *_CONNECT_TO without IPv6 support built-in");
     result = CURLE_NOT_BUILT_IN;
     goto error;
 #endif
@@ -3269,16 +3302,16 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
     bool hit;
     struct altsvc *as;
     const int allowed_versions = ( ALPN_h1
-#ifdef USE_NGHTTP2
-      | ALPN_h2
+#ifdef USE_HTTP2
+                                   | ALPN_h2
 #endif
 #ifdef ENABLE_QUIC
-      | ALPN_h3
+                                   | ALPN_h3
 #endif
       ) & data->asi->flags;
 
     host = conn->host.rawalloc;
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
     /* with h2 support, check that first */
     srcalpnid = ALPN_h2;
     hit = Curl_altsvc_lookup(data->asi,
@@ -3331,131 +3364,166 @@ static CURLcode parse_connect_to_slist(struct Curl_easy *data,
   return result;
 }
 
-/*************************************************************
- * Resolve the address of the server or proxy
- *************************************************************/
-static CURLcode resolve_server(struct Curl_easy *data,
-                               struct connectdata *conn,
-                               bool *async)
+#ifdef USE_UNIX_SOCKETS
+static CURLcode resolve_unix(struct Curl_easy *data,
+                             struct connectdata *conn,
+                             char *unix_path)
 {
-  CURLcode result = CURLE_OK;
+  struct Curl_dns_entry *hostaddr = NULL;
+  bool longpath = FALSE;
+
+  DEBUGASSERT(unix_path);
+  DEBUGASSERT(conn->dns_entry == NULL);
+
+  /* Unix domain sockets are local. The host gets ignored, just use the
+   * specified domain socket address. Do not cache "DNS entries". There is
+   * no DNS involved and we already have the filesystem path available. */
+  hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
+  if(!hostaddr)
+    return CURLE_OUT_OF_MEMORY;
+
+  hostaddr->addr = Curl_unix2addr(unix_path, &longpath,
+                                  conn->bits.abstract_unix_socket);
+  if(!hostaddr->addr) {
+    if(longpath)
+      /* Long paths are not supported for now */
+      failf(data, "Unix socket path too long: '%s'", unix_path);
+    free(hostaddr);
+    return longpath ? CURLE_COULDNT_RESOLVE_HOST : CURLE_OUT_OF_MEMORY;
+  }
+
+  hostaddr->inuse++;
+  conn->dns_entry = hostaddr;
+  return CURLE_OK;
+}
+#endif
+
+#ifndef CURL_DISABLE_PROXY
+static CURLcode resolve_proxy(struct Curl_easy *data,
+                              struct connectdata *conn,
+                              bool *async)
+{
+  struct Curl_dns_entry *hostaddr = NULL;
+  struct hostname *host;
   timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
+  int rc;
 
-  DEBUGASSERT(conn);
-  DEBUGASSERT(data);
-  /*************************************************************
-   * Resolve the name of the server or proxy
-   *************************************************************/
-  if(conn->bits.reuse)
-    /* We're reusing the connection - no need to resolve anything, and
-       idnconvert_hostname() was called already in create_conn() for the re-use
-       case. */
-    *async = FALSE;
+  DEBUGASSERT(conn->dns_entry == NULL);
 
-  else {
-    /* this is a fresh connect */
-    int rc;
-    struct Curl_dns_entry *hostaddr = NULL;
+  host = conn->bits.socksproxy ? &conn->socks_proxy.host :
+    &conn->http_proxy.host;
 
-#ifdef USE_UNIX_SOCKETS
-    if(conn->unix_domain_socket) {
-      /* Unix domain sockets are local. The host gets ignored, just use the
-       * specified domain socket address. Do not cache "DNS entries". There is
-       * no DNS involved and we already have the filesystem path available */
-      const char *path = conn->unix_domain_socket;
-
-      hostaddr = calloc(1, sizeof(struct Curl_dns_entry));
-      if(!hostaddr)
-        result = CURLE_OUT_OF_MEMORY;
-      else {
-        bool longpath = FALSE;
-        hostaddr->addr = Curl_unix2addr(path, &longpath,
-                                        conn->bits.abstract_unix_socket);
-        if(hostaddr->addr)
-          hostaddr->inuse++;
-        else {
-          /* Long paths are not supported for now */
-          if(longpath) {
-            failf(data, "Unix socket path too long: '%s'", path);
-            result = CURLE_COULDNT_RESOLVE_HOST;
-          }
-          else
-            result = CURLE_OUT_OF_MEMORY;
-          free(hostaddr);
-          hostaddr = NULL;
-        }
-      }
-    }
-    else
+  conn->hostname_resolve = strdup(host->name);
+  if(!conn->hostname_resolve)
+    return CURLE_OUT_OF_MEMORY;
+
+  rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
+                           &hostaddr, timeout_ms);
+  conn->dns_entry = hostaddr;
+  if(rc == CURLRESOLV_PENDING)
+    *async = TRUE;
+  else if(rc == CURLRESOLV_TIMEDOUT)
+    return CURLE_OPERATION_TIMEDOUT;
+  else if(!hostaddr) {
+    failf(data, "Couldn't resolve proxy '%s'", host->dispname);
+    return CURLE_COULDNT_RESOLVE_PROXY;
+  }
+
+  return CURLE_OK;
+}
 #endif
 
-    if(!conn->bits.proxy) {
-      struct hostname *connhost;
-      if(conn->bits.conn_to_host)
-        connhost = &conn->conn_to_host;
-      else
-        connhost = &conn->host;
+static CURLcode resolve_host(struct Curl_easy *data,
+                             struct connectdata *conn,
+                             bool *async)
+{
+  struct Curl_dns_entry *hostaddr = NULL;
+  struct hostname *connhost;
+  timediff_t timeout_ms = Curl_timeleft(data, NULL, TRUE);
+  int rc;
 
-      /* If not connecting via a proxy, extract the port from the URL, if it is
-       * there, thus overriding any defaults that might have been set above. */
-      if(conn->bits.conn_to_port)
-        conn->port = conn->conn_to_port;
-      else
-        conn->port = conn->remote_port;
+  DEBUGASSERT(conn->dns_entry == NULL);
 
-      /* Resolve target host right on */
-      conn->hostname_resolve = strdup(connhost->name);
-      if(!conn->hostname_resolve)
-        return CURLE_OUT_OF_MEMORY;
-      rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
-                               &hostaddr, timeout_ms);
-      if(rc == CURLRESOLV_PENDING)
-        *async = TRUE;
-
-      else if(rc == CURLRESOLV_TIMEDOUT) {
-        failf(data, "Failed to resolve host '%s' with timeout after %ld ms",
-              connhost->dispname,
-              Curl_timediff(Curl_now(), data->progress.t_startsingle));
-        result = CURLE_OPERATION_TIMEDOUT;
-      }
-      else if(!hostaddr) {
-        failf(data, "Could not resolve host: %s", connhost->dispname);
-        result = CURLE_COULDNT_RESOLVE_HOST;
-        /* don't return yet, we need to clean up the timeout first */
-      }
-    }
-#ifndef CURL_DISABLE_PROXY
-    else {
-      /* This is a proxy that hasn't been resolved yet. */
+  connhost = conn->bits.conn_to_host ? &conn->conn_to_host : &conn->host;
 
-      struct hostname * const host = conn->bits.socksproxy ?
-        &conn->socks_proxy.host : &conn->http_proxy.host;
+  /* If not connecting via a proxy, extract the port from the URL, if it is
+   * there, thus overriding any defaults that might have been set above. */
+  conn->port = conn->bits.conn_to_port ? conn->conn_to_port :
+    conn->remote_port;
 
-      /* resolve proxy */
-      conn->hostname_resolve = strdup(host->name);
-      if(!conn->hostname_resolve)
-        return CURLE_OUT_OF_MEMORY;
-      rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
-                               &hostaddr, timeout_ms);
+  /* Resolve target host right on */
+  conn->hostname_resolve = strdup(connhost->name);
+  if(!conn->hostname_resolve)
+    return CURLE_OUT_OF_MEMORY;
 
-      if(rc == CURLRESOLV_PENDING)
-        *async = TRUE;
+  rc = Curl_resolv_timeout(data, conn->hostname_resolve, (int)conn->port,
+                           &hostaddr, timeout_ms);
+  conn->dns_entry = hostaddr;
+  if(rc == CURLRESOLV_PENDING)
+    *async = TRUE;
+  else if(rc == CURLRESOLV_TIMEDOUT) {
+    failf(data, "Failed to resolve host '%s' with timeout after %ld ms",
+          connhost->dispname,
+          Curl_timediff(Curl_now(), data->progress.t_startsingle));
+    return CURLE_OPERATION_TIMEDOUT;
+  }
+  else if(!hostaddr) {
+    failf(data, "Could not resolve host: %s", connhost->dispname);
+    return CURLE_COULDNT_RESOLVE_HOST;
+  }
 
-      else if(rc == CURLRESOLV_TIMEDOUT)
-        result = CURLE_OPERATION_TIMEDOUT;
+  return CURLE_OK;
+}
 
-      else if(!hostaddr) {
-        failf(data, "Couldn't resolve proxy '%s'", host->dispname);
-        result = CURLE_COULDNT_RESOLVE_PROXY;
-        /* don't return yet, we need to clean up the timeout first */
-      }
-    }
+/* Perform a fresh resolve */
+static CURLcode resolve_fresh(struct Curl_easy *data,
+                              struct connectdata *conn,
+                              bool *async)
+{
+#ifdef USE_UNIX_SOCKETS
+  char *unix_path = conn->unix_domain_socket;
+
+#ifndef CURL_DISABLE_PROXY
+  if(!unix_path && conn->socks_proxy.host.name &&
+     !strncmp(UNIX_SOCKET_PREFIX"/",
+              conn->socks_proxy.host.name, sizeof(UNIX_SOCKET_PREFIX)))
+    unix_path = conn->socks_proxy.host.name + sizeof(UNIX_SOCKET_PREFIX) - 1;
 #endif
-    DEBUGASSERT(conn->dns_entry == NULL);
-    conn->dns_entry = hostaddr;
+
+  if(unix_path) {
+    conn->transport = TRNSPRT_UNIX;
+    return resolve_unix(data, conn, unix_path);
   }
+#endif
 
-  return result;
+#ifndef CURL_DISABLE_PROXY
+  if(CONN_IS_PROXIED(conn))
+    return resolve_proxy(data, conn, async);
+#endif
+
+  return resolve_host(data, conn, async);
+}
+
+/*************************************************************
+ * Resolve the address of the server or proxy
+ *************************************************************/
+static CURLcode resolve_server(struct Curl_easy *data,
+                               struct connectdata *conn,
+                               bool *async)
+{
+  DEBUGASSERT(conn);
+  DEBUGASSERT(data);
+
+  /* Resolve the name of the server or proxy */
+  if(conn->bits.reuse) {
+    /* We're reusing the connection - no need to resolve anything, and
+       idnconvert_hostname() was called already in create_conn() for the re-use
+       case. */
+    *async = FALSE;
+    return CURLE_OK;
+  }
+
+  return resolve_fresh(data, conn, async);
 }
 
 /*
@@ -3472,22 +3540,10 @@ static void reuse_conn(struct Curl_easy *data,
      **established** from the primary socket to a remote address. */
   char local_ip[MAX_IPADR_LEN] = "";
   int local_port = -1;
-#ifndef CURL_DISABLE_PROXY
-  Curl_free_idnconverted_hostname(&old_conn->http_proxy.host);
-  Curl_free_idnconverted_hostname(&old_conn->socks_proxy.host);
-
-  free(old_conn->http_proxy.host.rawalloc);
-  free(old_conn->socks_proxy.host.rawalloc);
-  Curl_free_primary_ssl_config(&old_conn->proxy_ssl_config);
-#endif
-  /* free the SSL config struct from this connection struct as this was
-     allocated in vain and is targeted for destruction */
-  Curl_free_primary_ssl_config(&old_conn->ssl_config);
 
   /* get the user+password information from the old_conn struct since it may
    * be new for this request even when we re-use an existing connection */
-  conn->bits.user_passwd = old_conn->bits.user_passwd;
-  if(conn->bits.user_passwd) {
+  if(old_conn->user) {
     /* use the new user name and password though */
     Curl_safefree(conn->user);
     Curl_safefree(conn->passwd);
@@ -3514,20 +3570,17 @@ static void reuse_conn(struct Curl_easy *data,
     old_conn->http_proxy.passwd = NULL;
     old_conn->socks_proxy.passwd = NULL;
   }
-  Curl_safefree(old_conn->http_proxy.user);
-  Curl_safefree(old_conn->socks_proxy.user);
-  Curl_safefree(old_conn->http_proxy.passwd);
-  Curl_safefree(old_conn->socks_proxy.passwd);
 #endif
 
-  /* host can change, when doing keepalive with a proxy or if the case is
-     different this time etc */
   Curl_free_idnconverted_hostname(&conn->host);
   Curl_free_idnconverted_hostname(&conn->conn_to_host);
   Curl_safefree(conn->host.rawalloc);
   Curl_safefree(conn->conn_to_host.rawalloc);
   conn->host = old_conn->host;
+  old_conn->host.rawalloc = NULL;
+  old_conn->host.encalloc = NULL;
   conn->conn_to_host = old_conn->conn_to_host;
+  old_conn->conn_to_host.rawalloc = NULL;
   conn->conn_to_port = old_conn->conn_to_port;
   conn->remote_port = old_conn->remote_port;
   Curl_safefree(conn->hostname_resolve);
@@ -3547,15 +3600,7 @@ static void reuse_conn(struct Curl_easy *data,
   /* re-use init */
   conn->bits.reuse = TRUE; /* yes, we're re-using here */
 
-  Curl_safefree(old_conn->user);
-  Curl_safefree(old_conn->passwd);
-  Curl_safefree(old_conn->options);
-  Curl_safefree(old_conn->localdev);
-  Curl_llist_destroy(&old_conn->easyq, NULL);
-
-#ifdef USE_UNIX_SOCKETS
-  Curl_safefree(old_conn->unix_domain_socket);
-#endif
+  conn_free(old_conn);
 }
 
 /**
@@ -3626,6 +3671,14 @@ static CURLcode create_conn(struct Curl_easy *data,
     }
   }
 
+  if(data->set.str[STRING_BEARER]) {
+    conn->oauth_bearer = strdup(data->set.str[STRING_BEARER]);
+    if(!conn->oauth_bearer) {
+      result = CURLE_OUT_OF_MEMORY;
+      goto out;
+    }
+  }
+
 #ifdef USE_UNIX_SOCKETS
   if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
     conn->unix_domain_socket = strdup(data->set.str[STRING_UNIX_SOCKET_PATH]);
@@ -3665,7 +3718,7 @@ static CURLcode create_conn(struct Curl_easy *data,
   if(result)
     goto out;
 
-  result = set_login(conn); /* default credentials */
+  result = set_login(data, conn); /* default credentials */
   if(result)
     goto out;
 
@@ -3677,29 +3730,6 @@ static CURLcode create_conn(struct Curl_easy *data,
   if(result)
     goto out;
 
-  /*************************************************************
-   * IDN-convert the hostnames
-   *************************************************************/
-  result = Curl_idnconvert_hostname(data, &conn->host);
-  if(result)
-    goto out;
-  if(conn->bits.conn_to_host) {
-    result = Curl_idnconvert_hostname(data, &conn->conn_to_host);
-    if(result)
-      goto out;
-  }
-#ifndef CURL_DISABLE_PROXY
-  if(conn->bits.httpproxy) {
-    result = Curl_idnconvert_hostname(data, &conn->http_proxy.host);
-    if(result)
-      goto out;
-  }
-  if(conn->bits.socksproxy) {
-    result = Curl_idnconvert_hostname(data, &conn->socks_proxy.host);
-    if(result)
-      goto out;
-  }
-#endif
 
   /*************************************************************
    * Check whether the host and the "connect to host" are equal.
@@ -3759,7 +3789,7 @@ static CURLcode create_conn(struct Curl_easy *data,
     if(!result) {
       conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */
 
-      Curl_attach_connnection(data, conn);
+      Curl_attach_connection(data, conn);
       result = Curl_conncache_add_conn(data);
       if(result)
         goto out;
@@ -3797,8 +3827,6 @@ static CURLcode create_conn(struct Curl_easy *data,
   data->set.ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE];
   data->set.ssl.primary.issuercert = data->set.str[STRING_SSL_ISSUERCERT];
   data->set.ssl.primary.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT];
-  data->set.ssl.primary.random_file = data->set.str[STRING_SSL_RANDOM_FILE];
-  data->set.ssl.primary.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
   data->set.ssl.primary.cipher_list =
     data->set.str[STRING_SSL_CIPHER_LIST];
   data->set.ssl.primary.cipher_list13 =
@@ -3812,9 +3840,6 @@ static CURLcode create_conn(struct Curl_easy *data,
 #ifndef CURL_DISABLE_PROXY
   data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY];
   data->set.proxy_ssl.primary.CAfile = data->set.str[STRING_SSL_CAFILE_PROXY];
-  data->set.proxy_ssl.primary.random_file =
-    data->set.str[STRING_SSL_RANDOM_FILE];
-  data->set.proxy_ssl.primary.egdsocket = data->set.str[STRING_SSL_EGDSOCKET];
   data->set.proxy_ssl.primary.cipher_list =
     data->set.str[STRING_SSL_CIPHER_LIST_PROXY];
   data->set.proxy_ssl.primary.cipher_list13 =
@@ -3828,7 +3853,8 @@ static CURLcode create_conn(struct Curl_easy *data,
     data->set.str[STRING_SSL_ISSUERCERT_PROXY];
   data->set.proxy_ssl.primary.issuercert_blob =
     data->set.blobs[BLOB_SSL_ISSUERCERT_PROXY];
-  data->set.proxy_ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_PROXY];
+  data->set.proxy_ssl.primary.CRLfile =
+    data->set.str[STRING_SSL_CRLFILE_PROXY];
   data->set.proxy_ssl.cert_type = data->set.str[STRING_CERT_TYPE_PROXY];
   data->set.proxy_ssl.key = data->set.str[STRING_KEY_PROXY];
   data->set.proxy_ssl.key_type = data->set.str[STRING_KEY_TYPE_PROXY];
@@ -3836,18 +3862,20 @@ static CURLcode create_conn(struct Curl_easy *data,
   data->set.proxy_ssl.primary.clientcert = data->set.str[STRING_CERT_PROXY];
   data->set.proxy_ssl.key_blob = data->set.blobs[BLOB_KEY_PROXY];
 #endif
-  data->set.ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE];
+  data->set.ssl.primary.CRLfile = data->set.str[STRING_SSL_CRLFILE];
   data->set.ssl.cert_type = data->set.str[STRING_CERT_TYPE];
   data->set.ssl.key = data->set.str[STRING_KEY];
   data->set.ssl.key_type = data->set.str[STRING_KEY_TYPE];
   data->set.ssl.key_passwd = data->set.str[STRING_KEY_PASSWD];
   data->set.ssl.primary.clientcert = data->set.str[STRING_CERT];
 #ifdef USE_TLS_SRP
-  data->set.ssl.username = data->set.str[STRING_TLSAUTH_USERNAME];
-  data->set.ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD];
+  data->set.ssl.primary.username = data->set.str[STRING_TLSAUTH_USERNAME];
+  data->set.ssl.primary.password = data->set.str[STRING_TLSAUTH_PASSWORD];
 #ifndef CURL_DISABLE_PROXY
-  data->set.proxy_ssl.username = data->set.str[STRING_TLSAUTH_USERNAME_PROXY];
-  data->set.proxy_ssl.password = data->set.str[STRING_TLSAUTH_PASSWORD_PROXY];
+  data->set.proxy_ssl.primary.username =
+    data->set.str[STRING_TLSAUTH_USERNAME_PROXY];
+  data->set.proxy_ssl.primary.password =
+    data->set.str[STRING_TLSAUTH_PASSWORD_PROXY];
 #endif
 #endif
   data->set.ssl.key_blob = data->set.blobs[BLOB_KEY];
@@ -3894,22 +3922,18 @@ static CURLcode create_conn(struct Curl_easy *data,
      * allocated before we can move along and use the previously existing one.
      */
     reuse_conn(data, conn, conn_temp);
-#ifdef USE_SSL
-    free(conn->ssl_extra);
-#endif
-    free(conn);          /* we don't need this anymore */
     conn = conn_temp;
     *in_connect = conn;
 
 #ifndef CURL_DISABLE_PROXY
-    infof(data, "Re-using existing connection! (#%ld) with %s %s",
+    infof(data, "Re-using existing connection #%ld with %s %s",
           conn->connection_id,
           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",
+    infof(data, "Re-using existing connection #%ld with host %s",
           conn->connection_id, conn->host.dispname);
 #endif
   }
@@ -3918,13 +3942,11 @@ static CURLcode create_conn(struct Curl_easy *data,
        be able to do that if we have reached the limit of how many
        connections we are allowed to open. */
 
-    if(conn->handler->flags & PROTOPT_ALPN_NPN) {
+    if(conn->handler->flags & PROTOPT_ALPN) {
       /* The protocol wants it, so set the bits if enabled in the easy handle
          (default) */
       if(data->set.ssl_enable_alpn)
         conn->bits.tls_enable_alpn = TRUE;
-      if(data->set.ssl_enable_npn)
-        conn->bits.tls_enable_npn = TRUE;
     }
 
     if(waitpipe)
@@ -3933,10 +3955,8 @@ static CURLcode create_conn(struct Curl_easy *data,
       connections_available = FALSE;
     else {
       /* this gets a lock on the conncache */
-      const char *bundlehost;
       struct connectbundle *bundle =
-        Curl_conncache_find_bundle(data, conn, data->state.conn_cache,
-                                   &bundlehost);
+        Curl_conncache_find_bundle(data, conn, data->state.conn_cache);
 
       if(max_host_connections > 0 && bundle &&
          (bundle->num_connections >= max_host_connections)) {
@@ -3947,10 +3967,10 @@ static CURLcode create_conn(struct Curl_easy *data,
         CONNCACHE_UNLOCK(data);
 
         if(conn_candidate)
-          (void)Curl_disconnect(data, conn_candidate, FALSE);
+          Curl_disconnect(data, conn_candidate, FALSE);
         else {
-          infof(data, "No more connections allowed to host %s: %zu",
-                bundlehost, max_host_connections);
+          infof(data, "No more connections allowed to host: %zu",
+                max_host_connections);
           connections_available = FALSE;
         }
       }
@@ -3967,7 +3987,7 @@ static CURLcode create_conn(struct Curl_easy *data,
       /* The cache is full. Let's see if we can kill a connection. */
       conn_candidate = Curl_conncache_extract_oldest(data);
       if(conn_candidate)
-        (void)Curl_disconnect(data, conn_candidate, FALSE);
+        Curl_disconnect(data, conn_candidate, FALSE);
       else {
         infof(data, "No connections available in cache");
         connections_available = FALSE;
@@ -3988,7 +4008,7 @@ static CURLcode create_conn(struct Curl_easy *data,
        * This is a brand new connection, so let's store it in the connection
        * cache of ours!
        */
-      Curl_attach_connnection(data, conn);
+      Curl_attach_connection(data, conn);
       result = Curl_conncache_add_conn(data);
       if(result)
         goto out;
@@ -4000,14 +4020,14 @@ static CURLcode create_conn(struct Curl_easy *data,
        connection based. */
     if((data->state.authhost.picked & (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
        data->state.authhost.done) {
-      infof(data, "NTLM picked AND auth done set, clear picked!");
+      infof(data, "NTLM picked AND auth done set, clear picked");
       data->state.authhost.picked = CURLAUTH_NONE;
       data->state.authhost.done = FALSE;
     }
 
     if((data->state.authproxy.picked & (CURLAUTH_NTLM | CURLAUTH_NTLM_WB)) &&
        data->state.authproxy.done) {
-      infof(data, "NTLM-proxy picked AND auth done set, clear picked!");
+      infof(data, "NTLM-proxy picked AND auth done set, clear picked");
       data->state.authproxy.picked = CURLAUTH_NONE;
       data->state.authproxy.done = FALSE;
     }
@@ -4038,17 +4058,6 @@ static CURLcode create_conn(struct Curl_easy *data,
    *************************************************************/
   result = resolve_server(data, conn, async);
 
-  /* Strip trailing dots. resolve_server copied the name. */
-  strip_trailing_dot(&conn->host);
-#ifndef CURL_DISABLE_PROXY
-  if(conn->bits.httpproxy)
-    strip_trailing_dot(&conn->http_proxy.host);
-  if(conn->bits.socksproxy)
-    strip_trailing_dot(&conn->socks_proxy.host);
-#endif
-  if(conn->bits.conn_to_host)
-    strip_trailing_dot(&conn->conn_to_host);
-
 out:
   return result;
 }
@@ -4146,7 +4155,7 @@ CURLcode Curl_connect(struct Curl_easy *data,
   else if(result && conn) {
     /* We're not allowed to return failure with memory left allocated in the
        connectdata struct, free those here */
-    Curl_detach_connnection(data);
+    Curl_detach_connection(data);
     Curl_conncache_remove_conn(data, conn, TRUE);
     Curl_disconnect(data, conn, TRUE);
   }
index 929fc60f2689eee18bd3986d428074e4287033b9..ba4270d5238efecdbefbae1c7372793ebaf59d04 100644 (file)
--- a/lib/url.h
+++ b/lib/url.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
@@ -35,8 +37,8 @@ void Curl_freeset(struct Curl_easy *data);
 CURLcode Curl_uc_to_curlcode(CURLUcode uc);
 CURLcode Curl_close(struct Curl_easy **datap); /* opposite of curl_open() */
 CURLcode Curl_connect(struct Curl_easy *, bool *async, bool *protocol_connect);
-CURLcode Curl_disconnect(struct Curl_easy *data,
-                         struct connectdata *, bool dead_connection);
+void Curl_disconnect(struct Curl_easy *data,
+                     struct connectdata *, bool dead_connection);
 CURLcode Curl_setup_conn(struct Curl_easy *data,
                          bool *protocol_done);
 void Curl_free_request_state(struct Curl_easy *data);
@@ -44,7 +46,8 @@ CURLcode Curl_parse_login_details(const char *login, const size_t len,
                                   char **userptr, char **passwdptr,
                                   char **optionsptr);
 
-const struct Curl_handler *Curl_builtin_scheme(const char *scheme);
+const struct Curl_handler *Curl_builtin_scheme(const char *scheme,
+                                               size_t schemelen);
 
 bool Curl_is_ASCII_name(const char *hostname);
 CURLcode Curl_idnconvert_hostname(struct Curl_easy *data,
index bd6b6017515ba356279ee32c94f396b87126207a..43a83ef6e4288094691c1cccbc04cfcb5eaf1774 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
 
-bool Curl_is_absolute_url(const char *url, char *scheme, size_t buflen);
+size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen,
+                            bool guess_scheme);
 
 #ifdef DEBUGBUILD
-CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname, bool);
+CURLUcode Curl_parse_port(struct Curl_URL *u, struct dynbuf *host,
+                          bool has_scheme);
 #endif
 
 #endif /* HEADER_CURL_URLAPI_INT_H */
index d29aeb238f68adc7d7b926cb07c1a17036b2237f..7dac81c85c8c15d64b08dccbc0b6aea82fcda1a8 100644 (file)
@@ -18,6 +18,8 @@
  * 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"
 #include "urldata.h"
 #include "urlapi-int.h"
 #include "strcase.h"
-#include "dotdot.h"
 #include "url.h"
 #include "escape.h"
 #include "curl_ctype.h"
 #include "inet_pton.h"
 #include "inet_ntop.h"
+#include "strdup.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -66,9 +68,6 @@ struct Curl_URL {
   char *path;
   char *query;
   char *fragment;
-
-  char *scratch; /* temporary scratch area */
-  char *temppath; /* temporary path pointer */
   long portnum; /* the numerical version */
 };
 
@@ -86,18 +85,6 @@ static void free_urlhandle(struct Curl_URL *u)
   free(u->path);
   free(u->query);
   free(u->fragment);
-  free(u->scratch);
-  free(u->temppath);
-}
-
-/* move the full contents of one handle onto another and
-   free the original */
-static void mv_urlhandle(struct Curl_URL *from,
-                         struct Curl_URL *to)
-{
-  free_urlhandle(to);
-  *to = *from;
-  free(from);
 }
 
 /*
@@ -129,91 +116,50 @@ static const char *find_host_sep(const char *url)
 }
 
 /*
- * Decide in an encoding-independent manner whether a character in an
- * URL must be escaped. The same criterion must be used in strlen_url()
- * and strcpy_url().
+ * Decide in an encoding-independent manner whether a character in a URL must
+ * be escaped. This is used in urlencode_str().
  */
 static bool urlchar_needs_escaping(int c)
 {
   return !(ISCNTRL(c) || ISSPACE(c) || ISGRAPH(c));
 }
 
-/*
- * strlen_url() returns the length of the given URL if the spaces within the
- * URL were properly URL encoded.
- * URL encoding should be skipped for host names, otherwise IDN resolution
- * will fail.
- */
-static size_t strlen_url(const char *url, bool relative)
-{
-  const unsigned char *ptr;
-  size_t newlen = 0;
-  bool left = TRUE; /* left side of the ? */
-  const unsigned char *host_sep = (const unsigned char *) url;
-
-  if(!relative)
-    host_sep = (const unsigned char *) find_host_sep(url);
-
-  for(ptr = (unsigned char *)url; *ptr; ptr++) {
-
-    if(ptr < host_sep) {
-      ++newlen;
-      continue;
-    }
-
-    if(*ptr == ' ') {
-      if(left)
-        newlen += 3;
-      else
-        newlen++;
-      continue;
-    }
-
-    if (*ptr == '?')
-      left = FALSE;
-
-    if(urlchar_needs_escaping(*ptr))
-      newlen += 2;
-
-    newlen++;
-  }
-
-  return newlen;
-}
-
-/* strcpy_url() copies a url to a output buffer and URL-encodes the spaces in
- * the source URL accordingly.
+/* urlencode_str() writes data into an output dynbuf and URL-encodes the
+ * spaces in the source URL accordingly.
+ *
  * URL encoding should be skipped for host names, otherwise IDN resolution
  * will fail.
  */
-static void strcpy_url(char *output, const char *url, bool relative)
+static CURLUcode urlencode_str(struct dynbuf *o, const char *url,
+                               size_t len, bool relative,
+                               bool query)
 {
   /* we must add this with whitespace-replacing */
-  bool left = TRUE;
+  bool left = !query;
   const unsigned char *iptr;
-  char *optr = output;
   const unsigned char *host_sep = (const unsigned char *) url;
 
   if(!relative)
     host_sep = (const unsigned char *) find_host_sep(url);
 
   for(iptr = (unsigned char *)url;    /* read from here */
-      *iptr;         /* until zero byte */
-      iptr++) {
+      len; iptr++, len--) {
 
     if(iptr < host_sep) {
-      *optr++ = *iptr;
+      if(Curl_dyn_addn(o, iptr, 1))
+        return CURLUE_OUT_OF_MEMORY;
       continue;
     }
 
     if(*iptr == ' ') {
       if(left) {
-        *optr++='%'; /* add a '%' */
-        *optr++='2'; /* add a '2' */
-        *optr++='0'; /* add a '0' */
+        if(Curl_dyn_addn(o, "%20", 3))
+          return CURLUE_OUT_OF_MEMORY;
+      }
+      else {
+        if(Curl_dyn_addn(o, "+", 1))
+          return CURLUE_OUT_OF_MEMORY;
       }
-      else
-        *optr++='+'; /* add a '+' here */
       continue;
     }
 
@@ -221,31 +167,37 @@ static void strcpy_url(char *output, const char *url, bool relative)
       left = FALSE;
 
     if(urlchar_needs_escaping(*iptr)) {
-      msnprintf(optr, 4, "%%%02x", *iptr);
-      optr += 3;
+      if(Curl_dyn_addf(o, "%%%02x", *iptr))
+        return CURLUE_OUT_OF_MEMORY;
+    }
+    else {
+      if(Curl_dyn_addn(o, iptr, 1))
+        return CURLUE_OUT_OF_MEMORY;
     }
-    else
-      *optr++ = *iptr;
   }
-  *optr = 0; /* null-terminate output buffer */
 
+  return CURLUE_OK;
 }
 
 /*
- * Returns true if the given URL is absolute (as opposed to relative). Returns
- * the scheme in the buffer if TRUE and 'buf' is non-NULL. The buflen must
- * be larger than MAX_SCHEME_LEN if buf is set.
+ * Returns the length of the scheme if the given URL is absolute (as opposed
+ * to relative). Stores the scheme in the buffer if TRUE and 'buf' is
+ * non-NULL. The buflen must be larger than MAX_SCHEME_LEN if buf is set.
+ *
+ * If 'guess_scheme' is TRUE, it means the URL might be provided without
+ * scheme.
  */
-bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
+size_t Curl_is_absolute_url(const char *url, char *buf, size_t buflen,
+                            bool guess_scheme)
 {
-  size_t i;
+  int i;
   DEBUGASSERT(!buf || (buflen > MAX_SCHEME_LEN));
   (void)buflen; /* only used in debug-builds */
   if(buf)
     buf[0] = 0; /* always leave a defined value in buf */
 #ifdef WIN32
-  if(STARTS_WITH_DRIVE_PREFIX(url))
-    return FALSE;
+  if(guess_scheme && STARTS_WITH_DRIVE_PREFIX(url))
+    return 0;
 #endif
   for(i = 0; i < MAX_SCHEME_LEN; ++i) {
     char s = url[i];
@@ -258,16 +210,22 @@ bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
       break;
     }
   }
-  if(i && (url[i] == ':') && (url[i + 1] == '/')) {
+  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
+       be the host name "data" with a specified port number. */
+
+    /* the length of the scheme is the name part only */
+    size_t len = i;
     if(buf) {
       buf[i] = 0;
       while(i--) {
-        buf[i] = (char)TOLOWER(url[i]);
+        buf[i] = Curl_raw_tolower(url[i]);
       }
     }
-    return TRUE;
+    return len;
   }
-  return FALSE;
+  return 0;
 }
 
 /*
@@ -275,34 +233,26 @@ bool Curl_is_absolute_url(const char *url, char *buf, size_t buflen)
  * URL-encodes any spaces.
  * The returned pointer must be freed by the caller unless NULL
  * (returns NULL on out of memory).
+ *
+ * Note that this function destroys the 'base' string.
  */
-static char *concat_url(const char *base, const char *relurl)
+static char *concat_url(char *base, const char *relurl)
 {
   /***
    TRY to append this new path to the old URL
    to the right of the host part. Oh crap, this is doomed to cause
    problems in the future...
   */
-  char *newest;
+  struct dynbuf newest;
   char *protsep;
   char *pathsep;
-  size_t newlen;
   bool host_changed = FALSE;
-
   const char *useurl = relurl;
-  size_t urllen;
-
-  /* we must make our own copy of the URL to play with, as it may
-     point to read-only data */
-  char *url_clone = strdup(base);
-
-  if(!url_clone)
-    return NULL; /* skip out of this NOW */
 
   /* protsep points to the start of the host name */
-  protsep = strstr(url_clone, "//");
+  protsep = strstr(base, "//");
   if(!protsep)
-    protsep = url_clone;
+    protsep = base;
   else
     protsep += 2; /* pass the slashes */
 
@@ -395,38 +345,24 @@ static char *concat_url(const char *base, const char *relurl)
     }
   }
 
-  /* If the new part contains a space, this is a mighty stupid redirect
-     but we still make an effort to do "right". To the left of a '?'
-     letter we replace each space with %20 while it is replaced with '+'
-     on the right side of the '?' letter.
-  */
-  newlen = strlen_url(useurl, !host_changed);
-
-  urllen = strlen(url_clone);
-
-  newest = malloc(urllen + 1 + /* possible slash */
-                  newlen + 1 /* zero byte */);
-
-  if(!newest) {
-    free(url_clone); /* don't leak this */
-    return NULL;
-  }
+  Curl_dyn_init(&newest, CURL_MAX_INPUT_LENGTH);
 
   /* copy over the root url part */
-  memcpy(newest, url_clone, urllen);
+  if(Curl_dyn_add(&newest, base))
+    return NULL;
 
   /* check if we need to append a slash */
   if(('/' == useurl[0]) || (protsep && !*protsep) || ('?' == useurl[0]))
     ;
-  else
-    newest[urllen++]='/';
+  else {
+    if(Curl_dyn_addn(&newest, "/", 1))
+      return NULL;
+  }
 
   /* then append the new piece on the right side */
-  strcpy_url(&newest[urllen], useurl, !host_changed);
+  urlencode_str(&newest, useurl, strlen(useurl), !host_changed, FALSE);
 
-  free(url_clone);
-
-  return newest;
+  return Curl_dyn_ptr(&newest);
 }
 
 /* scan for byte values < 31 or 127 */
@@ -460,7 +396,7 @@ static bool junkscan(const char *part, unsigned int flags)
  *
  */
 static CURLUcode parse_hostname_login(struct Curl_URL *u,
-                                      char **hostname,
+                                      struct dynbuf *host,
                                       unsigned int flags)
 {
   CURLUcode result = CURLUE_OK;
@@ -470,27 +406,31 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u,
   char *optionsp = NULL;
   const struct Curl_handler *h = NULL;
 
-  /* At this point, we're hoping all the other special cases have
-   * been taken care of, so conn->host.name is at most
-   *    [user[:password][;options]]@]hostname
+  /* At this point, we assume all the other special cases have been taken
+   * care of, so the host is at most
+   *
+   *   [user[:password][;options]]@]hostname
    *
    * We need somewhere to put the embedded details, so do that first.
    */
 
-  char *ptr = strchr(*hostname, '@');
-  char *login = *hostname;
+  char *login = Curl_dyn_ptr(host);
+  char *ptr;
+
+  DEBUGASSERT(login);
 
+  ptr = strchr(login, '@');
   if(!ptr)
     goto out;
 
   /* We will now try to extract the
    * possible login information in a string like:
    * ftp://user:password@ftp.my.site:8021/README */
-  *hostname = ++ptr;
+  ptr++;
 
   /* if this is a known scheme, get some details */
   if(u->scheme)
-    h = Curl_builtin_scheme(u->scheme);
+    h = Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED);
 
   /* We could use the login information in the URL so extract it. Only parse
      options if the handler says we should. Note that 'h' might be NULL! */
@@ -532,6 +472,10 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u,
     u->options = optionsp;
   }
 
+  /* move the name to the start of the host buffer */
+  if(Curl_dyn_tail(host, strlen(ptr)))
+    return CURLUE_OUT_OF_MEMORY;
+
   return CURLUE_OK;
   out:
 
@@ -545,13 +489,13 @@ static CURLUcode parse_hostname_login(struct Curl_URL *u,
   return result;
 }
 
-UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
+UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, struct dynbuf *host,
                                    bool has_scheme)
 {
   char *portptr = NULL;
   char endbracket;
   int len;
-
+  char *hostname = Curl_dyn_ptr(host);
   /*
    * Find the end of an IPv6 address, either on the ']' ending bracket or
    * a percent-encoded zone index.
@@ -588,6 +532,7 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
     char *rest;
     long port;
     char portbuf[7];
+    size_t keep = portptr - hostname;
 
     /* Browser behavior adaptation. If there's a colon with no digits after,
        just cut off the name there which makes us ignore the colon and just
@@ -596,15 +541,15 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
        Don't do it if the URL has no scheme, to make something that looks like
        a scheme not work!
     */
-    if(!portptr[1]) {
-      *portptr = '\0';
+    Curl_dyn_setlen(host, keep);
+    portptr++;
+    if(!*portptr)
       return has_scheme ? CURLUE_OK : CURLUE_BAD_PORT_NUMBER;
-    }
 
-    if(!ISDIGIT(portptr[1]))
+    if(!ISDIGIT(*portptr))
       return CURLUE_BAD_PORT_NUMBER;
 
-    port = strtol(portptr + 1, &rest, 10);  /* Port number must be decimal */
+    port = strtol(portptr, &rest, 10);  /* Port number must be decimal */
 
     if(port > 0xffff)
       return CURLUE_BAD_PORT_NUMBER;
@@ -612,7 +557,6 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
     if(rest[0])
       return CURLUE_BAD_PORT_NUMBER;
 
-    *portptr++ = '\0'; /* cut off the name there */
     *rest = 0;
     /* generate a new port number string to get rid of leading zeroes etc */
     msnprintf(portbuf, sizeof(portbuf), "%ld", port);
@@ -625,12 +569,15 @@ UNITTEST CURLUcode Curl_parse_port(struct Curl_URL *u, char *hostname,
   return CURLUE_OK;
 }
 
-static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
+static CURLUcode hostname_check(struct Curl_URL *u, char *hostname,
+                                size_t hlen) /* length of hostname */
 {
   size_t len;
-  size_t hlen = strlen(hostname);
+  DEBUGASSERT(hostname);
 
-  if(hostname[0] == '[') {
+  if(!hostname[0])
+    return CURLUE_NO_HOST;
+  else if(hostname[0] == '[') {
     const char *l = "0123456789abcdefABCDEF:.";
     if(hlen < 4) /* '[::]' is the shortest possible valid string */
       return CURLUE_BAD_IPV6;
@@ -688,14 +635,12 @@ static CURLUcode hostname_check(struct Curl_URL *u, char *hostname)
 #endif
   }
   else {
-    /* letters from the second string is not ok */
-    len = strcspn(hostname, " \r\n");
+    /* letters from the second string are not ok */
+    len = strcspn(hostname, " \r\n\t/:#?!@{}[]\\$\'\"^`*<>=;,");
     if(hlen != len)
       /* hostname with bad content */
       return CURLUE_BAD_HOSTNAME;
   }
-  if(!hostname[0])
-    return CURLUE_NO_HOST;
   return CURLUE_OK;
 }
 
@@ -789,80 +734,230 @@ static bool ipv4_normalize(const char *hostname, char *outp, size_t olen)
   return TRUE;
 }
 
-/* return strdup'ed version in 'outp', possibly percent decoded */
-static CURLUcode decode_host(char *hostname, char **outp)
+/* if necessary, replace the host content with a URL decoded version */
+static CURLUcode decode_host(struct dynbuf *host)
 {
   char *per = NULL;
-  if(hostname[0] != '[')
+  const char *hostname = Curl_dyn_ptr(host);
+  if(hostname[0] == '[')
     /* only decode if not an ipv6 numerical */
-    per = strchr(hostname, '%');
-  if(!per) {
-    *outp = strdup(hostname);
-    if(!*outp)
-      return CURLUE_OUT_OF_MEMORY;
-  }
+    return CURLUE_OK;
+  per = strchr(hostname, '%');
+  if(!per)
+    /* nothing to decode */
+    return CURLUE_OK;
   else {
-    /* might be encoded */
+    /* encoded */
     size_t dlen;
-    CURLcode result = Curl_urldecode(NULL, hostname, 0,
-                                     outp, &dlen, REJECT_CTRL);
+    char *decoded;
+    CURLcode result = Curl_urldecode(hostname, 0, &decoded, &dlen,
+                                     REJECT_CTRL);
     if(result)
       return CURLUE_BAD_HOSTNAME;
+    Curl_dyn_reset(host);
+    result = Curl_dyn_addn(host, decoded, dlen);
+    free(decoded);
+    if(result)
+      return CURLUE_OUT_OF_MEMORY;
   }
 
   return CURLUE_OK;
 }
 
-static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
+/*
+ * "Remove Dot Segments"
+ * https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
+ */
+
+/*
+ * dedotdotify()
+ * @unittest: 1395
+ *
+ * This function gets a null-terminated path with dot and dotdot sequences
+ * passed in and strips them off according to the rules in RFC 3986 section
+ * 5.2.4.
+ *
+ * The function handles a query part ('?' + stuff) appended but it expects
+ * that fragments ('#' + stuff) have already been cut off.
+ *
+ * RETURNS
+ *
+ * an allocated dedotdotified output string
+ */
+UNITTEST char *dedotdotify(const char *input, size_t clen);
+UNITTEST char *dedotdotify(const char *input, size_t clen)
 {
-  char *path;
-  bool path_alloced = FALSE;
+  char *out = malloc(clen + 1);
+  char *outptr;
+  const char *orginput = input;
+  char *queryp;
+  if(!out)
+    return NULL; /* out of memory */
+
+  *out = 0; /* null-terminates, for inputs like "./" */
+  outptr = out;
+
+  if(!*input)
+    /* zero length input string, return that */
+    return out;
+
+  /*
+   * To handle query-parts properly, we must find it and remove it during the
+   * dotdot-operation and then append it again at the end to the output
+   * string.
+   */
+  queryp = strchr(input, '?');
+
+  do {
+    bool dotdot = TRUE;
+    if(*input == '.') {
+      /*  A.  If the input buffer begins with a prefix of "../" or "./", then
+          remove that prefix from the input buffer; otherwise, */
+
+      if(!strncmp("./", input, 2)) {
+        input += 2;
+        clen -= 2;
+      }
+      else if(!strncmp("../", input, 3)) {
+        input += 3;
+        clen -= 3;
+      }
+      /*  D.  if the input buffer consists only of "." or "..", then remove
+          that from the input buffer; otherwise, */
+
+      else if(!strcmp(".", input) || !strcmp("..", input) ||
+              !strncmp(".?", input, 2) || !strncmp("..?", input, 3)) {
+        *out = 0;
+        break;
+      }
+      else
+        dotdot = FALSE;
+    }
+    else if(*input == '/') {
+      /*  B.  if the input buffer begins with a prefix of "/./" or "/.", where
+          "."  is a complete path segment, then replace that prefix with "/" in
+          the input buffer; otherwise, */
+      if(!strncmp("/./", input, 3)) {
+        input += 2;
+        clen -= 2;
+      }
+      else if(!strcmp("/.", input) || !strncmp("/.?", input, 3)) {
+        *outptr++ = '/';
+        *outptr = 0;
+        break;
+      }
+
+      /*  C.  if the input buffer begins with a prefix of "/../" or "/..",
+          where ".." is a complete path segment, then replace that prefix with
+          "/" in the input buffer and remove the last segment and its
+          preceding "/" (if any) from the output buffer; otherwise, */
+
+      else if(!strncmp("/../", input, 4)) {
+        input += 3;
+        clen -= 3;
+        /* remove the last segment from the output buffer */
+        while(outptr > out) {
+          outptr--;
+          if(*outptr == '/')
+            break;
+        }
+        *outptr = 0; /* null-terminate where it stops */
+      }
+      else if(!strcmp("/..", input) || !strncmp("/..?", input, 4)) {
+        /* remove the last segment from the output buffer */
+        while(outptr > out) {
+          outptr--;
+          if(*outptr == '/')
+            break;
+        }
+        *outptr++ = '/';
+        *outptr = 0; /* null-terminate where it stops */
+        break;
+      }
+      else
+        dotdot = FALSE;
+    }
+    else
+      dotdot = FALSE;
+
+    if(!dotdot) {
+      /*  E.  move the first path segment in the input buffer to the end of
+          the output buffer, including the initial "/" character (if any) and
+          any subsequent characters up to, but not including, the next "/"
+          character or the end of the input buffer. */
+
+      do {
+        *outptr++ = *input++;
+        clen--;
+      } while(*input && (*input != '/') && (*input != '?'));
+      *outptr = 0;
+    }
+
+    /* continue until end of input string OR, if there is a terminating
+       query part, stop there */
+  } while(*input && (!queryp || (input < queryp)));
+
+  if(queryp) {
+    size_t qlen;
+    /* There was a query part, append that to the output. */
+    size_t oindex = queryp - orginput;
+    qlen = strlen(&orginput[oindex]);
+    memcpy(outptr, &orginput[oindex], qlen + 1); /* include zero byte */
+  }
+
+  return out;
+}
+
+static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags)
+{
+  const char *path;
+  size_t pathlen;
   bool uncpath = FALSE;
-  char *hostname;
   char *query = NULL;
   char *fragment = NULL;
-  CURLUcode result;
-  bool url_has_scheme = FALSE;
   char schemebuf[MAX_SCHEME_LEN + 1];
   const char *schemep = NULL;
   size_t schemelen = 0;
   size_t urllen;
+  CURLUcode result = CURLUE_OK;
+  size_t fraglen = 0;
+  struct dynbuf host;
 
   DEBUGASSERT(url);
 
+  Curl_dyn_init(&host, CURL_MAX_INPUT_LENGTH);
+
   /*************************************************************
    * Parse the URL.
    ************************************************************/
   /* allocate scratch area */
   urllen = strlen(url);
-  if(urllen > CURL_MAX_INPUT_LENGTH)
+  if(urllen > CURL_MAX_INPUT_LENGTH) {
     /* excessive input length */
-    return CURLUE_MALFORMED_INPUT;
-
-  path = u->scratch = malloc(urllen * 2 + 2);
-  if(!path)
-    return CURLUE_OUT_OF_MEMORY;
-
-  hostname = &path[urllen + 1];
-  hostname[0] = 0;
-
-  if(Curl_is_absolute_url(url, schemebuf, sizeof(schemebuf))) {
-    url_has_scheme = TRUE;
-    schemelen = strlen(schemebuf);
+    result = CURLUE_MALFORMED_INPUT;
+    goto fail;
   }
 
+  schemelen = Curl_is_absolute_url(url, schemebuf, sizeof(schemebuf),
+                                   flags & (CURLU_GUESS_SCHEME|
+                                            CURLU_DEFAULT_SCHEME));
+
   /* handle the file: scheme */
-  if(url_has_scheme && !strcmp(schemebuf, "file")) {
-    if(urllen <= 6)
+  if(schemelen && !strcmp(schemebuf, "file")) {
+    if(urllen <= 6) {
       /* file:/ is not enough to actually be a complete file: URL */
-      return CURLUE_BAD_FILE_URL;
+      result = CURLUE_BAD_FILE_URL;
+      goto fail;
+    }
 
     /* path has been allocated large enough to hold this */
-    strcpy(path, &url[5]);
+    path = (char *)&url[5];
 
-    u->scheme = strdup("file");
-    if(!u->scheme)
-      return CURLUE_OUT_OF_MEMORY;
+    schemep = u->scheme = strdup("file");
+    if(!u->scheme) {
+      result = CURLUE_OUT_OF_MEMORY;
+      goto fail;
+    }
 
     /* Extra handling URLs with an authority component (i.e. that start with
      * "file://")
@@ -872,7 +967,7 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
      */
     if(path[0] == '/' && path[1] == '/') {
       /* swallow the two slashes */
-      char *ptr = &path[2];
+      const char *ptr = &path[2];
 
       /*
        * According to RFC 8089, a file: URL can be reliably dereferenced if:
@@ -908,13 +1003,17 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
              chars, and the delimiting slash character must be appended to the
              host name */
           path = strpbrk(ptr, "/\\:*?\"<>|");
-          if(!path || *path != '/')
-            return CURLUE_BAD_FILE_URL;
+          if(!path || *path != '/') {
+            result = CURLUE_BAD_FILE_URL;
+            goto fail;
+          }
 
           len = path - ptr;
           if(len) {
-            memcpy(hostname, ptr, len);
-            hostname[len] = 0;
+            if(Curl_dyn_addn(&host, ptr, len)) {
+              result = CURLUE_OUT_OF_MEMORY;
+              goto fail;
+            }
             uncpath = TRUE;
           }
 
@@ -922,7 +1021,8 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
 #else
           /* Invalid file://hostname/, expected localhost or 127.0.0.1 or
              none */
-          return CURLUE_BAD_FILE_URL;
+          result = CURLUE_BAD_FILE_URL;
+          goto fail;
 #endif
         }
       }
@@ -931,7 +1031,8 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
     }
 
     if(!uncpath)
-        hostname = NULL; /* no host for file: URLs by default */
+      /* no host for file: URLs by default */
+      Curl_dyn_reset(&host);
 
 #if !defined(MSDOS) && !defined(WIN32) && !defined(__CYGWIN__)
     /* Don't allow Windows drive letters when not in Windows.
@@ -939,13 +1040,14 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
     if(('/' == path[0] && STARTS_WITH_URL_DRIVE_PREFIX(&path[1])) ||
        STARTS_WITH_URL_DRIVE_PREFIX(path)) {
       /* File drive letters are only accepted in MSDOS/Windows */
-      return CURLUE_BAD_FILE_URL;
+      result = CURLUE_BAD_FILE_URL;
+      goto fail;
     }
 #else
     /* If the path starts with a slash and a drive letter, ditch the slash */
     if('/' == path[0] && STARTS_WITH_URL_DRIVE_PREFIX(&path[1])) {
       /* This cannot be done with strcpy, as the memory chunks overlap! */
-      memmove(path, &path[1], strlen(&path[1]) + 1);
+      path++;
     }
 #endif
 
@@ -955,32 +1057,39 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
     const char *p;
     const char *hostp;
     size_t len;
-    path[0] = 0;
 
-    if(url_has_scheme) {
+    if(schemelen) {
       int i = 0;
       p = &url[schemelen + 1];
       while(p && (*p == '/') && (i < 4)) {
         p++;
         i++;
       }
-      if((i < 1) || (i>3))
-        /* less than one or more than three slashes */
-        return CURLUE_BAD_SLASHES;
 
       schemep = schemebuf;
-      if(!Curl_builtin_scheme(schemep) &&
-         !(flags & CURLU_NON_SUPPORT_SCHEME))
-        return CURLUE_UNSUPPORTED_SCHEME;
+      if(!Curl_builtin_scheme(schemep, CURL_ZERO_TERMINATED) &&
+         !(flags & CURLU_NON_SUPPORT_SCHEME)) {
+        result = CURLUE_UNSUPPORTED_SCHEME;
+        goto fail;
+      }
 
-      if(junkscan(schemep, flags))
-        return CURLUE_BAD_SCHEME;
+      if((i < 1) || (i>3)) {
+        /* less than one or more than three slashes */
+        result = CURLUE_BAD_SLASHES;
+        goto fail;
+      }
+      if(junkscan(schemep, flags)) {
+        result = CURLUE_BAD_SCHEME;
+        goto fail;
+      }
     }
     else {
       /* no scheme! */
 
-      if(!(flags & (CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME)))
-        return CURLUE_BAD_SCHEME;
+      if(!(flags & (CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME))) {
+        result = CURLUE_BAD_SCHEME;
+        goto fail;
+      }
       if(flags & CURLU_DEFAULT_SCHEME)
         schemep = DEFAULT_SCHEME;
 
@@ -997,124 +1106,169 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
 
     len = p - hostp;
     if(len) {
-      memcpy(hostname, hostp, len);
-      hostname[len] = 0;
+      if(Curl_dyn_addn(&host, hostp, len)) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
     }
     else {
-      if(!(flags & CURLU_NO_AUTHORITY))
-        return CURLUE_NO_HOST;
+      if(!(flags & CURLU_NO_AUTHORITY)) {
+        result = CURLUE_NO_HOST;
+        goto fail;
+      }
     }
 
-    len = strlen(p);
-    memcpy(path, p, len);
-    path[len] = 0;
+    path = (char *)p;
 
     if(schemep) {
       u->scheme = strdup(schemep);
-      if(!u->scheme)
-        return CURLUE_OUT_OF_MEMORY;
+      if(!u->scheme) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
     }
   }
 
-  if((flags & CURLU_URLENCODE) && path[0]) {
-    /* worst case output length is 3x the original! */
-    char *newp = malloc(strlen(path) * 3);
-    if(!newp)
-      return CURLUE_OUT_OF_MEMORY;
-    path_alloced = TRUE;
-    strcpy_url(newp, path, TRUE); /* consider it relative */
-    u->temppath = path = newp;
-  }
-
   fragment = strchr(path, '#');
   if(fragment) {
-    *fragment++ = 0;
-    if(junkscan(fragment, flags))
-      return CURLUE_BAD_FRAGMENT;
-    if(fragment[0]) {
-      u->fragment = strdup(fragment);
-      if(!u->fragment)
-        return CURLUE_OUT_OF_MEMORY;
+    fraglen = strlen(fragment);
+    if(fraglen > 1) {
+      /* skip the leading '#' in the copy but include the terminating null */
+      u->fragment = Curl_memdup(fragment + 1, fraglen);
+      if(!u->fragment) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
+
+      if(junkscan(u->fragment, flags)) {
+        result = CURLUE_BAD_FRAGMENT;
+        goto fail;
+      }
     }
   }
 
   query = strchr(path, '?');
-  if(query) {
-    *query++ = 0;
-    if(junkscan(query, flags))
-      return CURLUE_BAD_QUERY;
-    /* done even if the query part is a blank string */
-    u->query = strdup(query);
-    if(!u->query)
-      return CURLUE_OUT_OF_MEMORY;
-  }
+  if(query && (!fragment || (query < fragment))) {
+    size_t qlen = strlen(query) - fraglen; /* includes '?' */
+    pathlen = strlen(path) - qlen - fraglen;
+    if(qlen > 1) {
+      if(qlen && (flags & CURLU_URLENCODE)) {
+        struct dynbuf enc;
+        Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+        /* skip the leading question mark */
+        if(urlencode_str(&enc, query + 1, qlen - 1, TRUE, TRUE)) {
+          result = CURLUE_OUT_OF_MEMORY;
+          goto fail;
+        }
+        u->query = Curl_dyn_ptr(&enc);
+      }
+      else {
+        u->query = Curl_memdup(query + 1, qlen);
+        if(!u->query) {
+          result = CURLUE_OUT_OF_MEMORY;
+          goto fail;
+        }
+        u->query[qlen - 1] = 0;
+      }
 
-  if(junkscan(path, flags))
-    return CURLUE_BAD_PATH;
+      if(junkscan(u->query, flags)) {
+        result = CURLUE_BAD_QUERY;
+        goto fail;
+      }
+    }
+    else {
+      /* single byte query */
+      u->query = strdup("");
+      if(!u->query) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
+    }
+  }
+  else
+    pathlen = strlen(path) - fraglen;
+
+  if(pathlen && (flags & CURLU_URLENCODE)) {
+    struct dynbuf enc;
+    Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+    if(urlencode_str(&enc, path, pathlen, TRUE, FALSE)) {
+      result = CURLUE_OUT_OF_MEMORY;
+      goto fail;
+    }
+    pathlen = Curl_dyn_len(&enc);
+    path = u->path = Curl_dyn_ptr(&enc);
+  }
 
-  if(!path[0])
-    /* if there's no path left set, unset */
+  if(!pathlen) {
+    /* there is no path left, unset */
     path = NULL;
+  }
   else {
+    if(!u->path) {
+      u->path = Curl_memdup(path, pathlen + 1);
+      if(!u->path) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
+      u->path[pathlen] = 0;
+      path = u->path;
+    }
+    else if(flags & CURLU_URLENCODE)
+      /* it might have encoded more than just the path so cut it */
+      u->path[pathlen] = 0;
+
+    if(junkscan(u->path, flags)) {
+      result = CURLUE_BAD_PATH;
+      goto fail;
+    }
+
     if(!(flags & CURLU_PATH_AS_IS)) {
       /* remove ../ and ./ sequences according to RFC3986 */
-      char *newp = Curl_dedotdotify(path);
-      if(!newp)
-        return CURLUE_OUT_OF_MEMORY;
-
-      if(strcmp(newp, path)) {
-        /* if we got a new version */
-        if(path_alloced)
-          Curl_safefree(u->temppath);
-        u->temppath = path = newp;
-        path_alloced = TRUE;
+      char *newp = dedotdotify((char *)path, pathlen);
+      if(!newp) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
       }
-      else
-        free(newp);
+      free(u->path);
+      u->path = newp;
     }
-
-    u->path = path_alloced?path:strdup(path);
-    if(!u->path)
-      return CURLUE_OUT_OF_MEMORY;
-    u->temppath = NULL; /* used now */
   }
 
-  if(hostname) {
+  if(Curl_dyn_len(&host)) {
     char normalized_ipv4[sizeof("255.255.255.255") + 1];
 
     /*
      * Parse the login details and strip them out of the host name.
      */
-    result = parse_hostname_login(u, &hostname, flags);
-    if(result)
-      return result;
-
-    result = Curl_parse_port(u, hostname, url_has_scheme);
+    result = parse_hostname_login(u, &host, flags);
+    if(!result)
+      result = Curl_parse_port(u, &host, schemelen);
     if(result)
-      return result;
+      goto fail;
 
-    if(junkscan(hostname, flags))
-      return CURLUE_BAD_HOSTNAME;
+    if(junkscan(Curl_dyn_ptr(&host), flags)) {
+      result = CURLUE_BAD_HOSTNAME;
+      goto fail;
+    }
 
-    if(0 == strlen(hostname) && (flags & CURLU_NO_AUTHORITY)) {
-      /* Skip hostname check, it's allowed to be empty. */
-      u->host = strdup("");
+    if(ipv4_normalize(Curl_dyn_ptr(&host),
+                      normalized_ipv4, sizeof(normalized_ipv4))) {
+      Curl_dyn_reset(&host);
+      if(Curl_dyn_add(&host, normalized_ipv4)) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
     }
     else {
-      if(ipv4_normalize(hostname, normalized_ipv4, sizeof(normalized_ipv4)))
-        u->host = strdup(normalized_ipv4);
-      else {
-        result = decode_host(hostname, &u->host);
-        if(result)
-          return result;
-        result = hostname_check(u, u->host);
-        if(result)
-          return result;
-      }
+      result = decode_host(&host);
+      if(!result)
+        result = hostname_check(u, Curl_dyn_ptr(&host), Curl_dyn_len(&host));
+      if(result)
+        goto fail;
     }
-    if(!u->host)
-      return CURLUE_OUT_OF_MEMORY;
+
     if((flags & CURLU_GUESS_SCHEME) && !schemep) {
+      const char *hostname = Curl_dyn_ptr(&host);
       /* legacy curl-style guess based on host name */
       if(checkprefix("ftp.", hostname))
         schemep = "ftp";
@@ -1132,26 +1286,42 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
         schemep = "http";
 
       u->scheme = strdup(schemep);
-      if(!u->scheme)
-        return CURLUE_OUT_OF_MEMORY;
+      if(!u->scheme) {
+        result = CURLUE_OUT_OF_MEMORY;
+        goto fail;
+      }
+    }
+  }
+  else if(flags & CURLU_NO_AUTHORITY) {
+    /* allowed to be empty. */
+    if(Curl_dyn_add(&host, "")) {
+      result = CURLUE_OUT_OF_MEMORY;
+      goto fail;
     }
   }
 
-  Curl_safefree(u->scratch);
-  Curl_safefree(u->temppath);
+  u->host = Curl_dyn_ptr(&host);
 
-  return CURLUE_OK;
+  return result;
+  fail:
+  Curl_dyn_free(&host);
+  free_urlhandle(u);
+  return result;
 }
 
 /*
- * Parse the URL and set the relevant members of the Curl_URL struct.
+ * Parse the URL and, if successful, replace everything in the Curl_URL struct.
  */
-static CURLUcode parseurl(const char *url, CURLU *u, unsigned int flags)
+static CURLUcode parseurl_and_replace(const char *url, CURLU *u,
+                                      unsigned int flags)
 {
-  CURLUcode result = seturl(url, u, flags);
-  if(result) {
+  CURLUcode result;
+  CURLU tmpurl;
+  memset(&tmpurl, 0, sizeof(tmpurl));
+  result = parseurl(url, &tmpurl, flags);
+  if(!result) {
     free_urlhandle(u);
-    memset(u, 0, sizeof(struct Curl_URL));
+    *u = tmpurl;
   }
   return result;
 }
@@ -1251,7 +1421,7 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
       /* there's no stored port number, but asked to deliver
          a default one for the scheme */
       const struct Curl_handler *h =
-        Curl_builtin_scheme(u->scheme);
+        Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED);
       if(h) {
         msnprintf(portbuf, sizeof(portbuf), "%u", h->defport);
         ptr = portbuf;
@@ -1261,7 +1431,7 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
       /* there is a stored port number, but ask to inhibit if
          it matches the default one for the scheme */
       const struct Curl_handler *h =
-        Curl_builtin_scheme(u->scheme);
+        Curl_builtin_scheme(u->scheme, CURL_ZERO_TERMINATED);
       if(h && (h->defport == u->portnum) &&
          (flags & CURLU_NO_DEFAULT_PORT))
         ptr = NULL;
@@ -1307,7 +1477,7 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
       else
         return CURLUE_NO_SCHEME;
 
-      h = Curl_builtin_scheme(scheme);
+      h = Curl_builtin_scheme(scheme, CURL_ZERO_TERMINATED);
       if(!port && (flags & CURLU_DEFAULT_PORT)) {
         /* there's no stored port number, but asked to deliver
            a default one for the scheme */
@@ -1330,14 +1500,13 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
       if(u->host[0] == '[') {
         if(u->zoneid) {
           /* make it '[ host %25 zoneid ]' */
+          struct dynbuf enc;
           size_t hostlen = strlen(u->host);
-          size_t alen = hostlen + 3 + strlen(u->zoneid) + 1;
-          allochost = malloc(alen);
-          if(!allochost)
+          Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+          if(Curl_dyn_addf(&enc, "%.*s%%25%s]", (int)hostlen - 1, u->host,
+                           u->zoneid))
             return CURLUE_OUT_OF_MEMORY;
-          memcpy(allochost, u->host, hostlen - 1);
-          msnprintf(&allochost[hostlen - 1], alen - hostlen + 1,
-                    "%%25%s]", u->zoneid);
+          allochost = Curl_dyn_ptr(&enc);
         }
       }
       else if(urlencode) {
@@ -1348,32 +1517,32 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
       else {
         /* only encode '%' in output host name */
         char *host = u->host;
-        size_t pcount = 0;
+        bool percent = FALSE;
         /* first, count number of percents present in the name */
         while(*host) {
-          if(*host == '%')
-            pcount++;
+          if(*host == '%') {
+            percent = TRUE;
+            break;
+          }
           host++;
         }
-        /* if there were percents, encode the host name */
-        if(pcount) {
-          size_t hostlen = strlen(u->host);
-          size_t alen = hostlen + 2 * pcount + 1;
-          char *o = allochost = malloc(alen);
-          if(!allochost)
-            return CURLUE_OUT_OF_MEMORY;
-
+        /* if there were percent(s), encode the host name */
+        if(percent) {
+          struct dynbuf enc;
+          CURLcode result;
+          Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
           host = u->host;
           while(*host) {
-            if(*host == '%') {
-              memcpy(o, "%25", 3);
-              o += 3;
-              host++;
-              continue;
-            }
-            *o++ = *host++;
+            if(*host == '%')
+              result = Curl_dyn_addn(&enc, "%25", 3);
+            else
+              result = Curl_dyn_addn(&enc, host, 1);
+            if(result)
+              return CURLUE_OUT_OF_MEMORY;
+            host++;
           }
-          *o = '\0';
+          free(u->host);
+          u->host = Curl_dyn_ptr(&enc);
         }
       }
 
@@ -1406,13 +1575,15 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
     break;
   }
   if(ptr) {
-    *part = strdup(ptr);
+    size_t partlen = strlen(ptr);
+    size_t i = 0;
+    *part = Curl_memdup(ptr, partlen + 1);
     if(!*part)
       return CURLUE_OUT_OF_MEMORY;
     if(plusdecode) {
       /* convert + to space */
-      char *plus;
-      for(plus = *part; *plus; ++plus) {
+      char *plus = *part;
+      for(i = 0; i < partlen; ++plus, i++) {
         if(*plus == '+')
           *plus = ' ';
       }
@@ -1422,15 +1593,25 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what,
       size_t dlen;
       /* this unconditional rejection of control bytes is documented
          API behavior */
-      CURLcode res = Curl_urldecode(NULL, *part, 0, &decoded, &dlen,
-                                    REJECT_CTRL);
+      CURLcode res = Curl_urldecode(*part, 0, &decoded, &dlen, REJECT_CTRL);
       free(*part);
       if(res) {
         *part = NULL;
         return CURLUE_URLDECODE;
       }
       *part = decoded;
+      partlen = dlen;
     }
+    if(urlencode) {
+      struct dynbuf enc;
+      Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+      if(urlencode_str(&enc, *part, partlen, TRUE,
+                       what == CURLUPART_QUERY))
+        return CURLUE_OUT_OF_MEMORY;
+      free(*part);
+      *part = Curl_dyn_ptr(&enc);
+    }
+
     return CURLUE_OK;
   }
   else
@@ -1492,6 +1673,10 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
     if(storep && *storep) {
       Curl_safefree(*storep);
     }
+    else if(!storep) {
+      free_urlhandle(u);
+      memset(u, 0, sizeof(struct Curl_URL));
+    }
     return CURLUE_OK;
   }
 
@@ -1502,7 +1687,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
       return CURLUE_BAD_SCHEME;
     if(!(flags & CURLU_NON_SUPPORT_SCHEME) &&
        /* verify that it is a fine scheme */
-       !Curl_builtin_scheme(part))
+       !Curl_builtin_scheme(part, CURL_ZERO_TERMINATED))
       return CURLUE_UNSUPPORTED_SCHEME;
     storep = &u->scheme;
     urlencode = FALSE; /* never */
@@ -1564,52 +1749,26 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
     CURLUcode result;
     char *oldurl;
     char *redired_url;
-    CURLU *handle2;
 
-    if(Curl_is_absolute_url(part, NULL, 0)) {
-      handle2 = curl_url();
-      if(!handle2)
-        return CURLUE_OUT_OF_MEMORY;
-      result = parseurl(part, handle2, flags);
-      if(!result)
-        mv_urlhandle(handle2, u);
-      else
-        curl_url_cleanup(handle2);
-      return result;
-    }
-    /* extract the full "old" URL to do the redirect on */
-    result = curl_url_get(u, CURLUPART_URL, &oldurl, flags);
-    if(result) {
-      /* couldn't get the old URL, just use the new! */
-      handle2 = curl_url();
-      if(!handle2)
-        return CURLUE_OUT_OF_MEMORY;
-      result = parseurl(part, handle2, flags);
-      if(!result)
-        mv_urlhandle(handle2, u);
-      else
-        curl_url_cleanup(handle2);
-      return result;
+    /* if the new thing is absolute or the old one is not
+     * (we could not get an absolute url in 'oldurl'),
+     * then replace the existing with the new. */
+    if(Curl_is_absolute_url(part, NULL, 0,
+                            flags & (CURLU_GUESS_SCHEME|
+                                     CURLU_DEFAULT_SCHEME))
+       || curl_url_get(u, CURLUPART_URL, &oldurl, flags)) {
+      return parseurl_and_replace(part, u, flags);
     }
 
-    /* apply the relative part to create a new URL */
+    /* apply the relative part to create a new URL
+     * and replace the existing one with it. */
     redired_url = concat_url(oldurl, part);
     free(oldurl);
     if(!redired_url)
       return CURLUE_OUT_OF_MEMORY;
 
-    /* now parse the new URL */
-    handle2 = curl_url();
-    if(!handle2) {
-      free(redired_url);
-      return CURLUE_OUT_OF_MEMORY;
-    }
-    result = parseurl(redired_url, handle2, flags);
+    result = parseurl_and_replace(redired_url, u, flags);
     free(redired_url);
-    if(!result)
-      mv_urlhandle(handle2, u);
-    else
-      curl_url_cleanup(handle2);
     return result;
   }
   default:
@@ -1626,14 +1785,16 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
 
     if(urlencode) {
       const unsigned char *i;
-      char *o;
-      char *enc = malloc(nalloc * 3 + 1); /* for worst case! */
-      if(!enc)
-        return CURLUE_OUT_OF_MEMORY;
-      for(i = (const unsigned char *)part, o = enc; *i; i++) {
+      struct dynbuf enc;
+
+      Curl_dyn_init(&enc, nalloc * 3 + 1);
+
+      for(i = (const unsigned char *)part; *i; i++) {
+        CURLcode result;
         if((*i == ' ') && plusencode) {
-          *o = '+';
-          o++;
+          result = Curl_dyn_addn(&enc, "+", 1);
+          if(result)
+            return CURLUE_OUT_OF_MEMORY;
         }
         else if(Curl_isunreserved(*i) ||
                 ((*i == '/') && urlskipslash) ||
@@ -1641,16 +1802,17 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
           if((*i == '=') && equalsencode)
             /* only skip the first equals sign */
             equalsencode = FALSE;
-          *o = *i;
-          o++;
+          result = Curl_dyn_addn(&enc, i, 1);
+          if(result)
+            return CURLUE_OUT_OF_MEMORY;
         }
         else {
-          msnprintf(o, 4, "%%%02x", *i);
-          o += 3;
+          result = Curl_dyn_addf(&enc, "%%%02x", *i);
+          if(result)
+            return CURLUE_OUT_OF_MEMORY;
         }
       }
-      *o = 0; /* null-terminate */
-      newp = enc;
+      newp = Curl_dyn_ptr(&enc);
     }
     else {
       char *p;
@@ -1662,8 +1824,8 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
         /* make sure percent encoded are lower case */
         if((*p == '%') && ISXDIGIT(p[1]) && ISXDIGIT(p[2]) &&
            (ISUPPER(p[1]) || ISUPPER(p[2]))) {
-          p[1] = (char)TOLOWER(p[1]);
-          p[2] = (char)TOLOWER(p[2]);
+          p[1] = Curl_raw_tolower(p[1]);
+          p[2] = Curl_raw_tolower(p[2]);
           p += 3;
         }
         else
@@ -1672,34 +1834,41 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
     }
 
     if(appendquery) {
-      /* Append the string onto the old query. Add a '&' separator if none is
-         present at the end of the exsting query already */
+      /* Append the 'newp' string onto the old query. Add a '&' separator if
+         none is present at the end of the existing query already */
+
       size_t querylen = u->query ? strlen(u->query) : 0;
       bool addamperand = querylen && (u->query[querylen -1] != '&');
       if(querylen) {
-        size_t newplen = strlen(newp);
-        char *p = malloc(querylen + addamperand + newplen + 1);
-        if(!p) {
-          free((char *)newp);
-          return CURLUE_OUT_OF_MEMORY;
+        struct dynbuf enc;
+        Curl_dyn_init(&enc, CURL_MAX_INPUT_LENGTH);
+
+        if(Curl_dyn_addn(&enc, u->query, querylen)) /* add original query */
+          goto nomem;
+
+        if(addamperand) {
+          if(Curl_dyn_addn(&enc, "&", 1))
+            goto nomem;
         }
-        strcpy(p, u->query); /* original query */
-        if(addamperand)
-          p[querylen] = '&'; /* ampersand */
-        strcpy(&p[querylen + addamperand], newp); /* new suffix */
+        if(Curl_dyn_add(&enc, newp))
+          goto nomem;
         free((char *)newp);
         free(*storep);
-        *storep = p;
+        *storep = Curl_dyn_ptr(&enc);
         return CURLUE_OK;
+        nomem:
+        free((char *)newp);
+        return CURLUE_OUT_OF_MEMORY;
       }
     }
 
     if(what == CURLUPART_HOST) {
-      if(0 == strlen(newp) && (flags & CURLU_NO_AUTHORITY)) {
+      size_t n = strlen(newp);
+      if(!n && (flags & CURLU_NO_AUTHORITY)) {
         /* Skip hostname check, it's allowed to be empty. */
       }
       else {
-        if(hostname_check(u, (char *)newp)) {
+        if(hostname_check(u, (char *)newp, n)) {
           free((char *)newp);
           return CURLUE_BAD_HOSTNAME;
         }
index cc9c8887093f9ca53fd103622fb22c29e279aff3..1d430b5e88f0e9ddcbaa012ff5f0eb2557bf81d1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* This file is for lib internal stuff */
 #define PORT_GOPHER 70
 #define PORT_MQTT 1883
 
+#ifdef USE_WEBSOCKETS
+/* CURLPROTO_GOPHERS (29) is the highest publicly used protocol bit number,
+ * the rest are internal information. If we use higher bits we only do this on
+ * platforms that have a >= 64 bit type and then we use such a type for the
+ * protocol fields in the protocol handler.
+ */
+#define CURLPROTO_WS     (1<<30)
+#define CURLPROTO_WSS    ((curl_prot_t)1<<31)
+#else
+#define CURLPROTO_WS 0
+#define CURLPROTO_WSS 0
+#endif
+
+/* This should be undefined once we need bit 32 or higher */
+#define PROTO_TYPE_SMALL
+
+#ifndef PROTO_TYPE_SMALL
+typedef curl_off_t curl_prot_t;
+#else
+typedef unsigned int curl_prot_t;
+#endif
+
+/* This mask is for all the old protocols that are provided and defined in the
+   public header and shall exclude protocols added since which are not exposed
+   in the API */
+#define CURLPROTO_MASK   (0x3ffffff)
+
 #define DICT_MATCH "/MATCH:"
 #define DICT_MATCH2 "/M:"
 #define DICT_MATCH3 "/FIND:"
@@ -64,7 +93,8 @@
 /* Convenience defines for checking protocols or their SSL based version. Each
    protocol handler should only ever have a single CURLPROTO_ in its protocol
    field. */
-#define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS)
+#define PROTO_FAMILY_HTTP (CURLPROTO_HTTP|CURLPROTO_HTTPS|CURLPROTO_WS| \
+                           CURLPROTO_WSS)
 #define PROTO_FAMILY_FTP  (CURLPROTO_FTP|CURLPROTO_FTPS)
 #define PROTO_FAMILY_POP3 (CURLPROTO_POP3|CURLPROTO_POP3S)
 #define PROTO_FAMILY_SMB  (CURLPROTO_SMB|CURLPROTO_SMBS)
@@ -155,10 +185,10 @@ typedef CURLcode (*Curl_datastream)(struct Curl_easy *data,
 # endif
 #endif
 
-#ifdef HAVE_LIBSSH2_H
+#ifdef USE_LIBSSH2
 #include <libssh2.h>
 #include <libssh2_sftp.h>
-#endif /* HAVE_LIBSSH2_H */
+#endif /* USE_LIBSSH2 */
 
 #define READBUFFER_SIZE CURL_MAX_WRITE_SIZE
 #define READBUFFER_MAX  CURL_MAX_READ_SIZE
@@ -180,15 +210,6 @@ typedef CURLcode (*Curl_datastream)(struct Curl_easy *data,
 #define GOOD_EASY_HANDLE(x) \
   ((x) && ((x)->magic == CURLEASY_MAGIC_NUMBER))
 
-/* the type we use for storing a single boolean bit */
-#ifdef _MSC_VER
-typedef bool bit;
-#define BIT(x) bool x
-#else
-typedef unsigned int bit;
-#define BIT(x) bit x:1
-#endif
-
 #ifdef HAVE_GSSAPI
 /* Types needed for krb5-ftp connections */
 struct krb5buffer {
@@ -248,15 +269,20 @@ struct ssl_primary_config {
   char *CAfile;          /* certificate to verify peer against */
   char *issuercert;      /* optional issuer certificate filename */
   char *clientcert;
-  char *random_file;     /* path to file containing "random" data */
-  char *egdsocket;       /* path to file containing the EGD daemon socket */
   char *cipher_list;     /* list of ciphers to use */
   char *cipher_list13;   /* list of TLS 1.3 cipher suites to use */
   char *pinned_key;
+  char *CRLfile;         /* CRL to check certificate revocation */
   struct curl_blob *cert_blob;
   struct curl_blob *ca_info_blob;
   struct curl_blob *issuercert_blob;
+#ifdef USE_TLS_SRP
+  char *username; /* TLS username (for, e.g., SRP) */
+  char *password; /* TLS password (for, e.g., SRP) */
+  enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
+#endif
   char *curves;          /* list of curves to use */
+  unsigned char ssl_options;  /* the CURLOPT_SSL_OPTIONS bitmask */
   BIT(verifypeer);       /* set TRUE if this is desired */
   BIT(verifyhost);       /* set TRUE if CN/SAN must match hostname */
   BIT(verifystatus);     /* set TRUE if certificate status must be checked */
@@ -266,7 +292,6 @@ struct ssl_primary_config {
 struct ssl_config_data {
   struct ssl_primary_config primary;
   long certverifyresult; /* result from the certificate verification */
-  char *CRLfile;   /* CRL to check certificate revocation */
   curl_ssl_ctx_callback fsslctx; /* function to initialize ssl ctx */
   void *fsslctxp;        /* parameter for call back */
   char *cert_type; /* format for certificate (default: PEM)*/
@@ -274,11 +299,6 @@ struct ssl_config_data {
   struct curl_blob *key_blob;
   char *key_type; /* format for private key (default: PEM) */
   char *key_passwd; /* plain text private key password */
-#ifdef USE_TLS_SRP
-  char *username; /* TLS username (for, e.g., SRP) */
-  char *password; /* TLS password (for, e.g., SRP) */
-  enum CURL_TLSAUTH authtype; /* TLS authentication type (default SRP) */
-#endif
   BIT(certinfo);     /* gather lots of certificate info */
   BIT(falsestart);
   BIT(enable_beast); /* allow this flaw for interoperability's sake*/
@@ -326,11 +346,11 @@ struct digestdata {
   char *nonce;
   char *cnonce;
   char *realm;
-  int algo;
   char *opaque;
   char *qop;
   char *algorithm;
   int nc; /* nonce count */
+  unsigned char algo;
   BIT(stale); /* set true for re-negotiation */
   BIT(userhash);
 #endif
@@ -352,10 +372,6 @@ typedef enum {
   GSS_AUTHSUCC
 } curlnegotiate;
 
-#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
-#include <iconv.h>
-#endif
-
 /* Struct used for GSSAPI (Kerberos V5) authentication */
 #if defined(USE_KERBEROS5)
 struct kerberos5data {
@@ -450,6 +466,11 @@ struct negotiatedata {
 };
 #endif
 
+#ifdef CURL_DISABLE_PROXY
+#define CONN_IS_PROXIED(x) 0
+#else
+#define CONN_IS_PROXIED(x) x->bits.proxy
+#endif
 
 /*
  * Boolean values that concerns this connection.
@@ -470,6 +491,7 @@ struct ConnectBits {
   BIT(proxy_connect_closed); /* TRUE if a proxy disconnected the connection
                                 in a CONNECT request with auth, so that
                                 libcurl should reconnect and continue. */
+  BIT(proxy); /* if set, this transfer is done through a proxy - any type */
 #endif
   /* always modify bits.close with the connclose() and connkeep() macros! */
   BIT(close); /* if set, we close the connection after this request */
@@ -479,8 +501,6 @@ struct ConnectBits {
                         that overrides the host in the URL */
   BIT(conn_to_port); /* if set, this connection has a "connect to port"
                         that overrides the port in the URL (remote port) */
-  BIT(proxy); /* if set, this transfer is done through a proxy - any type */
-  BIT(user_passwd); /* do we use user+password for this connection? */
   BIT(ipv6_ip); /* we communicate with a remote site specified with pure IPv6
                    IP address */
   BIT(ipv6);    /* we communicate with a site using an IPv6 address */
@@ -515,9 +535,7 @@ struct ConnectBits {
                  connection */
   BIT(multiplex); /* connection is multiplexed */
   BIT(tcp_fastopen); /* use TCP Fast Open */
-  BIT(tls_enable_npn);  /* TLS NPN extension? */
   BIT(tls_enable_alpn); /* TLS ALPN extension? */
-  BIT(connect_only);
 #ifndef CURL_DISABLE_DOH
   BIT(doh);
 #endif
@@ -562,7 +580,7 @@ struct Curl_async {
   struct Curl_dns_entry *dns;
   struct thread_data *tdata;
   void *resolver; /* resolver state, if it is used in the URL state -
-                     ares_channel f.e. */
+                     ares_channel e.g. */
   int port;
   int status; /* if done is TRUE, this is the status from the callback */
   BIT(done);  /* set TRUE when the lookup is complete */
@@ -583,8 +601,9 @@ enum expect100 {
 
 enum upgrade101 {
   UPGR101_INIT,               /* default state */
-  UPGR101_REQUESTED,          /* upgrade requested */
-  UPGR101_RECEIVED,           /* response received */
+  UPGR101_WS,                 /* upgrade to WebSockets requested */
+  UPGR101_H2,                 /* upgrade to HTTP/2 requested */
+  UPGR101_RECEIVED,           /* 101 response received */
   UPGR101_WORKING             /* talking upgraded protocol */
 };
 
@@ -606,23 +625,6 @@ enum doh_slots {
   DOH_PROBE_SLOTS
 };
 
-/* one of these for each DoH request */
-struct dnsprobe {
-  CURL *easy;
-  int dnstype;
-  unsigned char dohbuffer[512];
-  size_t dohlen;
-  struct dynbuf serverdoh;
-};
-
-struct dohdata {
-  struct curl_slist *headers;
-  struct dnsprobe probe[DOH_PROBE_SLOTS];
-  unsigned int pending; /* still outstanding requests */
-  int port;
-  const char *host;
-};
-
 /*
  * Request specific data in the easy handle (Curl_easy).  Previously,
  * these members were on the connectdata struct but since a conn struct may
@@ -706,6 +708,7 @@ struct SingleRequest {
 #ifndef CURL_DISABLE_DOH
   struct dohdata *doh; /* DoH specific data for this request */
 #endif
+  unsigned char setcookies;
   BIT(header);        /* incoming data has HTTP header */
   BIT(content_range); /* set TRUE if Content-Range: was found */
   BIT(upload_done);   /* set to TRUE when doing chunked transfer-encoding
@@ -803,10 +806,10 @@ struct Curl_handler {
   void (*attach)(struct Curl_easy *data, struct connectdata *conn);
 
   int defport;            /* Default port. */
-  unsigned int protocol;  /* See CURLPROTO_* - this needs to be the single
-                             specific protocol bit */
-  unsigned int family;    /* single bit for protocol family; basically the
-                             non-TLS name of the protocol this is */
+  curl_prot_t protocol;  /* See CURLPROTO_* - this needs to be the single
+                            specific protocol bit */
+  curl_prot_t family;    /* single bit for protocol family; basically the
+                            non-TLS name of the protocol this is */
   unsigned int flags;     /* Extra particular characteristics, see PROTOPT_* */
 
 };
@@ -827,7 +830,7 @@ struct Curl_handler {
                                         url query strings (?foo=bar) ! */
 #define PROTOPT_CREDSPERREQUEST (1<<7) /* requires login credentials per
                                           request instead of per connection */
-#define PROTOPT_ALPN_NPN (1<<8) /* set ALPN and/or NPN for this */
+#define PROTOPT_ALPN (1<<8) /* set ALPN for this */
 #define PROTOPT_STREAM (1<<9) /* a protocol with individual logical streams */
 #define PROTOPT_URLOPTIONS (1<<10) /* allow options part in the userinfo field
                                       of the URL */
@@ -863,7 +866,8 @@ struct postponed_data {
 struct proxy_info {
   struct hostname host;
   long port;
-  curl_proxytype proxytype; /* what kind of proxy that is in use */
+  unsigned char proxytype; /* curl_proxytype: what kind of proxy that is in
+                              use */
   char *user;    /* proxy user name string, allocated */
   char *passwd;  /* proxy password string, allocated */
 };
@@ -902,6 +906,11 @@ struct connstate {
   unsigned char *outp; /* send from this pointer */
 };
 
+#define TRNSPRT_TCP 3
+#define TRNSPRT_UDP 4
+#define TRNSPRT_QUIC 5
+#define TRNSPRT_UNIX 6
+
 /*
  * The connectdata struct contains all fields and variables that should be
  * unique for an entire connection.
@@ -940,14 +949,6 @@ struct connectdata {
   struct Curl_addrinfo *ip_addr;
   struct Curl_addrinfo *tempaddr[2]; /* for happy eyeballs */
 
-  unsigned int scope_id;  /* Scope id for IPv6 */
-
-  enum {
-    TRNSPRT_TCP = 3,
-    TRNSPRT_UDP = 4,
-    TRNSPRT_QUIC = 5
-  } transport;
-
 #ifdef ENABLE_QUIC
   struct quicsocket hequic[2]; /* two, for happy eyeballs! */
   struct quicsocket *quic;
@@ -962,13 +963,6 @@ struct connectdata {
   struct proxy_info socks_proxy;
   struct proxy_info http_proxy;
 #endif
-  int port;        /* which port to use locally - to connect to */
-  int remote_port; /* the remote port, not the proxy port! */
-  int conn_to_port; /* the remote port to connect to. valid only if
-                       bits.conn_to_port is set */
-  unsigned short secondary_port; /* secondary socket remote port to connect to
-                                    (ftp) */
-
   /* 'primary_ip' and 'primary_port' get filled with peer's numerical
      ip address and port number whenever an outgoing connection is
      *attempted* from the primary socket to a remote address. When more
@@ -977,13 +971,11 @@ struct connectdata {
      these are updated with data which comes directly from the socket. */
 
   char primary_ip[MAX_IPADR_LEN];
-  unsigned char ip_version; /* copied from the Curl_easy at creation time */
-
   char *user;    /* user name string, allocated */
   char *passwd;  /* password string, allocated */
   char *options; /* options string, allocated */
-  char *sasl_authzid;     /* authorisation identity string, allocated */
-  unsigned char httpversion; /* the HTTP version*10 reported by the server */
+  char *sasl_authzid;     /* authorization identity string, allocated */
+  char *oauth_bearer; /* OAUTH2 bearer, allocated */
   struct curltime now;     /* "current" time */
   struct curltime created; /* creation time */
   struct curltime lastused; /* when returned to the connection cache */
@@ -1010,8 +1002,6 @@ struct connectdata {
 #endif
   struct ConnectBits bits;    /* various state-flags for this connection */
 
-  /* The field below gets set in Curl_connecthost */
-  int num_addr; /* number of addresses to try to connect to */
  /* connecttime: when connect() is called on the current IP address. Used to
     be able to track when to move on to try next IP - but only when the multi
     interface is used. */
@@ -1039,9 +1029,9 @@ struct connectdata {
 
 #ifdef HAVE_GSSAPI
   BIT(sec_complete); /* if Kerberos is enabled for this connection */
-  enum protection_level command_prot;
-  enum protection_level data_prot;
-  enum protection_level request_data_prot;
+  unsigned char command_prot; /* enum protection_level */
+  unsigned char data_prot; /* enum protection_level */
+  unsigned char request_data_prot; /* enum protection_level */
   size_t buffer_size;
   struct krb5buffer in_buffer;
   void *app_data;
@@ -1088,18 +1078,38 @@ struct connectdata {
   struct dynbuf trailer;
 
   union {
+#ifndef CURL_DISABLE_FTP
     struct ftp_conn ftpc;
+#endif
+#ifndef CURL_DISABLE_HTTP
     struct http_conn httpc;
+#endif
+#ifdef USE_SSH
     struct ssh_conn sshc;
+#endif
+#ifndef CURL_DISABLE_TFTP
     struct tftp_state_data *tftpc;
+#endif
+#ifndef CURL_DISABLE_IMAP
     struct imap_conn imapc;
+#endif
+#ifndef CURL_DISABLE_POP3
     struct pop3_conn pop3c;
+#endif
+#ifndef CURL_DISABLE_SMTP
     struct smtp_conn smtpc;
+#endif
+#ifndef CURL_DISABLE_RTSP
     struct rtsp_conn rtspc;
+#endif
+#ifndef CURL_DISABLE_SMB
     struct smb_conn smbc;
+#endif
     void *rtmp;
     struct ldapconninfo *ldapc;
+#ifndef CURL_DISABLE_MQTT
     struct mqtt_conn mqtt;
+#endif
   } proto;
 
   struct http_connect_state *connect_state; /* for HTTP CONNECT */
@@ -1120,12 +1130,27 @@ struct connectdata {
   int localportrange;
   int cselect_bits; /* bitmask of socket events */
   int waitfor;      /* current READ/WRITE bits to wait for */
-  int negnpn; /* APLN or NPN TLS negotiated protocol, CURL_HTTP_VERSION* */
-
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   int socks5_gssapi_enctype;
+#endif
+  /* The field below gets set in Curl_connecthost */
+  int num_addr; /* number of addresses to try to connect to */
+  int port;        /* which port to use locally - to connect to */
+  int remote_port; /* the remote port, not the proxy port! */
+  int conn_to_port; /* the remote port to connect to. valid only if
+                       bits.conn_to_port is set */
+#ifdef ENABLE_IPV6
+  unsigned int scope_id;  /* Scope id for IPv6 */
 #endif
   unsigned short localport;
+  unsigned short secondary_port; /* secondary socket remote port to connect to
+                                    (ftp) */
+  unsigned char alpn; /* APLN TLS negotiated protocol, a CURL_HTTP_VERSION*
+                         value */
+  unsigned char transport; /* one of the TRNSPRT_* defines */
+  unsigned char ip_version; /* copied from the Curl_easy at creation time */
+  unsigned char httpversion; /* the HTTP version*10 reported by the server */
+  unsigned char connect_only;
 };
 
 /* The end of connectdata. */
@@ -1158,7 +1183,11 @@ struct PureInfo {
      reused, in the connection cache. */
 
   char conn_primary_ip[MAX_IPADR_LEN];
-  int conn_primary_port;
+  int conn_primary_port; /* this is the destination port to the connection,
+                            which might have been a proxy */
+  int conn_remote_port;  /* this is the "remote port", which is the port
+                            number of the used URL, independent of proxy or
+                            not */
   char conn_local_ip[MAX_IPADR_LEN];
   int conn_local_port;
   const char *conn_scheme;
@@ -1281,6 +1310,7 @@ typedef enum {
   EXPIRE_TIMEOUT,
   EXPIRE_TOOFAST,
   EXPIRE_QUIC,
+  EXPIRE_FTP_ACCEPT,
   EXPIRE_LAST /* not an actual timer, used as a marker only */
 } expire_id;
 
@@ -1327,14 +1357,16 @@ struct UrlState {
   char *ulbuf; /* allocated upload buffer or NULL */
   curl_off_t current_speed;  /* the ProgressShow() function sets this,
                                 bytes / second */
-  char *first_host; /* host name of the first (not followed) request.
-                       if set, this should be the host name that we will
-                       sent authorization to, no else. Used to make Location:
-                       following not keep sending user+password... This is
-                       strdup() data.
-                    */
+
+  /* host name, port number and protocol of the first (not followed) request.
+     if set, this should be the host name that we will sent authorization to,
+     no else. Used to make Location: following not keep sending user+password.
+     This is strdup()ed data. */
+  char *first_host;
+  int first_remote_port;
+  curl_prot_t first_remote_protocol;
+
   int retrycount; /* number of retries on a new connection */
-  int first_remote_port; /* remote port of the first (not followed) request */
   struct Curl_ssl_session *session; /* array of 'max_ssl_sessions' size */
   long sessionage;                  /* number of the most recent session */
   struct tempbuf tempwrite[3]; /* BOTH, HEADER, BODY */
@@ -1342,13 +1374,15 @@ struct UrlState {
   int os_errno;  /* filled in with errno whenever an error occurs */
   char *scratch; /* huge buffer[set.buffer_size*2] for upload CRLF replacing */
   long followlocation; /* redirect counter */
+  int requests; /* request counter: redirects + authentication retakes */
 #ifdef HAVE_SIGNAL
   /* storage for the previous bag^H^H^HSIGPIPE signal handler :-) */
   void (*prev_signal)(int sig);
 #endif
+#ifndef CURL_DISABLE_CRYPTO_AUTH
   struct digestdata digest;      /* state data for host Digest auth */
   struct digestdata proxydigest; /* state data for proxy Digest auth */
-
+#endif
   struct auth authhost;  /* auth details for host */
   struct auth authproxy; /* auth details for proxy */
 #ifdef USE_CURL_ASYNC
@@ -1364,7 +1398,7 @@ struct UrlState {
   struct Curl_llist timeoutlist; /* list of pending timeouts */
   struct time_node expires[EXPIRE_LAST]; /* nodes for each expire type */
 
-  /* a place to store the most recently set FTP entrypath */
+  /* a place to store the most recently set (S)FTP entrypath */
   char *most_recent_ftp_entrypath;
   unsigned char httpwant; /* when non-zero, a specific HTTP version requested
                              to be used in the library's request(s) */
@@ -1383,39 +1417,49 @@ struct UrlState {
                   this syntax. */
   curl_off_t resume_from; /* continue [ftp] transfer from here */
 
+#ifndef CURL_DISABLE_RTSP
   /* This RTSP state information survives requests and connections */
   long rtsp_next_client_CSeq; /* the session's next client CSeq */
   long rtsp_next_server_CSeq; /* the session's next server CSeq */
   long rtsp_CSeq_recv; /* most recent CSeq received */
+#endif
 
   curl_off_t infilesize; /* size of file to upload, -1 means unknown.
                             Copied from set.filesize at start of operation */
-
+#if defined(USE_HTTP2) || defined(USE_HTTP3)
   size_t drain; /* Increased when this stream has data to read, even if its
                    socket is not necessarily is readable. Decreased when
                    checked. */
+#endif
 
   curl_read_callback fread_func; /* read callback/function */
   void *in;                      /* CURLOPT_READDATA */
-
+#ifdef USE_HTTP2
   struct Curl_easy *stream_depends_on;
   int stream_weight;
+#endif
   CURLU *uh; /* URL handle for the current parsed URL */
   struct urlpieces up;
-  Curl_HttpReq httpreq; /* what kind of HTTP request (if any) is this */
+  unsigned char httpreq; /* Curl_HttpReq; what kind of HTTP request (if any)
+                            is this */
   char *url;        /* work URL, copied from UserDefined */
   char *referer;    /* referer string */
+#ifndef CURL_DISABLE_COOKIES
   struct curl_slist *cookielist; /* list of cookie files set by
                                     curl_easy_setopt(COOKIEFILE) calls */
+#endif
   struct curl_slist *resolve; /* set to point to the set.resolve list when
                                  this should be dealt with in pretransfer */
 #ifndef CURL_DISABLE_HTTP
   size_t trailers_bytes_sent;
   struct dynbuf trailers_buf; /* a buffer containing the compiled trailing
                                  headers */
-#endif
+  struct Curl_llist httphdrs; /* received headers */
+  struct curl_header headerout; /* for external purposes */
+  struct Curl_header_store *prevhead; /* the latest added header */
   trailers_state trailers_state; /* whether we are sending trailers
-                                       and what stage are we at */
+                                    and what stage are we at */
+#endif
 #ifdef USE_HYPER
   bool hconnect;  /* set if a CONNECT request */
   CURLcode hresult; /* used to pass return codes back from hyper callbacks */
@@ -1459,7 +1503,6 @@ struct UrlState {
                       is always set TRUE when curl_easy_perform() is called. */
   BIT(authproblem); /* TRUE if there's some problem authenticating */
   /* set after initial USER failure, to prevent an authentication loop */
-  BIT(ftp_trying_alternative);
   BIT(wildcardmatch); /* enable wildcard matching */
   BIT(expect100header);  /* TRUE if we added Expect: 100-continue */
   BIT(disableexpect);    /* TRUE if Expect: is disabled due to a previous
@@ -1536,8 +1579,6 @@ enum dupstring {
   STRING_SSL_CIPHER_LIST_PROXY, /* list of ciphers to use */
   STRING_SSL_CIPHER13_LIST, /* list of TLS 1.3 ciphers to use */
   STRING_SSL_CIPHER13_LIST_PROXY, /* list of TLS 1.3 ciphers to use */
-  STRING_SSL_EGDSOCKET,   /* path to file containing the EGD daemon socket */
-  STRING_SSL_RANDOM_FILE, /* path to file containing "random" data */
   STRING_USERAGENT,       /* User-Agent string */
   STRING_SSL_CRLFILE,     /* crl file to check certificate */
   STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */
@@ -1620,16 +1661,15 @@ struct UserDefined {
   void *out;         /* CURLOPT_WRITEDATA */
   void *in_set;      /* CURLOPT_READDATA */
   void *writeheader; /* write the header to this if non-NULL */
-  void *rtp_out;     /* write RTP to this if non-NULL */
-  long use_port;     /* which port to use (when not using default) */
+  unsigned short use_port; /* which port to use (when not using default) */
   unsigned long httpauth;  /* kind of HTTP authentication to use (bitmask) */
   unsigned long proxyauth; /* kind of proxy authentication to use (bitmask) */
+#ifndef CURL_DISABLE_PROXY
   unsigned long socks5auth;/* kind of SOCKS5 authentication to use (bitmask) */
+#endif
   long maxredirs;    /* maximum no. of http(s) redirects to follow, set to -1
                         for infinity */
 
-  int keep_post;     /* keep POSTs as POSTs after a 30x request; each
-                        bit represents a request, from 301 to 303 */
   void *postfields;  /* if POST, set the fields' values here */
   curl_seek_callback seek_func;      /* function that seeks the input */
   curl_off_t postfieldsize; /* if POST, this might have a size to use instead
@@ -1659,13 +1699,6 @@ struct UserDefined {
   void *prereq_userp; /* pre-initial request user data */
 
   void *seek_client;    /* pointer to pass to the seek callback */
-  /* the 3 curl_conv_callback functions below are used on non-ASCII hosts */
-  /* function to convert from the network encoding: */
-  curl_conv_callback convfromnetwork;
-  /* function to convert to the network encoding: */
-  curl_conv_callback convtonetwork;
-  /* function to convert from UTF-8 encoding: */
-  curl_conv_callback convfromutf8;
 #ifndef CURL_DISABLE_HSTS
   curl_hstsread_callback hsts_read;
   void *hsts_read_userp;
@@ -1674,16 +1707,17 @@ struct UserDefined {
 #endif
   void *progress_client; /* pointer to pass to the progress callback */
   void *ioctl_client;   /* pointer to pass to the ioctl callback */
-  long timeout;         /* in milliseconds, 0 means no timeout */
-  long connecttimeout;  /* in milliseconds, 0 means no timeout */
-  long accepttimeout;   /* in milliseconds, 0 means no timeout */
-  long happy_eyeballs_timeout; /* in milliseconds, 0 is a valid value */
-  long server_response_timeout; /* in milliseconds, 0 means no timeout */
+  unsigned int timeout;        /* ms, 0 means no timeout */
+  unsigned int connecttimeout; /* ms, 0 means no timeout */
+  unsigned int happy_eyeballs_timeout; /* ms, 0 is a valid value */
+  unsigned int server_response_timeout; /* ms, 0 means no timeout */
   long maxage_conn;     /* in seconds, max idle time to allow a connection that
                            is to be reused */
   long maxlifetime_conn; /* in seconds, max time since creation to allow a
                             connection that is to be reused */
+#ifndef CURL_DISABLE_TFTP
   long tftp_blksize;    /* in bytes, 0 means use default */
+#endif
   curl_off_t filesize;  /* size of file to upload, -1 means unknown */
   long low_speed_limit; /* bytes/second */
   long low_speed_time;  /* number of seconds */
@@ -1703,15 +1737,17 @@ struct UserDefined {
                                           the transfer on source host */
   struct curl_slist *source_postquote; /* in 3rd party transfer mode - after
                                           the transfer on source host */
+#ifndef CURL_DISABLE_TELNET
   struct curl_slist *telnet_options; /* linked list of telnet options */
+#endif
   struct curl_slist *resolve;     /* list of names to add/remove from
                                      DNS cache */
   struct curl_slist *connect_to; /* list of host:port mappings to override
                                     the hostname and port to connect to */
-  curl_TimeCond timecondition; /* kind of time/date comparison */
-  curl_proxytype proxytype; /* what kind of proxy that is in use */
   time_t timevalue;       /* what time to compare with */
-  Curl_HttpReq method;   /* what kind of HTTP request (if any) is this */
+  unsigned char timecondition; /* kind of time comparison: curl_TimeCond */
+  unsigned char proxytype; /* what kind of proxy: curl_proxytype */
+  unsigned char method;   /* what kind of HTTP request: Curl_HttpReq */
   unsigned char httpwant; /* when non-zero, a specific HTTP version requested
                              to be used in the library's request(s) */
   struct ssl_config_data ssl;  /* user defined SSL stuff */
@@ -1719,8 +1755,8 @@ struct UserDefined {
   struct ssl_config_data proxy_ssl;  /* user defined SSL stuff for proxy */
 #endif
   struct ssl_general_config general_ssl; /* general user defined SSL stuff */
-  long dns_cache_timeout; /* DNS cache timeout */
-  long buffer_size;      /* size of receive buffer to use */
+  int dns_cache_timeout; /* DNS cache timeout (seconds) */
+  unsigned int buffer_size;      /* size of receive buffer to use */
   unsigned int upload_buffer_size; /* size of upload buffer to use,
                                       keep it >= CURL_MAX_WRITE_SIZE */
   void *private_data; /* application-private data */
@@ -1729,34 +1765,46 @@ struct UserDefined {
                           file 0 - whatever, 1 - v2, 2 - v6 */
   curl_off_t max_filesize; /* Maximum file size to download */
 #ifndef CURL_DISABLE_FTP
-  curl_ftpfile ftp_filemethod; /* how to get to a file when FTP is used  */
-  curl_ftpauth ftpsslauth; /* what AUTH XXX to be attempted */
-  curl_ftpccc ftp_ccc;   /* FTP CCC options */
+  unsigned char ftp_filemethod; /* how to get to a file: curl_ftpfile  */
+  unsigned char ftpsslauth; /* what AUTH XXX to try: curl_ftpauth */
+  unsigned char ftp_ccc;   /* FTP CCC options: curl_ftpccc */
+  unsigned int accepttimeout;   /* in milliseconds, 0 means no timeout */
 #endif
-  int ftp_create_missing_dirs; /* 1 - create directories that don't exist
-                                  2 - the same but also allow MKD to fail once
-                               */
+  /* Desppie the name ftp_create_missing_dirs is for FTP(S) and SFTP
+     1 - create directories that don't exist
+     2 - the same but also allow MKD to fail once
+  */
+  unsigned char ftp_create_missing_dirs;
+#ifdef USE_LIBSSH2
+  curl_sshhostkeycallback ssh_hostkeyfunc; /* hostkey check callback */
+  void *ssh_hostkeyfunc_userp;         /* custom pointer to callback */
+#endif
+
   curl_sshkeycallback ssh_keyfunc; /* key matching callback */
   void *ssh_keyfunc_userp;         /* custom pointer to callback */
 #ifndef CURL_DISABLE_NETRC
-  enum CURL_NETRC_OPTION
-       use_netrc;        /* defined in include/curl.h */
+  unsigned char use_netrc;        /* enum CURL_NETRC_OPTION values  */
 #endif
   curl_usessl use_ssl;   /* if AUTH TLS is to be attempted etc, for FTP or
                             IMAP or POP3 or others! */
-  long new_file_perms;    /* Permissions to use when creating remote files */
-  long new_directory_perms; /* Permissions to use when creating remote dirs */
-  long ssh_auth_types;   /* allowed SSH auth types */
+  unsigned int new_file_perms;      /* when creating remote files */
+  unsigned int new_directory_perms; /* when creating remote dirs */
+  int ssh_auth_types;    /* allowed SSH auth types */
   char *str[STRING_LAST]; /* array of strings, pointing to allocated memory */
   struct curl_blob *blobs[BLOB_LAST];
+#ifdef ENABLE_IPV6
   unsigned int scope_id;  /* Scope id for IPv6 */
-  long allowed_protocols;
-  long redir_protocols;
-  long mime_options;      /* Mime option flags. */
-  struct curl_slist *mail_rcpt; /* linked list of mail recipients */
+#endif
+  curl_prot_t allowed_protocols;
+  curl_prot_t redir_protocols;
+  unsigned int mime_options;      /* Mime option flags. */
+
+#ifndef CURL_DISABLE_RTSP
+  void *rtp_out;     /* write RTP to this if non-NULL */
   /* Common RTSP header options */
   Curl_RtspReq rtspreq; /* RTSP request type */
-  long rtspversion; /* like httpversion, for RTSP */
+#endif
+#ifndef CURL_DISABLE_FTP
   curl_chunk_bgn_callback chunk_bgn; /* called before part of transfer
                                         starts */
   curl_chunk_end_callback chunk_end; /* called after part transferring
@@ -1764,38 +1812,48 @@ struct UserDefined {
   curl_fnmatch_callback fnmatch; /* callback to decide which file corresponds
                                     to pattern (e.g. if WILDCARDMATCH is on) */
   void *fnmatch_data;
-
+#endif
   long gssapi_delegation; /* GSS-API credential delegation, see the
                              documentation of CURLOPT_GSSAPI_DELEGATION */
 
-  long tcp_keepidle;     /* seconds in idle before sending keepalive probe */
-  long tcp_keepintvl;    /* seconds between TCP keepalive probes */
+  int tcp_keepidle;     /* seconds in idle before sending keepalive probe */
+  int tcp_keepintvl;    /* seconds between TCP keepalive probes */
 
   size_t maxconnects;    /* Max idle connections in the connection cache */
 
   long expect_100_timeout; /* in milliseconds */
+#ifdef USE_HTTP2
   struct Curl_easy *stream_depends_on;
   int stream_weight;
   struct Curl_http2_dep *stream_dependents;
-
+#endif
   curl_resolver_start_callback resolver_start; /* optional callback called
                                                   before resolver start */
   void *resolver_start_client; /* pointer to pass to resolver start callback */
   long upkeep_interval_ms;      /* Time between calls for connection upkeep. */
   multidone_func fmultidone;
+#ifndef CURL_DISABLE_DOH
   struct Curl_easy *dohfor; /* this is a DoH request for that transfer */
+#endif
   CURLU *uh; /* URL handle for the current parsed URL */
   void *trailer_data; /* pointer to pass to trailer data callback */
   curl_trailer_callback trailer_callback; /* trailing data callback */
+  char keep_post;     /* keep POSTs as POSTs after a 30x request; each
+                         bit represents a request, from 301 to 303 */
+#ifndef CURL_DISABLE_SMTP
+  struct curl_slist *mail_rcpt; /* linked list of mail recipients */
+  BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some
+                                recipients */
+#endif
+  unsigned char connect_only; /* make connection/request, then let
+                                 application use the socket */
   BIT(is_fread_set); /* has read callback been set to non-NULL? */
-  BIT(is_fwrite_set); /* has write callback been set to non-NULL? */
-  BIT(free_referer); /* set TRUE if 'referer' points to a string we
-                        allocated */
+#ifndef CURL_DISABLE_TFTP
   BIT(tftp_no_options); /* do not send TFTP options requests */
+#endif
   BIT(sep_headers);     /* handle host and proxy headers separately */
   BIT(cookiesession);   /* new cookie session? */
   BIT(crlf);            /* convert crlf on ftp upload(?) */
-  BIT(strip_path_slash); /* strip off initial slash from path */
   BIT(ssh_compression);            /* enable SSH compression */
 
 /* Here follows boolean settings that define how to behave during
@@ -1813,6 +1871,7 @@ struct UserDefined {
   BIT(ftp_use_pret);     /* if PRET is to be used before PASV or not */
   BIT(ftp_skip_ip);      /* skip the IP address the FTP server passes on to
                             us */
+  BIT(wildcard_enabled); /* enable wildcard matching */
 #endif
   BIT(hide_progress);    /* don't use the progress meter */
   BIT(http_fail_on_error);  /* fail on HTTP error codes >= 400 */
@@ -1833,7 +1892,6 @@ struct UserDefined {
   BIT(no_signal);      /* do not use any signal/alarm handler */
   BIT(tcp_nodelay);    /* whether to enable TCP_NODELAY or not */
   BIT(ignorecl);       /* ignore content length */
-  BIT(connect_only);   /* make connection, let application use the socket */
   BIT(http_te_skip);   /* pass the raw body data to the user, even when
                           transfer-encoded (chunked, compressed) */
   BIT(http_ce_skip);   /* pass the raw body data to the user, even when
@@ -1844,10 +1902,8 @@ struct UserDefined {
   BIT(socks5_gssapi_nec); /* Flag to support NEC SOCKS5 server */
 #endif
   BIT(sasl_ir);         /* Enable/disable SASL initial response */
-  BIT(wildcard_enabled); /* enable wildcard matching */
   BIT(tcp_keepalive);  /* use TCP keepalives */
   BIT(tcp_fastopen);   /* use TCP Fast Open */
-  BIT(ssl_enable_npn); /* TLS NPN extension? */
   BIT(ssl_enable_alpn);/* TLS ALPN extension? */
   BIT(path_as_is);     /* allow dotdots? */
   BIT(pipewait);       /* wait for multiplex status before starting a new
@@ -1867,8 +1923,9 @@ struct UserDefined {
   BIT(doh_verifystatus);   /* DoH certificate status verification */
 #endif
   BIT(http09_allowed); /* allow HTTP/0.9 responses */
-  BIT(mail_rcpt_allowfails); /* allow RCPT TO command to fail for some
-                                recipients */
+#ifdef USE_WEBSOCKETS
+  BIT(ws_raw_mode);
+#endif
 };
 
 struct Names {
@@ -1930,10 +1987,12 @@ struct Curl_easy {
 #endif
   struct SingleRequest req;    /* Request-specific data */
   struct UserDefined set;      /* values set by the libcurl user */
+#ifndef CURL_DISABLE_COOKIES
   struct CookieInfo *cookies;  /* the cookies, read from files and servers.
                                   NOTE that the 'cookie' field in the
                                   UserDefined struct defines if the "engine"
                                   is to be used or not. */
+#endif
 #ifndef CURL_DISABLE_HSTS
   struct hsts *hsts;
 #endif
@@ -1949,11 +2008,6 @@ struct Curl_easy {
   struct PureInfo info;        /* stats, reports and info data */
   struct curl_tlssessioninfo tsi; /* Information about the TLS session, only
                                      valid after a client has asked for it */
-#if defined(CURL_DOES_CONVERSIONS) && defined(HAVE_ICONV)
-  iconv_t outbound_cd;         /* for translating to the network encoding */
-  iconv_t inbound_cd;          /* for translating from the network encoding */
-  iconv_t utf8_cd;             /* for translating to UTF8 */
-#endif /* CURL_DOES_CONVERSIONS && HAVE_ICONV */
 #ifdef USE_HYPER
   struct hyptransfer hyp;
 #endif
index d17e16f10845160b94d0405ac96f4693c284ba6d..b82b171467d98460daf3d795fb758694b876022c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC4616 PLAIN authentication
  * Draft   LOGIN SASL Mechanism <draft-murchison-sasl-login-00.txt>
  *
index 9ddb0ac379e832d714bb951ee24b304b7a6a83cd..475d31b8d732e71a5f3550a5893ab0e45ac803b2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC2195 CRAM-MD5 authentication
  *
  ***************************************************************************/
index d8aac66bdaff8c08ebf1394b30c16e6da4f926af..f945e8b6c9b17fdc0015f36ae99f4f71b14316b4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC2831 DIGEST-MD5 authentication
  * RFC7616 DIGEST-SHA256, DIGEST-SHA512-256 authentication
  *
@@ -40,7 +42,6 @@
 #include "warnless.h"
 #include "strtok.h"
 #include "strcase.h"
-#include "non-ascii.h" /* included for Curl_convert_... prototypes */
 #include "curl_printf.h"
 #include "rand.h"
 
 #include "curl_memory.h"
 #include "memdebug.h"
 
+#define SESSION_ALGO 1 /* for algos with this bit set */
+
+#define ALGO_MD5 0
+#define ALGO_MD5SESS (ALGO_MD5 | SESSION_ALGO)
+#define ALGO_SHA256 2
+#define ALGO_SHA256SESS (ALGO_SHA256 | SESSION_ALGO)
+#define ALGO_SHA512_256 4
+#define ALGO_SHA512_256SESS (ALGO_SHA512_256 | SESSION_ALGO)
+
 #if !defined(USE_WINDOWS_SSPI)
 #define DIGEST_QOP_VALUE_AUTH             (1 << 0)
 #define DIGEST_QOP_VALUE_AUTH_INT         (1 << 1)
 #define DIGEST_QOP_VALUE_STRING_AUTH      "auth"
 #define DIGEST_QOP_VALUE_STRING_AUTH_INT  "auth-int"
 #define DIGEST_QOP_VALUE_STRING_AUTH_CONF "auth-conf"
-
-/* The CURL_OUTPUT_DIGEST_CONV macro below is for non-ASCII machines.
-   It converts digest text to ASCII so the MD5 will be correct for
-   what ultimately goes over the network.
-*/
-#define CURL_OUTPUT_DIGEST_CONV(a, b)                  \
-  do {                                                 \
-    result = Curl_convert_to_network(a, b, strlen(b)); \
-    if(result) {                                       \
-      free(b);                                         \
-      return result;                                   \
-    }                                                  \
-  } while(0)
-#endif /* !USE_WINDOWS_SSPI */
+#endif
 
 bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
                                const char **endptr)
@@ -93,44 +90,50 @@ bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
   }
 
   for(c = DIGEST_MAX_CONTENT_LENGTH - 1; *str && c--; str++) {
-    switch(*str) {
-    case '\\':
-      if(!escape) {
-        /* possibly the start of an escaped quote */
-        escape = TRUE;
-        *content++ = '\\'; /* Even though this is an escape character, we still
-                              store it as-is in the target buffer */
-        continue;
-      }
-      break;
-
-    case ',':
-      if(!starts_with_quote) {
-        /* This signals the end of the content if we didn't get a starting
-           quote and then we do "sloppy" parsing */
-        c = 0; /* the end */
-        continue;
-      }
-      break;
-
-    case '\r':
-    case '\n':
-      /* end of string */
-      c = 0;
-      continue;
+    if(!escape) {
+      switch(*str) {
+      case '\\':
+        if(starts_with_quote) {
+          /* the start of an escaped quote */
+          escape = TRUE;
+          continue;
+        }
+        break;
+
+      case ',':
+        if(!starts_with_quote) {
+          /* This signals the end of the content if we didn't get a starting
+             quote and then we do "sloppy" parsing */
+          c = 0; /* the end */
+          continue;
+        }
+        break;
 
-    case '\"':
-      if(!escape && starts_with_quote) {
+      case '\r':
+      case '\n':
         /* end of string */
+        if(starts_with_quote)
+          return FALSE; /* No closing quote */
         c = 0;
         continue;
+
+      case '\"':
+        if(starts_with_quote) {
+          /* end of string */
+          c = 0;
+          continue;
+        }
+        else
+          return FALSE;
+        break;
       }
-      break;
     }
 
     escape = FALSE;
     *content++ = *str;
   }
+  if(escape)
+    return FALSE; /* No character after backslash */
 
   *content = 0;
   *endptr = str;
@@ -379,7 +382,7 @@ CURLcode Curl_auth_create_digest_md5_message(struct Curl_easy *data,
   if(!(qop_values & DIGEST_QOP_VALUE_AUTH))
     return CURLE_BAD_CONTENT_ENCODING;
 
-  /* Generate 32 random hex chars, 32 bytes + 1 zero termination */
+  /* Generate 32 random hex chars, 32 bytes + 1 null-termination */
   result = Curl_rand_hex(data, (unsigned char *)cnonce, sizeof(cnonce));
   if(result)
     return result;
@@ -518,7 +521,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
     char content[DIGEST_MAX_CONTENT_LENGTH];
 
     /* Pass all additional spaces here */
-    while(*chlg && ISSPACE(*chlg))
+    while(*chlg && ISBLANK(*chlg))
       chlg++;
 
     /* Extract a value=content pair */
@@ -557,6 +560,9 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
 
         token = strtok_r(tmp, ",", &tok_buf);
         while(token) {
+          /* Pass additional spaces here */
+          while(*token && ISBLANK(*token))
+            token++;
           if(strcasecompare(token, DIGEST_QOP_VALUE_STRING_AUTH)) {
             foundAuth = TRUE;
           }
@@ -589,17 +595,17 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
           return CURLE_OUT_OF_MEMORY;
 
         if(strcasecompare(content, "MD5-sess"))
-          digest->algo = CURLDIGESTALGO_MD5SESS;
+          digest->algo = ALGO_MD5SESS;
         else if(strcasecompare(content, "MD5"))
-          digest->algo = CURLDIGESTALGO_MD5;
+          digest->algo = ALGO_MD5;
         else if(strcasecompare(content, "SHA-256"))
-          digest->algo = CURLDIGESTALGO_SHA256;
+          digest->algo = ALGO_SHA256;
         else if(strcasecompare(content, "SHA-256-SESS"))
-          digest->algo = CURLDIGESTALGO_SHA256SESS;
+          digest->algo = ALGO_SHA256SESS;
         else if(strcasecompare(content, "SHA-512-256"))
-          digest->algo = CURLDIGESTALGO_SHA512_256;
+          digest->algo = ALGO_SHA512_256;
         else if(strcasecompare(content, "SHA-512-256-SESS"))
-          digest->algo = CURLDIGESTALGO_SHA512_256SESS;
+          digest->algo = ALGO_SHA512_256SESS;
         else
           return CURLE_BAD_CONTENT_ENCODING;
       }
@@ -616,7 +622,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
       break; /* We're done here */
 
     /* Pass all additional spaces here */
-    while(*chlg && ISSPACE(*chlg))
+    while(*chlg && ISBLANK(*chlg))
       chlg++;
 
     /* Allow the list to be comma-separated */
@@ -634,6 +640,10 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
   if(!digest->nonce)
     return CURLE_BAD_CONTENT_ENCODING;
 
+  /* "<algo>-sess" protocol versions require "auth" or "auth-int" qop */
+  if(!digest->qop && (digest->algo & SESSION_ALGO))
+    return CURLE_BAD_CONTENT_ENCODING;
+
   return CURLE_OK;
 }
 
@@ -678,6 +688,8 @@ static CURLcode auth_create_digest_http_message(
   char *cnonce = NULL;
   size_t cnonce_sz = 0;
   char *userp_quoted;
+  char *realm_quoted;
+  char *nonce_quoted;
   char *response = NULL;
   char *hashthis = NULL;
   char *tmp = NULL;
@@ -692,7 +704,7 @@ static CURLcode auth_create_digest_http_message(
     if(result)
       return result;
 
-    result = Curl_base64_encode(data, cnoncebuf, strlen(cnoncebuf),
+    result = Curl_base64_encode(cnoncebuf, strlen(cnoncebuf),
                                 &cnonce, &cnonce_sz);
     if(result)
       return result;
@@ -701,11 +713,10 @@ static CURLcode auth_create_digest_http_message(
   }
 
   if(digest->userhash) {
-    hashthis = aprintf("%s:%s", userp, digest->realm);
+    hashthis = aprintf("%s:%s", userp, digest->realm ? digest->realm : "");
     if(!hashthis)
       return CURLE_OUT_OF_MEMORY;
 
-    CURL_OUTPUT_DIGEST_CONV(data, hashthis);
     hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
     free(hashthis);
     convert_to_ascii(hashbuf, (unsigned char *)userh);
@@ -722,24 +733,21 @@ static CURLcode auth_create_digest_http_message(
            unq(nonce-value) ":" unq(cnonce-value)
   */
 
-  hashthis = aprintf("%s:%s:%s", userp, digest->realm, passwdp);
+  hashthis = aprintf("%s:%s:%s", userp, digest->realm ? digest->realm : "",
+                     passwdp);
   if(!hashthis)
     return CURLE_OUT_OF_MEMORY;
 
-  CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */
   hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
   free(hashthis);
   convert_to_ascii(hashbuf, ha1);
 
-  if(digest->algo == CURLDIGESTALGO_MD5SESS ||
-     digest->algo == CURLDIGESTALGO_SHA256SESS ||
-     digest->algo == CURLDIGESTALGO_SHA512_256SESS) {
+  if(digest->algo & SESSION_ALGO) {
     /* nonce and cnonce are OUTSIDE the hash */
     tmp = aprintf("%s:%s:%s", ha1, digest->nonce, digest->cnonce);
     if(!tmp)
       return CURLE_OUT_OF_MEMORY;
 
-    CURL_OUTPUT_DIGEST_CONV(data, tmp); /* Convert on non-ASCII machines */
     hash(hashbuf, (unsigned char *) tmp, strlen(tmp));
     free(tmp);
     convert_to_ascii(hashbuf, ha1);
@@ -778,7 +786,6 @@ static CURLcode auth_create_digest_http_message(
   if(!hashthis)
     return CURLE_OUT_OF_MEMORY;
 
-  CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */
   hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
   free(hashthis);
   convert_to_ascii(hashbuf, ha2);
@@ -794,7 +801,6 @@ static CURLcode auth_create_digest_http_message(
   if(!hashthis)
     return CURLE_OUT_OF_MEMORY;
 
-  CURL_OUTPUT_DIGEST_CONV(data, hashthis); /* convert on non-ASCII machines */
   hash(hashbuf, (unsigned char *) hashthis, strlen(hashthis));
   free(hashthis);
   convert_to_ascii(hashbuf, request_digest);
@@ -805,16 +811,33 @@ static CURLcode auth_create_digest_http_message(
      nonce="1053604145", uri="/64", response="c55f7f30d83d774a3d2dcacf725abaca"
 
      Digest parameters are all quoted strings.  Username which is provided by
-     the user will need double quotes and backslashes within it escaped.  For
-     the other fields, this shouldn't be an issue.  realm, nonce, and opaque
-     are copied as is from the server, escapes and all.  cnonce is generated
-     with web-safe characters.  uri is already percent encoded.  nc is 8 hex
+     the user will need double quotes and backslashes within it escaped.
+     realm, nonce, and opaque will need backslashes as well as they were
+     de-escaped when copied from request header.  cnonce is generated with
+     web-safe characters.  uri is already percent encoded.  nc is 8 hex
      characters.  algorithm and qop with standard values only contain web-safe
      characters.
   */
   userp_quoted = auth_digest_string_quoted(digest->userhash ? userh : userp);
   if(!userp_quoted)
     return CURLE_OUT_OF_MEMORY;
+  if(digest->realm)
+    realm_quoted = auth_digest_string_quoted(digest->realm);
+  else {
+    realm_quoted = malloc(1);
+    if(realm_quoted)
+      realm_quoted[0] = 0;
+  }
+  if(!realm_quoted) {
+    free(userp_quoted);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  nonce_quoted = auth_digest_string_quoted(digest->nonce);
+  if(!nonce_quoted) {
+    free(realm_quoted);
+    free(userp_quoted);
+    return CURLE_OUT_OF_MEMORY;
+  }
 
   if(digest->qop) {
     response = aprintf("username=\"%s\", "
@@ -826,18 +849,16 @@ static CURLcode auth_create_digest_http_message(
                        "qop=%s, "
                        "response=\"%s\"",
                        userp_quoted,
-                       digest->realm,
-                       digest->nonce,
+                       realm_quoted,
+                       nonce_quoted,
                        uripath,
                        digest->cnonce,
                        digest->nc,
                        digest->qop,
                        request_digest);
 
-    if(strcasecompare(digest->qop, "auth"))
-      digest->nc++; /* The nc (from RFC) has to be a 8 hex digit number 0
-                       padded which tells to the server how many times you are
-                       using the same nonce in the qop=auth mode */
+    /* Increment nonce-count to use another nc value for the next request */
+    digest->nc++;
   }
   else {
     response = aprintf("username=\"%s\", "
@@ -846,20 +867,29 @@ static CURLcode auth_create_digest_http_message(
                        "uri=\"%s\", "
                        "response=\"%s\"",
                        userp_quoted,
-                       digest->realm,
-                       digest->nonce,
+                       realm_quoted,
+                       nonce_quoted,
                        uripath,
                        request_digest);
   }
+  free(nonce_quoted);
+  free(realm_quoted);
   free(userp_quoted);
   if(!response)
     return CURLE_OUT_OF_MEMORY;
 
   /* Add the optional fields */
   if(digest->opaque) {
+    char *opaque_quoted;
     /* Append the opaque */
-    tmp = aprintf("%s, opaque=\"%s\"", response, digest->opaque);
+    opaque_quoted = auth_digest_string_quoted(digest->opaque);
+    if(!opaque_quoted) {
+      free(response);
+      return CURLE_OUT_OF_MEMORY;
+    }
+    tmp = aprintf("%s, opaque=\"%s\"", response, opaque_quoted);
     free(response);
+    free(opaque_quoted);
     if(!tmp)
       return CURLE_OUT_OF_MEMORY;
 
@@ -921,28 +951,18 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data,
                                               struct digestdata *digest,
                                               char **outptr, size_t *outlen)
 {
-  switch(digest->algo) {
-  case CURLDIGESTALGO_MD5:
-  case CURLDIGESTALGO_MD5SESS:
+  if(digest->algo <= ALGO_MD5SESS)
     return auth_create_digest_http_message(data, userp, passwdp,
                                            request, uripath, digest,
                                            outptr, outlen,
                                            auth_digest_md5_to_ascii,
                                            Curl_md5it);
-
-  case CURLDIGESTALGO_SHA256:
-  case CURLDIGESTALGO_SHA256SESS:
-  case CURLDIGESTALGO_SHA512_256:
-  case CURLDIGESTALGO_SHA512_256SESS:
-    return auth_create_digest_http_message(data, userp, passwdp,
-                                           request, uripath, digest,
-                                           outptr, outlen,
-                                           auth_digest_sha256_to_ascii,
-                                           Curl_sha256it);
-
-  default:
-    return CURLE_UNSUPPORTED_PROTOCOL;
-  }
+  DEBUGASSERT(digest->algo <= ALGO_SHA512_256SESS);
+  return auth_create_digest_http_message(data, userp, passwdp,
+                                         request, uripath, digest,
+                                         outptr, outlen,
+                                         auth_digest_sha256_to_ascii,
+                                         Curl_sha256it);
 }
 
 /*
@@ -965,7 +985,7 @@ void Curl_auth_digest_cleanup(struct digestdata *digest)
   Curl_safefree(digest->algorithm);
 
   digest->nc = 0;
-  digest->algo = CURLDIGESTALGO_MD5; /* default algorithm */
+  digest->algo = ALGO_MD5; /* default algorithm */
   digest->stale = FALSE; /* default means normal, not stale */
   digest->userhash = FALSE;
 }
index ee373cd82eafbfc55beacc9a0ed9bad9d7e43bff..d785bdd91b255f542ff860165f55a4a38bc7d280 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <curl/curl.h>
 #define DIGEST_MAX_VALUE_LENGTH           256
 #define DIGEST_MAX_CONTENT_LENGTH         1024
 
-enum {
-  CURLDIGESTALGO_MD5,
-  CURLDIGESTALGO_MD5SESS,
-  CURLDIGESTALGO_SHA256,
-  CURLDIGESTALGO_SHA256SESS,
-  CURLDIGESTALGO_SHA512_256,
-  CURLDIGESTALGO_SHA512_256SESS
-};
-
 /* This is used to extract the realm from a challenge message */
 bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
                                const char **endptr);
index 94f8f8c0dff78d2cd5c9e470237395ae3fae8504..89a9db52c7b055f24c0e6f028ae4a3d771517696 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2014 - 2016, Steve Holme, <steve_holme@hotmail.com>.
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, 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
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC2831 DIGEST-MD5 authentication
  *
  ***************************************************************************/
@@ -257,7 +259,7 @@ CURLcode Curl_override_sspi_http_realm(const char *chlg,
       char content[DIGEST_MAX_CONTENT_LENGTH];
 
       /* Pass all additional spaces here */
-      while(*chlg && ISSPACE(*chlg))
+      while(*chlg && ISBLANK(*chlg))
         chlg++;
 
       /* Extract a value=content pair */
@@ -290,7 +292,7 @@ CURLcode Curl_override_sspi_http_realm(const char *chlg,
         break; /* We're done here */
 
       /* Pass all additional spaces here */
-      while(*chlg && ISSPACE(*chlg))
+      while(*chlg && ISBLANK(*chlg))
         chlg++;
 
       /* Allow the list to be comma-separated */
@@ -331,7 +333,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
       char value[DIGEST_MAX_VALUE_LENGTH];
       char content[DIGEST_MAX_CONTENT_LENGTH];
 
-      while(*p && ISSPACE(*p))
+      while(*p && ISBLANK(*p))
         p++;
 
       if(!Curl_auth_digest_get_pair(p, value, content, &p))
@@ -343,7 +345,7 @@ CURLcode Curl_auth_decode_digest_http_message(const char *chlg,
         break;
       }
 
-      while(*p && ISSPACE(*p))
+      while(*p && ISBLANK(*p))
         p++;
 
       if(',' == *p)
@@ -429,8 +431,8 @@ CURLcode Curl_auth_create_digest_http_message(struct Curl_easy *data,
      has changed then delete that context. */
   if((userp && !digest->user) || (!userp && digest->user) ||
      (passwdp && !digest->passwd) || (!passwdp && digest->passwd) ||
-     (userp && digest->user && strcmp(userp, digest->user)) ||
-     (passwdp && digest->passwd && strcmp(passwdp, digest->passwd))) {
+     (userp && digest->user && Curl_timestrcmp(userp, digest->user)) ||
+     (passwdp && digest->passwd && Curl_timestrcmp(passwdp, digest->passwd))) {
     if(digest->http_context) {
       s_pSecFn->DeleteSecurityContext(digest->http_context);
       Curl_safefree(digest->http_context);
index 40fef53c9355d0ea3d58ebcee525bb01bfbfb024..a73c64443499df17eb19a048525d1eaac520afda 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Simon Josefsson, <simon@josefsson.org>, et al.
+ * Copyright (C) 2020 - 2022, Simon Josefsson, <simon@josefsson.org>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC5802 SCRAM-SHA-1 authentication
  *
  ***************************************************************************/
@@ -34,7 +36,8 @@
 
 #include <gsasl.h>
 
-/* The last #include files should be: */
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
 #include "curl_memory.h"
 #include "memdebug.h"
 
index 67d43bd567b0579d0b408c8d07e1306bcf767e4d..bac78049dc7c6d81d33311084327a6b4146a0b1e 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2014 - 2019, Steve Holme, <steve_holme@hotmail.com>.
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, 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
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
  *
  ***************************************************************************/
index c652fd736573bd63410e5875772cfa91161a1c47..895b4a1937484c4e917e706ff7339bfd019a99fc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC4752 The Kerberos V5 ("GSSAPI") SASL Mechanism
  *
  ***************************************************************************/
index 04f6590acfc9f24018de404f41f75ff170aa829b..c10fa6caafc72412bc3d58529cda304f80c944ee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 /*
  * NTLM details:
  *
- * https://davenport.sourceforge.io/ntlm.html
+ * https://davenport.sourceforge.net/ntlm.html
  * https://www.innovation.ch/java/ntlm.html
  */
 
 #define DEBUG_ME 0
 
 #include "urldata.h"
-#include "non-ascii.h"
 #include "sendf.h"
 #include "curl_ntlm_core.h"
 #include "curl_gethostname.h"
 /* "NTLMSSP" signature is always in ASCII regardless of the platform */
 #define NTLMSSP_SIGNATURE "\x4e\x54\x4c\x4d\x53\x53\x50"
 
+/* The fixed host name we provide, in order to not leak our real local host
+   name. Copy the name used by Firefox. */
+#define NTLM_HOSTNAME "WORKSTATION"
+
 #if DEBUG_ME
 # define DEBUG_OUT(x) x
 static void ntlm_print_flags(FILE *handle, unsigned long flags)
@@ -383,12 +388,6 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
   /* Clean up any former leftovers and initialise to defaults */
   Curl_auth_cleanup_ntlm(ntlm);
 
-#if defined(USE_NTRESPONSES) && \
-    (defined(USE_NTLM2SESSION) || defined(USE_NTLM_V2))
-#define NTLM2FLAG NTLMFLAG_NEGOTIATE_NTLM2_KEY
-#else
-#define NTLM2FLAG 0
-#endif
   ntlmbuf = aprintf(NTLMSSP_SIGNATURE "%c"
                     "\x01%c%c%c" /* 32-bit type = 1 */
                     "%c%c%c%c"   /* 32-bit NTLM flag field */
@@ -408,7 +407,7 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
                     LONGQUARTET(NTLMFLAG_NEGOTIATE_OEM |
                                 NTLMFLAG_REQUEST_TARGET |
                                 NTLMFLAG_NEGOTIATE_NTLM_KEY |
-                                NTLM2FLAG |
+                                NTLMFLAG_NEGOTIATE_NTLM2_KEY |
                                 NTLMFLAG_NEGOTIATE_ALWAYS_SIGN),
                     SHORTPAIR(domlen),
                     SHORTPAIR(domlen),
@@ -433,18 +432,18 @@ CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
             LONGQUARTET(NTLMFLAG_NEGOTIATE_OEM |
                         NTLMFLAG_REQUEST_TARGET |
                         NTLMFLAG_NEGOTIATE_NTLM_KEY |
-                        NTLM2FLAG |
+                        NTLMFLAG_NEGOTIATE_NTLM2_KEY |
                         NTLMFLAG_NEGOTIATE_ALWAYS_SIGN),
             NTLMFLAG_NEGOTIATE_OEM |
             NTLMFLAG_REQUEST_TARGET |
             NTLMFLAG_NEGOTIATE_NTLM_KEY |
-            NTLM2FLAG |
+            NTLMFLAG_NEGOTIATE_NTLM2_KEY |
             NTLMFLAG_NEGOTIATE_ALWAYS_SIGN);
     ntlm_print_flags(stderr,
                      NTLMFLAG_NEGOTIATE_OEM |
                      NTLMFLAG_REQUEST_TARGET |
                      NTLMFLAG_NEGOTIATE_NTLM_KEY |
-                     NTLM2FLAG |
+                     NTLMFLAG_NEGOTIATE_NTLM2_KEY |
                      NTLMFLAG_NEGOTIATE_ALWAYS_SIGN);
     fprintf(stderr, "\n****\n");
   });
@@ -498,13 +497,11 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
   unsigned char ntlmbuf[NTLM_BUFSIZE];
   int lmrespoff;
   unsigned char lmresp[24]; /* fixed-size */
-#ifdef USE_NTRESPONSES
   int ntrespoff;
   unsigned int ntresplen = 24;
   unsigned char ntresp[24]; /* fixed-size */
   unsigned char *ptr_ntresp = &ntresp[0];
   unsigned char *ntlmv2resp = NULL;
-#endif
   bool unicode = (ntlm->flags & NTLMFLAG_NEGOTIATE_UNICODE) ? TRUE : FALSE;
   char host[HOSTNAME_MAX + 1] = "";
   const char *user;
@@ -530,22 +527,22 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
 
   userlen = strlen(user);
 
+#ifndef NTLM_HOSTNAME
   /* Get the machine's un-qualified host name as NTLM doesn't like the fully
      qualified domain name */
   if(Curl_gethostname(host, sizeof(host))) {
-    infof(data, "gethostname() failed, continuing without!");
+    infof(data, "gethostname() failed, continuing without");
     hostlen = 0;
   }
   else {
     hostlen = strlen(host);
   }
+#else
+  (void)msnprintf(host, sizeof(host), "%s", NTLM_HOSTNAME);
+  hostlen = sizeof(NTLM_HOSTNAME)-1;
+#endif
 
-#if defined(USE_NTRESPONSES) && \
-    (defined(USE_NTLM2SESSION) || defined(USE_NTLM_V2))
-  /* We don't support NTLM2 or extended security if we don't have
-     USE_NTRESPONSES */
   if(ntlm->flags & NTLMFLAG_NEGOTIATE_NTLM2_KEY) {
-# if defined(USE_NTLM_V2)
     unsigned char ntbuffer[0x18];
     unsigned char entropy[8];
     unsigned char ntlmv2hash[0x18];
@@ -558,7 +555,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
     if(result)
       return result;
 
-    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+    result = Curl_ntlm_core_mk_nt_hash(passwdp, ntbuffer);
     if(result)
       return result;
 
@@ -580,67 +577,21 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
       return result;
 
     ptr_ntresp = ntlmv2resp;
-# else /* defined(USE_NTLM_V2) */
-    unsigned char ntbuffer[0x18];
-    unsigned char tmp[0x18];
-    unsigned char md5sum[MD5_DIGEST_LEN];
-    unsigned char entropy[8];
-
-    /* NTLM version 1 with extended security. */
-
-    /* Need to create 8 bytes random data */
-    result = Curl_rand(data, entropy, 8);
-    if(result)
-      return result;
-
-    /* 8 bytes random data as challenge in lmresp */
-    memcpy(lmresp, entropy, 8);
-
-    /* Pad with zeros */
-    memset(lmresp + 8, 0, 0x10);
-
-    /* Fill tmp with challenge(nonce?) + entropy */
-    memcpy(tmp, &ntlm->nonce[0], 8);
-    memcpy(tmp + 8, entropy, 8);
-
-    result = Curl_md5it(md5sum, tmp, 16);
-    if(result)
-      return result;
-
-    /* We shall only use the first 8 bytes of md5sum, but the des code in
-       Curl_ntlm_core_lm_resp only encrypt the first 8 bytes */
-    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
-    if(result)
-      return result;
-
-    Curl_ntlm_core_lm_resp(ntbuffer, md5sum, ntresp);
-
-    /* End of NTLM2 Session code */
-    /* NTLM v2 session security is a misnomer because it is not NTLM v2.
-       It is NTLM v1 using the extended session security that is also
-       in NTLM v2 */
-# endif /* defined(USE_NTLM_V2) */
   }
-  else
-#endif
-  {
+  else {
 
-#ifdef USE_NTRESPONSES
     unsigned char ntbuffer[0x18];
-#endif
     unsigned char lmbuffer[0x18];
 
     /* NTLM version 1 */
 
-#ifdef USE_NTRESPONSES
-    result = Curl_ntlm_core_mk_nt_hash(data, passwdp, ntbuffer);
+    result = Curl_ntlm_core_mk_nt_hash(passwdp, ntbuffer);
     if(result)
       return result;
 
     Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], ntresp);
-#endif
 
-    result = Curl_ntlm_core_mk_lm_hash(data, passwdp, lmbuffer);
+    result = Curl_ntlm_core_mk_lm_hash(passwdp, lmbuffer);
     if(result)
       return result;
 
@@ -649,7 +600,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
 
     /* A safer but less compatible alternative is:
      *   Curl_ntlm_core_lm_resp(ntbuffer, &ntlm->nonce[0], lmresp);
-     * See https://davenport.sourceforge.io/ntlm.html#ntlmVersion2 */
+     * See https://davenport.sourceforge.net/ntlm.html#ntlmVersion2 */
   }
 
   if(unicode) {
@@ -659,12 +610,8 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
   }
 
   lmrespoff = 64; /* size of the message header */
-#ifdef USE_NTRESPONSES
   ntrespoff = lmrespoff + 0x18;
   domoff = ntrespoff + ntresplen;
-#else
-  domoff = lmrespoff + 0x18;
-#endif
   useroff = domoff + domlen;
   hostoff = useroff + userlen;
 
@@ -711,7 +658,7 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
                    /* LanManager response */
                    /* NT response */
 
-                   0,                /* zero termination */
+                   0,                /* null-termination */
                    0, 0, 0,          /* type-3 long, the 24 upper bits */
 
                    SHORTPAIR(0x18),  /* LanManager response length, twice */
@@ -719,17 +666,11 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
                    SHORTPAIR(lmrespoff),
                    0x0, 0x0,
 
-#ifdef USE_NTRESPONSES
                    SHORTPAIR(ntresplen),  /* NT-response length, twice */
                    SHORTPAIR(ntresplen),
                    SHORTPAIR(ntrespoff),
                    0x0, 0x0,
-#else
-                   0x0, 0x0,
-                   0x0, 0x0,
-                   0x0, 0x0,
-                   0x0, 0x0,
-#endif
+
                    SHORTPAIR(domlen),
                    SHORTPAIR(domlen),
                    SHORTPAIR(domoff),
@@ -766,7 +707,6 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
     ntlm_print_hex(stderr, (char *)&ntlmbuf[lmrespoff], 0x18);
   });
 
-#ifdef USE_NTRESPONSES
   /* ntresplen + size should not be risking an integer overflow here */
   if(ntresplen + size > sizeof(ntlmbuf)) {
     failf(data, "incoming NTLM message too big");
@@ -783,8 +723,6 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
 
   free(ntlmv2resp);/* Free the dynamic buffer allocated for NTLMv2 */
 
-#endif
-
   DEBUG_OUT({
     fprintf(stderr, "\n   flags=0x%02.2x%02.2x%02.2x%02.2x 0x%08.8x ",
             LONGQUARTET(ntlm->flags), ntlm->flags);
@@ -823,12 +761,6 @@ CURLcode Curl_auth_create_ntlm_type3_message(struct Curl_easy *data,
 
   size += hostlen;
 
-  /* Convert domain, user, and host to ASCII but leave the rest as-is */
-  result = Curl_convert_to_network(data, (char *)&ntlmbuf[domoff],
-                                   size - domoff);
-  if(result)
-    return CURLE_CONV_FAILED;
-
   /* Return the binary blob. */
   result = Curl_bufref_memdup(out, ntlmbuf, size);
 
index 8ec23ad4f53a99ba0c8fc4e73abf1d36d6853254..4dfda554536774265efeb99b5159af8d00cc7881 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -32,7 +34,8 @@
 /* Stuff only required for curl_ntlm_msgs.c */
 #ifdef BUILDING_CURL_NTLM_MSGS_C
 
-/* Flag bits definitions based on https://davenport.sourceforge.io/ntlm.html */
+/* Flag bits definitions based on
+   https://davenport.sourceforge.net/ntlm.html */
 
 #define NTLMFLAG_NEGOTIATE_UNICODE               (1<<0)
 /* Indicates that Unicode strings are supported for use in security buffer
index 3e39dad315fda3d48f78cbc1e5f458580f971fad..193576acaa2b926207e54c544be3b11c4c612ad5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index a5f16a0bf4cb59de70948d507a237f8c99c1d6cd..1604b303e0751ef32ec82789e2dcc2820566fef2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC6749 OAuth 2.0 Authorization Framework
  *
  ***************************************************************************/
index 8e8932bd03ecb46f9ec2e986f9e977d7183aa22b..25dff967d1b30fd48fc71c436af666ca3c04deee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC4178 Simple and Protected GSS-API Negotiation Mechanism
  *
  ***************************************************************************/
@@ -204,16 +206,14 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
-                                         struct negotiatedata *nego,
+CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
                                          char **outptr, size_t *outlen)
 {
   CURLcode result;
   OM_uint32 minor_status;
 
   /* Base64 encode the already generated response */
-  result = Curl_base64_encode(data,
-                              nego->output_token.value,
+  result = Curl_base64_encode(nego->output_token.value,
                               nego->output_token.length,
                               outptr, outlen);
 
index 68bb17da596e876a925c67408bde92bef6297765..d845caca6cfecad0b8b3f33303f29c0afed520b5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  * RFC4178 Simple and Protected GSS-API Negotiation Mechanism
  *
  ***************************************************************************/
@@ -301,27 +303,19 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
  *
  * Returns CURLE_OK on success.
  */
-CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
-                                         struct negotiatedata *nego,
+CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
                                          char **outptr, size_t *outlen)
 {
-  CURLcode result;
-
   /* Base64 encode the already generated response */
-  result = Curl_base64_encode(data,
-                              (const char *) nego->output_token,
-                              nego->output_token_length,
-                              outptr, outlen);
-
-  if(result)
-    return result;
-
-  if(!*outptr || !*outlen) {
+  CURLcode result = Curl_base64_encode((const char *) nego->output_token,
+                                       nego->output_token_length, outptr,
+                                       outlen);
+  if(!result && (!*outptr || !*outlen)) {
     free(*outptr);
-    return CURLE_REMOTE_ACCESS_DENIED;
+    result = CURLE_REMOTE_ACCESS_DENIED;
   }
 
-  return CURLE_OK;
+  return result;
 }
 
 /*
index 3624fb0c4a0c13e9d9f1188560f7f83f650141f4..58fe05139d20adcf4dd7dae98218bb7760da606b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
@@ -25,6 +27,8 @@
 #include <curl/curl.h>
 
 #include "vauth.h"
+#include "urldata.h"
+#include "strcase.h"
 #include "curl_multibyte.h"
 #include "curl_printf.h"
 
@@ -142,3 +146,18 @@ bool Curl_auth_user_contains_domain(const char *user)
 
   return valid;
 }
+
+/*
+ * Curl_auth_ollowed_to_host() tells if authentication, cookies or other
+ * "sensitive data" can (still) be sent to this host.
+ */
+bool Curl_auth_allowed_to_host(struct Curl_easy *data)
+{
+  struct connectdata *conn = data->conn;
+  return (!data->state.this_is_a_follow ||
+          data->set.allow_auth_to_other_hosts ||
+          (data->state.first_host &&
+           strcasecompare(data->state.first_host, conn->host.name) &&
+           (data->state.first_remote_port == conn->remote_port) &&
+           (data->state.first_remote_protocol == conn->handler->protocol)));
+}
index 47a7c0bc813f0fc3afc4c698e0e53b4a3862a662..af27f01dfbb0a9bc7e13c3d49bba84c2931c3498 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2014 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <curl/curl.h>
@@ -52,6 +54,12 @@ struct gsasldata;
 #define GSS_ERROR(status) ((status) & 0x80000000)
 #endif
 
+/*
+ * Curl_auth_allowed_to_host() tells if authentication, cookies or other
+ * "sensitive data" can (still) be sent to this host.
+ */
+bool Curl_auth_allowed_to_host(struct Curl_easy *data);
+
 /* This is used to build a SPN string */
 #if !defined(USE_WINDOWS_SSPI)
 char *Curl_auth_build_spn(const char *service, const char *host,
@@ -219,11 +227,10 @@ CURLcode Curl_auth_decode_spnego_message(struct Curl_easy *data,
 
 /* This is used to generate a base64 encoded SPNEGO (Negotiate) response
    message */
-CURLcode Curl_auth_create_spnego_message(struct Curl_easy *data,
-                                         struct negotiatedata *nego,
+CURLcode Curl_auth_create_spnego_message(struct negotiatedata *nego,
                                          char **outptr, size_t *outlen);
 
-/* This is used to clean up the SPNEGO specifiec data */
+/* This is used to clean up the SPNEGO specific data */
 void Curl_auth_cleanup_spnego(struct negotiatedata *nego);
 
 #endif /* USE_SPNEGO */
index c84ef85fb3cbc986bc6d920368370e1c0e9df42d..f71f49e09acfb995969aa0c2e77df809dc62dbd7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -29,6 +31,7 @@
 #include "vssh/ssh.h"
 #include "quic.h"
 #include "curl_printf.h"
+#include "easy_lock.h"
 
 #ifdef USE_ARES
 #  if defined(CURL_STATICLIB) && !defined(CARES_STATICLIB) &&   \
 #include <libpsl.h>
 #endif
 
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-#include <iconv.h>
-#endif
-
 #ifdef USE_LIBRTMP
 #include <librtmp/rtmp.h>
 #endif
 
-#ifdef HAVE_ZLIB_H
+#ifdef HAVE_LIBZ
 #include <zlib.h>
 #endif
 
@@ -106,7 +105,7 @@ static void zstd_version(char *buf, size_t bufsz)
  * zeros in the data.
  */
 
-#define VERSION_PARTS 17 /* number of substrings we can concatenate */
+#define VERSION_PARTS 16 /* number of substrings we can concatenate */
 
 char *curl_version(void)
 {
@@ -135,9 +134,6 @@ char *curl_version(void)
 #ifdef USE_LIBPSL
   char psl_version[40];
 #endif
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-  char iconv_version[40]="iconv";
-#endif
 #ifdef USE_SSH
   char ssh_version[40];
 #endif
@@ -206,15 +202,7 @@ char *curl_version(void)
   msnprintf(psl_version, sizeof(psl_version), "libpsl/%s", psl_get_version());
   src[i++] = psl_version;
 #endif
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-#ifdef _LIBICONV_VERSION
-  msnprintf(iconv_version, sizeof(iconv_version), "iconv/%d.%d",
-            _LIBICONV_VERSION >> 8, _LIBICONV_VERSION & 255);
-#else
-  /* version unknown, let the default stand */
-#endif /* _LIBICONV_VERSION */
-  src[i++] = iconv_version;
-#endif
+
 #ifdef USE_SSH
   Curl_ssh_version(ssh_version, sizeof(ssh_version));
   src[i++] = ssh_version;
@@ -350,6 +338,11 @@ static const char * const protocols[] = {
 #endif
 #ifdef USE_LIBRTMP
   "rtmp",
+  "rtmpe",
+  "rtmps",
+  "rtmpt",
+  "rtmpte",
+  "rtmpts",
 #endif
 #ifndef CURL_DISABLE_RTSP
   "rtsp",
@@ -379,6 +372,12 @@ static const char * const protocols[] = {
 #ifndef CURL_DISABLE_TFTP
   "tftp",
 #endif
+#ifdef USE_WEBSOCKETS
+  "ws",
+#endif
+#if defined(USE_SSL) && defined(USE_WEBSOCKETS)
+  "wss",
+#endif
 
   NULL
 };
@@ -433,9 +432,6 @@ static curl_version_info_data version_info = {
 #if defined(WIN32) && defined(UNICODE) && defined(_UNICODE)
   | CURL_VERSION_UNICODE
 #endif
-#if defined(CURL_DOES_CONVERSIONS)
-  | CURL_VERSION_CONV
-#endif
 #if defined(USE_TLS_SRP)
   | CURL_VERSION_TLSAUTH_SRP
 #endif
@@ -468,6 +464,9 @@ static curl_version_info_data version_info = {
 #endif
 #if defined(USE_GSASL)
   | CURL_VERSION_GSASL
+#endif
+#if defined(GLOBAL_INIT_IS_THREADSAFE)
+  | CURL_VERSION_THREADSAFE
 #endif
   ,
   NULL, /* ssl_version */
@@ -551,15 +550,6 @@ curl_version_info_data *curl_version_info(CURLversion stamp)
   version_info.features |= CURL_VERSION_IDN;
 #endif
 
-#if defined(HAVE_ICONV) && defined(CURL_DOES_CONVERSIONS)
-#ifdef _LIBICONV_VERSION
-  version_info.iconv_ver_num = _LIBICONV_VERSION;
-#else
-  /* version unknown */
-  version_info.iconv_ver_num = -1;
-#endif /* _LIBICONV_VERSION */
-#endif
-
 #if defined(USE_SSH)
   Curl_ssh_version(ssh_buffer, sizeof(ssh_buffer));
   version_info.libssh_version = ssh_buffer;
index 79a2aa6ab456ba6bef319cb5961a279e074ce26f..e8f14f9dff089f9644d3ffd4adcac4df19ed64fc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2016 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
@@ -76,6 +78,8 @@ bool curlx_verify_windows_version(const unsigned int majorVersion,
   bool matched = FALSE;
 
 #if defined(CURL_WINDOWS_APP)
+  (void)buildVersion;
+
   /* We have no way to determine the Windows version from Windows apps,
      so let's assume we're running on the target Windows version. */
   const WORD fullVersion = MAKEWORD(minorVersion, majorVersion);
index 38af87fa097d21ea5a0f165181e90179676de449..7a9a6a14f14bee76fe9a111b2379574d10d916ac 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2016 - 2021, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2016 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
  * 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"
diff --git a/lib/vquic/msh3.c b/lib/vquic/msh3.c
new file mode 100644 (file)
index 0000000..c3e58e7
--- /dev/null
@@ -0,0 +1,527 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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_MSH3
+
+#include "urldata.h"
+#include "timeval.h"
+#include "multiif.h"
+#include "sendf.h"
+#include "connect.h"
+#include "h2h3.h"
+#include "msh3.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/* #define DEBUG_HTTP3 1 */
+#ifdef DEBUG_HTTP3
+#define H3BUGF(x) x
+#else
+#define H3BUGF(x) do { } while(0)
+#endif
+
+#define MSH3_REQ_INIT_BUF_LEN 8192
+
+static CURLcode msh3_do_it(struct Curl_easy *data, bool *done);
+static int msh3_getsock(struct Curl_easy *data,
+                        struct connectdata *conn, curl_socket_t *socks);
+static CURLcode msh3_disconnect(struct Curl_easy *data,
+                                struct connectdata *conn,
+                                bool dead_connection);
+static unsigned int msh3_conncheck(struct Curl_easy *data,
+                                   struct connectdata *conn,
+                                   unsigned int checks_to_perform);
+static Curl_recv msh3_stream_recv;
+static Curl_send msh3_stream_send;
+static void MSH3_CALL msh3_header_received(MSH3_REQUEST *Request,
+                                           void *IfContext,
+                                           const MSH3_HEADER *Header);
+static void MSH3_CALL msh3_data_received(MSH3_REQUEST *Request,
+                                        void *IfContext, uint32_t Length,
+                                        const uint8_t *Data);
+static void MSH3_CALL msh3_complete(MSH3_REQUEST *Request, void *IfContext,
+                                    bool Aborted, uint64_t AbortError);
+static void MSH3_CALL msh3_shutdown(MSH3_REQUEST *Request, void *IfContext);
+
+static const struct Curl_handler msh3_curl_handler_http3 = {
+  "HTTPS",                              /* scheme */
+  ZERO_NULL,                            /* setup_connection */
+  msh3_do_it,                           /* do_it */
+  Curl_http_done,                       /* done */
+  ZERO_NULL,                            /* do_more */
+  ZERO_NULL,                            /* connect_it */
+  ZERO_NULL,                            /* connecting */
+  ZERO_NULL,                            /* doing */
+  msh3_getsock,                         /* proto_getsock */
+  msh3_getsock,                         /* doing_getsock */
+  ZERO_NULL,                            /* domore_getsock */
+  msh3_getsock,                         /* perform_getsock */
+  msh3_disconnect,                      /* disconnect */
+  ZERO_NULL,                            /* readwrite */
+  msh3_conncheck,                       /* connection_check */
+  ZERO_NULL,                            /* attach connection */
+  PORT_HTTP,                            /* defport */
+  CURLPROTO_HTTPS,                      /* protocol */
+  CURLPROTO_HTTP,                       /* family */
+  PROTOPT_SSL | PROTOPT_STREAM          /* flags */
+};
+
+static const MSH3_REQUEST_IF msh3_request_if = {
+  msh3_header_received,
+  msh3_data_received,
+  msh3_complete,
+  msh3_shutdown
+};
+
+void Curl_quic_ver(char *p, size_t len)
+{
+  uint32_t v[4];
+  MsH3Version(v);
+  (void)msnprintf(p, len, "msh3/%d.%d.%d.%d", v[0], v[1], v[2], v[3]);
+}
+
+CURLcode Curl_quic_connect(struct Curl_easy *data,
+                           struct connectdata *conn,
+                           curl_socket_t sockfd,
+                           int sockindex,
+                           const struct sockaddr *addr,
+                           socklen_t addrlen)
+{
+  struct quicsocket *qs = &conn->hequic[sockindex];
+  bool insecure = !conn->ssl_config.verifypeer;
+  memset(qs, 0, sizeof(*qs));
+
+  (void)sockfd;
+  (void)addr; /* TODO - Pass address along */
+  (void)addrlen;
+
+  H3BUGF(infof(data, "creating new api/connection"));
+
+  qs->api = MsH3ApiOpen();
+  if(!qs->api) {
+    failf(data, "can't create msh3 api");
+    return CURLE_FAILED_INIT;
+  }
+
+  qs->conn = MsH3ConnectionOpen(qs->api,
+                                conn->host.name,
+                                (uint16_t)conn->remote_port,
+                                insecure);
+  if(!qs->conn) {
+    failf(data, "can't create msh3 connection");
+    if(qs->api) {
+      MsH3ApiClose(qs->api);
+    }
+    return CURLE_FAILED_INIT;
+  }
+
+  return CURLE_OK;
+}
+
+CURLcode Curl_quic_is_connected(struct Curl_easy *data,
+                                struct connectdata *conn,
+                                int sockindex,
+                                bool *connected)
+{
+  struct quicsocket *qs = &conn->hequic[sockindex];
+  MSH3_CONNECTION_STATE state;
+
+  state = MsH3ConnectionGetState(qs->conn, false);
+  if(state == MSH3_CONN_HANDSHAKE_FAILED || state == MSH3_CONN_DISCONNECTED) {
+    failf(data, "failed to connect, state=%u", (uint32_t)state);
+    return CURLE_COULDNT_CONNECT;
+  }
+
+  if(state == MSH3_CONN_CONNECTED) {
+    H3BUGF(infof(data, "connection connected"));
+    *connected = true;
+    conn->quic = qs;
+    conn->recv[sockindex] = msh3_stream_recv;
+    conn->send[sockindex] = msh3_stream_send;
+    conn->handler = &msh3_curl_handler_http3;
+    conn->bits.multiplex = TRUE; /* at least potentially multiplexed */
+    conn->httpversion = 30;
+    conn->bundle->multiuse = BUNDLE_MULTIPLEX;
+    /* TODO - Clean up other happy-eyeballs connection(s)? */
+  }
+
+  return CURLE_OK;
+}
+
+static int msh3_getsock(struct Curl_easy *data,
+                        struct connectdata *conn, curl_socket_t *socks)
+{
+  struct HTTP *stream = data->req.p.http;
+  int bitmap = GETSOCK_BLANK;
+
+  socks[0] = conn->sock[FIRSTSOCKET];
+
+  if(stream->recv_error) {
+    bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+    data->state.drain++;
+  }
+  else if(stream->recv_header_len || stream->recv_data_len) {
+    bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
+    data->state.drain++;
+  }
+
+  H3BUGF(infof(data, "msh3_getsock %u", (uint32_t)data->state.drain));
+
+  return bitmap;
+}
+
+static CURLcode msh3_do_it(struct Curl_easy *data, bool *done)
+{
+  struct HTTP *stream = data->req.p.http;
+  H3BUGF(infof(data, "msh3_do_it"));
+  stream->recv_buf = malloc(MSH3_REQ_INIT_BUF_LEN);
+  if(!stream->recv_buf) {
+    return CURLE_OUT_OF_MEMORY;
+  }
+  stream->req = ZERO_NULL;
+  msh3_lock_initialize(&stream->recv_lock);
+  stream->recv_buf_alloc = MSH3_REQ_INIT_BUF_LEN;
+  stream->recv_header_len = 0;
+  stream->recv_header_complete = false;
+  stream->recv_data_len = 0;
+  stream->recv_data_complete = false;
+  stream->recv_error = CURLE_OK;
+  return Curl_http(data, done);
+}
+
+static unsigned int msh3_conncheck(struct Curl_easy *data,
+                                   struct connectdata *conn,
+                                   unsigned int checks_to_perform)
+{
+  (void)data;
+  (void)conn;
+  (void)checks_to_perform;
+  H3BUGF(infof(data, "msh3_conncheck"));
+  return CONNRESULT_NONE;
+}
+
+static void disconnect(struct quicsocket *qs)
+{
+  if(qs->conn) {
+    MsH3ConnectionClose(qs->conn);
+    qs->conn = ZERO_NULL;
+  }
+  if(qs->api) {
+    MsH3ApiClose(qs->api);
+    qs->api = ZERO_NULL;
+  }
+}
+
+static CURLcode msh3_disconnect(struct Curl_easy *data,
+                                struct connectdata *conn, bool dead_connection)
+{
+  (void)data;
+  (void)dead_connection;
+  H3BUGF(infof(data, "disconnecting (msh3)"));
+  disconnect(conn->quic);
+  return CURLE_OK;
+}
+
+void Curl_quic_disconnect(struct Curl_easy *data, struct connectdata *conn,
+                          int tempindex)
+{
+  (void)data;
+  if(conn->transport == TRNSPRT_QUIC) {
+    H3BUGF(infof(data, "disconnecting QUIC index %u", tempindex));
+    disconnect(&conn->hequic[tempindex]);
+  }
+}
+
+/* Requires stream->recv_lock to be held */
+static bool msh3request_ensure_room(struct HTTP *stream, size_t len)
+{
+  uint8_t *new_recv_buf;
+  const size_t cur_recv_len = stream->recv_header_len + stream->recv_data_len;
+  if(cur_recv_len + len > stream->recv_buf_alloc) {
+    size_t new_recv_buf_alloc_len = stream->recv_buf_alloc;
+    do {
+      new_recv_buf_alloc_len <<= 1; /* TODO - handle overflow */
+    } while(cur_recv_len + len > new_recv_buf_alloc_len);
+    new_recv_buf = malloc(new_recv_buf_alloc_len);
+    if(!new_recv_buf) {
+      return false;
+    }
+    if(cur_recv_len) {
+      memcpy(new_recv_buf, stream->recv_buf, cur_recv_len);
+    }
+    stream->recv_buf_alloc = new_recv_buf_alloc_len;
+    free(stream->recv_buf);
+    stream->recv_buf = new_recv_buf;
+  }
+  return true;
+}
+
+static void MSH3_CALL msh3_header_received(MSH3_REQUEST *Request,
+                                           void *IfContext,
+                                           const MSH3_HEADER *Header)
+{
+  struct HTTP *stream = IfContext;
+  size_t total_len;
+  (void)Request;
+
+  if(stream->recv_header_complete) {
+    H3BUGF(printf("* ignoring header after data\n"));
+    return;
+  }
+
+  msh3_lock_acquire(&stream->recv_lock);
+
+  if((Header->NameLength == 7) &&
+     !strncmp(H2H3_PSEUDO_STATUS, (char *)Header->Name, 7)) {
+     total_len = 9 + Header->ValueLength;
+    if(!msh3request_ensure_room(stream, total_len)) {
+      /* TODO - handle error */
+      goto release_lock;
+    }
+    msnprintf((char *)stream->recv_buf + stream->recv_header_len,
+              stream->recv_buf_alloc - stream->recv_header_len,
+              "HTTP/3 %.*s\n", (int)Header->ValueLength, Header->Value);
+  }
+  else {
+    total_len = Header->NameLength + 4 + Header->ValueLength;
+    if(!msh3request_ensure_room(stream, total_len)) {
+      /* TODO - handle error */
+      goto release_lock;
+    }
+    msnprintf((char *)stream->recv_buf + stream->recv_header_len,
+              stream->recv_buf_alloc - stream->recv_header_len,
+              "%.*s: %.*s\n",
+              (int)Header->NameLength, Header->Name,
+              (int)Header->ValueLength, Header->Value);
+  }
+
+  stream->recv_header_len += total_len - 1; /* don't include null-terminator */
+
+release_lock:
+  msh3_lock_release(&stream->recv_lock);
+}
+
+static void MSH3_CALL msh3_data_received(MSH3_REQUEST *Request,
+                                         void *IfContext, uint32_t Length,
+                                         const uint8_t *Data)
+{
+  struct HTTP *stream = IfContext;
+  size_t cur_recv_len = stream->recv_header_len + stream->recv_data_len;
+  (void)Request;
+  H3BUGF(printf("* msh3_data_received %u. %zu buffered, %zu allocated\n",
+                Length, cur_recv_len, stream->recv_buf_alloc));
+  msh3_lock_acquire(&stream->recv_lock);
+  if(!stream->recv_header_complete) {
+    H3BUGF(printf("* Headers complete!\n"));
+    if(!msh3request_ensure_room(stream, 2)) {
+      /* TODO - handle error */
+      goto release_lock;
+    }
+    stream->recv_buf[stream->recv_header_len++] = '\r';
+    stream->recv_buf[stream->recv_header_len++] = '\n';
+    stream->recv_header_complete = true;
+    cur_recv_len += 2;
+  }
+  if(!msh3request_ensure_room(stream, Length)) {
+    /* TODO - handle error */
+    goto release_lock;
+  }
+  memcpy(stream->recv_buf + cur_recv_len, Data, Length);
+  stream->recv_data_len += (size_t)Length;
+release_lock:
+  msh3_lock_release(&stream->recv_lock);
+}
+
+static void MSH3_CALL msh3_complete(MSH3_REQUEST *Request, void *IfContext,
+                                    bool Aborted, uint64_t AbortError)
+{
+  struct HTTP *stream = IfContext;
+  (void)Request;
+  (void)AbortError;
+  H3BUGF(printf("* msh3_complete, aborted=%s\n", Aborted ? "true" : "false"));
+  msh3_lock_acquire(&stream->recv_lock);
+  if(Aborted) {
+    stream->recv_error = CURLE_HTTP3; /* TODO - how do we pass AbortError? */
+  }
+  stream->recv_header_complete = true;
+  stream->recv_data_complete = true;
+  msh3_lock_release(&stream->recv_lock);
+}
+
+static void MSH3_CALL msh3_shutdown(MSH3_REQUEST *Request, void *IfContext)
+{
+  struct HTTP *stream = IfContext;
+  (void)Request;
+  (void)stream;
+}
+
+static ssize_t msh3_stream_send(struct Curl_easy *data,
+                                int sockindex,
+                                const void *mem,
+                                size_t len,
+                                CURLcode *curlcode)
+{
+  struct connectdata *conn = data->conn;
+  struct HTTP *stream = data->req.p.http;
+  struct quicsocket *qs = conn->quic;
+  struct h2h3req *hreq;
+
+  (void)sockindex;
+  /* Sizes must match for cast below to work" */
+  DEBUGASSERT(sizeof(MSH3_HEADER) == sizeof(struct h2h3pseudo));
+
+  H3BUGF(infof(data, "msh3_stream_send %zu", len));
+
+  if(!stream->req) {
+    *curlcode = Curl_pseudo_headers(data, mem, len, &hreq);
+    if(*curlcode) {
+      failf(data, "Curl_pseudo_headers failed");
+      return -1;
+    }
+    H3BUGF(infof(data, "starting request with %zu headers", hreq->entries));
+    stream->req = MsH3RequestOpen(qs->conn, &msh3_request_if, stream,
+                                 (MSH3_HEADER*)hreq->header, hreq->entries);
+    Curl_pseudo_free(hreq);
+    if(!stream->req) {
+      failf(data, "request open failed");
+      *curlcode = CURLE_SEND_ERROR;
+      return -1;
+    }
+    *curlcode = CURLE_OK;
+    return len;
+  }
+  H3BUGF(infof(data, "send %zd body bytes on request %p", len,
+               (void *)stream->req));
+  *curlcode = CURLE_SEND_ERROR;
+  return -1;
+}
+
+static ssize_t msh3_stream_recv(struct Curl_easy *data,
+                                int sockindex,
+                                char *buf,
+                                size_t buffersize,
+                                CURLcode *curlcode)
+{
+  struct HTTP *stream = data->req.p.http;
+  size_t outsize = 0;
+  (void)sockindex;
+  H3BUGF(infof(data, "msh3_stream_recv %zu", buffersize));
+
+  if(stream->recv_error) {
+    failf(data, "request aborted");
+    *curlcode = stream->recv_error;
+    return -1;
+  }
+
+  msh3_lock_acquire(&stream->recv_lock);
+
+  if(stream->recv_header_len) {
+    outsize = buffersize;
+    if(stream->recv_header_len < outsize) {
+      outsize = stream->recv_header_len;
+    }
+    memcpy(buf, stream->recv_buf, outsize);
+    if(outsize < stream->recv_header_len + stream->recv_data_len) {
+      memmove(stream->recv_buf, stream->recv_buf + outsize,
+              stream->recv_header_len + stream->recv_data_len - outsize);
+    }
+    stream->recv_header_len -= outsize;
+    H3BUGF(infof(data, "returned %zu bytes of headers", outsize));
+  }
+  else if(stream->recv_data_len) {
+    outsize = buffersize;
+    if(stream->recv_data_len < outsize) {
+      outsize = stream->recv_data_len;
+    }
+    memcpy(buf, stream->recv_buf, outsize);
+    if(outsize < stream->recv_data_len) {
+      memmove(stream->recv_buf, stream->recv_buf + outsize,
+              stream->recv_data_len - outsize);
+    }
+    stream->recv_data_len -= outsize;
+    H3BUGF(infof(data, "returned %zu bytes of data", outsize));
+  }
+  else if(stream->recv_data_complete) {
+    H3BUGF(infof(data, "receive complete"));
+  }
+
+  msh3_lock_release(&stream->recv_lock);
+
+  return (ssize_t)outsize;
+}
+
+CURLcode Curl_quic_done_sending(struct Curl_easy *data)
+{
+  struct connectdata *conn = data->conn;
+  H3BUGF(infof(data, "Curl_quic_done_sending"));
+  if(conn->handler == &msh3_curl_handler_http3) {
+    struct HTTP *stream = data->req.p.http;
+    stream->upload_done = TRUE;
+  }
+
+  return CURLE_OK;
+}
+
+void Curl_quic_done(struct Curl_easy *data, bool premature)
+{
+  struct HTTP *stream = data->req.p.http;
+  (void)premature;
+  H3BUGF(infof(data, "Curl_quic_done"));
+  if(stream) {
+    if(stream->recv_buf) {
+      Curl_safefree(stream->recv_buf);
+      msh3_lock_uninitialize(&stream->recv_lock);
+    }
+    if(stream->req) {
+      MsH3RequestClose(stream->req);
+      stream->req = ZERO_NULL;
+    }
+  }
+}
+
+bool Curl_quic_data_pending(const struct Curl_easy *data)
+{
+  struct HTTP *stream = data->req.p.http;
+  H3BUGF(infof((struct Curl_easy *)data, "Curl_quic_data_pending"));
+  return stream->recv_header_len || stream->recv_data_len;
+}
+
+/*
+ * Called from transfer.c:Curl_readwrite when neither HTTP level read
+ * nor write is performed. It is a good place to handle timer expiry
+ * for QUIC transport.
+ */
+CURLcode Curl_quic_idle(struct Curl_easy *data)
+{
+  (void)data;
+  H3BUGF(infof(data, "Curl_quic_idle"));
+  return CURLE_OK;
+}
+
+#endif /* USE_MSH3 */
diff --git a/lib/vquic/msh3.h b/lib/vquic/msh3.h
new file mode 100644 (file)
index 0000000..ce884d9
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef HEADER_CURL_VQUIC_MSH3_H
+#define HEADER_CURL_VQUIC_MSH3_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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_MSH3
+
+#include <msh3.h>
+
+struct quicsocket {
+  MSH3_API* api;
+  MSH3_CONNECTION* conn;
+};
+
+#endif /* USE_MSQUIC */
+
+#endif /* HEADER_CURL_VQUIC_MSH3_H */
index 1596049b779165473b97fb0a255fe8e25bba1010..097cca44b0cf53e0ef3b5b1f2e1645ae1417be9b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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_NGTCP2
 #include <ngtcp2/ngtcp2.h>
-#include <ngtcp2/ngtcp2_crypto.h>
 #include <nghttp3/nghttp3.h>
 #ifdef USE_OPENSSL
 #include <openssl/err.h>
+#ifdef OPENSSL_IS_BORINGSSL
+#include <ngtcp2/ngtcp2_crypto_boringssl.h>
+#else
 #include <ngtcp2/ngtcp2_crypto_openssl.h>
+#endif
 #include "vtls/openssl.h"
 #elif defined(USE_GNUTLS)
 #include <ngtcp2/ngtcp2_crypto_gnutls.h>
 #include "vtls/gtls.h"
+#elif defined(USE_WOLFSSL)
+#include <ngtcp2/ngtcp2_crypto_wolfssl.h>
+#include "vtls/wolfssl.h"
 #endif
 #include "urldata.h"
 #include "sendf.h"
@@ -45,7 +53,9 @@
 #include "strerror.h"
 #include "dynbuf.h"
 #include "vquic.h"
+#include "h2h3.h"
 #include "vtls/keylog.h"
+#include "vtls/vtls.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -71,7 +81,7 @@
  * the far end, then start over at index 0 again.
  */
 
-#define H3_SEND_SIZE (20*1024)
+#define H3_SEND_SIZE (256*1024)
 struct h3out {
   uint8_t buf[H3_SEND_SIZE];
   size_t used;   /* number of bytes used in the buffer */
@@ -81,7 +91,7 @@ struct h3out {
 
 #define QUIC_MAX_STREAMS (256*1024)
 #define QUIC_MAX_DATA (1*1024*1024)
-#define QUIC_IDLE_TIMEOUT 60000 /* milliseconds */
+#define QUIC_IDLE_TIMEOUT (60*NGTCP2_SECONDS)
 
 #ifdef USE_OPENSSL
 #define QUIC_CIPHERS                                                          \
@@ -94,17 +104,32 @@ struct h3out {
   "+CHACHA20-POLY1305:+AES-128-CCM:-GROUP-ALL:+GROUP-SECP256R1:" \
   "+GROUP-X25519:+GROUP-SECP384R1:+GROUP-SECP521R1:" \
   "%DISABLE_TLS13_COMPAT_MODE"
+#elif defined(USE_WOLFSSL)
+#define QUIC_CIPHERS                                                          \
+  "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_"               \
+  "POLY1305_SHA256:TLS_AES_128_CCM_SHA256"
+#define QUIC_GROUPS "P-256:P-384:P-521"
 #endif
 
+/* ngtcp2 default congestion controller does not perform pacing. Limit
+   the maximum packet burst to MAX_PKT_BURST packets. */
+#define MAX_PKT_BURST 10
+
 static CURLcode ng_process_ingress(struct Curl_easy *data,
                                    curl_socket_t sockfd,
                                    struct quicsocket *qs);
 static CURLcode ng_flush_egress(struct Curl_easy *data, int sockfd,
                                 struct quicsocket *qs);
 static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
-                                   size_t datalen, void *user_data,
+                                   uint64_t datalen, void *user_data,
                                    void *stream_user_data);
 
+static ngtcp2_conn *get_conn(ngtcp2_crypto_conn_ref *conn_ref)
+{
+  struct quicsocket *qs = conn_ref->user_data;
+  return qs->qconn;
+}
+
 static ngtcp2_tstamp timestamp(void)
 {
   struct curltime ct = Curl_now();
@@ -185,90 +210,44 @@ static int keylog_callback(gnutls_session_t session, const char *label,
   Curl_tls_keylog_write(label, crandom.data, secret->data, secret->size);
   return 0;
 }
-#endif
-
-static int init_ngh3_conn(struct quicsocket *qs);
-
-static int write_client_handshake(struct quicsocket *qs,
-                                  ngtcp2_crypto_level level,
-                                  const uint8_t *data, size_t len)
-{
-  int rv;
-
-  rv = ngtcp2_conn_submit_crypto_data(qs->qconn, level, data, len);
-  if(rv) {
-    H3BUGF(fprintf(stderr, "write_client_handshake failed\n"));
-  }
-  assert(0 == rv);
-
-  return 1;
-}
-
-#ifdef USE_OPENSSL
-static int quic_set_encryption_secrets(SSL *ssl,
-                                       OSSL_ENCRYPTION_LEVEL ossl_level,
-                                       const uint8_t *rx_secret,
-                                       const uint8_t *tx_secret,
-                                       size_t secretlen)
-{
-  struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
-  int level = ngtcp2_crypto_openssl_from_ossl_encryption_level(ossl_level);
-
-  if(ngtcp2_crypto_derive_and_install_rx_key(
-       qs->qconn, NULL, NULL, NULL, level, rx_secret, secretlen) != 0)
-    return 0;
-
-  if(ngtcp2_crypto_derive_and_install_tx_key(
-       qs->qconn, NULL, NULL, NULL, level, tx_secret, secretlen) != 0)
-    return 0;
-
-  if(level == NGTCP2_CRYPTO_LEVEL_APPLICATION) {
-    if(init_ngh3_conn(qs) != CURLE_OK)
-      return 0;
-  }
-
-  return 1;
-}
-
-static int quic_add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,
-                                   const uint8_t *data, size_t len)
-{
-  struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
-  ngtcp2_crypto_level level =
-      ngtcp2_crypto_openssl_from_ossl_encryption_level(ossl_level);
-
-  return write_client_handshake(qs, level, data, len);
-}
-
-static int quic_flush_flight(SSL *ssl)
+#elif defined(USE_WOLFSSL)
+#if defined(HAVE_SECRET_CALLBACK)
+static void keylog_callback(const WOLFSSL *ssl, const char *line)
 {
   (void)ssl;
-  return 1;
-}
-
-static int quic_send_alert(SSL *ssl, enum ssl_encryption_level_t level,
-                           uint8_t alert)
-{
-  struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl);
-  (void)level;
-
-  qs->tls_alert = alert;
-  return 1;
+  Curl_tls_keylog_write_line(line);
 }
+#endif
+#endif
 
-static SSL_QUIC_METHOD quic_method = {quic_set_encryption_secrets,
-                                      quic_add_handshake_data,
-                                      quic_flush_flight, quic_send_alert};
+static int init_ngh3_conn(struct quicsocket *qs);
 
+#ifdef USE_OPENSSL
 static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
 {
+  struct connectdata *conn = data->conn;
   SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
 
-  SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION);
-  SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION);
+#ifdef OPENSSL_IS_BORINGSSL
+  if(ngtcp2_crypto_boringssl_configure_client_context(ssl_ctx) != 0) {
+    failf(data, "ngtcp2_crypto_boringssl_configure_client_context failed");
+    return NULL;
+  }
+#else
+  if(ngtcp2_crypto_openssl_configure_client_context(ssl_ctx) != 0) {
+    failf(data, "ngtcp2_crypto_openssl_configure_client_context failed");
+    return NULL;
+  }
+#endif
 
   SSL_CTX_set_default_verify_paths(ssl_ctx);
 
+#ifdef OPENSSL_IS_BORINGSSL
+  if(SSL_CTX_set1_curves_list(ssl_ctx, QUIC_GROUPS) != 1) {
+    failf(data, "SSL_CTX_set1_curves_list failed");
+    return NULL;
+  }
+#else
   if(SSL_CTX_set_ciphersuites(ssl_ctx, QUIC_CIPHERS) != 1) {
     char error_buffer[256];
     ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer));
@@ -280,8 +259,7 @@ static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
     failf(data, "SSL_CTX_set1_groups_list failed");
     return NULL;
   }
-
-  SSL_CTX_set_quic_method(ssl_ctx, &quic_method);
+#endif
 
   /* Open the file if a TLS or QUIC backend has not done this before. */
   Curl_tls_keylog_open();
@@ -289,12 +267,11 @@ static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
     SSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
   }
 
-  {
-    struct connectdata *conn = data->conn;
+  if(conn->ssl_config.verifypeer) {
     const char * const ssl_cafile = conn->ssl_config.CAfile;
     const char * const ssl_capath = conn->ssl_config.CApath;
 
-    if(conn->ssl_config.verifypeer) {
+    if(ssl_cafile || ssl_capath) {
       SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
       /* tell OpenSSL where to find CA certificates that are used to verify
          the server's certificate. */
@@ -309,10 +286,36 @@ static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
       infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
       infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
     }
+#ifdef CURL_CA_FALLBACK
+    else {
+      /* verifying the peer without any CA certificates won't work so
+         use openssl's built-in default as fallback */
+      SSL_CTX_set_default_verify_paths(ssl_ctx);
+    }
+#endif
   }
   return ssl_ctx;
 }
 
+static CURLcode quic_set_client_cert(struct Curl_easy *data,
+                                     struct quicsocket *qs)
+{
+  struct connectdata *conn = data->conn;
+  SSL_CTX *ssl_ctx = qs->sslctx;
+  char *const ssl_cert = SSL_SET_OPTION(primary.clientcert);
+  const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
+  const char *const ssl_cert_type = SSL_SET_OPTION(cert_type);
+
+  if(ssl_cert || ssl_cert_blob || ssl_cert_type) {
+    return Curl_ossl_set_client_cert(
+        data, ssl_ctx, ssl_cert, ssl_cert_blob, ssl_cert_type,
+        SSL_SET_OPTION(key), SSL_SET_OPTION(key_blob),
+        SSL_SET_OPTION(key_type), SSL_SET_OPTION(key_passwd));
+  }
+
+  return CURLE_OK;
+}
+
 /** SSL callbacks ***/
 
 static int quic_init_ssl(struct quicsocket *qs)
@@ -325,7 +328,7 @@ static int quic_init_ssl(struct quicsocket *qs)
   DEBUGASSERT(!qs->ssl);
   qs->ssl = SSL_new(qs->sslctx);
 
-  SSL_set_app_data(qs->ssl, qs);
+  SSL_set_app_data(qs->ssl, &qs->conn_ref);
   SSL_set_connect_state(qs->ssl);
   SSL_set_quic_use_legacy_codepoint(qs->ssl, 0);
 
@@ -339,107 +342,6 @@ static int quic_init_ssl(struct quicsocket *qs)
   return 0;
 }
 #elif defined(USE_GNUTLS)
-static int secret_func(gnutls_session_t ssl,
-                       gnutls_record_encryption_level_t gtls_level,
-                       const void *rx_secret,
-                       const void *tx_secret, size_t secretlen)
-{
-  struct quicsocket *qs = gnutls_session_get_ptr(ssl);
-  int level =
-      ngtcp2_crypto_gnutls_from_gnutls_record_encryption_level(gtls_level);
-
-  if(level != NGTCP2_CRYPTO_LEVEL_EARLY &&
-     ngtcp2_crypto_derive_and_install_rx_key(
-       qs->qconn, NULL, NULL, NULL, level, rx_secret, secretlen) != 0)
-    return 0;
-
-  if(ngtcp2_crypto_derive_and_install_tx_key(
-       qs->qconn, NULL, NULL, NULL, level, tx_secret, secretlen) != 0)
-    return 0;
-
-  if(level == NGTCP2_CRYPTO_LEVEL_APPLICATION) {
-    if(init_ngh3_conn(qs) != CURLE_OK)
-      return -1;
-  }
-
-  return 0;
-}
-
-static int read_func(gnutls_session_t ssl,
-                     gnutls_record_encryption_level_t gtls_level,
-                     gnutls_handshake_description_t htype, const void *data,
-                     size_t len)
-{
-  struct quicsocket *qs = gnutls_session_get_ptr(ssl);
-  ngtcp2_crypto_level level =
-      ngtcp2_crypto_gnutls_from_gnutls_record_encryption_level(gtls_level);
-  int rv;
-
-  if(htype == GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC)
-    return 0;
-
-  rv = write_client_handshake(qs, level, data, len);
-  if(rv == 0)
-    return -1;
-
-  return 0;
-}
-
-static int alert_read_func(gnutls_session_t ssl,
-                           gnutls_record_encryption_level_t gtls_level,
-                           gnutls_alert_level_t alert_level,
-                           gnutls_alert_description_t alert_desc)
-{
-  struct quicsocket *qs = gnutls_session_get_ptr(ssl);
-  (void)gtls_level;
-  (void)alert_level;
-
-  qs->tls_alert = alert_desc;
-  return 1;
-}
-
-static int tp_recv_func(gnutls_session_t ssl, const uint8_t *data,
-                        size_t data_size)
-{
-  struct quicsocket *qs = gnutls_session_get_ptr(ssl);
-  ngtcp2_transport_params params;
-
-  if(ngtcp2_decode_transport_params(
-       &params, NGTCP2_TRANSPORT_PARAMS_TYPE_ENCRYPTED_EXTENSIONS,
-       data, data_size) != 0)
-    return -1;
-
-  if(ngtcp2_conn_set_remote_transport_params(qs->qconn, &params) != 0)
-    return -1;
-
-  return 0;
-}
-
-static int tp_send_func(gnutls_session_t ssl, gnutls_buffer_t extdata)
-{
-  struct quicsocket *qs = gnutls_session_get_ptr(ssl);
-  uint8_t paramsbuf[64];
-  ngtcp2_transport_params params;
-  ssize_t nwrite;
-  int rc;
-
-  ngtcp2_conn_get_local_transport_params(qs->qconn, &params);
-  nwrite = ngtcp2_encode_transport_params(
-    paramsbuf, sizeof(paramsbuf), NGTCP2_TRANSPORT_PARAMS_TYPE_CLIENT_HELLO,
-    &params);
-  if(nwrite < 0) {
-    H3BUGF(fprintf(stderr, "ngtcp2_encode_transport_params: %s\n",
-                   ngtcp2_strerror((int)nwrite)));
-    return -1;
-  }
-
-  rc = gnutls_buffer_append_data(extdata, paramsbuf, nwrite);
-  if(rc < 0)
-    return rc;
-
-  return (int)nwrite;
-}
-
 static int quic_init_ssl(struct quicsocket *qs)
 {
   gnutls_datum_t alpn[2];
@@ -450,26 +352,17 @@ static int quic_init_ssl(struct quicsocket *qs)
   DEBUGASSERT(!qs->ssl);
 
   gnutls_init(&qs->ssl, GNUTLS_CLIENT);
-  gnutls_session_set_ptr(qs->ssl, qs);
+  gnutls_session_set_ptr(qs->ssl, &qs->conn_ref);
 
-  rc = gnutls_priority_set_direct(qs->ssl, QUIC_PRIORITY, NULL);
-  if(rc < 0) {
-    H3BUGF(fprintf(stderr, "gnutls_priority_set_direct failed: %s\n",
-                   gnutls_strerror(rc)));
+  if(ngtcp2_crypto_gnutls_configure_client_session(qs->ssl) != 0) {
+    H3BUGF(fprintf(stderr,
+                   "ngtcp2_crypto_gnutls_configure_client_session failed\n"));
     return 1;
   }
 
-  gnutls_handshake_set_secret_function(qs->ssl, secret_func);
-  gnutls_handshake_set_read_function(qs->ssl, read_func);
-  gnutls_alert_set_read_function(qs->ssl, alert_read_func);
-
-  rc = gnutls_session_ext_register(qs->ssl, "QUIC Transport Parameters",
-         NGTCP2_TLSEXT_QUIC_TRANSPORT_PARAMETERS_V1, GNUTLS_EXT_TLS,
-         tp_recv_func, tp_send_func, NULL, NULL, NULL,
-         GNUTLS_EXT_FLAG_TLS | GNUTLS_EXT_FLAG_CLIENT_HELLO |
-         GNUTLS_EXT_FLAG_EE);
+  rc = gnutls_priority_set_direct(qs->ssl, QUIC_PRIORITY, NULL);
   if(rc < 0) {
-    H3BUGF(fprintf(stderr, "gnutls_session_ext_register failed: %s\n",
+    H3BUGF(fprintf(stderr, "gnutls_priority_set_direct failed: %s\n",
                    gnutls_strerror(rc)));
     return 1;
   }
@@ -518,7 +411,105 @@ static int quic_init_ssl(struct quicsocket *qs)
   gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname));
   return 0;
 }
+#elif defined(USE_WOLFSSL)
+
+static WOLFSSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
+{
+  struct connectdata *conn = data->conn;
+  WOLFSSL_CTX *ssl_ctx = wolfSSL_CTX_new(wolfTLSv1_3_client_method());
+
+  if(ngtcp2_crypto_wolfssl_configure_client_context(ssl_ctx) != 0) {
+    failf(data, "ngtcp2_crypto_wolfssl_configure_client_context failed");
+    return NULL;
+  }
+
+  wolfSSL_CTX_set_default_verify_paths(ssl_ctx);
+
+  if(wolfSSL_CTX_set_cipher_list(ssl_ctx, QUIC_CIPHERS) != 1) {
+    char error_buffer[256];
+    ERR_error_string_n(ERR_get_error(), error_buffer, sizeof(error_buffer));
+    failf(data, "SSL_CTX_set_ciphersuites: %s", error_buffer);
+    return NULL;
+  }
+
+  if(wolfSSL_CTX_set1_groups_list(ssl_ctx, (char *)QUIC_GROUPS) != 1) {
+    failf(data, "SSL_CTX_set1_groups_list failed");
+    return NULL;
+  }
+
+  /* Open the file if a TLS or QUIC backend has not done this before. */
+  Curl_tls_keylog_open();
+  if(Curl_tls_keylog_enabled()) {
+#if defined(HAVE_SECRET_CALLBACK)
+    wolfSSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
+#else
+    failf(data, "wolfSSL was built without keylog callback");
+    return NULL;
 #endif
+  }
+
+  if(conn->ssl_config.verifypeer) {
+    const char * const ssl_cafile = conn->ssl_config.CAfile;
+    const char * const ssl_capath = conn->ssl_config.CApath;
+
+    if(ssl_cafile || ssl_capath) {
+      wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
+      /* tell wolfSSL where to find CA certificates that are used to verify
+         the server's certificate. */
+      if(!wolfSSL_CTX_load_verify_locations(ssl_ctx, ssl_cafile, ssl_capath)) {
+        /* Fail if we insist on successfully verifying the server. */
+        failf(data, "error setting certificate verify locations:"
+              "  CAfile: %s CApath: %s",
+              ssl_cafile ? ssl_cafile : "none",
+              ssl_capath ? ssl_capath : "none");
+        return NULL;
+      }
+      infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
+      infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
+    }
+#ifdef CURL_CA_FALLBACK
+    else {
+      /* verifying the peer without any CA certificates won't work so
+         use wolfssl's built-in default as fallback */
+      wolfSSL_CTX_set_default_verify_paths(ssl_ctx);
+    }
+#endif
+  }
+  else {
+    wolfSSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_NONE, NULL);
+  }
+
+  return ssl_ctx;
+}
+
+/** SSL callbacks ***/
+
+static int quic_init_ssl(struct quicsocket *qs)
+{
+  const uint8_t *alpn = NULL;
+  size_t alpnlen = 0;
+  /* this will need some attention when HTTPS proxy over QUIC get fixed */
+  const char * const hostname = qs->conn->host.name;
+
+  DEBUGASSERT(!qs->ssl);
+  qs->ssl = SSL_new(qs->sslctx);
+
+  wolfSSL_set_app_data(qs->ssl, &qs->conn_ref);
+  wolfSSL_set_connect_state(qs->ssl);
+  wolfSSL_set_quic_use_legacy_codepoint(qs->ssl, 0);
+
+  alpn = (const uint8_t *)H3_ALPN_H3_29 H3_ALPN_H3;
+  alpnlen = sizeof(H3_ALPN_H3_29) - 1 + sizeof(H3_ALPN_H3) - 1;
+  if(alpn)
+    wolfSSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen);
+
+  /* set SNI */
+  wolfSSL_UseSNI(qs->ssl, WOLFSSL_SNI_HOST_NAME,
+                 hostname, (unsigned short)strlen(hostname));
+
+  return 0;
+}
+#endif /* defined(USE_WOLFSSL) */
 
 static int cb_handshake_completed(ngtcp2_conn *tconn, void *user_data)
 {
@@ -543,7 +534,7 @@ static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags,
                                void *user_data, void *stream_user_data)
 {
   struct quicsocket *qs = (struct quicsocket *)user_data;
-  ssize_t nconsumed;
+  nghttp3_ssize nconsumed;
   int fin = (flags & NGTCP2_STREAM_DATA_FLAG_FIN) ? 1 : 0;
   (void)offset;
   (void)stream_user_data;
@@ -551,6 +542,9 @@ static int cb_recv_stream_data(ngtcp2_conn *tconn, uint32_t flags,
   nconsumed =
     nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin);
   if(nconsumed < 0) {
+    ngtcp2_connection_close_error_set_application_error(
+        &qs->last_error, nghttp3_err_infer_quic_app_error_code((int)nconsumed),
+        NULL, 0);
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -601,6 +595,8 @@ static int cb_stream_close(ngtcp2_conn *tconn, uint32_t flags,
   rv = nghttp3_conn_close_stream(qs->h3conn, stream_id,
                                  app_error_code);
   if(rv) {
+    ngtcp2_connection_close_error_set_application_error(
+        &qs->last_error, nghttp3_err_infer_quic_app_error_code(rv), NULL, 0);
     return NGTCP2_ERR_CALLBACK_FAILURE;
   }
 
@@ -707,6 +703,23 @@ 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,
+                          void *user_data)
+{
+  struct quicsocket *qs = (struct quicsocket *)user_data;
+  (void)tconn;
+
+  if(level != NGTCP2_CRYPTO_LEVEL_APPLICATION) {
+    return 0;
+  }
+
+  if(init_ngh3_conn(qs) != CURLE_OK) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+
+  return 0;
+}
+
 static ngtcp2_callbacks ng_callbacks = {
   ngtcp2_crypto_client_initial_cb,
   NULL, /* recv_client_initial */
@@ -743,7 +756,11 @@ static ngtcp2_callbacks ng_callbacks = {
   NULL, /* ack_datagram */
   NULL, /* lost_datagram */
   ngtcp2_crypto_get_path_challenge_data_cb,
-  cb_stream_stop_sending
+  cb_stream_stop_sending,
+  NULL, /* version_negotiation */
+  cb_recv_rx_key,
+  NULL, /* recv_tx_key */
+  NULL, /* early_data_rejected */
 };
 
 /*
@@ -785,6 +802,14 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
   qs->sslctx = quic_ssl_ctx(data);
   if(!qs->sslctx)
     return CURLE_QUIC_CONNECT_ERROR;
+
+  result = quic_set_client_cert(data, qs);
+  if(result)
+    return result;
+#elif defined(USE_WOLFSSL)
+  qs->sslctx = quic_ssl_ctx(data);
+  if(!qs->sslctx)
+    return CURLE_QUIC_CONNECT_ERROR;
 #endif
 
   if(quic_init_ssl(qs))
@@ -822,6 +847,29 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
 
   ngtcp2_conn_set_tls_native_handle(qs->qconn, qs->ssl);
 
+  ngtcp2_connection_close_error_default(&qs->last_error);
+
+#if defined(__linux__) && defined(UDP_SEGMENT) && defined(HAVE_SENDMSG)
+  qs->no_gso = FALSE;
+#else
+  qs->no_gso = TRUE;
+#endif
+
+  qs->num_blocked_pkt = 0;
+  qs->num_blocked_pkt_sent = 0;
+  memset(&qs->blocked_pkt, 0, sizeof(qs->blocked_pkt));
+
+  qs->pktbuflen = NGTCP2_MAX_PMTUD_UDP_PAYLOAD_SIZE * MAX_PKT_BURST;
+  qs->pktbuf = malloc(qs->pktbuflen);
+  if(!qs->pktbuf) {
+    ngtcp2_conn_del(qs->qconn);
+    qs->qconn = NULL;
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  qs->conn_ref.get_conn = get_conn;
+  qs->conn_ref.user_data = qs;
+
   return CURLE_OK;
 }
 
@@ -841,6 +889,8 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
 {
   struct SingleRequest *k = &data->req;
   int bitmap = GETSOCK_BLANK;
+  struct HTTP *stream = data->req.p.http;
+  struct quicsocket *qs = conn->quic;
 
   socks[0] = conn->sock[FIRSTSOCKET];
 
@@ -849,7 +899,11 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
   bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
 
   /* we're still uploading or the HTTP/2 layer wants to send data */
-  if((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND)
+  if((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND &&
+     (!stream->h3out || stream->h3out->used < H3_SEND_SIZE) &&
+     ngtcp2_conn_get_cwnd_left(qs->qconn) &&
+     ngtcp2_conn_get_max_data_left(qs->qconn) &&
+     nghttp3_conn_is_stream_writable(qs->h3conn, stream->stream3_id))
     bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
 
   return bitmap;
@@ -857,8 +911,22 @@ static int ng_getsock(struct Curl_easy *data, struct connectdata *conn,
 
 static void qs_disconnect(struct quicsocket *qs)
 {
+  char buffer[NGTCP2_MAX_UDP_PAYLOAD_SIZE];
+  ngtcp2_tstamp ts;
+  ngtcp2_ssize rc;
+
   if(!qs->conn) /* already closed */
     return;
+  ts = timestamp();
+  rc = ngtcp2_conn_write_connection_close(qs->qconn, NULL, /* path */
+                                          NULL, /* pkt_info */
+                                          (uint8_t *)buffer, sizeof(buffer),
+                                          &qs->last_error, ts);
+  if(rc > 0) {
+    while((send(qs->conn->sock[FIRSTSOCKET], buffer, rc, 0) == -1) &&
+          SOCKERRNO == EINTR);
+  }
+
   qs->conn = NULL;
   if(qs->qlogfd != -1) {
     close(qs->qlogfd);
@@ -869,6 +937,8 @@ static void qs_disconnect(struct quicsocket *qs)
     SSL_free(qs->ssl);
 #elif defined(USE_GNUTLS)
     gnutls_deinit(qs->ssl);
+#elif defined(USE_WOLFSSL)
+    wolfSSL_free(qs->ssl);
 #endif
   qs->ssl = NULL;
 #ifdef USE_GNUTLS
@@ -877,10 +947,13 @@ static void qs_disconnect(struct quicsocket *qs)
     qs->cred = NULL;
   }
 #endif
+  free(qs->pktbuf);
   nghttp3_conn_del(qs->h3conn);
   ngtcp2_conn_del(qs->qconn);
 #ifdef USE_OPENSSL
   SSL_CTX_free(qs->sslctx);
+#elif defined(USE_WOLFSSL)
+  wolfSSL_CTX_free(qs->sslctx);
 #endif
 }
 
@@ -949,6 +1022,7 @@ static int cb_h3_stream_close(nghttp3_conn *conn, int64_t stream_id,
   H3BUGF(infof(data, "cb_h3_stream_close CALLED"));
 
   stream->closed = TRUE;
+  stream->error3 = app_error_code;
   Curl_expire(data, 0, EXPIRE_QUIC);
   /* make sure that ngh3_stream_recv is called again to complete the transfer
      even if there are no more packets to be received from the server. */
@@ -1043,7 +1117,7 @@ static int decode_status_code(const uint8_t *value, size_t len)
 }
 
 static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
-                             void *user_data, void *stream_user_data)
+                             int fin, void *user_data, void *stream_user_data)
 {
   struct Curl_easy *data = stream_user_data;
   struct HTTP *stream = data->req.p.http;
@@ -1051,6 +1125,7 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
   (void)conn;
   (void)stream_id;
   (void)user_data;
+  (void)fin;
 
   /* add a CRLF only if we've received some headers */
   if(stream->firstheader) {
@@ -1059,6 +1134,10 @@ static int cb_h3_end_headers(nghttp3_conn *conn, int64_t stream_id,
       return -1;
     }
   }
+
+  if(stream->status_code / 100 != 1) {
+    stream->bodystarted = TRUE;
+  }
   return 0;
 }
 
@@ -1078,13 +1157,13 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
   (void)flags;
   (void)user_data;
 
-  if(h3name.len == sizeof(":status") - 1 &&
-     !memcmp(":status", h3name.base, h3name.len)) {
+  if(token == NGHTTP3_QPACK_TOKEN__STATUS) {
     char line[14]; /* status line is always 13 characters long */
     size_t ncopy;
-    int status = decode_status_code(h3val.base, h3val.len);
-    DEBUGASSERT(status != -1);
-    ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n", status);
+    stream->status_code = decode_status_code(h3val.base, h3val.len);
+    DEBUGASSERT(stream->status_code != -1);
+    ncopy = msnprintf(line, sizeof(line), "HTTP/3 %03d \r\n",
+                      stream->status_code);
     result = write_data(stream, line, ncopy);
     if(result) {
       return -1;
@@ -1114,16 +1193,36 @@ static int cb_h3_recv_header(nghttp3_conn *conn, int64_t stream_id,
   return 0;
 }
 
-static int cb_h3_send_stop_sending(nghttp3_conn *conn, int64_t stream_id,
-                                   uint64_t app_error_code,
-                                   void *user_data,
-                                   void *stream_user_data)
+static int cb_h3_stop_sending(nghttp3_conn *conn, int64_t stream_id,
+                              uint64_t app_error_code, void *user_data,
+                              void *stream_user_data)
 {
+  struct quicsocket *qs = user_data;
+  int rv;
+  (void)conn;
+  (void)stream_user_data;
+
+  rv = ngtcp2_conn_shutdown_stream_read(qs->qconn, stream_id, app_error_code);
+  if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+
+  return 0;
+}
+
+static int cb_h3_reset_stream(nghttp3_conn *conn, int64_t stream_id,
+                              uint64_t app_error_code, void *user_data,
+                              void *stream_user_data) {
+  struct quicsocket *qs = user_data;
+  int rv;
   (void)conn;
-  (void)stream_id;
-  (void)app_error_code;
-  (void)user_data;
   (void)stream_user_data;
+
+  rv = ngtcp2_conn_shutdown_stream_write(qs->qconn, stream_id, app_error_code);
+  if(rv && rv != NGTCP2_ERR_STREAM_NOT_FOUND) {
+    return NGTCP2_ERR_CALLBACK_FAILURE;
+  }
+
   return 0;
 }
 
@@ -1138,9 +1237,9 @@ static nghttp3_callbacks ngh3_callbacks = {
   NULL, /* begin_trailers */
   cb_h3_recv_header,
   NULL, /* end_trailers */
-  cb_h3_send_stop_sending,
+  cb_h3_stop_sending,
   NULL, /* end_stream */
-  NULL, /* reset_stream */
+  cb_h3_reset_stream,
   NULL /* shutdown */
 };
 
@@ -1218,6 +1317,8 @@ static size_t drain_overflow_buffer(struct HTTP *stream)
     if(ncopy != overlen)
       /* make the buffer only keep the tail */
       (void)Curl_dyn_tail(&stream->overflow, overlen - ncopy);
+    else
+      Curl_dyn_reset(&stream->overflow);
   }
   return ncopy;
 }
@@ -1274,6 +1375,24 @@ static ssize_t ngh3_stream_recv(struct Curl_easy *data,
   }
 
   if(stream->closed) {
+    if(stream->error3 != NGHTTP3_H3_NO_ERROR) {
+      failf(data,
+            "HTTP/3 stream %" PRId64 " was not closed cleanly: (err %" PRIu64
+            ")",
+            stream->stream3_id, stream->error3);
+      *curlcode = CURLE_HTTP3;
+      return -1;
+    }
+
+    if(!stream->bodystarted) {
+      failf(data,
+            "HTTP/3 stream %" PRId64 " was closed cleanly, but before getting"
+            " all response header fields, treated as error",
+            stream->stream3_id);
+      *curlcode = CURLE_HTTP3;
+      return -1;
+    }
+
     *curlcode = CURLE_OK;
     return 0;
   }
@@ -1285,7 +1404,7 @@ static ssize_t ngh3_stream_recv(struct Curl_easy *data,
 
 /* this amount of data has now been acked on this stream */
 static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
-                                   size_t datalen, void *user_data,
+                                   uint64_t datalen, void *user_data,
                                    void *stream_user_data)
 {
   struct Curl_easy *data = stream_user_data;
@@ -1309,10 +1428,10 @@ static int cb_h3_acked_stream_data(nghttp3_conn *conn, int64_t stream_id,
   return 0;
 }
 
-static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
-                                  nghttp3_vec *vec, size_t veccnt,
-                                  uint32_t *pflags, void *user_data,
-                                  void *stream_user_data)
+static nghttp3_ssize cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
+                                        nghttp3_vec *vec, size_t veccnt,
+                                        uint32_t *pflags, void *user_data,
+                                        void *stream_user_data)
 {
   struct Curl_easy *data = stream_user_data;
   size_t nread;
@@ -1329,6 +1448,10 @@ static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
     return 1;
   }
 
+  if(stream->upload_len && H3_SEND_SIZE <= stream->h3out->used) {
+    return NGHTTP3_ERR_WOULDBLOCK;
+  }
+
   nread = CURLMIN(stream->upload_len, H3_SEND_SIZE - stream->h3out->used);
   if(nread > 0) {
     /* nghttp3 wants us to hold on to the data until it tells us it is okay to
@@ -1363,7 +1486,7 @@ static ssize_t cb_h3_readfunction(nghttp3_conn *conn, int64_t stream_id,
   }
   if(stream->upload_done && !stream->upload_len &&
      (stream->upload_left <= 0)) {
-    H3BUGF(infof(data, "!!!!!!!!! cb_h3_readfunction sets EOF"));
+    H3BUGF(infof(data, "cb_h3_readfunction sets EOF"));
     *pflags = NGHTTP3_DATA_FLAG_EOF;
     return nread ? 1 : 0;
   }
@@ -1383,16 +1506,13 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
   struct connectdata *conn = data->conn;
   struct HTTP *stream = data->req.p.http;
   size_t nheader;
-  size_t i;
-  size_t authority_idx;
-  char *hdbuf = (char *)mem;
-  char *end, *line_end;
   struct quicsocket *qs = conn->quic;
   CURLcode result = CURLE_OK;
   nghttp3_nv *nva = NULL;
   int64_t stream3_id;
   int rc;
   struct h3out *h3out = NULL;
+  struct h2h3req *hreq = NULL;
 
   rc = ngtcp2_conn_open_bidi_stream(qs->qconn, &stream3_id, NULL);
   if(rc) {
@@ -1405,158 +1525,24 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
   stream->h3req = TRUE; /* senf off! */
   Curl_dyn_init(&stream->overflow, CURL_MAX_READ_SIZE);
 
-  /* Calculate number of headers contained in [mem, mem + len). Assumes a
-     correctly generated HTTP header field block. */
-  nheader = 0;
-  for(i = 1; i < len; ++i) {
-    if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
-      ++nheader;
-      ++i;
-    }
-  }
-  if(nheader < 2)
+  result = Curl_pseudo_headers(data, mem, len, &hreq);
+  if(result)
     goto fail;
+  nheader = hreq->entries;
 
-  /* We counted additional 2 \r\n in the first and last line. We need 3
-     new headers: :method, :path and :scheme. Therefore we need one
-     more space. */
-  nheader += 1;
   nva = malloc(sizeof(nghttp3_nv) * nheader);
   if(!nva) {
     result = CURLE_OUT_OF_MEMORY;
     goto fail;
   }
-
-  /* Extract :method, :path from request line
-     We do line endings with CRLF so checking for CR is enough */
-  line_end = memchr(hdbuf, '\r', len);
-  if(!line_end) {
-    result = CURLE_BAD_FUNCTION_ARGUMENT; /* internal error */
-    goto fail;
-  }
-
-  /* Method does not contain spaces */
-  end = memchr(hdbuf, ' ', line_end - hdbuf);
-  if(!end || end == hdbuf)
-    goto fail;
-  nva[0].name = (unsigned char *)":method";
-  nva[0].namelen = strlen((char *)nva[0].name);
-  nva[0].value = (unsigned char *)hdbuf;
-  nva[0].valuelen = (size_t)(end - hdbuf);
-  nva[0].flags = NGHTTP3_NV_FLAG_NONE;
-
-  hdbuf = end + 1;
-
-  /* Path may contain spaces so scan backwards */
-  end = NULL;
-  for(i = (size_t)(line_end - hdbuf); i; --i) {
-    if(hdbuf[i - 1] == ' ') {
-      end = &hdbuf[i - 1];
-      break;
-    }
-  }
-  if(!end || end == hdbuf)
-    goto fail;
-  nva[1].name = (unsigned char *)":path";
-  nva[1].namelen = strlen((char *)nva[1].name);
-  nva[1].value = (unsigned char *)hdbuf;
-  nva[1].valuelen = (size_t)(end - hdbuf);
-  nva[1].flags = NGHTTP3_NV_FLAG_NONE;
-
-  nva[2].name = (unsigned char *)":scheme";
-  nva[2].namelen = strlen((char *)nva[2].name);
-  if(conn->handler->flags & PROTOPT_SSL)
-    nva[2].value = (unsigned char *)"https";
-  else
-    nva[2].value = (unsigned char *)"http";
-  nva[2].valuelen = strlen((char *)nva[2].value);
-  nva[2].flags = NGHTTP3_NV_FLAG_NONE;
-
-
-  authority_idx = 0;
-  i = 3;
-  while(i < nheader) {
-    size_t hlen;
-
-    hdbuf = line_end + 2;
-
-    /* check for next CR, but only within the piece of data left in the given
-       buffer */
-    line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
-    if(!line_end || (line_end == hdbuf))
-      goto fail;
-
-    /* header continuation lines are not supported */
-    if(*hdbuf == ' ' || *hdbuf == '\t')
-      goto fail;
-
-    for(end = hdbuf; end < line_end && *end != ':'; ++end)
-      ;
-    if(end == hdbuf || end == line_end)
-      goto fail;
-    hlen = end - hdbuf;
-
-    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
-      authority_idx = i;
-      nva[i].name = (unsigned char *)":authority";
-      nva[i].namelen = strlen((char *)nva[i].name);
-    }
-    else {
-      nva[i].namelen = (size_t)(end - hdbuf);
-      /* Lower case the header name for HTTP/3 */
-      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].namelen);
-      nva[i].name = (unsigned char *)hdbuf;
-    }
-    nva[i].flags = NGHTTP3_NV_FLAG_NONE;
-    hdbuf = end + 1;
-    while(*hdbuf == ' ' || *hdbuf == '\t')
-      ++hdbuf;
-    end = line_end;
-
-#if 0 /* This should probably go in more or less like this */
-    switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
-                          end - hdbuf)) {
-    case HEADERINST_IGNORE:
-      /* skip header fields prohibited by HTTP/2 specification. */
-      --nheader;
-      continue;
-    case HEADERINST_TE_TRAILERS:
-      nva[i].value = (uint8_t*)"trailers";
-      nva[i].value_len = sizeof("trailers") - 1;
-      break;
-    default:
-      nva[i].value = (unsigned char *)hdbuf;
-      nva[i].value_len = (size_t)(end - hdbuf);
-    }
-#endif
-    nva[i].value = (unsigned char *)hdbuf;
-    nva[i].valuelen = (size_t)(end - hdbuf);
-    nva[i].flags = NGHTTP3_NV_FLAG_NONE;
-
-    ++i;
-  }
-
-  /* :authority must come before non-pseudo header fields */
-  if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
-    nghttp3_nv authority = nva[authority_idx];
-    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
-      nva[i] = nva[i - 1];
-    }
-    nva[i] = authority;
-  }
-
-  /* Warn stream may be rejected if cumulative length of headers is too
-     large. */
-#define MAX_ACC 60000  /* <64KB to account for some overhead */
-  {
-    size_t acc = 0;
-    for(i = 0; i < nheader; ++i)
-      acc += nva[i].namelen + nva[i].valuelen;
-
-    if(acc > MAX_ACC) {
-      infof(data, "http_request: Warning: The cumulative length of all "
-            "headers exceeds %d bytes and that could cause the "
-            "stream to be rejected.", MAX_ACC);
+  else {
+    unsigned int i;
+    for(i = 0; i < nheader; i++) {
+      nva[i].name = (unsigned char *)hreq->header[i].name;
+      nva[i].namelen = hreq->header[i].namelen;
+      nva[i].value = (unsigned char *)hreq->header[i].value;
+      nva[i].valuelen = hreq->header[i].valuelen;
+      nva[i].flags = NGHTTP3_NV_FLAG_NONE;
     }
   }
 
@@ -1605,10 +1591,12 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
   infof(data, "Using HTTP/3 Stream ID: %x (easy handle %p)",
         stream3_id, (void *)data);
 
+  Curl_pseudo_free(hreq);
   return CURLE_OK;
 
 fail:
   free(nva);
+  Curl_pseudo_free(hreq);
   return result;
 }
 static ssize_t ngh3_stream_send(struct Curl_easy *data,
@@ -1617,18 +1605,26 @@ static ssize_t ngh3_stream_send(struct Curl_easy *data,
                                 size_t len,
                                 CURLcode *curlcode)
 {
-  ssize_t sent;
+  ssize_t sent = 0;
   struct connectdata *conn = data->conn;
   struct quicsocket *qs = conn->quic;
   curl_socket_t sockfd = conn->sock[sockindex];
   struct HTTP *stream = data->req.p.http;
 
+  if(stream->closed) {
+    *curlcode = CURLE_HTTP3;
+    return -1;
+  }
+
   if(!stream->h3req) {
     CURLcode result = http_request(data, mem, len);
     if(result) {
       *curlcode = CURLE_SEND_ERROR;
       return -1;
     }
+    /* Assume that mem of length len only includes HTTP/1.1 style
+       header fields.  In other words, it does not contain request
+       body. */
     sent = len;
   }
   else {
@@ -1638,7 +1634,6 @@ static ssize_t ngh3_stream_send(struct Curl_easy *data,
       stream->upload_mem = mem;
       stream->upload_len = len;
       (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id);
-      sent = len;
     }
     else {
       *curlcode = CURLE_AGAIN;
@@ -1653,8 +1648,20 @@ static ssize_t ngh3_stream_send(struct Curl_easy *data,
 
   /* Reset post upload buffer after resumed. */
   if(stream->upload_mem) {
+    if(data->set.postfields) {
+      sent = len;
+    }
+    else {
+      sent = len - stream->upload_len;
+    }
+
     stream->upload_mem = NULL;
     stream->upload_len = 0;
+
+    if(sent == 0) {
+      *curlcode = CURLE_AGAIN;
+      return -1;
+    }
   }
 
   *curlcode = CURLE_OK;
@@ -1676,7 +1683,6 @@ static CURLcode ng_has_connected(struct Curl_easy *data,
   if(conn->ssl_config.verifyhost) {
 #ifdef USE_OPENSSL
     X509 *server_cert;
-    CURLcode result;
     server_cert = SSL_get_peer_certificate(conn->quic->ssl);
     if(!server_cert) {
       return CURLE_PEER_FAILED_VERIFICATION;
@@ -1686,12 +1692,23 @@ static CURLcode ng_has_connected(struct Curl_easy *data,
     if(result)
       return result;
     infof(data, "Verified certificate just fine");
-#else
+#elif defined(USE_GNUTLS)
     result = Curl_gtls_verifyserver(data, conn, conn->quic->ssl, FIRSTSOCKET);
+#elif defined(USE_WOLFSSL)
+    char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+    if(!snihost ||
+       (wolfSSL_check_domain_name(conn->quic->ssl, snihost) == SSL_FAILURE))
+      return CURLE_PEER_FAILED_VERIFICATION;
+    infof(data, "Verified certificate just fine");
 #endif
   }
   else
     infof(data, "Skipped certificate verification");
+#ifdef USE_OPENSSL
+  if(data->set.ssl.certinfo)
+    /* asked to gather certificate info */
+    (void)Curl_ossl_certchain(data, conn->quic->ssl);
+#endif
   return result;
 }
 
@@ -1764,7 +1781,17 @@ static CURLcode ng_process_ingress(struct Curl_easy *data,
 
     rv = ngtcp2_conn_read_pkt(qs->qconn, &path, &pi, buf, recvd, ts);
     if(rv) {
-      /* TODO Send CONNECTION_CLOSE if possible */
+      if(!qs->last_error.error_code) {
+        if(rv == NGTCP2_ERR_CRYPTO) {
+          ngtcp2_connection_close_error_set_transport_error_tls_alert(
+              &qs->last_error, ngtcp2_conn_get_tls_alert(qs->qconn), NULL, 0);
+        }
+        else {
+          ngtcp2_connection_close_error_set_transport_error_liberr(
+              &qs->last_error, rv, NULL, 0);
+        }
+      }
+
       if(rv == NGTCP2_ERR_CRYPTO)
         /* this is a "TLS problem", but a failed certificate verification
            is a common reason for this */
@@ -1776,33 +1803,231 @@ static CURLcode ng_process_ingress(struct Curl_easy *data,
   return CURLE_OK;
 }
 
+static CURLcode do_sendmsg(size_t *sent, struct Curl_easy *data, int sockfd,
+                           struct quicsocket *qs, const uint8_t *pkt,
+                           size_t pktlen, size_t gsolen);
+
+static CURLcode send_packet_no_gso(size_t *psent, struct Curl_easy *data,
+                                   int sockfd, struct quicsocket *qs,
+                                   const uint8_t *pkt, size_t pktlen,
+                                   size_t gsolen)
+{
+  const uint8_t *p, *end = pkt + pktlen;
+  size_t sent;
+
+  *psent = 0;
+
+  for(p = pkt; p < end; p += gsolen) {
+    size_t len = CURLMIN(gsolen, (size_t)(end - p));
+    CURLcode curlcode = do_sendmsg(&sent, data, sockfd, qs, p, len, len);
+    if(curlcode != CURLE_OK) {
+      return curlcode;
+    }
+    *psent += sent;
+  }
+
+  return CURLE_OK;
+}
+
+static CURLcode do_sendmsg(size_t *psent, struct Curl_easy *data, int sockfd,
+                           struct quicsocket *qs, const uint8_t *pkt,
+                           size_t pktlen, size_t gsolen)
+{
+#ifdef HAVE_SENDMSG
+  struct iovec msg_iov;
+  struct msghdr msg = {0};
+  ssize_t sent;
+#if defined(__linux__) && defined(UDP_SEGMENT)
+  uint8_t msg_ctrl[32];
+  struct cmsghdr *cm;
+#endif
+
+  *psent = 0;
+  msg_iov.iov_base = (uint8_t *)pkt;
+  msg_iov.iov_len = pktlen;
+  msg.msg_iov = &msg_iov;
+  msg.msg_iovlen = 1;
+
+#if defined(__linux__) && defined(UDP_SEGMENT)
+  if(pktlen > gsolen) {
+    /* Only set this, when we need it. macOS, for example,
+     * does not seem to like a msg_control of length 0. */
+    msg.msg_control = msg_ctrl;
+    assert(sizeof(msg_ctrl) >= CMSG_SPACE(sizeof(uint16_t)));
+    msg.msg_controllen = CMSG_SPACE(sizeof(uint16_t));
+    cm = CMSG_FIRSTHDR(&msg);
+    cm->cmsg_level = SOL_UDP;
+    cm->cmsg_type = UDP_SEGMENT;
+    cm->cmsg_len = CMSG_LEN(sizeof(uint16_t));
+    *(uint16_t *)(void *)CMSG_DATA(cm) = gsolen & 0xffff;
+  }
+#endif
+
+
+  while((sent = sendmsg(sockfd, &msg, 0)) == -1 && SOCKERRNO == EINTR)
+    ;
+
+  if(sent == -1) {
+    switch(SOCKERRNO) {
+    case EAGAIN:
+#if EAGAIN != EWOULDBLOCK
+    case EWOULDBLOCK:
+#endif
+      return CURLE_AGAIN;
+    case EMSGSIZE:
+      /* UDP datagram is too large; caused by PMTUD. Just let it be lost. */
+      break;
+    case EIO:
+      if(pktlen > gsolen) {
+        /* GSO failure */
+        failf(data, "sendmsg() returned %zd (errno %d); disable GSO", sent,
+              SOCKERRNO);
+        qs->no_gso = TRUE;
+        return send_packet_no_gso(psent, data, sockfd, qs, pkt, pktlen,
+                                  gsolen);
+      }
+      /* FALLTHROUGH */
+    default:
+      failf(data, "sendmsg() returned %zd (errno %d)", sent, SOCKERRNO);
+      return CURLE_SEND_ERROR;
+    }
+  }
+  else {
+    assert(pktlen == (size_t)sent);
+  }
+#else
+  ssize_t sent;
+  (void)qs;
+  (void)gsolen;
+
+  *psent = 0;
+
+  while((sent = send(sockfd, (const char *)pkt, pktlen, 0)) == -1 &&
+        SOCKERRNO == EINTR)
+    ;
+
+  if(sent == -1) {
+    if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
+      return CURLE_AGAIN;
+    }
+    else {
+      failf(data, "send() returned %zd (errno %d)", sent, SOCKERRNO);
+      if(SOCKERRNO != EMSGSIZE) {
+        return CURLE_SEND_ERROR;
+      }
+      /* UDP datagram is too large; caused by PMTUD. Just let it be
+         lost. */
+    }
+  }
+#endif
+
+  *psent = pktlen;
+
+  return CURLE_OK;
+}
+
+static CURLcode send_packet(size_t *psent, struct Curl_easy *data, int sockfd,
+                            struct quicsocket *qs, const uint8_t *pkt,
+                            size_t pktlen, size_t gsolen)
+{
+  if(qs->no_gso && pktlen > gsolen) {
+    return send_packet_no_gso(psent, data, sockfd, qs, pkt, pktlen, gsolen);
+  }
+
+  return do_sendmsg(psent, data, sockfd, qs, pkt, pktlen, gsolen);
+}
+
+static void push_blocked_pkt(struct quicsocket *qs, const uint8_t *pkt,
+                             size_t pktlen, size_t gsolen)
+{
+  struct blocked_pkt *blkpkt;
+
+  assert(qs->num_blocked_pkt <
+         sizeof(qs->blocked_pkt) / sizeof(qs->blocked_pkt[0]));
+
+  blkpkt = &qs->blocked_pkt[qs->num_blocked_pkt++];
+
+  blkpkt->pkt = pkt;
+  blkpkt->pktlen = pktlen;
+  blkpkt->gsolen = gsolen;
+}
+
+static CURLcode send_blocked_pkt(struct Curl_easy *data, int sockfd,
+                                 struct quicsocket *qs)
+{
+  size_t sent;
+  CURLcode curlcode;
+  struct blocked_pkt *blkpkt;
+
+  for(; qs->num_blocked_pkt_sent < qs->num_blocked_pkt;
+      ++qs->num_blocked_pkt_sent) {
+    blkpkt = &qs->blocked_pkt[qs->num_blocked_pkt_sent];
+    curlcode = send_packet(&sent, data, sockfd, qs, blkpkt->pkt,
+                           blkpkt->pktlen, blkpkt->gsolen);
+
+    if(curlcode) {
+      if(curlcode == CURLE_AGAIN) {
+        blkpkt->pkt += sent;
+        blkpkt->pktlen -= sent;
+      }
+      return curlcode;
+    }
+  }
+
+  qs->num_blocked_pkt = 0;
+  qs->num_blocked_pkt_sent = 0;
+
+  return CURLE_OK;
+}
+
 static CURLcode ng_flush_egress(struct Curl_easy *data,
                                 int sockfd,
                                 struct quicsocket *qs)
 {
   int rv;
-  ssize_t sent;
-  ssize_t outlen;
-  uint8_t out[NGTCP2_MAX_UDP_PAYLOAD_SIZE];
+  size_t sent;
+  ngtcp2_ssize outlen;
+  uint8_t *outpos = qs->pktbuf;
+  size_t max_udp_payload_size =
+      ngtcp2_conn_get_max_tx_udp_payload_size(qs->qconn);
+  size_t path_max_udp_payload_size =
+      ngtcp2_conn_get_path_max_tx_udp_payload_size(qs->qconn);
+  size_t max_pktcnt =
+      CURLMIN(MAX_PKT_BURST, qs->pktbuflen / max_udp_payload_size);
+  size_t pktcnt = 0;
+  size_t gsolen;
   ngtcp2_path_storage ps;
   ngtcp2_tstamp ts = timestamp();
-  struct sockaddr_storage remote_addr;
   ngtcp2_tstamp expiry;
   ngtcp2_duration timeout;
   int64_t stream_id;
-  ssize_t veccnt;
+  nghttp3_ssize veccnt;
   int fin;
   nghttp3_vec vec[16];
-  ssize_t ndatalen;
+  ngtcp2_ssize ndatalen;
   uint32_t flags;
+  CURLcode curlcode;
 
   rv = ngtcp2_conn_handle_expiry(qs->qconn, ts);
   if(rv) {
     failf(data, "ngtcp2_conn_handle_expiry returned error: %s",
           ngtcp2_strerror(rv));
+    ngtcp2_connection_close_error_set_transport_error_liberr(&qs->last_error,
+                                                             rv, NULL, 0);
     return CURLE_SEND_ERROR;
   }
 
+  if(qs->num_blocked_pkt) {
+    curlcode = send_blocked_pkt(data, sockfd, qs);
+    if(curlcode) {
+      if(curlcode == CURLE_AGAIN) {
+        Curl_expire(data, 1, EXPIRE_QUIC);
+        return CURLE_OK;
+      }
+      return curlcode;
+    }
+  }
+
   ngtcp2_path_storage_zero(&ps);
 
   for(;;) {
@@ -1816,39 +2041,45 @@ static CURLcode ng_flush_egress(struct Curl_easy *data,
       if(veccnt < 0) {
         failf(data, "nghttp3_conn_writev_stream returned error: %s",
               nghttp3_strerror((int)veccnt));
+        ngtcp2_connection_close_error_set_application_error(
+            &qs->last_error,
+            nghttp3_err_infer_quic_app_error_code((int)veccnt), NULL, 0);
         return CURLE_SEND_ERROR;
       }
     }
 
     flags = NGTCP2_WRITE_STREAM_FLAG_MORE |
             (fin ? NGTCP2_WRITE_STREAM_FLAG_FIN : 0);
-    outlen = ngtcp2_conn_writev_stream(qs->qconn, &ps.path, NULL, out,
-                                       sizeof(out),
+    outlen = ngtcp2_conn_writev_stream(qs->qconn, &ps.path, NULL, outpos,
+                                       max_udp_payload_size,
                                        &ndatalen, flags, stream_id,
                                        (const ngtcp2_vec *)vec, veccnt, ts);
     if(outlen == 0) {
+      if(outpos != qs->pktbuf) {
+        curlcode = send_packet(&sent, data, sockfd, qs, qs->pktbuf,
+                               outpos - qs->pktbuf, gsolen);
+        if(curlcode) {
+          if(curlcode == CURLE_AGAIN) {
+            push_blocked_pkt(qs, qs->pktbuf + sent, outpos - qs->pktbuf - sent,
+                             gsolen);
+            Curl_expire(data, 1, EXPIRE_QUIC);
+            return CURLE_OK;
+          }
+          return curlcode;
+        }
+      }
+
       break;
     }
     if(outlen < 0) {
       switch(outlen) {
       case NGTCP2_ERR_STREAM_DATA_BLOCKED:
         assert(ndatalen == -1);
-        rv = nghttp3_conn_block_stream(qs->h3conn, stream_id);
-        if(rv) {
-          failf(data, "nghttp3_conn_block_stream returned error: %s\n",
-                nghttp3_strerror(rv));
-          return CURLE_SEND_ERROR;
-        }
+        nghttp3_conn_block_stream(qs->h3conn, stream_id);
         continue;
       case NGTCP2_ERR_STREAM_SHUT_WR:
         assert(ndatalen == -1);
-        rv = nghttp3_conn_shutdown_stream_write(qs->h3conn, stream_id);
-        if(rv) {
-          failf(data,
-                "nghttp3_conn_shutdown_stream_write returned error: %s\n",
-                nghttp3_strerror(rv));
-          return CURLE_SEND_ERROR;
-        }
+        nghttp3_conn_shutdown_stream_write(qs->h3conn, stream_id);
         continue;
       case NGTCP2_ERR_WRITE_MORE:
         assert(ndatalen >= 0);
@@ -1863,6 +2094,8 @@ static CURLcode ng_flush_egress(struct Curl_easy *data,
         assert(ndatalen == -1);
         failf(data, "ngtcp2_conn_writev_stream returned error: %s",
               ngtcp2_strerror((int)outlen));
+        ngtcp2_connection_close_error_set_transport_error_liberr(
+            &qs->last_error, (int)outlen, NULL, 0);
         return CURLE_SEND_ERROR;
       }
     }
@@ -1875,31 +2108,74 @@ static CURLcode ng_flush_egress(struct Curl_easy *data,
       }
     }
 
-    memcpy(&remote_addr, ps.path.remote.addr, ps.path.remote.addrlen);
-    while((sent = send(sockfd, (const char *)out, outlen, 0)) == -1 &&
-          SOCKERRNO == EINTR)
-      ;
+    outpos += outlen;
 
-    if(sent == -1) {
-      if(SOCKERRNO == EAGAIN || SOCKERRNO == EWOULDBLOCK) {
-        /* TODO Cache packet */
-        break;
+    if(pktcnt == 0) {
+      gsolen = outlen;
+    }
+    else if((size_t)outlen > gsolen ||
+            (gsolen > path_max_udp_payload_size &&
+             (size_t)outlen != gsolen)) {
+      /* Packet larger than path_max_udp_payload_size is PMTUD probe
+         packet and it might not be sent because of EMSGSIZE. Send
+         them separately to minimize the loss. */
+      curlcode = send_packet(&sent, data, sockfd, qs, qs->pktbuf,
+                             outpos - outlen - qs->pktbuf, gsolen);
+      if(curlcode) {
+        if(curlcode == CURLE_AGAIN) {
+          push_blocked_pkt(qs, qs->pktbuf + sent,
+                           outpos - outlen - qs->pktbuf - sent, gsolen);
+          push_blocked_pkt(qs, outpos - outlen, outlen, outlen);
+          Curl_expire(data, 1, EXPIRE_QUIC);
+          return CURLE_OK;
+        }
+        return curlcode;
       }
-      else {
-        failf(data, "send() returned %zd (errno %d)", sent,
-              SOCKERRNO);
-        return CURLE_SEND_ERROR;
+      curlcode = send_packet(&sent, data, sockfd, qs, outpos - outlen, outlen,
+                             outlen);
+      if(curlcode) {
+        if(curlcode == CURLE_AGAIN) {
+          assert(0 == sent);
+          push_blocked_pkt(qs, outpos - outlen, outlen, outlen);
+          Curl_expire(data, 1, EXPIRE_QUIC);
+          return CURLE_OK;
+        }
+        return curlcode;
+      }
+
+      pktcnt = 0;
+      outpos = qs->pktbuf;
+      continue;
+    }
+
+    if(++pktcnt >= max_pktcnt || (size_t)outlen < gsolen) {
+      curlcode = send_packet(&sent, data, sockfd, qs, qs->pktbuf,
+                             outpos - qs->pktbuf, gsolen);
+      if(curlcode) {
+        if(curlcode == CURLE_AGAIN) {
+          push_blocked_pkt(qs, qs->pktbuf + sent, outpos - qs->pktbuf - sent,
+                           gsolen);
+          Curl_expire(data, 1, EXPIRE_QUIC);
+          return CURLE_OK;
+        }
+        return curlcode;
       }
+
+      pktcnt = 0;
+      outpos = qs->pktbuf;
     }
   }
 
   expiry = ngtcp2_conn_get_expiry(qs->qconn);
   if(expiry != UINT64_MAX) {
     if(expiry <= ts) {
-      timeout = NGTCP2_MILLISECONDS;
+      timeout = 0;
     }
     else {
       timeout = expiry - ts;
+      if(timeout % NGTCP2_MILLISECONDS) {
+        timeout += NGTCP2_MILLISECONDS;
+      }
     }
     Curl_expire(data, timeout / NGTCP2_MILLISECONDS, EXPIRE_QUIC);
   }
@@ -1935,6 +2211,7 @@ void Curl_quic_done(struct Curl_easy *data, bool premature)
     /* only for HTTP/3 transfers */
     struct HTTP *stream = data->req.p.http;
     Curl_dyn_free(&stream->overflow);
+    free(stream->h3out);
   }
 }
 
@@ -1952,4 +2229,26 @@ bool Curl_quic_data_pending(const struct Curl_easy *data)
   return Curl_dyn_len(&stream->overflow) > 0;
 }
 
+/*
+ * Called from transfer.c:Curl_readwrite when neither HTTP level read
+ * nor write is performed. It is a good place to handle timer expiry
+ * for QUIC transport.
+ */
+CURLcode Curl_quic_idle(struct Curl_easy *data)
+{
+  struct connectdata *conn = data->conn;
+  curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
+  struct quicsocket *qs = conn->quic;
+
+  if(ngtcp2_conn_get_expiry(qs->qconn) > timestamp()) {
+    return CURLE_OK;
+  }
+
+  if(ng_flush_egress(data, sockfd, qs)) {
+    return CURLE_SEND_ERROR;
+  }
+
+  return CURLE_OK;
+}
+
 #endif
index 501453042b9b2caccba513ce2684c526b9dfbdaa..6539f5fef3d90e746f1227faa8a9b321b6b76f45 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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_NGTCP2
 
-#include <ngtcp2/ngtcp2.h>
+#ifdef HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+
+#include <ngtcp2/ngtcp2_crypto.h>
 #include <nghttp3/nghttp3.h>
 #ifdef USE_OPENSSL
 #include <openssl/ssl.h>
 #elif defined(USE_GNUTLS)
 #include <gnutls/gnutls.h>
+#elif defined(USE_WOLFSSL)
+#include <wolfssl/options.h>
+#include <wolfssl/ssl.h>
+#include <wolfssl/quic.h>
 #endif
 
+struct blocked_pkt {
+  const uint8_t *pkt;
+  size_t pktlen;
+  size_t gsolen;
+};
+
 struct quicsocket {
   struct connectdata *conn; /* point back to the connection */
   ngtcp2_conn *qconn;
@@ -42,17 +58,29 @@ struct quicsocket {
   uint32_t version;
   ngtcp2_settings settings;
   ngtcp2_transport_params transport_params;
+  ngtcp2_connection_close_error last_error;
+  ngtcp2_crypto_conn_ref conn_ref;
 #ifdef USE_OPENSSL
   SSL_CTX *sslctx;
   SSL *ssl;
 #elif defined(USE_GNUTLS)
   gnutls_certificate_credentials_t cred;
   gnutls_session_t ssl;
+#elif defined(USE_WOLFSSL)
+  WOLFSSL_CTX *sslctx;
+  WOLFSSL *ssl;
 #endif
-  /* the last TLS alert description generated by the local endpoint */
-  uint8_t tls_alert;
   struct sockaddr_storage local_addr;
   socklen_t local_addrlen;
+  bool no_gso;
+  uint8_t *pktbuf;
+  size_t pktbuflen;
+  /* the number of entries in blocked_pkt */
+  size_t num_blocked_pkt;
+  /* the number of processed entries in blocked_pkt */
+  size_t num_blocked_pkt_sent;
+  /* the packets blocked by sendmsg (EAGAIN or EWOULDBLOCK) */
+  struct blocked_pkt blocked_pkt[2];
 
   nghttp3_conn *h3conn;
   nghttp3_settings h3settings;
index f7577605c0c22535812ae44d262f0deec786a680..a52a7e8e2136da42c906b5ab0b3bd5a37b86dbb0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -25,6 +27,7 @@
 #ifdef USE_QUICHE
 #include <quiche.h>
 #include <openssl/err.h>
+#include <openssl/ssl.h>
 #include "urldata.h"
 #include "sendf.h"
 #include "strdup.h"
 #include "connect.h"
 #include "strerror.h"
 #include "vquic.h"
+#include "transfer.h"
+#include "h2h3.h"
+#include "vtls/openssl.h"
+#include "vtls/keylog.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -172,6 +179,76 @@ static void quiche_debug_log(const char *line, void *argp)
 }
 #endif
 
+static void keylog_callback(const SSL *ssl, const char *line)
+{
+  (void)ssl;
+  Curl_tls_keylog_write_line(line);
+}
+
+static SSL_CTX *quic_ssl_ctx(struct Curl_easy *data)
+{
+  SSL_CTX *ssl_ctx = SSL_CTX_new(TLS_method());
+
+  SSL_CTX_set_alpn_protos(ssl_ctx,
+                          (const uint8_t *)QUICHE_H3_APPLICATION_PROTOCOL,
+                          sizeof(QUICHE_H3_APPLICATION_PROTOCOL) - 1);
+
+  SSL_CTX_set_default_verify_paths(ssl_ctx);
+
+  /* Open the file if a TLS or QUIC backend has not done this before. */
+  Curl_tls_keylog_open();
+  if(Curl_tls_keylog_enabled()) {
+    SSL_CTX_set_keylog_callback(ssl_ctx, keylog_callback);
+  }
+
+  {
+    struct connectdata *conn = data->conn;
+    if(conn->ssl_config.verifypeer) {
+      const char * const ssl_cafile = conn->ssl_config.CAfile;
+      const char * const ssl_capath = conn->ssl_config.CApath;
+      if(ssl_cafile || ssl_capath) {
+        SSL_CTX_set_verify(ssl_ctx, SSL_VERIFY_PEER, NULL);
+        /* tell OpenSSL where to find CA certificates that are used to verify
+           the server's certificate. */
+        if(!SSL_CTX_load_verify_locations(ssl_ctx, ssl_cafile, ssl_capath)) {
+          /* Fail if we insist on successfully verifying the server. */
+          failf(data, "error setting certificate verify locations:"
+                "  CAfile: %s CApath: %s",
+                ssl_cafile ? ssl_cafile : "none",
+                ssl_capath ? ssl_capath : "none");
+          return NULL;
+        }
+        infof(data, " CAfile: %s", ssl_cafile ? ssl_cafile : "none");
+        infof(data, " CApath: %s", ssl_capath ? ssl_capath : "none");
+      }
+#ifdef CURL_CA_FALLBACK
+      else {
+        /* verifying the peer without any CA certificates won't work so
+           use openssl's built-in default as fallback */
+        SSL_CTX_set_default_verify_paths(ssl_ctx);
+      }
+#endif
+    }
+  }
+  return ssl_ctx;
+}
+
+static int quic_init_ssl(struct quicsocket *qs, struct connectdata *conn)
+{
+  /* this will need some attention when HTTPS proxy over QUIC get fixed */
+  const char * const hostname = conn->host.name;
+
+  DEBUGASSERT(!qs->ssl);
+  qs->ssl = SSL_new(qs->sslctx);
+
+  SSL_set_app_data(qs->ssl, qs);
+
+  /* set SNI */
+  SSL_set_tlsext_host_name(qs->ssl, hostname);
+  return 0;
+}
+
+
 CURLcode Curl_quic_connect(struct Curl_easy *data,
                            struct connectdata *conn, curl_socket_t sockfd,
                            int sockindex,
@@ -179,9 +256,9 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
 {
   CURLcode result;
   struct quicsocket *qs = &conn->hequic[sockindex];
-  char *keylog_file = NULL;
   char ipbuf[40];
   int port;
+  int rv;
 
 #ifdef DEBUG_QUICHE
   /* initialize debug log callback only once */
@@ -216,25 +293,33 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
                                        sizeof(QUICHE_H3_APPLICATION_PROTOCOL)
                                        - 1);
 
+  qs->sslctx = quic_ssl_ctx(data);
+  if(!qs->sslctx)
+    return CURLE_QUIC_CONNECT_ERROR;
+
+  if(quic_init_ssl(qs, conn))
+    return CURLE_QUIC_CONNECT_ERROR;
+
   result = Curl_rand(data, qs->scid, sizeof(qs->scid));
   if(result)
     return result;
 
-  keylog_file = getenv("SSLKEYLOGFILE");
-
-  if(keylog_file)
-    quiche_config_log_keys(qs->cfg);
-
-  qs->conn = quiche_connect(conn->host.name, (const uint8_t *) qs->scid,
-                            sizeof(qs->scid), addr, addrlen, qs->cfg);
+  qs->local_addrlen = sizeof(qs->local_addr);
+  rv = getsockname(sockfd, (struct sockaddr *)&qs->local_addr,
+                   &qs->local_addrlen);
+  if(rv == -1)
+    return CURLE_QUIC_CONNECT_ERROR;
+
+  qs->conn = quiche_conn_new_with_tls((const uint8_t *) qs->scid,
+                                      sizeof(qs->scid), NULL, 0,
+                                      (struct sockaddr *)&qs->local_addr,
+                                      qs->local_addrlen, addr, addrlen,
+                                      qs->cfg, qs->ssl, false);
   if(!qs->conn) {
     failf(data, "can't create quiche connection");
     return CURLE_OUT_OF_MEMORY;
   }
 
-  if(keylog_file)
-    quiche_conn_set_keylog_path(qs->conn, keylog_file);
-
   /* Known to not work on Windows */
 #if !defined(WIN32) && defined(HAVE_QUICHE_CONN_SET_QLOG_FD)
   {
@@ -284,7 +369,8 @@ CURLcode Curl_quic_connect(struct Curl_easy *data,
   return CURLE_OK;
 }
 
-static CURLcode quiche_has_connected(struct connectdata *conn,
+static CURLcode quiche_has_connected(struct Curl_easy *data,
+                                     struct connectdata *conn,
                                      int sockindex,
                                      int tempindex)
 {
@@ -298,6 +384,21 @@ static CURLcode quiche_has_connected(struct connectdata *conn,
   conn->httpversion = 30;
   conn->bundle->multiuse = BUNDLE_MULTIPLEX;
 
+  if(conn->ssl_config.verifyhost) {
+    X509 *server_cert;
+    server_cert = SSL_get_peer_certificate(qs->ssl);
+    if(!server_cert) {
+      return CURLE_PEER_FAILED_VERIFICATION;
+    }
+    result = Curl_ossl_verifyhost(data, conn, server_cert);
+    X509_free(server_cert);
+    if(result)
+      return result;
+    infof(data, "Verified certificate just fine");
+  }
+  else
+    infof(data, "Skipped certificate verification");
+
   qs->h3config = quiche_h3_config_new();
   if(!qs->h3config)
     return CURLE_OUT_OF_MEMORY;
@@ -315,6 +416,10 @@ static CURLcode quiche_has_connected(struct connectdata *conn,
     qs->cfg = NULL;
     qs->conn = NULL;
   }
+  if(data->set.ssl.certinfo)
+    /* asked to gather certificate info */
+    (void)Curl_ossl_certchain(data, qs->ssl);
+
   return CURLE_OK;
   fail:
   quiche_h3_config_free(qs->h3config);
@@ -344,8 +449,8 @@ CURLcode Curl_quic_is_connected(struct Curl_easy *data,
 
   if(quiche_conn_is_established(qs->conn)) {
     *done = TRUE;
-    result = quiche_has_connected(conn, 0, sockindex);
-    DEBUGF(infof(data, "quiche established connection!"));
+    result = quiche_has_connected(data, conn, 0, sockindex);
+    DEBUGF(infof(data, "quiche established connection"));
   }
 
   return result;
@@ -386,13 +491,26 @@ static CURLcode process_ingress(struct Curl_easy *data, int sockfd,
 
     recv_info.from = (struct sockaddr *) &from;
     recv_info.from_len = from_len;
+    recv_info.to = (struct sockaddr *) &qs->local_addr;
+    recv_info.to_len = qs->local_addrlen;
 
     recvd = quiche_conn_recv(qs->conn, buf, recvd, &recv_info);
     if(recvd == QUICHE_ERR_DONE)
       break;
 
     if(recvd < 0) {
+      if(QUICHE_ERR_TLS_FAIL == recvd) {
+        long verify_ok = SSL_get_verify_result(qs->ssl);
+        if(verify_ok != X509_V_OK) {
+          failf(data, "SSL certificate problem: %s",
+                X509_verify_cert_error_string(verify_ok));
+
+          return CURLE_PEER_FAILED_VERIFICATION;
+        }
+      }
+
       failf(data, "quiche_conn_recv() == %zd", recvd);
+
       return CURLE_RECV_ERROR;
     }
   } while(1);
@@ -451,7 +569,7 @@ static int cb_each_header(uint8_t *name, size_t name_len,
   struct h3h1header *headers = (struct h3h1header *)argp;
   size_t olen = 0;
 
-  if((name_len == 7) && !strncmp(":status", (char *)name, 7)) {
+  if((name_len == 7) && !strncmp(H2H3_PSEUDO_STATUS, (char *)name, 7)) {
     msnprintf(headers->dest,
               headers->destlen, "HTTP/3 %.*s\n",
               (int) value_len, value);
@@ -496,6 +614,19 @@ static ssize_t h3_stream_recv(struct Curl_easy *data,
     return -1;
   }
 
+  if(qs->h3_recving) {
+    /* body receiving state */
+    rcode = quiche_h3_recv_body(qs->h3c, qs->conn, stream->stream3_id,
+                                (unsigned char *)buf, buffersize);
+    if(rcode <= 0) {
+      recvd = -1;
+      qs->h3_recving = FALSE;
+      /* fall through into the while loop below */
+    }
+    else
+      recvd = rcode;
+  }
+
   while(recvd < 0) {
     int64_t s = quiche_h3_conn_poll(qs->h3c, qs->conn, &ev);
     if(s < 0)
@@ -537,9 +668,15 @@ static ssize_t h3_stream_recv(struct Curl_easy *data,
         recvd = -1;
         break;
       }
+      qs->h3_recving = TRUE;
       recvd += rcode;
       break;
 
+    case QUICHE_H3_EVENT_RESET:
+      streamclose(conn, "Stream reset");
+      *curlcode = CURLE_PARTIAL_FILE;
+      return -1;
+
     case QUICHE_H3_EVENT_FINISHED:
       streamclose(conn, "End of stream");
       recvd = 0; /* end of stream */
@@ -585,10 +722,12 @@ static ssize_t h3_stream_send(struct Curl_easy *data,
     sent = len;
   }
   else {
-    H3BUGF(infof(data, "Pass on %zd body bytes to quiche", len));
     sent = quiche_h3_send_body(qs->h3c, qs->conn, stream->stream3_id,
                                (uint8_t *)mem, len, FALSE);
-    if(sent < 0) {
+    if(sent == QUICHE_H3_ERR_DONE) {
+      sent = 0;
+    }
+    else if(sent < 0) {
       *curlcode = CURLE_SEND_ERROR;
       return -1;
     }
@@ -618,175 +757,34 @@ void Curl_quic_ver(char *p, size_t len)
 static CURLcode http_request(struct Curl_easy *data, const void *mem,
                              size_t len)
 {
-  /*
-   */
   struct connectdata *conn = data->conn;
   struct HTTP *stream = data->req.p.http;
   size_t nheader;
-  size_t i;
-  size_t authority_idx;
-  char *hdbuf = (char *)mem;
-  char *end, *line_end;
   int64_t stream3_id;
   quiche_h3_header *nva = NULL;
   struct quicsocket *qs = conn->quic;
   CURLcode result = CURLE_OK;
+  struct h2h3req *hreq = NULL;
 
   stream->h3req = TRUE; /* senf off! */
 
-  /* Calculate number of headers contained in [mem, mem + len). Assumes a
-     correctly generated HTTP header field block. */
-  nheader = 0;
-  for(i = 1; i < len; ++i) {
-    if(hdbuf[i] == '\n' && hdbuf[i - 1] == '\r') {
-      ++nheader;
-      ++i;
-    }
-  }
-  if(nheader < 2)
+  result = Curl_pseudo_headers(data, mem, len, &hreq);
+  if(result)
     goto fail;
+  nheader = hreq->entries;
 
-  /* We counted additional 2 \r\n in the first and last line. We need 3
-     new headers: :method, :path and :scheme. Therefore we need one
-     more space. */
-  nheader += 1;
   nva = malloc(sizeof(quiche_h3_header) * nheader);
   if(!nva) {
     result = CURLE_OUT_OF_MEMORY;
     goto fail;
   }
-
-  /* Extract :method, :path from request line
-     We do line endings with CRLF so checking for CR is enough */
-  line_end = memchr(hdbuf, '\r', len);
-  if(!line_end) {
-    result = CURLE_BAD_FUNCTION_ARGUMENT; /* internal error */
-    goto fail;
-  }
-
-  /* Method does not contain spaces */
-  end = memchr(hdbuf, ' ', line_end - hdbuf);
-  if(!end || end == hdbuf)
-    goto fail;
-  nva[0].name = (unsigned char *)":method";
-  nva[0].name_len = strlen((char *)nva[0].name);
-  nva[0].value = (unsigned char *)hdbuf;
-  nva[0].value_len = (size_t)(end - hdbuf);
-
-  hdbuf = end + 1;
-
-  /* Path may contain spaces so scan backwards */
-  end = NULL;
-  for(i = (size_t)(line_end - hdbuf); i; --i) {
-    if(hdbuf[i - 1] == ' ') {
-      end = &hdbuf[i - 1];
-      break;
-    }
-  }
-  if(!end || end == hdbuf)
-    goto fail;
-  nva[1].name = (unsigned char *)":path";
-  nva[1].name_len = strlen((char *)nva[1].name);
-  nva[1].value = (unsigned char *)hdbuf;
-  nva[1].value_len = (size_t)(end - hdbuf);
-
-  nva[2].name = (unsigned char *)":scheme";
-  nva[2].name_len = strlen((char *)nva[2].name);
-  if(conn->handler->flags & PROTOPT_SSL)
-    nva[2].value = (unsigned char *)"https";
-  else
-    nva[2].value = (unsigned char *)"http";
-  nva[2].value_len = strlen((char *)nva[2].value);
-
-
-  authority_idx = 0;
-  i = 3;
-  while(i < nheader) {
-    size_t hlen;
-
-    hdbuf = line_end + 2;
-
-    /* check for next CR, but only within the piece of data left in the given
-       buffer */
-    line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
-    if(!line_end || (line_end == hdbuf))
-      goto fail;
-
-    /* header continuation lines are not supported */
-    if(*hdbuf == ' ' || *hdbuf == '\t')
-      goto fail;
-
-    for(end = hdbuf; end < line_end && *end != ':'; ++end)
-      ;
-    if(end == hdbuf || end == line_end)
-      goto fail;
-    hlen = end - hdbuf;
-
-    if(hlen == 4 && strncasecompare("host", hdbuf, 4)) {
-      authority_idx = i;
-      nva[i].name = (unsigned char *)":authority";
-      nva[i].name_len = strlen((char *)nva[i].name);
-    }
-    else {
-      nva[i].name_len = (size_t)(end - hdbuf);
-      /* Lower case the header name for HTTP/3 */
-      Curl_strntolower((char *)hdbuf, hdbuf, nva[i].name_len);
-      nva[i].name = (unsigned char *)hdbuf;
-    }
-    hdbuf = end + 1;
-    while(*hdbuf == ' ' || *hdbuf == '\t')
-      ++hdbuf;
-    end = line_end;
-
-#if 0 /* This should probably go in more or less like this */
-    switch(inspect_header((const char *)nva[i].name, nva[i].namelen, hdbuf,
-                          end - hdbuf)) {
-    case HEADERINST_IGNORE:
-      /* skip header fields prohibited by HTTP/2 specification. */
-      --nheader;
-      continue;
-    case HEADERINST_TE_TRAILERS:
-      nva[i].value = (uint8_t*)"trailers";
-      nva[i].value_len = sizeof("trailers") - 1;
-      break;
-    default:
-      nva[i].value = (unsigned char *)hdbuf;
-      nva[i].value_len = (size_t)(end - hdbuf);
-    }
-#endif
-    nva[i].value = (unsigned char *)hdbuf;
-    nva[i].value_len = (size_t)(end - hdbuf);
-
-    ++i;
-  }
-
-  /* :authority must come before non-pseudo header fields */
-  if(authority_idx && authority_idx != AUTHORITY_DST_IDX) {
-    quiche_h3_header authority = nva[authority_idx];
-    for(i = authority_idx; i > AUTHORITY_DST_IDX; --i) {
-      nva[i] = nva[i - 1];
-    }
-    nva[i] = authority;
-  }
-
-  /* Warn stream may be rejected if cumulative length of headers is too
-     large. */
-#define MAX_ACC 60000  /* <64KB to account for some overhead */
-  {
-    size_t acc = 0;
-
-    for(i = 0; i < nheader; ++i) {
-      acc += nva[i].name_len + nva[i].value_len;
-
-      H3BUGF(infof(data, "h3 [%.*s: %.*s]",
-                   nva[i].name_len, nva[i].name,
-                   nva[i].value_len, nva[i].value));
-    }
-
-    if(acc > MAX_ACC) {
-      infof(data, "http_request: Warning: The cumulative length of all "
-            "headers exceeds %d bytes and that could cause the "
-            "stream to be rejected.", MAX_ACC);
+  else {
+    unsigned int i;
+    for(i = 0; i < nheader; i++) {
+      nva[i].name = (unsigned char *)hreq->header[i].name;
+      nva[i].name_len = hreq->header[i].namelen;
+      nva[i].value = (unsigned char *)hreq->header[i].value;
+      nva[i].value_len = hreq->header[i].valuelen;
     }
   }
 
@@ -808,7 +806,7 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
                                          (uint8_t *)data->set.postfields,
                                          stream->upload_left, TRUE);
       if(sent <= 0) {
-        failf(data, "quiche_h3_send_body failed!");
+        failf(data, "quiche_h3_send_body failed");
         result = CURLE_SEND_ERROR;
       }
       stream->upload_left = 0; /* nothing left to send */
@@ -833,10 +831,12 @@ static CURLcode http_request(struct Curl_easy *data, const void *mem,
         stream3_id, (void *)data);
   stream->stream3_id = stream3_id;
 
+  Curl_pseudo_free(hreq);
   return CURLE_OK;
 
 fail:
   free(nva);
+  Curl_pseudo_free(hreq);
   return result;
 }
 
@@ -881,4 +881,15 @@ bool Curl_quic_data_pending(const struct Curl_easy *data)
   return FALSE;
 }
 
+/*
+ * Called from transfer.c:Curl_readwrite when neither HTTP level read
+ * nor write is performed. It is a good place to handle timer expiry
+ * for QUIC transport.
+ */
+CURLcode Curl_quic_idle(struct Curl_easy *data)
+{
+  (void)data;
+  return CURLE_OK;
+}
+
 #endif
index d311e9988729561c174250d0421aa7cb69e2b5e9..2da65f5f48826c665a2c355be9e6a0b1a5a02a47 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
@@ -27,6 +29,7 @@
 #ifdef USE_QUICHE
 
 #include <quiche.h>
+#include <openssl/ssl.h>
 
 struct quic_handshake {
   char *buf;       /* pointer to the buffer */
@@ -43,6 +46,11 @@ struct quicsocket {
   uint8_t scid[QUICHE_MAX_CONN_ID_LEN];
   curl_socket_t sockfd;
   uint32_t version;
+  SSL_CTX *sslctx;
+  SSL *ssl;
+  bool h3_recving; /* TRUE when in h3-body-reading state */
+  struct sockaddr_storage local_addr;
+  socklen_t local_addrlen;
 };
 
 #endif
index 7c0cc6df2a2d5bf82f1eb66553cbdcb6b5471567..e52a4f301d04c0c23f7909f09b7652d4f726c7e5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -67,7 +69,7 @@ CURLcode Curl_qlogdir(struct Curl_easy *data,
       result = Curl_dyn_add(&fname, hex);
     }
     if(!result)
-      result = Curl_dyn_add(&fname, ".qlog");
+      result = Curl_dyn_add(&fname, ".sqlog");
 
     if(!result) {
       int qlogfd = open(Curl_dyn_ptr(&fname), QLOGMODE,
index eb8a893d925a478e631344078ba69d037988415b..8f599a8f49a04d2ab99aaff982aa67ea112e409e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
index 3e317e87c998a3a3193d4602708a7f3c21d52871..0105e4079cd09206f693adb4a014739752cb05e0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2017 - 2021 Red Hat, Inc.
+ * Copyright (C) 2017 - 2022 Red Hat, Inc.
  *
  * Authors: Nikos Mavrogiannopoulos, Tomas Mraz, Stanislav Zidek,
  *          Robert Kolcun, Andreas Schneider
@@ -21,6 +21,8 @@
  * 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"
 #include <libssh/libssh.h>
 #include <libssh/sftp.h>
 
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 #include "multiif.h"
 #include "select.h"
 #include "warnless.h"
+#include "curl_path.h"
 
-/* for permission and open flags */
-#include <sys/types.h>
+#ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
+#ifdef HAVE_FCNTL_H
 #include <fcntl.h>
+#endif
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
 #include "memdebug.h"
-#include "curl_path.h"
+
+/* in 0.10.0 or later, ignore deprecated warnings */
+#if defined(__GNUC__) &&                        \
+  (LIBSSH_VERSION_MINOR >= 10) ||               \
+  (LIBSSH_VERSION_MAJOR > 0)
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+#endif
 
 /* A recent macro provided by libssh. Or make our own. */
 #ifndef SSH_STRING_FREE_CHAR
   } while(0)
 #endif
 
+/* These stat values may not be the same as the user's S_IFMT / S_IFLNK */
+#ifndef SSH_S_IFMT
+#define SSH_S_IFMT   00170000
+#endif
+#ifndef SSH_S_IFLNK
+#define SSH_S_IFLNK  0120000
+#endif
+
 /* Local functions: */
 static CURLcode myssh_connect(struct Curl_easy *data, bool *done);
 static CURLcode myssh_multi_statemach(struct Curl_easy *data,
@@ -946,10 +963,9 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
 
       rc = sftp_init(sshc->sftp_session);
       if(rc != SSH_OK) {
-        rc = sftp_get_error(sshc->sftp_session);
         failf(data, "Failure initializing sftp session: %s",
               ssh_get_error(sshc->ssh_session));
-        MOVE_TO_ERROR_STATE(sftp_error_to_CURLE(rc));
+        MOVE_TO_ERROR_STATE(sftp_error_to_CURLE(SSH_FX_FAILURE));
         break;
       }
       state(data, SSH_SFTP_REALPATH);
@@ -1468,8 +1484,8 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
           memcpy(sshc->readdir_line, sshc->readdir_longentry,
                  sshc->readdir_currLen);
           if((sshc->readdir_attrs->flags & SSH_FILEXFER_ATTR_PERMISSIONS) &&
-             ((sshc->readdir_attrs->permissions & S_IFMT) ==
-              S_IFLNK)) {
+             ((sshc->readdir_attrs->permissions & SSH_S_IFMT) ==
+              SSH_S_IFLNK)) {
             sshc->readdir_linkPath = aprintf("%s%s", protop->path,
                                              sshc->readdir_filename);
 
@@ -1650,7 +1666,7 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
           if(from_t == CURL_OFFT_FLOW) {
             return CURLE_RANGE_ERROR;
           }
-          while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+          while(*ptr && (ISBLANK(*ptr) || (*ptr == '-')))
             ptr++;
           to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
           if(to_t == CURL_OFFT_FLOW) {
@@ -1962,6 +1978,13 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
       }
 
       ssh_disconnect(sshc->ssh_session);
+      if(!ssh_version(SSH_VERSION_INT(0, 10, 0))) {
+        /* conn->sock[FIRSTSOCKET] is closed by ssh_disconnect behind our back,
+           explicitly mark it as closed with the memdebug macro. This libssh
+           bug is fixed in 0.10.0. */
+        fake_sclose(conn->sock[FIRSTSOCKET]);
+        conn->sock[FIRSTSOCKET] = CURL_SOCKET_BAD;
+      }
 
       SSH_STRING_FREE_CHAR(sshc->homedir);
       data->state.most_recent_ftp_entrypath = NULL;
@@ -2055,6 +2078,9 @@ static int myssh_getsock(struct Curl_easy *data,
   if(conn->waitfor & KEEP_SEND)
     bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
 
+  if(!conn->waitfor)
+    bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
+
   return bitmap;
 }
 
@@ -2687,7 +2713,7 @@ static void sftp_quote(struct Curl_easy *data)
    */
   cp = strchr(cmd, ' ');
   if(!cp) {
-    failf(data, "Syntax error in SFTP command. Supply parameter(s)!");
+    failf(data, "Syntax error in SFTP command. Supply parameter(s)");
     state(data, SSH_SFTP_CLOSE);
     sshc->nextstate = SSH_NO_STATE;
     sshc->actualcode = CURLE_QUOTE_ERROR;
@@ -2891,32 +2917,33 @@ static void sftp_quote_stat(struct Curl_easy *data)
     }
     sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_UIDGID;
   }
-  else if(strncasecompare(cmd, "atime", 5)) {
+  else if(strncasecompare(cmd, "atime", 5) ||
+          strncasecompare(cmd, "mtime", 5)) {
     time_t date = Curl_getdate_capped(sshc->quote_path1);
+    bool fail = FALSE;
     if(date == -1) {
-      Curl_safefree(sshc->quote_path1);
-      Curl_safefree(sshc->quote_path2);
-      failf(data, "Syntax error: incorrect access date format");
-      state(data, SSH_SFTP_CLOSE);
-      sshc->nextstate = SSH_NO_STATE;
-      sshc->actualcode = CURLE_QUOTE_ERROR;
-      return;
+      failf(data, "incorrect date format for %.*s", 5, cmd);
+      fail = TRUE;
     }
-    sshc->quote_attrs->atime = (uint32_t)date;
-    sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;
-  }
-  else if(strncasecompare(cmd, "mtime", 5)) {
-    time_t date = Curl_getdate_capped(sshc->quote_path1);
-    if(date == -1) {
+#if SIZEOF_TIME_T > 4
+    else if(date > 0xffffffff) {
+      failf(data, "date overflow");
+      fail = TRUE; /* avoid setting a capped time */
+    }
+#endif
+    if(fail) {
       Curl_safefree(sshc->quote_path1);
       Curl_safefree(sshc->quote_path2);
-      failf(data, "Syntax error: incorrect modification date format");
       state(data, SSH_SFTP_CLOSE);
       sshc->nextstate = SSH_NO_STATE;
       sshc->actualcode = CURLE_QUOTE_ERROR;
       return;
     }
-    sshc->quote_attrs->mtime = (uint32_t)date;
+    if(strncasecompare(cmd, "atime", 5))
+      sshc->quote_attrs->atime = (uint32_t)date;
+    else /* mtime */
+      sshc->quote_attrs->mtime = (uint32_t)date;
+
     sshc->quote_attrs->flags |= SSH_FILEXFER_ATTR_ACMODTIME;
   }
 
@@ -2941,7 +2968,7 @@ void Curl_ssh_cleanup(void)
 
 void Curl_ssh_version(char *buffer, size_t buflen)
 {
-  (void)msnprintf(buffer, buflen, "libssh/%s", CURL_LIBSSH_VERSION);
+  (void)msnprintf(buffer, buflen, "libssh/%s", ssh_version(0));
 }
 
 #endif                          /* USE_LIBSSH */
index 581bc1be827da9ce5383415f8a7c00497caafaaf..5a2c0f8bbfdd0742ce20f1763578263d2b7a8cb7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* #define CURL_LIBSSH2_DEBUG */
@@ -433,11 +435,49 @@ static int sshkeycallback(struct Curl_easy *easy,
  * libssh2 1.2.8 fixed the problem with 32bit ints used for sockets on win64.
  */
 #ifdef HAVE_LIBSSH2_SESSION_HANDSHAKE
-#define libssh2_session_startup(x,y) libssh2_session_handshake(x,y)
+#define session_startup(x,y) libssh2_session_handshake(x, y)
+#else
+#define session_startup(x,y) libssh2_session_startup(x, (int)y)
+#endif
+static int convert_ssh2_keytype(int sshkeytype)
+{
+  int keytype = CURLKHTYPE_UNKNOWN;
+  switch(sshkeytype) {
+  case LIBSSH2_HOSTKEY_TYPE_RSA:
+    keytype = CURLKHTYPE_RSA;
+    break;
+  case LIBSSH2_HOSTKEY_TYPE_DSS:
+    keytype = CURLKHTYPE_DSS;
+    break;
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
+  case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
+    keytype = CURLKHTYPE_ECDSA;
+    break;
 #endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_384
+  case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
+    keytype = CURLKHTYPE_ECDSA;
+    break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_521
+  case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
+    keytype = CURLKHTYPE_ECDSA;
+    break;
+#endif
+#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
+  case LIBSSH2_HOSTKEY_TYPE_ED25519:
+    keytype = CURLKHTYPE_ED25519;
+    break;
+#endif
+  }
+  return keytype;
+}
 
 static CURLcode ssh_knownhost(struct Curl_easy *data)
 {
+  int sshkeytype = 0;
+  size_t keylen = 0;
+  int rc = 0;
   CURLcode result = CURLE_OK;
 
 #ifdef HAVE_LIBSSH2_KNOWNHOST_API
@@ -446,11 +486,8 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
     struct connectdata *conn = data->conn;
     struct ssh_conn *sshc = &conn->proto.sshc;
     struct libssh2_knownhost *host = NULL;
-    int rc;
-    int keytype;
-    size_t keylen;
     const char *remotekey = libssh2_session_hostkey(sshc->ssh_session,
-                                                    &keylen, &keytype);
+                                                    &keylen, &sshkeytype);
     int keycheck = LIBSSH2_KNOWNHOST_CHECK_FAILURE;
     int keybit = 0;
 
@@ -462,12 +499,12 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
        */
       enum curl_khmatch keymatch;
       curl_sshkeycallback func =
-        data->set.ssh_keyfunc?data->set.ssh_keyfunc:sshkeycallback;
+        data->set.ssh_keyfunc ? data->set.ssh_keyfunc : sshkeycallback;
       struct curl_khkey knownkey;
       struct curl_khkey *knownkeyp = NULL;
       struct curl_khkey foundkey;
 
-      switch(keytype) {
+      switch(sshkeytype) {
       case LIBSSH2_HOSTKEY_TYPE_RSA:
         keybit = LIBSSH2_KNOWNHOST_KEY_SSHRSA;
         break;
@@ -495,7 +532,7 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
         break;
 #endif
       default:
-        infof(data, "unsupported key type, can't check knownhosts!");
+        infof(data, "unsupported key type, can't check knownhosts");
         keybit = 0;
         break;
       }
@@ -531,16 +568,14 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
         if(keycheck <= LIBSSH2_KNOWNHOST_CHECK_MISMATCH) {
           knownkey.key = host->key;
           knownkey.len = 0;
-          knownkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
-            CURLKHTYPE_RSA : CURLKHTYPE_DSS;
+          knownkey.keytype = convert_ssh2_keytype(sshkeytype);
           knownkeyp = &knownkey;
         }
 
         /* setup 'foundkey' */
         foundkey.key = remotekey;
         foundkey.len = keylen;
-        foundkey.keytype = (keytype == LIBSSH2_HOSTKEY_TYPE_RSA)?
-          CURLKHTYPE_RSA : CURLKHTYPE_DSS;
+        foundkey.keytype = convert_ssh2_keytype(sshkeytype);
 
         /*
          * if any of the LIBSSH2_KNOWNHOST_CHECK_* defines and the
@@ -590,7 +625,7 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
                                           LIBSSH2_KNOWNHOST_KEYENC_RAW|
                                           keybit, NULL);
         if(addrc)
-          infof(data, "Warning adding the known host %s failed!",
+          infof(data, "WARNING: adding the known host %s failed",
                 conn->host.name);
         else if(rc == CURLKHSTAT_FINE_ADD_TO_FILE ||
                 rc == CURLKHSTAT_FINE_REPLACE) {
@@ -601,7 +636,7 @@ static CURLcode ssh_knownhost(struct Curl_easy *data)
                                         data->set.str[STRING_SSH_KNOWNHOSTS],
                                         LIBSSH2_KNOWNHOST_FILE_OPENSSH);
           if(wrc) {
-            infof(data, "Warning, writing %s failed!",
+            infof(data, "WARNING: writing %s failed",
                   data->set.str[STRING_SSH_KNOWNHOSTS]);
           }
         }
@@ -637,7 +672,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
 #ifdef LIBSSH2_HOSTKEY_HASH_SHA256
     /* The fingerprint points to static storage (!), don't free() it. */
     fingerprint = libssh2_hostkey_hash(sshc->ssh_session,
-        LIBSSH2_HOSTKEY_HASH_SHA256);
+                                       LIBSSH2_HOSTKEY_HASH_SHA256);
 #else
     const char *hostkey;
     size_t len = 0;
@@ -652,8 +687,8 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
 
     if(!fingerprint) {
       failf(data,
-          "Denied establishing ssh session: sha256 fingerprint "
-          "not available");
+            "Denied establishing ssh session: sha256 fingerprint "
+            "not available");
       state(data, SSH_SESSION_FREE);
       sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
       return sshc->actualcode;
@@ -661,7 +696,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
 
     /* The length of fingerprint is 32 bytes for SHA256.
      * See libssh2_hostkey_hash documentation. */
-    if(Curl_base64_encode(data, fingerprint, 32, &fingerprint_b64,
+    if(Curl_base64_encode(fingerprint, 32, &fingerprint_b64,
                           &fingerprint_b64_len) != CURLE_OK) {
       state(data, SSH_SESSION_FREE);
       sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
@@ -692,12 +727,12 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
      * against a known fingerprint, if available.
      */
     if((pub_pos != b64_pos) ||
-        Curl_strncasecompare(fingerprint_b64, pubkey_sha256, pub_pos) != 1) {
+       strncmp(fingerprint_b64, pubkey_sha256, pub_pos)) {
       free(fingerprint_b64);
 
       failf(data,
-          "Denied establishing ssh session: mismatch sha256 fingerprint. "
-          "Remote %s is not equal to %s", fingerprint_b64, pubkey_sha256);
+            "Denied establishing ssh session: mismatch sha256 fingerprint. "
+            "Remote %s is not equal to %s", fingerprint_b64, pubkey_sha256);
       state(data, SSH_SESSION_FREE);
       sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
       return sshc->actualcode;
@@ -705,7 +740,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
 
     free(fingerprint_b64);
 
-    infof(data, "SHA256 checksum match!");
+    infof(data, "SHA256 checksum match");
   }
 
   if(pubkey_md5) {
@@ -713,7 +748,7 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
     const char *fingerprint = NULL;
 
     fingerprint = libssh2_hostkey_hash(sshc->ssh_session,
-        LIBSSH2_HOSTKEY_HASH_MD5);
+                                       LIBSSH2_HOSTKEY_HASH_MD5);
 
     if(fingerprint) {
       /* The fingerprint points to static storage (!), don't free() it. */
@@ -725,31 +760,52 @@ static CURLcode ssh_check_fingerprint(struct Curl_easy *data)
       infof(data, "SSH MD5 fingerprint: %s", md5buffer);
     }
 
-    /* Before we authenticate we check the hostkey's MD5 fingerprint
-     * against a known fingerprint, if available.
-     */
-    if(pubkey_md5 && strlen(pubkey_md5) == 32) {
-      if(!fingerprint || !strcasecompare(md5buffer, pubkey_md5)) {
-        if(fingerprint) {
-          failf(data,
+    /* This does NOT verify the length of 'pubkey_md5' separately, which will
+       make the comparison below fail unless it is exactly 32 characters */
+    if(!fingerprint || !strcasecompare(md5buffer, pubkey_md5)) {
+      if(fingerprint) {
+        failf(data,
               "Denied establishing ssh session: mismatch md5 fingerprint. "
               "Remote %s is not equal to %s", md5buffer, pubkey_md5);
-        }
-        else {
-          failf(data,
+      }
+      else {
+        failf(data,
               "Denied establishing ssh session: md5 fingerprint "
               "not available");
-        }
-        state(data, SSH_SESSION_FREE);
-        sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
-        return sshc->actualcode;
       }
-      infof(data, "MD5 checksum match!");
+      state(data, SSH_SESSION_FREE);
+      sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
+      return sshc->actualcode;
     }
+    infof(data, "MD5 checksum match");
   }
 
   if(!pubkey_md5 && !pubkey_sha256) {
-    return ssh_knownhost(data);
+    if(data->set.ssh_hostkeyfunc) {
+      size_t keylen = 0;
+      int sshkeytype = 0;
+      int rc = 0;
+      /* we handle the process to the callback*/
+      const char *remotekey = libssh2_session_hostkey(sshc->ssh_session,
+                                                      &keylen, &sshkeytype);
+      if(remotekey) {
+        int keytype = convert_ssh2_keytype(sshkeytype);
+        Curl_set_in_callback(data, true);
+        rc = data->set.ssh_hostkeyfunc(data->set.ssh_hostkeyfunc_userp,
+                                       keytype, remotekey, keylen);
+        Curl_set_in_callback(data, false);
+        if(rc!= CURLKHMATCH_OK) {
+          state(data, SSH_SESSION_FREE);
+        }
+      }
+      else {
+        state(data, SSH_SESSION_FREE);
+      }
+      return CURLE_OK;
+    }
+    else {
+      return ssh_knownhost(data);
+    }
   }
   else {
     /* as we already matched, we skip the check for known hosts */
@@ -932,7 +988,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
       /* FALLTHROUGH */
 
     case SSH_S_STARTUP:
-      rc = libssh2_session_startup(sshc->ssh_session, (int)sock);
+      rc = session_startup(sshc->ssh_session, sock);
       if(rc == LIBSSH2_ERROR_EAGAIN) {
         break;
       }
@@ -1468,7 +1524,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
          */
         cp = strchr(cmd, ' ');
         if(!cp) {
-          failf(data, "Syntax error command '%s'. Missing parameter!",
+          failf(data, "Syntax error command '%s', missing parameter",
                 cmd);
           state(data, SSH_SFTP_CLOSE);
           sshc->nextstate = SSH_NO_STATE;
@@ -1699,32 +1755,35 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
           break;
         }
       }
-      else if(strncasecompare(cmd, "atime", 5)) {
+      else if(strncasecompare(cmd, "atime", 5) ||
+              strncasecompare(cmd, "mtime", 5)) {
         time_t date = Curl_getdate_capped(sshc->quote_path1);
+        bool fail = FALSE;
+
         if(date == -1) {
-          Curl_safefree(sshc->quote_path1);
-          Curl_safefree(sshc->quote_path2);
-          failf(data, "Syntax error: incorrect access date format");
-          state(data, SSH_SFTP_CLOSE);
-          sshc->nextstate = SSH_NO_STATE;
-          sshc->actualcode = CURLE_QUOTE_ERROR;
-          break;
+          failf(data, "incorrect date format for %.*s", 5, cmd);
+          fail = TRUE;
         }
-        sshp->quote_attrs.atime = (unsigned long)date;
-        sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
-      }
-      else if(strncasecompare(cmd, "mtime", 5)) {
-        time_t date = Curl_getdate_capped(sshc->quote_path1);
-        if(date == -1) {
+#if SIZEOF_TIME_T > SIZEOF_LONG
+        if(date > 0xffffffff) {
+          /* if 'long' can't old >32bit, this date cannot be sent */
+          failf(data, "date overflow");
+          fail = TRUE;
+        }
+#endif
+        if(fail) {
           Curl_safefree(sshc->quote_path1);
           Curl_safefree(sshc->quote_path2);
-          failf(data, "Syntax error: incorrect modification date format");
           state(data, SSH_SFTP_CLOSE);
           sshc->nextstate = SSH_NO_STATE;
           sshc->actualcode = CURLE_QUOTE_ERROR;
           break;
         }
-        sshp->quote_attrs.mtime = (unsigned long)date;
+        if(strncasecompare(cmd, "atime", 5))
+          sshp->quote_attrs.atime = (unsigned long)date;
+        else /* mtime */
+          sshp->quote_attrs.mtime = (unsigned long)date;
+
         sshp->quote_attrs.flags = LIBSSH2_SFTP_ATTR_ACMODTIME;
       }
 
@@ -2279,7 +2338,8 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
                ((sshp->readdir_attrs.permissions & LIBSSH2_SFTP_S_IFMT) ==
                 LIBSSH2_SFTP_S_IFLNK)) {
               Curl_dyn_init(&sshp->readdir_link, PATH_MAX);
-              result = Curl_dyn_add(&sshp->readdir_link, sshp->path);
+              result = Curl_dyn_addf(&sshp->readdir_link, "%s%s", sshp->path,
+                                     sshp->readdir_filename);
               state(data, SSH_SFTP_READDIR_LINK);
               if(!result)
                 break;
@@ -2446,7 +2506,7 @@ static CURLcode ssh_statemach_act(struct Curl_easy *data, bool *block)
           from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
           if(from_t == CURL_OFFT_FLOW)
             return CURLE_RANGE_ERROR;
-          while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+          while(*ptr && (ISBLANK(*ptr) || (*ptr == '-')))
             ptr++;
           to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
           if(to_t == CURL_OFFT_FLOW)
@@ -3227,7 +3287,7 @@ static CURLcode ssh_connect(struct Curl_easy *data, bool *done)
     sshrecv.recvptr = ssh_tls_recv;
     sshsend.sendptr = ssh_tls_send;
 
-    infof(data, "Uses HTTPS proxy!");
+    infof(data, "Uses HTTPS proxy");
     /*
       Setup libssh2 callbacks to make it read/write TLS from the socket.
 
index 7972081ec610f361bf2aa558432f8579aba7dff5..13bb8aa2d61fc76c40aaa12b19fa9d1a3cadd42b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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(HAVE_LIBSSH2_H)
+#if defined(USE_LIBSSH2)
 #include <libssh2.h>
 #include <libssh2_sftp.h>
-#elif defined(HAVE_LIBSSH_LIBSSH_H)
+#elif defined(USE_LIBSSH)
 #include <libssh/libssh.h>
 #include <libssh/sftp.h>
 #elif defined(USE_WOLFSSH)
@@ -131,8 +133,8 @@ struct ssh_conn {
 
   /* common */
   const char *passphrase;     /* pass-phrase to use */
-  char *rsa_pub;              /* path name */
-  char *rsa;                  /* path name */
+  char *rsa_pub;              /* strdup'ed public key file */
+  char *rsa;                  /* strdup'ed private key file */
   bool authed;                /* the connection has been authenticated fine */
   bool acceptfail;            /* used by the SFTP_QUOTE (continue if
                                  quote command fails) */
@@ -209,11 +211,7 @@ struct ssh_conn {
 #endif /* USE_LIBSSH */
 };
 
-#if defined(USE_LIBSSH)
-
-#define CURL_LIBSSH_VERSION ssh_version(0)
-
-#elif defined(USE_LIBSSH2)
+#if defined(USE_LIBSSH2)
 
 /* Feature detection based on version numbers to better work with
    non-configure platforms */
index 5b4cde91b01fd7b62619e7fd14dcf701629fb677..c2f85f3fe5f27a98747067c395b668f69200e71e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -469,7 +471,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
         state(data, SSH_STOP);
         return CURLE_SSH;
       }
-      infof(data, "wolfssh connected!");
+      infof(data, "wolfssh connected");
       state(data, SSH_STOP);
       break;
     case SSH_STOP:
@@ -490,7 +492,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
         return CURLE_OK;
       }
       else if(rc == WS_SUCCESS) {
-        infof(data, "wolfssh SFTP connected!");
+        infof(data, "wolfssh SFTP connected");
         state(data, SSH_SFTP_REALPATH);
       }
       else {
@@ -519,7 +521,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
         else {
           memcpy(sshc->homedir, name->fName, name->fSz);
           sshc->homedir[name->fSz] = 0;
-          infof(data, "wolfssh SFTP realpath succeeded!");
+          infof(data, "wolfssh SFTP realpath succeeded");
         }
         wolfSSH_SFTPNAME_list_free(name);
         state(data, SSH_STOP);
@@ -617,7 +619,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
         return CURLE_OK;
       }
       else if(rc == WS_SUCCESS) {
-        infof(data, "wolfssh SFTP open succeeded!");
+        infof(data, "wolfssh SFTP open succeeded");
       }
       else {
         failf(data, "wolfssh SFTP upload open failed: %d", rc);
@@ -728,7 +730,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
         return CURLE_OK;
       }
       else if(rc == WS_SUCCESS) {
-        infof(data, "wolfssh SFTP open succeeded!");
+        infof(data, "wolfssh SFTP open succeeded");
         state(data, SSH_SFTP_DOWNLOAD_STAT);
         return CURLE_OK;
       }
@@ -754,7 +756,7 @@ static CURLcode wssh_statemach_act(struct Curl_easy *data, bool *block)
         return CURLE_OK;
       }
       else if(rc == WS_SUCCESS) {
-        infof(data, "wolfssh STAT succeeded!");
+        infof(data, "wolfssh STAT succeeded");
       }
       else {
         failf(data, "wolfssh SFTP open failed: %d", rc);
index 9b772d064d75848f8f56e0821d3d33e61eb5e92b..1221ce8c84d4359c01fdfe8050d02810fc07cbd0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Michael Forney, <mforney@mforney.org>
+ * Copyright (C) 2019 - 2022, Michael Forney, <mforney@mforney.org>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
 
 #include "multiif.h"
 #include "curl_printf.h"
 #include "curl_memory.h"
+#include "strcase.h"
 
 struct x509_context {
   const br_x509_class *vtable;
   br_x509_minimal_context minimal;
+  br_x509_decoder_context decoder;
   bool verifyhost;
   bool verifypeer;
+  int cert_num;
 };
 
 struct ssl_backend_data {
@@ -71,9 +76,9 @@ struct cafile_parser {
 #define CAFILE_SOURCE_PATH 1
 #define CAFILE_SOURCE_BLOB 2
 struct cafile_source {
-  const int type;
-  const char * const data;
-  const size_t len;
+  int type;
+  const char *data;
+  size_t len;
 };
 
 static void append_dn(void *ctx, const void *buf, size_t len)
@@ -159,6 +164,18 @@ static CURLcode load_cafile(struct cafile_source *source,
         if(strcmp(name, "CERTIFICATE") && strcmp(name, "X509 CERTIFICATE"))
           break;
         br_x509_decoder_init(&ca.xc, append_dn, &ca);
+        ca.in_cert = TRUE;
+        ca.dn_len = 0;
+        break;
+      case BR_PEM_END_OBJ:
+        if(!ca.in_cert)
+          break;
+        ca.in_cert = FALSE;
+        if(br_x509_decoder_last_error(&ca.xc)) {
+          ca.err = CURLE_SSL_CACERT_BADFILE;
+          goto fail;
+        }
+        /* add trust anchor */
         if(ca.anchors_len == SIZE_MAX / sizeof(ca.anchors[0])) {
           ca.err = CURLE_OUT_OF_MEMORY;
           goto fail;
@@ -172,19 +189,8 @@ static CURLcode load_cafile(struct cafile_source *source,
         }
         ca.anchors = new_anchors;
         ca.anchors_len = new_anchors_len;
-        ca.in_cert = TRUE;
-        ca.dn_len = 0;
         ta = &ca.anchors[ca.anchors_len - 1];
         ta->dn.data = NULL;
-        break;
-      case BR_PEM_END_OBJ:
-        if(!ca.in_cert)
-          break;
-        ca.in_cert = FALSE;
-        if(br_x509_decoder_last_error(&ca.xc)) {
-          ca.err = CURLE_SSL_CACERT_BADFILE;
-          goto fail;
-        }
         ta->flags = 0;
         if(br_x509_decoder_isCA(&ca.xc))
           ta->flags |= BR_X509_TA_CA;
@@ -238,6 +244,8 @@ static CURLcode load_cafile(struct cafile_source *source,
   } while(source->type != CAFILE_SOURCE_BLOB);
   if(fp && ferror(fp))
     ca.err = CURLE_READ_ERROR;
+  else if(ca.in_cert)
+    ca.err = CURLE_SSL_CACERT_BADFILE;
 
 fail:
   if(fp)
@@ -260,6 +268,11 @@ static void x509_start_chain(const br_x509_class **ctx,
 {
   struct x509_context *x509 = (struct x509_context *)ctx;
 
+  if(!x509->verifypeer) {
+    x509->cert_num = 0;
+    return;
+  }
+
   if(!x509->verifyhost)
     server_name = NULL;
   x509->minimal.vtable->start_chain(&x509->minimal.vtable, server_name);
@@ -269,6 +282,13 @@ static void x509_start_cert(const br_x509_class **ctx, uint32_t length)
 {
   struct x509_context *x509 = (struct x509_context *)ctx;
 
+  if(!x509->verifypeer) {
+    /* Only decode the first cert in the chain to obtain the public key */
+    if(x509->cert_num == 0)
+      br_x509_decoder_init(&x509->decoder, NULL, NULL);
+    return;
+  }
+
   x509->minimal.vtable->start_cert(&x509->minimal.vtable, length);
 }
 
@@ -277,6 +297,12 @@ static void x509_append(const br_x509_class **ctx, const unsigned char *buf,
 {
   struct x509_context *x509 = (struct x509_context *)ctx;
 
+  if(!x509->verifypeer) {
+    if(x509->cert_num == 0)
+      br_x509_decoder_push(&x509->decoder, buf, len);
+    return;
+  }
+
   x509->minimal.vtable->append(&x509->minimal.vtable, buf, len);
 }
 
@@ -284,21 +310,23 @@ static void x509_end_cert(const br_x509_class **ctx)
 {
   struct x509_context *x509 = (struct x509_context *)ctx;
 
+  if(!x509->verifypeer) {
+    x509->cert_num++;
+    return;
+  }
+
   x509->minimal.vtable->end_cert(&x509->minimal.vtable);
 }
 
 static unsigned x509_end_chain(const br_x509_class **ctx)
 {
   struct x509_context *x509 = (struct x509_context *)ctx;
-  unsigned err;
 
-  err = x509->minimal.vtable->end_chain(&x509->minimal.vtable);
-  if(err && !x509->verifypeer) {
-    /* ignore any X.509 errors */
-    err = BR_ERR_OK;
+  if(!x509->verifypeer) {
+    return br_x509_decoder_last_error(&x509->decoder);
   }
 
-  return err;
+  return x509->minimal.vtable->end_chain(&x509->minimal.vtable);
 }
 
 static const br_x509_pkey *x509_get_pkey(const br_x509_class *const *ctx,
@@ -306,6 +334,15 @@ static const br_x509_pkey *x509_get_pkey(const br_x509_class *const *ctx,
 {
   struct x509_context *x509 = (struct x509_context *)ctx;
 
+  if(!x509->verifypeer) {
+    /* Nothing in the chain is verified, just return the public key of the
+       first certificate and allow its usage for both TLS_RSA_* and
+       TLS_ECDHE_* */
+    if(usages)
+      *usages = BR_KEYTYPE_KEYX | BR_KEYTYPE_SIGN;
+    return br_x509_decoder_get_pkey(&x509->decoder);
+  }
+
   return x509->minimal.vtable->get_pkey(&x509->minimal.vtable, usages);
 }
 
@@ -319,6 +356,216 @@ static const br_x509_class x509_vtable = {
   x509_get_pkey
 };
 
+struct st_cipher {
+  const char *name; /* Cipher suite IANA name. It starts with "TLS_" prefix */
+  const char *alias_name; /* Alias name is the same as OpenSSL cipher name */
+  uint16_t num; /* BearSSL cipher suite */
+};
+
+/* Macro to initialize st_cipher data structure */
+#define CIPHER_DEF(num, alias) { #num, alias, BR_##num }
+
+static const struct st_cipher ciphertable[] = {
+  /* RFC 2246 TLS 1.0 */
+  CIPHER_DEF(TLS_RSA_WITH_3DES_EDE_CBC_SHA,                        /* 0x000A */
+             "DES-CBC3-SHA"),
+
+  /* RFC 3268 TLS 1.0 AES */
+  CIPHER_DEF(TLS_RSA_WITH_AES_128_CBC_SHA,                         /* 0x002F */
+             "AES128-SHA"),
+  CIPHER_DEF(TLS_RSA_WITH_AES_256_CBC_SHA,                         /* 0x0035 */
+             "AES256-SHA"),
+
+  /* RFC 5246 TLS 1.2 */
+  CIPHER_DEF(TLS_RSA_WITH_AES_128_CBC_SHA256,                      /* 0x003C */
+             "AES128-SHA256"),
+  CIPHER_DEF(TLS_RSA_WITH_AES_256_CBC_SHA256,                      /* 0x003D */
+             "AES256-SHA256"),
+
+  /* RFC 5288 TLS 1.2 AES GCM */
+  CIPHER_DEF(TLS_RSA_WITH_AES_128_GCM_SHA256,                      /* 0x009C */
+             "AES128-GCM-SHA256"),
+  CIPHER_DEF(TLS_RSA_WITH_AES_256_GCM_SHA384,                      /* 0x009D */
+             "AES256-GCM-SHA384"),
+
+  /* RFC 4492 TLS 1.0 ECC */
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,                 /* 0xC003 */
+             "ECDH-ECDSA-DES-CBC3-SHA"),
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,                  /* 0xC004 */
+             "ECDH-ECDSA-AES128-SHA"),
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA,                  /* 0xC005 */
+             "ECDH-ECDSA-AES256-SHA"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,                /* 0xC008 */
+             "ECDHE-ECDSA-DES-CBC3-SHA"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,                 /* 0xC009 */
+             "ECDHE-ECDSA-AES128-SHA"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,                 /* 0xC00A */
+             "ECDHE-ECDSA-AES256-SHA"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA,                   /* 0xC00D */
+             "ECDH-RSA-DES-CBC3-SHA"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,                    /* 0xC00E */
+             "ECDH-RSA-AES128-SHA"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,                    /* 0xC00F */
+             "ECDH-RSA-AES256-SHA"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA,                  /* 0xC012 */
+             "ECDHE-RSA-DES-CBC3-SHA"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,                   /* 0xC013 */
+             "ECDHE-RSA-AES128-SHA"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,                   /* 0xC014 */
+             "ECDHE-RSA-AES256-SHA"),
+
+  /* RFC 5289 TLS 1.2 ECC HMAC SHA256/384 */
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,              /* 0xC023 */
+             "ECDHE-ECDSA-AES128-SHA256"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,              /* 0xC024 */
+             "ECDHE-ECDSA-AES256-SHA384"),
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,               /* 0xC025 */
+             "ECDH-ECDSA-AES128-SHA256"),
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,               /* 0xC026 */
+             "ECDH-ECDSA-AES256-SHA384"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,                /* 0xC027 */
+             "ECDHE-RSA-AES128-SHA256"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,                /* 0xC028 */
+             "ECDHE-RSA-AES256-SHA384"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,                 /* 0xC029 */
+             "ECDH-RSA-AES128-SHA256"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,                 /* 0xC02A */
+             "ECDH-RSA-AES256-SHA384"),
+
+  /* RFC 5289 TLS 1.2 GCM */
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,              /* 0xC02B */
+             "ECDHE-ECDSA-AES128-GCM-SHA256"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,              /* 0xC02C */
+             "ECDHE-ECDSA-AES256-GCM-SHA384"),
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,               /* 0xC02D */
+             "ECDH-ECDSA-AES128-GCM-SHA256"),
+  CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,               /* 0xC02E */
+             "ECDH-ECDSA-AES256-GCM-SHA384"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,                /* 0xC02F */
+             "ECDHE-RSA-AES128-GCM-SHA256"),
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,                /* 0xC030 */
+             "ECDHE-RSA-AES256-GCM-SHA384"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256,                 /* 0xC031 */
+             "ECDH-RSA-AES128-GCM-SHA256"),
+  CIPHER_DEF(TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384,                 /* 0xC032 */
+             "ECDH-RSA-AES256-GCM-SHA384"),
+#ifdef BR_TLS_RSA_WITH_AES_128_CCM
+
+  /* RFC 6655 TLS 1.2 CCM
+     Supported since BearSSL 0.6 */
+  CIPHER_DEF(TLS_RSA_WITH_AES_128_CCM,                             /* 0xC09C */
+             "AES128-CCM"),
+  CIPHER_DEF(TLS_RSA_WITH_AES_256_CCM,                             /* 0xC09D */
+             "AES256-CCM"),
+  CIPHER_DEF(TLS_RSA_WITH_AES_128_CCM_8,                           /* 0xC0A0 */
+             "AES128-CCM8"),
+  CIPHER_DEF(TLS_RSA_WITH_AES_256_CCM_8,                           /* 0xC0A1 */
+             "AES256-CCM8"),
+
+  /* RFC 7251 TLS 1.2 ECC CCM
+     Supported since BearSSL 0.6 */
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CCM,                     /* 0xC0AC */
+             "ECDHE-ECDSA-AES128-CCM"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CCM,                     /* 0xC0AD */
+             "ECDHE-ECDSA-AES256-CCM"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,                   /* 0xC0AE */
+             "ECDHE-ECDSA-AES128-CCM8"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8,                   /* 0xC0AF */
+             "ECDHE-ECDSA-AES256-CCM8"),
+#endif
+
+  /* RFC 7905 TLS 1.2 ChaCha20-Poly1305
+     Supported since BearSSL 0.2 */
+  CIPHER_DEF(TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,          /* 0xCCA8 */
+             "ECDHE-RSA-CHACHA20-POLY1305"),
+  CIPHER_DEF(TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,        /* 0xCCA9 */
+             "ECDHE-ECDSA-CHACHA20-POLY1305"),
+};
+
+#define NUM_OF_CIPHERS (sizeof(ciphertable) / sizeof(ciphertable[0]))
+#define CIPHER_NAME_BUF_LEN 64
+
+static bool is_separator(char c)
+{
+  /* Return whether character is a cipher list separator. */
+  switch(c) {
+    case ' ':
+    case '\t':
+    case ':':
+    case ',':
+    case ';':
+      return true;
+  }
+  return false;
+}
+
+static CURLcode bearssl_set_selected_ciphers(struct Curl_easy *data,
+                                             br_ssl_engine_context *ssl_eng,
+                                             const char *ciphers)
+{
+  uint16_t selected_ciphers[NUM_OF_CIPHERS];
+  size_t selected_count = 0;
+  char cipher_name[CIPHER_NAME_BUF_LEN];
+  const char *cipher_start = ciphers;
+  const char *cipher_end;
+  size_t i, j;
+
+  if(!cipher_start)
+    return CURLE_SSL_CIPHER;
+
+  while(true) {
+    /* Extract the next cipher name from the ciphers string */
+    while(is_separator(*cipher_start))
+      ++cipher_start;
+    if(*cipher_start == '\0')
+      break;
+    cipher_end = cipher_start;
+    while(*cipher_end != '\0' && !is_separator(*cipher_end))
+      ++cipher_end;
+    j = cipher_end - cipher_start < CIPHER_NAME_BUF_LEN - 1 ?
+        cipher_end - cipher_start : CIPHER_NAME_BUF_LEN - 1;
+    strncpy(cipher_name, cipher_start, j);
+    cipher_name[j] = '\0';
+    cipher_start = cipher_end;
+
+    /* Lookup the cipher name in the table of available ciphers. If the cipher
+       name starts with "TLS_" we do the lookup by IANA name. Otherwise, we try
+       to match cipher name by an (OpenSSL) alias. */
+    if(strncasecompare(cipher_name, "TLS_", 4)) {
+      for(i = 0; i < NUM_OF_CIPHERS &&
+                 !strcasecompare(cipher_name, ciphertable[i].name); ++i);
+    }
+    else {
+      for(i = 0; i < NUM_OF_CIPHERS &&
+                 !strcasecompare(cipher_name, ciphertable[i].alias_name); ++i);
+    }
+    if(i == NUM_OF_CIPHERS) {
+      infof(data, "BearSSL: unknown cipher in list: %s", cipher_name);
+      continue;
+    }
+
+    /* No duplicates allowed */
+    for(j = 0; j < selected_count &&
+               selected_ciphers[j] != ciphertable[i].num; j++);
+    if(j < selected_count) {
+      infof(data, "BearSSL: duplicate cipher in list: %s", cipher_name);
+      continue;
+    }
+
+    DEBUGASSERT(selected_count < NUM_OF_CIPHERS);
+    selected_ciphers[selected_count] = ciphertable[i].num;
+    ++selected_count;
+  }
+
+  if(selected_count == 0) {
+    failf(data, "BearSSL: no supported cipher in list");
+    return CURLE_SSL_CIPHER;
+  }
+
+  br_ssl_engine_set_suites(ssl_eng, selected_ciphers, selected_count);
+  return CURLE_OK;
+}
+
 static CURLcode bearssl_connect_step1(struct Curl_easy *data,
                                       struct connectdata *conn, int sockindex)
 {
@@ -339,6 +586,8 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
   struct in_addr addr;
 #endif
 
+  DEBUGASSERT(backend);
+
   switch(SSL_CONN_CONFIG(version)) {
   case CURL_SSLVERSION_SSLv2:
     failf(data, "BearSSL does not support SSLv2");
@@ -369,11 +618,11 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
   }
 
   if(ca_info_blob) {
-    struct cafile_source source = {
-      CAFILE_SOURCE_BLOB,
-      ca_info_blob->data,
-      ca_info_blob->len,
-    };
+    struct cafile_source source;
+    source.type = CAFILE_SOURCE_BLOB;
+    source.data = ca_info_blob->data;
+    source.len = ca_info_blob->len;
+
     ret = load_cafile(&source, &backend->anchors, &backend->anchors_len);
     if(ret != CURLE_OK) {
       if(verifypeer) {
@@ -386,11 +635,11 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
   }
 
   if(ssl_cafile) {
-    struct cafile_source source = {
-      CAFILE_SOURCE_PATH,
-      ssl_cafile,
-      0,
-    };
+    struct cafile_source source;
+    source.type = CAFILE_SOURCE_PATH;
+    source.data = ssl_cafile;
+    source.len = 0;
+
     ret = load_cafile(&source, &backend->anchors, &backend->anchors_len);
     if(ret != CURLE_OK) {
       if(verifypeer) {
@@ -410,6 +659,15 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
   br_ssl_engine_set_buffer(&backend->ctx.eng, backend->buf,
                            sizeof(backend->buf), 1);
 
+  if(SSL_CONN_CONFIG(cipher_list)) {
+    /* Override the ciphers as specified. For the default cipher list see the
+       BearSSL source code of br_ssl_client_init_full() */
+    ret = bearssl_set_selected_ciphers(data, &backend->ctx.eng,
+                                       SSL_CONN_CONFIG(cipher_list));
+    if(ret)
+      return ret;
+  }
+
   /* initialize X.509 context */
   backend->x509.vtable = &x509_vtable;
   backend->x509.verifypeer = verifypeer;
@@ -442,12 +700,12 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
 #endif
       ) {
       backend->protocols[cur++] = ALPN_H2;
-      infof(data, "ALPN, offering %s", ALPN_H2);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
     }
 #endif
 
     backend->protocols[cur++] = ALPN_HTTP_1_1;
-    infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+    infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
 
     br_ssl_engine_set_protocol_names(&backend->ctx.eng,
                                      backend->protocols, cur);
@@ -465,8 +723,28 @@ static CURLcode bearssl_connect_step1(struct Curl_easy *data,
     }
     hostname = NULL;
   }
+  else {
+    char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+    if(!snihost) {
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+    hostname = snihost;
+  }
 
-  if(!br_ssl_client_reset(&backend->ctx, hostname, 0))
+  /* give application a chance to interfere with SSL set up. */
+  if(data->set.ssl.fsslctx) {
+    Curl_set_in_callback(data, true);
+    ret = (*data->set.ssl.fsslctx)(data, &backend->ctx,
+                                   data->set.ssl.fsslctxp);
+    Curl_set_in_callback(data, false);
+    if(ret) {
+      failf(data, "BearSSL: error signaled by ssl ctx callback");
+      return ret;
+    }
+  }
+
+  if(!br_ssl_client_reset(&backend->ctx, hostname, 1))
     return CURLE_FAILED_INIT;
   backend->active = TRUE;
 
@@ -488,6 +766,8 @@ static CURLcode bearssl_run_until(struct Curl_easy *data,
   ssize_t ret;
   int err;
 
+  DEBUGASSERT(backend);
+
   for(;;) {
     state = br_ssl_engine_current_state(&backend->ctx.eng);
     if(state & BR_SSL_CLOSED) {
@@ -560,6 +840,8 @@ static CURLcode bearssl_connect_step2(struct Curl_easy *data,
   struct ssl_backend_data *backend = connssl->backend;
   CURLcode ret;
 
+  DEBUGASSERT(backend);
+
   ret = bearssl_run_until(data, conn, sockindex,
                           BR_SSL_SENDAPP | BR_SSL_RECVAPP);
   if(ret == CURLE_AGAIN)
@@ -582,28 +864,29 @@ static CURLcode bearssl_connect_step3(struct Curl_easy *data,
   CURLcode ret;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   if(conn->bits.tls_enable_alpn) {
     const char *protocol;
 
     protocol = br_ssl_engine_get_selected_protocol(&backend->ctx.eng);
     if(protocol) {
-      infof(data, "ALPN, server accepted to use %s", protocol);
+      infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, protocol);
 
 #ifdef USE_HTTP2
       if(!strcmp(protocol, ALPN_H2))
-        conn->negnpn = CURL_HTTP_VERSION_2;
+        conn->alpn = CURL_HTTP_VERSION_2;
       else
 #endif
       if(!strcmp(protocol, ALPN_HTTP_1_1))
-        conn->negnpn = CURL_HTTP_VERSION_1_1;
+        conn->alpn = CURL_HTTP_VERSION_1_1;
       else
         infof(data, "ALPN, unrecognized protocol %s", protocol);
-      Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+      Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
                           BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
     }
     else
-      infof(data, "ALPN, server did not agree to a protocol");
+      infof(data, VTLS_INFOF_NO_ALPN);
   }
 
   if(SSL_SET_OPTION(primary.sessionid)) {
@@ -647,6 +930,8 @@ static ssize_t bearssl_send(struct Curl_easy *data, int sockindex,
   unsigned char *app;
   size_t applen;
 
+  DEBUGASSERT(backend);
+
   for(;;) {
     *err = bearssl_run_until(data, conn, sockindex, BR_SSL_SENDAPP);
     if (*err != CURLE_OK)
@@ -680,6 +965,8 @@ static ssize_t bearssl_recv(struct Curl_easy *data, int sockindex,
   unsigned char *app;
   size_t applen;
 
+  DEBUGASSERT(backend);
+
   *err = bearssl_run_until(data, conn, sockindex, BR_SSL_RECVAPP);
   if(*err != CURLE_OK)
     return -1;
@@ -805,6 +1092,7 @@ static bool bearssl_data_pending(const struct connectdata *conn,
 {
   const struct ssl_connect_data *connssl = &conn->ssl[connindex];
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   return br_ssl_engine_current_state(&backend->ctx.eng) & BR_SSL_RECVAPP;
 }
 
@@ -854,6 +1142,7 @@ static void *bearssl_get_internals(struct ssl_connect_data *connssl,
                                    CURLINFO info UNUSED_PARAM)
 {
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   return &backend->ctx;
 }
 
@@ -864,6 +1153,8 @@ static void bearssl_close(struct Curl_easy *data,
   struct ssl_backend_data *backend = connssl->backend;
   size_t i;
 
+  DEBUGASSERT(backend);
+
   if(backend->active) {
     br_ssl_engine_close(&backend->ctx.eng);
     (void)bearssl_run_until(data, conn, sockindex, BR_SSL_CLOSED);
@@ -893,7 +1184,7 @@ static CURLcode bearssl_sha256sum(const unsigned char *input,
 
 const struct Curl_ssl Curl_ssl_bearssl = {
   { CURLSSLBACKEND_BEARSSL, "bearssl" }, /* info */
-  SSLSUPP_CAINFO_BLOB,
+  SSLSUPP_CAINFO_BLOB | SSLSUPP_SSL_CTX,
   sizeof(struct ssl_backend_data),
 
   Curl_none_init,                  /* init */
index d72b7d0e26ab631706a61881150cbca097b46c17..5125359961bde34129a9557c8d297d51abbca549 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2020, Michael Forney, <mforney@mforney.org>
+ * Copyright (C) 2019 - 2022, Michael Forney, <mforney@mforney.org>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -20,6 +20,8 @@
  * 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"
index e451f6aebebbf22e4f95a6ac981ed51ab66b3b51..4ee4edea6c49e2d40e5e8bb6472786fce8db6736 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -28,6 +30,7 @@
 #include <qsoasync.h>
 #undef HAVE_SOCKETPAIR /* because the native one isn't good enough */
 #include "socketpair.h"
+#include "strerror.h"
 
 /* Some symbols are undefined/unsupported on OS400 versions < V7R1. */
 #ifndef GSK_SSL_EXTN_SERVERNAME_REQUEST
@@ -73,6 +76,7 @@
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 #include "strcase.h"
+#include "timediff.h"
 #include "x509asn1.h"
 #include "curl_printf.h"
 
@@ -247,10 +251,10 @@ static CURLcode set_enum(struct Curl_easy *data, gsk_handle h,
 
 
 static CURLcode set_buffer(struct Curl_easy *data, gsk_handle h,
-                        GSK_BUF_ID id, const char *buffer, bool unsupported_ok)
+                        GSK_BUF_ID id, const char *buf, bool unsupported_ok)
 {
   char buffer[STRERROR_LEN];
-  int rc = gsk_attribute_set_buffer(h, id, buffer, 0);
+  int rc = gsk_attribute_set_buffer(h, id, buf, 0);
 
   switch(rc) {
   case GSK_OK:
@@ -291,27 +295,6 @@ static CURLcode set_numeric(struct Curl_easy *data,
 }
 
 
-static CURLcode set_callback(struct Curl_easy *data,
-                             gsk_handle h, GSK_CALLBACK_ID id, void *info)
-{
-  char buffer[STRERROR_LEN];
-  int rc = gsk_attribute_set_callback(h, id, info);
-
-  switch(rc) {
-  case GSK_OK:
-    return CURLE_OK;
-  case GSK_ERROR_IO:
-    failf(data, "gsk_attribute_set_callback() I/O error: %s",
-          Curl_strerror(errno, buffer, sizeof(buffer)));
-    break;
-  default:
-    failf(data, "gsk_attribute_set_callback(): %s", gsk_strerror(rc));
-    break;
-  }
-  return CURLE_SSL_CONNECT_ERROR;
-}
-
-
 static CURLcode set_ciphers(struct Curl_easy *data,
                             gsk_handle h, unsigned int *protoflags)
 {
@@ -448,8 +431,7 @@ static CURLcode set_ciphers(struct Curl_easy *data,
 
 static int gskit_init(void)
 {
-  /* No initialisation needed. */
-
+  /* No initialization needed. */
   return 1;
 }
 
@@ -513,6 +495,8 @@ static void cancel_async_handshake(struct connectdata *conn, int sockindex)
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   Qso_OverlappedIO_t cstat;
 
+  DEBUGASSERT(BACKEND);
+
   if(QsoCancelOperation(conn->sock[sockindex], 0) > 0)
     QsoWaitForIOCompletion(BACKEND->iocport, &cstat, (struct timeval *) NULL);
 }
@@ -520,6 +504,7 @@ static void cancel_async_handshake(struct connectdata *conn, int sockindex)
 
 static void close_async_handshake(struct ssl_connect_data *connssl)
 {
+  DEBUGASSERT(BACKEND);
   QsoDestroyIOCompletionPort(BACKEND->iocport);
   BACKEND->iocport = -1;
 }
@@ -530,36 +515,36 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
 #ifndef CURL_DISABLE_PROXY
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_connect_data *connproxyssl = &conn->proxy_ssl[sockindex];
-  fd_set fds_read;
-  fd_set fds_write;
+  struct pollfd fds[2];
   int n;
   int m;
   int i;
   int ret = 0;
   char buf[CURL_MAX_WRITE_SIZE];
 
+  DEBUGASSERT(BACKEND);
+  DEBUGASSERT(connproxyssl->backend);
+
   if(!connssl->use || !connproxyssl->use)
     return 0;   /* No SSL over SSL: OK. */
 
-  FD_ZERO(&fds_read);
-  FD_ZERO(&fds_write);
-  n = -1;
+  n = 1;
+  fds[0].fd = BACKEND->remotefd;
+  fds[1].fd = conn->sock[sockindex];
+
   if(directions & SOS_READ) {
-    FD_SET(BACKEND->remotefd, &fds_write);
-    n = BACKEND->remotefd;
+    fds[0].events |= POLLOUT;
   }
   if(directions & SOS_WRITE) {
-    FD_SET(BACKEND->remotefd, &fds_read);
-    n = BACKEND->remotefd;
-    FD_SET(conn->sock[sockindex], &fds_write);
-    if(n < conn->sock[sockindex])
-      n = conn->sock[sockindex];
+    n = 2;
+    fds[0].events |= POLLIN;
+    fds[1].events |= POLLOUT;
   }
-  i = Curl_select(n + 1, &fds_read, &fds_write, NULL, 0);
+  i = Curl_poll(fds, n, 0);
   if(i < 0)
     return -1;  /* Select error. */
 
-  if(FD_ISSET(BACKEND->remotefd, &fds_write)) {
+  if(fds[0].revents & POLLOUT) {
     /* Try getting data from HTTPS proxy and pipe it upstream. */
     n = 0;
     i = gsk_secure_soc_read(connproxyssl->backend->handle,
@@ -581,8 +566,7 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
     }
   }
 
-  if(FD_ISSET(BACKEND->remotefd, &fds_read) &&
-     FD_ISSET(conn->sock[sockindex], &fds_write)) {
+  if((fds[0].revents & POLLIN) && (fds[1].revents & POLLOUT)) {
     /* Pipe data to HTTPS proxy. */
     n = read(BACKEND->remotefd, buf, sizeof(buf));
     if(n < 0)
@@ -605,6 +589,7 @@ static int pipe_ssloverssl(struct connectdata *conn, int sockindex,
 static void close_one(struct ssl_connect_data *connssl, struct Curl_easy *data,
                       struct connectdata *conn, int sockindex)
 {
+  DEBUGASSERT(BACKEND);
   if(BACKEND->handle) {
     gskit_status(data, gsk_secure_soc_close(&BACKEND->handle),
               "gsk_secure_soc_close()", 0);
@@ -636,6 +621,8 @@ static ssize_t gskit_send(struct Curl_easy *data, int sockindex,
   CURLcode cc = CURLE_SEND_ERROR;
   int written;
 
+  DEBUGASSERT(BACKEND);
+
   if(pipe_ssloverssl(conn, sockindex, SOS_WRITE) >= 0) {
     cc = gskit_status(data,
                       gsk_secure_soc_write(BACKEND->handle,
@@ -661,6 +648,8 @@ static ssize_t gskit_recv(struct Curl_easy *data, int num, char *buf,
   int nread;
   CURLcode cc = CURLE_RECV_ERROR;
 
+  DEBUGASSERT(BACKEND);
+
   if(pipe_ssloverssl(conn, num, SOS_READ) >= 0) {
     int buffsize = buffersize > (size_t) INT_MAX? INT_MAX: (int) buffersize;
     cc = gskit_status(data, gsk_secure_soc_read(BACKEND->handle,
@@ -734,6 +723,7 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
 #endif
 
   /* Create SSL environment, start (preferably asynchronous) handshake. */
+  DEBUGASSERT(BACKEND);
 
   BACKEND->handle = (gsk_handle) NULL;
   BACKEND->iocport = -1;
@@ -787,13 +777,13 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
     BACKEND->localfd = sockpair[0];
     BACKEND->remotefd = sockpair[1];
     setsockopt(BACKEND->localfd, SOL_SOCKET, SO_RCVBUF,
-               (void *) sobufsize, sizeof(sobufsize));
+               (void *) &sobufsize, sizeof(sobufsize));
     setsockopt(BACKEND->remotefd, SOL_SOCKET, SO_RCVBUF,
-               (void *) sobufsize, sizeof(sobufsize));
+               (void *) &sobufsize, sizeof(sobufsize));
     setsockopt(BACKEND->localfd, SOL_SOCKET, SO_SNDBUF,
-               (void *) sobufsize, sizeof(sobufsize));
+               (void *) &sobufsize, sizeof(sobufsize));
     setsockopt(BACKEND->remotefd, SOL_SOCKET, SO_SNDBUF,
-               (void *) sobufsize, sizeof(sobufsize));
+               (void *) &sobufsize, sizeof(sobufsize));
     curlx_nonblock(BACKEND->localfd, TRUE);
     curlx_nonblock(BACKEND->remotefd, TRUE);
   }
@@ -830,8 +820,13 @@ static CURLcode gskit_connect_step1(struct Curl_easy *data,
 
   /* Process SNI. Ignore if not supported (on OS400 < V7R1). */
   if(sni) {
+    char *snihost = Curl_ssl_snihost(data, sni, NULL);
+    if(!snihost) {
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
     result = set_buffer(data, BACKEND->handle,
-                        GSK_SSL_EXTN_SERVERNAME_REQUEST, sni, TRUE);
+                        GSK_SSL_EXTN_SERVERNAME_REQUEST, snihost, TRUE);
     if(result == CURLE_UNSUPPORTED_PROTOCOL)
       result = CURLE_OK;
   }
@@ -958,14 +953,16 @@ static CURLcode gskit_connect_step2(struct Curl_easy *data,
   CURLcode result;
 
   /* Poll or wait for end of SSL asynchronous handshake. */
+  DEBUGASSERT(BACKEND);
 
   for(;;) {
     timediff_t timeout_ms = nonblocking? 0: Curl_timeleft(data, NULL, TRUE);
+    stmv.tv_sec = 0;
+    stmv.tv_usec = 0;
     if(timeout_ms < 0)
       timeout_ms = 0;
-    stmv.tv_sec = timeout_ms / 1000;
-    stmv.tv_usec = (timeout_ms - stmv.tv_sec * 1000) * 1000;
-    switch(QsoWaitForIOCompletion(BACKEND->iocport, &cstat, &stmv)) {
+    switch(QsoWaitForIOCompletion(BACKEND->iocport, &cstat,
+                                  curlx_mstotv(&stmv, timeout_ms))) {
     case 1:             /* Operation complete. */
       break;
     case -1:            /* An error occurred: handshake still in progress. */
@@ -1014,6 +1011,7 @@ static CURLcode gskit_connect_step3(struct Curl_easy *data,
   CURLcode result;
 
   /* SSL handshake done: gather certificate info and verify host. */
+  DEBUGASSERT(BACKEND);
 
   if(gskit_status(data, gsk_attribute_get_cert_info(BACKEND->handle,
                                                     GSK_PARTNER_CERT_INFO,
@@ -1070,15 +1068,16 @@ static CURLcode gskit_connect_step3(struct Curl_easy *data,
   /* Check pinned public key. */
   ptr = SSL_PINNED_PUB_KEY();
   if(!result && ptr) {
-    curl_X509certificate x509;
-    curl_asn1Element *p;
+    struct Curl_X509certificate x509;
+    struct Curl_asn1Element *p;
 
+    memset(&x509, 0, sizeof(x509));
     if(Curl_parseX509(&x509, cert, certend))
       return CURLE_SSL_PINNEDPUBKEYNOTMATCH;
     p = &x509.subjectPublicKeyInfo;
     result = Curl_pin_peer_pubkey(data, ptr, p->header, p->end - p->header);
     if(result) {
-      failf(data, "SSL: public key does not match pinned public key!");
+      failf(data, "SSL: public key does not match pinned public key");
       return result;
     }
   }
@@ -1205,6 +1204,8 @@ static int gskit_shutdown(struct Curl_easy *data,
   char buf[120];
   int loop = 10; /* don't get stuck */
 
+  DEBUGASSERT(BACKEND);
+
   if(!BACKEND->handle)
     return 0;
 
@@ -1268,6 +1269,7 @@ static int gskit_check_cxn(struct connectdata *cxn)
   int errlen;
 
   /* The only thing that can be tested here is at the socket level. */
+  DEBUGASSERT(BACKEND);
 
   if(!BACKEND->handle)
     return 0; /* connection has been closed */
@@ -1287,6 +1289,7 @@ static void *gskit_get_internals(struct ssl_connect_data *connssl,
                                  CURLINFO info UNUSED_PARAM)
 {
   (void)info;
+  DEBUGASSERT(BACKEND);
   return BACKEND->handle;
 }
 
@@ -1308,6 +1311,7 @@ const struct Curl_ssl Curl_ssl_gskit = {
   Curl_none_cert_status_request,  /* cert_status_request */
   gskit_connect,                  /* connect */
   gskit_connect_nonblocking,      /* connect_nonblocking */
+  Curl_ssl_getsock,               /* getsock */
   gskit_get_internals,            /* get_internals */
   gskit_close,                    /* close_one */
   Curl_none_close_all,            /* close_all */
index 202df7e07c65199e175e58b6513912a205f5a762..cf923f6b85c6bf1d5cf3171918457be64222ce75 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 18864aa4b285566a4fee3db9034b239ad27edbb8..cf3dbc52381281c4a9ff24e5da48c5d1353e1f47 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -43,6 +45,7 @@
 #include "inet_pton.h"
 #include "gtls.h"
 #include "vtls.h"
+#include "vauth/vauth.h"
 #include "parsedate.h"
 #include "connect.h" /* for the connect timeout */
 #include "select.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
+#ifdef HAVE_GNUTLS_SRP
+/* the function exists */
+#ifdef USE_TLS_SRP
+/* the functionality is not disabled */
+#define USE_GNUTLS_SRP
+#endif
+#endif
+
 /* Enable GnuTLS debugging by defining GTLSDEBUG */
 /*#define GTLSDEBUG */
 
@@ -75,7 +86,7 @@ static bool gtls_inited = FALSE;
 struct ssl_backend_data {
   gnutls_session_t session;
   gnutls_certificate_credentials_t cred;
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
   gnutls_srp_client_credentials_t srp_client_cred;
 #endif
 };
@@ -202,9 +213,12 @@ static CURLcode handshake(struct Curl_easy *data,
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
-  gnutls_session_t session = backend->session;
+  gnutls_session_t session;
   curl_socket_t sockfd = conn->sock[sockindex];
 
+  DEBUGASSERT(backend);
+  session = backend->session;
+
   for(;;) {
     timediff_t timeout_ms;
     int rc;
@@ -406,6 +420,8 @@ gtls_connect_step1(struct Curl_easy *data,
   const char *tls13support;
   CURLcode result;
 
+  DEBUGASSERT(backend);
+
   if(connssl->state == ssl_connection_complete)
     /* to make us tolerant against being called more than once for the
        same connection */
@@ -431,12 +447,13 @@ gtls_connect_step1(struct Curl_easy *data,
     return CURLE_SSL_CONNECT_ERROR;
   }
 
-#ifdef HAVE_GNUTLS_SRP
-  if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP) {
-    infof(data, "Using TLS-SRP username: %s", SSL_SET_OPTION(username));
+#ifdef USE_GNUTLS_SRP
+  if((SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP) &&
+     Curl_auth_allowed_to_host(data)) {
+    infof(data, "Using TLS-SRP username: %s",
+          SSL_SET_OPTION(primary.username));
 
-    rc = gnutls_srp_allocate_client_credentials(
-           &backend->srp_client_cred);
+    rc = gnutls_srp_allocate_client_credentials(&backend->srp_client_cred);
     if(rc != GNUTLS_E_SUCCESS) {
       failf(data, "gnutls_srp_allocate_client_cred() failed: %s",
             gnutls_strerror(rc));
@@ -444,8 +461,8 @@ gtls_connect_step1(struct Curl_easy *data,
     }
 
     rc = gnutls_srp_set_client_credentials(backend->srp_client_cred,
-                                           SSL_SET_OPTION(username),
-                                           SSL_SET_OPTION(password));
+                                           SSL_SET_OPTION(primary.username),
+                                           SSL_SET_OPTION(primary.password));
     if(rc != GNUTLS_E_SUCCESS) {
       failf(data, "gnutls_srp_set_client_cred() failed: %s",
             gnutls_strerror(rc));
@@ -502,19 +519,19 @@ gtls_connect_step1(struct Curl_easy *data,
   }
 #endif
 
-  if(SSL_SET_OPTION(CRLfile)) {
+  if(SSL_SET_OPTION(primary.CRLfile)) {
     /* set the CRL list file */
     rc = gnutls_certificate_set_x509_crl_file(backend->cred,
-                                              SSL_SET_OPTION(CRLfile),
+                                              SSL_SET_OPTION(primary.CRLfile),
                                               GNUTLS_X509_FMT_PEM);
     if(rc < 0) {
       failf(data, "error reading crl file %s (%s)",
-            SSL_SET_OPTION(CRLfile), gnutls_strerror(rc));
+            SSL_SET_OPTION(primary.CRLfile), gnutls_strerror(rc));
       return CURLE_SSL_CRL_BADFILE;
     }
     else
       infof(data, "found %d CRL in %s",
-            rc, SSL_SET_OPTION(CRLfile));
+            rc, SSL_SET_OPTION(primary.CRLfile));
   }
 
   /* Initialize TLS session as a client */
@@ -542,11 +559,15 @@ gtls_connect_step1(struct Curl_easy *data,
 #ifdef ENABLE_IPV6
      (0 == Curl_inet_pton(AF_INET6, hostname, &addr)) &&
 #endif
-     sni &&
-     (gnutls_server_name_set(session, GNUTLS_NAME_DNS, hostname,
-                             strlen(hostname)) < 0))
-    infof(data, "WARNING: failed to configure server name indication (SNI) "
-          "TLS extension");
+     sni) {
+    size_t snilen;
+    char *snihost = Curl_ssl_snihost(data, hostname, &snilen);
+    if(!snihost || gnutls_server_name_set(session, GNUTLS_NAME_DNS, snihost,
+                                          snilen) < 0) {
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+  }
 
   /* Use default priorities */
   rc = gnutls_set_default_priority(session);
@@ -578,10 +599,10 @@ gtls_connect_step1(struct Curl_easy *data,
   if(result)
     return result;
 
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
   /* Only add SRP to the cipher list if SRP is requested. Otherwise
    * GnuTLS will disable TLS 1.3 support. */
-  if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP) {
+  if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP) {
     size_t len = strlen(prioritylist);
 
     char *prioritysrp = malloc(len + sizeof(GNUTLS_SRP) + 1);
@@ -600,7 +621,7 @@ gtls_connect_step1(struct Curl_easy *data,
 #endif
     infof(data, "GnuTLS ciphers: %s", prioritylist);
     rc = gnutls_priority_set_direct(session, prioritylist, &err);
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
   }
 #endif
 
@@ -623,14 +644,14 @@ gtls_connect_step1(struct Curl_easy *data,
       protocols[cur].data = (unsigned char *)ALPN_H2;
       protocols[cur].size = ALPN_H2_LENGTH;
       cur++;
-      infof(data, "ALPN, offering %.*s", ALPN_H2_LENGTH, ALPN_H2);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
     }
 #endif
 
     protocols[cur].data = (unsigned char *)ALPN_HTTP_1_1;
     protocols[cur].size = ALPN_HTTP_1_1_LENGTH;
     cur++;
-    infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+    infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
 
     if(gnutls_alpn_set_protocols(session, protocols, cur, 0)) {
       failf(data, "failed setting ALPN");
@@ -674,9 +695,9 @@ gtls_connect_step1(struct Curl_easy *data,
     }
   }
 
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
   /* put the credentials to the current session */
-  if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP) {
+  if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP) {
     rc = gnutls_credentials_set(session, GNUTLS_CRD_SRP,
                                 backend->srp_client_cred);
     if(rc != GNUTLS_E_SUCCESS) {
@@ -697,7 +718,10 @@ gtls_connect_step1(struct Curl_easy *data,
 
 #ifndef CURL_DISABLE_PROXY
   if(conn->proxy_ssl[sockindex].use) {
-    transport_ptr = conn->proxy_ssl[sockindex].backend->session;
+    struct ssl_backend_data *proxy_backend;
+    proxy_backend = conn->proxy_ssl[sockindex].backend;
+    DEBUGASSERT(proxy_backend);
+    transport_ptr = proxy_backend->session;
     gnutls_transport_push = gtls_push_ssl;
     gnutls_transport_pull = gtls_pull_ssl;
   }
@@ -854,9 +878,9 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
     if(SSL_CONN_CONFIG(verifypeer) ||
        SSL_CONN_CONFIG(verifyhost) ||
        SSL_CONN_CONFIG(issuercert)) {
-#ifdef HAVE_GNUTLS_SRP
-      if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP
-         && SSL_SET_OPTION(username) != NULL
+#ifdef USE_GNUTLS_SRP
+      if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP
+         && SSL_SET_OPTION(primary.username)
          && !SSL_CONN_CONFIG(verifypeer)
          && gnutls_cipher_get(session)) {
         /* no peer cert, but auth is ok if we have SRP user and cipher and no
@@ -867,7 +891,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
         failf(data, "failed to get server cert");
         *certverifyresult = GNUTLS_E_NO_CERTIFICATE_FOUND;
         return CURLE_PEER_FAILED_VERIFICATION;
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
       }
 #endif
     }
@@ -914,7 +938,8 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
         failf(data, "server certificate verification failed. CAfile: %s "
               "CRLfile: %s", SSL_CONN_CONFIG(CAfile) ? SSL_CONN_CONFIG(CAfile):
               "none",
-              SSL_SET_OPTION(CRLfile)?SSL_SET_OPTION(CRLfile):"none");
+              SSL_SET_OPTION(primary.CRLfile) ?
+              SSL_SET_OPTION(primary.CRLfile) : "none");
         return CURLE_PEER_FAILED_VERIFICATION;
       }
       else
@@ -1186,7 +1211,7 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
   if(ptr) {
     result = pkp_pin_peer_pubkey(data, x509_cert, ptr);
     if(result != CURLE_OK) {
-      failf(data, "SSL: public key does not match pinned public key!");
+      failf(data, "SSL: public key does not match pinned public key");
       gnutls_x509_crt_deinit(x509_cert);
       return result;
     }
@@ -1243,26 +1268,26 @@ Curl_gtls_verifyserver(struct Curl_easy *data,
   if(conn->bits.tls_enable_alpn) {
     rc = gnutls_alpn_get_selected_protocol(session, &proto);
     if(rc == 0) {
-      infof(data, "ALPN, server accepted to use %.*s", proto.size,
-          proto.data);
+      infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, proto.size,
+            proto.data);
 
 #ifdef USE_HTTP2
       if(proto.size == ALPN_H2_LENGTH &&
          !memcmp(ALPN_H2, proto.data,
                  ALPN_H2_LENGTH)) {
-        conn->negnpn = CURL_HTTP_VERSION_2;
+        conn->alpn = CURL_HTTP_VERSION_2;
       }
       else
 #endif
       if(proto.size == ALPN_HTTP_1_1_LENGTH &&
          !memcmp(ALPN_HTTP_1_1, proto.data, ALPN_HTTP_1_1_LENGTH)) {
-        conn->negnpn = CURL_HTTP_VERSION_1_1;
+        conn->alpn = CURL_HTTP_VERSION_1_1;
       }
     }
     else
-      infof(data, "ALPN, server did not agree to a protocol");
+      infof(data, VTLS_INFOF_NO_ALPN);
 
-    Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+    Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
                         BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
   }
 
@@ -1352,7 +1377,9 @@ gtls_connect_common(struct Curl_easy *data,
   /* Finish connecting once the handshake is done */
   if(ssl_connect_1 == connssl->connecting_state) {
     struct ssl_backend_data *backend = connssl->backend;
-    gnutls_session_t session = backend->session;
+    gnutls_session_t session;
+    DEBUGASSERT(backend);
+    session = backend->session;
     rc = Curl_gtls_verifyserver(data, conn, session, sockindex);
     if(rc)
       return rc;
@@ -1393,6 +1420,9 @@ static bool gtls_data_pending(const struct connectdata *conn,
   const struct ssl_connect_data *connssl = &conn->ssl[connindex];
   bool res = FALSE;
   struct ssl_backend_data *backend = connssl->backend;
+
+  DEBUGASSERT(backend);
+
   if(backend->session &&
      0 != gnutls_record_check_pending(backend->session))
     res = TRUE;
@@ -1400,6 +1430,7 @@ static bool gtls_data_pending(const struct connectdata *conn,
 #ifndef CURL_DISABLE_PROXY
   connssl = &conn->proxy_ssl[connindex];
   backend = connssl->backend;
+  DEBUGASSERT(backend);
   if(backend->session &&
      0 != gnutls_record_check_pending(backend->session))
     res = TRUE;
@@ -1417,7 +1448,10 @@ static ssize_t gtls_send(struct Curl_easy *data,
   struct connectdata *conn = data->conn;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
-  ssize_t rc = gnutls_record_send(backend->session, mem, len);
+  ssize_t rc;
+
+  DEBUGASSERT(backend);
+  rc = gnutls_record_send(backend->session, mem, len);
 
   if(rc < 0) {
     *curlcode = (rc == GNUTLS_E_AGAIN)
@@ -1433,6 +1467,8 @@ static ssize_t gtls_send(struct Curl_easy *data,
 static void close_one(struct ssl_connect_data *connssl)
 {
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
+
   if(backend->session) {
     char buf[32];
     /* Maybe the server has already sent a close notify alert.
@@ -1446,7 +1482,7 @@ static void close_one(struct ssl_connect_data *connssl)
     gnutls_certificate_free_credentials(backend->cred);
     backend->cred = NULL;
   }
-#ifdef HAVE_GNUTLS_SRP
+#ifdef USE_GNUTLS_SRP
   if(backend->srp_client_cred) {
     gnutls_srp_free_client_credentials(backend->srp_client_cred);
     backend->srp_client_cred = NULL;
@@ -1475,6 +1511,8 @@ static int gtls_shutdown(struct Curl_easy *data, struct connectdata *conn,
   struct ssl_backend_data *backend = connssl->backend;
   int retval = 0;
 
+  DEBUGASSERT(backend);
+
 #ifndef CURL_DISABLE_FTP
   /* This has only been tested on the proftpd server, and the mod_tls code
      sends a close notify alert without waiting for a close notify alert in
@@ -1530,9 +1568,9 @@ static int gtls_shutdown(struct Curl_easy *data, struct connectdata *conn,
   }
   gnutls_certificate_free_credentials(backend->cred);
 
-#ifdef HAVE_GNUTLS_SRP
-  if(SSL_SET_OPTION(authtype) == CURL_TLSAUTH_SRP
-     && SSL_SET_OPTION(username) != NULL)
+#ifdef USE_GNUTLS_SRP
+  if(SSL_SET_OPTION(primary.authtype) == CURL_TLSAUTH_SRP
+     && SSL_SET_OPTION(primary.username) != NULL)
     gnutls_srp_free_client_credentials(backend->srp_client_cred);
 #endif
 
@@ -1553,6 +1591,8 @@ static ssize_t gtls_recv(struct Curl_easy *data, /* connection data */
   struct ssl_backend_data *backend = connssl->backend;
   ssize_t ret;
 
+  DEBUGASSERT(backend);
+
   ret = gnutls_record_recv(backend->session, buf, buffersize);
   if((ret == GNUTLS_E_AGAIN) || (ret == GNUTLS_E_INTERRUPTED)) {
     *curlcode = CURLE_AGAIN;
@@ -1624,6 +1664,7 @@ static void *gtls_get_internals(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
   (void)info;
+  DEBUGASSERT(backend);
   return backend->session;
 }
 
index 642d5f093a1ce471dff920a69632628491d26c28..abade73f806a24fa22a9056ca5450afbe9477f58 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
diff --git a/lib/vtls/hostcheck.c b/lib/vtls/hostcheck.c
new file mode 100644 (file)
index 0000000..2a648f2
--- /dev/null
@@ -0,0 +1,142 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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(USE_OPENSSL)                                \
+  || defined(USE_GSKIT)                                 \
+  || defined(USE_SCHANNEL)
+/* these backends use functions from this file */
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#ifdef HAVE_NETINET_IN6_H
+#include <netinet/in6.h>
+#endif
+#include "curl_memrchr.h"
+
+#include "hostcheck.h"
+#include "strcase.h"
+#include "hostip.h"
+
+#include "curl_memory.h"
+/* The last #include file should be: */
+#include "memdebug.h"
+
+/* check the two input strings with given length, but do not
+   assume they end in nul-bytes */
+static bool pmatch(const char *hostname, size_t hostlen,
+                   const char *pattern, size_t patternlen)
+{
+  if(hostlen != patternlen)
+    return FALSE;
+  return strncasecompare(hostname, pattern, hostlen);
+}
+
+/*
+ * Match a hostname against a wildcard pattern.
+ * E.g.
+ *  "foo.host.com" matches "*.host.com".
+ *
+ * We use the matching rule described in RFC6125, section 6.4.3.
+ * https://datatracker.ietf.org/doc/html/rfc6125#section-6.4.3
+ *
+ * In addition: ignore trailing dots in the host names and wildcards, so that
+ * the names are used normalized. This is what the browsers do.
+ *
+ * Do not allow wildcard matching on IP numbers. There are apparently
+ * certificates being used with an IP address in the CN field, thus making no
+ * apparent distinction between a name and an IP. We need to detect the use of
+ * an IP address and not wildcard match on such names.
+ *
+ * Return TRUE on a match. FALSE if not.
+ */
+
+static bool hostmatch(const char *hostname,
+                      size_t hostlen,
+                      const char *pattern,
+                      size_t patternlen)
+{
+  const char *pattern_label_end, *wildcard, *hostname_label_end;
+  size_t prefixlen, suffixlen;
+
+  /* normalize pattern and hostname by stripping off trailing dots */
+  DEBUGASSERT(patternlen);
+  if(hostname[hostlen-1]=='.')
+    hostlen--;
+  if(pattern[patternlen-1]=='.')
+    patternlen--;
+
+  wildcard = memchr(pattern, '*', patternlen);
+  if(!wildcard)
+    return pmatch(hostname, hostlen, pattern, patternlen);
+
+  /* detect IP address as hostname and fail the match if so */
+  if(Curl_host_is_ipnum(hostname))
+    return FALSE;
+
+  /* We require at least 2 dots in the pattern to avoid too wide wildcard
+     match. */
+  pattern_label_end = memchr(pattern, '.', patternlen);
+  if(!pattern_label_end ||
+     (memrchr(pattern, '.', patternlen) == pattern_label_end) ||
+     strncasecompare(pattern, "xn--", 4))
+    return pmatch(hostname, hostlen, pattern, patternlen);
+
+  hostname_label_end = memchr(hostname, '.', hostlen);
+  if(!hostname_label_end)
+    return FALSE;
+  else {
+    size_t skiphost = hostname_label_end - hostname;
+    size_t skiplen = pattern_label_end - pattern;
+    if(!pmatch(hostname_label_end, hostlen - skiphost,
+               pattern_label_end, patternlen - skiplen))
+      return FALSE;
+  }
+  /* The wildcard must match at least one character, so the left-most
+     label of the hostname is at least as large as the left-most label
+     of the pattern. */
+  if(hostname_label_end - hostname < pattern_label_end - pattern)
+    return FALSE;
+
+  prefixlen = wildcard - pattern;
+  suffixlen = pattern_label_end - (wildcard + 1);
+  return strncasecompare(pattern, hostname, prefixlen) &&
+    strncasecompare(wildcard + 1, hostname_label_end - suffixlen,
+                    suffixlen) ? TRUE : FALSE;
+}
+
+/*
+ * Curl_cert_hostcheck() returns TRUE if a match and FALSE if not.
+ */
+bool Curl_cert_hostcheck(const char *match, size_t matchlen,
+                         const char *hostname, size_t hostlen)
+{
+  if(match && *match && hostname && *hostname)
+    return hostmatch(hostname, hostlen, match, matchlen);
+  return FALSE;
+}
+
+#endif /* OPENSSL, GSKIT or schannel+wince */
diff --git a/lib/vtls/hostcheck.h b/lib/vtls/hostcheck.h
new file mode 100644 (file)
index 0000000..d3c4eab
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef HEADER_CURL_HOSTCHECK_H
+#define HEADER_CURL_HOSTCHECK_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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/curl.h>
+
+/* returns TRUE if there's a match */
+bool Curl_cert_hostcheck(const char *match_pattern, size_t matchlen,
+                         const char *hostname, size_t hostlen);
+
+#endif /* HEADER_CURL_HOSTCHECK_H */
index a45945f8f5047bcf02abf1e35fe2d7124c9c51ac..1952a690caacc8bb9869a6c334daaa1375600be8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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"
 
 #include "keylog.h"
+#include <curl/curl.h>
 
 /* The last #include files should be: */
 #include "curl_memory.h"
index 63626da90abb54630c4eb0caaf9544ef094cdfa3..5d3c675b3e5c335c0cb8eee6380756aeda4da3c5 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 1d209b2732f38a40ae203c857fb799a42b1bc9b8..fbde8976eb431de9f62dc05d36a313e2f0f5db27 100644 (file)
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -41,9 +43,6 @@
 #include <mbedtls/net.h>
 #endif
 #include <mbedtls/ssl.h>
-#if MBEDTLS_VERSION_NUMBER < 0x03000000
-#include <mbedtls/certs.h>
-#endif
 #include <mbedtls/x509.h>
 
 #include <mbedtls/error.h>
 #include "curl_memory.h"
 #include "memdebug.h"
 
+/* ALPN for http2 */
+#ifdef USE_HTTP2
+#  undef HAS_ALPN
+#  ifdef MBEDTLS_SSL_ALPN
+#    define HAS_ALPN
+#  endif
+#endif
+
 struct ssl_backend_data {
   mbedtls_ctr_drbg_context ctr_drbg;
   mbedtls_entropy_context entropy;
   mbedtls_ssl_context ssl;
-  int server_fd;
   mbedtls_x509_crt cacert;
   mbedtls_x509_crt clicert;
+#ifdef MBEDTLS_X509_CRL_PARSE_C
   mbedtls_x509_crl crl;
+#endif
   mbedtls_pk_context pk;
   mbedtls_ssl_config config;
+#ifdef HAS_ALPN
   const char *protocols[3];
+#endif
 };
 
 /* apply threading? */
@@ -145,15 +155,6 @@ static void mbed_debug(void *context, int level, const char *f_name,
 #else
 #endif
 
-/* ALPN for http2? */
-#ifdef USE_NGHTTP2
-#  undef HAS_ALPN
-#  ifdef MBEDTLS_SSL_ALPN
-#    define HAS_ALPN
-#  endif
-#endif
-
-
 /*
  *  profile
  */
@@ -231,6 +232,8 @@ set_ssl_version_min_max(struct Curl_easy *data, struct connectdata *conn,
   long ssl_version_max = SSL_CONN_CONFIG(version_max);
   CURLcode result = CURLE_OK;
 
+  DEBUGASSERT(backend);
+
   switch(ssl_version) {
     case CURL_SSLVERSION_DEFAULT:
     case CURL_SSLVERSION_TLSv1:
@@ -278,7 +281,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   const char * const ssl_capath = SSL_CONN_CONFIG(CApath);
   char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
   const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
-  const char * const ssl_crlfile = SSL_SET_OPTION(CRLfile);
+  const char * const ssl_crlfile = SSL_SET_OPTION(primary.CRLfile);
   const char * const hostname = SSL_HOST_NAME();
 #ifndef CURL_DISABLE_VERBOSE_STRINGS
   const long int port = SSL_HOST_PORT();
@@ -286,6 +289,8 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   int ret = -1;
   char errorbuf[128];
 
+  DEBUGASSERT(backend);
+
   if((SSL_CONN_CONFIG(version) == CURL_SSLVERSION_SSLv2) ||
      (SSL_CONN_CONFIG(version) == CURL_SSLVERSION_SSLv3)) {
     failf(data, "Not supported SSL version");
@@ -300,8 +305,9 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
                               &ts_entropy, NULL, 0);
   if(ret) {
     mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
-    failf(data, "Failed - mbedTLS: ctr_drbg_init returned (-0x%04X) %s",
+    failf(data, "mbedtls_ctr_drbg_seed returned (-0x%04X) %s",
           -ret, errorbuf);
+    return CURLE_FAILED_INIT;
   }
 #else
   mbedtls_entropy_init(&backend->entropy);
@@ -311,8 +317,9 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
                               &backend->entropy, NULL, 0);
   if(ret) {
     mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
-    failf(data, "Failed - mbedTLS: ctr_drbg_init returned (-0x%04X) %s",
+    failf(data, "mbedtls_ctr_drbg_seed returned (-0x%04X) %s",
           -ret, errorbuf);
+    return CURLE_FAILED_INIT;
   }
 #endif /* THREADING_SUPPORT */
 
@@ -335,11 +342,12 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
       mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
       failf(data, "Error importing ca cert blob - mbedTLS: (-0x%04X) %s",
             -ret, errorbuf);
-      return ret;
+      return CURLE_SSL_CERTPROBLEM;
     }
   }
 
   if(ssl_cafile && verifypeer) {
+#ifdef MBEDTLS_FS_IO
     ret = mbedtls_x509_crt_parse_file(&backend->cacert, ssl_cafile);
 
     if(ret<0) {
@@ -348,9 +356,14 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
             ssl_cafile, -ret, errorbuf);
       return CURLE_SSL_CACERT_BADFILE;
     }
+#else
+    failf(data, "mbedtls: functions that use the filesystem not built in");
+    return CURLE_NOT_BUILT_IN;
+#endif
   }
 
   if(ssl_capath) {
+#ifdef MBEDTLS_FS_IO
     ret = mbedtls_x509_crt_parse_path(&backend->cacert, ssl_capath);
 
     if(ret<0) {
@@ -361,12 +374,17 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
       if(verifypeer)
         return CURLE_SSL_CACERT_BADFILE;
     }
+#else
+    failf(data, "mbedtls: functions that use the filesystem not built in");
+    return CURLE_NOT_BUILT_IN;
+#endif
   }
 
   /* Load the client certificate */
   mbedtls_x509_crt_init(&backend->clicert);
 
   if(ssl_cert) {
+#ifdef MBEDTLS_FS_IO
     ret = mbedtls_x509_crt_parse_file(&backend->clicert, ssl_cert);
 
     if(ret) {
@@ -376,6 +394,10 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 
       return CURLE_SSL_CERTPROBLEM;
     }
+#else
+    failf(data, "mbedtls: functions that use the filesystem not built in");
+    return CURLE_NOT_BUILT_IN;
+#endif
   }
 
   if(ssl_cert_blob) {
@@ -388,7 +410,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
     memcpy(newblob, ssl_cert_blob->data, ssl_cert_blob->len);
     newblob[ssl_cert_blob->len] = 0; /* null terminate */
     ret = mbedtls_x509_crt_parse(&backend->clicert, newblob,
-                                 ssl_cert_blob->len);
+                                 ssl_cert_blob->len + 1);
     free(newblob);
 
     if(ret) {
@@ -404,6 +426,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 
   if(SSL_SET_OPTION(key) || SSL_SET_OPTION(key_blob)) {
     if(SSL_SET_OPTION(key)) {
+#ifdef MBEDTLS_FS_IO
 #if MBEDTLS_VERSION_NUMBER >= 0x03000000
       ret = mbedtls_pk_parse_keyfile(&backend->pk, SSL_SET_OPTION(key),
                                      SSL_SET_OPTION(key_passwd),
@@ -420,6 +443,10 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
               SSL_SET_OPTION(key), -ret, errorbuf);
         return CURLE_SSL_CERTPROBLEM;
       }
+#else
+      failf(data, "mbedtls: functions that use the filesystem not built in");
+      return CURLE_NOT_BUILT_IN;
+#endif
     }
     else {
       const struct curl_blob *ssl_key_blob = SSL_SET_OPTION(key_blob);
@@ -452,9 +479,11 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   }
 
   /* Load the CRL */
+#ifdef MBEDTLS_X509_CRL_PARSE_C
   mbedtls_x509_crl_init(&backend->crl);
 
   if(ssl_crlfile) {
+#ifdef MBEDTLS_FS_IO
     ret = mbedtls_x509_crl_parse_file(&backend->crl, ssl_crlfile);
 
     if(ret) {
@@ -464,17 +493,21 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 
       return CURLE_SSL_CRL_BADFILE;
     }
+#else
+    failf(data, "mbedtls: functions that use the filesystem not built in");
+    return CURLE_NOT_BUILT_IN;
+#endif
+  }
+#else
+  if(ssl_crlfile) {
+    failf(data, "mbedtls: crl support not built in");
+    return CURLE_NOT_BUILT_IN;
   }
+#endif
 
   infof(data, "mbedTLS: Connecting to %s:%ld", hostname, port);
 
   mbedtls_ssl_config_init(&backend->config);
-
-  mbedtls_ssl_init(&backend->ssl);
-  if(mbedtls_ssl_setup(&backend->ssl, &backend->config)) {
-    failf(data, "mbedTLS: ssl_init failed");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
   ret = mbedtls_ssl_config_defaults(&backend->config,
                                     MBEDTLS_SSL_IS_CLIENT,
                                     MBEDTLS_SSL_TRANSPORT_STREAM,
@@ -484,6 +517,12 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
     return CURLE_SSL_CONNECT_ERROR;
   }
 
+  mbedtls_ssl_init(&backend->ssl);
+  if(mbedtls_ssl_setup(&backend->ssl, &backend->config)) {
+    failf(data, "mbedTLS: ssl_init failed");
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+
   /* new profile with RSA min key len = 1024 ... */
   mbedtls_ssl_conf_cert_profile(&backend->config,
                                 &mbedtls_x509_crt_profile_fr);
@@ -555,26 +594,33 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 
   mbedtls_ssl_conf_ca_chain(&backend->config,
                             &backend->cacert,
+#ifdef MBEDTLS_X509_CRL_PARSE_C
                             &backend->crl);
+#else
+                            NULL);
+#endif
 
   if(SSL_SET_OPTION(key) || SSL_SET_OPTION(key_blob)) {
     mbedtls_ssl_conf_own_cert(&backend->config,
                               &backend->clicert, &backend->pk);
   }
-  if(mbedtls_ssl_set_hostname(&backend->ssl, hostname)) {
-    /* mbedtls_ssl_set_hostname() sets the name to use in CN/SAN checks *and*
-       the name to set in the SNI extension. So even if curl connects to a
-       host specified as an IP address, this function must be used. */
-    failf(data, "couldn't set hostname in mbedTLS");
-    return CURLE_SSL_CONNECT_ERROR;
+  {
+    char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+    if(!snihost || mbedtls_ssl_set_hostname(&backend->ssl, snihost)) {
+      /* mbedtls_ssl_set_hostname() sets the name to use in CN/SAN checks and
+         the name to set in the SNI extension. So even if curl connects to a
+         host specified as an IP address, this function must be used. */
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
   }
 
 #ifdef HAS_ALPN
   if(conn->bits.tls_enable_alpn) {
     const char **p = &backend->protocols[0];
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
     if(data->state.httpwant >= CURL_HTTP_VERSION_2)
-      *p++ = NGHTTP2_PROTO_VERSION_ID;
+      *p++ = ALPN_H2;
 #endif
     *p++ = ALPN_HTTP_1_1;
     *p = NULL;
@@ -586,7 +632,7 @@ mbed_connect_step1(struct Curl_easy *data, struct connectdata *conn,
       return CURLE_SSL_CONNECT_ERROR;
     }
     for(p = &backend->protocols[0]; *p; ++p)
-      infof(data, "ALPN, offering %s", *p);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, *p);
   }
 #endif
 
@@ -627,6 +673,8 @@ mbed_connect_step2(struct Curl_easy *data, struct connectdata *conn,
   const mbedtls_x509_crt *peercert;
   const char * const pinnedpubkey = SSL_PINNED_PUB_KEY();
 
+  DEBUGASSERT(backend);
+
   conn->recv[sockindex] = mbed_recv;
   conn->send[sockindex] = mbed_send;
 
@@ -769,24 +817,23 @@ mbed_connect_step2(struct Curl_easy *data, struct connectdata *conn,
     const char *next_protocol = mbedtls_ssl_get_alpn_protocol(&backend->ssl);
 
     if(next_protocol) {
-      infof(data, "ALPN, server accepted to use %s", next_protocol);
-#ifdef USE_NGHTTP2
-      if(!strncmp(next_protocol, NGHTTP2_PROTO_VERSION_ID,
-                  NGHTTP2_PROTO_VERSION_ID_LEN) &&
-         !next_protocol[NGHTTP2_PROTO_VERSION_ID_LEN]) {
-        conn->negnpn = CURL_HTTP_VERSION_2;
+      infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, next_protocol);
+#ifdef USE_HTTP2
+      if(!strncmp(next_protocol, ALPN_H2, ALPN_H2_LENGTH) &&
+         !next_protocol[ALPN_H2_LENGTH]) {
+        conn->alpn = CURL_HTTP_VERSION_2;
       }
       else
 #endif
         if(!strncmp(next_protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH) &&
            !next_protocol[ALPN_HTTP_1_1_LENGTH]) {
-          conn->negnpn = CURL_HTTP_VERSION_1_1;
+          conn->alpn = CURL_HTTP_VERSION_1_1;
         }
     }
     else {
-      infof(data, "ALPN, server did not agree to a protocol");
+      infof(data, VTLS_INFOF_NO_ALPN);
     }
-    Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+    Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
                         BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
   }
 #endif
@@ -806,6 +853,7 @@ mbed_connect_step3(struct Curl_easy *data, struct connectdata *conn,
   struct ssl_backend_data *backend = connssl->backend;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   if(SSL_SET_OPTION(primary.sessionid)) {
     int ret;
@@ -862,6 +910,8 @@ static ssize_t mbed_send(struct Curl_easy *data, int sockindex,
   struct ssl_backend_data *backend = connssl->backend;
   int ret = -1;
 
+  DEBUGASSERT(backend);
+
   ret = mbedtls_ssl_write(&backend->ssl, (unsigned char *)mem, len);
 
   if(ret < 0) {
@@ -886,6 +936,8 @@ static void mbedtls_close(struct Curl_easy *data,
   char buf[32];
   (void) data;
 
+  DEBUGASSERT(backend);
+
   /* Maybe the server has already sent a close notify alert.
      Read it to avoid an RST on the TCP connection. */
   (void)mbedtls_ssl_read(&backend->ssl, (unsigned char *)buf, sizeof(buf));
@@ -893,7 +945,9 @@ static void mbedtls_close(struct Curl_easy *data,
   mbedtls_pk_free(&backend->pk);
   mbedtls_x509_crt_free(&backend->clicert);
   mbedtls_x509_crt_free(&backend->cacert);
+#ifdef MBEDTLS_X509_CRL_PARSE_C
   mbedtls_x509_crl_free(&backend->crl);
+#endif
   mbedtls_ssl_config_free(&backend->config);
   mbedtls_ssl_free(&backend->ssl);
   mbedtls_ctr_drbg_free(&backend->ctr_drbg);
@@ -912,6 +966,8 @@ static ssize_t mbed_recv(struct Curl_easy *data, int num,
   int ret = -1;
   ssize_t len = -1;
 
+  DEBUGASSERT(backend);
+
   ret = mbedtls_ssl_read(&backend->ssl, (unsigned char *)buf,
                          buffersize);
 
@@ -963,7 +1019,7 @@ static CURLcode mbedtls_random(struct Curl_easy *data,
 
   if(ret) {
     mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
-    failf(data, "Failed - mbedTLS: ctr_drbg_seed returned (-0x%04X) %s",
+    failf(data, "mbedtls_ctr_drbg_seed returned (-0x%04X) %s",
           -ret, errorbuf);
   }
   else {
@@ -971,7 +1027,7 @@ static CURLcode mbedtls_random(struct Curl_easy *data,
 
     if(ret) {
       mbedtls_strerror(ret, errorbuf, sizeof(errorbuf));
-      failf(data, "mbedTLS: ctr_drbg_init returned (-0x%04X) %s",
+      failf(data, "mbedtls_ctr_drbg_random returned (-0x%04X) %s",
             -ret, errorbuf);
     }
   }
@@ -1146,6 +1202,7 @@ static bool mbedtls_data_pending(const struct connectdata *conn,
 {
   const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   return mbedtls_ssl_get_bytes_avail(&backend->ssl) != 0;
 }
 
@@ -1175,6 +1232,7 @@ static void *mbedtls_get_internals(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
   (void)info;
+  DEBUGASSERT(backend);
   return &backend->ssl;
 }
 
index 1abd331ea986c69b00d043312f605ed57a36e6dc..ec3b43bf9c9b5c41ab01ab55e30d84cc2b548b7b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -21,6 +21,8 @@
  * 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"
 
index 751755c239f5e3102fc437ba40c74dfe636afc49..3971e69b258dfc9579c8b209b91bbde877f96b1b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * 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"
 
index e40dfc8d6ace0af481f84bbce8be3c8dfb078d17..3a50d03817b64982985760cff22e7009a2d37f42 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -21,6 +21,8 @@
  * 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"
 
diff --git a/lib/vtls/mesalink.c b/lib/vtls/mesalink.c
deleted file mode 100644 (file)
index 35a9165..0000000
+++ /dev/null
@@ -1,679 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com>
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-/*
- * Source file for all MesaLink-specific code for the TLS/SSL layer. No code
- * but vtls.c should ever call or use these functions.
- *
- */
-
-/*
- * Based upon the CyaSSL implementation in cyassl.c and cyassl.h:
- *   Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
- *
- * Thanks for code and inspiration!
- */
-
-#include "curl_setup.h"
-
-#ifdef USE_MESALINK
-
-#include <mesalink/options.h>
-#include <mesalink/version.h>
-
-#include "urldata.h"
-#include "sendf.h"
-#include "inet_pton.h"
-#include "vtls.h"
-#include "parsedate.h"
-#include "connect.h" /* for the connect timeout */
-#include "select.h"
-#include "strcase.h"
-#include "x509asn1.h"
-#include "curl_printf.h"
-
-#include "mesalink.h"
-#include <mesalink/openssl/ssl.h>
-#include <mesalink/openssl/err.h>
-
-/* The last #include files should be: */
-#include "curl_memory.h"
-#include "memdebug.h"
-
-#define MESALINK_MAX_ERROR_SZ 80
-
-struct ssl_backend_data
-{
-  SSL_CTX *ctx;
-  SSL *handle;
-};
-
-static Curl_recv mesalink_recv;
-static Curl_send mesalink_send;
-
-static int do_file_type(const char *type)
-{
-  if(!type || !type[0])
-    return SSL_FILETYPE_PEM;
-  if(strcasecompare(type, "PEM"))
-    return SSL_FILETYPE_PEM;
-  if(strcasecompare(type, "DER"))
-    return SSL_FILETYPE_ASN1;
-  return -1;
-}
-
-/*
- * This function loads all the client/CA certificates and CRLs. Setup the TLS
- * layer and do all necessary magic.
- */
-static CURLcode
-mesalink_connect_step1(struct Curl_easy *data,
-                       struct connectdata *conn, int sockindex)
-{
-  char *ciphers;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  struct in_addr addr4;
-#ifdef ENABLE_IPV6
-  struct in6_addr addr6;
-#endif
-  const char * const hostname = SSL_HOST_NAME();
-  size_t hostname_len = strlen(hostname);
-  SSL_METHOD *req_method = NULL;
-  curl_socket_t sockfd = conn->sock[sockindex];
-  struct ssl_backend_data *backend = connssl->backend;
-
-  if(connssl->state == ssl_connection_complete)
-    return CURLE_OK;
-
-  if(SSL_CONN_CONFIG(version_max) != CURL_SSLVERSION_MAX_NONE) {
-    failf(data, "MesaLink does not support to set maximum SSL/TLS version");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  switch(SSL_CONN_CONFIG(version)) {
-  case CURL_SSLVERSION_SSLv3:
-  case CURL_SSLVERSION_TLSv1:
-  case CURL_SSLVERSION_TLSv1_0:
-  case CURL_SSLVERSION_TLSv1_1:
-    failf(data, "MesaLink does not support SSL 3.0, TLS 1.0, or TLS 1.1");
-    return CURLE_NOT_BUILT_IN;
-  case CURL_SSLVERSION_DEFAULT:
-  case CURL_SSLVERSION_TLSv1_2:
-    req_method = TLSv1_2_client_method();
-    break;
-  case CURL_SSLVERSION_TLSv1_3:
-    req_method = TLSv1_3_client_method();
-    break;
-  case CURL_SSLVERSION_SSLv2:
-    failf(data, "MesaLink does not support SSLv2");
-    return CURLE_SSL_CONNECT_ERROR;
-  default:
-    failf(data, "Unrecognized parameter passed via CURLOPT_SSLVERSION");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  if(!req_method) {
-    failf(data, "SSL: couldn't create a method!");
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  if(backend->ctx)
-    SSL_CTX_free(backend->ctx);
-  backend->ctx = SSL_CTX_new(req_method);
-
-  if(!backend->ctx) {
-    failf(data, "SSL: couldn't create a context!");
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  SSL_CTX_set_verify(
-    backend->ctx, SSL_CONN_CONFIG(verifypeer) ?
-      SSL_VERIFY_PEER : SSL_VERIFY_NONE, NULL);
-
-  if(SSL_CONN_CONFIG(CAfile) || SSL_CONN_CONFIG(CApath)) {
-    if(!SSL_CTX_load_verify_locations(backend->ctx, SSL_CONN_CONFIG(CAfile),
-                                      SSL_CONN_CONFIG(CApath))) {
-      if(SSL_CONN_CONFIG(verifypeer)) {
-        failf(data,
-              "error setting certificate verify locations: "
-              " CAfile: %s CApath: %s",
-              SSL_CONN_CONFIG(CAfile) ?
-              SSL_CONN_CONFIG(CAfile) : "none",
-              SSL_CONN_CONFIG(CApath) ?
-              SSL_CONN_CONFIG(CApath) : "none");
-        return CURLE_SSL_CACERT_BADFILE;
-      }
-      infof(data,
-          "error setting certificate verify locations,"
-          " continuing anyway:");
-    }
-    else {
-      infof(data, "successfully set certificate verify locations:");
-    }
-    infof(data, " CAfile: %s",
-          SSL_CONN_CONFIG(CAfile) ? SSL_CONN_CONFIG(CAfile): "none");
-    infof(data, " CApath: %s",
-          SSL_CONN_CONFIG(CApath) ? SSL_CONN_CONFIG(CApath): "none");
-  }
-
-  if(SSL_SET_OPTION(primary.clientcert) && SSL_SET_OPTION(key)) {
-    int file_type = do_file_type(SSL_SET_OPTION(cert_type));
-
-    if(SSL_CTX_use_certificate_chain_file(backend->ctx,
-                                          SSL_SET_OPTION(primary.clientcert),
-                                          file_type) != 1) {
-      failf(data, "unable to use client certificate (no key or wrong pass"
-            " phrase?)");
-      return CURLE_SSL_CONNECT_ERROR;
-    }
-
-    file_type = do_file_type(SSL_SET_OPTION(key_type));
-    if(SSL_CTX_use_PrivateKey_file(backend->ctx, SSL_SET_OPTION(key),
-                                   file_type) != 1) {
-      failf(data, "unable to set private key");
-      return CURLE_SSL_CONNECT_ERROR;
-    }
-    infof(data,
-          "client cert: %s",
-          SSL_CONN_CONFIG(clientcert)?
-          SSL_CONN_CONFIG(clientcert): "none");
-  }
-
-  ciphers = SSL_CONN_CONFIG(cipher_list);
-  if(ciphers) {
-#ifdef MESALINK_HAVE_CIPHER
-    if(!SSL_CTX_set_cipher_list(backend->ctx, ciphers)) {
-      failf(data, "failed setting cipher list: %s", ciphers);
-      return CURLE_SSL_CIPHER;
-    }
-#endif
-    infof(data, "Cipher selection: %s", ciphers);
-  }
-
-  if(backend->handle)
-    SSL_free(backend->handle);
-  backend->handle = SSL_new(backend->ctx);
-  if(!backend->handle) {
-    failf(data, "SSL: couldn't create a context (handle)!");
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  if((hostname_len < USHRT_MAX) &&
-     (0 == Curl_inet_pton(AF_INET, hostname, &addr4))
-#ifdef ENABLE_IPV6
-     && (0 == Curl_inet_pton(AF_INET6, hostname, &addr6))
-#endif
-  ) {
-    /* hostname is not a valid IP address */
-    if(SSL_set_tlsext_host_name(backend->handle, hostname) != SSL_SUCCESS) {
-      failf(data,
-            "WARNING: failed to configure server name indication (SNI) "
-            "TLS extension\n");
-      return CURLE_SSL_CONNECT_ERROR;
-    }
-  }
-  else {
-#ifdef CURLDEBUG
-    /* Check if the hostname is 127.0.0.1 or [::1];
-     * otherwise reject because MesaLink always wants a valid DNS Name
-     * specified in RFC 5280 Section 7.2 */
-    if(strncmp(hostname, "127.0.0.1", 9) == 0
-#ifdef ENABLE_IPV6
-       || strncmp(hostname, "[::1]", 5) == 0
-#endif
-    ) {
-      SSL_set_tlsext_host_name(backend->handle, "localhost");
-    }
-    else
-#endif
-    {
-      failf(data,
-            "ERROR: MesaLink does not accept an IP address as a hostname\n");
-      return CURLE_SSL_CONNECT_ERROR;
-    }
-  }
-
-#ifdef MESALINK_HAVE_SESSION
-  if(SSL_SET_OPTION(primary.sessionid)) {
-    void *ssl_sessionid = NULL;
-
-    Curl_ssl_sessionid_lock(data);
-    if(!Curl_ssl_getsessionid(data, conn,
-                              SSL_IS_PROXY() ? TRUE : FALSE,
-                              &ssl_sessionid, NULL, sockindex)) {
-      /* we got a session id, use it! */
-      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
-        Curl_ssl_sessionid_unlock(data);
-        failf(
-          data,
-          "SSL: SSL_set_session failed: %s",
-          ERR_error_string(SSL_get_error(backend->handle, 0), error_buffer));
-        return CURLE_SSL_CONNECT_ERROR;
-      }
-      /* Informational message */
-      infof(data, "SSL re-using session ID");
-    }
-    Curl_ssl_sessionid_unlock(data);
-  }
-#endif /* MESALINK_HAVE_SESSION */
-
-  if(SSL_set_fd(backend->handle, (int)sockfd) != SSL_SUCCESS) {
-    failf(data, "SSL: SSL_set_fd failed");
-    return CURLE_SSL_CONNECT_ERROR;
-  }
-
-  connssl->connecting_state = ssl_connect_2;
-  return CURLE_OK;
-}
-
-static CURLcode
-mesalink_connect_step2(struct Curl_easy *data,
-                       struct connectdata *conn, int sockindex)
-{
-  int ret = -1;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  struct ssl_backend_data *backend = connssl->backend;
-
-  conn->recv[sockindex] = mesalink_recv;
-  conn->send[sockindex] = mesalink_send;
-
-  ret = SSL_connect(backend->handle);
-  if(ret != SSL_SUCCESS) {
-    int detail = SSL_get_error(backend->handle, ret);
-
-    if(SSL_ERROR_WANT_CONNECT == detail || SSL_ERROR_WANT_READ == detail) {
-      connssl->connecting_state = ssl_connect_2_reading;
-      return CURLE_OK;
-    }
-    else {
-      char error_buffer[MESALINK_MAX_ERROR_SZ];
-      failf(data,
-            "SSL_connect failed with error %d: %s",
-            detail,
-            ERR_error_string_n(detail, error_buffer, sizeof(error_buffer)));
-      ERR_print_errors_fp(stderr);
-      if(detail && SSL_CONN_CONFIG(verifypeer)) {
-        detail &= ~0xFF;
-        if(detail == TLS_ERROR_WEBPKI_ERRORS) {
-          failf(data, "Cert verify failed");
-          return CURLE_PEER_FAILED_VERIFICATION;
-        }
-      }
-      return CURLE_SSL_CONNECT_ERROR;
-    }
-  }
-
-  connssl->connecting_state = ssl_connect_3;
-  infof(data,
-        "SSL connection using %s / %s",
-        SSL_get_version(backend->handle),
-        SSL_get_cipher_name(backend->handle));
-
-  return CURLE_OK;
-}
-
-static CURLcode
-mesalink_connect_step3(struct connectdata *conn, int sockindex)
-{
-  CURLcode result = CURLE_OK;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-
-  DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
-
-#ifdef MESALINK_HAVE_SESSION
-  if(SSL_SET_OPTION(primary.sessionid)) {
-    bool incache;
-    SSL_SESSION *our_ssl_sessionid;
-    void *old_ssl_sessionid = NULL;
-    bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;
-    struct ssl_backend_data *backend = connssl->backend;
-
-    our_ssl_sessionid = SSL_get_session(backend->handle);
-
-    Curl_ssl_sessionid_lock(data);
-    incache =
-      !(Curl_ssl_getsessionid(data, conn, isproxy, &old_ssl_sessionid, NULL,
-                              sockindex));
-    if(incache) {
-      if(old_ssl_sessionid != our_ssl_sessionid) {
-        infof(data, "old SSL session ID is stale, removing");
-        Curl_ssl_delsessionid(data, old_ssl_sessionid);
-        incache = FALSE;
-      }
-    }
-
-    if(!incache) {
-      result =
-        Curl_ssl_addsessionid(data, conn, isproxy, our_ssl_sessionid, 0,
-                              sockindex, NULL);
-      if(result) {
-        Curl_ssl_sessionid_unlock(data);
-        failf(data, "failed to store ssl session");
-        return result;
-      }
-    }
-    Curl_ssl_sessionid_unlock(data);
-  }
-#endif /* MESALINK_HAVE_SESSION */
-
-  connssl->connecting_state = ssl_connect_done;
-
-  return result;
-}
-
-static ssize_t
-mesalink_send(struct Curl_easy *data, int sockindex, const void *mem,
-              size_t len, CURLcode *curlcode)
-{
-  struct connectdata *conn = data->conn;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  struct ssl_backend_data *backend = connssl->backend;
-  char error_buffer[MESALINK_MAX_ERROR_SZ];
-  int memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
-  int rc = SSL_write(backend->handle, mem, memlen);
-
-  if(rc < 0) {
-    int err = SSL_get_error(backend->handle, rc);
-    switch(err) {
-    case SSL_ERROR_WANT_READ:
-    case SSL_ERROR_WANT_WRITE:
-      /* there's data pending, re-invoke SSL_write() */
-      *curlcode = CURLE_AGAIN;
-      return -1;
-    default:
-      failf(data,
-            "SSL write: %s, errno %d",
-            ERR_error_string_n(err, error_buffer, sizeof(error_buffer)),
-            SOCKERRNO);
-      *curlcode = CURLE_SEND_ERROR;
-      return -1;
-    }
-  }
-  return rc;
-}
-
-static void
-mesalink_close(struct Curl_easy *data, struct connectdata *conn, int sockindex)
-{
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  struct ssl_backend_data *backend = connssl->backend;
-
-  (void) data;
-
-  if(backend->handle) {
-    (void)SSL_shutdown(backend->handle);
-    SSL_free(backend->handle);
-    backend->handle = NULL;
-  }
-  if(backend->ctx) {
-    SSL_CTX_free(backend->ctx);
-    backend->ctx = NULL;
-  }
-}
-
-static ssize_t
-mesalink_recv(struct Curl_easy *data, int num, char *buf, size_t buffersize,
-              CURLcode *curlcode)
-{
-  struct connectdata *conn = data->conn;
-  struct ssl_connect_data *connssl = &conn->ssl[num];
-  struct ssl_backend_data *backend = connssl->backend;
-  char error_buffer[MESALINK_MAX_ERROR_SZ];
-  int buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
-  int nread = SSL_read(backend->handle, buf, buffsize);
-
-  if(nread <= 0) {
-    int err = SSL_get_error(backend->handle, nread);
-
-    switch(err) {
-    case SSL_ERROR_ZERO_RETURN: /* no more data */
-    case IO_ERROR_CONNECTION_ABORTED:
-      break;
-    case SSL_ERROR_WANT_READ:
-    case SSL_ERROR_WANT_WRITE:
-      /* there's data pending, re-invoke SSL_read() */
-      *curlcode = CURLE_AGAIN;
-      return -1;
-    default:
-      failf(data,
-            "SSL read: %s, errno %d",
-            ERR_error_string_n(err, error_buffer, sizeof(error_buffer)),
-            SOCKERRNO);
-      *curlcode = CURLE_RECV_ERROR;
-      return -1;
-    }
-  }
-  return nread;
-}
-
-static size_t
-mesalink_version(char *buffer, size_t size)
-{
-  return msnprintf(buffer, size, "MesaLink/%s", MESALINK_VERSION_STRING);
-}
-
-static int
-mesalink_init(void)
-{
-  return (SSL_library_init() == SSL_SUCCESS);
-}
-
-/*
- * This function is called to shut down the SSL layer but keep the
- * socket open (CCC - Clear Command Channel)
- */
-static int
-mesalink_shutdown(struct Curl_easy *data,
-                  struct connectdata *conn, int sockindex)
-{
-  int retval = 0;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  struct ssl_backend_data *backend = connssl->backend;
-
-  (void) data;
-
-  if(backend->handle) {
-    SSL_free(backend->handle);
-    backend->handle = NULL;
-  }
-  return retval;
-}
-
-static CURLcode
-mesalink_connect_common(struct Curl_easy *data, struct connectdata *conn,
-                        int sockindex, bool nonblocking, bool *done)
-{
-  CURLcode result;
-  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  curl_socket_t sockfd = conn->sock[sockindex];
-  timediff_t timeout_ms;
-  int what;
-
-  /* check if the connection has already been established */
-  if(ssl_connection_complete == connssl->state) {
-    *done = TRUE;
-    return CURLE_OK;
-  }
-
-  if(ssl_connect_1 == connssl->connecting_state) {
-    /* Find out how much more time we're allowed */
-    timeout_ms = Curl_timeleft(data, NULL, TRUE);
-
-    if(timeout_ms < 0) {
-      /* no need to continue if time already is up */
-      failf(data, "SSL connection timeout");
-      return CURLE_OPERATION_TIMEDOUT;
-    }
-
-    result = mesalink_connect_step1(data, conn, sockindex);
-    if(result)
-      return result;
-  }
-
-  while(ssl_connect_2 == connssl->connecting_state ||
-        ssl_connect_2_reading == connssl->connecting_state ||
-        ssl_connect_2_writing == connssl->connecting_state) {
-
-    /* check allowed time left */
-    timeout_ms = Curl_timeleft(data, NULL, TRUE);
-
-    if(timeout_ms < 0) {
-      /* no need to continue if time already is up */
-      failf(data, "SSL connection timeout");
-      return CURLE_OPERATION_TIMEDOUT;
-    }
-
-    /* if ssl is expecting something, check if it's available. */
-    if(connssl->connecting_state == ssl_connect_2_reading ||
-       connssl->connecting_state == ssl_connect_2_writing) {
-
-      curl_socket_t writefd =
-        ssl_connect_2_writing == connssl->connecting_state ? sockfd
-                                                           : CURL_SOCKET_BAD;
-      curl_socket_t readfd = ssl_connect_2_reading == connssl->connecting_state
-                               ? sockfd
-                               : CURL_SOCKET_BAD;
-
-      what = Curl_socket_check(readfd, CURL_SOCKET_BAD, writefd,
-                               nonblocking ? 0 : timeout_ms);
-      if(what < 0) {
-        /* fatal error */
-        failf(data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
-        return CURLE_SSL_CONNECT_ERROR;
-      }
-      else if(0 == what) {
-        if(nonblocking) {
-          *done = FALSE;
-          return CURLE_OK;
-        }
-        else {
-          /* timeout */
-          failf(data, "SSL connection timeout");
-          return CURLE_OPERATION_TIMEDOUT;
-        }
-      }
-      /* socket is readable or writable */
-    }
-
-    /* Run transaction, and return to the caller if it failed or if
-     * this connection is part of a multi handle and this loop would
-     * execute again. This permits the owner of a multi handle to
-     * abort a connection attempt before step2 has completed while
-     * ensuring that a client using select() or epoll() will always
-     * have a valid fdset to wait on.
-     */
-    result = mesalink_connect_step2(data, conn, sockindex);
-
-    if(result ||
-       (nonblocking && (ssl_connect_2 == connssl->connecting_state ||
-                        ssl_connect_2_reading == connssl->connecting_state ||
-                        ssl_connect_2_writing == connssl->connecting_state))) {
-      return result;
-    }
-  } /* repeat step2 until all transactions are done. */
-
-  if(ssl_connect_3 == connssl->connecting_state) {
-    result = mesalink_connect_step3(conn, sockindex);
-    if(result)
-      return result;
-  }
-
-  if(ssl_connect_done == connssl->connecting_state) {
-    connssl->state = ssl_connection_complete;
-    conn->recv[sockindex] = mesalink_recv;
-    conn->send[sockindex] = mesalink_send;
-    *done = TRUE;
-  }
-  else
-    *done = FALSE;
-
-  /* Reset our connect state machine */
-  connssl->connecting_state = ssl_connect_1;
-
-  return CURLE_OK;
-}
-
-static CURLcode
-mesalink_connect_nonblocking(struct Curl_easy *data, struct connectdata *conn,
-                             int sockindex, bool *done)
-{
-  return mesalink_connect_common(data, conn, sockindex, TRUE, done);
-}
-
-static CURLcode
-mesalink_connect(struct Curl_easy *data, struct connectdata *conn,
-                 int sockindex)
-{
-  CURLcode result;
-  bool done = FALSE;
-
-  result = mesalink_connect_common(data, conn, sockindex, FALSE, &done);
-  if(result)
-    return result;
-
-  DEBUGASSERT(done);
-
-  return CURLE_OK;
-}
-
-static void *
-mesalink_get_internals(struct ssl_connect_data *connssl,
-                       CURLINFO info UNUSED_PARAM)
-{
-  struct ssl_backend_data *backend = connssl->backend;
-  (void)info;
-  return backend->handle;
-}
-
-const struct Curl_ssl Curl_ssl_mesalink = {
-  { CURLSSLBACKEND_MESALINK, "MesaLink" }, /* info */
-
-  SSLSUPP_SSL_CTX,
-
-  sizeof(struct ssl_backend_data),
-
-  mesalink_init,                 /* init */
-  Curl_none_cleanup,             /* cleanup */
-  mesalink_version,              /* version */
-  Curl_none_check_cxn,           /* check_cxn */
-  mesalink_shutdown,             /* shutdown */
-  Curl_none_data_pending,        /* data_pending */
-  Curl_none_random,              /* random */
-  Curl_none_cert_status_request, /* cert_status_request */
-  mesalink_connect,              /* connect */
-  mesalink_connect_nonblocking,  /* connect_nonblocking */
-  Curl_ssl_getsock,              /* getsock */
-  mesalink_get_internals,        /* get_internals */
-  mesalink_close,                /* close_one */
-  Curl_none_close_all,           /* close_all */
-  Curl_none_session_free,        /* session_free */
-  Curl_none_set_engine,          /* set_engine */
-  Curl_none_set_engine_default,  /* set_engine_default */
-  Curl_none_engines_list,        /* engines_list */
-  Curl_none_false_start,         /* false_start */
-  NULL,                          /* sha256sum */
-  NULL,                          /* associate_connection */
-  NULL                           /* disassociate_connection */
-};
-
-#endif
diff --git a/lib/vtls/mesalink.h b/lib/vtls/mesalink.h
deleted file mode 100644 (file)
index 03f520c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef HEADER_CURL_MESALINK_H
-#define HEADER_CURL_MESALINK_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com>
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-#include "curl_setup.h"
-
-#ifdef USE_MESALINK
-
-extern const struct Curl_ssl Curl_ssl_mesalink;
-
-#endif /* USE_MESALINK */
-#endif /* HEADER_CURL_MESALINK_H */
index 2b44f0512658c37c0c108f77347531f92fdebbe2..12cf618f561700053d6076c8bd4afa153276922f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -334,7 +336,7 @@ static SECStatus set_ciphers(struct Curl_easy *data, PRFileDesc *model,
     char name[MAX_CIPHER_LENGTH + 1];
     size_t len;
     bool found = FALSE;
-    while((*cipher) && (ISSPACE(*cipher)))
+    while((*cipher) && (ISBLANK(*cipher)))
       ++cipher;
 
     end = strpbrk(cipher, ":, ");
@@ -434,7 +436,7 @@ static char *dup_nickname(struct Curl_easy *data, const char *str)
   /* search the first slash; we require at least one slash in a file name */
   n = strchr(str, '/');
   if(!n) {
-    infof(data, "warning: certificate file name \"%s\" handled as nickname; "
+    infof(data, "WARNING: certificate file name \"%s\" handled as nickname; "
           "please use \"./%s\" to force file name", str, str);
     return strdup(str);
   }
@@ -488,6 +490,9 @@ 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;
+
+  DEBUGASSERT(backend);
+
   if(!slot_name)
     return CURLE_OUT_OF_MEMORY;
 
@@ -845,7 +850,7 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
   unsigned int buflen;
   SSLNextProtoState state;
 
-  if(!conn->bits.tls_enable_npn && !conn->bits.tls_enable_alpn) {
+  if(!conn->bits.tls_enable_alpn) {
     return;
   }
 
@@ -859,31 +864,37 @@ static void HandshakeCallback(PRFileDesc *sock, void *arg)
 #endif
     case SSL_NEXT_PROTO_NO_SUPPORT:
     case SSL_NEXT_PROTO_NO_OVERLAP:
-      infof(data, "ALPN/NPN, server did not agree to a protocol");
+      infof(data, VTLS_INFOF_NO_ALPN);
       return;
 #ifdef SSL_ENABLE_ALPN
     case SSL_NEXT_PROTO_SELECTED:
-      infof(data, "ALPN, server accepted to use %.*s", buflen, buf);
+      infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, buflen, buf);
       break;
 #endif
-    case SSL_NEXT_PROTO_NEGOTIATED:
-      infof(data, "NPN, server accepted to use %.*s", buflen, buf);
+    default:
+      /* ignore SSL_NEXT_PROTO_NEGOTIATED */
       break;
     }
 
-#ifdef USE_NGHTTP2
+#ifdef USE_HTTP2
     if(buflen == ALPN_H2_LENGTH &&
        !memcmp(ALPN_H2, buf, ALPN_H2_LENGTH)) {
-      conn->negnpn = CURL_HTTP_VERSION_2;
+      conn->alpn = CURL_HTTP_VERSION_2;
     }
     else
 #endif
     if(buflen == ALPN_HTTP_1_1_LENGTH &&
        !memcmp(ALPN_HTTP_1_1, buf, ALPN_HTTP_1_1_LENGTH)) {
-      conn->negnpn = CURL_HTTP_VERSION_1_1;
+      conn->alpn = CURL_HTTP_VERSION_1_1;
     }
-    Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
-                        BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
+
+    /* This callback might get called when PR_Recv() is used within
+     * close_one() during a connection shutdown. At that point there might not
+     * be any "bundle" associated with the connection anymore.
+     */
+    if(conn->bundle)
+      Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
+                          BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
   }
 }
 
@@ -925,8 +936,8 @@ static SECStatus CanFalseStartCallback(PRFileDesc *sock, void *client_data,
   if(cipherInfo.symCipher != ssl_calg_aes_gcm)
     goto end;
 
-  /* Enforce ALPN or NPN to do False Start, as an indicator of server
-   * compatibility. */
+  /* Enforce ALPN to do False Start, as an indicator of server
+     compatibility. */
   rv = SSL_HandshakeNegotiatedExtension(sock, ssl_app_layer_protocol_xtn,
                                         &negotiatedExtension);
   if(rv != SECSuccess || !negotiatedExtension) {
@@ -974,6 +985,9 @@ static void display_cert_info(struct Curl_easy *data,
   PR_Free(common_name);
 }
 
+/* A number of certs that will never occur in a real server handshake */
+#define TOO_MANY_CERTS 300
+
 static CURLcode display_conn_info(struct Curl_easy *data, PRFileDesc *sock)
 {
   CURLcode result = CURLE_OK;
@@ -1009,6 +1023,11 @@ static CURLcode display_conn_info(struct Curl_easy *data, PRFileDesc *sock)
         cert2 = CERT_FindCertIssuer(cert, now, certUsageSSLCA);
         while(cert2) {
           i++;
+          if(i >= TOO_MANY_CERTS) {
+            CERT_DestroyCertificate(cert2);
+            failf(data, "certificate loop");
+            return CURLE_SSL_CERTPROBLEM;
+          }
           if(cert2->isRoot) {
             CERT_DestroyCertificate(cert2);
             break;
@@ -1105,9 +1124,12 @@ static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
 {
   CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
   struct ssl_backend_data *backend = connssl->backend;
-  struct Curl_easy *data = backend->data;
+  struct Curl_easy *data = NULL;
   CERTCertificate *cert;
 
+  DEBUGASSERT(backend);
+  data = backend->data;
+
   if(!pinnedpubkey)
     /* no pinned public key specified */
     return CURLE_OK;
@@ -1134,7 +1156,7 @@ static CURLcode cmp_peer_pubkey(struct ssl_connect_data *connssl,
   /* report the resulting status */
   switch(result) {
   case CURLE_OK:
-    infof(data, "pinned public key verified successfully!");
+    infof(data, "pinned public key verified successfully");
     break;
   case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
     failf(data, "failed to verify pinned public key");
@@ -1158,10 +1180,15 @@ static SECStatus SelectClientCert(void *arg, PRFileDesc *sock,
 {
   struct ssl_connect_data *connssl = (struct ssl_connect_data *)arg;
   struct ssl_backend_data *backend = connssl->backend;
-  struct Curl_easy *data = backend->data;
-  const char *nickname = backend->client_nickname;
+  struct Curl_easy *data = NULL;
+  const char *nickname = NULL;
   static const char pem_slotname[] = "PEM Token #1";
 
+  DEBUGASSERT(backend);
+
+  data = backend->data;
+  nickname = backend->client_nickname;
+
   if(backend->obj_clicert) {
     /* use the cert/key provided by PEM reader */
     SECItem cert_der = { 0, NULL, 0 };
@@ -1529,6 +1556,8 @@ static int nss_check_cxn(struct connectdata *conn)
   int rc;
   char buf;
 
+  DEBUGASSERT(backend);
+
   rc =
     PR_Recv(backend->handle, (void *)&buf, 1, PR_MSG_PEEK,
             PR_SecondsToInterval(1));
@@ -1545,7 +1574,11 @@ 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;
-  const bool client_cert = (backend->client_nickname != NULL)
+  bool client_cert = true;
+
+  DEBUGASSERT(backend);
+
+  client_cert = (backend->client_nickname != NULL)
     || (backend->obj_clicert != NULL);
 
   if(backend->handle) {
@@ -1587,8 +1620,13 @@ static void nss_close(struct Curl_easy *data, struct connectdata *conn,
   struct ssl_connect_data *connssl_proxy = &conn->proxy_ssl[sockindex];
 #endif
   struct ssl_backend_data *backend = connssl->backend;
-
   (void)data;
+
+  DEBUGASSERT(backend);
+#ifndef CURL_DISABLE_PROXY
+  DEBUGASSERT(connssl_proxy->backend != NULL);
+#endif
+
   if(backend->handle
 #ifndef CURL_DISABLE_PROXY
     || connssl_proxy->backend->handle
@@ -1720,7 +1758,7 @@ static CURLcode nss_load_ca_certificates(struct Curl_easy *data,
       PR_CloseDir(dir);
     }
     else
-      infof(data, "warning: CURLOPT_CAPATH not a directory (%s)", capath);
+      infof(data, "WARNING: CURLOPT_CAPATH not a directory (%s)", capath);
   }
 
   return CURLE_OK;
@@ -1816,6 +1854,8 @@ static CURLcode nss_fail_connect(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   if(is_nss_error(curlerr)) {
     /* read NSPR error code */
     PRErrorCode err = PR_GetError();
@@ -1842,6 +1882,9 @@ static CURLcode nss_set_blocking(struct ssl_connect_data *connssl,
 {
   PRSocketOptionData sock_opt;
   struct ssl_backend_data *backend = connssl->backend;
+
+  DEBUGASSERT(backend);
+
   sock_opt.option = PR_SockOpt_Nonblocking;
   sock_opt.value.non_blocking = !blocking;
 
@@ -1865,7 +1908,6 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
   CURLcode result;
   bool second_layer = FALSE;
   SSLVersionRange sslver_supported;
-
   SSLVersionRange sslver = {
     SSL_LIBRARY_VERSION_TLS_1_0,  /* min */
 #ifdef SSL_LIBRARY_VERSION_TLS_1_3
@@ -1878,6 +1920,13 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
     SSL_LIBRARY_VERSION_TLS_1_0
 #endif
   };
+  char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+  if(!snihost) {
+    failf(data, "Failed to set SNI");
+    return CURLE_SSL_CONNECT_ERROR;
+  }
+
+  DEBUGASSERT(backend);
 
   backend->data = data;
 
@@ -1946,11 +1995,11 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
   /* unless the user explicitly asks to allow the protocol vulnerability, we
      use the work-around */
   if(SSL_OptionSet(model, SSL_CBC_RANDOM_IV, ssl_cbc_random_iv) != SECSuccess)
-    infof(data, "warning: failed to set SSL_CBC_RANDOM_IV = %d",
+    infof(data, "WARNING: failed to set SSL_CBC_RANDOM_IV = %d",
           ssl_cbc_random_iv);
 #else
   if(ssl_cbc_random_iv)
-    infof(data, "warning: support for SSL_CBC_RANDOM_IV not compiled in");
+    infof(data, "WARNING: support for SSL_CBC_RANDOM_IV not compiled in");
 #endif
 
   if(SSL_CONN_CONFIG(cipher_list)) {
@@ -1961,7 +2010,7 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
   }
 
   if(!SSL_CONN_CONFIG(verifypeer) && SSL_CONN_CONFIG(verifyhost))
-    infof(data, "warning: ignoring value of ssl.verifyhost");
+    infof(data, "WARNING: ignoring value of ssl.verifyhost");
 
   /* bypass the default SSL_AuthCertificate() hook in case we do not want to
    * verify peer */
@@ -1981,20 +2030,20 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
     const CURLcode rv = nss_load_ca_certificates(data, conn, sockindex);
     if((rv == CURLE_SSL_CACERT_BADFILE) && !SSL_CONN_CONFIG(verifypeer))
       /* not a fatal error because we are not going to verify the peer */
-      infof(data, "warning: CA certificates failed to load");
+      infof(data, "WARNING: CA certificates failed to load");
     else if(rv) {
       result = rv;
       goto error;
     }
   }
 
-  if(SSL_SET_OPTION(CRLfile)) {
-    const CURLcode rv = nss_load_crl(SSL_SET_OPTION(CRLfile));
+  if(SSL_SET_OPTION(primary.CRLfile)) {
+    const CURLcode rv = nss_load_crl(SSL_SET_OPTION(primary.CRLfile));
     if(rv) {
       result = rv;
       goto error;
     }
-    infof(data, "  CRLfile: %s", SSL_SET_OPTION(CRLfile));
+    infof(data, "  CRLfile: %s", SSL_SET_OPTION(primary.CRLfile));
   }
 
   if(SSL_SET_OPTION(primary.clientcert)) {
@@ -2028,9 +2077,12 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
 
 #ifndef CURL_DISABLE_PROXY
   if(conn->proxy_ssl[sockindex].use) {
+    struct ssl_backend_data *proxy_backend;
+    proxy_backend = conn->proxy_ssl[sockindex].backend;
     DEBUGASSERT(ssl_connection_complete == conn->proxy_ssl[sockindex].state);
-    DEBUGASSERT(conn->proxy_ssl[sockindex].backend->handle != NULL);
-    nspr_io = conn->proxy_ssl[sockindex].backend->handle;
+    DEBUGASSERT(proxy_backend);
+    DEBUGASSERT(proxy_backend->handle);
+    nspr_io = proxy_backend->handle;
     second_layer = TRUE;
   }
 #endif
@@ -2084,12 +2136,6 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
   }
 #endif
 
-#ifdef SSL_ENABLE_NPN
-  if(SSL_OptionSet(backend->handle, SSL_ENABLE_NPN, conn->bits.tls_enable_npn
-                   ? PR_TRUE : PR_FALSE) != SECSuccess)
-    goto error;
-#endif
-
 #ifdef SSL_ENABLE_ALPN
   if(SSL_OptionSet(backend->handle, SSL_ENABLE_ALPN, conn->bits.tls_enable_alpn
                    ? PR_TRUE : PR_FALSE) != SECSuccess)
@@ -2108,15 +2154,15 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
   }
 #endif
 
-#if defined(SSL_ENABLE_NPN) || defined(SSL_ENABLE_ALPN)
-  if(conn->bits.tls_enable_npn || conn->bits.tls_enable_alpn) {
+#if defined(SSL_ENABLE_ALPN)
+  if(conn->bits.tls_enable_alpn) {
     int cur = 0;
     unsigned char protocols[128];
 
 #ifdef USE_HTTP2
     if(data->state.httpwant >= CURL_HTTP_VERSION_2
 #ifndef CURL_DISABLE_PROXY
-      && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
+       && (!SSL_IS_PROXY() || !conn->bits.tunnel_proxy)
 #endif
       ) {
       protocols[cur++] = ALPN_H2_LENGTH;
@@ -2140,11 +2186,11 @@ static CURLcode nss_setup_connect(struct Curl_easy *data,
     goto error;
 
   /* propagate hostname to the TLS layer */
-  if(SSL_SetURL(backend->handle, SSL_HOST_NAME()) != SECSuccess)
+  if(SSL_SetURL(backend->handle, snihost) != SECSuccess)
     goto error;
 
   /* prevent NSS from re-using the session for a different hostname */
-  if(SSL_SetSockPeerID(backend->handle, SSL_HOST_NAME()) != SECSuccess)
+  if(SSL_SetSockPeerID(backend->handle, snihost) != SECSuccess)
     goto error;
 
   return CURLE_OK;
@@ -2172,6 +2218,8 @@ static CURLcode nss_do_connect(struct Curl_easy *data,
     goto error;
   }
 
+  DEBUGASSERT(backend);
+
   /* Force the handshake now */
   timeout = PR_MillisecondsToInterval((PRUint32) time_left);
   if(SSL_ForceHandshakeWithTimeout(backend->handle, timeout) != SECSuccess) {
@@ -2305,6 +2353,8 @@ static ssize_t nss_send(struct Curl_easy *data,    /* transfer */
   struct ssl_backend_data *backend = connssl->backend;
   ssize_t rc;
 
+  DEBUGASSERT(backend);
+
   /* The SelectClientCert() hook uses this for infof() and failf() but the
      handle stored in nss_setup_connect() could have already been freed. */
   backend->data = data;
@@ -2344,6 +2394,8 @@ static ssize_t nss_recv(struct Curl_easy *data,    /* transfer */
   struct ssl_backend_data *backend = connssl->backend;
   ssize_t nread;
 
+  DEBUGASSERT(backend);
+
   /* The SelectClientCert() hook uses this for infof() and failf() but the
      handle stored in nss_setup_connect() could have already been freed. */
   backend->data = data;
@@ -2442,6 +2494,7 @@ static void *nss_get_internals(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
   (void)info;
+  DEBUGASSERT(backend);
   return backend->handle;
 }
 
index 37b364647b755e2d2be6d0a6ecd9f38d92c9aa93..454a38f1fb57009c5b97174e4c2317a288da8bc0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index f836c63b07eea0fc73ae9f30857b30a97723dc38..ad2efa5586e6f0f451bdd5255b181aab3e84173f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -27,7 +29,7 @@
 
 #include "curl_setup.h"
 
-#ifdef USE_OPENSSL
+#if defined(USE_QUICHE) || defined(USE_OPENSSL)
 
 #include <limits.h>
 
@@ -53,6 +55,7 @@
 #include "slist.h"
 #include "select.h"
 #include "vtls.h"
+#include "vauth/vauth.h"
 #include "keylog.h"
 #include "strcase.h"
 #include "hostcheck.h"
 #include <openssl/buffer.h>
 #include <openssl/pkcs12.h>
 
-#ifdef USE_AMISSL
-#include "amigaos.h"
-#endif
-
 #if (OPENSSL_VERSION_NUMBER >= 0x0090808fL) && !defined(OPENSSL_NO_OCSP)
 #include <openssl/ocsp.h>
 #endif
@@ -91,7 +90,6 @@
 #endif
 
 #include "warnless.h"
-#include "non-ascii.h" /* for Curl_convert_from_utf8 prototype */
 
 /* The last #include files should be: */
 #include "curl_memory.h"
      !defined(OPENSSL_IS_BORINGSSL))
 #define HAVE_SSL_CTX_SET_CIPHERSUITES
 #define HAVE_SSL_CTX_SET_POST_HANDSHAKE_AUTH
-/* SET_EC_CURVES is available under the same preconditions: see
- * https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups.html
+#endif
+
+/*
+ * Whether SSL_CTX_set1_curves_list is available.
+ * OpenSSL: supported since 1.0.2, see
+ *   https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups.html
+ * BoringSSL: supported since 5fd1807d95f7 (committed 2016-09-30)
+ * LibreSSL: since 2.5.3 (April 12, 2017)
  */
+#if (OPENSSL_VERSION_NUMBER >= 0x10002000L) ||  \
+  defined(OPENSSL_IS_BORINGSSL)
 #define HAVE_SSL_CTX_SET_EC_CURVES
 #endif
 
@@ -266,198 +272,536 @@ struct ssl_backend_data {
 #endif
 };
 
-static void ossl_associate_connection(struct Curl_easy *data,
-                                      struct connectdata *conn,
-                                      int sockindex);
-
-/*
- * Number of bytes to read from the random number seed file. This must be
- * a finite value (because some entropy "files" like /dev/urandom have
- * an infinite length), but must be large enough to provide enough
- * entropy to properly seed OpenSSL's PRNG.
- */
-#define RAND_LOAD_LENGTH 1024
+#define push_certinfo(_label, _num)             \
+do {                              \
+  long info_len = BIO_get_mem_data(mem, &ptr); \
+  Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
+  if(1 != BIO_reset(mem))                                        \
+    break;                                                       \
+} while(0)
 
-#ifdef HAVE_KEYLOG_CALLBACK
-static void ossl_keylog_callback(const SSL *ssl, const char *line)
+static void pubkey_show(struct Curl_easy *data,
+                        BIO *mem,
+                        int num,
+                        const char *type,
+                        const char *name,
+                        const BIGNUM *bn)
 {
-  (void)ssl;
+  char *ptr;
+  char namebuf[32];
 
-  Curl_tls_keylog_write_line(line);
+  msnprintf(namebuf, sizeof(namebuf), "%s(%s)", type, name);
+
+  if(bn)
+    BN_print(mem, bn);
+  push_certinfo(namebuf, num);
 }
-#else
-/*
- * ossl_log_tls12_secret is called by libcurl to make the CLIENT_RANDOMs if the
- * OpenSSL being used doesn't have native support for doing that.
- */
-static void
-ossl_log_tls12_secret(const SSL *ssl, bool *keylog_done)
-{
-  const SSL_SESSION *session = SSL_get_session(ssl);
-  unsigned char client_random[SSL3_RANDOM_SIZE];
-  unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH];
-  int master_key_length = 0;
 
-  if(!session || *keylog_done)
-    return;
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+#define print_pubkey_BN(_type, _name, _num)              \
+  pubkey_show(data, mem, _num, #_type, #_name, _name)
 
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
-    !(defined(LIBRESSL_VERSION_NUMBER) && \
-      LIBRESSL_VERSION_NUMBER < 0x20700000L)
-  /* ssl->s3 is not checked in openssl 1.1.0-pre6, but let's assume that
-   * we have a valid SSL context if we have a non-NULL session. */
-  SSL_get_client_random(ssl, client_random, SSL3_RANDOM_SIZE);
-  master_key_length = (int)
-    SSL_SESSION_get_master_key(session, master_key, SSL_MAX_MASTER_KEY_LENGTH);
 #else
-  if(ssl->s3 && session->master_key_length > 0) {
-    master_key_length = session->master_key_length;
-    memcpy(master_key, session->master_key, session->master_key_length);
-    memcpy(client_random, ssl->s3->client_random, SSL3_RANDOM_SIZE);
-  }
+#define print_pubkey_BN(_type, _name, _num)    \
+do {                              \
+  if(_type->_name) { \
+    pubkey_show(data, mem, _num, #_type, #_name, _type->_name); \
+  } \
+} while(0)
 #endif
 
-  /* The handshake has not progressed sufficiently yet, or this is a TLS 1.3
-   * session (when curl was built with older OpenSSL headers and running with
-   * newer OpenSSL runtime libraries). */
-  if(master_key_length <= 0)
-    return;
+static int asn1_object_dump(ASN1_OBJECT *a, char *buf, size_t len)
+{
+  int i, ilen;
 
-  *keylog_done = true;
-  Curl_tls_keylog_write("CLIENT_RANDOM", client_random,
-                        master_key, master_key_length);
-}
-#endif /* !HAVE_KEYLOG_CALLBACK */
+  ilen = (int)len;
+  if(ilen < 0)
+    return 1; /* buffer too big */
 
-static const char *SSL_ERROR_to_str(int err)
-{
-  switch(err) {
-  case SSL_ERROR_NONE:
-    return "SSL_ERROR_NONE";
-  case SSL_ERROR_SSL:
-    return "SSL_ERROR_SSL";
-  case SSL_ERROR_WANT_READ:
-    return "SSL_ERROR_WANT_READ";
-  case SSL_ERROR_WANT_WRITE:
-    return "SSL_ERROR_WANT_WRITE";
-  case SSL_ERROR_WANT_X509_LOOKUP:
-    return "SSL_ERROR_WANT_X509_LOOKUP";
-  case SSL_ERROR_SYSCALL:
-    return "SSL_ERROR_SYSCALL";
-  case SSL_ERROR_ZERO_RETURN:
-    return "SSL_ERROR_ZERO_RETURN";
-  case SSL_ERROR_WANT_CONNECT:
-    return "SSL_ERROR_WANT_CONNECT";
-  case SSL_ERROR_WANT_ACCEPT:
-    return "SSL_ERROR_WANT_ACCEPT";
-#if defined(SSL_ERROR_WANT_ASYNC)
-  case SSL_ERROR_WANT_ASYNC:
-    return "SSL_ERROR_WANT_ASYNC";
-#endif
-#if defined(SSL_ERROR_WANT_ASYNC_JOB)
-  case SSL_ERROR_WANT_ASYNC_JOB:
-    return "SSL_ERROR_WANT_ASYNC_JOB";
-#endif
-#if defined(SSL_ERROR_WANT_EARLY)
-  case SSL_ERROR_WANT_EARLY:
-    return "SSL_ERROR_WANT_EARLY";
-#endif
-  default:
-    return "SSL_ERROR unknown";
-  }
+  i = i2t_ASN1_OBJECT(buf, ilen, a);
+
+  if(i >= ilen)
+    return 1; /* buffer too small */
+
+  return 0;
 }
 
-/* Return error string for last OpenSSL error
- */
-static char *ossl_strerror(unsigned long error, char *buf, size_t size)
+static void X509V3_ext(struct Curl_easy *data,
+                      int certnum,
+                      CONST_EXTS STACK_OF(X509_EXTENSION) *exts)
 {
-  if(size)
-    *buf = '\0';
+  int i;
 
-#ifdef OPENSSL_IS_BORINGSSL
-  ERR_error_string_n((uint32_t)error, buf, size);
-#else
-  ERR_error_string_n(error, buf, size);
-#endif
+  if((int)sk_X509_EXTENSION_num(exts) <= 0)
+    /* no extensions, bail out */
+    return;
 
-  if(size > 1 && !*buf) {
-    strncpy(buf, (error ? "Unknown error" : "No error"), size);
-    buf[size - 1] = '\0';
-  }
+  for(i = 0; i < (int)sk_X509_EXTENSION_num(exts); i++) {
+    ASN1_OBJECT *obj;
+    X509_EXTENSION *ext = sk_X509_EXTENSION_value(exts, i);
+    BUF_MEM *biomem;
+    char namebuf[128];
+    BIO *bio_out = BIO_new(BIO_s_mem());
 
-  return buf;
-}
+    if(!bio_out)
+      return;
 
-/* Return an extra data index for the transfer data.
- * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
- */
-static int ossl_get_ssl_data_index(void)
-{
-  static int ssl_ex_data_data_index = -1;
-  if(ssl_ex_data_data_index < 0) {
-    ssl_ex_data_data_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
-  }
-  return ssl_ex_data_data_index;
-}
+    obj = X509_EXTENSION_get_object(ext);
 
-/* Return an extra data index for the connection data.
- * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
- */
-static int ossl_get_ssl_conn_index(void)
-{
-  static int ssl_ex_data_conn_index = -1;
-  if(ssl_ex_data_conn_index < 0) {
-    ssl_ex_data_conn_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
-  }
-  return ssl_ex_data_conn_index;
-}
+    asn1_object_dump(obj, namebuf, sizeof(namebuf));
 
-/* Return an extra data index for the sockindex.
- * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
- */
-static int ossl_get_ssl_sockindex_index(void)
-{
-  static int sockindex_index = -1;
-  if(sockindex_index < 0) {
-    sockindex_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+    if(!X509V3_EXT_print(bio_out, ext, 0, 0))
+      ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
+
+    BIO_get_mem_ptr(bio_out, &biomem);
+    Curl_ssl_push_certinfo_len(data, certnum, namebuf, biomem->data,
+                               biomem->length);
+    BIO_free(bio_out);
   }
-  return sockindex_index;
 }
 
-/* Return an extra data index for proxy boolean.
- * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
- */
-static int ossl_get_proxy_index(void)
+#ifdef OPENSSL_IS_BORINGSSL
+typedef size_t numcert_t;
+#else
+typedef int numcert_t;
+#endif
+
+CURLcode Curl_ossl_certchain(struct Curl_easy *data, SSL *ssl)
 {
-  static int proxy_index = -1;
-  if(proxy_index < 0) {
-    proxy_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+  CURLcode result;
+  STACK_OF(X509) *sk;
+  int i;
+  numcert_t numcerts;
+  BIO *mem;
+
+  DEBUGASSERT(ssl);
+
+  sk = SSL_get_peer_cert_chain(ssl);
+  if(!sk) {
+    return CURLE_OUT_OF_MEMORY;
   }
-  return proxy_index;
-}
 
-static int passwd_callback(char *buf, int num, int encrypting,
-                           void *global_passwd)
-{
-  DEBUGASSERT(0 == encrypting);
+  numcerts = sk_X509_num(sk);
 
-  if(!encrypting) {
-    int klen = curlx_uztosi(strlen((char *)global_passwd));
-    if(num > klen) {
-      memcpy(buf, global_passwd, klen + 1);
-      return klen;
-    }
+  result = Curl_ssl_init_certinfo(data, (int)numcerts);
+  if(result) {
+    return result;
   }
-  return 0;
-}
 
-/*
- * rand_enough() returns TRUE if we have seeded the random engine properly.
- */
-static bool rand_enough(void)
-{
-  return (0 != RAND_status()) ? TRUE : FALSE;
-}
+  mem = BIO_new(BIO_s_mem());
+  if(!mem) {
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  for(i = 0; i < (int)numcerts; i++) {
+    ASN1_INTEGER *num;
+    X509 *x = sk_X509_value(sk, i);
+    EVP_PKEY *pubkey = NULL;
+    int j;
+    char *ptr;
+    const ASN1_BIT_STRING *psig = NULL;
+
+    X509_NAME_print_ex(mem, X509_get_subject_name(x), 0, XN_FLAG_ONELINE);
+    push_certinfo("Subject", i);
+
+    X509_NAME_print_ex(mem, X509_get_issuer_name(x), 0, XN_FLAG_ONELINE);
+    push_certinfo("Issuer", i);
+
+    BIO_printf(mem, "%lx", X509_get_version(x));
+    push_certinfo("Version", i);
+
+    num = X509_get_serialNumber(x);
+    if(num->type == V_ASN1_NEG_INTEGER)
+      BIO_puts(mem, "-");
+    for(j = 0; j < num->length; j++)
+      BIO_printf(mem, "%02x", num->data[j]);
+    push_certinfo("Serial Number", i);
+
+#if defined(HAVE_X509_GET0_SIGNATURE) && defined(HAVE_X509_GET0_EXTENSIONS)
+    {
+      const X509_ALGOR *sigalg = NULL;
+      X509_PUBKEY *xpubkey = NULL;
+      ASN1_OBJECT *pubkeyoid = NULL;
+
+      X509_get0_signature(&psig, &sigalg, x);
+      if(sigalg) {
+        i2a_ASN1_OBJECT(mem, sigalg->algorithm);
+        push_certinfo("Signature Algorithm", i);
+      }
+
+      xpubkey = X509_get_X509_PUBKEY(x);
+      if(xpubkey) {
+        X509_PUBKEY_get0_param(&pubkeyoid, NULL, NULL, NULL, xpubkey);
+        if(pubkeyoid) {
+          i2a_ASN1_OBJECT(mem, pubkeyoid);
+          push_certinfo("Public Key Algorithm", i);
+        }
+      }
+
+      X509V3_ext(data, i, X509_get0_extensions(x));
+    }
+#else
+    {
+      /* before OpenSSL 1.0.2 */
+      X509_CINF *cinf = x->cert_info;
+
+      i2a_ASN1_OBJECT(mem, cinf->signature->algorithm);
+      push_certinfo("Signature Algorithm", i);
+
+      i2a_ASN1_OBJECT(mem, cinf->key->algor->algorithm);
+      push_certinfo("Public Key Algorithm", i);
+
+      X509V3_ext(data, i, cinf->extensions);
+
+      psig = x->signature;
+    }
+#endif
+
+    ASN1_TIME_print(mem, X509_get0_notBefore(x));
+    push_certinfo("Start date", i);
+
+    ASN1_TIME_print(mem, X509_get0_notAfter(x));
+    push_certinfo("Expire date", i);
+
+    pubkey = X509_get_pubkey(x);
+    if(!pubkey)
+      infof(data, "   Unable to load public key");
+    else {
+      int pktype;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+      pktype = EVP_PKEY_id(pubkey);
+#else
+      pktype = pubkey->type;
+#endif
+      switch(pktype) {
+      case EVP_PKEY_RSA:
+      {
+#ifndef HAVE_EVP_PKEY_GET_PARAMS
+        RSA *rsa;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+        rsa = EVP_PKEY_get0_RSA(pubkey);
+#else
+        rsa = pubkey->pkey.rsa;
+#endif /* HAVE_OPAQUE_EVP_PKEY */
+#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+
+        {
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+          DECLARE_PKEY_PARAM_BIGNUM(n);
+          DECLARE_PKEY_PARAM_BIGNUM(e);
+#ifdef HAVE_EVP_PKEY_GET_PARAMS
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_N, &n);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_E, &e);
+#else
+          RSA_get0_key(rsa, &n, &e, NULL);
+#endif /* HAVE_EVP_PKEY_GET_PARAMS */
+          BIO_printf(mem, "%d", BN_num_bits(n));
+#else
+          BIO_printf(mem, "%d", BN_num_bits(rsa->n));
+#endif /* HAVE_OPAQUE_RSA_DSA_DH */
+          push_certinfo("RSA Public Key", i);
+          print_pubkey_BN(rsa, n, i);
+          print_pubkey_BN(rsa, e, i);
+          FREE_PKEY_PARAM_BIGNUM(n);
+          FREE_PKEY_PARAM_BIGNUM(e);
+        }
+
+        break;
+      }
+      case EVP_PKEY_DSA:
+      {
+#ifndef OPENSSL_NO_DSA
+#ifndef HAVE_EVP_PKEY_GET_PARAMS
+        DSA *dsa;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+        dsa = EVP_PKEY_get0_DSA(pubkey);
+#else
+        dsa = pubkey->pkey.dsa;
+#endif /* HAVE_OPAQUE_EVP_PKEY */
+#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+        {
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+          DECLARE_PKEY_PARAM_BIGNUM(p);
+          DECLARE_PKEY_PARAM_BIGNUM(q);
+          DECLARE_PKEY_PARAM_BIGNUM(g);
+          DECLARE_PKEY_PARAM_BIGNUM(pub_key);
+#ifdef HAVE_EVP_PKEY_GET_PARAMS
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
+#else
+          DSA_get0_pqg(dsa, &p, &q, &g);
+          DSA_get0_key(dsa, &pub_key, NULL);
+#endif /* HAVE_EVP_PKEY_GET_PARAMS */
+#endif /* HAVE_OPAQUE_RSA_DSA_DH */
+          print_pubkey_BN(dsa, p, i);
+          print_pubkey_BN(dsa, q, i);
+          print_pubkey_BN(dsa, g, i);
+          print_pubkey_BN(dsa, pub_key, i);
+          FREE_PKEY_PARAM_BIGNUM(p);
+          FREE_PKEY_PARAM_BIGNUM(q);
+          FREE_PKEY_PARAM_BIGNUM(g);
+          FREE_PKEY_PARAM_BIGNUM(pub_key);
+        }
+#endif /* !OPENSSL_NO_DSA */
+        break;
+      }
+      case EVP_PKEY_DH:
+      {
+#ifndef HAVE_EVP_PKEY_GET_PARAMS
+        DH *dh;
+#ifdef HAVE_OPAQUE_EVP_PKEY
+        dh = EVP_PKEY_get0_DH(pubkey);
+#else
+        dh = pubkey->pkey.dh;
+#endif /* HAVE_OPAQUE_EVP_PKEY */
+#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+        {
+#ifdef HAVE_OPAQUE_RSA_DSA_DH
+          DECLARE_PKEY_PARAM_BIGNUM(p);
+          DECLARE_PKEY_PARAM_BIGNUM(q);
+          DECLARE_PKEY_PARAM_BIGNUM(g);
+          DECLARE_PKEY_PARAM_BIGNUM(pub_key);
+#ifdef HAVE_EVP_PKEY_GET_PARAMS
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
+          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
+#else
+          DH_get0_pqg(dh, &p, &q, &g);
+          DH_get0_key(dh, &pub_key, NULL);
+#endif /* HAVE_EVP_PKEY_GET_PARAMS */
+          print_pubkey_BN(dh, p, i);
+          print_pubkey_BN(dh, q, i);
+          print_pubkey_BN(dh, g, i);
+#else
+          print_pubkey_BN(dh, p, i);
+          print_pubkey_BN(dh, g, i);
+#endif /* HAVE_OPAQUE_RSA_DSA_DH */
+          print_pubkey_BN(dh, pub_key, i);
+          FREE_PKEY_PARAM_BIGNUM(p);
+          FREE_PKEY_PARAM_BIGNUM(q);
+          FREE_PKEY_PARAM_BIGNUM(g);
+          FREE_PKEY_PARAM_BIGNUM(pub_key);
+       }
+        break;
+      }
+      }
+      EVP_PKEY_free(pubkey);
+    }
+
+    if(psig) {
+      for(j = 0; j < psig->length; j++)
+        BIO_printf(mem, "%02x:", psig->data[j]);
+      push_certinfo("Signature", i);
+    }
+
+    PEM_write_bio_X509(mem, x);
+    push_certinfo("Cert", i);
+  }
+
+  BIO_free(mem);
+
+  return CURLE_OK;
+}
+
+#endif /* quiche or OpenSSL */
+
+#ifdef USE_OPENSSL
+
+static bool ossl_associate_connection(struct Curl_easy *data,
+                                      struct connectdata *conn,
+                                      int sockindex);
+
+/*
+ * Number of bytes to read from the random number seed file. This must be
+ * a finite value (because some entropy "files" like /dev/urandom have
+ * an infinite length), but must be large enough to provide enough
+ * entropy to properly seed OpenSSL's PRNG.
+ */
+#define RAND_LOAD_LENGTH 1024
+
+#ifdef HAVE_KEYLOG_CALLBACK
+static void ossl_keylog_callback(const SSL *ssl, const char *line)
+{
+  (void)ssl;
+
+  Curl_tls_keylog_write_line(line);
+}
+#else
+/*
+ * ossl_log_tls12_secret is called by libcurl to make the CLIENT_RANDOMs if the
+ * OpenSSL being used doesn't have native support for doing that.
+ */
+static void
+ossl_log_tls12_secret(const SSL *ssl, bool *keylog_done)
+{
+  const SSL_SESSION *session = SSL_get_session(ssl);
+  unsigned char client_random[SSL3_RANDOM_SIZE];
+  unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH];
+  int master_key_length = 0;
+
+  if(!session || *keylog_done)
+    return;
+
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+    !(defined(LIBRESSL_VERSION_NUMBER) && \
+      LIBRESSL_VERSION_NUMBER < 0x20700000L)
+  /* ssl->s3 is not checked in openssl 1.1.0-pre6, but let's assume that
+   * we have a valid SSL context if we have a non-NULL session. */
+  SSL_get_client_random(ssl, client_random, SSL3_RANDOM_SIZE);
+  master_key_length = (int)
+    SSL_SESSION_get_master_key(session, master_key, SSL_MAX_MASTER_KEY_LENGTH);
+#else
+  if(ssl->s3 && session->master_key_length > 0) {
+    master_key_length = session->master_key_length;
+    memcpy(master_key, session->master_key, session->master_key_length);
+    memcpy(client_random, ssl->s3->client_random, SSL3_RANDOM_SIZE);
+  }
+#endif
+
+  /* The handshake has not progressed sufficiently yet, or this is a TLS 1.3
+   * session (when curl was built with older OpenSSL headers and running with
+   * newer OpenSSL runtime libraries). */
+  if(master_key_length <= 0)
+    return;
+
+  *keylog_done = true;
+  Curl_tls_keylog_write("CLIENT_RANDOM", client_random,
+                        master_key, master_key_length);
+}
+#endif /* !HAVE_KEYLOG_CALLBACK */
+
+static const char *SSL_ERROR_to_str(int err)
+{
+  switch(err) {
+  case SSL_ERROR_NONE:
+    return "SSL_ERROR_NONE";
+  case SSL_ERROR_SSL:
+    return "SSL_ERROR_SSL";
+  case SSL_ERROR_WANT_READ:
+    return "SSL_ERROR_WANT_READ";
+  case SSL_ERROR_WANT_WRITE:
+    return "SSL_ERROR_WANT_WRITE";
+  case SSL_ERROR_WANT_X509_LOOKUP:
+    return "SSL_ERROR_WANT_X509_LOOKUP";
+  case SSL_ERROR_SYSCALL:
+    return "SSL_ERROR_SYSCALL";
+  case SSL_ERROR_ZERO_RETURN:
+    return "SSL_ERROR_ZERO_RETURN";
+  case SSL_ERROR_WANT_CONNECT:
+    return "SSL_ERROR_WANT_CONNECT";
+  case SSL_ERROR_WANT_ACCEPT:
+    return "SSL_ERROR_WANT_ACCEPT";
+#if defined(SSL_ERROR_WANT_ASYNC)
+  case SSL_ERROR_WANT_ASYNC:
+    return "SSL_ERROR_WANT_ASYNC";
+#endif
+#if defined(SSL_ERROR_WANT_ASYNC_JOB)
+  case SSL_ERROR_WANT_ASYNC_JOB:
+    return "SSL_ERROR_WANT_ASYNC_JOB";
+#endif
+#if defined(SSL_ERROR_WANT_EARLY)
+  case SSL_ERROR_WANT_EARLY:
+    return "SSL_ERROR_WANT_EARLY";
+#endif
+  default:
+    return "SSL_ERROR unknown";
+  }
+}
+
+/* Return error string for last OpenSSL error
+ */
+static char *ossl_strerror(unsigned long error, char *buf, size_t size)
+{
+  if(size)
+    *buf = '\0';
+
+#ifdef OPENSSL_IS_BORINGSSL
+  ERR_error_string_n((uint32_t)error, buf, size);
+#else
+  ERR_error_string_n(error, buf, size);
+#endif
+
+  if(size > 1 && !*buf) {
+    strncpy(buf, (error ? "Unknown error" : "No error"), size);
+    buf[size - 1] = '\0';
+  }
+
+  return buf;
+}
+
+/* Return an extra data index for the transfer data.
+ * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
+ */
+static int ossl_get_ssl_data_index(void)
+{
+  static int ssl_ex_data_data_index = -1;
+  if(ssl_ex_data_data_index < 0) {
+    ssl_ex_data_data_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+  }
+  return ssl_ex_data_data_index;
+}
+
+/* Return an extra data index for the connection data.
+ * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
+ */
+static int ossl_get_ssl_conn_index(void)
+{
+  static int ssl_ex_data_conn_index = -1;
+  if(ssl_ex_data_conn_index < 0) {
+    ssl_ex_data_conn_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+  }
+  return ssl_ex_data_conn_index;
+}
+
+/* Return an extra data index for the sockindex.
+ * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
+ */
+static int ossl_get_ssl_sockindex_index(void)
+{
+  static int sockindex_index = -1;
+  if(sockindex_index < 0) {
+    sockindex_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+  }
+  return sockindex_index;
+}
+
+/* Return an extra data index for proxy boolean.
+ * This index can be used with SSL_get_ex_data() and SSL_set_ex_data().
+ */
+static int ossl_get_proxy_index(void)
+{
+  static int proxy_index = -1;
+  if(proxy_index < 0) {
+    proxy_index = SSL_get_ex_new_index(0, NULL, NULL, NULL, NULL);
+  }
+  return proxy_index;
+}
+
+static int passwd_callback(char *buf, int num, int encrypting,
+                           void *global_passwd)
+{
+  DEBUGASSERT(0 == encrypting);
+
+  if(!encrypting) {
+    int klen = curlx_uztosi(strlen((char *)global_passwd));
+    if(num > klen) {
+      memcpy(buf, global_passwd, klen + 1);
+      return klen;
+    }
+  }
+  return 0;
+}
+
+/*
+ * rand_enough() returns TRUE if we have seeded the random engine properly.
+ */
+static bool rand_enough(void)
+{
+  return (0 != RAND_status()) ? TRUE : FALSE;
+}
 
 static CURLcode ossl_seed(struct Curl_easy *data)
 {
@@ -477,36 +821,19 @@ static CURLcode ossl_seed(struct Curl_easy *data)
   return CURLE_SSL_CONNECT_ERROR;
 #else
 
-#ifndef RANDOM_FILE
-  /* if RANDOM_FILE isn't defined, we only perform this if an option tells
-     us to! */
-  if(data->set.str[STRING_SSL_RANDOM_FILE])
-#define RANDOM_FILE "" /* doesn't matter won't be used */
+#ifdef RANDOM_FILE
+  RAND_load_file(RANDOM_FILE, RAND_LOAD_LENGTH);
+  if(rand_enough())
+    return CURLE_OK;
 #endif
-  {
-    /* let the option override the define */
-    RAND_load_file((data->set.str[STRING_SSL_RANDOM_FILE]?
-                    data->set.str[STRING_SSL_RANDOM_FILE]:
-                    RANDOM_FILE),
-                   RAND_LOAD_LENGTH);
-    if(rand_enough())
-      return CURLE_OK;
-  }
 
-#if defined(HAVE_RAND_EGD)
-  /* only available in OpenSSL 0.9.5 and later */
+#if defined(HAVE_RAND_EGD) && defined(EGD_SOCKET)
+  /* available in OpenSSL 0.9.5 and later */
   /* EGD_SOCKET is set at configure time or not at all */
-#ifndef EGD_SOCKET
-  /* If we don't have the define set, we only do this if the egd-option
-     is set */
-  if(data->set.str[STRING_SSL_EGDSOCKET])
-#define EGD_SOCKET "" /* doesn't matter won't be used */
-#endif
   {
     /* If there's an option and a define, the option overrides the
        define */
-    int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?
-                       data->set.str[STRING_SSL_EGDSOCKET]:EGD_SOCKET);
+    int ret = RAND_egd(EGD_SOCKET);
     if(-1 != ret) {
       if(rand_enough())
         return CURLE_OK;
@@ -549,7 +876,7 @@ static CURLcode ossl_seed(struct Curl_easy *data)
     }
   }
 
-  infof(data, "libcurl is now using a weak random seed!");
+  infof(data, "libcurl is now using a weak random seed");
   return (rand_enough() ? CURLE_OK :
           CURLE_SSL_CONNECT_ERROR /* confusing error code */);
 #endif
@@ -805,9 +1132,10 @@ int cert_stuff(struct Curl_easy *data,
         SSL_CTX_use_certificate_chain_file(ctx, cert_file);
       if(cert_use_result != 1) {
         failf(data,
-              "could not load PEM client certificate, " OSSL_PACKAGE
+              "could not load PEM client certificate from %s, " OSSL_PACKAGE
               " error %s, "
               "(no key found, wrong pass phrase, or wrong file format?)",
+              (cert_blob ? "CURLOPT_SSLCERT_BLOB" : cert_file),
               ossl_strerror(ERR_get_error(), error_buffer,
                             sizeof(error_buffer)) );
         return 0;
@@ -825,9 +1153,10 @@ int cert_stuff(struct Curl_easy *data,
         SSL_CTX_use_certificate_file(ctx, cert_file, file_type);
       if(cert_use_result != 1) {
         failf(data,
-              "could not load ASN1 client certificate, " OSSL_PACKAGE
+              "could not load ASN1 client certificate from %s, " OSSL_PACKAGE
               " error %s, "
               "(no key found, wrong pass phrase, or wrong file format?)",
+              (cert_blob ? "CURLOPT_SSLCERT_BLOB" : cert_file),
               ossl_strerror(ERR_get_error(), error_buffer,
                             sizeof(error_buffer)) );
         return 0;
@@ -880,8 +1209,9 @@ int cert_stuff(struct Curl_easy *data,
           }
 
           if(SSL_CTX_use_certificate(ctx, params.cert) != 1) {
-            failf(data, "unable to set client certificate");
-            X509_free(params.cert);
+            failf(data, "unable to set client certificate [%s]",
+                  ossl_strerror(ERR_get_error(), error_buffer,
+                                sizeof(error_buffer)));
             return 0;
           }
           X509_free(params.cert); /* we don't need the handle any more... */
@@ -1004,11 +1334,7 @@ int cert_stuff(struct Curl_easy *data,
   fail:
       EVP_PKEY_free(pri);
       X509_free(x509);
-#ifdef USE_AMISSL
-      sk_X509_pop_free(ca, Curl_amiga_X509_free);
-#else
       sk_X509_pop_free(ca, X509_free);
-#endif
       if(!cert_done)
         return 0; /* failure! */
       break;
@@ -1159,6 +1485,22 @@ int cert_stuff(struct Curl_easy *data,
   return 1;
 }
 
+CURLcode Curl_ossl_set_client_cert(struct Curl_easy *data, SSL_CTX *ctx,
+                                   char *cert_file,
+                                   const struct curl_blob *cert_blob,
+                                   const char *cert_type, char *key_file,
+                                   const struct curl_blob *key_blob,
+                                   const char *key_type, char *key_passwd)
+{
+  int rv = cert_stuff(data, ctx, cert_file, cert_blob, cert_type, key_file,
+                      key_blob, key_type, key_passwd);
+  if(rv != 1) {
+    return CURLE_SSL_CERTPROBLEM;
+  }
+
+  return CURLE_OK;
+}
+
 /* returns non-zero on failure */
 static int x509_name_oneline(X509_NAME *a, char *buf, size_t size)
 {
@@ -1432,6 +1774,9 @@ static void ossl_closeone(struct Curl_easy *data,
                           struct ssl_connect_data *connssl)
 {
   struct ssl_backend_data *backend = connssl->backend;
+
+  DEBUGASSERT(backend);
+
   if(backend->handle) {
     char buf[32];
     set_logger(conn, data);
@@ -1489,6 +1834,8 @@ static int ossl_shutdown(struct Curl_easy *data,
   struct ssl_backend_data *backend = connssl->backend;
   int loop = 10;
 
+  DEBUGASSERT(backend);
+
 #ifndef CURL_DISABLE_FTP
   /* This has only been tested on the proftpd server, and the mod_tls code
      sends a close notify alert without waiting for a close notify alert in
@@ -1610,54 +1957,26 @@ static void ossl_close_all(struct Curl_easy *data)
 /* ====================================================== */
 
 /*
- * Match subjectAltName against the host name. This requires a conversion
- * in CURL_DOES_CONVERSIONS builds.
+ * Match subjectAltName against the host name.
  */
 static bool subj_alt_hostcheck(struct Curl_easy *data,
-                               const char *match_pattern, const char *hostname,
+                               const char *match_pattern,
+                               size_t matchlen,
+                               const char *hostname,
+                               size_t hostlen,
                                const char *dispname)
-#ifdef CURL_DOES_CONVERSIONS
-{
-  bool res = FALSE;
-
-  /* Curl_cert_hostcheck uses host encoding, but we get ASCII from
-     OpenSSl.
-   */
-  char *match_pattern2 = strdup(match_pattern);
-
-  if(match_pattern2) {
-    if(Curl_convert_from_network(data, match_pattern2,
-                                strlen(match_pattern2)) == CURLE_OK) {
-      if(Curl_cert_hostcheck(match_pattern2, hostname)) {
-        res = TRUE;
-        infof(data,
-                " subjectAltName: host \"%s\" matched cert's \"%s\"",
-                dispname, match_pattern2);
-      }
-    }
-    free(match_pattern2);
-  }
-  else {
-    failf(data,
-        "SSL: out of memory when allocating temporary for subjectAltName");
-  }
-  return res;
-}
-#else
 {
 #ifdef CURL_DISABLE_VERBOSE_STRINGS
   (void)dispname;
   (void)data;
 #endif
-  if(Curl_cert_hostcheck(match_pattern, hostname)) {
+  if(Curl_cert_hostcheck(match_pattern, matchlen, hostname, hostlen)) {
     infof(data, " subjectAltName: host \"%s\" matched cert's \"%s\"",
                   dispname, match_pattern);
     return TRUE;
   }
   return FALSE;
 }
-#endif
-
 
 /* Quote from RFC2818 section 3.1 "Server Identity"
 
@@ -1698,6 +2017,7 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
   bool iPAddress = FALSE; /* if a iPAddress field exists in the cert */
   const char * const hostname = SSL_HOST_NAME();
   const char * const dispname = SSL_HOST_DISPNAME();
+  size_t hostlen = strlen(hostname);
 
 #ifdef ENABLE_IPV6
   if(conn->bits.ipv6_ip &&
@@ -1760,7 +2080,9 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
           if((altlen == strlen(altptr)) &&
              /* if this isn't true, there was an embedded zero in the name
                 string and we cannot match it. */
-             subj_alt_hostcheck(data, altptr, hostname, dispname)) {
+             subj_alt_hostcheck(data,
+                                altptr,
+                                altlen, hostname, hostlen, dispname)) {
             dnsmatched = TRUE;
           }
           break;
@@ -1796,17 +2118,17 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
   else {
     /* we have to look to the last occurrence of a commonName in the
        distinguished one to get the most significant one. */
-    int j, i = -1;
+    int i = -1;
+    unsigned char *peer_CN = NULL;
+    int peerlen = 0;
 
     /* The following is done because of a bug in 0.9.6b */
-
-    unsigned char *nulstr = (unsigned char *)"";
-    unsigned char *peer_CN = nulstr;
-
     X509_NAME *name = X509_get_subject_name(server_cert);
-    if(name)
+    if(name) {
+      int j;
       while((j = X509_NAME_get_index_by_NID(name, NID_commonName, i)) >= 0)
         i = j;
+    }
 
     /* we have the name entry and we will now convert this to a string
        that we can use for comparison. Doing this we support BMPstring,
@@ -1822,19 +2144,21 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
          conditional in the future when OpenSSL has been fixed. */
       if(tmp) {
         if(ASN1_STRING_type(tmp) == V_ASN1_UTF8STRING) {
-          j = ASN1_STRING_length(tmp);
-          if(j >= 0) {
-            peer_CN = OPENSSL_malloc(j + 1);
+          peerlen = ASN1_STRING_length(tmp);
+          if(peerlen >= 0) {
+            peer_CN = OPENSSL_malloc(peerlen + 1);
             if(peer_CN) {
-              memcpy(peer_CN, ASN1_STRING_get0_data(tmp), j);
-              peer_CN[j] = '\0';
+              memcpy(peer_CN, ASN1_STRING_get0_data(tmp), peerlen);
+              peer_CN[peerlen] = '\0';
             }
+            else
+              result = CURLE_OUT_OF_MEMORY;
           }
         }
         else /* not a UTF8 name */
-          j = ASN1_STRING_to_UTF8(&peer_CN, tmp);
+          peerlen = ASN1_STRING_to_UTF8(&peer_CN, tmp);
 
-        if(peer_CN && (curlx_uztosi(strlen((char *)peer_CN)) != j)) {
+        if(peer_CN && (curlx_uztosi(strlen((char *)peer_CN)) != peerlen)) {
           /* there was a terminating zero before the end of string, this
              cannot match and we return failure! */
           failf(data, "SSL: illegal cert name field");
@@ -1843,19 +2167,6 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
       }
     }
 
-    if(peer_CN == nulstr)
-       peer_CN = NULL;
-    else {
-      /* convert peer_CN from UTF8 */
-      CURLcode rc = Curl_convert_from_utf8(data, (char *)peer_CN,
-                                           strlen((char *)peer_CN));
-      /* Curl_convert_from_utf8 calls failf if unsuccessful */
-      if(rc) {
-        OPENSSL_free(peer_CN);
-        return rc;
-      }
-    }
-
     if(result)
       /* error already detected, pass through */
       ;
@@ -1864,7 +2175,8 @@ CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
             "SSL: unable to obtain common name from peer certificate");
       result = CURLE_PEER_FAILED_VERIFICATION;
     }
-    else if(!Curl_cert_hostcheck((const char *)peer_CN, hostname)) {
+    else if(!Curl_cert_hostcheck((const char *)peer_CN,
+                                 peerlen, hostname, hostlen)) {
       failf(data, "SSL: certificate subject name '%s' does not match "
             "target host name '%s'", peer_CN, dispname);
       result = CURLE_PEER_FAILED_VERIFICATION;
@@ -1898,8 +2210,11 @@ static CURLcode verifystatus(struct Curl_easy *data,
   int cert_status, crl_reason;
   ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
   int ret;
+  long len;
 
-  long len = SSL_get_tlsext_status_ocsp_resp(backend->handle, &status);
+  DEBUGASSERT(backend);
+
+  len = SSL_get_tlsext_status_ocsp_resp(backend->handle, &status);
 
   if(!status) {
     failf(data, "No OCSP response received");
@@ -1930,6 +2245,11 @@ static CURLcode verifystatus(struct Curl_easy *data,
   }
 
   ch = SSL_get_peer_cert_chain(backend->handle);
+  if(!ch) {
+    failf(data, "Could not get peer certificate chain");
+    result = CURLE_SSL_INVALIDCERTSTATUS;
+    goto end;
+  }
   st = SSL_CTX_get_cert_store(backend->ctx);
 
 #if ((OPENSSL_VERSION_NUMBER <= 0x1000201fL) /* Fixed after 1.0.2a */ || \
@@ -2158,7 +2478,10 @@ static void ossl_trace(int direction, int ssl_ver, int content_type,
   struct connectdata *conn = userp;
   struct ssl_connect_data *connssl = &conn->ssl[0];
   struct ssl_backend_data *backend = connssl->backend;
-  struct Curl_easy *data = backend->logger;
+  struct Curl_easy *data = NULL;
+
+  DEBUGASSERT(backend);
+  data = backend->logger;
 
   if(!conn || !data || !data->set.fdebug ||
      (direction != 0 && direction != 1))
@@ -2270,72 +2593,6 @@ static void ossl_trace(int direction, int ssl_ver, int content_type,
 #  define HAS_ALPN 1
 #endif
 
-/* Check for OpenSSL 1.0.1 which has NPN support. */
-#undef HAS_NPN
-#if OPENSSL_VERSION_NUMBER >= 0x10001000L \
-    && !defined(OPENSSL_NO_TLSEXT) \
-    && !defined(OPENSSL_NO_NEXTPROTONEG)
-#  define HAS_NPN 1
-#endif
-
-#ifdef HAS_NPN
-
-/*
- * in is a list of length prefixed strings. this function has to select
- * the protocol we want to use from the list and write its string into out.
- */
-
-static int
-select_next_protocol(unsigned char **out, unsigned char *outlen,
-                     const unsigned char *in, unsigned int inlen,
-                     const char *key, unsigned int keylen)
-{
-  unsigned int i;
-  for(i = 0; i + keylen <= inlen; i += in[i] + 1) {
-    if(memcmp(&in[i + 1], key, keylen) == 0) {
-      *out = (unsigned char *) &in[i + 1];
-      *outlen = in[i];
-      return 0;
-    }
-  }
-  return -1;
-}
-
-static int
-select_next_proto_cb(SSL *ssl,
-                     unsigned char **out, unsigned char *outlen,
-                     const unsigned char *in, unsigned int inlen,
-                     void *arg)
-{
-  struct Curl_easy *data = (struct Curl_easy *)arg;
-  struct connectdata *conn = data->conn;
-  (void)ssl;
-
-#ifdef USE_HTTP2
-  if(data->state.httpwant >= CURL_HTTP_VERSION_2 &&
-     !select_next_protocol(out, outlen, in, inlen, ALPN_H2, ALPN_H2_LENGTH)) {
-    infof(data, "NPN, negotiated HTTP2 (%s)", ALPN_H2);
-    conn->negnpn = CURL_HTTP_VERSION_2;
-    return SSL_TLSEXT_ERR_OK;
-  }
-#endif
-
-  if(!select_next_protocol(out, outlen, in, inlen, ALPN_HTTP_1_1,
-                           ALPN_HTTP_1_1_LENGTH)) {
-    infof(data, "NPN, negotiated HTTP1.1");
-    conn->negnpn = CURL_HTTP_VERSION_1_1;
-    return SSL_TLSEXT_ERR_OK;
-  }
-
-  infof(data, "NPN, no overlap, use HTTP1.1");
-  *out = (unsigned char *)ALPN_HTTP_1_1;
-  *outlen = ALPN_HTTP_1_1_LENGTH;
-  conn->negnpn = CURL_HTTP_VERSION_1_1;
-
-  return SSL_TLSEXT_ERR_OK;
-}
-#endif /* HAS_NPN */
-
 #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) /* 1.1.0 */
 static CURLcode
 set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
@@ -2363,10 +2620,12 @@ set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
     case CURL_SSLVERSION_TLSv1_2:
       ossl_ssl_version_min = TLS1_2_VERSION;
       break;
-#ifdef TLS1_3_VERSION
     case CURL_SSLVERSION_TLSv1_3:
+#ifdef TLS1_3_VERSION
       ossl_ssl_version_min = TLS1_3_VERSION;
       break;
+#else
+      return CURLE_NOT_BUILT_IN;
 #endif
   }
 
@@ -2422,6 +2681,8 @@ set_ssl_version_min_max(SSL_CTX *ctx, struct connectdata *conn)
 
 #ifdef OPENSSL_IS_BORINGSSL
 typedef uint32_t ctx_option_t;
+#elif OPENSSL_VERSION_NUMBER >= 0x30000000L
+typedef uint64_t ctx_option_t;
 #else
 typedef long ctx_option_t;
 #endif
@@ -2442,6 +2703,8 @@ set_ssl_version_min_max_legacy(ctx_option_t *ctx_options,
 #ifdef TLS1_3_VERSION
     {
       struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+      struct ssl_backend_data *backend = connssl->backend;
+      DEBUGASSERT(backend);
       SSL_CTX_set_max_proto_version(backend->ctx, TLS1_3_VERSION);
       *ctx_options |= SSL_OP_NO_TLSv1_2;
     }
@@ -2521,13 +2784,12 @@ static int ossl_new_session_cb(SSL *ssl, SSL_SESSION *ssl_sessionid)
     return 0;
 
   conn = (struct connectdata*) SSL_get_ex_data(ssl, connectdata_idx);
-  if(!conn)
-    return 0;
-
   data = (struct Curl_easy *) SSL_get_ex_data(ssl, data_idx);
-
   /* The sockindex has been stored as a pointer to an array element */
   sockindex_ptr = (curl_socket_t*) SSL_get_ex_data(ssl, sockindex_idx);
+  if(!conn || !data || !sockindex_ptr)
+    return 0;
+
   sockindex = (int)(sockindex_ptr - conn->sock);
 
   isproxy = SSL_get_ex_data(ssl, proxy_idx) ? TRUE : FALSE;
@@ -2653,7 +2915,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
 #endif
   const long int ssl_version = SSL_CONN_CONFIG(version);
 #ifdef USE_OPENSSL_SRP
-  const enum CURL_TLSAUTH ssl_authtype = SSL_SET_OPTION(authtype);
+  const enum CURL_TLSAUTH ssl_authtype = SSL_SET_OPTION(primary.authtype);
 #endif
   char * const ssl_cert = SSL_SET_OPTION(primary.clientcert);
   const struct curl_blob *ssl_cert_blob = SSL_SET_OPTION(primary.cert_blob);
@@ -2664,12 +2926,13 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
     (ca_info_blob ? NULL : SSL_CONN_CONFIG(CAfile));
   const char * const ssl_capath = SSL_CONN_CONFIG(CApath);
   const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
-  const char * const ssl_crlfile = SSL_SET_OPTION(CRLfile);
+  const char * const ssl_crlfile = SSL_SET_OPTION(primary.CRLfile);
   char error_buffer[256];
   struct ssl_backend_data *backend = connssl->backend;
   bool imported_native_ca = false;
 
   DEBUGASSERT(ssl_connect_1 == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   /* Make funny stuff to get random input */
   result = ossl_seed(data);
@@ -2736,8 +2999,8 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
      implementations is desired."
 
      The "-no_ticket" option was introduced in OpenSSL 0.9.8j. It's a flag to
-     disable "rfc4507bis session ticket support".  rfc4507bis was later turned
-     into the proper RFC5077 it seems: https://tools.ietf.org/html/rfc5077
+     disable "rfc4507bis session ticket support". rfc4507bis was later turned
+     into the proper RFC5077: https://datatracker.ietf.org/doc/html/rfc5077
 
      The enabled extension concerns the session management. I wonder how often
      libcurl stops a connection and then resumes a TLS session. Also, sending
@@ -2820,11 +3083,6 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
 
   SSL_CTX_set_options(backend->ctx, ctx_options);
 
-#ifdef HAS_NPN
-  if(conn->bits.tls_enable_npn)
-    SSL_CTX_set_next_proto_select_cb(backend->ctx, select_next_proto_cb, data);
-#endif
-
 #ifdef HAS_ALPN
   if(conn->bits.tls_enable_alpn) {
     int cur = 0;
@@ -2840,14 +3098,14 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
 
       memcpy(&protocols[cur], ALPN_H2, ALPN_H2_LENGTH);
       cur += ALPN_H2_LENGTH;
-      infof(data, "ALPN, offering %s", ALPN_H2);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
     }
 #endif
 
     protocols[cur++] = ALPN_HTTP_1_1_LENGTH;
     memcpy(&protocols[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
     cur += ALPN_HTTP_1_1_LENGTH;
-    infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+    infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
 
     /* expects length prefixed preference ordered list of protocols in wire
      * format
@@ -2913,16 +3171,17 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
 #endif
 
 #ifdef USE_OPENSSL_SRP
-  if(ssl_authtype == CURL_TLSAUTH_SRP) {
-    char * const ssl_username = SSL_SET_OPTION(username);
-
+  if((ssl_authtype == CURL_TLSAUTH_SRP) &&
+     Curl_auth_allowed_to_host(data)) {
+    char * const ssl_username = SSL_SET_OPTION(primary.username);
+    char * const ssl_password = SSL_SET_OPTION(primary.password);
     infof(data, "Using TLS-SRP username: %s", ssl_username);
 
     if(!SSL_CTX_set_srp_username(backend->ctx, ssl_username)) {
       failf(data, "Unable to set SRP user name");
       return CURLE_BAD_FUNCTION_ARGUMENT;
     }
-    if(!SSL_CTX_set_srp_password(backend->ctx, SSL_SET_OPTION(password))) {
+    if(!SSL_CTX_set_srp_password(backend->ctx, ssl_password)) {
       failf(data, "failed setting SRP password");
       return CURLE_BAD_FUNCTION_ARGUMENT;
     }
@@ -2942,7 +3201,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
   /* Import certificates from the Windows root certificate store if requested.
      https://stackoverflow.com/questions/9507184/
      https://github.com/d3x0r/SACK/blob/master/src/netlib/ssl_layer.c#L1037
-     https://tools.ietf.org/html/rfc5280 */
+     https://datatracker.ietf.org/doc/html/rfc5280 */
   if((SSL_CONN_CONFIG(verifypeer) || SSL_CONN_CONFIG(verifyhost)) &&
      (SSL_SET_OPTION(native_ca_store))) {
     X509_STORE *store = SSL_CTX_get_cert_store(backend->ctx);
@@ -3220,7 +3479,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
     SSL_free(backend->handle);
   backend->handle = SSL_new(backend->ctx);
   if(!backend->handle) {
-    failf(data, "SSL: couldn't create a context (handle)!");
+    failf(data, "SSL: couldn't create a context (handle)");
     return CURLE_OUT_OF_MEMORY;
   }
 
@@ -3243,44 +3502,48 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
      (0 == Curl_inet_pton(AF_INET6, hostname, &addr)) &&
 #endif
      sni) {
-    size_t nlen = strlen(hostname);
-    if((long)nlen >= data->set.buffer_size)
-      /* this is seriously messed up */
+    char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+    if(!snihost || !SSL_set_tlsext_host_name(backend->handle, snihost)) {
+      failf(data, "Failed set SNI");
       return CURLE_SSL_CONNECT_ERROR;
-
-    /* RFC 6066 section 3 says the SNI field is case insensitive, but browsers
-       send the data lowercase and subsequently there are now numerous servers
-       out there that don't work unless the name is lowercased */
-    Curl_strntolower(data->state.buffer, hostname, nlen);
-    data->state.buffer[nlen] = 0;
-    if(!SSL_set_tlsext_host_name(backend->handle, data->state.buffer))
-      infof(data, "WARNING: failed to configure server name indication (SNI) "
-            "TLS extension");
+    }
   }
 #endif
 
-  ossl_associate_connection(data, conn, sockindex);
+  if(!ossl_associate_connection(data, conn, sockindex)) {
+    /* Maybe the internal errors of SSL_get_ex_new_index or SSL_set_ex_data */
+    failf(data, "SSL: ossl_associate_connection failed: %s",
+          ossl_strerror(ERR_get_error(), error_buffer,
+                        sizeof(error_buffer)));
+    return CURLE_SSL_CONNECT_ERROR;
+  }
 
-  Curl_ssl_sessionid_lock(data);
-  if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
-                            &ssl_sessionid, NULL, sockindex)) {
-    /* we got a session id, use it! */
-    if(!SSL_set_session(backend->handle, ssl_sessionid)) {
-      Curl_ssl_sessionid_unlock(data);
-      failf(data, "SSL: SSL_set_session failed: %s",
-            ossl_strerror(ERR_get_error(), error_buffer,
-                          sizeof(error_buffer)));
-      return CURLE_SSL_CONNECT_ERROR;
+  if(SSL_SET_OPTION(primary.sessionid)) {
+    Curl_ssl_sessionid_lock(data);
+    if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
+                              &ssl_sessionid, NULL, sockindex)) {
+      /* we got a session id, use it! */
+      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
+        Curl_ssl_sessionid_unlock(data);
+        failf(data, "SSL: SSL_set_session failed: %s",
+              ossl_strerror(ERR_get_error(), error_buffer,
+                            sizeof(error_buffer)));
+        return CURLE_SSL_CONNECT_ERROR;
+      }
+      /* Informational message */
+      infof(data, "SSL re-using session ID");
     }
-    /* Informational message */
-    infof(data, "SSL re-using session ID");
+    Curl_ssl_sessionid_unlock(data);
   }
-  Curl_ssl_sessionid_unlock(data);
 
 #ifndef CURL_DISABLE_PROXY
   if(conn->proxy_ssl[sockindex].use) {
     BIO *const bio = BIO_new(BIO_f_ssl());
-    SSL *handle = conn->proxy_ssl[sockindex].backend->handle;
+    struct ssl_backend_data *proxy_backend;
+    SSL* handle = NULL;
+    proxy_backend = conn->proxy_ssl[sockindex].backend;
+    DEBUGASSERT(proxy_backend);
+    handle = proxy_backend->handle;
     DEBUGASSERT(ssl_connection_complete == conn->proxy_ssl[sockindex].state);
     DEBUGASSERT(handle != NULL);
     DEBUGASSERT(bio != NULL);
@@ -3310,6 +3573,7 @@ static CURLcode ossl_connect_step2(struct Curl_easy *data,
   DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
               || ssl_connect_2_reading == connssl->connecting_state
               || ssl_connect_2_writing == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   ERR_clear_error();
 
@@ -3366,439 +3630,105 @@ static CURLcode ossl_connect_step2(struct Curl_easy *data,
       if((lib == ERR_LIB_SSL) &&
          ((reason == SSL_R_CERTIFICATE_VERIFY_FAILED) ||
           (reason == SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED))) {
-        result = CURLE_PEER_FAILED_VERIFICATION;
-
-        lerr = SSL_get_verify_result(backend->handle);
-        if(lerr != X509_V_OK) {
-          SSL_SET_OPTION_LVALUE(certverifyresult) = lerr;
-          msnprintf(error_buffer, sizeof(error_buffer),
-                    "SSL certificate problem: %s",
-                    X509_verify_cert_error_string(lerr));
-        }
-        else
-          /* strcpy() is fine here as long as the string fits within
-             error_buffer */
-          strcpy(error_buffer, "SSL certificate verification failed");
-      }
-#if (OPENSSL_VERSION_NUMBER >= 0x10101000L && \
-    !defined(LIBRESSL_VERSION_NUMBER) && \
-    !defined(OPENSSL_IS_BORINGSSL))
-      /* SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED is only available on
-         OpenSSL version above v1.1.1, not LibreSSL nor BoringSSL */
-      else if((lib == ERR_LIB_SSL) &&
-              (reason == SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED)) {
-          /* If client certificate is required, communicate the
-             error to client */
-          result = CURLE_SSL_CLIENTCERT;
-          ossl_strerror(errdetail, error_buffer, sizeof(error_buffer));
-      }
-#endif
-      else {
-        result = CURLE_SSL_CONNECT_ERROR;
-        ossl_strerror(errdetail, error_buffer, sizeof(error_buffer));
-      }
-
-      /* detail is already set to the SSL error above */
-
-      /* If we e.g. use SSLv2 request-method and the server doesn't like us
-       * (RST connection, etc.), OpenSSL gives no explanation whatsoever and
-       * the SO_ERROR is also lost.
-       */
-      if(CURLE_SSL_CONNECT_ERROR == result && errdetail == 0) {
-        const char * const hostname = SSL_HOST_NAME();
-        const long int port = SSL_HOST_PORT();
-        char extramsg[80]="";
-        int sockerr = SOCKERRNO;
-        if(sockerr && detail == SSL_ERROR_SYSCALL)
-          Curl_strerror(sockerr, extramsg, sizeof(extramsg));
-        failf(data, OSSL_PACKAGE " SSL_connect: %s in connection to %s:%ld ",
-              extramsg[0] ? extramsg : SSL_ERROR_to_str(detail),
-              hostname, port);
-        return result;
-      }
-
-      /* Could be a CERT problem */
-      failf(data, "%s", error_buffer);
-
-      return result;
-    }
-  }
-  else {
-    /* we connected fine, we're not waiting for anything else. */
-    connssl->connecting_state = ssl_connect_3;
-
-    /* Informational message */
-    infof(data, "SSL connection using %s / %s",
-          SSL_get_version(backend->handle),
-          SSL_get_cipher(backend->handle));
-
-#ifdef HAS_ALPN
-    /* Sets data and len to negotiated protocol, len is 0 if no protocol was
-     * negotiated
-     */
-    if(conn->bits.tls_enable_alpn) {
-      const unsigned char *neg_protocol;
-      unsigned int len;
-      SSL_get0_alpn_selected(backend->handle, &neg_protocol, &len);
-      if(len) {
-        infof(data, "ALPN, server accepted to use %.*s", len, neg_protocol);
-
-#ifdef USE_HTTP2
-        if(len == ALPN_H2_LENGTH &&
-           !memcmp(ALPN_H2, neg_protocol, len)) {
-          conn->negnpn = CURL_HTTP_VERSION_2;
-        }
-        else
-#endif
-        if(len == ALPN_HTTP_1_1_LENGTH &&
-           !memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) {
-          conn->negnpn = CURL_HTTP_VERSION_1_1;
-        }
-      }
-      else
-        infof(data, "ALPN, server did not agree to a protocol");
-
-      Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
-                          BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
-    }
-#endif
-
-    return CURLE_OK;
-  }
-}
-
-static int asn1_object_dump(ASN1_OBJECT *a, char *buf, size_t len)
-{
-  int i, ilen;
-
-  ilen = (int)len;
-  if(ilen < 0)
-    return 1; /* buffer too big */
-
-  i = i2t_ASN1_OBJECT(buf, ilen, a);
-
-  if(i >= ilen)
-    return 1; /* buffer too small */
-
-  return 0;
-}
-
-#define push_certinfo(_label, _num) \
-do {                              \
-  long info_len = BIO_get_mem_data(mem, &ptr); \
-  Curl_ssl_push_certinfo_len(data, _num, _label, ptr, info_len); \
-  if(1 != BIO_reset(mem))                                        \
-    break;                                                       \
-} while(0)
-
-static void pubkey_show(struct Curl_easy *data,
-                        BIO *mem,
-                        int num,
-                        const char *type,
-                        const char *name,
-                        const BIGNUM *bn)
-{
-  char *ptr;
-  char namebuf[32];
-
-  msnprintf(namebuf, sizeof(namebuf), "%s(%s)", type, name);
-
-  if(bn)
-    BN_print(mem, bn);
-  push_certinfo(namebuf, num);
-}
-
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
-#define print_pubkey_BN(_type, _name, _num)              \
-  pubkey_show(data, mem, _num, #_type, #_name, _name)
-
-#else
-#define print_pubkey_BN(_type, _name, _num)    \
-do {                              \
-  if(_type->_name) { \
-    pubkey_show(data, mem, _num, #_type, #_name, _type->_name); \
-  } \
-} while(0)
-#endif
-
-static void X509V3_ext(struct Curl_easy *data,
-                      int certnum,
-                      CONST_EXTS STACK_OF(X509_EXTENSION) *exts)
-{
-  int i;
-
-  if((int)sk_X509_EXTENSION_num(exts) <= 0)
-    /* no extensions, bail out */
-    return;
-
-  for(i = 0; i < (int)sk_X509_EXTENSION_num(exts); i++) {
-    ASN1_OBJECT *obj;
-    X509_EXTENSION *ext = sk_X509_EXTENSION_value(exts, i);
-    BUF_MEM *biomem;
-    char namebuf[128];
-    BIO *bio_out = BIO_new(BIO_s_mem());
-
-    if(!bio_out)
-      return;
-
-    obj = X509_EXTENSION_get_object(ext);
-
-    asn1_object_dump(obj, namebuf, sizeof(namebuf));
-
-    if(!X509V3_EXT_print(bio_out, ext, 0, 0))
-      ASN1_STRING_print(bio_out, (ASN1_STRING *)X509_EXTENSION_get_data(ext));
-
-    BIO_get_mem_ptr(bio_out, &biomem);
-    Curl_ssl_push_certinfo_len(data, certnum, namebuf, biomem->data,
-                               biomem->length);
-    BIO_free(bio_out);
-  }
-}
-
-#ifdef OPENSSL_IS_BORINGSSL
-typedef size_t numcert_t;
-#else
-typedef int numcert_t;
-#endif
-
-static CURLcode get_cert_chain(struct Curl_easy *data,
-                               struct ssl_connect_data *connssl)
-{
-  CURLcode result;
-  STACK_OF(X509) *sk;
-  int i;
-  numcert_t numcerts;
-  BIO *mem;
-  struct ssl_backend_data *backend = connssl->backend;
-
-  sk = SSL_get_peer_cert_chain(backend->handle);
-  if(!sk) {
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  numcerts = sk_X509_num(sk);
-
-  result = Curl_ssl_init_certinfo(data, (int)numcerts);
-  if(result) {
-    return result;
-  }
-
-  mem = BIO_new(BIO_s_mem());
-  if(!mem) {
-    return CURLE_OUT_OF_MEMORY;
-  }
-
-  for(i = 0; i < (int)numcerts; i++) {
-    ASN1_INTEGER *num;
-    X509 *x = sk_X509_value(sk, i);
-    EVP_PKEY *pubkey = NULL;
-    int j;
-    char *ptr;
-    const ASN1_BIT_STRING *psig = NULL;
-
-    X509_NAME_print_ex(mem, X509_get_subject_name(x), 0, XN_FLAG_ONELINE);
-    push_certinfo("Subject", i);
-
-    X509_NAME_print_ex(mem, X509_get_issuer_name(x), 0, XN_FLAG_ONELINE);
-    push_certinfo("Issuer", i);
-
-    BIO_printf(mem, "%lx", X509_get_version(x));
-    push_certinfo("Version", i);
-
-    num = X509_get_serialNumber(x);
-    if(num->type == V_ASN1_NEG_INTEGER)
-      BIO_puts(mem, "-");
-    for(j = 0; j < num->length; j++)
-      BIO_printf(mem, "%02x", num->data[j]);
-    push_certinfo("Serial Number", i);
-
-#if defined(HAVE_X509_GET0_SIGNATURE) && defined(HAVE_X509_GET0_EXTENSIONS)
-    {
-      const X509_ALGOR *sigalg = NULL;
-      X509_PUBKEY *xpubkey = NULL;
-      ASN1_OBJECT *pubkeyoid = NULL;
-
-      X509_get0_signature(&psig, &sigalg, x);
-      if(sigalg) {
-        i2a_ASN1_OBJECT(mem, sigalg->algorithm);
-        push_certinfo("Signature Algorithm", i);
-      }
+        result = CURLE_PEER_FAILED_VERIFICATION;
 
-      xpubkey = X509_get_X509_PUBKEY(x);
-      if(xpubkey) {
-        X509_PUBKEY_get0_param(&pubkeyoid, NULL, NULL, NULL, xpubkey);
-        if(pubkeyoid) {
-          i2a_ASN1_OBJECT(mem, pubkeyoid);
-          push_certinfo("Public Key Algorithm", i);
+        lerr = SSL_get_verify_result(backend->handle);
+        if(lerr != X509_V_OK) {
+          SSL_SET_OPTION_LVALUE(certverifyresult) = lerr;
+          msnprintf(error_buffer, sizeof(error_buffer),
+                    "SSL certificate problem: %s",
+                    X509_verify_cert_error_string(lerr));
         }
+        else
+          /* strcpy() is fine here as long as the string fits within
+             error_buffer */
+          strcpy(error_buffer, "SSL certificate verification failed");
+      }
+#if (OPENSSL_VERSION_NUMBER >= 0x10101000L && \
+    !defined(LIBRESSL_VERSION_NUMBER) && \
+    !defined(OPENSSL_IS_BORINGSSL))
+      /* SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED is only available on
+         OpenSSL version above v1.1.1, not LibreSSL nor BoringSSL */
+      else if((lib == ERR_LIB_SSL) &&
+              (reason == SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED)) {
+          /* If client certificate is required, communicate the
+             error to client */
+          result = CURLE_SSL_CLIENTCERT;
+          ossl_strerror(errdetail, error_buffer, sizeof(error_buffer));
+      }
+#endif
+      else {
+        result = CURLE_SSL_CONNECT_ERROR;
+        ossl_strerror(errdetail, error_buffer, sizeof(error_buffer));
       }
 
-      X509V3_ext(data, i, X509_get0_extensions(x));
-    }
-#else
-    {
-      /* before OpenSSL 1.0.2 */
-      X509_CINF *cinf = x->cert_info;
-
-      i2a_ASN1_OBJECT(mem, cinf->signature->algorithm);
-      push_certinfo("Signature Algorithm", i);
+      /* detail is already set to the SSL error above */
 
-      i2a_ASN1_OBJECT(mem, cinf->key->algor->algorithm);
-      push_certinfo("Public Key Algorithm", i);
+      /* If we e.g. use SSLv2 request-method and the server doesn't like us
+       * (RST connection, etc.), OpenSSL gives no explanation whatsoever and
+       * the SO_ERROR is also lost.
+       */
+      if(CURLE_SSL_CONNECT_ERROR == result && errdetail == 0) {
+        const char * const hostname = SSL_HOST_NAME();
+        const long int port = SSL_HOST_PORT();
+        char extramsg[80]="";
+        int sockerr = SOCKERRNO;
+        if(sockerr && detail == SSL_ERROR_SYSCALL)
+          Curl_strerror(sockerr, extramsg, sizeof(extramsg));
+        failf(data, OSSL_PACKAGE " SSL_connect: %s in connection to %s:%ld ",
+              extramsg[0] ? extramsg : SSL_ERROR_to_str(detail),
+              hostname, port);
+        return result;
+      }
 
-      X509V3_ext(data, i, cinf->extensions);
+      /* Could be a CERT problem */
+      failf(data, "%s", error_buffer);
 
-      psig = x->signature;
+      return result;
     }
-#endif
-
-    ASN1_TIME_print(mem, X509_get0_notBefore(x));
-    push_certinfo("Start date", i);
+  }
+  else {
+    /* we connected fine, we're not waiting for anything else. */
+    connssl->connecting_state = ssl_connect_3;
 
-    ASN1_TIME_print(mem, X509_get0_notAfter(x));
-    push_certinfo("Expire date", i);
+    /* Informational message */
+    infof(data, "SSL connection using %s / %s",
+          SSL_get_version(backend->handle),
+          SSL_get_cipher(backend->handle));
 
-    pubkey = X509_get_pubkey(x);
-    if(!pubkey)
-      infof(data, "   Unable to load public key");
-    else {
-      int pktype;
-#ifdef HAVE_OPAQUE_EVP_PKEY
-      pktype = EVP_PKEY_id(pubkey);
-#else
-      pktype = pubkey->type;
-#endif
-      switch(pktype) {
-      case EVP_PKEY_RSA:
-      {
-#ifndef HAVE_EVP_PKEY_GET_PARAMS
-        RSA *rsa;
-#ifdef HAVE_OPAQUE_EVP_PKEY
-        rsa = EVP_PKEY_get0_RSA(pubkey);
-#else
-        rsa = pubkey->pkey.rsa;
-#endif /* HAVE_OPAQUE_EVP_PKEY */
-#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
+#ifdef HAS_ALPN
+    /* Sets data and len to negotiated protocol, len is 0 if no protocol was
+     * negotiated
+     */
+    if(conn->bits.tls_enable_alpn) {
+      const unsigned char *neg_protocol;
+      unsigned int len;
+      SSL_get0_alpn_selected(backend->handle, &neg_protocol, &len);
+      if(len) {
+        infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, len, neg_protocol);
 
-        {
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
-          DECLARE_PKEY_PARAM_BIGNUM(n);
-          DECLARE_PKEY_PARAM_BIGNUM(e);
-#ifdef HAVE_EVP_PKEY_GET_PARAMS
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_N, &n);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_RSA_E, &e);
-#else
-          RSA_get0_key(rsa, &n, &e, NULL);
-#endif /* HAVE_EVP_PKEY_GET_PARAMS */
-          BIO_printf(mem, "%d", BN_num_bits(n));
-#else
-          BIO_printf(mem, "%d", BN_num_bits(rsa->n));
-#endif /* HAVE_OPAQUE_RSA_DSA_DH */
-          push_certinfo("RSA Public Key", i);
-          print_pubkey_BN(rsa, n, i);
-          print_pubkey_BN(rsa, e, i);
-          FREE_PKEY_PARAM_BIGNUM(n);
-          FREE_PKEY_PARAM_BIGNUM(e);
+#ifdef USE_HTTP2
+        if(len == ALPN_H2_LENGTH &&
+           !memcmp(ALPN_H2, neg_protocol, len)) {
+          conn->alpn = CURL_HTTP_VERSION_2;
         }
-
-        break;
-      }
-      case EVP_PKEY_DSA:
-      {
-#ifndef OPENSSL_NO_DSA
-#ifndef HAVE_EVP_PKEY_GET_PARAMS
-        DSA *dsa;
-#ifdef HAVE_OPAQUE_EVP_PKEY
-        dsa = EVP_PKEY_get0_DSA(pubkey);
-#else
-        dsa = pubkey->pkey.dsa;
-#endif /* HAVE_OPAQUE_EVP_PKEY */
-#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
-        {
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
-          DECLARE_PKEY_PARAM_BIGNUM(p);
-          DECLARE_PKEY_PARAM_BIGNUM(q);
-          DECLARE_PKEY_PARAM_BIGNUM(g);
-          DECLARE_PKEY_PARAM_BIGNUM(pub_key);
-#ifdef HAVE_EVP_PKEY_GET_PARAMS
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
-#else
-          DSA_get0_pqg(dsa, &p, &q, &g);
-          DSA_get0_key(dsa, &pub_key, NULL);
-#endif /* HAVE_EVP_PKEY_GET_PARAMS */
-#endif /* HAVE_OPAQUE_RSA_DSA_DH */
-          print_pubkey_BN(dsa, p, i);
-          print_pubkey_BN(dsa, q, i);
-          print_pubkey_BN(dsa, g, i);
-          print_pubkey_BN(dsa, pub_key, i);
-          FREE_PKEY_PARAM_BIGNUM(p);
-          FREE_PKEY_PARAM_BIGNUM(q);
-          FREE_PKEY_PARAM_BIGNUM(g);
-          FREE_PKEY_PARAM_BIGNUM(pub_key);
+        else
+#endif
+        if(len == ALPN_HTTP_1_1_LENGTH &&
+           !memcmp(ALPN_HTTP_1_1, neg_protocol, ALPN_HTTP_1_1_LENGTH)) {
+          conn->alpn = CURL_HTTP_VERSION_1_1;
         }
-#endif /* !OPENSSL_NO_DSA */
-        break;
-      }
-      case EVP_PKEY_DH:
-      {
-#ifndef HAVE_EVP_PKEY_GET_PARAMS
-        DH *dh;
-#ifdef HAVE_OPAQUE_EVP_PKEY
-        dh = EVP_PKEY_get0_DH(pubkey);
-#else
-        dh = pubkey->pkey.dh;
-#endif /* HAVE_OPAQUE_EVP_PKEY */
-#endif /* !HAVE_EVP_PKEY_GET_PARAMS */
-        {
-#ifdef HAVE_OPAQUE_RSA_DSA_DH
-          DECLARE_PKEY_PARAM_BIGNUM(p);
-          DECLARE_PKEY_PARAM_BIGNUM(q);
-          DECLARE_PKEY_PARAM_BIGNUM(g);
-          DECLARE_PKEY_PARAM_BIGNUM(pub_key);
-#ifdef HAVE_EVP_PKEY_GET_PARAMS
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_P, &p);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_Q, &q);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_FFC_G, &g);
-          EVP_PKEY_get_bn_param(pubkey, OSSL_PKEY_PARAM_PUB_KEY, &pub_key);
-#else
-          DH_get0_pqg(dh, &p, &q, &g);
-          DH_get0_key(dh, &pub_key, NULL);
-#endif /* HAVE_EVP_PKEY_GET_PARAMS */
-          print_pubkey_BN(dh, p, i);
-          print_pubkey_BN(dh, q, i);
-          print_pubkey_BN(dh, g, i);
-#else
-          print_pubkey_BN(dh, p, i);
-          print_pubkey_BN(dh, g, i);
-#endif /* HAVE_OPAQUE_RSA_DSA_DH */
-          print_pubkey_BN(dh, pub_key, i);
-          FREE_PKEY_PARAM_BIGNUM(p);
-          FREE_PKEY_PARAM_BIGNUM(q);
-          FREE_PKEY_PARAM_BIGNUM(g);
-          FREE_PKEY_PARAM_BIGNUM(pub_key);
-       }
-        break;
-      }
       }
-      EVP_PKEY_free(pubkey);
-    }
+      else
+        infof(data, VTLS_INFOF_NO_ALPN);
 
-    if(psig) {
-      for(j = 0; j < psig->length; j++)
-        BIO_printf(mem, "%02x:", psig->data[j]);
-      push_certinfo("Signature", i);
+      Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
+                          BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
     }
+#endif
 
-    PEM_write_bio_X509(mem, x);
-    push_certinfo("Cert", i);
+    return CURLE_OK;
   }
-
-  BIO_free(mem);
-
-  return CURLE_OK;
 }
 
 /*
@@ -3883,6 +3813,8 @@ static CURLcode servercert(struct Curl_easy *data,
   BIO *mem = BIO_new(BIO_s_mem());
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   if(!mem) {
     failf(data,
           "BIO_new return NULL, " OSSL_PACKAGE
@@ -3893,8 +3825,8 @@ static CURLcode servercert(struct Curl_easy *data,
   }
 
   if(data->set.ssl.certinfo)
-    /* we've been asked to gather certificate info! */
-    (void)get_cert_chain(data, connssl);
+    /* asked to gather certificate info */
+    (void)Curl_ossl_certchain(data, connssl->backend->handle);
 
   backend->server_cert = SSL_get1_peer_certificate(backend->handle);
   if(!backend->server_cert) {
@@ -3902,7 +3834,7 @@ static CURLcode servercert(struct Curl_easy *data,
     if(!strict)
       return CURLE_OK;
 
-    failf(data, "SSL: couldn't get peer certificate!");
+    failf(data, "SSL: couldn't get peer certificate");
     return CURLE_PEER_FAILED_VERIFICATION;
   }
 
@@ -3942,7 +3874,7 @@ static CURLcode servercert(struct Curl_easy *data,
                          buffer, sizeof(buffer));
   if(rc) {
     if(strict)
-      failf(data, "SSL: couldn't get X509-issuer name!");
+      failf(data, "SSL: couldn't get X509-issuer name");
     result = CURLE_PEER_FAILED_VERIFICATION;
   }
   else {
@@ -3953,9 +3885,20 @@ static CURLcode servercert(struct Curl_easy *data,
 
     /* e.g. match issuer name with provided issuer certificate */
     if(SSL_CONN_CONFIG(issuercert) || SSL_CONN_CONFIG(issuercert_blob)) {
-      if(SSL_CONN_CONFIG(issuercert_blob))
+      if(SSL_CONN_CONFIG(issuercert_blob)) {
         fp = BIO_new_mem_buf(SSL_CONN_CONFIG(issuercert_blob)->data,
                              (int)SSL_CONN_CONFIG(issuercert_blob)->len);
+        if(!fp) {
+          failf(data,
+                "BIO_new_mem_buf NULL, " OSSL_PACKAGE
+                " error %s",
+                ossl_strerror(ERR_get_error(), error_buffer,
+                              sizeof(error_buffer)) );
+          X509_free(backend->server_cert);
+          backend->server_cert = NULL;
+          return CURLE_OUT_OF_MEMORY;
+        }
+      }
       else {
         fp = BIO_new(BIO_s_file());
         if(!fp) {
@@ -4049,7 +3992,7 @@ static CURLcode servercert(struct Curl_easy *data,
   if(!result && ptr) {
     result = pkp_pin_peer_pubkey(data, backend->server_cert, ptr);
     if(result)
-      failf(data, "SSL: public key does not match pinned public key!");
+      failf(data, "SSL: public key does not match pinned public key");
   }
 
   X509_free(backend->server_cert);
@@ -4222,11 +4165,13 @@ static bool ossl_data_pending(const struct connectdata *conn,
                               int connindex)
 {
   const struct ssl_connect_data *connssl = &conn->ssl[connindex];
+  DEBUGASSERT(connssl->backend);
   if(connssl->backend->handle && SSL_pending(connssl->backend->handle))
     return TRUE;
 #ifndef CURL_DISABLE_PROXY
   {
     const struct ssl_connect_data *proxyssl = &conn->proxy_ssl[connindex];
+    DEBUGASSERT(proxyssl->backend);
     if(proxyssl->backend->handle && SSL_pending(proxyssl->backend->handle))
       return TRUE;
   }
@@ -4253,6 +4198,8 @@ static ssize_t ossl_send(struct Curl_easy *data,
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   ERR_clear_error();
 
   memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
@@ -4332,6 +4279,8 @@ static ssize_t ossl_recv(struct Curl_easy *data,   /* transfer */
   struct ssl_connect_data *connssl = &conn->ssl[num];
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   ERR_clear_error();
 
   buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
@@ -4420,7 +4369,7 @@ static size_t ossl_version(char *buffer, size_t size)
   }
   count = msnprintf(buffer, size, "%s/%s", OSSL_PACKAGE, ver);
   for(p = buffer; *p; ++p) {
-    if(ISSPACE(*p))
+    if(ISBLANK(*p))
       *p = '_';
   }
   return count;
@@ -4432,7 +4381,13 @@ static size_t ossl_version(char *buffer, size_t size)
                    (LIBRESSL_VERSION_NUMBER>>12)&0xff);
 #endif
 #elif defined(OPENSSL_IS_BORINGSSL)
+#ifdef CURL_BORINGSSL_VERSION
+  return msnprintf(buffer, size, "%s/%s",
+                   OSSL_PACKAGE,
+                   CURL_BORINGSSL_VERSION);
+#else
   return msnprintf(buffer, size, OSSL_PACKAGE);
+#endif
 #elif defined(HAVE_OPENSSL_VERSION) && defined(OPENSSL_VERSION_STRING)
   return msnprintf(buffer, size, "%s/%s",
                    OSSL_PACKAGE, OpenSSL_version(OPENSSL_VERSION_STRING));
@@ -4531,20 +4486,22 @@ static void *ossl_get_internals(struct ssl_connect_data *connssl,
 {
   /* Legacy: CURLINFO_TLS_SESSION must return an SSL_CTX pointer. */
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   return info == CURLINFO_TLS_SESSION ?
          (void *)backend->ctx : (void *)backend->handle;
 }
 
-static void ossl_associate_connection(struct Curl_easy *data,
+static bool ossl_associate_connection(struct Curl_easy *data,
                                       struct connectdata *conn,
                                       int sockindex)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
 
   /* If we don't have SSL context, do nothing. */
   if(!backend->handle)
-    return;
+    return FALSE;
 
   if(SSL_SET_OPTION(primary.sessionid)) {
     int data_idx = ossl_get_ssl_data_index();
@@ -4554,19 +4511,26 @@ static void ossl_associate_connection(struct Curl_easy *data,
 
     if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0 &&
        proxy_idx >= 0) {
+      int data_status, conn_status, sockindex_status, proxy_status;
+
       /* Store the data needed for the "new session" callback.
        * The sockindex is stored as a pointer to an array element. */
-      SSL_set_ex_data(backend->handle, data_idx, data);
-      SSL_set_ex_data(backend->handle, connectdata_idx, conn);
-      SSL_set_ex_data(backend->handle, sockindex_idx, conn->sock + sockindex);
+      data_status = SSL_set_ex_data(backend->handle, data_idx, data);
+      conn_status = SSL_set_ex_data(backend->handle, connectdata_idx, conn);
+      sockindex_status = SSL_set_ex_data(backend->handle, sockindex_idx,
+                                         conn->sock + sockindex);
 #ifndef CURL_DISABLE_PROXY
-      SSL_set_ex_data(backend->handle, proxy_idx, SSL_IS_PROXY() ? (void *) 1:
-                      NULL);
+      proxy_status = SSL_set_ex_data(backend->handle, proxy_idx,
+                                     SSL_IS_PROXY() ? (void *) 1 : NULL);
 #else
-      SSL_set_ex_data(backend->handle, proxy_idx, NULL);
+      proxy_status = SSL_set_ex_data(backend->handle, proxy_idx, NULL);
 #endif
+      if(data_status && conn_status && sockindex_status && proxy_status)
+        return TRUE;
     }
+    return FALSE;
   }
+  return TRUE;
 }
 
 /*
@@ -4583,6 +4547,7 @@ static void ossl_disassociate_connection(struct Curl_easy *data,
   struct connectdata *conn = data->conn;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
 
   /* If we don't have SSL context, do nothing. */
   if(!backend->handle)
index 28058453c0b37ec2ca9174862723e9e6fbb8b54d..9df4ecddbad7c52694d4bf8b08a520f94ae1cfb6 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
  * This header should only be needed to get included by vtls.c, openssl.c
  * and ngtcp2.c
  */
+#include <openssl/ssl.h>
 
-#include <openssl/x509v3.h>
 #include "urldata.h"
 
+/*
+ * In an effort to avoid using 'X509 *' here, we instead use the struct
+ * x509_st version of the type so that we can forward-declare it here without
+ * having to include <openssl/x509v3.h>. Including that header causes name
+ * conflicts when libcurl is built with both Schannel and OpenSSL support.
+ */
+struct x509_st;
 CURLcode Curl_ossl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
-                              X509 *server_cert);
+                              struct x509_st *server_cert);
 extern const struct Curl_ssl Curl_ssl_openssl;
 
+struct ssl_ctx_st;
+CURLcode Curl_ossl_set_client_cert(struct Curl_easy *data,
+                                   struct ssl_ctx_st *ctx, char *cert_file,
+                                   const struct curl_blob *cert_blob,
+                                   const char *cert_type, char *key_file,
+                                   const struct curl_blob *key_blob,
+                                   const char *key_type, char *key_passwd);
+
+CURLcode Curl_ossl_certchain(struct Curl_easy *data, SSL *ssl);
+
 #endif /* USE_OPENSSL */
 #endif /* HEADER_CURL_SSLUSE_H */
index 6dbb1ef3cd7ba8f6b75f9ad74e633737ad66438d..77a49f1ab4323455297f96eb055a5ac71ab62eab 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Jacob Hoffman-Andrews,
+ * Copyright (C) 2020 - 2022, Jacob Hoffman-Andrews,
  * <github@hoffman-andrews.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * 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"
 
@@ -65,6 +67,7 @@ cr_data_pending(const struct connectdata *conn, int sockindex)
 {
   const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   return backend->data_pending;
 }
 
@@ -118,7 +121,8 @@ cr_recv(struct Curl_easy *data, int sockindex,
   struct connectdata *conn = data->conn;
   struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *const backend = connssl->backend;
-  struct rustls_connection *const rconn = backend->conn;
+  struct rustls_connection *rconn = NULL;
+
   size_t n = 0;
   size_t tls_bytes_read = 0;
   size_t plain_bytes_copied = 0;
@@ -126,6 +130,9 @@ cr_recv(struct Curl_easy *data, int sockindex,
   char errorbuf[255];
   rustls_io_result io_error;
 
+  DEBUGASSERT(backend);
+  rconn = backend->conn;
+
   io_error = rustls_connection_read_tls(rconn, read_cb,
     &conn->sock[sockindex], &tls_bytes_read);
   if(io_error == EAGAIN || io_error == EWOULDBLOCK) {
@@ -215,13 +222,16 @@ cr_send(struct Curl_easy *data, int sockindex,
   struct connectdata *conn = data->conn;
   struct ssl_connect_data *const connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *const backend = connssl->backend;
-  struct rustls_connection *const rconn = backend->conn;
+  struct rustls_connection *rconn = NULL;
   size_t plainwritten = 0;
   size_t tlswritten = 0;
   size_t tlswritten_total = 0;
   rustls_result rresult;
   rustls_io_result io_error;
 
+  DEBUGASSERT(backend);
+  rconn = backend->conn;
+
   infof(data, "cr_send %ld bytes of plaintext", plainlen);
 
   if(plainlen > 0) {
@@ -295,9 +305,13 @@ static CURLcode
 cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
                 struct ssl_backend_data *const backend)
 {
-  struct rustls_connection *rconn = backend->conn;
+  struct rustls_connection *rconn = NULL;
   struct rustls_client_config_builder *config_builder = NULL;
-  const char *const ssl_cafile = SSL_CONN_CONFIG(CAfile);
+  struct rustls_root_cert_store *roots = NULL;
+  const struct curl_blob *ca_info_blob = SSL_CONN_CONFIG(ca_info_blob);
+  const char * const ssl_cafile =
+    /* CURLOPT_CAINFO_BLOB overrides CURLOPT_CAINFO */
+    (ca_info_blob ? NULL : SSL_CONN_CONFIG(CAfile));
   const bool verifypeer = SSL_CONN_CONFIG(verifypeer);
   const char *hostname = conn->host.name;
   char errorbuf[256];
@@ -308,14 +322,17 @@ cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
     { (const uint8_t *)ALPN_H2, ALPN_H2_LENGTH },
   };
 
+  DEBUGASSERT(backend);
+  rconn = backend->conn;
+
   config_builder = rustls_client_config_builder_new();
 #ifdef USE_HTTP2
-  infof(data, "offering ALPN for HTTP/1.1 and HTTP/2");
+  infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
   rustls_client_config_builder_set_alpn_protocols(config_builder, alpn, 2);
 #else
-  infof(data, "offering ALPN for HTTP/1.1 only");
   rustls_client_config_builder_set_alpn_protocols(config_builder, alpn, 1);
 #endif
+  infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
   if(!verifypeer) {
     rustls_client_config_builder_dangerous_set_certificate_verifier(
       config_builder, cr_verify_none);
@@ -328,6 +345,29 @@ cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
       hostname = "example.invalid";
     }
   }
+  else if(ca_info_blob) {
+    roots = rustls_root_cert_store_new();
+
+    /* Enable strict parsing only if verification isn't disabled. */
+    result = rustls_root_cert_store_add_pem(roots, ca_info_blob->data,
+                                            ca_info_blob->len, verifypeer);
+    if(result != RUSTLS_RESULT_OK) {
+      failf(data, "failed to parse trusted certificates from blob");
+      rustls_root_cert_store_free(roots);
+      rustls_client_config_free(
+        rustls_client_config_builder_build(config_builder));
+      return CURLE_SSL_CACERT_BADFILE;
+    }
+
+    result = rustls_client_config_builder_use_roots(config_builder, roots);
+    rustls_root_cert_store_free(roots);
+    if(result != RUSTLS_RESULT_OK) {
+      failf(data, "failed to load trusted certificates");
+      rustls_client_config_free(
+        rustls_client_config_builder_build(config_builder));
+      return CURLE_SSL_CACERT_BADFILE;
+    }
+  }
   else if(ssl_cafile) {
     result = rustls_client_config_builder_load_roots_from_file(
       config_builder, ssl_cafile);
@@ -341,7 +381,14 @@ cr_init_backend(struct Curl_easy *data, struct connectdata *conn,
 
   backend->config = rustls_client_config_builder_build(config_builder);
   DEBUGASSERT(rconn == NULL);
-  result = rustls_client_connection_new(backend->config, hostname, &rconn);
+  {
+    char *snihost = Curl_ssl_snihost(data, hostname, NULL);
+    if(!snihost) {
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+    result = rustls_client_connection_new(backend->config, snihost, &rconn);
+  }
   if(result != RUSTLS_RESULT_OK) {
     rustls_error(result, errorbuf, sizeof(errorbuf), &errorlen);
     failf(data, "rustls_client_connection_new: %.*s", errorlen, errorbuf);
@@ -361,27 +408,27 @@ cr_set_negotiated_alpn(struct Curl_easy *data, struct connectdata *conn,
 
   rustls_connection_get_alpn_protocol(rconn, &protocol, &len);
   if(!protocol) {
-    infof(data, "ALPN, server did not agree to a protocol");
+    infof(data, VTLS_INFOF_NO_ALPN);
     return;
   }
 
 #ifdef USE_HTTP2
   if(len == ALPN_H2_LENGTH && 0 == memcmp(ALPN_H2, protocol, len)) {
-    infof(data, "ALPN, negotiated h2");
-    conn->negnpn = CURL_HTTP_VERSION_2;
+    infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, ALPN_H2);
+    conn->alpn = CURL_HTTP_VERSION_2;
   }
   else
 #endif
   if(len == ALPN_HTTP_1_1_LENGTH &&
       0 == memcmp(ALPN_HTTP_1_1, protocol, len)) {
-    infof(data, "ALPN, negotiated http/1.1");
-    conn->negnpn = CURL_HTTP_VERSION_1_1;
+    infof(data, VTLS_INFOF_ALPN_ACCEPTED_1STR, ALPN_HTTP_1_1);
+    conn->alpn = CURL_HTTP_VERSION_1_1;
   }
   else {
     infof(data, "ALPN, negotiated an unrecognized protocol");
   }
 
-  Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+  Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
                       BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
 }
 
@@ -401,6 +448,8 @@ cr_connect_nonblocking(struct Curl_easy *data, struct connectdata *conn,
   curl_socket_t writefd;
   curl_socket_t readfd;
 
+  DEBUGASSERT(backend);
+
   if(ssl_connection_none == connssl->state) {
     result = cr_init_backend(data, conn, connssl->backend);
     if(result != CURLE_OK) {
@@ -495,7 +544,10 @@ cr_getsock(struct connectdata *conn, curl_socket_t *socks)
   struct ssl_connect_data *const connssl = &conn->ssl[FIRSTSOCKET];
   curl_socket_t sockfd = conn->sock[FIRSTSOCKET];
   struct ssl_backend_data *const backend = connssl->backend;
-  struct rustls_connection *rconn = backend->conn;
+  struct rustls_connection *rconn = NULL;
+
+  DEBUGASSERT(backend);
+  rconn = backend->conn;
 
   if(rustls_connection_wants_write(rconn)) {
     socks[0] = sockfd;
@@ -514,6 +566,7 @@ cr_get_internals(struct ssl_connect_data *connssl,
                  CURLINFO info UNUSED_PARAM)
 {
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   return &backend->conn;
 }
 
@@ -526,6 +579,8 @@ cr_close(struct Curl_easy *data, struct connectdata *conn,
   CURLcode tmperr = CURLE_OK;
   ssize_t n = 0;
 
+  DEBUGASSERT(backend);
+
   if(backend->conn) {
     rustls_connection_send_close_notify(backend->conn);
     n = cr_send(data, sockindex, NULL, 0, &tmperr);
@@ -550,7 +605,8 @@ static size_t cr_version(char *buffer, size_t size)
 
 const struct Curl_ssl Curl_ssl_rustls = {
   { CURLSSLBACKEND_RUSTLS, "rustls" },
-  SSLSUPP_TLS13_CIPHERSUITES,      /* supports */
+  SSLSUPP_CAINFO_BLOB |            /* supports */
+  SSLSUPP_TLS13_CIPHERSUITES,
   sizeof(struct ssl_backend_data),
 
   Curl_none_init,                  /* init */
index 056211dd8b93d0ff3f3fd8fc808aa9a5a4ee45e1..6b393dd63916845a4e5123e4560286253d431f02 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Jacob Hoffman-Andrews,
+ * Copyright (C) 2020 - 2022, Jacob Hoffman-Andrews,
  * <github@hoffman-andrews.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #ifndef HEADER_CURL_RUSTLS_H
 #define HEADER_CURL_RUSTLS_H
index 0a8e60610d8f88d16b5fd5a91884ae034cb16909..454eb7967424b8d1e3a443d9cb1b90d76ffb7a97 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
  * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
  *
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -51,6 +53,7 @@
 #include "curl_printf.h"
 #include "multiif.h"
 #include "version_win32.h"
+#include "rand.h"
 
 /* The last #include file should be: */
 #include "curl_memory.h"
 #endif
 #endif
 
-#if defined(CryptStringToBinary) && defined(CRYPT_STRING_HEX)
-#define HAS_CLIENT_CERT_PATH
+#ifndef BCRYPT_CHACHA20_POLY1305_ALGORITHM
+#define BCRYPT_CHACHA20_POLY1305_ALGORITHM L"CHACHA20_POLY1305"
+#endif
+
+#ifndef BCRYPT_CHAIN_MODE_CCM
+#define BCRYPT_CHAIN_MODE_CCM L"ChainingModeCCM"
+#endif
+
+#ifndef BCRYPT_CHAIN_MODE_GCM
+#define BCRYPT_CHAIN_MODE_GCM L"ChainingModeGCM"
+#endif
+
+#ifndef BCRYPT_AES_ALGORITHM
+#define BCRYPT_AES_ALGORITHM L"AES"
+#endif
+
+#ifndef BCRYPT_SHA256_ALGORITHM
+#define BCRYPT_SHA256_ALGORITHM L"SHA256"
+#endif
+
+#ifndef BCRYPT_SHA384_ALGORITHM
+#define BCRYPT_SHA384_ALGORITHM L"SHA384"
+#endif
+
+/* Workaround broken compilers like MinGW.
+   Return the number of elements in a statically sized array.
+*/
+#ifndef ARRAYSIZE
+#define ARRAYSIZE(A) (sizeof(A)/sizeof((A)[0]))
 #endif
 
 #ifdef HAS_CLIENT_CERT_PATH
 #define SP_PROT_TLS1_2_CLIENT           0x00000800
 #endif
 
+#ifndef SP_PROT_TLS1_3_CLIENT
+#define SP_PROT_TLS1_3_CLIENT           0x00002000
+#endif
+
 #ifndef SCH_USE_STRONG_CRYPTO
 #define SCH_USE_STRONG_CRYPTO           0x00400000
 #endif
 #define ALG_CLASS_DHASH ALG_CLASS_HASH
 #endif
 
+#ifndef PKCS12_NO_PERSIST_KEY
+#define PKCS12_NO_PERSIST_KEY 0x00008000
+#endif
+
 static Curl_recv schannel_recv;
 static Curl_send schannel_send;
 
@@ -171,7 +209,7 @@ static void InitSecBufferDesc(SecBufferDesc *desc, SecBuffer *BufArr,
 }
 
 static CURLcode
-set_ssl_version_min_max(SCHANNEL_CRED *schannel_cred, struct Curl_easy *data,
+set_ssl_version_min_max(DWORD *enabled_protocols, struct Curl_easy *data,
                         struct connectdata *conn)
 {
   long ssl_version = SSL_CONN_CONFIG(version);
@@ -181,23 +219,44 @@ set_ssl_version_min_max(SCHANNEL_CRED *schannel_cred, struct Curl_easy *data,
   switch(ssl_version_max) {
   case CURL_SSLVERSION_MAX_NONE:
   case CURL_SSLVERSION_MAX_DEFAULT:
-    ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;
+
+    /* Windows Server 2022 and newer (including Windows 11) support TLS 1.3
+       built-in. Previous builds of Windows 10 had broken TLS 1.3
+       implementations that could be enabled via registry.
+    */
+    if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
+                                    VERSION_GREATER_THAN_EQUAL)) {
+      ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_3;
+    }
+    else /* Windows 10 and older */
+      ssl_version_max = CURL_SSLVERSION_MAX_TLSv1_2;
+
     break;
   }
+
   for(; i <= (ssl_version_max >> 16); ++i) {
     switch(i) {
     case CURL_SSLVERSION_TLSv1_0:
-      schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_0_CLIENT;
+      (*enabled_protocols) |= SP_PROT_TLS1_0_CLIENT;
       break;
     case CURL_SSLVERSION_TLSv1_1:
-      schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_1_CLIENT;
+      (*enabled_protocols) |= SP_PROT_TLS1_1_CLIENT;
       break;
     case CURL_SSLVERSION_TLSv1_2:
-      schannel_cred->grbitEnabledProtocols |= SP_PROT_TLS1_2_CLIENT;
+      (*enabled_protocols) |= SP_PROT_TLS1_2_CLIENT;
       break;
     case CURL_SSLVERSION_TLSv1_3:
-      failf(data, "schannel: TLS 1.3 is not yet supported");
-      return CURLE_SSL_CONNECT_ERROR;
+
+      /* Windows Server 2022 and newer */
+      if(curlx_verify_windows_version(10, 0, 20348, PLATFORM_WINNT,
+                                      VERSION_GREATER_THAN_EQUAL)) {
+        (*enabled_protocols) |= SP_PROT_TLS1_3_CLIENT;
+        break;
+      }
+      else { /* Windows 10 and older */
+        failf(data, "schannel: TLS 1.3 not supported on Windows prior to 11");
+        return CURLE_SSL_CONNECT_ERROR;
+      }
     }
   }
   return CURLE_OK;
@@ -214,8 +273,12 @@ get_alg_id_by_name(char *name)
 {
   char tmp[LONGEST_ALG_ID] = { 0 };
   char *nameEnd = strchr(name, ':');
-  size_t n = nameEnd ? min((size_t)(nameEnd - name), LONGEST_ALG_ID - 1) : \
-    min(strlen(name), LONGEST_ALG_ID - 1);
+  size_t n = nameEnd ? (size_t)(nameEnd - name) : strlen(name);
+
+  /* reject too-long alg names */
+  if(n > (LONGEST_ALG_ID - 1))
+    return 0;
+
   strncpy(tmp, name, n);
   tmp[n] = 0;
   CIPHEROPTION(CALG_MD2);
@@ -325,13 +388,15 @@ get_alg_id_by_name(char *name)
   return 0;
 }
 
+#define NUM_CIPHERS 47 /* There are 47 options listed above */
+
 static CURLcode
 set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers,
                 ALG_ID *algIds)
 {
   char *startCur = ciphers;
   int algCount = 0;
-  while(startCur && (0 != *startCur) && (algCount < NUMOF_CIPHERS)) {
+  while(startCur && (0 != *startCur) && (algCount < NUM_CIPHERS)) {
     long alg = strtol(startCur, 0, 0);
     if(!alg)
       alg = get_alg_id_by_name(startCur);
@@ -381,13 +446,13 @@ get_cert_location(TCHAR *path, DWORD *store_name, TCHAR **store_path,
   else if(_tcsncmp(path, TEXT("Users"), store_name_len) == 0)
     *store_name = CERT_SYSTEM_STORE_USERS;
   else if(_tcsncmp(path, TEXT("CurrentUserGroupPolicy"),
-                    store_name_len) == 0)
+                   store_name_len) == 0)
     *store_name = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY;
   else if(_tcsncmp(path, TEXT("LocalMachineGroupPolicy"),
-                    store_name_len) == 0)
+                   store_name_len) == 0)
     *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY;
   else if(_tcsncmp(path, TEXT("LocalMachineEnterprise"),
-                    store_name_len) == 0)
+                   store_name_len) == 0)
     *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE;
   else
     return CURLE_SSL_CERTPROBLEM;
@@ -417,46 +482,52 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
                                    int sockindex)
 {
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  SCHANNEL_CRED schannel_cred;
+
+#ifdef HAS_CLIENT_CERT_PATH
   PCCERT_CONTEXT client_certs[1] = { NULL };
+  HCERTSTORE client_cert_store = NULL;
+#endif
   SECURITY_STATUS sspi_status = SEC_E_OK;
   CURLcode result;
-  struct ssl_backend_data *backend = connssl->backend;
 
   /* setup Schannel API options */
-  memset(&schannel_cred, 0, sizeof(schannel_cred));
-  schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
+  DWORD flags = 0;
+  DWORD enabled_protocols = 0;
+
+  struct ssl_backend_data *backend = connssl->backend;
+
+  DEBUGASSERT(backend);
 
   if(conn->ssl_config.verifypeer) {
 #ifdef HAS_MANUAL_VERIFY_API
     if(backend->use_manual_cred_validation)
-      schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION;
+      flags = SCH_CRED_MANUAL_CRED_VALIDATION;
     else
 #endif
-      schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;
+      flags = SCH_CRED_AUTO_CRED_VALIDATION;
 
     if(SSL_SET_OPTION(no_revoke)) {
-      schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+      flags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
         SCH_CRED_IGNORE_REVOCATION_OFFLINE;
 
       DEBUGF(infof(data, "schannel: disabled server certificate revocation "
                    "checks"));
     }
     else if(SSL_SET_OPTION(revoke_best_effort)) {
-      schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+      flags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
         SCH_CRED_IGNORE_REVOCATION_OFFLINE | SCH_CRED_REVOCATION_CHECK_CHAIN;
 
       DEBUGF(infof(data, "schannel: ignore revocation offline errors"));
     }
     else {
-      schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
+      flags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
 
       DEBUGF(infof(data,
                    "schannel: checking server certificate revocation"));
     }
   }
   else {
-    schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
+    flags = SCH_CRED_MANUAL_CRED_VALIDATION |
       SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
       SCH_CRED_IGNORE_REVOCATION_OFFLINE;
     DEBUGF(infof(data,
@@ -464,15 +535,15 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
   }
 
   if(!conn->ssl_config.verifyhost) {
-    schannel_cred.dwFlags |= SCH_CRED_NO_SERVERNAME_CHECK;
+    flags |= SCH_CRED_NO_SERVERNAME_CHECK;
     DEBUGF(infof(data, "schannel: verifyhost setting prevents Schannel from "
                  "comparing the supplied target name with the subject "
                  "names in server certificates."));
   }
 
   if(!SSL_SET_OPTION(auto_client_cert)) {
-    schannel_cred.dwFlags &= ~SCH_CRED_USE_DEFAULT_CREDS;
-    schannel_cred.dwFlags |= SCH_CRED_NO_DEFAULT_CREDS;
+    flags &= ~SCH_CRED_USE_DEFAULT_CREDS;
+    flags |= SCH_CRED_NO_DEFAULT_CREDS;
     infof(data, "schannel: disabled automatic use of client certificate");
   }
   else
@@ -486,7 +557,7 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
   case CURL_SSLVERSION_TLSv1_2:
   case CURL_SSLVERSION_TLSv1_3:
   {
-    result = set_ssl_version_min_max(&schannel_cred, data, conn);
+    result = set_ssl_version_min_max(&enabled_protocols, data, conn);
     if(result != CURLE_OK)
       return result;
     break;
@@ -500,16 +571,6 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
     return CURLE_SSL_CONNECT_ERROR;
   }
 
-  if(SSL_CONN_CONFIG(cipher_list)) {
-    result = set_ssl_ciphers(&schannel_cred, SSL_CONN_CONFIG(cipher_list),
-                             backend->algIds);
-    if(CURLE_OK != result) {
-      failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
-      return result;
-    }
-  }
-
-
 #ifdef HAS_CLIENT_CERT_PATH
   /* client certificate */
   if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
@@ -535,7 +596,7 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
         return CURLE_OUT_OF_MEMORY;
 
       result = get_cert_location(cert_path, &cert_store_name,
-        &cert_store_path, &cert_thumbprint_str);
+                                 &cert_store_path, &cert_thumbprint_str);
 
       if(result && (data->set.ssl.primary.clientcert[0]!='\0'))
         fInCert = fopen(data->set.ssl.primary.clientcert, "rb");
@@ -550,18 +611,18 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
     }
 
     if((fInCert || blob) && (data->set.ssl.cert_type) &&
-        (!strcasecompare(data->set.ssl.cert_type, "P12"))) {
+       (!strcasecompare(data->set.ssl.cert_type, "P12"))) {
       failf(data, "schannel: certificate format compatibility error "
-              " for %s",
-              blob ? "(memory blob)" : data->set.ssl.primary.clientcert);
+            " for %s",
+            blob ? "(memory blob)" : data->set.ssl.primary.clientcert);
       curlx_unicodefree(cert_path);
       return CURLE_SSL_CERTPROBLEM;
     }
 
     if(fInCert || blob) {
       /* Reading a .P12 or .pfx file, like the example at bottom of
-           https://social.msdn.microsoft.com/Forums/windowsdesktop/
-                          en-US/3e7bc95f-b21a-4bcd-bd2c-7f996718cae5
+         https://social.msdn.microsoft.com/Forums/windowsdesktop/
+         en-US/3e7bc95f-b21a-4bcd-bd2c-7f996718cae5
       */
       CRYPT_DATA_BLOB datablob;
       WCHAR* pszPassword;
@@ -589,7 +650,7 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
         fclose(fInCert);
         if(!continue_reading) {
           failf(data, "schannel: Failed to read cert file %s",
-              data->set.ssl.primary.clientcert);
+                data->set.ssl.primary.clientcert);
           free(certdata);
           return CURLE_SSL_CERTPROBLEM;
         }
@@ -605,16 +666,23 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
       if(pszPassword) {
         if(pwd_len > 0)
           str_w_len = MultiByteToWideChar(CP_UTF8,
-             MB_ERR_INVALID_CHARS,
-             data->set.ssl.key_passwd, (int)pwd_len,
-             pszPassword, (int)(pwd_len + 1));
+                                          MB_ERR_INVALID_CHARS,
+                                          data->set.ssl.key_passwd,
+                                          (int)pwd_len,
+                                          pszPassword, (int)(pwd_len + 1));
 
         if((str_w_len >= 0) && (str_w_len <= (int)pwd_len))
           pszPassword[str_w_len] = 0;
         else
           pszPassword[0] = 0;
 
-        cert_store = PFXImportCertStore(&datablob, pszPassword, 0);
+        if(curlx_verify_windows_version(6, 0, 0, PLATFORM_WINNT,
+                                        VERSION_GREATER_THAN_EQUAL))
+          cert_store = PFXImportCertStore(&datablob, pszPassword,
+                                          PKCS12_NO_PERSIST_KEY);
+        else
+          cert_store = PFXImportCertStore(&datablob, pszPassword, 0);
+
         free(pszPassword);
       }
       if(!blob)
@@ -643,9 +711,6 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
         CertCloseStore(cert_store, 0);
         return CURLE_SSL_CERTPROBLEM;
       }
-
-      schannel_cred.cCreds = 1;
-      schannel_cred.paCred = client_certs;
     }
     else {
       cert_store =
@@ -683,17 +748,13 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
 
       curlx_unicodefree(cert_path);
 
-      if(client_certs[0]) {
-        schannel_cred.cCreds = 1;
-        schannel_cred.paCred = client_certs;
-      }
-      else {
+      if(!client_certs[0]) {
         /* CRYPT_E_NOT_FOUND / E_INVALIDARG */
         CertCloseStore(cert_store, 0);
         return CURLE_SSL_CERTPROBLEM;
       }
     }
-    CertCloseStore(cert_store, 0);
+    client_cert_store = cert_store;
   }
 #else
   if(data->set.ssl.primary.clientcert || data->set.ssl.primary.cert_blob) {
@@ -708,22 +769,279 @@ schannel_acquire_credential_handle(struct Curl_easy *data,
   if(!backend->cred) {
     failf(data, "schannel: unable to allocate memory");
 
+#ifdef HAS_CLIENT_CERT_PATH
     if(client_certs[0])
       CertFreeCertificateContext(client_certs[0]);
+    if(client_cert_store)
+      CertCloseStore(client_cert_store, 0);
+#endif
 
     return CURLE_OUT_OF_MEMORY;
   }
   backend->cred->refcount = 1;
 
-  sspi_status =
-    s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR *)UNISP_NAME,
-                                       SECPKG_CRED_OUTBOUND, NULL,
-                                       &schannel_cred, NULL, NULL,
-                                       &backend->cred->cred_handle,
-                                       &backend->cred->time_stamp);
+#ifdef HAS_CLIENT_CERT_PATH
+  /* Since we did not persist the key, we need to extend the store's
+   * lifetime until the end of the connection
+   */
+  backend->cred->client_cert_store = client_cert_store;
+#endif
+
+  /* Windows 10, 1809 (a.k.a. Windows 10 build 17763) */
+  if(curlx_verify_windows_version(10, 0, 17763, PLATFORM_WINNT,
+                                  VERSION_GREATER_THAN_EQUAL)) {
+
+    char *ciphers13 = 0;
+
+    bool disable_aes_gcm_sha384 = FALSE;
+    bool disable_aes_gcm_sha256 = FALSE;
+    bool disable_chacha_poly = FALSE;
+    bool disable_aes_ccm_8_sha256 = FALSE;
+    bool disable_aes_ccm_sha256 = FALSE;
+
+    SCH_CREDENTIALS credentials = { 0 };
+    TLS_PARAMETERS tls_parameters = { 0 };
+    CRYPTO_SETTINGS crypto_settings[4] = { 0 };
+    UNICODE_STRING blocked_ccm_modes[1] = { 0 };
+    UNICODE_STRING blocked_gcm_modes[1] = { 0 };
+
+    int crypto_settings_idx = 0;
+
+
+    /* If TLS 1.3 ciphers are explicitly listed, then
+     * disable all the ciphers and re-enable which
+     * ciphers the user has provided.
+     */
+    ciphers13 = SSL_CONN_CONFIG(cipher_list13);
+    if(ciphers13) {
+      const int remaining_ciphers = 5;
+
+      /* detect which remaining ciphers to enable
+         and then disable everything else.
+      */
+
+      char *startCur = ciphers13;
+      int algCount = 0;
+      char tmp[LONGEST_ALG_ID] = { 0 };
+      char *nameEnd;
+      size_t n;
+
+      disable_aes_gcm_sha384 = TRUE;
+      disable_aes_gcm_sha256 = TRUE;
+      disable_chacha_poly = TRUE;
+      disable_aes_ccm_8_sha256 = TRUE;
+      disable_aes_ccm_sha256 = TRUE;
+
+      while(startCur && (0 != *startCur) && (algCount < remaining_ciphers)) {
+        nameEnd = strchr(startCur, ':');
+        n = nameEnd ? (size_t)(nameEnd - startCur) : strlen(startCur);
+
+        /* reject too-long cipher names */
+        if(n > (LONGEST_ALG_ID - 1)) {
+          failf(data, "Cipher name too long, not checked.");
+          return CURLE_SSL_CIPHER;
+        }
+
+        strncpy(tmp, startCur, n);
+        tmp[n] = 0;
+
+        if(disable_aes_gcm_sha384
+           && !strcmp("TLS_AES_256_GCM_SHA384", tmp)) {
+          disable_aes_gcm_sha384 = FALSE;
+        }
+        else if(disable_aes_gcm_sha256
+                && !strcmp("TLS_AES_128_GCM_SHA256", tmp)) {
+          disable_aes_gcm_sha256 = FALSE;
+        }
+        else if(disable_chacha_poly
+                && !strcmp("TLS_CHACHA20_POLY1305_SHA256", tmp)) {
+          disable_chacha_poly = FALSE;
+        }
+        else if(disable_aes_ccm_8_sha256
+                && !strcmp("TLS_AES_128_CCM_8_SHA256", tmp)) {
+          disable_aes_ccm_8_sha256 = FALSE;
+        }
+        else if(disable_aes_ccm_sha256
+                && !strcmp("TLS_AES_128_CCM_SHA256", tmp)) {
+          disable_aes_ccm_sha256 = FALSE;
+        }
+        else {
+          failf(data, "Passed in an unknown TLS 1.3 cipher.");
+          return CURLE_SSL_CIPHER;
+        }
 
+        startCur = nameEnd;
+        if(startCur)
+          startCur++;
+
+        algCount++;
+      }
+    }
+
+    if(disable_aes_gcm_sha384 && disable_aes_gcm_sha256
+       && disable_chacha_poly && disable_aes_ccm_8_sha256
+       && disable_aes_ccm_sha256) {
+      failf(data, "All available TLS 1.3 ciphers were disabled.");
+      return CURLE_SSL_CIPHER;
+    }
+
+    /* Disable TLS_AES_128_CCM_8_SHA256 and/or TLS_AES_128_CCM_SHA256 */
+    if(disable_aes_ccm_8_sha256 || disable_aes_ccm_sha256) {
+      /*
+        Disallow AES_CCM algorithm.
+      */
+      blocked_ccm_modes[0].Length = sizeof(BCRYPT_CHAIN_MODE_CCM);
+      blocked_ccm_modes[0].MaximumLength = sizeof(BCRYPT_CHAIN_MODE_CCM);
+      blocked_ccm_modes[0].Buffer = (PWSTR)BCRYPT_CHAIN_MODE_CCM;
+
+      crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+        TlsParametersCngAlgUsageCipher;
+      crypto_settings[crypto_settings_idx].rgstrChainingModes =
+        blocked_ccm_modes;
+      crypto_settings[crypto_settings_idx].cChainingModes =
+        ARRAYSIZE(blocked_ccm_modes);
+      crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+        sizeof(BCRYPT_AES_ALGORITHM);
+      crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+        sizeof(BCRYPT_AES_ALGORITHM);
+      crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+        (PWSTR)BCRYPT_AES_ALGORITHM;
+
+      /* only disabling one of the CCM modes */
+      if(disable_aes_ccm_8_sha256 != disable_aes_ccm_sha256) {
+        if(disable_aes_ccm_8_sha256)
+          crypto_settings[crypto_settings_idx].dwMinBitLength = 128;
+        else /* disable_aes_ccm_sha256 */
+          crypto_settings[crypto_settings_idx].dwMaxBitLength = 64;
+      }
+
+      crypto_settings_idx++;
+    }
+
+    /* Disable TLS_AES_256_GCM_SHA384 and/or TLS_AES_128_GCM_SHA256 */
+    if(disable_aes_gcm_sha384 || disable_aes_gcm_sha256) {
+
+      /*
+        Disallow AES_GCM algorithm
+      */
+      blocked_gcm_modes[0].Length = sizeof(BCRYPT_CHAIN_MODE_GCM);
+      blocked_gcm_modes[0].MaximumLength = sizeof(BCRYPT_CHAIN_MODE_GCM);
+      blocked_gcm_modes[0].Buffer = (PWSTR)BCRYPT_CHAIN_MODE_GCM;
+
+      /* if only one is disabled, then explicitly disable the
+         digest cipher suite (sha384 or sha256) */
+      if(disable_aes_gcm_sha384 != disable_aes_gcm_sha256) {
+        crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+          TlsParametersCngAlgUsageDigest;
+        crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+          sizeof(disable_aes_gcm_sha384 ?
+                 BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
+        crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+          sizeof(disable_aes_gcm_sha384 ?
+                 BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
+        crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+          (PWSTR)(disable_aes_gcm_sha384 ?
+                  BCRYPT_SHA384_ALGORITHM : BCRYPT_SHA256_ALGORITHM);
+      }
+      else { /* Disable both AES_GCM ciphers */
+        crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+          TlsParametersCngAlgUsageCipher;
+        crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+          sizeof(BCRYPT_AES_ALGORITHM);
+        crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+          sizeof(BCRYPT_AES_ALGORITHM);
+        crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+          (PWSTR)BCRYPT_AES_ALGORITHM;
+      }
+
+      crypto_settings[crypto_settings_idx].rgstrChainingModes =
+        blocked_gcm_modes;
+      crypto_settings[crypto_settings_idx].cChainingModes = 1;
+
+      crypto_settings_idx++;
+    }
+
+    /*
+      Disable ChaCha20-Poly1305.
+    */
+    if(disable_chacha_poly) {
+      crypto_settings[crypto_settings_idx].eAlgorithmUsage =
+        TlsParametersCngAlgUsageCipher;
+      crypto_settings[crypto_settings_idx].strCngAlgId.Length =
+        sizeof(BCRYPT_CHACHA20_POLY1305_ALGORITHM);
+      crypto_settings[crypto_settings_idx].strCngAlgId.MaximumLength =
+        sizeof(BCRYPT_CHACHA20_POLY1305_ALGORITHM);
+      crypto_settings[crypto_settings_idx].strCngAlgId.Buffer =
+        (PWSTR)BCRYPT_CHACHA20_POLY1305_ALGORITHM;
+      crypto_settings_idx++;
+    }
+
+    tls_parameters.pDisabledCrypto = crypto_settings;
+
+    /* The number of blocked suites */
+    tls_parameters.cDisabledCrypto = crypto_settings_idx;
+    credentials.pTlsParameters = &tls_parameters;
+    credentials.cTlsParameters = 1;
+
+    credentials.dwVersion = SCH_CREDENTIALS_VERSION;
+    credentials.dwFlags = flags | SCH_USE_STRONG_CRYPTO;
+
+    credentials.pTlsParameters->grbitDisabledProtocols =
+      (DWORD)~enabled_protocols;
+
+#ifdef HAS_CLIENT_CERT_PATH
+    if(client_certs[0]) {
+      credentials.cCreds = 1;
+      credentials.paCred = client_certs;
+    }
+#endif
+
+    sspi_status =
+      s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR*)UNISP_NAME,
+                                         SECPKG_CRED_OUTBOUND, NULL,
+                                         &credentials, NULL, NULL,
+                                         &backend->cred->cred_handle,
+                                         &backend->cred->time_stamp);
+  }
+  else {
+    /* Pre-Windows 10 1809 */
+    ALG_ID algIds[NUM_CIPHERS];
+    char *ciphers = SSL_CONN_CONFIG(cipher_list);
+    SCHANNEL_CRED schannel_cred = { 0 };
+    schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
+    schannel_cred.dwFlags = flags;
+    schannel_cred.grbitEnabledProtocols = enabled_protocols;
+
+    if(ciphers) {
+      result = set_ssl_ciphers(&schannel_cred, ciphers, algIds);
+      if(CURLE_OK != result) {
+        failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
+        return result;
+      }
+    }
+    else {
+      schannel_cred.dwFlags = flags | SCH_USE_STRONG_CRYPTO;
+    }
+
+#ifdef HAS_CLIENT_CERT_PATH
+    if(client_certs[0]) {
+      schannel_cred.cCreds = 1;
+      schannel_cred.paCred = client_certs;
+    }
+#endif
+
+    sspi_status =
+      s_pSecFn->AcquireCredentialsHandle(NULL, (TCHAR*)UNISP_NAME,
+                                         SECPKG_CRED_OUTBOUND, NULL,
+                                         &schannel_cred, NULL, NULL,
+                                         &backend->cred->cred_handle,
+                                         &backend->cred->time_stamp);
+  }
+
+#ifdef HAS_CLIENT_CERT_PATH
   if(client_certs[0])
     CertFreeCertificateContext(client_certs[0]);
+#endif
 
   if(sspi_status != SEC_E_OK) {
     char buffer[STRERROR_LEN];
@@ -765,11 +1083,12 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 #ifdef ENABLE_IPV6
   struct in6_addr addr6;
 #endif
-  TCHAR *host_name;
   CURLcode result;
   char * const hostname = SSL_HOST_NAME();
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   DEBUGF(infof(data,
                "schannel: SSL/TLS connection with %s port %hu (step 1/3)",
                hostname, conn->remote_port));
@@ -846,10 +1165,21 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   }
 
   if(!backend->cred) {
+    char *snihost;
     result = schannel_acquire_credential_handle(data, conn, sockindex);
     if(result != CURLE_OK) {
       return result;
     }
+    /* A hostname associated with the credential is needed by
+       InitializeSecurityContext for SNI and other reasons. */
+    snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+    if(!snihost) {
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+    backend->cred->sni_hostname = curlx_convert_UTF8_to_tchar(snihost);
+    if(!backend->cred->sni_hostname)
+      return CURLE_OUT_OF_MEMORY;
   }
 
   /* Warn if SNI is disabled due to use of an IP address */
@@ -891,14 +1221,14 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
       alpn_buffer[cur++] = ALPN_H2_LENGTH;
       memcpy(&alpn_buffer[cur], ALPN_H2, ALPN_H2_LENGTH);
       cur += ALPN_H2_LENGTH;
-      infof(data, "schannel: ALPN, offering %s", ALPN_H2);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
     }
 #endif
 
     alpn_buffer[cur++] = ALPN_HTTP_1_1_LENGTH;
     memcpy(&alpn_buffer[cur], ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH);
     cur += ALPN_HTTP_1_1_LENGTH;
-    infof(data, "schannel: ALPN, offering %s", ALPN_HTTP_1_1);
+    infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
 
     *list_len = curlx_uitous(cur - list_start_index);
     *extension_len = *list_len + sizeof(unsigned int) + sizeof(unsigned short);
@@ -936,10 +1266,6 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
     return CURLE_OUT_OF_MEMORY;
   }
 
-  host_name = curlx_convert_UTF8_to_tchar(hostname);
-  if(!host_name)
-    return CURLE_OUT_OF_MEMORY;
-
   /* Schannel InitializeSecurityContext:
      https://msdn.microsoft.com/en-us/library/windows/desktop/aa375924.aspx
 
@@ -948,13 +1274,12 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
      us problems with inbuf regardless. https://github.com/curl/curl/issues/983
   */
   sspi_status = s_pSecFn->InitializeSecurityContext(
-    &backend->cred->cred_handle, NULL, host_name, backend->req_flags, 0, 0,
+    &backend->cred->cred_handle, NULL, backend->cred->sni_hostname,
+    backend->req_flags, 0, 0,
     (backend->use_alpn ? &inbuf_desc : NULL),
     0, &backend->ctxt->ctxt_handle,
     &outbuf_desc, &backend->ret_flags, &backend->ctxt->time_stamp);
 
-  curlx_unicodefree(host_name);
-
   if(sspi_status != SEC_I_CONTINUE_NEEDED) {
     char buffer[STRERROR_LEN];
     Curl_safefree(backend->ctxt);
@@ -1004,6 +1329,7 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   backend->recv_unrecoverable_err = CURLE_OK;
   backend->recv_sspi_close_notify = false;
   backend->recv_connection_closed = false;
+  backend->recv_renegotiating = false;
   backend->encdata_is_incomplete = false;
 
   /* continue to second handshake step */
@@ -1027,15 +1353,16 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
   SECURITY_STATUS sspi_status = SEC_E_OK;
   CURLcode result;
   bool doread;
-  char * const hostname = SSL_HOST_NAME();
   const char *pubkey_ptr;
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE;
 
   DEBUGF(infof(data,
                "schannel: SSL/TLS connection with %s port %hu (step 2/3)",
-               hostname, conn->remote_port));
+               SSL_HOST_NAME(), conn->remote_port));
 
   if(!backend->cred || !backend->ctxt)
     return CURLE_SSL_CONNECT_ERROR;
@@ -1083,7 +1410,6 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
   }
 
   for(;;) {
-    TCHAR *host_name;
     if(doread) {
       /* read encrypted handshake data from socket */
       result = Curl_read_plain(conn->sock[sockindex],
@@ -1136,17 +1462,12 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
     memcpy(inbuf[0].pvBuffer, backend->encdata_buffer,
            backend->encdata_offset);
 
-    host_name = curlx_convert_UTF8_to_tchar(hostname);
-    if(!host_name)
-      return CURLE_OUT_OF_MEMORY;
-
     sspi_status = s_pSecFn->InitializeSecurityContext(
       &backend->cred->cred_handle, &backend->ctxt->ctxt_handle,
-      host_name, backend->req_flags, 0, 0, &inbuf_desc, 0, NULL,
+      backend->cred->sni_hostname, backend->req_flags,
+      0, 0, &inbuf_desc, 0, NULL,
       &outbuf_desc, &backend->ret_flags, &backend->ctxt->time_stamp);
 
-    curlx_unicodefree(host_name);
-
     /* free buffer for received handshake data */
     Curl_safefree(inbuf[0].pvBuffer);
 
@@ -1279,7 +1600,7 @@ schannel_connect_step2(struct Curl_easy *data, struct connectdata *conn,
   if(pubkey_ptr) {
     result = pkp_pin_peer_pubkey(data, conn, sockindex, pubkey_ptr);
     if(result) {
-      failf(data, "SSL: public key does not match pinned public key!");
+      failf(data, "SSL: public key does not match pinned public key");
       return result;
     }
   }
@@ -1370,6 +1691,7 @@ schannel_connect_step3(struct Curl_easy *data, struct connectdata *conn,
   struct ssl_backend_data *backend = connssl->backend;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   DEBUGF(infof(data,
                "schannel: SSL/TLS connection with %s port %hu (step 3/3)",
@@ -1407,27 +1729,41 @@ schannel_connect_step3(struct Curl_easy *data, struct connectdata *conn,
 
     if(alpn_result.ProtoNegoStatus ==
        SecApplicationProtocolNegotiationStatus_Success) {
+      unsigned char alpn = 0;
 
-      infof(data, "schannel: ALPN, server accepted to use %.*s",
+      infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR,
             alpn_result.ProtocolIdSize, alpn_result.ProtocolId);
 
 #ifdef USE_HTTP2
       if(alpn_result.ProtocolIdSize == ALPN_H2_LENGTH &&
          !memcmp(ALPN_H2, alpn_result.ProtocolId, ALPN_H2_LENGTH)) {
-        conn->negnpn = CURL_HTTP_VERSION_2;
+        alpn = CURL_HTTP_VERSION_2;
       }
       else
 #endif
         if(alpn_result.ProtocolIdSize == ALPN_HTTP_1_1_LENGTH &&
            !memcmp(ALPN_HTTP_1_1, alpn_result.ProtocolId,
                    ALPN_HTTP_1_1_LENGTH)) {
-          conn->negnpn = CURL_HTTP_VERSION_1_1;
+          alpn = CURL_HTTP_VERSION_1_1;
+        }
+      if(backend->recv_renegotiating) {
+        if(alpn != conn->alpn) {
+          failf(data, "schannel: server selected an ALPN protocol too late");
+          return CURLE_SSL_CONNECT_ERROR;
         }
+      }
+      else
+        conn->alpn = alpn;
+    }
+    else {
+      if(!backend->recv_renegotiating)
+        infof(data, VTLS_INFOF_NO_ALPN);
+    }
+
+    if(!backend->recv_renegotiating) {
+      Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
+                          BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
     }
-    else
-      infof(data, "ALPN, server did not agree to a protocol");
-    Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
-                        BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
   }
 #endif
 
@@ -1599,8 +1935,15 @@ schannel_connect_common(struct Curl_easy *data, struct connectdata *conn,
 
   if(ssl_connect_done == connssl->connecting_state) {
     connssl->state = ssl_connection_complete;
-    conn->recv[sockindex] = schannel_recv;
-    conn->send[sockindex] = schannel_send;
+    if(!connssl->backend->recv_renegotiating) {
+      /* On renegotiation, we don't want to reset the existing recv/send
+       * function pointers. They will have been set after the initial TLS
+       * handshake was completed. If they were subsequently modified, as
+       * is the case with HTTP/2, we don't want to override that change.
+       */
+      conn->recv[sockindex] = schannel_recv;
+      conn->send[sockindex] = schannel_send;
+    }
 
 #ifdef SECPKG_ATTR_ENDPOINT_BINDINGS
     /* When SSPI is used in combination with Schannel
@@ -1610,6 +1953,7 @@ schannel_connect_common(struct Curl_easy *data, struct connectdata *conn,
      */
     {
       struct ssl_backend_data *backend = connssl->backend;
+      DEBUGASSERT(backend);
       conn->sslContext = &backend->ctxt->ctxt_handle;
     }
 #endif
@@ -1640,6 +1984,8 @@ schannel_send(struct Curl_easy *data, int sockindex,
   CURLcode result;
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   /* check if the maximum stream sizes were queried */
   if(backend->stream_sizes.cbMaximumMessage == 0) {
     sspi_status = s_pSecFn->QueryContextAttributes(
@@ -1788,6 +2134,8 @@ schannel_recv(struct Curl_easy *data, int sockindex,
   size_t min_encdata_length = len + CURL_SCHANNEL_BUFFER_FREE_SIZE;
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   /****************************************************************************
    * Don't return or set backend->recv_unrecoverable_err unless in the cleanup.
    * The pattern for return error is set *err, optional infof, goto cleanup.
@@ -1977,17 +2325,14 @@ schannel_recv(struct Curl_easy *data, int sockindex,
           infof(data, "schannel: can't renegotiate, an error is pending");
           goto cleanup;
         }
-        if(backend->encdata_offset) {
-          *err = CURLE_RECV_ERROR;
-          infof(data, "schannel: can't renegotiate, "
-                "encrypted data available");
-          goto cleanup;
-        }
+
         /* begin renegotiation */
         infof(data, "schannel: renegotiating SSL/TLS connection");
         connssl->state = ssl_connection_negotiating;
         connssl->connecting_state = ssl_connect_2_writing;
+        backend->recv_renegotiating = true;
         *err = schannel_connect_common(data, conn, sockindex, FALSE, &done);
+        backend->recv_renegotiating = false;
         if(*err) {
           infof(data, "schannel: renegotiation failed");
           goto cleanup;
@@ -2122,6 +2467,8 @@ static bool schannel_data_pending(const struct connectdata *conn,
   const struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
 
+  DEBUGASSERT(backend);
+
   if(connssl->use) /* SSL/TLS is in use */
     return (backend->decdata_offset > 0 ||
             (backend->encdata_offset > 0 && !backend->encdata_is_incomplete));
@@ -2138,6 +2485,13 @@ static void schannel_session_free(void *ptr)
     cred->refcount--;
     if(cred->refcount == 0) {
       s_pSecFn->FreeCredentialsHandle(&cred->cred_handle);
+      curlx_unicodefree(cred->sni_hostname);
+#ifdef HAS_CLIENT_CERT_PATH
+      if(cred->client_cert_store) {
+        CertCloseStore(cred->client_cert_store, 0);
+        cred->client_cert_store = NULL;
+      }
+#endif
       Curl_safefree(cred);
     }
   }
@@ -2157,6 +2511,7 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
   struct ssl_backend_data *backend = connssl->backend;
 
   DEBUGASSERT(data);
+  DEBUGASSERT(backend);
 
   if(connssl->use) {
     infof(data, "schannel: shutting down SSL/TLS connection with %s port %hu",
@@ -2170,7 +2525,6 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
     SecBuffer outbuf;
     SecBufferDesc outbuf_desc;
     CURLcode result;
-    TCHAR *host_name;
     DWORD dwshut = SCHANNEL_SHUTDOWN;
 
     InitSecBuffer(&Buffer, SECBUFFER_TOKEN, &dwshut, sizeof(dwshut));
@@ -2185,10 +2539,6 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
             Curl_sspi_strerror(sspi_status, buffer, sizeof(buffer)));
     }
 
-    host_name = curlx_convert_UTF8_to_tchar(hostname);
-    if(!host_name)
-      return CURLE_OUT_OF_MEMORY;
-
     /* setup output buffer */
     InitSecBuffer(&outbuf, SECBUFFER_EMPTY, NULL, 0);
     InitSecBufferDesc(&outbuf_desc, &outbuf, 1);
@@ -2196,7 +2546,7 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
     sspi_status = s_pSecFn->InitializeSecurityContext(
       &backend->cred->cred_handle,
       &backend->ctxt->ctxt_handle,
-      host_name,
+      backend->cred->sni_hostname,
       backend->req_flags,
       0,
       0,
@@ -2207,8 +2557,6 @@ static int schannel_shutdown(struct Curl_easy *data, struct connectdata *conn,
       &backend->ret_flags,
       &backend->ctxt->time_stamp);
 
-    curlx_unicodefree(host_name);
-
     if((sspi_status == SEC_E_OK) || (sspi_status == SEC_I_CONTEXT_EXPIRED)) {
       /* send close message which is in output buffer */
       ssize_t written;
@@ -2286,21 +2634,9 @@ static size_t schannel_version(char *buffer, size_t size)
 static CURLcode schannel_random(struct Curl_easy *data UNUSED_PARAM,
                                 unsigned char *entropy, size_t length)
 {
-  HCRYPTPROV hCryptProv = 0;
-
   (void)data;
 
-  if(!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL,
-                          CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
-    return CURLE_FAILED_INIT;
-
-  if(!CryptGenRandom(hCryptProv, (DWORD)length, entropy)) {
-    CryptReleaseContext(hCryptProv, 0UL);
-    return CURLE_FAILED_INIT;
-  }
-
-  CryptReleaseContext(hCryptProv, 0UL);
-  return CURLE_OK;
+  return Curl_win32_random(entropy, length);
 }
 
 static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
@@ -2314,6 +2650,8 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
   /* Result is returned to caller */
   CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
 
+  DEBUGASSERT(backend);
+
   /* if a path wasn't specified, don't pin */
   if(!pinnedpubkey)
     return CURLE_OK;
@@ -2359,7 +2697,7 @@ static CURLcode pkp_pin_peer_pubkey(struct Curl_easy *data,
                                   (const unsigned char *)pubkey->header,
                                   (size_t)(pubkey->end - pubkey->header));
     if(result) {
-      failf(data, "SSL: public key does not match pinned public key!");
+      failf(data, "SSL: public key does not match pinned public key");
     }
   } while(0);
 
@@ -2434,6 +2772,7 @@ static void *schannel_get_internals(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
   (void)info;
+  DEBUGASSERT(backend);
   return &backend->ctxt->ctxt_handle;
 }
 
@@ -2444,7 +2783,8 @@ const struct Curl_ssl Curl_ssl_schannel = {
 #ifdef HAS_MANUAL_VERIFY_API
   SSLSUPP_CAINFO_BLOB |
 #endif
-  SSLSUPP_PINNEDPUBKEY,
+  SSLSUPP_PINNEDPUBKEY |
+  SSLSUPP_TLS13_CIPHERSUITES,
 
   sizeof(struct ssl_backend_data),
 
index 77853aa30f96d22923f1d91e1731a3bd851998f6..24d7eff25b9b0ed46257d63668c76698e74680b7 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al.
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
  * 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
 
+#define SCHANNEL_USE_BLACKLISTS 1
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4201)
+#endif
+#include <subauth.h>
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+/* Wincrypt must be included before anything that could include OpenSSL. */
+#if defined(USE_WIN32_CRYPTO)
+#include <wincrypt.h>
+/* Undefine wincrypt conflicting symbols for BoringSSL. */
+#undef X509_NAME
+#undef X509_EXTENSIONS
+#undef PKCS7_ISSUER_AND_SERIAL
+#undef PKCS7_SIGNER_INFO
+#undef OCSP_REQUEST
+#undef OCSP_RESPONSE
+#endif
+
 #include <schnlsp.h>
 #include <schannel.h>
 #include "curl_sspi.h"
@@ -59,23 +83,87 @@ CURLcode Curl_verify_certificate(struct Curl_easy *data,
 /* structs to expose only in schannel.c and schannel_verify.c */
 #ifdef EXPOSE_SCHANNEL_INTERNAL_STRUCTS
 
+#include <wincrypt.h>
+
 #ifdef __MINGW32__
-#include <_mingw.h>
 #ifdef __MINGW64_VERSION_MAJOR
 #define HAS_MANUAL_VERIFY_API
 #endif
 #else
-#include <wincrypt.h>
 #ifdef CERT_CHAIN_REVOCATION_CHECK_CHAIN
 #define HAS_MANUAL_VERIFY_API
 #endif
 #endif
 
-#define NUMOF_CIPHERS 45 /* There are 45 listed in the MS headers */
+#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;
 };
 
@@ -100,11 +188,11 @@ struct ssl_backend_data {
   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
-  ALG_ID algIds[NUMOF_CIPHERS];
 };
 #endif /* EXPOSE_SCHANNEL_INTERNAL_STRUCTS */
 
index 4966cd4945616210875ccd485fec4c8274a7d3c4..1ac1d3eaf5c5d80301b3eec1f5abdaafe932757a 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
  * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -286,7 +288,6 @@ static CURLcode add_certs_file_to_store(HCERTSTORE trust_store,
     goto cleanup;
   }
 
-  result = CURLE_OK;
   while(total_bytes_read < ca_file_bufsize) {
     DWORD bytes_to_read = (DWORD)(ca_file_bufsize - total_bytes_read);
     DWORD bytes_read = 0;
@@ -313,9 +314,6 @@ static CURLcode add_certs_file_to_store(HCERTSTORE trust_store,
   /* Null terminate the buffer */
   ca_file_buffer[ca_file_bufsize] = '\0';
 
-  if(result != CURLE_OK) {
-    goto cleanup;
-  }
   result = add_certs_data_to_store(trust_store,
                                    ca_file_buffer, ca_file_bufsize,
                                    ca_file,
@@ -465,6 +463,7 @@ static CURLcode verify_host(struct Curl_easy *data,
   CURLcode result = CURLE_PEER_FAILED_VERIFICATION;
   TCHAR *cert_hostname_buff = NULL;
   size_t cert_hostname_buff_index = 0;
+  size_t hostlen = strlen(conn_hostname);
   DWORD len = 0;
   DWORD actual_len = 0;
 
@@ -520,10 +519,8 @@ static CURLcode verify_host(struct Curl_easy *data,
       result = CURLE_OUT_OF_MEMORY;
     }
     else {
-      int match_result;
-
-      match_result = Curl_cert_hostcheck(cert_hostname, conn_hostname);
-      if(match_result == CURL_HOST_MATCH) {
+      if(Curl_cert_hostcheck(cert_hostname, strlen(cert_hostname),
+                             conn_hostname, hostlen)) {
         infof(data,
               "schannel: connection hostname (%s) validated "
               "against certificate name (%s)",
@@ -577,6 +574,8 @@ CURLcode Curl_verify_certificate(struct Curl_easy *data,
   HCERTSTORE trust_store = NULL;
   const char * const conn_hostname = SSL_HOST_NAME();
 
+  DEBUGASSERT(BACKEND);
+
   sspi_status =
     s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
                                      SECPKG_ATTR_REMOTE_CERT_CONTEXT,
index f7a20b20b123e1824ff07c18ff44673f1b980070..c764e3631b5614fd407010633aeb42b98e65275f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -603,7 +605,7 @@ const static struct st_cipher ciphertable[] = {
              CIPHER_WEAK_RC_ENCRYPTION),
   CIPHER_DEF(TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA,                 /* 0xC003 */
              "ECDH-ECDSA-DES-CBC3-SHA",
-             CIPHER_STRONG_ENOUGH),
+             CIPHER_WEAK_3DES_ENCRYPTION),
   CIPHER_DEF(TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,                  /* 0xC004 */
              "ECDH-ECDSA-AES128-SHA",
              CIPHER_STRONG_ENOUGH),
@@ -837,12 +839,14 @@ static OSStatus SocketRead(SSLConnectionRef connection,
   /*int sock = *(int *)connection;*/
   struct ssl_connect_data *connssl = (struct ssl_connect_data *)connection;
   struct ssl_backend_data *backend = connssl->backend;
-  int sock = backend->ssl_sockfd;
+  int sock;
   OSStatus rtn = noErr;
   size_t bytesRead;
   ssize_t rrtn;
   int theErr;
 
+  DEBUGASSERT(backend);
+  sock = backend->ssl_sockfd;
   *dataLength = 0;
 
   for(;;) {
@@ -898,13 +902,15 @@ static OSStatus SocketWrite(SSLConnectionRef connection,
   /*int sock = *(int *)connection;*/
   struct ssl_connect_data *connssl = (struct ssl_connect_data *)connection;
   struct ssl_backend_data *backend = connssl->backend;
-  int sock = backend->ssl_sockfd;
+  int sock;
   ssize_t length;
   size_t dataLen = *dataLength;
   const UInt8 *dataPtr = (UInt8 *)data;
   OSStatus ortn;
   int theErr;
 
+  DEBUGASSERT(backend);
+  sock = backend->ssl_sockfd;
   *dataLength = 0;
 
   do {
@@ -934,9 +940,9 @@ static OSStatus SocketWrite(SSLConnectionRef connection,
 #ifndef CURL_DISABLE_VERBOSE_STRINGS
 CF_INLINE const char *TLSCipherNameForNumber(SSLCipherSuite cipher)
 {
-  /* The first ciphers in the ciphertable are continuos. Here we do small
+  /* The first ciphers in the ciphertable are continuous. Here we do small
      optimization and instead of loop directly get SSL name by cipher number.
-   */
+  */
   if(cipher <= SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA) {
     return ciphertable[cipher].name;
   }
@@ -1376,6 +1382,8 @@ set_ssl_version_min_max(struct Curl_easy *data, struct connectdata *conn,
   long ssl_version_max = SSL_CONN_CONFIG(version_max);
   long max_supported_version_by_os;
 
+  DEBUGASSERT(backend);
+
   /* macOS 10.5-10.7 supported TLS 1.0 only.
      macOS 10.8 and later, and iOS 5 and later, added TLS 1.1 and 1.2.
      macOS 10.13 and later, and iOS 11 and later, added TLS 1.3. */
@@ -1684,6 +1692,8 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
 #if CURL_BUILD_MAC
   int darwinver_maj = 0, darwinver_min = 0;
 
+  DEBUGASSERT(backend);
+
   GetDarwinVersionNumber(&darwinver_maj, &darwinver_min);
 #endif /* CURL_BUILD_MAC */
 
@@ -1693,7 +1703,7 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
       CFRelease(backend->ssl_ctx);
     backend->ssl_ctx = SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType);
     if(!backend->ssl_ctx) {
-      failf(data, "SSL: couldn't create a context!");
+      failf(data, "SSL: couldn't create a context");
       return CURLE_OUT_OF_MEMORY;
     }
   }
@@ -1843,12 +1853,12 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
 #endif
         ) {
         CFArrayAppendValue(alpnArr, CFSTR(ALPN_H2));
-        infof(data, "ALPN, offering %s", ALPN_H2);
+        infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
       }
 #endif
 
       CFArrayAppendValue(alpnArr, CFSTR(ALPN_HTTP_1_1));
-      infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
 
       /* expects length prefixed preference ordered list of protocols in wire
        * format
@@ -2028,12 +2038,18 @@ static CURLcode sectransp_connect_step1(struct Curl_easy *data,
    * Both hostname check and SNI require SSLSetPeerDomainName().
    * Also: the verifyhost setting influences SNI usage */
   if(conn->ssl_config.verifyhost) {
-    err = SSLSetPeerDomainName(backend->ssl_ctx, hostname,
-    strlen(hostname));
+    size_t snilen;
+    char *snihost = Curl_ssl_snihost(data, hostname, &snilen);
+    if(!snihost) {
+      failf(data, "Failed to set SNI");
+      return CURLE_SSL_CONNECT_ERROR;
+    }
+    err = SSLSetPeerDomainName(backend->ssl_ctx, snihost, snilen);
 
     if(err != noErr) {
-      infof(data, "WARNING: SSL: SSLSetPeerDomainName() failed: OSStatus %d",
+      failf(data, "SSL: SSLSetPeerDomainName() failed: OSStatus %d",
             err);
+      return CURLE_SSL_CONNECT_ERROR;
     }
 
     if((Curl_inet_pton(AF_INET, hostname, &addr))
@@ -2542,6 +2558,7 @@ sectransp_connect_step2(struct Curl_easy *data, struct connectdata *conn,
   DEBUGASSERT(ssl_connect_2 == connssl->connecting_state
               || ssl_connect_2_reading == connssl->connecting_state
               || ssl_connect_2_writing == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   /* Here goes nothing: */
   err = SSLHandshake(backend->ssl_ctx);
@@ -2774,7 +2791,7 @@ sectransp_connect_step2(struct Curl_easy *data, struct connectdata *conn,
         pkp_pin_peer_pubkey(data, backend->ssl_ctx,
                             data->set.str[STRING_SSL_PINNEDPUBLICKEY]);
       if(result) {
-        failf(data, "SSL: public key does not match pinned public key!");
+        failf(data, "SSL: public key does not match pinned public key");
         return result;
       }
     }
@@ -2830,18 +2847,18 @@ sectransp_connect_step2(struct Curl_easy *data, struct connectdata *conn,
 #ifdef USE_HTTP2
         if(chosenProtocol &&
            !CFStringCompare(chosenProtocol, CFSTR(ALPN_H2), 0)) {
-          conn->negnpn = CURL_HTTP_VERSION_2;
+          conn->alpn = CURL_HTTP_VERSION_2;
         }
         else
 #endif
         if(chosenProtocol &&
            !CFStringCompare(chosenProtocol, CFSTR(ALPN_HTTP_1_1), 0)) {
-          conn->negnpn = CURL_HTTP_VERSION_1_1;
+          conn->alpn = CURL_HTTP_VERSION_1_1;
         }
         else
-          infof(data, "ALPN, server did not agree to a protocol");
+          infof(data, VTLS_INFOF_NO_ALPN);
 
-        Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+        Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
                             BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
 
         /* chosenProtocol is a reference to the string within alpnArr
@@ -2918,6 +2935,8 @@ collect_server_cert(struct Curl_easy *data,
   CFIndex i, count;
   SecTrustRef trust = NULL;
 
+  DEBUGASSERT(backend);
+
   if(!show_verbose_server_cert && !data->set.ssl.certinfo)
     return CURLE_OK;
 
@@ -2947,7 +2966,7 @@ collect_server_cert(struct Curl_easy *data,
      private API and doesn't work as expected. So we have to look for
      a different symbol to make sure this code is only executed under
      Lion or later. */
-  if(SecTrustEvaluateAsync) {
+  if(SecTrustCopyPublicKey) {
 #pragma unused(server_certs)
     err = SSLCopyPeerTrust(backend->ssl_ctx, &trust);
     /* For some reason, SSLCopyPeerTrust() can return noErr and yet return
@@ -3162,6 +3181,8 @@ static void sectransp_close(struct Curl_easy *data, struct connectdata *conn,
 
   (void) data;
 
+  DEBUGASSERT(backend);
+
   if(backend->ssl_ctx) {
     (void)SSLClose(backend->ssl_ctx);
 #if CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS
@@ -3190,6 +3211,8 @@ static int sectransp_shutdown(struct Curl_easy *data,
   char buf[120];
   int loop = 10; /* avoid getting stuck */
 
+  DEBUGASSERT(backend);
+
   if(!backend->ssl_ctx)
     return 0;
 
@@ -3269,6 +3292,8 @@ static int sectransp_check_cxn(struct connectdata *conn)
   OSStatus err;
   SSLSessionState state;
 
+  DEBUGASSERT(backend);
+
   if(backend->ssl_ctx) {
     err = SSLGetSessionState(backend->ssl_ctx, &state);
     if(err == noErr)
@@ -3286,6 +3311,8 @@ static bool sectransp_data_pending(const struct connectdata *conn,
   OSStatus err;
   size_t buffer;
 
+  DEBUGASSERT(backend);
+
   if(backend->ssl_ctx) {  /* SSL is in use */
     err = SSLGetBufferedReadSize(backend->ssl_ctx, &buffer);
     if(err == noErr)
@@ -3347,6 +3374,8 @@ static ssize_t sectransp_send(struct Curl_easy *data,
   size_t processed = 0UL;
   OSStatus err;
 
+  DEBUGASSERT(backend);
+
   /* The SSLWrite() function works a little differently than expected. The
      fourth argument (processed) is currently documented in Apple's
      documentation as: "On return, the length, in bytes, of the data actually
@@ -3414,6 +3443,8 @@ static ssize_t sectransp_recv(struct Curl_easy *data,
   size_t processed = 0UL;
   OSStatus err;
 
+  DEBUGASSERT(backend);
+
   again:
   err = SSLRead(backend->ssl_ctx, buf, buffersize, &processed);
 
@@ -3463,6 +3494,7 @@ static void *sectransp_get_internals(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
   (void)info;
+  DEBUGASSERT(backend);
   return backend->ssl_ctx;
 }
 
index 0febd6613ac0c0dd3965341327321f5469230463..2d53b7c480c8e6f40512a850d9ed39531533b8c8 100644 (file)
@@ -8,7 +8,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -21,6 +21,8 @@
  * 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"
 
index 6007bbba0fd048880d129e24078e03dea0995336..9dee5aa3b38ef77908343bc5954868e55fa9725e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* This file is for implementing all "generic" SSL functions that all libcurl
@@ -125,15 +127,6 @@ static bool blobcmp(struct curl_blob *first, struct curl_blob *second)
   return !memcmp(first->data, second->data, first->len); /* same data */
 }
 
-static bool safecmp(char *a, char *b)
-{
-  if(a && b)
-    return !strcmp(a, b);
-  else if(!a && !b)
-    return TRUE; /* match */
-  return FALSE; /* no match */
-}
-
 
 bool
 Curl_ssl_config_matches(struct ssl_primary_config *data,
@@ -141,21 +134,26 @@ Curl_ssl_config_matches(struct ssl_primary_config *data,
 {
   if((data->version == needle->version) &&
      (data->version_max == needle->version_max) &&
+     (data->ssl_options == needle->ssl_options) &&
      (data->verifypeer == needle->verifypeer) &&
      (data->verifyhost == needle->verifyhost) &&
      (data->verifystatus == needle->verifystatus) &&
      blobcmp(data->cert_blob, needle->cert_blob) &&
      blobcmp(data->ca_info_blob, needle->ca_info_blob) &&
      blobcmp(data->issuercert_blob, needle->issuercert_blob) &&
-     safecmp(data->CApath, needle->CApath) &&
-     safecmp(data->CAfile, needle->CAfile) &&
-     safecmp(data->issuercert, needle->issuercert) &&
-     safecmp(data->clientcert, needle->clientcert) &&
-     safecmp(data->random_file, needle->random_file) &&
-     safecmp(data->egdsocket, needle->egdsocket) &&
+     Curl_safecmp(data->CApath, needle->CApath) &&
+     Curl_safecmp(data->CAfile, needle->CAfile) &&
+     Curl_safecmp(data->issuercert, needle->issuercert) &&
+     Curl_safecmp(data->clientcert, needle->clientcert) &&
+#ifdef USE_TLS_SRP
+     !Curl_timestrcmp(data->username, needle->username) &&
+     !Curl_timestrcmp(data->password, needle->password) &&
+     (data->authtype == needle->authtype) &&
+#endif
      Curl_safe_strcasecompare(data->cipher_list, needle->cipher_list) &&
      Curl_safe_strcasecompare(data->cipher_list13, needle->cipher_list13) &&
      Curl_safe_strcasecompare(data->curves, needle->curves) &&
+     Curl_safe_strcasecompare(data->CRLfile, needle->CRLfile) &&
      Curl_safe_strcasecompare(data->pinned_key, needle->pinned_key))
     return TRUE;
 
@@ -172,6 +170,10 @@ Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
   dest->verifyhost = source->verifyhost;
   dest->verifystatus = source->verifystatus;
   dest->sessionid = source->sessionid;
+  dest->ssl_options = source->ssl_options;
+#ifdef USE_TLS_SRP
+  dest->authtype = source->authtype;
+#endif
 
   CLONE_BLOB(cert_blob);
   CLONE_BLOB(ca_info_blob);
@@ -180,12 +182,15 @@ Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
   CLONE_STRING(CAfile);
   CLONE_STRING(issuercert);
   CLONE_STRING(clientcert);
-  CLONE_STRING(random_file);
-  CLONE_STRING(egdsocket);
   CLONE_STRING(cipher_list);
   CLONE_STRING(cipher_list13);
   CLONE_STRING(pinned_key);
   CLONE_STRING(curves);
+  CLONE_STRING(CRLfile);
+#ifdef USE_TLS_SRP
+  CLONE_STRING(username);
+  CLONE_STRING(password);
+#endif
 
   return TRUE;
 }
@@ -196,8 +201,6 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc)
   Curl_safefree(sslc->CAfile);
   Curl_safefree(sslc->issuercert);
   Curl_safefree(sslc->clientcert);
-  Curl_safefree(sslc->random_file);
-  Curl_safefree(sslc->egdsocket);
   Curl_safefree(sslc->cipher_list);
   Curl_safefree(sslc->cipher_list13);
   Curl_safefree(sslc->pinned_key);
@@ -205,19 +208,24 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc)
   Curl_safefree(sslc->ca_info_blob);
   Curl_safefree(sslc->issuercert_blob);
   Curl_safefree(sslc->curves);
+  Curl_safefree(sslc->CRLfile);
+#ifdef USE_TLS_SRP
+  Curl_safefree(sslc->username);
+  Curl_safefree(sslc->password);
+#endif
 }
 
 #ifdef USE_SSL
 static int multissl_setup(const struct Curl_ssl *backend);
 #endif
 
-int Curl_ssl_backend(void)
+curl_sslbackend Curl_ssl_backend(void)
 {
 #ifdef USE_SSL
   multissl_setup(NULL);
   return Curl_ssl->info.id;
 #else
-  return (int)CURLSSLBACKEND_NONE;
+  return CURLSSLBACKEND_NONE;
 #endif
 }
 
@@ -300,6 +308,8 @@ ssl_connect_init_proxy(struct connectdata *conn, int sockindex)
     pbdata = conn->proxy_ssl[sockindex].backend;
     conn->proxy_ssl[sockindex] = conn->ssl[sockindex];
 
+    DEBUGASSERT(pbdata != NULL);
+
     memset(&conn->ssl[sockindex], 0, sizeof(conn->ssl[sockindex]));
     memset(pbdata, 0, Curl_ssl->sizeof_ssl_backend_data);
 
@@ -628,7 +638,8 @@ void Curl_ssl_associate_conn(struct Curl_easy *data,
 {
   if(Curl_ssl->associate_connection) {
     Curl_ssl->associate_connection(data, conn, FIRSTSOCKET);
-    if(conn->sock[SECONDARYSOCKET] && conn->bits.sock_accepted)
+    if((conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) &&
+       conn->bits.sock_accepted)
       Curl_ssl->associate_connection(data, conn, SECONDARYSOCKET);
   }
 }
@@ -638,7 +649,8 @@ void Curl_ssl_detach_conn(struct Curl_easy *data,
 {
   if(Curl_ssl->disassociate_connection) {
     Curl_ssl->disassociate_connection(data, FIRSTSOCKET);
-    if(conn->sock[SECONDARYSOCKET] && conn->bits.sock_accepted)
+    if((conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) &&
+       conn->bits.sock_accepted)
       Curl_ssl->disassociate_connection(data, SECONDARYSOCKET);
   }
 }
@@ -871,6 +883,32 @@ CURLcode Curl_ssl_random(struct Curl_easy *data,
   return Curl_ssl->random(data, entropy, length);
 }
 
+/*
+ * Curl_ssl_snihost() converts the input host name to a suitable SNI name put
+ * in data->state.buffer. Returns a pointer to the name (or NULL if a problem)
+ * and stores the new length in 'olen'.
+ *
+ * SNI fields must not have any trailing dot and while RFC 6066 section 3 says
+ * the SNI field is case insensitive, browsers always send the data lowercase
+ * and subsequently there are numerous servers out there that don't work
+ * unless the name is lowercased.
+ */
+
+char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen)
+{
+  size_t len = strlen(host);
+  if(len && (host[len-1] == '.'))
+    len--;
+  if(len >= data->set.buffer_size)
+    return NULL;
+
+  Curl_strntolower(data->state.buffer, host, len);
+  data->state.buffer[len] = 0;
+  if(olen)
+    *olen = len;
+  return data->state.buffer;
+}
+
 /*
  * Public key pem to der conversion
  */
@@ -969,7 +1007,7 @@ CURLcode Curl_pin_peer_pubkey(struct Curl_easy *data,
     if(encode != CURLE_OK)
       return encode;
 
-    encode = Curl_base64_encode(data, (char *)sha256sumdigest,
+    encode = Curl_base64_encode((char *)sha256sumdigest,
                                 CURL_SHA256_DIGEST_LENGTH, &encoded,
                                 &encodedlen);
     Curl_safefree(sha256sumdigest);
@@ -1296,8 +1334,6 @@ const struct Curl_ssl *Curl_ssl =
   &Curl_ssl_openssl;
 #elif defined(USE_SCHANNEL)
   &Curl_ssl_schannel;
-#elif defined(USE_MESALINK)
-  &Curl_ssl_mesalink;
 #elif defined(USE_BEARSSL)
   &Curl_ssl_bearssl;
 #else
@@ -1329,9 +1365,6 @@ static const struct Curl_ssl *available_backends[] = {
 #if defined(USE_SCHANNEL)
   &Curl_ssl_schannel,
 #endif
-#if defined(USE_MESALINK)
-  &Curl_ssl_mesalink,
-#endif
 #if defined(USE_BEARSSL)
   &Curl_ssl_bearssl,
 #endif
@@ -1423,8 +1456,10 @@ static int multissl_setup(const struct Curl_ssl *backend)
   return 0;
 }
 
-CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
-                              const curl_ssl_backend ***avail)
+/* This function is used to select the SSL backend to use. It is called by
+   curl_global_sslset (easy.c) which uses the global init lock. */
+CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
+                                   const curl_ssl_backend ***avail)
 {
   int i;
 
@@ -1453,8 +1488,8 @@ CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
 }
 
 #else /* USE_SSL */
-CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
-                              const curl_ssl_backend ***avail)
+CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
+                                   const curl_ssl_backend ***avail)
 {
   (void)id;
   (void)name;
index c7bbba082d9c88ba2d57e004a151b73866389ec0..50c53b3fbd5e2fabbfc6668edb8b4ab5caa4c30c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
@@ -34,6 +36,17 @@ struct ssl_connect_data;
 #define SSLSUPP_TLS13_CIPHERSUITES (1<<5) /* supports TLS 1.3 ciphersuites */
 #define SSLSUPP_CAINFO_BLOB  (1<<6)
 
+#define ALPN_ACCEPTED "ALPN: server accepted "
+
+#define VTLS_INFOF_NO_ALPN                                      \
+  "ALPN: server did not agree on a protocol. Uses default."
+#define VTLS_INFOF_ALPN_OFFER_1STR              \
+  "ALPN: offers %s"
+#define VTLS_INFOF_ALPN_ACCEPTED_1STR           \
+  ALPN_ACCEPTED "%s"
+#define VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR       \
+  ALPN_ACCEPTED "%.*s"
+
 struct Curl_ssl {
   /*
    * This *must* be the first entry to allow returning the list of available
@@ -85,7 +98,7 @@ struct Curl_ssl {
   CURLcode (*sha256sum)(const unsigned char *input, size_t inputlen,
                     unsigned char *sha256sum, size_t sha256sumlen);
 
-  void (*associate_connection)(struct Curl_easy *data,
+  bool (*associate_connection)(struct Curl_easy *data,
                                struct connectdata *conn,
                                int sockindex);
   void (*disassociate_connection)(struct Curl_easy *data, int sockindex);
@@ -112,6 +125,9 @@ struct curl_slist *Curl_none_engines_list(struct Curl_easy *data);
 bool Curl_none_false_start(void);
 bool Curl_ssl_tls13_ciphersuites(void);
 
+CURLsslset Curl_init_sslset_nolock(curl_sslbackend id, const char *name,
+                                   const curl_ssl_backend ***avail);
+
 #include "openssl.h"        /* OpenSSL versions */
 #include "gtls.h"           /* GnuTLS versions */
 #include "nssg.h"           /* NSS versions */
@@ -120,7 +136,6 @@ bool Curl_ssl_tls13_ciphersuites(void);
 #include "schannel.h"       /* Schannel SSPI version */
 #include "sectransp.h"      /* SecureTransport (Darwin) version */
 #include "mbedtls.h"        /* mbedTLS versions */
-#include "mesalink.h"       /* MesaLink versions */
 #include "bearssl.h"        /* BearSSL versions */
 #include "rustls.h"         /* rustls versions */
 
@@ -173,6 +188,7 @@ bool Curl_ssl_tls13_ciphersuites(void);
   data->set.str[STRING_SSL_PINNEDPUBLICKEY]
 #endif
 
+char *Curl_ssl_snihost(struct Curl_easy *data, const char *host, size_t *olen);
 bool Curl_ssl_config_matches(struct ssl_primary_config *data,
                              struct ssl_primary_config *needle);
 bool Curl_clone_primary_ssl_config(struct ssl_primary_config *source,
@@ -184,7 +200,7 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc);
    ssl_connect_2_writing. */
 int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks);
 
-int Curl_ssl_backend(void);
+curl_sslbackend Curl_ssl_backend(void);
 
 #ifdef USE_SSL
 int Curl_ssl_init(void);
index 8c5b9157b858b68cae2cd4986a99255fb5c6d1af..594c39a3246d4724914ffde2c800358c8c5c06f5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -263,6 +265,8 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 #define use_sni(x)  Curl_nop_stmt
 #endif
 
+  DEBUGASSERT(backend);
+
   if(connssl->state == ssl_connection_complete)
     return CURLE_OK;
 
@@ -322,7 +326,7 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   }
 
   if(!req_method) {
-    failf(data, "SSL: couldn't create a method!");
+    failf(data, "SSL: couldn't create a method");
     return CURLE_OUT_OF_MEMORY;
   }
 
@@ -331,7 +335,7 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
   backend->ctx = SSL_CTX_new(req_method);
 
   if(!backend->ctx) {
-    failf(data, "SSL: couldn't create a context!");
+    failf(data, "SSL: couldn't create a context");
     return CURLE_OUT_OF_MEMORY;
   }
 
@@ -460,14 +464,19 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
     const char * const hostname = SSL_HOST_NAME();
     size_t hostname_len = strlen(hostname);
     if((hostname_len < USHRT_MAX) &&
-       (0 == Curl_inet_pton(AF_INET, hostname, &addr4)) &&
+       !Curl_inet_pton(AF_INET, hostname, &addr4)
 #ifdef ENABLE_IPV6
-       (0 == Curl_inet_pton(AF_INET6, hostname, &addr6)) &&
+       && !Curl_inet_pton(AF_INET6, hostname, &addr6)
 #endif
-       (wolfSSL_CTX_UseSNI(backend->ctx, WOLFSSL_SNI_HOST_NAME, hostname,
-                          (unsigned short)hostname_len) != 1)) {
-      infof(data, "WARNING: failed to configure server name indication (SNI) "
-            "TLS extension");
+      ) {
+      size_t snilen;
+      char *snihost = Curl_ssl_snihost(data, hostname, &snilen);
+      if(!snihost ||
+         wolfSSL_CTX_UseSNI(backend->ctx, WOLFSSL_SNI_HOST_NAME, snihost,
+                            (unsigned short)snilen) != 1) {
+        failf(data, "Failed to set SNI");
+        return CURLE_SSL_CONNECT_ERROR;
+      }
     }
   }
 #endif
@@ -496,7 +505,7 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
     SSL_free(backend->handle);
   backend->handle = SSL_new(backend->ctx);
   if(!backend->handle) {
-    failf(data, "SSL: couldn't create a context (handle)!");
+    failf(data, "SSL: couldn't create a handle");
     return CURLE_OUT_OF_MEMORY;
   }
 
@@ -519,12 +528,12 @@ wolfssl_connect_step1(struct Curl_easy *data, struct connectdata *conn,
 #ifdef USE_HTTP2
     if(data->state.httpwant >= CURL_HTTP_VERSION_2) {
       strcpy(protocols + strlen(protocols), ALPN_H2 ",");
-      infof(data, "ALPN, offering %s", ALPN_H2);
+      infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_H2);
     }
 #endif
 
     strcpy(protocols + strlen(protocols), ALPN_HTTP_1_1);
-    infof(data, "ALPN, offering %s", ALPN_HTTP_1_1);
+    infof(data, VTLS_INFOF_ALPN_OFFER_1STR, ALPN_HTTP_1_1);
 
     if(wolfSSL_UseALPN(backend->handle, protocols,
                        (unsigned)strlen(protocols),
@@ -590,10 +599,11 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
   int ret = -1;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
   struct ssl_backend_data *backend = connssl->backend;
-  const char * const hostname = SSL_HOST_NAME();
   const char * const dispname = SSL_HOST_DISPNAME();
   const char * const pinnedpubkey = SSL_PINNED_PUB_KEY();
 
+  DEBUGASSERT(backend);
+
   ERR_clear_error();
 
   conn->recv[sockindex] = wolfssl_recv;
@@ -601,9 +611,10 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
 
   /* Enable RFC2818 checks */
   if(SSL_CONN_CONFIG(verifyhost)) {
-    ret = wolfSSL_check_domain_name(backend->handle, hostname);
-    if(ret == SSL_FAILURE)
-      return CURLE_OUT_OF_MEMORY;
+    char *snihost = Curl_ssl_snihost(data, SSL_HOST_NAME(), NULL);
+    if(!snihost ||
+       (wolfSSL_check_domain_name(backend->handle, snihost) == SSL_FAILURE))
+      return CURLE_SSL_CONNECT_ERROR;
   }
 
   ret = SSL_connect(backend->handle);
@@ -730,7 +741,7 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
                                   (const unsigned char *)pubkey->header,
                                   (size_t)(pubkey->end - pubkey->header));
     if(result) {
-      failf(data, "SSL: public key does not match pinned public key!");
+      failf(data, "SSL: public key does not match pinned public key");
       return result;
     }
 #else
@@ -748,26 +759,25 @@ wolfssl_connect_step2(struct Curl_easy *data, struct connectdata *conn,
     rc = wolfSSL_ALPN_GetProtocol(backend->handle, &protocol, &protocol_len);
 
     if(rc == SSL_SUCCESS) {
-      infof(data, "ALPN, server accepted to use %.*s", protocol_len,
-            protocol);
+      infof(data, VTLS_INFOF_ALPN_ACCEPTED_LEN_1STR, protocol_len, protocol);
 
       if(protocol_len == ALPN_HTTP_1_1_LENGTH &&
          !memcmp(protocol, ALPN_HTTP_1_1, ALPN_HTTP_1_1_LENGTH))
-        conn->negnpn = CURL_HTTP_VERSION_1_1;
+        conn->alpn = CURL_HTTP_VERSION_1_1;
 #ifdef USE_HTTP2
       else if(data->state.httpwant >= CURL_HTTP_VERSION_2 &&
               protocol_len == ALPN_H2_LENGTH &&
               !memcmp(protocol, ALPN_H2, ALPN_H2_LENGTH))
-        conn->negnpn = CURL_HTTP_VERSION_2;
+        conn->alpn = CURL_HTTP_VERSION_2;
 #endif
       else
         infof(data, "ALPN, unrecognized protocol %.*s", protocol_len,
               protocol);
-      Curl_multiuse_state(data, conn->negnpn == CURL_HTTP_VERSION_2 ?
+      Curl_multiuse_state(data, conn->alpn == CURL_HTTP_VERSION_2 ?
                           BUNDLE_MULTIPLEX : BUNDLE_NO_MULTIUSE);
     }
     else if(rc == SSL_ALPN_NOT_FOUND)
-      infof(data, "ALPN, server did not agree to a protocol");
+      infof(data, VTLS_INFOF_NO_ALPN);
     else {
       failf(data, "ALPN, failure getting protocol, error %d", rc);
       return CURLE_SSL_CONNECT_ERROR;
@@ -797,11 +807,14 @@ wolfssl_connect_step3(struct Curl_easy *data, struct connectdata *conn,
   struct ssl_backend_data *backend = connssl->backend;
 
   DEBUGASSERT(ssl_connect_3 == connssl->connecting_state);
+  DEBUGASSERT(backend);
 
   if(SSL_SET_OPTION(primary.sessionid)) {
     bool incache;
+    bool added = FALSE;
     void *old_ssl_sessionid = NULL;
-    SSL_SESSION *our_ssl_sessionid = SSL_get_session(backend->handle);
+    /* SSL_get1_session allocates memory that has to be freed. */
+    SSL_SESSION *our_ssl_sessionid = SSL_get1_session(backend->handle);
     bool isproxy = SSL_IS_PROXY() ? TRUE : FALSE;
 
     if(our_ssl_sessionid) {
@@ -821,11 +834,20 @@ wolfssl_connect_step3(struct Curl_easy *data, struct connectdata *conn,
                                        0, sockindex, NULL);
         if(result) {
           Curl_ssl_sessionid_unlock(data);
+          SSL_SESSION_free(our_ssl_sessionid);
           failf(data, "failed to store ssl session");
           return result;
         }
+        else {
+          added = TRUE;
+        }
       }
       Curl_ssl_sessionid_unlock(data);
+
+      if(!added) {
+        /* If the session info wasn't added to the cache, free our copy. */
+        SSL_SESSION_free(our_ssl_sessionid);
+      }
     }
   }
 
@@ -848,6 +870,8 @@ static ssize_t wolfssl_send(struct Curl_easy *data,
   int memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len;
   int rc;
 
+  DEBUGASSERT(backend);
+
   ERR_clear_error();
 
   rc = SSL_write(backend->handle, mem, memlen);
@@ -880,6 +904,8 @@ static void wolfssl_close(struct Curl_easy *data, struct connectdata *conn,
 
   (void) data;
 
+  DEBUGASSERT(backend);
+
   if(backend->handle) {
     char buf[32];
     /* Maybe the server has already sent a close notify alert.
@@ -908,17 +934,22 @@ static ssize_t wolfssl_recv(struct Curl_easy *data,
   int buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize;
   int nread;
 
+  DEBUGASSERT(backend);
+
   ERR_clear_error();
 
   nread = SSL_read(backend->handle, buf, buffsize);
 
-  if(nread < 0) {
+  if(nread <= 0) {
     int err = SSL_get_error(backend->handle, nread);
 
     switch(err) {
     case SSL_ERROR_ZERO_RETURN: /* no more data */
       break;
+    case SSL_ERROR_NONE:
+      /* FALLTHROUGH */
     case SSL_ERROR_WANT_READ:
+      /* FALLTHROUGH */
     case SSL_ERROR_WANT_WRITE:
       /* there's data pending, re-invoke SSL_read() */
       *curlcode = CURLE_AGAIN;
@@ -936,8 +967,7 @@ static ssize_t wolfssl_recv(struct Curl_easy *data,
 
 static void wolfssl_session_free(void *ptr)
 {
-  (void)ptr;
-  /* wolfSSL reuses sessions on own, no free */
+  SSL_SESSION_free(ptr);
 }
 
 
@@ -974,6 +1004,7 @@ static bool wolfssl_data_pending(const struct connectdata *conn,
 {
   const struct ssl_connect_data *connssl = &conn->ssl[connindex];
   struct ssl_backend_data *backend = connssl->backend;
+  DEBUGASSERT(backend);
   if(backend->handle)   /* SSL is in use */
     return (0 != SSL_pending(backend->handle)) ? TRUE : FALSE;
   else
@@ -994,6 +1025,8 @@ static int wolfssl_shutdown(struct Curl_easy *data, struct connectdata *conn,
 
   (void) data;
 
+  DEBUGASSERT(backend);
+
   if(backend->handle) {
     ERR_clear_error();
     SSL_free(backend->handle);
@@ -1173,6 +1206,7 @@ static void *wolfssl_get_internals(struct ssl_connect_data *connssl,
 {
   struct ssl_backend_data *backend = connssl->backend;
   (void)info;
+  DEBUGASSERT(backend);
   return backend->handle;
 }
 
index d411e6913e1898dfe6d5f105bbfd1a9dfe051b1b..b2e7c3fde21b37ed735defbbdd98f35daf893797 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
diff --git a/lib/vtls/x509asn1.c b/lib/vtls/x509asn1.c
new file mode 100644 (file)
index 0000000..0cfcbe8
--- /dev/null
@@ -0,0 +1,1426 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) ||    \
+  defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
+
+#if defined(USE_GSKIT) || defined(USE_WOLFSSL) || defined(USE_SCHANNEL)
+#define WANT_PARSEX509 /* uses Curl_parseX509() */
+#endif
+
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) ||    \
+  defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
+#define WANT_EXTRACT_CERTINFO /* uses Curl_extract_certinfo() */
+#define WANT_PARSEX509 /* ... uses Curl_parseX509() */
+#endif
+
+#if defined(USE_GSKIT)
+#define WANT_VERIFYHOST /* uses Curl_verifyhost () */
+#define WANT_PARSEX509 /* ... uses Curl_parseX509() */
+#endif
+
+#include <curl/curl.h>
+#include "urldata.h"
+#include "strcase.h"
+#include "curl_ctype.h"
+#include "hostcheck.h"
+#include "vtls/vtls.h"
+#include "sendf.h"
+#include "inet_pton.h"
+#include "curl_base64.h"
+#include "x509asn1.h"
+#include "dynbuf.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+/*
+ * Constants.
+ */
+
+/* Largest supported ASN.1 structure. */
+#define CURL_ASN1_MAX                   ((size_t) 0x40000)      /* 256K */
+
+/* ASN.1 classes. */
+#define CURL_ASN1_UNIVERSAL             0
+#define CURL_ASN1_APPLICATION           1
+#define CURL_ASN1_CONTEXT_SPECIFIC      2
+#define CURL_ASN1_PRIVATE               3
+
+/* ASN.1 types. */
+#define CURL_ASN1_BOOLEAN               1
+#define CURL_ASN1_INTEGER               2
+#define CURL_ASN1_BIT_STRING            3
+#define CURL_ASN1_OCTET_STRING          4
+#define CURL_ASN1_NULL                  5
+#define CURL_ASN1_OBJECT_IDENTIFIER     6
+#define CURL_ASN1_OBJECT_DESCRIPTOR     7
+#define CURL_ASN1_INSTANCE_OF           8
+#define CURL_ASN1_REAL                  9
+#define CURL_ASN1_ENUMERATED            10
+#define CURL_ASN1_EMBEDDED              11
+#define CURL_ASN1_UTF8_STRING           12
+#define CURL_ASN1_RELATIVE_OID          13
+#define CURL_ASN1_SEQUENCE              16
+#define CURL_ASN1_SET                   17
+#define CURL_ASN1_NUMERIC_STRING        18
+#define CURL_ASN1_PRINTABLE_STRING      19
+#define CURL_ASN1_TELETEX_STRING        20
+#define CURL_ASN1_VIDEOTEX_STRING       21
+#define CURL_ASN1_IA5_STRING            22
+#define CURL_ASN1_UTC_TIME              23
+#define CURL_ASN1_GENERALIZED_TIME      24
+#define CURL_ASN1_GRAPHIC_STRING        25
+#define CURL_ASN1_VISIBLE_STRING        26
+#define CURL_ASN1_GENERAL_STRING        27
+#define CURL_ASN1_UNIVERSAL_STRING      28
+#define CURL_ASN1_CHARACTER_STRING      29
+#define CURL_ASN1_BMP_STRING            30
+
+#ifdef WANT_EXTRACT_CERTINFO
+/* ASN.1 OID table entry. */
+struct Curl_OID {
+  const char *numoid;  /* Dotted-numeric OID. */
+  const char *textoid; /* OID name. */
+};
+
+/* ASN.1 OIDs. */
+static const char       cnOID[] = "2.5.4.3";    /* Common name. */
+static const char       sanOID[] = "2.5.29.17"; /* Subject alternative name. */
+
+static const struct Curl_OID OIDtable[] = {
+  { "1.2.840.10040.4.1",        "dsa" },
+  { "1.2.840.10040.4.3",        "dsa-with-sha1" },
+  { "1.2.840.10045.2.1",        "ecPublicKey" },
+  { "1.2.840.10045.3.0.1",      "c2pnb163v1" },
+  { "1.2.840.10045.4.1",        "ecdsa-with-SHA1" },
+  { "1.2.840.10046.2.1",        "dhpublicnumber" },
+  { "1.2.840.113549.1.1.1",     "rsaEncryption" },
+  { "1.2.840.113549.1.1.2",     "md2WithRSAEncryption" },
+  { "1.2.840.113549.1.1.4",     "md5WithRSAEncryption" },
+  { "1.2.840.113549.1.1.5",     "sha1WithRSAEncryption" },
+  { "1.2.840.113549.1.1.10",    "RSASSA-PSS" },
+  { "1.2.840.113549.1.1.14",    "sha224WithRSAEncryption" },
+  { "1.2.840.113549.1.1.11",    "sha256WithRSAEncryption" },
+  { "1.2.840.113549.1.1.12",    "sha384WithRSAEncryption" },
+  { "1.2.840.113549.1.1.13",    "sha512WithRSAEncryption" },
+  { "1.2.840.113549.2.2",       "md2" },
+  { "1.2.840.113549.2.5",       "md5" },
+  { "1.3.14.3.2.26",            "sha1" },
+  { cnOID,                      "CN" },
+  { "2.5.4.4",                  "SN" },
+  { "2.5.4.5",                  "serialNumber" },
+  { "2.5.4.6",                  "C" },
+  { "2.5.4.7",                  "L" },
+  { "2.5.4.8",                  "ST" },
+  { "2.5.4.9",                  "streetAddress" },
+  { "2.5.4.10",                 "O" },
+  { "2.5.4.11",                 "OU" },
+  { "2.5.4.12",                 "title" },
+  { "2.5.4.13",                 "description" },
+  { "2.5.4.17",                 "postalCode" },
+  { "2.5.4.41",                 "name" },
+  { "2.5.4.42",                 "givenName" },
+  { "2.5.4.43",                 "initials" },
+  { "2.5.4.44",                 "generationQualifier" },
+  { "2.5.4.45",                 "X500UniqueIdentifier" },
+  { "2.5.4.46",                 "dnQualifier" },
+  { "2.5.4.65",                 "pseudonym" },
+  { "1.2.840.113549.1.9.1",     "emailAddress" },
+  { "2.5.4.72",                 "role" },
+  { sanOID,                     "subjectAltName" },
+  { "2.5.29.18",                "issuerAltName" },
+  { "2.5.29.19",                "basicConstraints" },
+  { "2.16.840.1.101.3.4.2.4",   "sha224" },
+  { "2.16.840.1.101.3.4.2.1",   "sha256" },
+  { "2.16.840.1.101.3.4.2.2",   "sha384" },
+  { "2.16.840.1.101.3.4.2.3",   "sha512" },
+  { (const char *) NULL,        (const char *) NULL }
+};
+
+#endif /* WANT_EXTRACT_CERTINFO */
+
+/*
+ * Lightweight ASN.1 parser.
+ * In particular, it does not check for syntactic/lexical errors.
+ * It is intended to support certificate information gathering for SSL backends
+ * that offer a mean to get certificates as a whole, but do not supply
+ * entry points to get particular certificate sub-fields.
+ * Please note there is no pretention here to rewrite a full SSL library.
+ */
+
+static const char *getASN1Element(struct Curl_asn1Element *elem,
+                                  const char *beg, const char *end)
+  WARN_UNUSED_RESULT;
+
+static const char *getASN1Element(struct Curl_asn1Element *elem,
+                                  const char *beg, const char *end)
+{
+  unsigned char b;
+  unsigned long len;
+  struct Curl_asn1Element lelem;
+
+  /* Get a single ASN.1 element into `elem', parse ASN.1 string at `beg'
+     ending at `end'.
+     Returns a pointer in source string after the parsed element, or NULL
+     if an error occurs. */
+  if(!beg || !end || beg >= end || !*beg ||
+     (size_t)(end - beg) > CURL_ASN1_MAX)
+    return NULL;
+
+  /* Process header byte. */
+  elem->header = beg;
+  b = (unsigned char) *beg++;
+  elem->constructed = (b & 0x20) != 0;
+  elem->class = (b >> 6) & 3;
+  b &= 0x1F;
+  if(b == 0x1F)
+    return NULL; /* Long tag values not supported here. */
+  elem->tag = b;
+
+  /* Process length. */
+  if(beg >= end)
+    return NULL;
+  b = (unsigned char) *beg++;
+  if(!(b & 0x80))
+    len = b;
+  else if(!(b &= 0x7F)) {
+    /* Unspecified length. Since we have all the data, we can determine the
+       effective length by skipping element until an end element is found. */
+    if(!elem->constructed)
+      return NULL;
+    elem->beg = beg;
+    while(beg < end && *beg) {
+      beg = getASN1Element(&lelem, beg, end);
+      if(!beg)
+        return NULL;
+    }
+    if(beg >= end)
+      return NULL;
+    elem->end = beg;
+    return beg + 1;
+  }
+  else if((unsigned)b > (size_t)(end - beg))
+    return NULL; /* Does not fit in source. */
+  else {
+    /* Get long length. */
+    len = 0;
+    do {
+      if(len & 0xFF000000L)
+        return NULL;  /* Lengths > 32 bits are not supported. */
+      len = (len << 8) | (unsigned char) *beg++;
+    } while(--b);
+  }
+  if(len > (size_t)(end - beg))
+    return NULL;  /* Element data does not fit in source. */
+  elem->beg = beg;
+  elem->end = beg + len;
+  return elem->end;
+}
+
+#ifdef WANT_EXTRACT_CERTINFO
+
+/*
+ * Search the null terminated OID or OID identifier in local table.
+ * Return the table entry pointer or NULL if not found.
+ */
+static const struct Curl_OID *searchOID(const char *oid)
+{
+  const struct Curl_OID *op;
+  for(op = OIDtable; op->numoid; op++)
+    if(!strcmp(op->numoid, oid) || strcasecompare(op->textoid, oid))
+      return op;
+
+  return NULL;
+}
+
+/*
+ * Convert an ASN.1 Boolean value into its string representation.  Return the
+ * dynamically allocated string, or NULL if source is not an ASN.1 Boolean
+ * value.
+ */
+
+static const char *bool2str(const char *beg, const char *end)
+{
+  if(end - beg != 1)
+    return NULL;
+  return strdup(*beg? "TRUE": "FALSE");
+}
+
+/*
+ * Convert an ASN.1 octet string to a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+static const char *octet2str(const char *beg, const char *end)
+{
+  struct dynbuf buf;
+  CURLcode result;
+
+  Curl_dyn_init(&buf, 3 * CURL_ASN1_MAX + 1);
+  result = Curl_dyn_addn(&buf, "", 0);
+
+  while(!result && beg < end)
+    result = Curl_dyn_addf(&buf, "%02x:", (unsigned char) *beg++);
+
+  return Curl_dyn_ptr(&buf);
+}
+
+static const char *bit2str(const char *beg, const char *end)
+{
+  /* Convert an ASN.1 bit string to a printable string.
+     Return the dynamically allocated string, or NULL if an error occurs. */
+
+  if(++beg > end)
+    return NULL;
+  return octet2str(beg, end);
+}
+
+/*
+ * Convert an ASN.1 integer value into its string representation.
+ * Return the dynamically allocated string, or NULL if source is not an
+ * ASN.1 integer value.
+ */
+static const char *int2str(const char *beg, const char *end)
+{
+  unsigned long val = 0;
+  size_t n = end - beg;
+
+  if(!n)
+    return NULL;
+
+  if(n > 4)
+    return octet2str(beg, end);
+
+  /* Represent integers <= 32-bit as a single value. */
+  if(*beg & 0x80)
+    val = ~val;
+
+  do
+    val = (val << 8) | *(const unsigned char *) beg++;
+  while(beg < end);
+  return curl_maprintf("%s%lx", val >= 10? "0x": "", val);
+}
+
+/*
+ * Perform a lazy conversion from an ASN.1 typed string to UTF8. Allocate the
+ * destination buffer dynamically. The allocation size will normally be too
+ * large: this is to avoid buffer overflows.
+ * Terminate the string with a nul byte and return the converted
+ * string length.
+ */
+static ssize_t
+utf8asn1str(char **to, int type, const char *from, const char *end)
+{
+  size_t inlength = end - from;
+  int size = 1;
+  size_t outlength;
+  char *buf;
+
+  *to = NULL;
+  switch(type) {
+  case CURL_ASN1_BMP_STRING:
+    size = 2;
+    break;
+  case CURL_ASN1_UNIVERSAL_STRING:
+    size = 4;
+    break;
+  case CURL_ASN1_NUMERIC_STRING:
+  case CURL_ASN1_PRINTABLE_STRING:
+  case CURL_ASN1_TELETEX_STRING:
+  case CURL_ASN1_IA5_STRING:
+  case CURL_ASN1_VISIBLE_STRING:
+  case CURL_ASN1_UTF8_STRING:
+    break;
+  default:
+    return -1;  /* Conversion not supported. */
+  }
+
+  if(inlength % size)
+    return -1;  /* Length inconsistent with character size. */
+  if(inlength / size > (SIZE_T_MAX - 1) / 4)
+    return -1;  /* Too big. */
+  buf = malloc(4 * (inlength / size) + 1);
+  if(!buf)
+    return -1;  /* Not enough memory. */
+
+  if(type == CURL_ASN1_UTF8_STRING) {
+    /* Just copy. */
+    outlength = inlength;
+    if(outlength)
+      memcpy(buf, from, outlength);
+  }
+  else {
+    for(outlength = 0; from < end;) {
+      int charsize;
+      unsigned int wc;
+
+      wc = 0;
+      switch(size) {
+      case 4:
+        wc = (wc << 8) | *(const unsigned char *) from++;
+        wc = (wc << 8) | *(const unsigned char *) from++;
+        /* FALLTHROUGH */
+      case 2:
+        wc = (wc << 8) | *(const unsigned char *) from++;
+        /* FALLTHROUGH */
+      default: /* case 1: */
+        wc = (wc << 8) | *(const unsigned char *) from++;
+      }
+      charsize = 1;
+      if(wc >= 0x00000080) {
+        if(wc >= 0x00000800) {
+          if(wc >= 0x00010000) {
+            if(wc >= 0x00200000) {
+              free(buf);
+              return -1;        /* Invalid char. size for target encoding. */
+            }
+            buf[outlength + 3] = (char) (0x80 | (wc & 0x3F));
+            wc = (wc >> 6) | 0x00010000;
+            charsize++;
+          }
+          buf[outlength + 2] = (char) (0x80 | (wc & 0x3F));
+          wc = (wc >> 6) | 0x00000800;
+          charsize++;
+        }
+        buf[outlength + 1] = (char) (0x80 | (wc & 0x3F));
+        wc = (wc >> 6) | 0x000000C0;
+        charsize++;
+      }
+      buf[outlength] = (char) wc;
+      outlength += charsize;
+    }
+  }
+  buf[outlength] = '\0';
+  *to = buf;
+  return outlength;
+}
+
+/*
+ * Convert an ASN.1 String into its UTF-8 string representation.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+static const char *string2str(int type, const char *beg, const char *end)
+{
+  char *buf;
+  if(utf8asn1str(&buf, type, beg, end) < 0)
+    return NULL;
+  return buf;
+}
+
+/*
+ * Decimal ASCII encode unsigned integer `x' into the buflen sized buffer at
+ * buf.  Return the total number of encoded digits, even if larger than
+ * `buflen'.
+ */
+static size_t encodeUint(char *buf, size_t buflen, unsigned int x)
+{
+  size_t i = 0;
+  unsigned int y = x / 10;
+
+  if(y) {
+    i = encodeUint(buf, buflen, y);
+    x -= y * 10;
+  }
+  if(i < buflen)
+    buf[i] = (char) ('0' + x);
+  i++;
+  if(i < buflen)
+    buf[i] = '\0';      /* Store a terminator if possible. */
+  return i;
+}
+
+/*
+ * Convert an ASN.1 OID into its dotted string representation.
+ * Store the result in th `n'-byte buffer at `buf'.
+ * Return the converted string length, or 0 on errors.
+ */
+static size_t encodeOID(char *buf, size_t buflen,
+                        const char *beg, const char *end)
+{
+  size_t i;
+  unsigned int x;
+  unsigned int y;
+
+  /* Process the first two numbers. */
+  y = *(const unsigned char *) beg++;
+  x = y / 40;
+  y -= x * 40;
+  i = encodeUint(buf, buflen, x);
+  if(i < buflen)
+    buf[i] = '.';
+  i++;
+  if(i >= buflen)
+    i += encodeUint(NULL, 0, y);
+  else
+    i += encodeUint(buf + i, buflen - i, y);
+
+  /* Process the trailing numbers. */
+  while(beg < end) {
+    if(i < buflen)
+      buf[i] = '.';
+    i++;
+    x = 0;
+    do {
+      if(x & 0xFF000000)
+        return 0;
+      y = *(const unsigned char *) beg++;
+      x = (x << 7) | (y & 0x7F);
+    } while(y & 0x80);
+    if(i >= buflen)
+      i += encodeUint(NULL, 0, x);
+    else
+      i += encodeUint(buf + i, buflen - i, x);
+  }
+  if(i < buflen)
+    buf[i] = '\0';
+  return i;
+}
+
+/*
+ * Convert an ASN.1 OID into its dotted or symbolic string representation.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+
+static const char *OID2str(const char *beg, const char *end, bool symbolic)
+{
+  char *buf = NULL;
+  if(beg < end) {
+    size_t buflen = encodeOID(NULL, 0, beg, end);
+    if(buflen) {
+      buf = malloc(buflen + 1); /* one extra for the zero byte */
+      if(buf) {
+        encodeOID(buf, buflen, beg, end);
+        buf[buflen] = '\0';
+
+        if(symbolic) {
+          const struct Curl_OID *op = searchOID(buf);
+          if(op) {
+            free(buf);
+            buf = strdup(op->textoid);
+          }
+        }
+      }
+    }
+  }
+  return buf;
+}
+
+static const char *GTime2str(const char *beg, const char *end)
+{
+  const char *tzp;
+  const char *fracp;
+  char sec1, sec2;
+  size_t fracl;
+  size_t tzl;
+  const char *sep = "";
+
+  /* Convert an ASN.1 Generalized time to a printable string.
+     Return the dynamically allocated string, or NULL if an error occurs. */
+
+  for(fracp = beg; fracp < end && *fracp >= '0' && *fracp <= '9'; fracp++)
+    ;
+
+  /* Get seconds digits. */
+  sec1 = '0';
+  switch(fracp - beg - 12) {
+  case 0:
+    sec2 = '0';
+    break;
+  case 2:
+    sec1 = fracp[-2];
+    /* FALLTHROUGH */
+  case 1:
+    sec2 = fracp[-1];
+    break;
+  default:
+    return NULL;
+  }
+
+  /* Scan for timezone, measure fractional seconds. */
+  tzp = fracp;
+  fracl = 0;
+  if(fracp < end && (*fracp == '.' || *fracp == ',')) {
+    fracp++;
+    do
+      tzp++;
+    while(tzp < end && *tzp >= '0' && *tzp <= '9');
+    /* Strip leading zeroes in fractional seconds. */
+    for(fracl = tzp - fracp - 1; fracl && fracp[fracl - 1] == '0'; fracl--)
+      ;
+  }
+
+  /* Process timezone. */
+  if(tzp >= end)
+    ;           /* Nothing to do. */
+  else if(*tzp == 'Z') {
+    tzp = " GMT";
+    end = tzp + 4;
+  }
+  else {
+    sep = " ";
+    tzp++;
+  }
+
+  tzl = end - tzp;
+  return curl_maprintf("%.4s-%.2s-%.2s %.2s:%.2s:%c%c%s%.*s%s%.*s",
+                       beg, beg + 4, beg + 6,
+                       beg + 8, beg + 10, sec1, sec2,
+                       fracl? ".": "", (int)fracl, fracp,
+                       sep, (int)tzl, tzp);
+}
+
+/*
+ *  Convert an ASN.1 UTC time to a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+static const char *UTime2str(const char *beg, const char *end)
+{
+  const char *tzp;
+  size_t tzl;
+  const char *sec;
+
+  for(tzp = beg; tzp < end && *tzp >= '0' && *tzp <= '9'; tzp++)
+    ;
+  /* Get the seconds. */
+  sec = beg + 10;
+  switch(tzp - sec) {
+  case 0:
+    sec = "00";
+  case 2:
+    break;
+  default:
+    return NULL;
+  }
+
+  /* Process timezone. */
+  if(tzp >= end)
+    return NULL;
+  if(*tzp == 'Z') {
+    tzp = "GMT";
+    end = tzp + 3;
+  }
+  else
+    tzp++;
+
+  tzl = end - tzp;
+  return curl_maprintf("%u%.2s-%.2s-%.2s %.2s:%.2s:%.2s %.*s",
+                       20 - (*beg >= '5'), beg, beg + 2, beg + 4,
+                       beg + 6, beg + 8, sec,
+                       (int)tzl, tzp);
+}
+
+/*
+ * Convert an ASN.1 element to a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+static const char *ASN1tostr(struct Curl_asn1Element *elem, int type)
+{
+  if(elem->constructed)
+    return NULL; /* No conversion of structured elements. */
+
+  if(!type)
+    type = elem->tag;   /* Type not forced: use element tag as type. */
+
+  switch(type) {
+  case CURL_ASN1_BOOLEAN:
+    return bool2str(elem->beg, elem->end);
+  case CURL_ASN1_INTEGER:
+  case CURL_ASN1_ENUMERATED:
+    return int2str(elem->beg, elem->end);
+  case CURL_ASN1_BIT_STRING:
+    return bit2str(elem->beg, elem->end);
+  case CURL_ASN1_OCTET_STRING:
+    return octet2str(elem->beg, elem->end);
+  case CURL_ASN1_NULL:
+    return strdup("");
+  case CURL_ASN1_OBJECT_IDENTIFIER:
+    return OID2str(elem->beg, elem->end, TRUE);
+  case CURL_ASN1_UTC_TIME:
+    return UTime2str(elem->beg, elem->end);
+  case CURL_ASN1_GENERALIZED_TIME:
+    return GTime2str(elem->beg, elem->end);
+  case CURL_ASN1_UTF8_STRING:
+  case CURL_ASN1_NUMERIC_STRING:
+  case CURL_ASN1_PRINTABLE_STRING:
+  case CURL_ASN1_TELETEX_STRING:
+  case CURL_ASN1_IA5_STRING:
+  case CURL_ASN1_VISIBLE_STRING:
+  case CURL_ASN1_UNIVERSAL_STRING:
+  case CURL_ASN1_BMP_STRING:
+    return string2str(type, elem->beg, elem->end);
+  }
+
+  return NULL;   /* Unsupported. */
+}
+
+/*
+ * ASCII encode distinguished name at `dn' into the `buflen'-sized buffer at
+ * `buf'.
+ *
+ * Returns the total string length, even if larger than `buflen' or -1 on
+ * error.
+ */
+static ssize_t encodeDN(char *buf, size_t buflen, struct Curl_asn1Element *dn)
+{
+  struct Curl_asn1Element rdn;
+  struct Curl_asn1Element atv;
+  struct Curl_asn1Element oid;
+  struct Curl_asn1Element value;
+  size_t l = 0;
+  const char *p1;
+  const char *p2;
+  const char *p3;
+  const char *str;
+
+  for(p1 = dn->beg; p1 < dn->end;) {
+    p1 = getASN1Element(&rdn, p1, dn->end);
+    if(!p1)
+      return -1;
+    for(p2 = rdn.beg; p2 < rdn.end;) {
+      p2 = getASN1Element(&atv, p2, rdn.end);
+      if(!p2)
+        return -1;
+      p3 = getASN1Element(&oid, atv.beg, atv.end);
+      if(!p3)
+        return -1;
+      if(!getASN1Element(&value, p3, atv.end))
+        return -1;
+      str = ASN1tostr(&oid, 0);
+      if(!str)
+        return -1;
+
+      /* Encode delimiter.
+         If attribute has a short uppercase name, delimiter is ", ". */
+      if(l) {
+        for(p3 = str; ISUPPER(*p3); p3++)
+          ;
+        for(p3 = (*p3 || p3 - str > 2)? "/": ", "; *p3; p3++) {
+          if(l < buflen)
+            buf[l] = *p3;
+          l++;
+        }
+      }
+
+      /* Encode attribute name. */
+      for(p3 = str; *p3; p3++) {
+        if(l < buflen)
+          buf[l] = *p3;
+        l++;
+      }
+      free((char *) str);
+
+      /* Generate equal sign. */
+      if(l < buflen)
+        buf[l] = '=';
+      l++;
+
+      /* Generate value. */
+      str = ASN1tostr(&value, 0);
+      if(!str)
+        return -1;
+      for(p3 = str; *p3; p3++) {
+        if(l < buflen)
+          buf[l] = *p3;
+        l++;
+      }
+      free((char *) str);
+    }
+  }
+
+  return l;
+}
+
+#endif /* WANT_EXTRACT_CERTINFO */
+
+#ifdef WANT_PARSEX509
+/*
+ * ASN.1 parse an X509 certificate into structure subfields.
+ * Syntax is assumed to have already been checked by the SSL backend.
+ * See RFC 5280.
+ */
+int Curl_parseX509(struct Curl_X509certificate *cert,
+                   const char *beg, const char *end)
+{
+  struct Curl_asn1Element elem;
+  struct Curl_asn1Element tbsCertificate;
+  const char *ccp;
+  static const char defaultVersion = 0;  /* v1. */
+
+  cert->certificate.header = NULL;
+  cert->certificate.beg = beg;
+  cert->certificate.end = end;
+
+  /* Get the sequence content. */
+  if(!getASN1Element(&elem, beg, end))
+    return -1;  /* Invalid bounds/size. */
+  beg = elem.beg;
+  end = elem.end;
+
+  /* Get tbsCertificate. */
+  beg = getASN1Element(&tbsCertificate, beg, end);
+  if(!beg)
+    return -1;
+  /* Skip the signatureAlgorithm. */
+  beg = getASN1Element(&cert->signatureAlgorithm, beg, end);
+  if(!beg)
+    return -1;
+  /* Get the signatureValue. */
+  if(!getASN1Element(&cert->signature, beg, end))
+    return -1;
+
+  /* Parse TBSCertificate. */
+  beg = tbsCertificate.beg;
+  end = tbsCertificate.end;
+  /* Get optional version, get serialNumber. */
+  cert->version.header = NULL;
+  cert->version.beg = &defaultVersion;
+  cert->version.end = &defaultVersion + sizeof(defaultVersion);
+  beg = getASN1Element(&elem, beg, end);
+  if(!beg)
+    return -1;
+  if(elem.tag == 0) {
+    if(!getASN1Element(&cert->version, elem.beg, elem.end))
+      return -1;
+    beg = getASN1Element(&elem, beg, end);
+    if(!beg)
+      return -1;
+  }
+  cert->serialNumber = elem;
+  /* Get signature algorithm. */
+  beg = getASN1Element(&cert->signatureAlgorithm, beg, end);
+  /* Get issuer. */
+  beg = getASN1Element(&cert->issuer, beg, end);
+  if(!beg)
+    return -1;
+  /* Get notBefore and notAfter. */
+  beg = getASN1Element(&elem, beg, end);
+  if(!beg)
+    return -1;
+  ccp = getASN1Element(&cert->notBefore, elem.beg, elem.end);
+  if(!ccp)
+    return -1;
+  if(!getASN1Element(&cert->notAfter, ccp, elem.end))
+    return -1;
+  /* Get subject. */
+  beg = getASN1Element(&cert->subject, beg, end);
+  if(!beg)
+    return -1;
+  /* Get subjectPublicKeyAlgorithm and subjectPublicKey. */
+  beg = getASN1Element(&cert->subjectPublicKeyInfo, beg, end);
+  if(!beg)
+    return -1;
+  ccp = getASN1Element(&cert->subjectPublicKeyAlgorithm,
+                       cert->subjectPublicKeyInfo.beg,
+                       cert->subjectPublicKeyInfo.end);
+  if(!ccp)
+    return -1;
+  if(!getASN1Element(&cert->subjectPublicKey, ccp,
+                     cert->subjectPublicKeyInfo.end))
+    return -1;
+  /* Get optional issuerUiqueID, subjectUniqueID and extensions. */
+  cert->issuerUniqueID.tag = cert->subjectUniqueID.tag = 0;
+  cert->extensions.tag = elem.tag = 0;
+  cert->issuerUniqueID.header = cert->subjectUniqueID.header = NULL;
+  cert->issuerUniqueID.beg = cert->issuerUniqueID.end = "";
+  cert->subjectUniqueID.beg = cert->subjectUniqueID.end = "";
+  cert->extensions.header = NULL;
+  cert->extensions.beg = cert->extensions.end = "";
+  if(beg < end) {
+    beg = getASN1Element(&elem, beg, end);
+    if(!beg)
+      return -1;
+  }
+  if(elem.tag == 1) {
+    cert->issuerUniqueID = elem;
+    if(beg < end) {
+      beg = getASN1Element(&elem, beg, end);
+      if(!beg)
+        return -1;
+    }
+  }
+  if(elem.tag == 2) {
+    cert->subjectUniqueID = elem;
+    if(beg < end) {
+      beg = getASN1Element(&elem, beg, end);
+      if(!beg)
+        return -1;
+    }
+  }
+  if(elem.tag == 3)
+    if(!getASN1Element(&cert->extensions, elem.beg, elem.end))
+      return -1;
+  return 0;
+}
+
+#endif /* WANT_PARSEX509 */
+
+#ifdef WANT_EXTRACT_CERTINFO
+
+/*
+ * Copy at most 64-characters, terminate with a newline and returns the
+ * effective number of stored characters.
+ */
+static size_t copySubstring(char *to, const char *from)
+{
+  size_t i;
+  for(i = 0; i < 64; i++) {
+    to[i] = *from;
+    if(!*from++)
+      break;
+  }
+
+  to[i++] = '\n';
+  return i;
+}
+
+static const char *dumpAlgo(struct Curl_asn1Element *param,
+                            const char *beg, const char *end)
+{
+  struct Curl_asn1Element oid;
+
+  /* Get algorithm parameters and return algorithm name. */
+
+  beg = getASN1Element(&oid, beg, end);
+  if(!beg)
+    return NULL;
+  param->header = NULL;
+  param->tag = 0;
+  param->beg = param->end = end;
+  if(beg < end)
+    if(!getASN1Element(param, beg, end))
+      return NULL;
+  return OID2str(oid.beg, oid.end, TRUE);
+}
+
+/* return 0 on success, 1 on error */
+static int do_pubkey_field(struct Curl_easy *data, int certnum,
+                           const char *label, struct Curl_asn1Element *elem)
+{
+  const char *output;
+  CURLcode result = CURLE_OK;
+
+  /* Generate a certificate information record for the public key. */
+
+  output = ASN1tostr(elem, 0);
+  if(output) {
+    if(data->set.ssl.certinfo)
+      result = Curl_ssl_push_certinfo(data, certnum, label, output);
+    if(!certnum && !result)
+      infof(data, "   %s: %s", label, output);
+    free((char *) output);
+  }
+  return result ? 1 : 0;
+}
+
+/* return 0 on success, 1 on error */
+static int do_pubkey(struct Curl_easy *data, int certnum,
+                     const char *algo, struct Curl_asn1Element *param,
+                     struct Curl_asn1Element *pubkey)
+{
+  struct Curl_asn1Element elem;
+  struct Curl_asn1Element pk;
+  const char *p;
+
+  /* Generate all information records for the public key. */
+
+  if(strcasecompare(algo, "ecPublicKey")) {
+    /*
+     * ECC public key is all the data, a value of type BIT STRING mapped to
+     * OCTET STRING and should not be parsed as an ASN.1 value.
+     */
+    const unsigned long len =
+      (unsigned long)((pubkey->end - pubkey->beg - 2) * 4);
+    if(!certnum)
+      infof(data, "   ECC Public Key (%lu bits)", len);
+    if(data->set.ssl.certinfo) {
+      char q[sizeof(len) * 8 / 3 + 1];
+      (void)msnprintf(q, sizeof(q), "%lu", len);
+      if(Curl_ssl_push_certinfo(data, certnum, "ECC Public Key", q))
+        return 1;
+    }
+    return do_pubkey_field(data, certnum, "ecPublicKey", pubkey);
+  }
+
+  /* Get the public key (single element). */
+  if(!getASN1Element(&pk, pubkey->beg + 1, pubkey->end))
+    return 1;
+
+  if(strcasecompare(algo, "rsaEncryption")) {
+    const char *q;
+    unsigned long len;
+
+    p = getASN1Element(&elem, pk.beg, pk.end);
+    if(!p)
+      return 1;
+
+    /* Compute key length. */
+    for(q = elem.beg; !*q && q < elem.end; q++)
+      ;
+    len = (unsigned long)((elem.end - q) * 8);
+    if(len) {
+      unsigned int i;
+      for(i = *(unsigned char *) q; !(i & 0x80); i <<= 1)
+        len--;
+    }
+    if(len > 32)
+      elem.beg = q;     /* Strip leading zero bytes. */
+    if(!certnum)
+      infof(data, "   RSA Public Key (%lu bits)", len);
+    if(data->set.ssl.certinfo) {
+      char r[sizeof(len) * 8 / 3 + 1];
+      msnprintf(r, sizeof(r), "%lu", len);
+      if(Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", r))
+        return 1;
+    }
+    /* Generate coefficients. */
+    if(do_pubkey_field(data, certnum, "rsa(n)", &elem))
+      return 1;
+    if(!getASN1Element(&elem, p, pk.end))
+      return 1;
+    if(do_pubkey_field(data, certnum, "rsa(e)", &elem))
+      return 1;
+  }
+  else if(strcasecompare(algo, "dsa")) {
+    p = getASN1Element(&elem, param->beg, param->end);
+    if(p) {
+      if(do_pubkey_field(data, certnum, "dsa(p)", &elem))
+        return 1;
+      p = getASN1Element(&elem, p, param->end);
+      if(p) {
+        if(do_pubkey_field(data, certnum, "dsa(q)", &elem))
+          return 1;
+        if(getASN1Element(&elem, p, param->end)) {
+          if(do_pubkey_field(data, certnum, "dsa(g)", &elem))
+            return 1;
+          if(do_pubkey_field(data, certnum, "dsa(pub_key)", &pk))
+            return 1;
+        }
+      }
+    }
+  }
+  else if(strcasecompare(algo, "dhpublicnumber")) {
+    p = getASN1Element(&elem, param->beg, param->end);
+    if(p) {
+      if(do_pubkey_field(data, certnum, "dh(p)", &elem))
+        return 1;
+      if(getASN1Element(&elem, param->beg, param->end)) {
+        if(do_pubkey_field(data, certnum, "dh(g)", &elem))
+          return 1;
+        if(do_pubkey_field(data, certnum, "dh(pub_key)", &pk))
+          return 1;
+      }
+    }
+  }
+  return 0;
+}
+
+/*
+ * Convert an ASN.1 distinguished name into a printable string.
+ * Return the dynamically allocated string, or NULL if an error occurs.
+ */
+static const char *DNtostr(struct Curl_asn1Element *dn)
+{
+  char *buf = NULL;
+  ssize_t buflen = encodeDN(NULL, 0, dn);
+
+  if(buflen >= 0) {
+    buf = malloc(buflen + 1);
+    if(buf) {
+      if(encodeDN(buf, buflen + 1, dn) == -1) {
+        free(buf);
+        return NULL;
+      }
+      buf[buflen] = '\0';
+    }
+  }
+  return buf;
+}
+
+CURLcode Curl_extract_certinfo(struct Curl_easy *data,
+                               int certnum,
+                               const char *beg,
+                               const char *end)
+{
+  struct Curl_X509certificate cert;
+  struct Curl_asn1Element param;
+  const char *ccp;
+  char *cp1;
+  size_t cl1;
+  char *cp2;
+  CURLcode result = CURLE_OK;
+  unsigned long version;
+  size_t i;
+  size_t j;
+
+  if(!data->set.ssl.certinfo)
+    if(certnum)
+      return CURLE_OK;
+
+  /* Prepare the certificate information for curl_easy_getinfo(). */
+
+  /* Extract the certificate ASN.1 elements. */
+  if(Curl_parseX509(&cert, beg, end))
+    return CURLE_PEER_FAILED_VERIFICATION;
+
+  /* Subject. */
+  ccp = DNtostr(&cert.subject);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo) {
+    result = Curl_ssl_push_certinfo(data, certnum, "Subject", ccp);
+    if(result)
+      return result;
+  }
+  if(!certnum)
+    infof(data, "%2d Subject: %s", certnum, ccp);
+  free((char *) ccp);
+
+  /* Issuer. */
+  ccp = DNtostr(&cert.issuer);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo) {
+    result = Curl_ssl_push_certinfo(data, certnum, "Issuer", ccp);
+  }
+  if(!certnum)
+    infof(data, "   Issuer: %s", ccp);
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Version (always fits in less than 32 bits). */
+  version = 0;
+  for(ccp = cert.version.beg; ccp < cert.version.end; ccp++)
+    version = (version << 8) | *(const unsigned char *) ccp;
+  if(data->set.ssl.certinfo) {
+    ccp = curl_maprintf("%lx", version);
+    if(!ccp)
+      return CURLE_OUT_OF_MEMORY;
+    result = Curl_ssl_push_certinfo(data, certnum, "Version", ccp);
+    free((char *) ccp);
+    if(result)
+      return result;
+  }
+  if(!certnum)
+    infof(data, "   Version: %lu (0x%lx)", version + 1, version);
+
+  /* Serial number. */
+  ccp = ASN1tostr(&cert.serialNumber, 0);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Serial Number", ccp);
+  if(!certnum)
+    infof(data, "   Serial Number: %s", ccp);
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Signature algorithm .*/
+  ccp = dumpAlgo(&param, cert.signatureAlgorithm.beg,
+                 cert.signatureAlgorithm.end);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
+  if(!certnum)
+    infof(data, "   Signature Algorithm: %s", ccp);
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Start Date. */
+  ccp = ASN1tostr(&cert.notBefore, 0);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Start Date", ccp);
+  if(!certnum)
+    infof(data, "   Start Date: %s", ccp);
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Expire Date. */
+  ccp = ASN1tostr(&cert.notAfter, 0);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Expire Date", ccp);
+  if(!certnum)
+    infof(data, "   Expire Date: %s", ccp);
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Public Key Algorithm. */
+  ccp = dumpAlgo(&param, cert.subjectPublicKeyAlgorithm.beg,
+                 cert.subjectPublicKeyAlgorithm.end);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm",
+                                    ccp);
+  if(!result) {
+    int ret;
+    if(!certnum)
+      infof(data, "   Public Key Algorithm: %s", ccp);
+    ret = do_pubkey(data, certnum, ccp, &param, &cert.subjectPublicKey);
+    if(ret)
+      result = CURLE_OUT_OF_MEMORY; /* the most likely error */
+  }
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Signature. */
+  ccp = ASN1tostr(&cert.signature, 0);
+  if(!ccp)
+    return CURLE_OUT_OF_MEMORY;
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Signature", ccp);
+  if(!certnum)
+    infof(data, "   Signature: %s", ccp);
+  free((char *) ccp);
+  if(result)
+    return result;
+
+  /* Generate PEM certificate. */
+  result = Curl_base64_encode(cert.certificate.beg,
+                              cert.certificate.end - cert.certificate.beg,
+                              &cp1, &cl1);
+  if(result)
+    return result;
+  /* Compute the number of characters in final certificate string. Format is:
+     -----BEGIN CERTIFICATE-----\n
+     <max 64 base64 characters>\n
+     .
+     .
+     .
+     -----END CERTIFICATE-----\n
+   */
+  i = 28 + cl1 + (cl1 + 64 - 1) / 64 + 26;
+  cp2 = malloc(i + 1);
+  if(!cp2) {
+    free(cp1);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  /* Build the certificate string. */
+  i = copySubstring(cp2, "-----BEGIN CERTIFICATE-----");
+  for(j = 0; j < cl1; j += 64)
+    i += copySubstring(cp2 + i, cp1 + j);
+  i += copySubstring(cp2 + i, "-----END CERTIFICATE-----");
+  cp2[i] = '\0';
+  free(cp1);
+  if(data->set.ssl.certinfo)
+    result = Curl_ssl_push_certinfo(data, certnum, "Cert", cp2);
+  if(!certnum)
+    infof(data, "%s", cp2);
+  free(cp2);
+  return result;
+}
+
+#endif /* WANT_EXTRACT_CERTINFO */
+
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_WOLFSSL or USE_SCHANNEL
+        * or USE_SECTRANSP */
+
+#ifdef WANT_VERIFYHOST
+
+static const char *checkOID(const char *beg, const char *end,
+                            const char *oid)
+{
+  struct Curl_asn1Element e;
+  const char *ccp;
+  const char *p;
+  bool matched;
+
+  /* Check if first ASN.1 element at `beg' is the given OID.
+     Return a pointer in the source after the OID if found, else NULL. */
+
+  ccp = getASN1Element(&e, beg, end);
+  if(!ccp || e.tag != CURL_ASN1_OBJECT_IDENTIFIER)
+    return NULL;
+
+  p = OID2str(e.beg, e.end, FALSE);
+  if(!p)
+    return NULL;
+
+  matched = !strcmp(p, oid);
+  free((char *) p);
+  return matched? ccp: NULL;
+}
+
+CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
+                         const char *beg, const char *end)
+{
+  struct Curl_X509certificate cert;
+  struct Curl_asn1Element dn;
+  struct Curl_asn1Element elem;
+  struct Curl_asn1Element ext;
+  struct Curl_asn1Element name;
+  const char *p;
+  const char *q;
+  char *dnsname;
+  int matched = -1;
+  size_t addrlen = (size_t) -1;
+  ssize_t len;
+  const char * const hostname = SSL_HOST_NAME();
+  const char * const dispname = SSL_HOST_DISPNAME();
+  size_t hostlen = strlen(hostname);
+#ifdef ENABLE_IPV6
+  struct in6_addr addr;
+#else
+  struct in_addr addr;
+#endif
+
+  /* Verify that connection server matches info in X509 certificate at
+     `beg'..`end'. */
+
+  if(!SSL_CONN_CONFIG(verifyhost))
+    return CURLE_OK;
+
+  if(Curl_parseX509(&cert, beg, end))
+    return CURLE_PEER_FAILED_VERIFICATION;
+
+  /* Get the server IP address. */
+#ifdef ENABLE_IPV6
+  if(conn->bits.ipv6_ip && Curl_inet_pton(AF_INET6, hostname, &addr))
+    addrlen = sizeof(struct in6_addr);
+  else
+#endif
+  if(Curl_inet_pton(AF_INET, hostname, &addr))
+    addrlen = sizeof(struct in_addr);
+
+  /* Process extensions. */
+  for(p = cert.extensions.beg; p < cert.extensions.end && matched != 1;) {
+    p = getASN1Element(&ext, p, cert.extensions.end);
+    if(!p)
+      return CURLE_PEER_FAILED_VERIFICATION;
+
+    /* Check if extension is a subjectAlternativeName. */
+    ext.beg = checkOID(ext.beg, ext.end, sanOID);
+    if(ext.beg) {
+      ext.beg = getASN1Element(&elem, ext.beg, ext.end);
+      if(!ext.beg)
+        return CURLE_PEER_FAILED_VERIFICATION;
+      /* Skip critical if present. */
+      if(elem.tag == CURL_ASN1_BOOLEAN) {
+        ext.beg = getASN1Element(&elem, ext.beg, ext.end);
+        if(!ext.beg)
+          return CURLE_PEER_FAILED_VERIFICATION;
+      }
+      /* Parse the octet string contents: is a single sequence. */
+      if(!getASN1Element(&elem, elem.beg, elem.end))
+        return CURLE_PEER_FAILED_VERIFICATION;
+      /* Check all GeneralNames. */
+      for(q = elem.beg; matched != 1 && q < elem.end;) {
+        q = getASN1Element(&name, q, elem.end);
+        if(!q)
+          break;
+        switch(name.tag) {
+        case 2: /* DNS name. */
+          len = utf8asn1str(&dnsname, CURL_ASN1_IA5_STRING,
+                            name.beg, name.end);
+          if(len > 0 && (size_t)len == strlen(dnsname))
+            matched = Curl_cert_hostcheck(dnsname,
+                                          (size_t)len, hostname, hostlen);
+          else
+            matched = 0;
+          free(dnsname);
+          break;
+
+        case 7: /* IP address. */
+          matched = (size_t) (name.end - name.beg) == addrlen &&
+                    !memcmp(&addr, name.beg, addrlen);
+          break;
+        }
+      }
+    }
+  }
+
+  switch(matched) {
+  case 1:
+    /* an alternative name matched the server hostname */
+    infof(data, "  subjectAltName: %s matched", dispname);
+    return CURLE_OK;
+  case 0:
+    /* an alternative name field existed, but didn't match and then
+       we MUST fail */
+    infof(data, "  subjectAltName does not match %s", dispname);
+    return CURLE_PEER_FAILED_VERIFICATION;
+  }
+
+  /* Process subject. */
+  name.header = NULL;
+  name.beg = name.end = "";
+  q = cert.subject.beg;
+  /* we have to look to the last occurrence of a commonName in the
+     distinguished one to get the most significant one. */
+  while(q < cert.subject.end) {
+    q = getASN1Element(&dn, q, cert.subject.end);
+    if(!q)
+      break;
+    for(p = dn.beg; p < dn.end;) {
+      p = getASN1Element(&elem, p, dn.end);
+      if(!p)
+        return CURLE_PEER_FAILED_VERIFICATION;
+      /* We have a DN's AttributeTypeAndValue: check it in case it's a CN. */
+      elem.beg = checkOID(elem.beg, elem.end, cnOID);
+      if(elem.beg)
+        name = elem;    /* Latch CN. */
+    }
+  }
+
+  /* Check the CN if found. */
+  if(!getASN1Element(&elem, name.beg, name.end))
+    failf(data, "SSL: unable to obtain common name from peer certificate");
+  else {
+    len = utf8asn1str(&dnsname, elem.tag, elem.beg, elem.end);
+    if(len < 0) {
+      free(dnsname);
+      return CURLE_OUT_OF_MEMORY;
+    }
+    if(strlen(dnsname) != (size_t) len)         /* Nul byte in string ? */
+      failf(data, "SSL: illegal cert name field");
+    else if(Curl_cert_hostcheck((const char *) dnsname,
+                                len, hostname, hostlen)) {
+      infof(data, "  common name: %s (matched)", dnsname);
+      free(dnsname);
+      return CURLE_OK;
+    }
+    else
+      failf(data, "SSL: certificate subject name '%s' does not match "
+            "target host name '%s'", dnsname, dispname);
+    free(dnsname);
+  }
+
+  return CURLE_PEER_FAILED_VERIFICATION;
+}
+
+#endif /* WANT_VERIFYHOST */
diff --git a/lib/vtls/x509asn1.h b/lib/vtls/x509asn1.h
new file mode 100644 (file)
index 0000000..a18fa11
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef HEADER_CURL_X509ASN1_H
+#define HEADER_CURL_X509ASN1_H
+
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
+    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
+
+#include "urldata.h"
+
+/*
+ * Types.
+ */
+
+/* ASN.1 parsed element. */
+struct Curl_asn1Element {
+  const char *header;         /* Pointer to header byte. */
+  const char *beg;            /* Pointer to element data. */
+  const char *end;            /* Pointer to 1st byte after element. */
+  unsigned char class;        /* ASN.1 element class. */
+  unsigned char tag;          /* ASN.1 element tag. */
+  bool          constructed;  /* Element is constructed. */
+};
+
+/* X509 certificate: RFC 5280. */
+struct Curl_X509certificate {
+  struct Curl_asn1Element certificate;
+  struct Curl_asn1Element version;
+  struct Curl_asn1Element serialNumber;
+  struct Curl_asn1Element signatureAlgorithm;
+  struct Curl_asn1Element signature;
+  struct Curl_asn1Element issuer;
+  struct Curl_asn1Element notBefore;
+  struct Curl_asn1Element notAfter;
+  struct Curl_asn1Element subject;
+  struct Curl_asn1Element subjectPublicKeyInfo;
+  struct Curl_asn1Element subjectPublicKeyAlgorithm;
+  struct Curl_asn1Element subjectPublicKey;
+  struct Curl_asn1Element issuerUniqueID;
+  struct Curl_asn1Element subjectUniqueID;
+  struct Curl_asn1Element extensions;
+};
+
+/*
+ * Prototypes.
+ */
+
+int Curl_parseX509(struct Curl_X509certificate *cert,
+                   const char *beg, const char *end);
+CURLcode Curl_extract_certinfo(struct Curl_easy *data, int certnum,
+                               const char *beg, const char *end);
+CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
+                         const char *beg, const char *end);
+#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_WOLFSSL or USE_SCHANNEL
+        * or USE_SECTRANSP */
+#endif /* HEADER_CURL_X509ASN1_H */
index 15c8156d1c9375a317de94216f87bb68a2d07fd9..b00d7a5a260c68a7aec95553d8cefdc6500b0963 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -37,6 +39,8 @@
 
 #include "warnless.h"
 
+#include <limits.h>
+
 #define CURL_MASK_UCHAR   ((unsigned char)~0)
 #define CURL_MASK_SCHAR   (CURL_MASK_UCHAR >> 1)
 
@@ -360,7 +364,7 @@ curl_socket_t curlx_sitosk(int i)
 
 #endif /* USE_WINSOCK */
 
-#if defined(WIN32) || defined(_WIN32)
+#if defined(WIN32)
 
 ssize_t curlx_read(int fd, void *buf, size_t count)
 {
@@ -372,7 +376,7 @@ ssize_t curlx_write(int fd, const void *buf, size_t count)
   return (ssize_t)write(fd, buf, curlx_uztoui(count));
 }
 
-#endif /* WIN32 || _WIN32 */
+#endif /* WIN32 */
 
 #if defined(__INTEL_COMPILER) && defined(__unix__)
 
index 2c619bf81979dc1e5ba73ee5d3608d06e6784b05..4367099d925549b5b34630a5068cb25fff588c91 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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_WINSOCK
 #include <curl/curl.h> /* for curl_socket_t */
 #endif
@@ -65,7 +69,7 @@ curl_socket_t curlx_sitosk(int i);
 
 #endif /* USE_WINSOCK */
 
-#if defined(WIN32) || defined(_WIN32)
+#if defined(WIN32)
 
 ssize_t curlx_read(int fd, void *buf, size_t count);
 
@@ -78,7 +82,7 @@ ssize_t curlx_write(int fd, const void *buf, size_t count);
 #  define write(fd, buf, count) curlx_write(fd, buf, count)
 #endif
 
-#endif /* WIN32 || _WIN32 */
+#endif /* WIN32 */
 
 #if defined(__INTEL_COMPILER) && defined(__unix__)
 
index 105bcce4ed060f63197f3d43fefe453d241b2711..a3e24b6784f192045d34ac4ca19dc3a5454b43e5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 081be9ed93fbe7938262a480ea3af8ecbe2aeaba..21e933b9a4b917e42157a3cc0c306b05b5b39b49 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2022, 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
  * 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"
 
 #ifndef CURL_DISABLE_FTP
+#include <curl/curl.h>
 #include "llist.h"
 
 /* list of wildcard process states */
diff --git a/lib/ws.c b/lib/ws.c
new file mode 100644 (file)
index 0000000..a673446
--- /dev/null
+++ b/lib/ws.c
@@ -0,0 +1,757 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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"
+#include <curl/curl.h>
+
+#ifdef USE_WEBSOCKETS
+
+#include "urldata.h"
+#include "dynbuf.h"
+#include "rand.h"
+#include "curl_base64.h"
+#include "sendf.h"
+#include "multiif.h"
+#include "ws.h"
+#include "easyif.h"
+#include "transfer.h"
+#include "nonblock.h"
+
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
+struct wsfield {
+  const char *name;
+  const char *val;
+};
+
+CURLcode Curl_ws_request(struct Curl_easy *data, REQTYPE *req)
+{
+  unsigned int i;
+  CURLcode result = CURLE_OK;
+  unsigned char rand[16];
+  char *randstr;
+  size_t randlen;
+  char keyval[40];
+  struct SingleRequest *k = &data->req;
+  struct wsfield heads[]= {
+    {
+      /* The request MUST contain an |Upgrade| header field whose value
+         MUST include the "websocket" keyword. */
+      "Upgrade:", "websocket"
+    },
+    {
+      /* The request MUST contain a |Connection| header field whose value
+         MUST include the "Upgrade" token. */
+      "Connection:", "Upgrade",
+    },
+    {
+      /* The request MUST include a header field with the name
+         |Sec-WebSocket-Version|. The value of this header field MUST be
+         13. */
+      "Sec-WebSocket-Version:", "13",
+    },
+    {
+      /* The request MUST include a header field with the name
+         |Sec-WebSocket-Key|. The value of this header field MUST be a nonce
+         consisting of a randomly selected 16-byte value that has been
+         base64-encoded (see Section 4 of [RFC4648]). The nonce MUST be
+         selected randomly for each connection. */
+      "Sec-WebSocket-Key:", NULL,
+    }
+  };
+  heads[3].val = &keyval[0];
+
+  /* 16 bytes random */
+  result = Curl_rand(data, (unsigned char *)rand, sizeof(rand));
+  if(result)
+    return result;
+  result = Curl_base64_encode((char *)rand, sizeof(rand), &randstr, &randlen);
+  if(result)
+    return result;
+  DEBUGASSERT(randlen < sizeof(keyval));
+  if(randlen >= sizeof(keyval))
+    return CURLE_FAILED_INIT;
+  strcpy(keyval, randstr);
+  free(randstr);
+  for(i = 0; !result && (i < sizeof(heads)/sizeof(heads[0])); i++) {
+    if(!Curl_checkheaders(data, STRCONST(heads[i].name))) {
+#ifdef USE_HYPER
+      char field[128];
+      msnprintf(field, sizeof(field), "%s %s", heads[i].name,
+                heads[i].val);
+      result = Curl_hyper_header(data, req, field);
+#else
+      (void)data;
+      result = Curl_dyn_addf(req, "%s %s\r\n", heads[i].name,
+                             heads[i].val);
+#endif
+    }
+  }
+  k->upgr101 = UPGR101_WS;
+  Curl_dyn_init(&data->req.p.http->ws.buf, MAX_WS_SIZE * 2);
+  return result;
+}
+
+CURLcode Curl_ws_accept(struct Curl_easy *data)
+{
+  struct SingleRequest *k = &data->req;
+  struct HTTP *ws = data->req.p.http;
+  struct connectdata *conn = data->conn;
+  struct websocket *wsp = &data->req.p.http->ws;
+  CURLcode result;
+
+  /* Verify the Sec-WebSocket-Accept response.
+
+     The sent value is the base64 encoded version of a SHA-1 hash done on the
+     |Sec-WebSocket-Key| header field concatenated with
+     the string "258EAFA5-E914-47DA-95CA-C5AB0DC85B11".
+  */
+
+  /* If the response includes a |Sec-WebSocket-Extensions| header field and
+     this header field indicates the use of an extension that was not present
+     in the client's handshake (the server has indicated an extension not
+     requested by the client), the client MUST Fail the WebSocket Connection.
+  */
+
+  /* If the response includes a |Sec-WebSocket-Protocol| header field
+     and this header field indicates the use of a subprotocol that was
+     not present in the client's handshake (the server has indicated a
+     subprotocol not requested by the client), the client MUST Fail
+     the WebSocket Connection. */
+
+  /* 4 bytes random */
+  result = Curl_rand(data, (unsigned char *)&ws->ws.mask, sizeof(ws->ws.mask));
+  if(result)
+    return result;
+
+  infof(data, "Received 101, switch to WebSocket; mask %02x%02x%02x%02x",
+        ws->ws.mask[0], ws->ws.mask[1], ws->ws.mask[2], ws->ws.mask[3]);
+  k->upgr101 = UPGR101_RECEIVED;
+
+  if(data->set.connect_only)
+    /* switch off non-blocking sockets */
+    (void)curlx_nonblock(conn->sock[FIRSTSOCKET], FALSE);
+
+  wsp->oleft = 0;
+  return result;
+}
+
+#define WSBIT_FIN 0x80
+#define WSBIT_OPCODE_CONT  0
+#define WSBIT_OPCODE_TEXT  (1)
+#define WSBIT_OPCODE_BIN   (2)
+#define WSBIT_OPCODE_CLOSE (8)
+#define WSBIT_OPCODE_PING  (9)
+#define WSBIT_OPCODE_PONG  (0xa)
+#define WSBIT_OPCODE_MASK  (0xf)
+
+#define WSBIT_MASK 0x80
+
+/* remove the spent bytes from the beginning of the buffer as that part has
+   now been delivered to the application */
+static void ws_decode_clear(struct Curl_easy *data)
+{
+  struct websocket *wsp = &data->req.p.http->ws;
+  size_t spent = wsp->usedbuf;
+  size_t len = Curl_dyn_len(&wsp->buf);
+  size_t keep = len - spent;
+  DEBUGASSERT(len >= spent);
+  Curl_dyn_tail(&wsp->buf, keep);
+}
+
+/* ws_decode() decodes a binary frame into structured WebSocket data,
+
+   wpkt - the incoming raw data. If NULL, work on the already buffered data.
+   ilen - the size of the provided data, perhaps too little, perhaps too much
+   out - stored pointed to extracted data
+   olen - stored length of the extracted data
+   oleft - number of unread bytes pending to that belongs to this frame
+   more - if there is more data in there
+   flags - stored bitmask about the frame
+
+   Returns CURLE_AGAIN if there is only a partial frame in the buffer. Then it
+   stores the first part in the ->extra buffer to be used in the next call
+   when more data is provided.
+*/
+
+static CURLcode ws_decode(struct Curl_easy *data,
+                          unsigned char *wpkt, size_t ilen,
+                          unsigned char **out, size_t *olen,
+                          curl_off_t *oleft,
+                          bool *more,
+                          unsigned int *flags)
+{
+  bool fin;
+  unsigned char opcode;
+  curl_off_t total;
+  size_t dataindex = 2;
+  curl_off_t plen; /* size of data in the buffer */
+  curl_off_t payloadsize;
+  struct websocket *wsp = &data->req.p.http->ws;
+  unsigned char *p;
+  CURLcode result;
+
+  *olen = 0;
+
+  /* add the incoming bytes, if any */
+  if(wpkt) {
+    result = Curl_dyn_addn(&wsp->buf, wpkt, ilen);
+    if(result)
+      return result;
+  }
+
+  plen = Curl_dyn_len(&wsp->buf);
+  if(plen < 2) {
+    /* the smallest possible frame is two bytes */
+    infof(data, "WS: plen == %u, EAGAIN", (int)plen);
+    return CURLE_AGAIN;
+  }
+
+  p = Curl_dyn_uptr(&wsp->buf);
+
+  fin = p[0] & WSBIT_FIN;
+  opcode = p[0] & WSBIT_OPCODE_MASK;
+  infof(data, "WS:%d received FIN bit %u", __LINE__, (int)fin);
+  *flags = 0;
+  switch(opcode) {
+  case WSBIT_OPCODE_CONT:
+    if(!fin)
+      *flags |= CURLWS_CONT;
+    infof(data, "WS: received OPCODE CONT");
+    break;
+  case WSBIT_OPCODE_TEXT:
+    infof(data, "WS: received OPCODE TEXT");
+    *flags |= CURLWS_TEXT;
+    break;
+  case WSBIT_OPCODE_BIN:
+    infof(data, "WS: received OPCODE BINARY");
+    *flags |= CURLWS_BINARY;
+    break;
+  case WSBIT_OPCODE_CLOSE:
+    infof(data, "WS: received OPCODE CLOSE");
+    *flags |= CURLWS_CLOSE;
+    break;
+  case WSBIT_OPCODE_PING:
+    infof(data, "WS: received OPCODE PING");
+    *flags |= CURLWS_PING;
+    break;
+  case WSBIT_OPCODE_PONG:
+    infof(data, "WS: received OPCODE PONG");
+    *flags |= CURLWS_PONG;
+    break;
+  }
+
+  if(p[1] & WSBIT_MASK) {
+    /* A client MUST close a connection if it detects a masked frame. */
+    failf(data, "WS: masked input frame");
+    return CURLE_RECV_ERROR;
+  }
+  payloadsize = p[1];
+  if(payloadsize == 126) {
+    if(plen < 4) {
+      infof(data, "WS:%d plen == %u, EAGAIN", __LINE__, (int)plen);
+      return CURLE_AGAIN; /* not enough data available */
+    }
+    payloadsize = (p[2] << 8) | p[3];
+    dataindex += 2;
+  }
+  else if(payloadsize == 127) {
+    /* 64 bit payload size */
+    if(plen < 10)
+      return CURLE_AGAIN;
+    if(p[2] & 80) {
+      failf(data, "WS: too large frame");
+      return CURLE_RECV_ERROR;
+    }
+    dataindex += 8;
+    payloadsize = ((curl_off_t)p[2] << 56) |
+      (curl_off_t)p[3] << 48 |
+      (curl_off_t)p[4] << 40 |
+      (curl_off_t)p[5] << 32 |
+      (curl_off_t)p[6] << 24 |
+      (curl_off_t)p[7] << 16 |
+      (curl_off_t)p[8] << 8 |
+      p[9];
+  }
+
+  total = dataindex + payloadsize;
+  if(total > plen) {
+    /* deliver a partial frame */
+    *oleft = total - dataindex;
+    payloadsize = total - dataindex;
+  }
+  else {
+    *oleft = 0;
+    if(plen > total)
+      /* there is another fragment after */
+      *more = TRUE;
+  }
+
+  /* point to the payload */
+  *out = &p[dataindex];
+
+  /* return the payload length */
+  *olen = payloadsize;
+
+  /* number of bytes "used" from the buffer */
+  wsp->usedbuf = dataindex + payloadsize;
+  infof(data, "WS: received %zu bytes payload (%zu left)",
+        payloadsize, *oleft);
+  return CURLE_OK;
+}
+
+/* Curl_ws_writecb() is the write callback for websocket traffic. The
+   websocket data is provided to this raw, in chunks. This function should
+   handle/decode the data and call the "real" underlying callback accordingly.
+*/
+size_t Curl_ws_writecb(char *buffer, size_t size /* 1 */,
+                       size_t nitems, void *userp)
+{
+  struct HTTP *ws = (struct HTTP *)userp;
+  struct Curl_easy *data = ws->ws.data;
+  void *writebody_ptr = data->set.out;
+  if(data->set.ws_raw_mode)
+    return data->set.fwrite_func(buffer, size, nitems, writebody_ptr);
+  else if(nitems) {
+    unsigned char *frame = NULL;
+    size_t flen = 0;
+    size_t wrote = 0;
+    CURLcode result;
+    bool more; /* there's is more to parse in the buffer */
+    curl_off_t oleft;
+
+    decode:
+    more = FALSE;
+    oleft = ws->ws.frame.bytesleft;
+    if(!oleft) {
+      unsigned int recvflags;
+      result = ws_decode(data, (unsigned char *)buffer, nitems,
+                         &frame, &flen, &oleft, &more, &recvflags);
+      if(result == CURLE_AGAIN)
+        /* insufficient amount of data, keep it for later */
+        return nitems;
+      else if(result) {
+        infof(data, "WS: decode error %d", (int)result);
+        return nitems - 1;
+      }
+      /* Store details about the frame to be reachable with curl_ws_meta()
+         from within the write callback */
+      ws->ws.frame.age = 0;
+      ws->ws.frame.offset = 0;
+      ws->ws.frame.flags = recvflags;
+      ws->ws.frame.bytesleft = oleft;
+    }
+    else {
+      if(nitems > (size_t)ws->ws.frame.bytesleft) {
+        nitems = ws->ws.frame.bytesleft;
+        more = TRUE;
+      }
+      else
+        more = FALSE;
+      ws->ws.frame.offset += nitems;
+      ws->ws.frame.bytesleft -= nitems;
+      frame = (unsigned char *)buffer;
+      flen = nitems;
+    }
+    if((ws->ws.frame.flags & CURLWS_PING) && !oleft) {
+      /* auto-respond to PINGs, only works for single-frame payloads atm */
+      size_t bytes;
+      infof(data, "WS: auto-respond to PING with a PONG");
+      DEBUGASSERT(frame);
+      /* send back the exact same content as a PONG */
+      result = curl_ws_send(data, frame, flen, &bytes, 0, CURLWS_PONG);
+      if(result)
+        return result;
+    }
+    else {
+      /* deliver the decoded frame to the user callback */
+      Curl_set_in_callback(data, true);
+      wrote = data->set.fwrite_func((char *)frame, 1, flen, writebody_ptr);
+      Curl_set_in_callback(data, false);
+      if(wrote != flen)
+        return 0;
+    }
+    if(oleft)
+      ws->ws.frame.offset += flen;
+    /* the websocket frame has been delivered */
+    ws_decode_clear(data);
+    if(more) {
+      /* there's more websocket data to deal with in the buffer */
+      buffer = NULL; /* the buffer as been drained already */
+      goto decode;
+    }
+  }
+  return nitems;
+}
+
+
+CURL_EXTERN CURLcode curl_ws_recv(struct Curl_easy *data, void *buffer,
+                                  size_t buflen, size_t *nread,
+                                  struct curl_ws_frame **metap)
+{
+  size_t bytes;
+  CURLcode result;
+  struct websocket *wsp = &data->req.p.http->ws;
+
+  *nread = 0;
+  *metap = NULL;
+  /* get a download buffer */
+  result = Curl_preconnect(data);
+  if(result)
+    return result;
+
+  do {
+    bool drain = FALSE; /* if there is pending buffered data to drain */
+    char *inbuf = data->state.buffer;
+    bytes = wsp->stillbuffer;
+    if(!bytes) {
+      result = curl_easy_recv(data, data->state.buffer,
+                              data->set.buffer_size, &bytes);
+      if(result)
+        return result;
+    }
+    else {
+      /* the pending bytes can be found here */
+      inbuf = wsp->stillb;
+      drain = TRUE;
+    }
+    if(bytes) {
+      unsigned char *out;
+      size_t olen;
+      bool more;
+      unsigned int recvflags;
+      curl_off_t oleft = wsp->frame.bytesleft;
+
+      infof(data, "WS: got %u websocket bytes to decode", (int)bytes);
+      if(!oleft && !drain) {
+        result = ws_decode(data, (unsigned char *)inbuf, bytes,
+                           &out, &olen, &oleft, &more, &recvflags);
+        if(result == CURLE_AGAIN)
+          /* a packet fragment only */
+          break;
+        else if(result)
+          return result;
+        wsp->frame.offset = 0;
+        wsp->frame.bytesleft = oleft;
+        wsp->frame.flags = recvflags;
+      }
+      else {
+        olen = oleft;
+        out = (unsigned char *)wsp->stillb;
+        recvflags = wsp->frame.flags;
+        if((curl_off_t)buflen < oleft)
+          /* there is still data left after this */
+          wsp->frame.bytesleft -= buflen;
+        else
+          wsp->frame.bytesleft = 0;
+      }
+
+      /* auto-respond to PINGs */
+      if((recvflags & CURLWS_PING) && !oleft) {
+        infof(data, "WS: auto-respond to PING with a PONG");
+        /* send back the exact same content as a PONG */
+        result = curl_ws_send(data, out, olen, &bytes, 0, CURLWS_PONG);
+        if(result)
+          return result;
+      }
+      else {
+        if(olen < buflen) {
+          /* copy the payload to the user buffer */
+          memcpy(buffer, out, olen);
+          *nread = olen;
+          if(!oleft)
+            /*  websocket frame has been delivered */
+            ws_decode_clear(data);
+        }
+        else {
+          /* copy a partial payload */
+          memcpy(buffer, out, buflen);
+          *nread = buflen;
+          /* remember what is left and where */
+          wsp->stillbuffer = olen - buflen;
+          wsp->stillb = (char *)buffer + buflen;
+        }
+        wsp->frame.offset += *nread;
+      }
+    }
+    else
+      *nread = bytes;
+    break;
+  } while(1);
+  *metap = &wsp->frame;
+  return CURLE_OK;
+}
+
+static void ws_xor(struct Curl_easy *data,
+                   const unsigned char *source,
+                   unsigned char *dest,
+                   size_t len)
+{
+  struct websocket *wsp = &data->req.p.http->ws;
+  size_t i;
+  /* append payload after the mask, XOR appropriately */
+  for(i = 0; i < len; i++) {
+    dest[i] = source[i] ^ wsp->mask[wsp->xori];
+    wsp->xori++;
+    wsp->xori &= 3;
+  }
+}
+
+/***
+    RFC 6455 Section 5.2
+
+      0                   1                   2                   3
+      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+     +-+-+-+-+-------+-+-------------+-------------------------------+
+     |F|R|R|R| opcode|M| Payload len |    Extended payload length    |
+     |I|S|S|S|  (4)  |A|     (7)     |             (16/64)           |
+     |N|V|V|V|       |S|             |   (if payload len==126/127)   |
+     | |1|2|3|       |K|             |                               |
+     +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
+     |     Extended payload length continued, if payload len == 127  |
+     + - - - - - - - - - - - - - - - +-------------------------------+
+     |                               |Masking-key, if MASK set to 1  |
+     +-------------------------------+-------------------------------+
+     | Masking-key (continued)       |          Payload Data         |
+     +-------------------------------- - - - - - - - - - - - - - - - +
+     :                     Payload Data continued ...                :
+     + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+     |                     Payload Data continued ...                |
+     +---------------------------------------------------------------+
+*/
+
+static size_t ws_packethead(struct Curl_easy *data,
+                            size_t len, unsigned int flags)
+{
+  struct HTTP *ws = data->req.p.http;
+  unsigned char *out = (unsigned char *)data->state.ulbuf;
+  unsigned char firstbyte = 0;
+  int outi;
+  unsigned char opcode;
+  if(flags & CURLWS_TEXT) {
+    opcode = WSBIT_OPCODE_TEXT;
+    infof(data, "WS: send OPCODE TEXT");
+  }
+  else if(flags & CURLWS_CLOSE) {
+    opcode = WSBIT_OPCODE_CLOSE;
+    infof(data, "WS: send OPCODE CLOSE");
+  }
+  else if(flags & CURLWS_PING) {
+    opcode = WSBIT_OPCODE_PING;
+    infof(data, "WS: send OPCODE PING");
+  }
+  else if(flags & CURLWS_PONG) {
+    opcode = WSBIT_OPCODE_PONG;
+    infof(data, "WS: send OPCODE PONG");
+  }
+  else {
+    opcode = WSBIT_OPCODE_BIN;
+    infof(data, "WS: send OPCODE BINARY");
+  }
+
+  if(!(flags & CURLWS_CONT)) {
+    /* if not marked as continuing, assume this is the final fragment */
+    firstbyte |= WSBIT_FIN | opcode;
+    ws->ws.contfragment = FALSE;
+  }
+  else if(ws->ws.contfragment) {
+    /* the previous fragment was not a final one and this isn't either, keep a
+       CONT opcode and no FIN bit */
+    firstbyte |= WSBIT_OPCODE_CONT;
+  }
+  else {
+    ws->ws.contfragment = TRUE;
+  }
+  out[0] = firstbyte;
+  if(len > 65535) {
+    out[1] = 127 | WSBIT_MASK;
+    out[2] = (len >> 8) & 0xff;
+    out[3] = len & 0xff;
+    outi = 10;
+  }
+  else if(len > 126) {
+    out[1] = 126 | WSBIT_MASK;
+    out[2] = (len >> 8) & 0xff;
+    out[3] = len & 0xff;
+    outi = 4;
+  }
+  else {
+    out[1] = (unsigned char)len | WSBIT_MASK;
+    outi = 2;
+  }
+
+  infof(data, "WS: send FIN bit %u (byte %02x)",
+        firstbyte & WSBIT_FIN ? 1 : 0,
+        firstbyte);
+  infof(data, "WS: send payload len %u", (int)len);
+
+  /* 4 bytes mask */
+  memcpy(&out[outi], &ws->ws.mask, 4);
+
+  if(data->set.upload_buffer_size < (len + 10))
+    return 0;
+
+  /* pass over the mask */
+  outi += 4;
+
+  ws->ws.xori = 0;
+  /* return packet size */
+  return outi;
+}
+
+CURL_EXTERN CURLcode curl_ws_send(struct Curl_easy *data, const void *buffer,
+                                  size_t buflen, size_t *sent,
+                                  curl_off_t totalsize,
+                                  unsigned int sendflags)
+{
+  CURLcode result;
+  size_t headlen;
+  char *out;
+  ssize_t written;
+  struct websocket *wsp = &data->req.p.http->ws;
+
+  if(!data->set.ws_raw_mode) {
+    result = Curl_get_upload_buffer(data);
+    if(result)
+      return result;
+  }
+  else {
+    if(totalsize || sendflags)
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+  }
+
+  if(data->set.ws_raw_mode) {
+    if(!buflen)
+      /* nothing to do */
+      return CURLE_OK;
+    /* raw mode sends exactly what was requested, and this is from within
+       the write callback */
+    if(Curl_is_in_callback(data))
+      result = Curl_write(data, data->conn->writesockfd, buffer, buflen,
+                          &written);
+    else
+      result = Curl_senddata(data, buffer, buflen, &written);
+
+    infof(data, "WS: wanted to send %zu bytes, sent %zu bytes",
+          buflen, written);
+    *sent = written;
+    return result;
+  }
+
+  if(buflen > (data->set.upload_buffer_size - 10))
+    /* don't do more than this in one go */
+    buflen = data->set.upload_buffer_size - 10;
+
+  if(sendflags & CURLWS_OFFSET) {
+    if(totalsize) {
+      /* a frame series 'totalsize' bytes big, this is the first */
+      headlen = ws_packethead(data, totalsize, sendflags);
+      wsp->sleft = totalsize - buflen;
+    }
+    else {
+      headlen = 0;
+      if((curl_off_t)buflen > wsp->sleft) {
+        infof(data, "WS: unaligned frame size (sending %zu instead of %zu)",
+              buflen, wsp->sleft);
+        wsp->sleft = 0;
+      }
+      else
+        wsp->sleft -= buflen;
+    }
+  }
+  else
+    headlen = ws_packethead(data, buflen, sendflags);
+
+  /* headlen is the size of the frame header */
+  out = data->state.ulbuf;
+  if(buflen)
+    /* for PING and PONG etc there might not be a payload */
+    ws_xor(data, buffer, (unsigned char *)out + headlen, buflen);
+
+  if(data->set.connect_only)
+    result = Curl_senddata(data, out, buflen + headlen, &written);
+  else
+    result = Curl_write(data, data->conn->writesockfd, out,
+                        buflen + headlen, &written);
+
+  infof(data, "WS: wanted to send %zu bytes, sent %zu bytes",
+        headlen + buflen, written);
+  *sent = written;
+
+  return result;
+}
+
+void Curl_ws_done(struct Curl_easy *data)
+{
+  struct websocket *wsp = &data->req.p.http->ws;
+  DEBUGASSERT(wsp);
+  Curl_dyn_free(&wsp->buf);
+}
+
+CURL_EXTERN 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 */
+  if(GOOD_EASY_HANDLE(data) && Curl_is_in_callback(data) && data->req.p.http &&
+     !data->set.ws_raw_mode)
+    return &data->req.p.http->ws.frame;
+  return NULL;
+}
+
+#else
+
+CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
+                                  size_t *nread,
+                                  struct curl_ws_frame **metap)
+{
+  (void)curl;
+  (void)buffer;
+  (void)buflen;
+  (void)nread;
+  (void)metap;
+  return CURLE_OK;
+}
+
+CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
+                                  size_t buflen, size_t *sent,
+                                  curl_off_t framesize,
+                                  unsigned int sendflags)
+{
+  (void)curl;
+  (void)buffer;
+  (void)buflen;
+  (void)sent;
+  (void)framesize;
+  (void)sendflags;
+  return CURLE_OK;
+}
+
+CURL_EXTERN struct curl_ws_frame *curl_ws_meta(struct Curl_easy *data)
+{
+  (void)data;
+  return NULL;
+}
+#endif /* USE_WEBSOCKETS */
diff --git a/lib/ws.h b/lib/ws.h
new file mode 100644 (file)
index 0000000..341242e
--- /dev/null
+++ b/lib/ws.h
@@ -0,0 +1,69 @@
+#ifndef HEADER_CURL_WS_H
+#define HEADER_CURL_WS_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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_WEBSOCKETS
+
+#ifdef USE_HYPER
+#define REQTYPE void
+#else
+#define REQTYPE struct dynbuf
+#endif
+
+/* this is the largest single fragment size we support */
+#define MAX_WS_SIZE 65535
+
+/* part of 'struct HTTP', when used in the 'struct SingleRequest' in the
+   Curl_easy struct */
+struct websocket {
+  bool contfragment; /* set TRUE if the previous fragment sent was not final */
+  unsigned char mask[4]; /* 32 bit mask for this connection */
+  struct Curl_easy *data; /* used for write callback handling */
+  struct dynbuf buf;
+  size_t usedbuf; /* number of leading bytes in 'buf' the most recent complete
+                     websocket frame uses */
+  struct curl_ws_frame frame; /* the struct used for frame state */
+  curl_off_t oleft; /* outstanding number of payload bytes left from the
+                       server */
+  curl_off_t stillbuffer; /* number of bytes left in the buffer to deliver in
+                             the next curl_ws_recv() call */
+  char *stillb; /* the stillbuffer pending bytes are here */
+  curl_off_t sleft; /* outstanding number of payload bytes left to send */
+  unsigned int xori; /* xor index */
+};
+
+CURLcode Curl_ws_request(struct Curl_easy *data, REQTYPE *req);
+CURLcode Curl_ws_accept(struct Curl_easy *data);
+
+size_t Curl_ws_writecb(char *buffer, size_t size, size_t nitems, void *userp);
+void Curl_ws_done(struct Curl_easy *data);
+
+#else
+#define Curl_ws_request(x,y) CURLE_OK
+#define Curl_ws_done(x) Curl_nop_stmt
+#endif
+
+#endif /* HEADER_CURL_WS_H */
diff --git a/lib/x509asn1.c b/lib/x509asn1.c
deleted file mode 100644 (file)
index 0341543..0000000
+++ /dev/null
@@ -1,1329 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
-    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
-
-#include <curl/curl.h>
-#include "urldata.h"
-#include "strcase.h"
-#include "hostcheck.h"
-#include "vtls/vtls.h"
-#include "sendf.h"
-#include "inet_pton.h"
-#include "curl_base64.h"
-#include "x509asn1.h"
-#include "dynbuf.h"
-
-/* The last 3 #include files should be in this order */
-#include "curl_printf.h"
-#include "curl_memory.h"
-#include "memdebug.h"
-
-/* ASN.1 OIDs. */
-static const char       cnOID[] = "2.5.4.3";    /* Common name. */
-static const char       sanOID[] = "2.5.29.17"; /* Subject alternative name. */
-
-static const struct Curl_OID OIDtable[] = {
-  { "1.2.840.10040.4.1",        "dsa" },
-  { "1.2.840.10040.4.3",        "dsa-with-sha1" },
-  { "1.2.840.10045.2.1",        "ecPublicKey" },
-  { "1.2.840.10045.3.0.1",      "c2pnb163v1" },
-  { "1.2.840.10045.4.1",        "ecdsa-with-SHA1" },
-  { "1.2.840.10046.2.1",        "dhpublicnumber" },
-  { "1.2.840.113549.1.1.1",     "rsaEncryption" },
-  { "1.2.840.113549.1.1.2",     "md2WithRSAEncryption" },
-  { "1.2.840.113549.1.1.4",     "md5WithRSAEncryption" },
-  { "1.2.840.113549.1.1.5",     "sha1WithRSAEncryption" },
-  { "1.2.840.113549.1.1.10",    "RSASSA-PSS" },
-  { "1.2.840.113549.1.1.14",    "sha224WithRSAEncryption" },
-  { "1.2.840.113549.1.1.11",    "sha256WithRSAEncryption" },
-  { "1.2.840.113549.1.1.12",    "sha384WithRSAEncryption" },
-  { "1.2.840.113549.1.1.13",    "sha512WithRSAEncryption" },
-  { "1.2.840.113549.2.2",       "md2" },
-  { "1.2.840.113549.2.5",       "md5" },
-  { "1.3.14.3.2.26",            "sha1" },
-  { cnOID,                      "CN" },
-  { "2.5.4.4",                  "SN" },
-  { "2.5.4.5",                  "serialNumber" },
-  { "2.5.4.6",                  "C" },
-  { "2.5.4.7",                  "L" },
-  { "2.5.4.8",                  "ST" },
-  { "2.5.4.9",                  "streetAddress" },
-  { "2.5.4.10",                 "O" },
-  { "2.5.4.11",                 "OU" },
-  { "2.5.4.12",                 "title" },
-  { "2.5.4.13",                 "description" },
-  { "2.5.4.17",                 "postalCode" },
-  { "2.5.4.41",                 "name" },
-  { "2.5.4.42",                 "givenName" },
-  { "2.5.4.43",                 "initials" },
-  { "2.5.4.44",                 "generationQualifier" },
-  { "2.5.4.45",                 "X500UniqueIdentifier" },
-  { "2.5.4.46",                 "dnQualifier" },
-  { "2.5.4.65",                 "pseudonym" },
-  { "1.2.840.113549.1.9.1",     "emailAddress" },
-  { "2.5.4.72",                 "role" },
-  { sanOID,                     "subjectAltName" },
-  { "2.5.29.18",                "issuerAltName" },
-  { "2.5.29.19",                "basicConstraints" },
-  { "2.16.840.1.101.3.4.2.4",   "sha224" },
-  { "2.16.840.1.101.3.4.2.1",   "sha256" },
-  { "2.16.840.1.101.3.4.2.2",   "sha384" },
-  { "2.16.840.1.101.3.4.2.3",   "sha512" },
-  { (const char *) NULL,        (const char *) NULL }
-};
-
-/*
- * Lightweight ASN.1 parser.
- * In particular, it does not check for syntactic/lexical errors.
- * It is intended to support certificate information gathering for SSL backends
- * that offer a mean to get certificates as a whole, but do not supply
- * entry points to get particular certificate sub-fields.
- * Please note there is no pretention here to rewrite a full SSL library.
- */
-
-static const char *getASN1Element(struct Curl_asn1Element *elem,
-                                  const char *beg, const char *end)
-  WARN_UNUSED_RESULT;
-
-static const char *getASN1Element(struct Curl_asn1Element *elem,
-                                  const char *beg, const char *end)
-{
-  unsigned char b;
-  unsigned long len;
-  struct Curl_asn1Element lelem;
-
-  /* Get a single ASN.1 element into `elem', parse ASN.1 string at `beg'
-     ending at `end'.
-     Returns a pointer in source string after the parsed element, or NULL
-     if an error occurs. */
-  if(!beg || !end || beg >= end || !*beg ||
-     (size_t)(end - beg) > CURL_ASN1_MAX)
-    return NULL;
-
-  /* Process header byte. */
-  elem->header = beg;
-  b = (unsigned char) *beg++;
-  elem->constructed = (b & 0x20) != 0;
-  elem->class = (b >> 6) & 3;
-  b &= 0x1F;
-  if(b == 0x1F)
-    return NULL; /* Long tag values not supported here. */
-  elem->tag = b;
-
-  /* Process length. */
-  if(beg >= end)
-    return NULL;
-  b = (unsigned char) *beg++;
-  if(!(b & 0x80))
-    len = b;
-  else if(!(b &= 0x7F)) {
-    /* Unspecified length. Since we have all the data, we can determine the
-       effective length by skipping element until an end element is found. */
-    if(!elem->constructed)
-      return NULL;
-    elem->beg = beg;
-    while(beg < end && *beg) {
-      beg = getASN1Element(&lelem, beg, end);
-      if(!beg)
-        return NULL;
-    }
-    if(beg >= end)
-      return NULL;
-    elem->end = beg;
-    return beg + 1;
-  }
-  else if((unsigned)b > (size_t)(end - beg))
-    return NULL; /* Does not fit in source. */
-  else {
-    /* Get long length. */
-    len = 0;
-    do {
-      if(len & 0xFF000000L)
-        return NULL;  /* Lengths > 32 bits are not supported. */
-      len = (len << 8) | (unsigned char) *beg++;
-    } while(--b);
-  }
-  if(len > (size_t)(end - beg))
-    return NULL;  /* Element data does not fit in source. */
-  elem->beg = beg;
-  elem->end = beg + len;
-  return elem->end;
-}
-
-/*
- * Search the null terminated OID or OID identifier in local table.
- * Return the table entry pointer or NULL if not found.
- */
-static const struct Curl_OID *searchOID(const char *oid)
-{
-  const struct Curl_OID *op;
-  for(op = OIDtable; op->numoid; op++)
-    if(!strcmp(op->numoid, oid) || strcasecompare(op->textoid, oid))
-      return op;
-
-  return NULL;
-}
-
-/*
- * Convert an ASN.1 Boolean value into its string representation.  Return the
- * dynamically allocated string, or NULL if source is not an ASN.1 Boolean
- * value.
- */
-
-static const char *bool2str(const char *beg, const char *end)
-{
-  if(end - beg != 1)
-    return NULL;
-  return strdup(*beg? "TRUE": "FALSE");
-}
-
-/*
- * Convert an ASN.1 octet string to a printable string.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-static const char *octet2str(const char *beg, const char *end)
-{
-  struct dynbuf buf;
-  CURLcode result;
-
-  Curl_dyn_init(&buf, 3 * CURL_ASN1_MAX + 1);
-  result = Curl_dyn_addn(&buf, "", 0);
-
-  while(!result && beg < end)
-    result = Curl_dyn_addf(&buf, "%02x:", (unsigned char) *beg++);
-
-  return Curl_dyn_ptr(&buf);
-}
-
-static const char *bit2str(const char *beg, const char *end)
-{
-  /* Convert an ASN.1 bit string to a printable string.
-     Return the dynamically allocated string, or NULL if an error occurs. */
-
-  if(++beg > end)
-    return NULL;
-  return octet2str(beg, end);
-}
-
-/*
- * Convert an ASN.1 integer value into its string representation.
- * Return the dynamically allocated string, or NULL if source is not an
- * ASN.1 integer value.
- */
-static const char *int2str(const char *beg, const char *end)
-{
-  unsigned long val = 0;
-  size_t n = end - beg;
-
-  if(!n)
-    return NULL;
-
-  if(n > 4)
-    return octet2str(beg, end);
-
-  /* Represent integers <= 32-bit as a single value. */
-  if(*beg & 0x80)
-    val = ~val;
-
-  do
-    val = (val << 8) | *(const unsigned char *) beg++;
-  while(beg < end);
-  return curl_maprintf("%s%lx", val >= 10? "0x": "", val);
-}
-
-/*
- * Perform a lazy conversion from an ASN.1 typed string to UTF8. Allocate the
- * destination buffer dynamically. The allocation size will normally be too
- * large: this is to avoid buffer overflows.
- * Terminate the string with a nul byte and return the converted
- * string length.
- */
-static ssize_t
-utf8asn1str(char **to, int type, const char *from, const char *end)
-{
-  size_t inlength = end - from;
-  int size = 1;
-  size_t outlength;
-  char *buf;
-
-  *to = NULL;
-  switch(type) {
-  case CURL_ASN1_BMP_STRING:
-    size = 2;
-    break;
-  case CURL_ASN1_UNIVERSAL_STRING:
-    size = 4;
-    break;
-  case CURL_ASN1_NUMERIC_STRING:
-  case CURL_ASN1_PRINTABLE_STRING:
-  case CURL_ASN1_TELETEX_STRING:
-  case CURL_ASN1_IA5_STRING:
-  case CURL_ASN1_VISIBLE_STRING:
-  case CURL_ASN1_UTF8_STRING:
-    break;
-  default:
-    return -1;  /* Conversion not supported. */
-  }
-
-  if(inlength % size)
-    return -1;  /* Length inconsistent with character size. */
-  if(inlength / size > (SIZE_T_MAX - 1) / 4)
-    return -1;  /* Too big. */
-  buf = malloc(4 * (inlength / size) + 1);
-  if(!buf)
-    return -1;  /* Not enough memory. */
-
-  if(type == CURL_ASN1_UTF8_STRING) {
-    /* Just copy. */
-    outlength = inlength;
-    if(outlength)
-      memcpy(buf, from, outlength);
-  }
-  else {
-    for(outlength = 0; from < end;) {
-      int charsize;
-      unsigned int wc;
-
-      wc = 0;
-      switch(size) {
-      case 4:
-        wc = (wc << 8) | *(const unsigned char *) from++;
-        wc = (wc << 8) | *(const unsigned char *) from++;
-        /* FALLTHROUGH */
-      case 2:
-        wc = (wc << 8) | *(const unsigned char *) from++;
-        /* FALLTHROUGH */
-      default: /* case 1: */
-        wc = (wc << 8) | *(const unsigned char *) from++;
-      }
-      charsize = 1;
-      if(wc >= 0x00000080) {
-        if(wc >= 0x00000800) {
-          if(wc >= 0x00010000) {
-            if(wc >= 0x00200000) {
-              free(buf);
-              return -1;        /* Invalid char. size for target encoding. */
-            }
-            buf[outlength + 3] = (char) (0x80 | (wc & 0x3F));
-            wc = (wc >> 6) | 0x00010000;
-            charsize++;
-          }
-          buf[outlength + 2] = (char) (0x80 | (wc & 0x3F));
-          wc = (wc >> 6) | 0x00000800;
-          charsize++;
-        }
-        buf[outlength + 1] = (char) (0x80 | (wc & 0x3F));
-        wc = (wc >> 6) | 0x000000C0;
-        charsize++;
-      }
-      buf[outlength] = (char) wc;
-      outlength += charsize;
-    }
-  }
-  buf[outlength] = '\0';
-  *to = buf;
-  return outlength;
-}
-
-/*
- * Convert an ASN.1 String into its UTF-8 string representation.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-static const char *string2str(int type, const char *beg, const char *end)
-{
-  char *buf;
-  if(utf8asn1str(&buf, type, beg, end) < 0)
-    return NULL;
-  return buf;
-}
-
-/*
- * Decimal ASCII encode unsigned integer `x' into the buflen sized buffer at
- * buf.  Return the total number of encoded digits, even if larger than
- * `buflen'.
- */
-static size_t encodeUint(char *buf, size_t buflen, unsigned int x)
-{
-  size_t i = 0;
-  unsigned int y = x / 10;
-
-  if(y) {
-    i = encodeUint(buf, buflen, y);
-    x -= y * 10;
-  }
-  if(i < buflen)
-    buf[i] = (char) ('0' + x);
-  i++;
-  if(i < buflen)
-    buf[i] = '\0';      /* Store a terminator if possible. */
-  return i;
-}
-
-/*
- * Convert an ASN.1 OID into its dotted string representation.
- * Store the result in th `n'-byte buffer at `buf'.
- * Return the converted string length, or 0 on errors.
- */
-static size_t encodeOID(char *buf, size_t buflen,
-                        const char *beg, const char *end)
-{
-  size_t i;
-  unsigned int x;
-  unsigned int y;
-
-  /* Process the first two numbers. */
-  y = *(const unsigned char *) beg++;
-  x = y / 40;
-  y -= x * 40;
-  i = encodeUint(buf, buflen, x);
-  if(i < buflen)
-    buf[i] = '.';
-  i++;
-  if(i >= buflen)
-    i += encodeUint(NULL, 0, y);
-  else
-    i += encodeUint(buf + i, buflen - i, y);
-
-  /* Process the trailing numbers. */
-  while(beg < end) {
-    if(i < buflen)
-      buf[i] = '.';
-    i++;
-    x = 0;
-    do {
-      if(x & 0xFF000000)
-        return 0;
-      y = *(const unsigned char *) beg++;
-      x = (x << 7) | (y & 0x7F);
-    } while(y & 0x80);
-    if(i >= buflen)
-      i += encodeUint(NULL, 0, x);
-    else
-      i += encodeUint(buf + i, buflen - i, x);
-  }
-  if(i < buflen)
-    buf[i] = '\0';
-  return i;
-}
-
-/*
- * Convert an ASN.1 OID into its dotted or symbolic string representation.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-
-static const char *OID2str(const char *beg, const char *end, bool symbolic)
-{
-  char *buf = NULL;
-  if(beg < end) {
-    size_t buflen = encodeOID(NULL, 0, beg, end);
-    if(buflen) {
-      buf = malloc(buflen + 1); /* one extra for the zero byte */
-      if(buf) {
-        encodeOID(buf, buflen, beg, end);
-        buf[buflen] = '\0';
-
-        if(symbolic) {
-          const struct Curl_OID *op = searchOID(buf);
-          if(op) {
-            free(buf);
-            buf = strdup(op->textoid);
-          }
-        }
-      }
-    }
-  }
-  return buf;
-}
-
-static const char *GTime2str(const char *beg, const char *end)
-{
-  const char *tzp;
-  const char *fracp;
-  char sec1, sec2;
-  size_t fracl;
-  size_t tzl;
-  const char *sep = "";
-
-  /* Convert an ASN.1 Generalized time to a printable string.
-     Return the dynamically allocated string, or NULL if an error occurs. */
-
-  for(fracp = beg; fracp < end && *fracp >= '0' && *fracp <= '9'; fracp++)
-    ;
-
-  /* Get seconds digits. */
-  sec1 = '0';
-  switch(fracp - beg - 12) {
-  case 0:
-    sec2 = '0';
-    break;
-  case 2:
-    sec1 = fracp[-2];
-    /* FALLTHROUGH */
-  case 1:
-    sec2 = fracp[-1];
-    break;
-  default:
-    return NULL;
-  }
-
-  /* Scan for timezone, measure fractional seconds. */
-  tzp = fracp;
-  fracl = 0;
-  if(fracp < end && (*fracp == '.' || *fracp == ',')) {
-    fracp++;
-    do
-      tzp++;
-    while(tzp < end && *tzp >= '0' && *tzp <= '9');
-    /* Strip leading zeroes in fractional seconds. */
-    for(fracl = tzp - fracp - 1; fracl && fracp[fracl - 1] == '0'; fracl--)
-      ;
-  }
-
-  /* Process timezone. */
-  if(tzp >= end)
-    ;           /* Nothing to do. */
-  else if(*tzp == 'Z') {
-    tzp = " GMT";
-    end = tzp + 4;
-  }
-  else {
-    sep = " ";
-    tzp++;
-  }
-
-  tzl = end - tzp;
-  return curl_maprintf("%.4s-%.2s-%.2s %.2s:%.2s:%c%c%s%.*s%s%.*s",
-                       beg, beg + 4, beg + 6,
-                       beg + 8, beg + 10, sec1, sec2,
-                       fracl? ".": "", (int)fracl, fracp,
-                       sep, (int)tzl, tzp);
-}
-
-/*
- *  Convert an ASN.1 UTC time to a printable string.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-static const char *UTime2str(const char *beg, const char *end)
-{
-  const char *tzp;
-  size_t tzl;
-  const char *sec;
-
-  for(tzp = beg; tzp < end && *tzp >= '0' && *tzp <= '9'; tzp++)
-    ;
-  /* Get the seconds. */
-  sec = beg + 10;
-  switch(tzp - sec) {
-  case 0:
-    sec = "00";
-  case 2:
-    break;
-  default:
-    return NULL;
-  }
-
-  /* Process timezone. */
-  if(tzp >= end)
-    return NULL;
-  if(*tzp == 'Z') {
-    tzp = "GMT";
-    end = tzp + 3;
-  }
-  else
-    tzp++;
-
-  tzl = end - tzp;
-  return curl_maprintf("%u%.2s-%.2s-%.2s %.2s:%.2s:%.2s %.*s",
-                       20 - (*beg >= '5'), beg, beg + 2, beg + 4,
-                       beg + 6, beg + 8, sec,
-                       (int)tzl, tzp);
-}
-
-/*
- * Convert an ASN.1 element to a printable string.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-static const char *ASN1tostr(struct Curl_asn1Element *elem, int type)
-{
-  if(elem->constructed)
-    return NULL; /* No conversion of structured elements. */
-
-  if(!type)
-    type = elem->tag;   /* Type not forced: use element tag as type. */
-
-  switch(type) {
-  case CURL_ASN1_BOOLEAN:
-    return bool2str(elem->beg, elem->end);
-  case CURL_ASN1_INTEGER:
-  case CURL_ASN1_ENUMERATED:
-    return int2str(elem->beg, elem->end);
-  case CURL_ASN1_BIT_STRING:
-    return bit2str(elem->beg, elem->end);
-  case CURL_ASN1_OCTET_STRING:
-    return octet2str(elem->beg, elem->end);
-  case CURL_ASN1_NULL:
-    return strdup("");
-  case CURL_ASN1_OBJECT_IDENTIFIER:
-    return OID2str(elem->beg, elem->end, TRUE);
-  case CURL_ASN1_UTC_TIME:
-    return UTime2str(elem->beg, elem->end);
-  case CURL_ASN1_GENERALIZED_TIME:
-    return GTime2str(elem->beg, elem->end);
-  case CURL_ASN1_UTF8_STRING:
-  case CURL_ASN1_NUMERIC_STRING:
-  case CURL_ASN1_PRINTABLE_STRING:
-  case CURL_ASN1_TELETEX_STRING:
-  case CURL_ASN1_IA5_STRING:
-  case CURL_ASN1_VISIBLE_STRING:
-  case CURL_ASN1_UNIVERSAL_STRING:
-  case CURL_ASN1_BMP_STRING:
-    return string2str(type, elem->beg, elem->end);
-  }
-
-  return NULL;   /* Unsupported. */
-}
-
-/*
- * ASCII encode distinguished name at `dn' into the `buflen'-sized buffer at
- * `buf'.
- *
- * Returns the total string length, even if larger than `buflen' or -1 on
- * error.
- */
-static ssize_t encodeDN(char *buf, size_t buflen, struct Curl_asn1Element *dn)
-{
-  struct Curl_asn1Element rdn;
-  struct Curl_asn1Element atv;
-  struct Curl_asn1Element oid;
-  struct Curl_asn1Element value;
-  size_t l = 0;
-  const char *p1;
-  const char *p2;
-  const char *p3;
-  const char *str;
-
-  for(p1 = dn->beg; p1 < dn->end;) {
-    p1 = getASN1Element(&rdn, p1, dn->end);
-    if(!p1)
-      return -1;
-    for(p2 = rdn.beg; p2 < rdn.end;) {
-      p2 = getASN1Element(&atv, p2, rdn.end);
-      if(!p2)
-        return -1;
-      p3 = getASN1Element(&oid, atv.beg, atv.end);
-      if(!p3)
-        return -1;
-      if(!getASN1Element(&value, p3, atv.end))
-        return -1;
-      str = ASN1tostr(&oid, 0);
-      if(!str)
-        return -1;
-
-      /* Encode delimiter.
-         If attribute has a short uppercase name, delimiter is ", ". */
-      if(l) {
-        for(p3 = str; isupper(*p3); p3++)
-          ;
-        for(p3 = (*p3 || p3 - str > 2)? "/": ", "; *p3; p3++) {
-          if(l < buflen)
-            buf[l] = *p3;
-          l++;
-        }
-      }
-
-      /* Encode attribute name. */
-      for(p3 = str; *p3; p3++) {
-        if(l < buflen)
-          buf[l] = *p3;
-        l++;
-      }
-      free((char *) str);
-
-      /* Generate equal sign. */
-      if(l < buflen)
-        buf[l] = '=';
-      l++;
-
-      /* Generate value. */
-      str = ASN1tostr(&value, 0);
-      if(!str)
-        return -1;
-      for(p3 = str; *p3; p3++) {
-        if(l < buflen)
-          buf[l] = *p3;
-        l++;
-      }
-      free((char *) str);
-    }
-  }
-
-  return l;
-}
-
-/*
- * Convert an ASN.1 distinguished name into a printable string.
- * Return the dynamically allocated string, or NULL if an error occurs.
- */
-static const char *DNtostr(struct Curl_asn1Element *dn)
-{
-  char *buf = NULL;
-  ssize_t buflen = encodeDN(NULL, 0, dn);
-
-  if(buflen >= 0) {
-    buf = malloc(buflen + 1);
-    if(buf) {
-      if(encodeDN(buf, buflen + 1, dn) == -1) {
-        free(buf);
-        return NULL;
-      }
-      buf[buflen] = '\0';
-    }
-  }
-  return buf;
-}
-
-/*
- * ASN.1 parse an X509 certificate into structure subfields.
- * Syntax is assumed to have already been checked by the SSL backend.
- * See RFC 5280.
- */
-int Curl_parseX509(struct Curl_X509certificate *cert,
-                   const char *beg, const char *end)
-{
-  struct Curl_asn1Element elem;
-  struct Curl_asn1Element tbsCertificate;
-  const char *ccp;
-  static const char defaultVersion = 0;  /* v1. */
-
-  cert->certificate.header = NULL;
-  cert->certificate.beg = beg;
-  cert->certificate.end = end;
-
-  /* Get the sequence content. */
-  if(!getASN1Element(&elem, beg, end))
-    return -1;  /* Invalid bounds/size. */
-  beg = elem.beg;
-  end = elem.end;
-
-  /* Get tbsCertificate. */
-  beg = getASN1Element(&tbsCertificate, beg, end);
-  if(!beg)
-    return -1;
-  /* Skip the signatureAlgorithm. */
-  beg = getASN1Element(&cert->signatureAlgorithm, beg, end);
-  if(!beg)
-    return -1;
-  /* Get the signatureValue. */
-  if(!getASN1Element(&cert->signature, beg, end))
-    return -1;
-
-  /* Parse TBSCertificate. */
-  beg = tbsCertificate.beg;
-  end = tbsCertificate.end;
-  /* Get optional version, get serialNumber. */
-  cert->version.header = NULL;
-  cert->version.beg = &defaultVersion;
-  cert->version.end = &defaultVersion + sizeof(defaultVersion);
-  beg = getASN1Element(&elem, beg, end);
-  if(!beg)
-    return -1;
-  if(elem.tag == 0) {
-    if(!getASN1Element(&cert->version, elem.beg, elem.end))
-      return -1;
-    beg = getASN1Element(&elem, beg, end);
-    if(!beg)
-      return -1;
-  }
-  cert->serialNumber = elem;
-  /* Get signature algorithm. */
-  beg = getASN1Element(&cert->signatureAlgorithm, beg, end);
-  /* Get issuer. */
-  beg = getASN1Element(&cert->issuer, beg, end);
-  if(!beg)
-    return -1;
-  /* Get notBefore and notAfter. */
-  beg = getASN1Element(&elem, beg, end);
-  if(!beg)
-    return -1;
-  ccp = getASN1Element(&cert->notBefore, elem.beg, elem.end);
-  if(!ccp)
-    return -1;
-  if(!getASN1Element(&cert->notAfter, ccp, elem.end))
-    return -1;
-  /* Get subject. */
-  beg = getASN1Element(&cert->subject, beg, end);
-  if(!beg)
-    return -1;
-  /* Get subjectPublicKeyAlgorithm and subjectPublicKey. */
-  beg = getASN1Element(&cert->subjectPublicKeyInfo, beg, end);
-  if(!beg)
-    return -1;
-  ccp = getASN1Element(&cert->subjectPublicKeyAlgorithm,
-                       cert->subjectPublicKeyInfo.beg,
-                       cert->subjectPublicKeyInfo.end);
-  if(!ccp)
-    return -1;
-  if(!getASN1Element(&cert->subjectPublicKey, ccp,
-                     cert->subjectPublicKeyInfo.end))
-    return -1;
-  /* Get optional issuerUiqueID, subjectUniqueID and extensions. */
-  cert->issuerUniqueID.tag = cert->subjectUniqueID.tag = 0;
-  cert->extensions.tag = elem.tag = 0;
-  cert->issuerUniqueID.header = cert->subjectUniqueID.header = NULL;
-  cert->issuerUniqueID.beg = cert->issuerUniqueID.end = "";
-  cert->subjectUniqueID.beg = cert->subjectUniqueID.end = "";
-  cert->extensions.header = NULL;
-  cert->extensions.beg = cert->extensions.end = "";
-  if(beg < end) {
-    beg = getASN1Element(&elem, beg, end);
-    if(!beg)
-      return -1;
-  }
-  if(elem.tag == 1) {
-    cert->issuerUniqueID = elem;
-    if(beg < end) {
-      beg = getASN1Element(&elem, beg, end);
-      if(!beg)
-        return -1;
-    }
-  }
-  if(elem.tag == 2) {
-    cert->subjectUniqueID = elem;
-    if(beg < end) {
-      beg = getASN1Element(&elem, beg, end);
-      if(!beg)
-        return -1;
-    }
-  }
-  if(elem.tag == 3)
-    if(!getASN1Element(&cert->extensions, elem.beg, elem.end))
-      return -1;
-  return 0;
-}
-
-
-/*
- * Copy at most 64-characters, terminate with a newline and returns the
- * effective number of stored characters.
- */
-static size_t copySubstring(char *to, const char *from)
-{
-  size_t i;
-  for(i = 0; i < 64; i++) {
-    to[i] = *from;
-    if(!*from++)
-      break;
-  }
-
-  to[i++] = '\n';
-  return i;
-}
-
-static const char *dumpAlgo(struct Curl_asn1Element *param,
-                            const char *beg, const char *end)
-{
-  struct Curl_asn1Element oid;
-
-  /* Get algorithm parameters and return algorithm name. */
-
-  beg = getASN1Element(&oid, beg, end);
-  if(!beg)
-    return NULL;
-  param->header = NULL;
-  param->tag = 0;
-  param->beg = param->end = end;
-  if(beg < end)
-    if(!getASN1Element(param, beg, end))
-      return NULL;
-  return OID2str(oid.beg, oid.end, TRUE);
-}
-
-/* return 0 on success, 1 on error */
-static int do_pubkey_field(struct Curl_easy *data, int certnum,
-                           const char *label, struct Curl_asn1Element *elem)
-{
-  const char *output;
-  CURLcode result = CURLE_OK;
-
-  /* Generate a certificate information record for the public key. */
-
-  output = ASN1tostr(elem, 0);
-  if(output) {
-    if(data->set.ssl.certinfo)
-      result = Curl_ssl_push_certinfo(data, certnum, label, output);
-    if(!certnum && !result)
-      infof(data, "   %s: %s", label, output);
-    free((char *) output);
-  }
-  return result ? 1 : 0;
-}
-
-/* return 0 on success, 1 on error */
-static int do_pubkey(struct Curl_easy *data, int certnum,
-                     const char *algo, struct Curl_asn1Element *param,
-                     struct Curl_asn1Element *pubkey)
-{
-  struct Curl_asn1Element elem;
-  struct Curl_asn1Element pk;
-  const char *p;
-
-  /* Generate all information records for the public key. */
-
-  /* Get the public key (single element). */
-  if(!getASN1Element(&pk, pubkey->beg + 1, pubkey->end))
-    return 1;
-
-  if(strcasecompare(algo, "rsaEncryption")) {
-    const char *q;
-    unsigned long len;
-
-    p = getASN1Element(&elem, pk.beg, pk.end);
-    if(!p)
-      return 1;
-
-    /* Compute key length. */
-    for(q = elem.beg; !*q && q < elem.end; q++)
-      ;
-    len = (unsigned long)((elem.end - q) * 8);
-    if(len) {
-      unsigned int i;
-      for(i = *(unsigned char *) q; !(i & 0x80); i <<= 1)
-        len--;
-    }
-    if(len > 32)
-      elem.beg = q;     /* Strip leading zero bytes. */
-    if(!certnum)
-      infof(data, "   RSA Public Key (%lu bits)", len);
-    if(data->set.ssl.certinfo) {
-      q = curl_maprintf("%lu", len);
-      if(q) {
-        CURLcode result =
-          Curl_ssl_push_certinfo(data, certnum, "RSA Public Key", q);
-        free((char *) q);
-        if(result)
-          return 1;
-      }
-    }
-    /* Generate coefficients. */
-    if(do_pubkey_field(data, certnum, "rsa(n)", &elem))
-      return 1;
-    if(!getASN1Element(&elem, p, pk.end))
-      return 1;
-    if(do_pubkey_field(data, certnum, "rsa(e)", &elem))
-      return 1;
-  }
-  else if(strcasecompare(algo, "dsa")) {
-    p = getASN1Element(&elem, param->beg, param->end);
-    if(p) {
-      if(do_pubkey_field(data, certnum, "dsa(p)", &elem))
-        return 1;
-      p = getASN1Element(&elem, p, param->end);
-      if(p) {
-        if(do_pubkey_field(data, certnum, "dsa(q)", &elem))
-          return 1;
-        if(getASN1Element(&elem, p, param->end)) {
-          if(do_pubkey_field(data, certnum, "dsa(g)", &elem))
-            return 1;
-          if(do_pubkey_field(data, certnum, "dsa(pub_key)", &pk))
-            return 1;
-        }
-      }
-    }
-  }
-  else if(strcasecompare(algo, "dhpublicnumber")) {
-    p = getASN1Element(&elem, param->beg, param->end);
-    if(p) {
-      if(do_pubkey_field(data, certnum, "dh(p)", &elem))
-        return 1;
-      if(getASN1Element(&elem, param->beg, param->end)) {
-        if(do_pubkey_field(data, certnum, "dh(g)", &elem))
-          return 1;
-        if(do_pubkey_field(data, certnum, "dh(pub_key)", &pk))
-          return 1;
-      }
-    }
-  }
-  return 0;
-}
-
-CURLcode Curl_extract_certinfo(struct Curl_easy *data,
-                               int certnum,
-                               const char *beg,
-                               const char *end)
-{
-  struct Curl_X509certificate cert;
-  struct Curl_asn1Element param;
-  const char *ccp;
-  char *cp1;
-  size_t cl1;
-  char *cp2;
-  CURLcode result = CURLE_OK;
-  unsigned long version;
-  size_t i;
-  size_t j;
-
-  if(!data->set.ssl.certinfo)
-    if(certnum)
-      return CURLE_OK;
-
-  /* Prepare the certificate information for curl_easy_getinfo(). */
-
-  /* Extract the certificate ASN.1 elements. */
-  if(Curl_parseX509(&cert, beg, end))
-    return CURLE_PEER_FAILED_VERIFICATION;
-
-  /* Subject. */
-  ccp = DNtostr(&cert.subject);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo) {
-    result = Curl_ssl_push_certinfo(data, certnum, "Subject", ccp);
-    if(result)
-      return result;
-  }
-  if(!certnum)
-    infof(data, "%2d Subject: %s", certnum, ccp);
-  free((char *) ccp);
-
-  /* Issuer. */
-  ccp = DNtostr(&cert.issuer);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo) {
-    result = Curl_ssl_push_certinfo(data, certnum, "Issuer", ccp);
-  }
-  if(!certnum)
-    infof(data, "   Issuer: %s", ccp);
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Version (always fits in less than 32 bits). */
-  version = 0;
-  for(ccp = cert.version.beg; ccp < cert.version.end; ccp++)
-    version = (version << 8) | *(const unsigned char *) ccp;
-  if(data->set.ssl.certinfo) {
-    ccp = curl_maprintf("%lx", version);
-    if(!ccp)
-      return CURLE_OUT_OF_MEMORY;
-    result = Curl_ssl_push_certinfo(data, certnum, "Version", ccp);
-    free((char *) ccp);
-    if(result)
-      return result;
-  }
-  if(!certnum)
-    infof(data, "   Version: %lu (0x%lx)", version + 1, version);
-
-  /* Serial number. */
-  ccp = ASN1tostr(&cert.serialNumber, 0);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Serial Number", ccp);
-  if(!certnum)
-    infof(data, "   Serial Number: %s", ccp);
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Signature algorithm .*/
-  ccp = dumpAlgo(&param, cert.signatureAlgorithm.beg,
-                 cert.signatureAlgorithm.end);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Signature Algorithm", ccp);
-  if(!certnum)
-    infof(data, "   Signature Algorithm: %s", ccp);
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Start Date. */
-  ccp = ASN1tostr(&cert.notBefore, 0);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Start Date", ccp);
-  if(!certnum)
-    infof(data, "   Start Date: %s", ccp);
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Expire Date. */
-  ccp = ASN1tostr(&cert.notAfter, 0);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Expire Date", ccp);
-  if(!certnum)
-    infof(data, "   Expire Date: %s", ccp);
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Public Key Algorithm. */
-  ccp = dumpAlgo(&param, cert.subjectPublicKeyAlgorithm.beg,
-                 cert.subjectPublicKeyAlgorithm.end);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Public Key Algorithm",
-                                    ccp);
-  if(!result) {
-    int ret;
-    if(!certnum)
-      infof(data, "   Public Key Algorithm: %s", ccp);
-    ret = do_pubkey(data, certnum, ccp, &param, &cert.subjectPublicKey);
-    if(ret)
-      result = CURLE_OUT_OF_MEMORY; /* the most likely error */
-  }
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Signature. */
-  ccp = ASN1tostr(&cert.signature, 0);
-  if(!ccp)
-    return CURLE_OUT_OF_MEMORY;
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Signature", ccp);
-  if(!certnum)
-    infof(data, "   Signature: %s", ccp);
-  free((char *) ccp);
-  if(result)
-    return result;
-
-  /* Generate PEM certificate. */
-  result = Curl_base64_encode(data, cert.certificate.beg,
-                              cert.certificate.end - cert.certificate.beg,
-                              &cp1, &cl1);
-  if(result)
-    return result;
-  /* Compute the number of characters in final certificate string. Format is:
-     -----BEGIN CERTIFICATE-----\n
-     <max 64 base64 characters>\n
-     .
-     .
-     .
-     -----END CERTIFICATE-----\n
-   */
-  i = 28 + cl1 + (cl1 + 64 - 1) / 64 + 26;
-  cp2 = malloc(i + 1);
-  if(!cp2) {
-    free(cp1);
-    return CURLE_OUT_OF_MEMORY;
-  }
-  /* Build the certificate string. */
-  i = copySubstring(cp2, "-----BEGIN CERTIFICATE-----");
-  for(j = 0; j < cl1; j += 64)
-    i += copySubstring(cp2 + i, cp1 + j);
-  i += copySubstring(cp2 + i, "-----END CERTIFICATE-----");
-  cp2[i] = '\0';
-  free(cp1);
-  if(data->set.ssl.certinfo)
-    result = Curl_ssl_push_certinfo(data, certnum, "Cert", cp2);
-  if(!certnum)
-    infof(data, "%s", cp2);
-  free(cp2);
-  return result;
-}
-
-#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_WOLFSSL or USE_SCHANNEL
-        * or USE_SECTRANSP */
-
-#if defined(USE_GSKIT)
-
-static const char *checkOID(const char *beg, const char *end,
-                            const char *oid)
-{
-  struct Curl_asn1Element e;
-  const char *ccp;
-  const char *p;
-  bool matched;
-
-  /* Check if first ASN.1 element at `beg' is the given OID.
-     Return a pointer in the source after the OID if found, else NULL. */
-
-  ccp = getASN1Element(&e, beg, end);
-  if(!ccp || e.tag != CURL_ASN1_OBJECT_IDENTIFIER)
-    return NULL;
-
-  p = OID2str(e.beg, e.end, FALSE);
-  if(!p)
-    return NULL;
-
-  matched = !strcmp(p, oid);
-  free((char *) p);
-  return matched? ccp: NULL;
-}
-
-CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
-                         const char *beg, const char *end)
-{
-  struct Curl_X509certificate cert;
-  struct Curl_asn1Element dn;
-  struct Curl_asn1Element elem;
-  struct Curl_asn1Element ext;
-  struct Curl_asn1Element name;
-  const char *p;
-  const char *q;
-  char *dnsname;
-  int matched = -1;
-  size_t addrlen = (size_t) -1;
-  ssize_t len;
-  const char * const hostname = SSL_HOST_NAME();
-  const char * const dispname = SSL_HOST_DISPNAME();
-#ifdef ENABLE_IPV6
-  struct in6_addr addr;
-#else
-  struct in_addr addr;
-#endif
-
-  /* Verify that connection server matches info in X509 certificate at
-     `beg'..`end'. */
-
-  if(!SSL_CONN_CONFIG(verifyhost))
-    return CURLE_OK;
-
-  if(Curl_parseX509(&cert, beg, end))
-    return CURLE_PEER_FAILED_VERIFICATION;
-
-  /* Get the server IP address. */
-#ifdef ENABLE_IPV6
-  if(conn->bits.ipv6_ip && Curl_inet_pton(AF_INET6, hostname, &addr))
-    addrlen = sizeof(struct in6_addr);
-  else
-#endif
-  if(Curl_inet_pton(AF_INET, hostname, &addr))
-    addrlen = sizeof(struct in_addr);
-
-  /* Process extensions. */
-  for(p = cert.extensions.beg; p < cert.extensions.end && matched != 1;) {
-    p = getASN1Element(&ext, p, cert.extensions.end);
-    if(!p)
-      return CURLE_PEER_FAILED_VERIFICATION;
-
-    /* Check if extension is a subjectAlternativeName. */
-    ext.beg = checkOID(ext.beg, ext.end, sanOID);
-    if(ext.beg) {
-      ext.beg = getASN1Element(&elem, ext.beg, ext.end);
-      if(!ext.beg)
-        return CURLE_PEER_FAILED_VERIFICATION;
-      /* Skip critical if present. */
-      if(elem.tag == CURL_ASN1_BOOLEAN) {
-        ext.beg = getASN1Element(&elem, ext.beg, ext.end);
-        if(!ext.beg)
-          return CURLE_PEER_FAILED_VERIFICATION;
-      }
-      /* Parse the octet string contents: is a single sequence. */
-      if(!getASN1Element(&elem, elem.beg, elem.end))
-        return CURLE_PEER_FAILED_VERIFICATION;
-      /* Check all GeneralNames. */
-      for(q = elem.beg; matched != 1 && q < elem.end;) {
-        q = getASN1Element(&name, q, elem.end);
-        if(!q)
-          break;
-        switch(name.tag) {
-        case 2: /* DNS name. */
-          len = utf8asn1str(&dnsname, CURL_ASN1_IA5_STRING,
-                            name.beg, name.end);
-          if(len > 0 && (size_t)len == strlen(dnsname))
-            matched = Curl_cert_hostcheck(dnsname, hostname);
-          else
-            matched = 0;
-          free(dnsname);
-          break;
-
-        case 7: /* IP address. */
-          matched = (size_t) (name.end - name.beg) == addrlen &&
-                    !memcmp(&addr, name.beg, addrlen);
-          break;
-        }
-      }
-    }
-  }
-
-  switch(matched) {
-  case 1:
-    /* an alternative name matched the server hostname */
-    infof(data, "  subjectAltName: %s matched", dispname);
-    return CURLE_OK;
-  case 0:
-    /* an alternative name field existed, but didn't match and then
-       we MUST fail */
-    infof(data, "  subjectAltName does not match %s", dispname);
-    return CURLE_PEER_FAILED_VERIFICATION;
-  }
-
-  /* Process subject. */
-  name.header = NULL;
-  name.beg = name.end = "";
-  q = cert.subject.beg;
-  /* we have to look to the last occurrence of a commonName in the
-     distinguished one to get the most significant one. */
-  while(q < cert.subject.end) {
-    q = getASN1Element(&dn, q, cert.subject.end);
-    if(!q)
-      break;
-    for(p = dn.beg; p < dn.end;) {
-      p = getASN1Element(&elem, p, dn.end);
-      if(!p)
-        return CURLE_PEER_FAILED_VERIFICATION;
-      /* We have a DN's AttributeTypeAndValue: check it in case it's a CN. */
-      elem.beg = checkOID(elem.beg, elem.end, cnOID);
-      if(elem.beg)
-        name = elem;    /* Latch CN. */
-    }
-  }
-
-  /* Check the CN if found. */
-  if(!getASN1Element(&elem, name.beg, name.end))
-    failf(data, "SSL: unable to obtain common name from peer certificate");
-  else {
-    len = utf8asn1str(&dnsname, elem.tag, elem.beg, elem.end);
-    if(len < 0) {
-      free(dnsname);
-      return CURLE_OUT_OF_MEMORY;
-    }
-    if(strlen(dnsname) != (size_t) len)         /* Nul byte in string ? */
-      failf(data, "SSL: illegal cert name field");
-    else if(Curl_cert_hostcheck((const char *) dnsname, hostname)) {
-      infof(data, "  common name: %s (matched)", dnsname);
-      free(dnsname);
-      return CURLE_OK;
-    }
-    else
-      failf(data, "SSL: certificate subject name '%s' does not match "
-            "target host name '%s'", dnsname, dispname);
-    free(dnsname);
-  }
-
-  return CURLE_PEER_FAILED_VERIFICATION;
-}
-
-#endif /* USE_GSKIT */
diff --git a/lib/x509asn1.h b/lib/x509asn1.h
deleted file mode 100644 (file)
index 3b51eee..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#ifndef HEADER_CURL_X509ASN1_H
-#define HEADER_CURL_X509ASN1_H
-
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-
-#include "curl_setup.h"
-
-#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
-    defined(USE_WOLFSSL) || defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
-
-#include "urldata.h"
-
-/*
- * Constants.
- */
-
-/* Largest supported ASN.1 structure. */
-#define CURL_ASN1_MAX                   ((size_t) 0x40000)      /* 256K */
-
-/* ASN.1 classes. */
-#define CURL_ASN1_UNIVERSAL             0
-#define CURL_ASN1_APPLICATION           1
-#define CURL_ASN1_CONTEXT_SPECIFIC      2
-#define CURL_ASN1_PRIVATE               3
-
-/* ASN.1 types. */
-#define CURL_ASN1_BOOLEAN               1
-#define CURL_ASN1_INTEGER               2
-#define CURL_ASN1_BIT_STRING            3
-#define CURL_ASN1_OCTET_STRING          4
-#define CURL_ASN1_NULL                  5
-#define CURL_ASN1_OBJECT_IDENTIFIER     6
-#define CURL_ASN1_OBJECT_DESCRIPTOR     7
-#define CURL_ASN1_INSTANCE_OF           8
-#define CURL_ASN1_REAL                  9
-#define CURL_ASN1_ENUMERATED            10
-#define CURL_ASN1_EMBEDDED              11
-#define CURL_ASN1_UTF8_STRING           12
-#define CURL_ASN1_RELATIVE_OID          13
-#define CURL_ASN1_SEQUENCE              16
-#define CURL_ASN1_SET                   17
-#define CURL_ASN1_NUMERIC_STRING        18
-#define CURL_ASN1_PRINTABLE_STRING      19
-#define CURL_ASN1_TELETEX_STRING        20
-#define CURL_ASN1_VIDEOTEX_STRING       21
-#define CURL_ASN1_IA5_STRING            22
-#define CURL_ASN1_UTC_TIME              23
-#define CURL_ASN1_GENERALIZED_TIME      24
-#define CURL_ASN1_GRAPHIC_STRING        25
-#define CURL_ASN1_VISIBLE_STRING        26
-#define CURL_ASN1_GENERAL_STRING        27
-#define CURL_ASN1_UNIVERSAL_STRING      28
-#define CURL_ASN1_CHARACTER_STRING      29
-#define CURL_ASN1_BMP_STRING            30
-
-
-/*
- * Types.
- */
-
-/* ASN.1 parsed element. */
-struct Curl_asn1Element {
-  const char *header;         /* Pointer to header byte. */
-  const char *beg;            /* Pointer to element data. */
-  const char *end;            /* Pointer to 1st byte after element. */
-  unsigned char class;        /* ASN.1 element class. */
-  unsigned char tag;          /* ASN.1 element tag. */
-  bool          constructed;  /* Element is constructed. */
-};
-
-
-/* ASN.1 OID table entry. */
-struct Curl_OID {
-  const char *numoid;  /* Dotted-numeric OID. */
-  const char *textoid; /* OID name. */
-};
-
-
-/* X509 certificate: RFC 5280. */
-struct Curl_X509certificate {
-  struct Curl_asn1Element certificate;
-  struct Curl_asn1Element version;
-  struct Curl_asn1Element serialNumber;
-  struct Curl_asn1Element signatureAlgorithm;
-  struct Curl_asn1Element signature;
-  struct Curl_asn1Element issuer;
-  struct Curl_asn1Element notBefore;
-  struct Curl_asn1Element notAfter;
-  struct Curl_asn1Element subject;
-  struct Curl_asn1Element subjectPublicKeyInfo;
-  struct Curl_asn1Element subjectPublicKeyAlgorithm;
-  struct Curl_asn1Element subjectPublicKey;
-  struct Curl_asn1Element issuerUniqueID;
-  struct Curl_asn1Element subjectUniqueID;
-  struct Curl_asn1Element extensions;
-};
-
-/*
- * Prototypes.
- */
-
-const char *Curl_getASN1Element(struct Curl_asn1Element *elem,
-                                const char *beg, const char *end);
-const char *Curl_ASN1tostr(struct Curl_asn1Element *elem, int type);
-const char *Curl_DNtostr(struct Curl_asn1Element *dn);
-int Curl_parseX509(struct Curl_X509certificate *cert,
-                   const char *beg, const char *end);
-CURLcode Curl_extract_certinfo(struct Curl_easy *data, int certnum,
-                               const char *beg, const char *end);
-CURLcode Curl_verifyhost(struct Curl_easy *data, struct connectdata *conn,
-                         const char *beg, const char *end);
-#endif /* USE_GSKIT or USE_NSS or USE_GNUTLS or USE_WOLFSSL or USE_SCHANNEL
-        * or USE_SECTRANSP */
-#endif /* HEADER_CURL_X509ASN1_H */
index 8ac15d407db837a851dafe35ffec58f31d0521f4..49485f192d099fc41d768b0b45eb8613a9201d4e 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # This should most probably benefit from getting a "Requires:" field added
index 21e5e078472631b867fce67f93a8a157e5a4379b..8fb8700eef391dcef983c4abdf36d1a76c4cc707 100755 (executable)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
+#! /usr/bin/env sh
 ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
-##               by inline-source v2014-01-03.01
+##               by inline-source v2019-02-19.15
 
-# libtool (GNU libtool) 2.4.6
+# libtool (GNU libtool) 2.4.7
 # Provide generalized library-building support services.
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -31,8 +31,8 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-15"
-package_revision=2.4.6
+VERSION="2.4.7 Debian-2.4.7-4"
+package_revision=2.4.7
 
 
 ## ------ ##
@@ -64,34 +64,25 @@ package_revision=2.4.6
 # libraries, which are installed to $pkgauxdir.
 
 # Set a version string for this script.
-scriptversion=2015-01-20.17; # UTC
+scriptversion=2019-02-19.15; # UTC
 
 # General shell script boiler plate, and helper functions.
 # Written by Gary V. Vaughan, 2004
 
-# Copyright (C) 2004-2015 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-
-# As a special exception to the GNU General Public License, if you distribute
-# this file as part of a program or library that is built using GNU Libtool,
-# you may include this file under the same distribution terms that you use
-# for the rest of that program.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# This is free software.  There is NO warranty; not even for
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Copyright (C) 2004-2019, 2021 Bootstrap Authors
+#
+# This file is dual licensed under the terms of the MIT license
+# <https://opensource.org/license/MIT>, and GPL version 2 or later
+# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
+# these licenses when using or redistributing this software or any of
+# the files within it.  See the URLs above, or the file `LICENSE`
+# included in the Bootstrap distribution for the full license texts.
 
-# Please report bugs or propose patches to gary@gnu.org.
+# Please report bugs or propose patches to:
+# <https://github.com/gnulib-modules/bootstrap/issues>
 
 
 ## ------ ##
@@ -139,9 +130,12 @@ do
          _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
        fi"
 done
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# These NLS vars are set unconditionally (bootstrap issue #24).  Unset those
+# in case the environment reset is needed later and the $save_* variant is not
+# defined (see the code above).
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
 
 # Make sure IFS has a sensible default
 sp=' '
@@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then
 fi
 
 
+# func_unset VAR
+# --------------
+# Portably unset VAR.
+# In some shells, an 'unset VAR' statement leaves a non-zero return
+# status if VAR is already unset, which might be problematic if the
+# statement is used at the end of a function (thus poisoning its return
+# value) or when 'set -e' is active (causing even a spurious abort of
+# the script in this case).
+func_unset ()
+{
+    { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; }
+}
+
+
+# Make sure CDPATH doesn't cause `cd` commands to output the target dir.
+func_unset CDPATH
+
+# Make sure ${,E,F}GREP behave sanely.
+func_unset GREP_OPTIONS
+
 
 ## ------------------------- ##
 ## Locate command utilities. ##
@@ -259,7 +273,7 @@ test -z "$SED" && {
     rm -f conftest.in conftest.tmp conftest.nl conftest.out
   }
 
-  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin"
   rm -f conftest.sed
   SED=$func_path_progs_result
 }
@@ -295,7 +309,7 @@ test -z "$GREP" && {
     rm -f conftest.in conftest.tmp conftest.nl conftest.out
   }
 
-  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin"
   GREP=$func_path_progs_result
 }
 
@@ -360,6 +374,35 @@ sed_double_backslash="\
   s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
   s/\n//g"
 
+# require_check_ifs_backslash
+# ---------------------------
+# Check if we can use backslash as IFS='\' separator, and set
+# $check_ifs_backshlash_broken to ':' or 'false'.
+require_check_ifs_backslash=func_require_check_ifs_backslash
+func_require_check_ifs_backslash ()
+{
+  _G_save_IFS=$IFS
+  IFS='\'
+  _G_check_ifs_backshlash='a\\b'
+  for _G_i in $_G_check_ifs_backshlash
+  do
+  case $_G_i in
+  a)
+    check_ifs_backshlash_broken=false
+    ;;
+  '')
+    break
+    ;;
+  *)
+    check_ifs_backshlash_broken=:
+    break
+    ;;
+  esac
+  done
+  IFS=$_G_save_IFS
+  require_check_ifs_backslash=:
+}
+
 
 ## ----------------- ##
 ## Global variables. ##
@@ -580,16 +623,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then
   {
     $debug_cmd
 
-    func_quote_for_eval "$2"
-    eval "$1+=\\ \$func_quote_for_eval_result"
+    func_quote_arg pretty "$2"
+    eval "$1+=\\ \$func_quote_arg_result"
   }'
 else
   func_append_quoted ()
   {
     $debug_cmd
 
-    func_quote_for_eval "$2"
-    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+    func_quote_arg pretty "$2"
+    eval "$1=\$$1\\ \$func_quote_arg_result"
   }
 fi
 
@@ -1091,85 +1134,203 @@ func_relative_path ()
 }
 
 
-# func_quote_for_eval ARG...
-# --------------------------
-# Aesthetically quote ARGs to be evaled later.
-# This function returns two values:
-#   i) func_quote_for_eval_result
-#      double-quoted, suitable for a subsequent eval
-#  ii) func_quote_for_eval_unquoted_result
-#      has all characters that are still active within double
-#      quotes backslashified.
-func_quote_for_eval ()
+# func_quote_portable EVAL ARG
+# ----------------------------
+# Internal function to portably implement func_quote_arg.  Note that we still
+# keep attention to performance here so we as much as possible try to avoid
+# calling sed binary (so far O(N) complexity as long as func_append is O(1)).
+func_quote_portable ()
 {
     $debug_cmd
 
-    func_quote_for_eval_unquoted_result=
-    func_quote_for_eval_result=
-    while test 0 -lt $#; do
-      case $1 in
-        *[\\\`\"\$]*)
-         _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
-        *)
-          _G_unquoted_arg=$1 ;;
-      esac
-      if test -n "$func_quote_for_eval_unquoted_result"; then
-       func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
-      else
-        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+    $require_check_ifs_backslash
+
+    func_quote_portable_result=$2
+
+    # one-time-loop (easy break)
+    while true
+    do
+      if $1; then
+        func_quote_portable_result=`$ECHO "$2" | $SED \
+          -e "$sed_double_quote_subst" -e "$sed_double_backslash"`
+        break
       fi
 
-      case $_G_unquoted_arg in
-        # Double-quote args containing shell metacharacters to delay
-        # word splitting, command substitution and variable expansion
-        # for a subsequent eval.
-        # Many Bourne shells cannot handle close brackets correctly
-        # in scan sets, so we specify it separately.
-        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \  ]*|*]*|"")
-          _G_quoted_arg=\"$_G_unquoted_arg\"
+      # Quote for eval.
+      case $func_quote_portable_result in
+        *[\\\`\"\$]*)
+          # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string
+          # contains the shell wildcard characters.
+          case $check_ifs_backshlash_broken$func_quote_portable_result in
+            :*|*[\[\*\?]*)
+              func_quote_portable_result=`$ECHO "$func_quote_portable_result" \
+                  | $SED "$sed_quote_subst"`
+              break
+              ;;
+          esac
+
+          func_quote_portable_old_IFS=$IFS
+          for _G_char in '\' '`' '"' '$'
+          do
+            # STATE($1) PREV($2) SEPARATOR($3)
+            set start "" ""
+            func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy
+            IFS=$_G_char
+            for _G_part in $func_quote_portable_result
+            do
+              case $1 in
+              quote)
+                func_append func_quote_portable_result "$3$2"
+                set quote "$_G_part" "\\$_G_char"
+                ;;
+              start)
+                set first "" ""
+                func_quote_portable_result=
+                ;;
+              first)
+                set quote "$_G_part" ""
+                ;;
+              esac
+            done
+          done
+          IFS=$func_quote_portable_old_IFS
           ;;
-        *)
-          _G_quoted_arg=$_G_unquoted_arg
-         ;;
+        *) ;;
       esac
-
-      if test -n "$func_quote_for_eval_result"; then
-       func_append func_quote_for_eval_result " $_G_quoted_arg"
-      else
-        func_append func_quote_for_eval_result "$_G_quoted_arg"
-      fi
-      shift
+      break
     done
+
+    func_quote_portable_unquoted_result=$func_quote_portable_result
+    case $func_quote_portable_result in
+      # double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and variable expansion
+      # for a subsequent eval.
+      # many bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+        func_quote_portable_result=\"$func_quote_portable_result\"
+        ;;
+    esac
 }
 
 
-# func_quote_for_expand ARG
-# -------------------------
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
-    $debug_cmd
+# func_quotefast_eval ARG
+# -----------------------
+# Quote one ARG (internal).  This is equivalent to 'func_quote_arg eval ARG',
+# but optimized for speed.  Result is stored in $func_quotefast_eval.
+if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then
+  printf -v _GL_test_printf_tilde %q '~'
+  if test '\~' = "$_GL_test_printf_tilde"; then
+    func_quotefast_eval ()
+    {
+      printf -v func_quotefast_eval_result %q "$1"
+    }
+  else
+    # Broken older Bash implementations.  Make those faster too if possible.
+    func_quotefast_eval ()
+    {
+      case $1 in
+        '~'*)
+          func_quote_portable false "$1"
+          func_quotefast_eval_result=$func_quote_portable_result
+          ;;
+        *)
+          printf -v func_quotefast_eval_result %q "$1"
+          ;;
+      esac
+    }
+  fi
+else
+  func_quotefast_eval ()
+  {
+    func_quote_portable false "$1"
+    func_quotefast_eval_result=$func_quote_portable_result
+  }
+fi
 
-    case $1 in
-      *[\\\`\"]*)
-       _G_arg=`$ECHO "$1" | $SED \
-           -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
-      *)
-        _G_arg=$1 ;;
+
+# func_quote_arg MODEs ARG
+# ------------------------
+# Quote one ARG to be evaled later.  MODEs argument may contain zero or more
+# specifiers listed below separated by ',' character.  This function returns two
+# values:
+#   i) func_quote_arg_result
+#      double-quoted (when needed), suitable for a subsequent eval
+#  ii) func_quote_arg_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.  Available only if 'unquoted' is specified.
+#
+# Available modes:
+# ----------------
+# 'eval' (default)
+#       - escape shell special characters
+# 'expand'
+#       - the same as 'eval';  but do not quote variable references
+# 'pretty'
+#       - request aesthetic output, i.e. '"a b"' instead of 'a\ b'.  This might
+#         be used later in func_quote to get output like: 'echo "a b"' instead
+#         of 'echo a\ b'.  This is slower than default on some shells.
+# 'unquoted'
+#       - produce also $func_quote_arg_unquoted_result which does not contain
+#         wrapping double-quotes.
+#
+# Examples for 'func_quote_arg pretty,unquoted string':
+#
+#   string      | *_result              | *_unquoted_result
+#   ------------+-----------------------+-------------------
+#   "           | \"                    | \"
+#   a b         | "a b"                 | a b
+#   "a b"       | "\"a b\""             | \"a b\"
+#   *           | "*"                   | *
+#   z="${x-$y}" | "z=\"\${x-\$y}\""     | z=\"\${x-\$y}\"
+#
+# Examples for 'func_quote_arg pretty,unquoted,expand string':
+#
+#   string        |   *_result          |  *_unquoted_result
+#   --------------+---------------------+--------------------
+#   z="${x-$y}"   | "z=\"${x-$y}\""     | z=\"${x-$y}\"
+func_quote_arg ()
+{
+    _G_quote_expand=false
+    case ,$1, in
+      *,expand,*)
+        _G_quote_expand=:
+        ;;
     esac
 
-    case $_G_arg in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting and command substitution for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
-        _G_arg=\"$_G_arg\"
+    case ,$1, in
+      *,pretty,*|*,expand,*|*,unquoted,*)
+        func_quote_portable $_G_quote_expand "$2"
+        func_quote_arg_result=$func_quote_portable_result
+        func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result
+        ;;
+      *)
+        # Faster quote-for-eval for some shells.
+        func_quotefast_eval "$2"
+        func_quote_arg_result=$func_quotefast_eval_result
         ;;
     esac
+}
+
 
-    func_quote_for_expand_result=$_G_arg
+# func_quote MODEs ARGs...
+# ------------------------
+# Quote all ARGs to be evaled later and join them into single command.  See
+# func_quote_arg's description for more info.
+func_quote ()
+{
+    $debug_cmd
+    _G_func_quote_mode=$1 ; shift
+    func_quote_result=
+    while test 0 -lt $#; do
+      func_quote_arg "$_G_func_quote_mode" "$1"
+      if test -n "$func_quote_result"; then
+        func_append func_quote_result " $func_quote_arg_result"
+      else
+        func_append func_quote_result "$func_quote_arg_result"
+      fi
+      shift
+    done
 }
 
 
@@ -1215,8 +1376,8 @@ func_show_eval ()
     _G_cmd=$1
     _G_fail_exp=${2-':'}
 
-    func_quote_for_expand "$_G_cmd"
-    eval "func_notquiet $func_quote_for_expand_result"
+    func_quote_arg pretty,expand "$_G_cmd"
+    eval "func_notquiet $func_quote_arg_result"
 
     $opt_dry_run || {
       eval "$_G_cmd"
@@ -1241,8 +1402,8 @@ func_show_eval_locale ()
     _G_fail_exp=${2-':'}
 
     $opt_quiet || {
-      func_quote_for_expand "$_G_cmd"
-      eval "func_echo $func_quote_for_expand_result"
+      func_quote_arg expand,pretty "$_G_cmd"
+      eval "func_echo $func_quote_arg_result"
     }
 
     $opt_dry_run || {
@@ -1369,30 +1530,26 @@ func_lt_ver ()
 # End:
 #! /bin/sh
 
-# Set a version string for this script.
-scriptversion=2015-10-07.11; # UTC
-
 # A portable, pluggable option parser for Bourne shell.
 # Written by Gary V. Vaughan, 2010
 
-# Copyright (C) 2010-2015 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions.  There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# This is free software.  There is NO warranty; not even for
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Copyright (C) 2010-2019, 2021 Bootstrap Authors
+#
+# This file is dual licensed under the terms of the MIT license
+# <https://opensource.org/license/MIT>, and GPL version 2 or later
+# <http://www.gnu.org/licenses/gpl-2.0.html>.  You must apply one of
+# these licenses when using or redistributing this software or any of
+# the files within it.  See the URLs above, or the file `LICENSE`
+# included in the Bootstrap distribution for the full license texts.
 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# Please report bugs or propose patches to:
+# <https://github.com/gnulib-modules/bootstrap/issues>
 
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Please report bugs or propose patches to gary@gnu.org.
+# Set a version string for this script.
+scriptversion=2019-02-19.15; # UTC
 
 
 ## ------ ##
@@ -1415,7 +1572,7 @@ scriptversion=2015-10-07.11; # UTC
 #
 # In order for the '--version' option to work, you will need to have a
 # suitably formatted comment like the one at the top of this file
-# starting with '# Written by ' and ending with '# warranty; '.
+# starting with '# Written by ' and ending with '# Copyright'.
 #
 # For '-h' and '--help' to work, you will also need a one line
 # description of your script's purpose in a comment directly above the
@@ -1427,7 +1584,7 @@ scriptversion=2015-10-07.11; # UTC
 # to display verbose messages only when your user has specified
 # '--verbose'.
 #
-# After sourcing this file, you can plug processing for additional
+# After sourcing this file, you can plug in processing for additional
 # options by amending the variables from the 'Configuration' section
 # below, and following the instructions in the 'Option parsing'
 # section further down.
@@ -1476,8 +1633,8 @@ fatal_help="Try '\$progname --help' for more information."
 ## ------------------------- ##
 
 # This section contains functions for adding, removing, and running hooks
-# to the main code.  A hook is just a named list of of function, that can
-# be run in order later on.
+# in the main code.  A hook is just a list of function names that can be
+# run in order later on.
 
 # func_hookable FUNC_NAME
 # -----------------------
@@ -1510,7 +1667,8 @@ func_add_hook ()
 
 # func_remove_hook FUNC_NAME HOOK_FUNC
 # ------------------------------------
-# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+# Remove HOOK_FUNC from the list of hook functions to be called by
+# FUNC_NAME.
 func_remove_hook ()
 {
     $debug_cmd
@@ -1519,10 +1677,28 @@ func_remove_hook ()
 }
 
 
+# func_propagate_result FUNC_NAME_A FUNC_NAME_B
+# ---------------------------------------------
+# If the *_result variable of FUNC_NAME_A _is set_, assign its value to
+# *_result variable of FUNC_NAME_B.
+func_propagate_result ()
+{
+    $debug_cmd
+
+    func_propagate_result_result=:
+    if eval "test \"\${${1}_result+set}\" = set"
+    then
+      eval "${2}_result=\$${1}_result"
+    else
+      func_propagate_result_result=false
+    fi
+}
+
+
 # func_run_hooks FUNC_NAME [ARG]...
 # ---------------------------------
 # Run all hook functions registered to FUNC_NAME.
-# It is assumed that the list of hook functions contains nothing more
+# It's assumed that the list of hook functions contains nothing more
 # than a whitespace-delimited list of legal shell function names, and
 # no effort is wasted trying to catch shell meta-characters or preserve
 # whitespace.
@@ -1534,22 +1710,19 @@ func_run_hooks ()
 
     case " $hookable_fns " in
       *" $1 "*) ;;
-      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+      *) func_fatal_error "'$1' does not support hook functions." ;;
     esac
 
     eval _G_hook_fns=\$$1_hooks; shift
 
     for _G_hook in $_G_hook_fns; do
-      if eval $_G_hook '"$@"'; then
-        # store returned options list back into positional
-        # parameters for next 'cmd' execution.
-        eval _G_hook_result=\$${_G_hook}_result
-        eval set dummy "$_G_hook_result"; shift
-        _G_rc_run_hooks=:
+      func_unset "${_G_hook}_result"
+      eval $_G_hook '${1+"$@"}'
+      func_propagate_result $_G_hook func_run_hooks
+      if $func_propagate_result_result; then
+        eval set dummy "$func_run_hooks_result"; shift
       fi
     done
-
-    $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result
 }
 
 
@@ -1559,14 +1732,16 @@ func_run_hooks ()
 ## --------------- ##
 
 # In order to add your own option parsing hooks, you must accept the
-# full positional parameter list in your hook function, you may remove/edit
-# any options that you action, and then pass back the remaining unprocessed
-# options in '<hooked_function_name>_result', escaped suitably for
-# 'eval'.  In this case you also must return $EXIT_SUCCESS to let the
-# hook's caller know that it should pay attention to
-# '<hooked_function_name>_result'.  Returning $EXIT_FAILURE signalizes that
-# arguments are left untouched by the hook and therefore caller will ignore the
-# result variable.
+# full positional parameter list from your hook function.  You may remove
+# or edit any options that you action, and then pass back the remaining
+# unprocessed options in '<hooked_function_name>_result', escaped
+# suitably for 'eval'.
+#
+# The '<hooked_function_name>_result' variable is automatically unset
+# before your hook gets called; for best performance, only set the
+# *_result variable when necessary (i.e. don't call the 'func_quote'
+# function unnecessarily because it can be an expensive operation on some
+# machines).
 #
 # Like this:
 #
@@ -1578,11 +1753,8 @@ func_run_hooks ()
 #        usage_message=$usage_message'
 #      -s, --silent       don'\''t print informational messages
 #    '
-#        # No change in '$@' (ignored completely by this hook).  There is
-#        # no need to do the equivalent (but slower) action:
-#        # func_quote_for_eval ${1+"$@"}
-#        # my_options_prep_result=$func_quote_for_eval_result
-#        false
+#        # No change in '$@' (ignored completely by this hook).  Leave
+#        # my_options_prep_result variable intact.
 #    }
 #    func_add_hook func_options_prep my_options_prep
 #
@@ -1593,7 +1765,7 @@ func_run_hooks ()
 #
 #        args_changed=false
 #
-#        # Note that for efficiency, we parse as many options as we can
+#        # Note that, for efficiency, we parse as many options as we can
 #        # recognise in a loop before passing the remainder back to the
 #        # caller on the first unrecognised argument we encounter.
 #        while test $# -gt 0; do
@@ -1610,18 +1782,17 @@ func_run_hooks ()
 #                         args_changed=:
 #                         ;;
 #            *)           # Make sure the first unrecognised option "$_G_opt"
-#                         # is added back to "$@", we could need that later
-#                         # if $args_changed is true.
+#                         # is added back to "$@" in case we need it later,
+#                         # if $args_changed was set to 'true'.
 #                         set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
 #          esac
 #        done
 #
+#        # Only call 'func_quote' here if we processed at least one argument.
 #        if $args_changed; then
-#          func_quote_for_eval ${1+"$@"}
-#          my_silent_option_result=$func_quote_for_eval_result
+#          func_quote eval ${1+"$@"}
+#          my_silent_option_result=$func_quote_result
 #        fi
-#
-#        $args_changed
 #    }
 #    func_add_hook func_parse_options my_silent_option
 #
@@ -1632,8 +1803,6 @@ func_run_hooks ()
 #
 #        $opt_silent && $opt_verbose && func_fatal_help "\
 #    '--silent' and '--verbose' options are mutually exclusive."
-#
-#        false
 #    }
 #    func_add_hook func_validate_options my_option_validation
 #
@@ -1649,13 +1818,8 @@ func_options_finish ()
 {
     $debug_cmd
 
-    _G_func_options_finish_exit=false
-    if func_run_hooks func_options ${1+"$@"}; then
-      func_options_finish_result=$func_run_hooks_result
-      _G_func_options_finish_exit=:
-    fi
-
-    $_G_func_options_finish_exit
+    func_run_hooks func_options ${1+"$@"}
+    func_propagate_result func_run_hooks func_options_finish
 }
 
 
@@ -1668,28 +1832,27 @@ func_options ()
 {
     $debug_cmd
 
-    _G_rc_options=false
+    _G_options_quoted=false
 
     for my_func in options_prep parse_options validate_options options_finish
     do
-      if eval func_$my_func '${1+"$@"}'; then
-        eval _G_res_var='$'"func_${my_func}_result"
-        eval set dummy "$_G_res_var" ; shift
-        _G_rc_options=:
+      func_unset func_${my_func}_result
+      func_unset func_run_hooks_result
+      eval func_$my_func '${1+"$@"}'
+      func_propagate_result func_$my_func func_options
+      if $func_propagate_result_result; then
+        eval set dummy "$func_options_result"; shift
+        _G_options_quoted=:
       fi
     done
 
-    # Save modified positional parameters for caller.  As a top-level
-    # options-parser function we always need to set the 'func_options_result'
-    # variable (regardless the $_G_rc_options value).
-    if $_G_rc_options; then
-      func_options_result=$_G_res_var
-    else
-      func_quote_for_eval ${1+"$@"}
-      func_options_result=$func_quote_for_eval_result
-    fi
-
-    $_G_rc_options
+    $_G_options_quoted || {
+      # As we (func_options) are top-level options-parser function and
+      # nobody quoted "$@" for us yet, we need to do it explicitly for
+      # caller.
+      func_quote eval ${1+"$@"}
+      func_options_result=$func_quote_result
+    }
 }
 
 
@@ -1699,8 +1862,7 @@ func_options ()
 # Note that when calling hook functions, we pass through the list of
 # positional parameters.  If a hook function modifies that list, and
 # needs to propagate that back to rest of this script, then the complete
-# modified list must be put in 'func_run_hooks_result' before
-# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned).
+# modified list must be put in 'func_run_hooks_result' before returning.
 func_hookable func_options_prep
 func_options_prep ()
 {
@@ -1710,14 +1872,8 @@ func_options_prep ()
     opt_verbose=false
     opt_warning_types=
 
-    _G_rc_options_prep=false
-    if func_run_hooks func_options_prep ${1+"$@"}; then
-      _G_rc_options_prep=:
-      # save modified positional parameters for caller
-      func_options_prep_result=$func_run_hooks_result
-    fi
-
-    $_G_rc_options_prep
+    func_run_hooks func_options_prep ${1+"$@"}
+    func_propagate_result func_run_hooks func_options_prep
 }
 
 
@@ -1729,27 +1885,32 @@ func_parse_options ()
 {
     $debug_cmd
 
-    func_parse_options_result=
-
-    _G_rc_parse_options=false
+    _G_parse_options_requote=false
     # this just eases exit handling
     while test $# -gt 0; do
       # Defer to hook functions for initial option parsing, so they
       # get priority in the event of reusing an option name.
-      if func_run_hooks func_parse_options ${1+"$@"}; then
-        eval set dummy "$func_run_hooks_result"; shift
-        _G_rc_parse_options=:
+      func_run_hooks func_parse_options ${1+"$@"}
+      func_propagate_result func_run_hooks func_parse_options
+      if $func_propagate_result_result; then
+        eval set dummy "$func_parse_options_result"; shift
+        # Even though we may have changed "$@", we passed the "$@" array
+        # down into the hook and it quoted it for us (because we are in
+        # this if-branch).  No need to quote it again.
+        _G_parse_options_requote=false
       fi
 
       # Break out of the loop if we already parsed every option.
       test $# -gt 0 || break
 
+      # We expect that one of the options parsed in this function matches
+      # and thus we remove _G_opt from "$@" and need to re-quote.
       _G_match_parse_options=:
       _G_opt=$1
       shift
       case $_G_opt in
         --debug|-x)   debug_cmd='set -x'
-                      func_echo "enabling shell trace mode"
+                      func_echo "enabling shell trace mode" >&2
                       $debug_cmd
                       ;;
 
@@ -1760,7 +1921,7 @@ func_parse_options ()
 
         --warnings|--warning|-W)
                       if test $# = 0 && func_missing_arg $_G_opt; then
-                        _G_rc_parse_options=:
+                        _G_parse_options_requote=:
                         break
                       fi
                       case " $warning_categories $1" in
@@ -1815,7 +1976,7 @@ func_parse_options ()
                       shift
                       ;;
 
-        --)           _G_rc_parse_options=: ; break ;;
+        --)           _G_parse_options_requote=: ; break ;;
         -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
         *)            set dummy "$_G_opt" ${1+"$@"}; shift
                       _G_match_parse_options=false
@@ -1823,17 +1984,16 @@ func_parse_options ()
                       ;;
       esac
 
-      $_G_match_parse_options && _G_rc_parse_options=:
+      if $_G_match_parse_options; then
+        _G_parse_options_requote=:
+      fi
     done
 
-
-    if $_G_rc_parse_options; then
+    if $_G_parse_options_requote; then
       # save modified positional parameters for caller
-      func_quote_for_eval ${1+"$@"}
-      func_parse_options_result=$func_quote_for_eval_result
+      func_quote eval ${1+"$@"}
+      func_parse_options_result=$func_quote_result
     fi
-
-    $_G_rc_parse_options
 }
 
 
@@ -1846,21 +2006,14 @@ func_validate_options ()
 {
     $debug_cmd
 
-    _G_rc_validate_options=false
-
     # Display all warnings if -W was not given.
     test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
 
-    if func_run_hooks func_validate_options ${1+"$@"}; then
-      # save modified positional parameters for caller
-      func_validate_options_result=$func_run_hooks_result
-      _G_rc_validate_options=:
-    fi
+    func_run_hooks func_validate_options ${1+"$@"}
+    func_propagate_result func_run_hooks func_validate_options
 
     # Bail if the options were screwed!
     $exit_cmd $EXIT_FAILURE
-
-    $_G_rc_validate_options
 }
 
 
@@ -1916,8 +2069,8 @@ func_missing_arg ()
 
 # func_split_equals STRING
 # ------------------------
-# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
-# splitting STRING at the '=' sign.
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables
+# after splitting STRING at the '=' sign.
 test -z "$_G_HAVE_XSI_OPS" \
     && (eval 'x=a/b/c;
       test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
@@ -1932,8 +2085,9 @@ then
 
       func_split_equals_lhs=${1%%=*}
       func_split_equals_rhs=${1#*=}
-      test "x$func_split_equals_lhs" = "x$1" \
-        && func_split_equals_rhs=
+      if test "x$func_split_equals_lhs" = "x$1"; then
+        func_split_equals_rhs=
+      fi
   }'
 else
   # ...otherwise fall back to using expr, which is often a shell builtin.
@@ -1943,7 +2097,7 @@ else
 
       func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
       func_split_equals_rhs=
-      test "x$func_split_equals_lhs" = "x$1" \
+      test "x$func_split_equals_lhs=" = "x$1" \
         || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
   }
 fi #func_split_equals
@@ -1969,7 +2123,7 @@ else
   {
       $debug_cmd
 
-      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'`
       func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
   }
 fi #func_split_short_opt
@@ -2011,31 +2165,44 @@ func_usage_message ()
 # func_version
 # ------------
 # Echo version message to standard output and exit.
+# The version message is extracted from the calling file's header
+# comments, with leading '# ' stripped:
+#   1. First display the progname and version
+#   2. Followed by the header comment line matching  /^# Written by /
+#   3. Then a blank line followed by the first following line matching
+#      /^# Copyright /
+#   4. Immediately followed by any lines between the previous matches,
+#      except lines preceding the intervening completely blank line.
+# For example, see the header comments of this file.
 func_version ()
 {
     $debug_cmd
 
     printf '%s\n' "$progname $scriptversion"
     $SED -n '
-        /(C)/!b go
-        :more
-        /\./!{
-          N
-          s|\n# | |
-          b more
-        }
-        :go
-        /^# Written by /,/# warranty; / {
-          s|^# ||
-          s|^# *$||
-          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
-          p
+        /^# Written by /!b
+        s|^# ||; p; n
+
+        :fwd2blnk
+        /./ {
+          n
+          b fwd2blnk
         }
-        /^# Written by / {
-          s|^# ||
-          p
+        p; n
+
+        :holdwrnt
+        s|^# ||
+        s|^# *$||
+        /^Copyright /!{
+          /./H
+          n
+          b holdwrnt
         }
-        /^warranty; /q' < "$progpath"
+
+        s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+        G
+        s|\(\n\)\n*|\1|g
+        p; q' < "$progpath"
 
     exit $?
 }
@@ -2045,12 +2212,12 @@ func_version ()
 # mode: shell-script
 # sh-indentation: 2
 # eval: (add-hook 'before-save-hook 'time-stamp)
-# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC"
 # time-stamp-time-zone: "UTC"
 # End:
 
 # Set a version string.
-scriptversion='(GNU libtool) 2.4.6'
+scriptversion='(GNU libtool) 2.4.7'
 
 
 # func_echo ARG...
@@ -2141,7 +2308,7 @@ include the following information:
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname $scriptversion Debian-2.4.6-15
+       version:        $progname $scriptversion Debian-2.4.7-4
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
@@ -2197,7 +2364,7 @@ fi
 # a configuration failure hint, and exit.
 func_fatal_configuration ()
 {
-    func__fatal_error ${1+"$@"} \
+    func_fatal_error ${1+"$@"} \
       "See the $PACKAGE documentation for more information." \
       "Fatal configuration error."
 }
@@ -2345,6 +2512,8 @@ libtool_options_prep ()
 
     _G_rc_lt_options_prep=:
 
+    _G_rc_lt_options_prep=:
+
     # Shorthand for --mode=foo, only valid as the first argument
     case $1 in
     clean|clea|cle|cl)
@@ -2375,11 +2544,9 @@ libtool_options_prep ()
 
     if $_G_rc_lt_options_prep; then
       # Pass back the list of options.
-      func_quote_for_eval ${1+"$@"}
-      libtool_options_prep_result=$func_quote_for_eval_result
+      func_quote eval ${1+"$@"}
+      libtool_options_prep_result=$func_quote_result
     fi
-
-    $_G_rc_lt_options_prep
 }
 func_add_hook func_options_prep libtool_options_prep
 
@@ -2482,11 +2649,9 @@ libtool_parse_options ()
 
     if $_G_rc_lt_parse_options; then
       # save modified positional parameters for caller
-      func_quote_for_eval ${1+"$@"}
-      libtool_parse_options_result=$func_quote_for_eval_result
+      func_quote eval ${1+"$@"}
+      libtool_parse_options_result=$func_quote_result
     fi
-
-    $_G_rc_lt_parse_options
 }
 func_add_hook func_parse_options libtool_parse_options
 
@@ -2543,8 +2708,8 @@ libtool_validate_options ()
     }
 
     # Pass back the unparsed argument list
-    func_quote_for_eval ${1+"$@"}
-    libtool_validate_options_result=$func_quote_for_eval_result
+    func_quote eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_result
 }
 func_add_hook func_validate_options libtool_validate_options
 
@@ -3510,8 +3675,8 @@ func_mode_compile ()
       esac
     done
 
-    func_quote_for_eval "$libobj"
-    test "X$libobj" != "X$func_quote_for_eval_result" \
+    func_quote_arg pretty "$libobj"
+    test "X$libobj" != "X$func_quote_arg_result" \
       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
       && func_warning "libobj name '$libobj' may not contain shell special characters."
     func_dirname_and_basename "$obj" "/" ""
@@ -3584,8 +3749,8 @@ compiler."
 
     func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
     srcfile=$func_to_tool_file_result
-    func_quote_for_eval "$srcfile"
-    qsrcfile=$func_quote_for_eval_result
+    func_quote_arg pretty "$srcfile"
+    qsrcfile=$func_quote_arg_result
 
     # Only build a PIC object if we are building libtool libraries.
     if test yes = "$build_libtool_libs"; then
@@ -3740,7 +3905,8 @@ This mode accepts the following additional options:
   -prefer-non-pic   try to build non-PIC objects only
   -shared           do not build a '.o' file suitable for static linking
   -static           only build a '.o' file suitable for static linking
-  -Wc,FLAG          pass FLAG directly to the compiler
+  -Wc,FLAG
+  -Xcompiler FLAG   pass FLAG directly to the compiler
 
 COMPILE-COMMAND is a command to be used in creating a 'standard' object file
 from the given SOURCEFILE.
@@ -3846,6 +4012,8 @@ The following components of LINK-COMMAND are treated specially:
   -weak LIBNAME     declare that the target provides the LIBNAME interface
   -Wc,FLAG
   -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wa,FLAG
+  -Xassembler FLAG  pass linker-specific FLAG directly to the assembler
   -Wl,FLAG
   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
@@ -4188,8 +4356,8 @@ func_mode_install ()
        case $nonopt in *shtool*) :;; *) false;; esac
     then
       # Aesthetically quote it.
-      func_quote_for_eval "$nonopt"
-      install_prog="$func_quote_for_eval_result "
+      func_quote_arg pretty "$nonopt"
+      install_prog="$func_quote_arg_result "
       arg=$1
       shift
     else
@@ -4199,8 +4367,8 @@ func_mode_install ()
 
     # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
-    func_quote_for_eval "$arg"
-    func_append install_prog "$func_quote_for_eval_result"
+    func_quote_arg pretty "$arg"
+    func_append install_prog "$func_quote_arg_result"
     install_shared_prog=$install_prog
     case " $install_prog " in
       *[\\\ /]cp\ *) install_cp=: ;;
@@ -4257,12 +4425,12 @@ func_mode_install ()
       esac
 
       # Aesthetically quote the argument.
-      func_quote_for_eval "$arg"
-      func_append install_prog " $func_quote_for_eval_result"
+      func_quote_arg pretty "$arg"
+      func_append install_prog " $func_quote_arg_result"
       if test -n "$arg2"; then
-       func_quote_for_eval "$arg2"
+       func_quote_arg pretty "$arg2"
       fi
-      func_append install_shared_prog " $func_quote_for_eval_result"
+      func_append install_shared_prog " $func_quote_arg_result"
     done
 
     test -z "$install_prog" && \
@@ -4273,8 +4441,8 @@ func_mode_install ()
 
     if test -n "$install_override_mode" && $no_mode; then
       if $install_cp; then :; else
-       func_quote_for_eval "$install_override_mode"
-       func_append install_shared_prog " -m $func_quote_for_eval_result"
+       func_quote_arg pretty "$install_override_mode"
+       func_append install_shared_prog " -m $func_quote_arg_result"
       fi
     fi
 
@@ -4570,8 +4738,8 @@ func_mode_install ()
                relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
                $opt_quiet || {
-                 func_quote_for_expand "$relink_command"
-                 eval "func_echo $func_quote_for_expand_result"
+                 func_quote_arg expand,pretty "$relink_command"
+                 eval "func_echo $func_quote_arg_result"
                }
                if eval "$relink_command"; then :
                  else
@@ -5350,7 +5518,8 @@ else
   if test \"\$libtool_execute_magic\" != \"$magic\"; then
     file=\"\$0\""
 
-    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    func_quote_arg pretty "$ECHO"
+    qECHO=$func_quote_arg_result
     $ECHO "\
 
 # A function that is used when there is no print builtin or printf.
@@ -5360,7 +5529,7 @@ func_fallback_echo ()
 \$1
 _LTECHO_EOF'
 }
-    ECHO=\"$qECHO\"
+    ECHO=$qECHO
   fi
 
 # Very basic option parsing. These options are (a) specific to
@@ -6703,9 +6872,9 @@ func_mode_link ()
     while test "$#" -gt 0; do
       arg=$1
       shift
-      func_quote_for_eval "$arg"
-      qarg=$func_quote_for_eval_unquoted_result
-      func_append libtool_args " $func_quote_for_eval_result"
+      func_quote_arg pretty,unquoted "$arg"
+      qarg=$func_quote_arg_unquoted_result
+      func_append libtool_args " $func_quote_arg_result"
 
       # If the previous option needs an argument, assign it.
       if test -n "$prev"; then
@@ -6941,6 +7110,13 @@ func_mode_link ()
          prev=
          continue
          ;;
+       xassembler)
+         func_append compiler_flags " -Xassembler $qarg"
+         prev=
+         func_append compile_command " -Xassembler $qarg"
+         func_append finalize_command " -Xassembler $qarg"
+         continue
+         ;;
        xcclinker)
          func_append linker_flags " $qarg"
          func_append compiler_flags " $qarg"
@@ -7111,7 +7287,7 @@ func_mode_link ()
            # These systems don't actually have a C library (as such)
            test X-lc = "X$arg" && continue
            ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
            # Do not include libc due to us having libc/libc_r.
            test X-lc = "X$arg" && continue
            ;;
@@ -7131,7 +7307,7 @@ func_mode_link ()
          esac
        elif test X-lc_r = "X$arg"; then
         case $host in
-        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*)
           # Do not include libc_r directly, use -pthread flag.
           continue
           ;;
@@ -7161,8 +7337,20 @@ func_mode_link ()
        prev=xcompiler
        continue
        ;;
-
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+     # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199.
+     -pthread)
+       case $host in
+         *solaris2*) ;;
+         *)
+           case "$new_inherited_linker_flags " in
+               *" $arg "*) ;;
+               * ) func_append new_inherited_linker_flags " $arg" ;;
+           esac
+         ;;
+       esac
+       continue
+       ;;
+      -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \
       |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
        func_append compiler_flags " $arg"
        func_append compile_command " $arg"
@@ -7303,9 +7491,9 @@ func_mode_link ()
        save_ifs=$IFS; IFS=,
        for flag in $args; do
          IFS=$save_ifs
-          func_quote_for_eval "$flag"
-         func_append arg " $func_quote_for_eval_result"
-         func_append compiler_flags " $func_quote_for_eval_result"
+          func_quote_arg pretty "$flag"
+         func_append arg " $func_quote_arg_result"
+         func_append compiler_flags " $func_quote_arg_result"
        done
        IFS=$save_ifs
        func_stripname ' ' '' "$arg"
@@ -7319,16 +7507,21 @@ func_mode_link ()
        save_ifs=$IFS; IFS=,
        for flag in $args; do
          IFS=$save_ifs
-          func_quote_for_eval "$flag"
-         func_append arg " $wl$func_quote_for_eval_result"
-         func_append compiler_flags " $wl$func_quote_for_eval_result"
-         func_append linker_flags " $func_quote_for_eval_result"
+          func_quote_arg pretty "$flag"
+         func_append arg " $wl$func_quote_arg_result"
+         func_append compiler_flags " $wl$func_quote_arg_result"
+         func_append linker_flags " $func_quote_arg_result"
        done
        IFS=$save_ifs
        func_stripname ' ' '' "$arg"
        arg=$func_stripname_result
        ;;
 
+      -Xassembler)
+        prev=xassembler
+        continue
+        ;;
+
       -Xcompiler)
        prev=xcompiler
        continue
@@ -7346,8 +7539,8 @@ func_mode_link ()
 
       # -msg_* for osf cc
       -msg_*)
-       func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+       func_quote_arg pretty "$arg"
+       arg=$func_quote_arg_result
        ;;
 
       # Flags to be passed through unchanged, with rationale:
@@ -7370,12 +7563,13 @@ func_mode_link ()
       # -fuse-ld=*           Linker select flags for GCC
       # -static-*            direct GCC to link specific libraries statically
       # -fcilkplus           Cilk Plus language extension features for C/C++
+      # -Wa,*                Pass flags directly to the assembler
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
       -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
-      -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus)
-        func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+      -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*)
+        func_quote_arg pretty "$arg"
+       arg=$func_quote_arg_result
         func_append compile_command " $arg"
         func_append finalize_command " $arg"
         func_append compiler_flags " $arg"
@@ -7396,15 +7590,15 @@ func_mode_link ()
          continue
         else
          # Otherwise treat like 'Some other compiler flag' below
-         func_quote_for_eval "$arg"
-         arg=$func_quote_for_eval_result
+         func_quote_arg pretty "$arg"
+         arg=$func_quote_arg_result
         fi
        ;;
 
       # Some other compiler flag.
       -* | +*)
-        func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+        func_quote_arg pretty "$arg"
+       arg=$func_quote_arg_result
        ;;
 
       *.$objext)
@@ -7524,8 +7718,8 @@ func_mode_link ()
       *)
        # Unknown arguments in both finalize_command and compile_command need
        # to be aesthetically quoted because they are evaled later.
-       func_quote_for_eval "$arg"
-       arg=$func_quote_for_eval_result
+       func_quote_arg pretty "$arg"
+       arg=$func_quote_arg_result
        ;;
       esac # arg
 
@@ -8733,7 +8927,7 @@ func_mode_link ()
       test CXX = "$tagname" && {
         case $host_os in
         linux*)
-          case `$CC -V 2>&1 | sed 5q` in
+          case `$CC -V 2>&1 | $SED 5q` in
           *Sun\ C*) # Sun C++ 5.9
             func_suncc_cstd_abi
 
@@ -8906,7 +9100,7 @@ func_mode_link ()
          #
          case $version_type in
          # correct linux to gnu/linux during the next big refactor
-         darwin|freebsd-elf|linux|osf|windows|none)
+         darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none)
            func_arith $number_major + $number_minor
            current=$func_arith_result
            age=$number_minor
@@ -9000,7 +9194,7 @@ func_mode_link ()
          versuffix=.$current.$revision
          ;;
 
-       freebsd-elf)
+       freebsd-elf | midnightbsd-elf)
          func_arith $current - $age
          major=.$func_arith_result
          versuffix=$major.$age.$revision
@@ -9226,7 +9420,7 @@ func_mode_link ()
          *-*-netbsd*)
            # Don't link with libc until the a.out ld.so is fixed.
            ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*)
            # Do not include libc due to us having libc/libc_r.
            ;;
          *-*-sco3.2v5* | *-*-sco5v6*)
@@ -10037,8 +10231,8 @@ EOF
            for cmd in $concat_cmds; do
              IFS=$save_ifs
              $opt_quiet || {
-                 func_quote_for_expand "$cmd"
-                 eval "func_echo $func_quote_for_expand_result"
+                 func_quote_arg expand,pretty "$cmd"
+                 eval "func_echo $func_quote_arg_result"
              }
              $opt_dry_run || eval "$cmd" || {
                lt_exit=$?
@@ -10131,8 +10325,8 @@ EOF
          eval cmd=\"$cmd\"
          IFS=$save_ifs
          $opt_quiet || {
-           func_quote_for_expand "$cmd"
-           eval "func_echo $func_quote_for_expand_result"
+           func_quote_arg expand,pretty "$cmd"
+           eval "func_echo $func_quote_arg_result"
          }
          $opt_dry_run || eval "$cmd" || {
            lt_exit=$?
@@ -10606,12 +10800,13 @@ EOF
          elif eval var_value=\$$var; test -z "$var_value"; then
            relink_command="$var=; export $var; $relink_command"
          else
-           func_quote_for_eval "$var_value"
-           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+           func_quote_arg pretty "$var_value"
+           relink_command="$var=$func_quote_arg_result; export $var; $relink_command"
          fi
        done
-       relink_command="(cd `pwd`; $relink_command)"
-       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+       func_quote eval cd "`pwd`"
+       func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)"
+       relink_command=$func_quote_arg_unquoted_result
       fi
 
       # Only actually do things if not in dry run mode.
@@ -10851,13 +11046,15 @@ EOF
        elif eval var_value=\$$var; test -z "$var_value"; then
          relink_command="$var=; export $var; $relink_command"
        else
-         func_quote_for_eval "$var_value"
-         relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+         func_quote_arg pretty,unquoted "$var_value"
+         relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command"
        fi
       done
       # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      func_quote eval cd "`pwd`"
+      relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      func_quote_arg pretty,unquoted "$relink_command"
+      relink_command=$func_quote_arg_unquoted_result
       if test yes = "$hardcode_automatic"; then
        relink_command=
       fi
diff --git a/m4/ax_compile_check_sizeof.m4 b/m4/ax_compile_check_sizeof.m4
deleted file mode 100644 (file)
index 5705508..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-# ============================================================================
-#  https://www.gnu.org/software/autoconf-archive/ax_compile_check_sizeof.html
-# ============================================================================
-#
-# SYNOPSIS
-#
-#   AX_COMPILE_CHECK_SIZEOF(TYPE [, HEADERS [, EXTRA_SIZES...]])
-#
-# DESCRIPTION
-#
-#   This macro checks for the size of TYPE using compile checks, not run
-#   checks. You can supply extra HEADERS to look into. the check will cycle
-#   through 1 2 4 8 16 and any EXTRA_SIZES the user supplies. If a match is
-#   found, it will #define SIZEOF_`TYPE' to that value. Otherwise it will
-#   emit a configure time error indicating the size of the type could not be
-#   determined.
-#
-#   The trick is that C will not allow duplicate case labels. While this is
-#   valid C code:
-#
-#     switch (0) case 0: case 1:;
-#
-#   The following is not:
-#
-#     switch (0) case 0: case 0:;
-#
-#   Thus, the AC_TRY_COMPILE will fail if the currently tried size does not
-#   match.
-#
-#   Here is an example skeleton configure.in script, demonstrating the
-#   macro's usage:
-#
-#     AC_PROG_CC
-#     AC_CHECK_HEADERS(stddef.h unistd.h)
-#     AC_TYPE_SIZE_T
-#     AC_CHECK_TYPE(ssize_t, int)
-#
-#     headers='#ifdef HAVE_STDDEF_H
-#     #include <stddef.h>
-#     #endif
-#     #ifdef HAVE_UNISTD_H
-#     #include <unistd.h>
-#     #endif
-#     '
-#
-#     AX_COMPILE_CHECK_SIZEOF(char)
-#     AX_COMPILE_CHECK_SIZEOF(short)
-#     AX_COMPILE_CHECK_SIZEOF(int)
-#     AX_COMPILE_CHECK_SIZEOF(long)
-#     AX_COMPILE_CHECK_SIZEOF(unsigned char *)
-#     AX_COMPILE_CHECK_SIZEOF(void *)
-#     AX_COMPILE_CHECK_SIZEOF(size_t, $headers)
-#     AX_COMPILE_CHECK_SIZEOF(ssize_t, $headers)
-#     AX_COMPILE_CHECK_SIZEOF(ptrdiff_t, $headers)
-#     AX_COMPILE_CHECK_SIZEOF(off_t, $headers)
-#
-# LICENSE
-#
-#   Copyright (c) 2008 Kaveh Ghazi <ghazi@caip.rutgers.edu>
-#   Copyright (c) 2017 Reini Urban <rurban@cpan.org>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 7
-
-AU_ALIAS([AC_COMPILE_CHECK_SIZEOF], [AX_COMPILE_CHECK_SIZEOF])
-AC_DEFUN([AX_COMPILE_CHECK_SIZEOF],
-[changequote(<<, >>)dnl
-dnl The name to #define.
-define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
-dnl The cache variable name.
-define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
-changequote([, ])dnl
-AC_MSG_CHECKING(size of $1)
-AC_CACHE_VAL(AC_CV_NAME,
-[for ac_size in 4 8 1 2 16 $3 ; do # List sizes in rough order of prevalence.
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <sys/types.h>
-$2
-]], [[switch (0) case 0: case (sizeof ($1) == $ac_size):;]])], [AC_CV_NAME=$ac_size])
-  if test x$AC_CV_NAME != x ; then break; fi
-done
-])
-if test x$AC_CV_NAME = x ; then
-  AC_MSG_ERROR([cannot determine a size for $1])
-fi
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1])
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
index 60fe34fefb30e22847a7ce3a1240ba5787179780..dfa626da930eeb6a4079599714210031a4cb18bb 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_AMISSL], [
-AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)])
+AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL v5)])
 if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then
   if test "x$OPT_AMISSL" != xno; then
     ssl_msg=
-    if test "x$OPT_AMISSL" != "xno"; then
-      AC_MSG_RESULT(yes)
+    AC_COMPILE_IFELSE([
+      AC_LANG_PROGRAM([[
+        #include <libraries/amisslmaster.h>
+        #include <openssl/opensslv.h>
+      ]],[[
+        #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \
+            defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \
+            defined(PROTO_AMISSL_H)
+        return 0;
+        #else
+        #error not AmiSSL v5 / OpenSSL 3
+        #endif
+      ]])
+    ],[
+      AC_MSG_RESULT([yes])
       ssl_msg="AmiSSL"
       test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
       AMISSL_ENABLED=1
-      LIBS="-lamisslauto $LIBS"
+      OPENSSL_ENABLED=1
+      # Use AmiSSL's built-in ca bundle
+      check_for_ca_bundle=1
+      with_ca_fallback=yes
+      LIBS="-lamisslstubs -lamisslauto $LIBS"
       AC_DEFINE(USE_AMISSL, 1, [if AmiSSL is in use])
       AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])
-    else
-      AC_MSG_RESULT(no)
-    fi
+      AC_DEFINE_UNQUOTED(HAVE_OPENSSL3, 1, [Define to 1 if using OpenSSL 3 or later.])
+      AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
+                       openssl/pem.h openssl/ssl.h openssl/err.h)
+      dnl OpenSSLv3 marks the DES functions deprecated but we have no
+      dnl replacements (yet) so tell the compiler to not warn for them
+      dnl
+      dnl Ask OpenSSL to suppress the warnings.
+      CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED"
+    ],[
+      AC_MSG_RESULT([no])
+    ])
     test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
   else
     AC_MSG_RESULT(no)
index 86677e46af8e9f110533acb0208fad52c11d6d4a..317a9e955dbca7a7348e37d5ed795559ec3229d3 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_BEARSSL], [
index 988abdb8a7f58aaedf86c8e32e7dd1a363a16e7d..e39d978013c46f9f3ab18323f7ba7e6087abac8f 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
@@ -51,7 +53,6 @@ AC_DEFUN([CURL_CHECK_COMPILER], [
   CURL_CHECK_COMPILER_SGI_MIPS_C
   CURL_CHECK_COMPILER_SUNPRO_C
   CURL_CHECK_COMPILER_TINY_C
-  CURL_CHECK_COMPILER_WATCOM_C
   #
   if test "$compiler_id" = "unknown"; then
   cat <<_EOF 1>&2
@@ -106,7 +107,7 @@ AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [
     compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
     flags_dbg_yes="-g"
     flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
-    flags_opt_yes="-Os"
+    flags_opt_yes="-O2"
     flags_opt_off="-O0"
   else
     AC_MSG_RESULT([no])
@@ -360,36 +361,6 @@ AC_DEFUN([CURL_CHECK_COMPILER_TINY_C], [
   fi
 ])
 
-
-dnl CURL_CHECK_COMPILER_WATCOM_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is Watcom C.
-
-AC_DEFUN([CURL_CHECK_COMPILER_WATCOM_C], [
-  AC_MSG_CHECKING([if compiler is Watcom C])
-  CURL_CHECK_DEF([__WATCOMC__], [], [silent])
-  if test "$curl_cv_have_def___WATCOMC__" = "yes"; then
-    AC_MSG_RESULT([yes])
-    CURL_CHECK_DEF([__UNIX__], [], [silent])
-    if test "$curl_cv_have_def___UNIX__" = "yes"; then
-      compiler_id="WATCOM_UNIX_C"
-      flags_dbg_yes="-g2"
-      flags_opt_all="-O0 -O1 -O2 -O3"
-      flags_opt_yes="-O2"
-      flags_opt_off="-O0"
-    else
-      compiler_id="WATCOM_WINDOWS_C"
-      flags_dbg_yes=""
-      flags_opt_all=""
-      flags_opt_yes=""
-      flags_opt_off=""
-    fi
-  else
-    AC_MSG_RESULT([no])
-  fi
-])
-
-
 dnl CURL_CONVERT_INCLUDE_TO_ISYSTEM
 dnl -------------------------------------------------
 dnl Changes standard include paths present in CFLAGS
@@ -596,12 +567,14 @@ AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [
         dnl #147: declaration is incompatible with 'previous one'
         dnl #165: too few arguments in function call
         dnl #266: function declared implicitly
-        tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,147,165,266"
+        tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266"
         dnl Disable some remarks
         dnl #279: controlling expression is constant
         dnl #981: operands are evaluated in unspecified order
+        dnl #1025: zero extending result of unary operation
         dnl #1469: "cc" clobber ignored
-        tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
+        dnl #2259: non-pointer conversion from X to Y may lose significant bits
+        tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259"
         ;;
         #
       INTEL_WINDOWS_C)
@@ -640,18 +613,6 @@ AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [
         tmp_CFLAGS="$tmp_CFLAGS"
         ;;
         #
-      WATCOM_UNIX_C)
-        #
-        dnl Placeholder
-        tmp_CFLAGS="$tmp_CFLAGS"
-        ;;
-        #
-      WATCOM_WINDOWS_C)
-        #
-        dnl Placeholder
-        tmp_CFLAGS="$tmp_CFLAGS"
-        ;;
-        #
     esac
     #
     squeeze tmp_CPPFLAGS
@@ -899,6 +860,7 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
       GNU_C)
         #
         if test "$want_warnings" = "yes"; then
+          tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
           #
           dnl Do not enable -pedantic when cross-compiling with a gcc older
           dnl than 3.0, to avoid warnings from third party system headers.
@@ -1042,6 +1004,12 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
             fi
           fi
           #
+          dnl Only gcc 10 or later
+          if test "$compiler_num" -ge "1000"; then
+            CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [arith-conversion])
+            CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
+          fi
+          #
         fi
         #
         dnl Do not issue warnings for code in system include paths.
@@ -1062,10 +1030,6 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
             fi
           fi
         fi
-        dnl Only gcc 10 or later
-        if test "$compiler_num" -ge "1000"; then
-          CURL_ADD_COMPILER_WARNINGS([tmp_CFLAGS], [enum-conversion])
-        fi
         ;;
         #
       HP_UX_C)
@@ -1174,20 +1138,6 @@ AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
         fi
         ;;
         #
-      WATCOM_UNIX_C)
-        #
-        if test "$want_warnings" = "yes"; then
-          dnl Issue all warnings
-          tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
-        fi
-        ;;
-        #
-      WATCOM_WINDOWS_C)
-        #
-        dnl Placeholder
-        tmp_CFLAGS="$tmp_CFLAGS"
-        ;;
-        #
     esac
     #
     squeeze tmp_CPPFLAGS
index efe42495d15ded2addbc1527b171967db44d3c50..301e2d460bfc40f890f0514800b2ebd85a07593d 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
@@ -419,10 +421,8 @@ dnl Check for how to set a socket into non-blocking state.
 
 AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET], [
   AC_REQUIRE([CURL_CHECK_FUNC_FCNTL])dnl
-  AC_REQUIRE([CURL_CHECK_FUNC_IOCTL])dnl
   AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET])dnl
   AC_REQUIRE([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL])dnl
-  AC_REQUIRE([CURL_CHECK_FUNC_SETSOCKOPT])dnl
   #
   tst_method="unknown"
 
@@ -458,8 +458,7 @@ AC_DEFUN([CURL_CONFIGURE_SYMBOL_HIDING], [
   AC_MSG_CHECKING([whether hiding of library internal symbols will actually happen])
   CFLAG_CURL_SYMBOL_HIDING=""
   doing_symbol_hiding="no"
-  if test x"$curl_cv_native_windows" != "xyes" &&
-    test "$want_symbol_hiding" = "yes" &&
+  if test "$want_symbol_hiding" = "yes" &&
     test "$supports_symbol_hiding" = "yes"; then
     doing_symbol_hiding="yes"
     CFLAG_CURL_SYMBOL_HIDING="$symbol_hiding_CFLAGS"
@@ -487,9 +486,7 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
     clean_CPPFLAGS="$CPPFLAGS"
     clean_LDFLAGS="$LDFLAGS"
     clean_LIBS="$LIBS"
-    embedded_ares="unknown"
     configure_runpath=`pwd`
-    embedded_ares_builddir="$configure_runpath/ares"
     if test -n "$want_ares_path"; then
       dnl c-ares library path has been specified
       ARES_PCDIR="$want_ares_path/lib/pkgconfig"
@@ -511,31 +508,19 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
         ares_LIBS="-lcares"
       fi
     else
-      dnl c-ares library path has not been given
-      if test -d "$srcdir/ares"; then
-        dnl c-ares sources embedded in curl tree
-        embedded_ares="yes"
-        AC_CONFIG_SUBDIRS(ares)
-        dnl c-ares has installable configured header files, path
-        dnl inclusion fully done in makefiles for in-tree builds.
+      dnl c-ares path not specified, use defaults
+      CURL_CHECK_PKGCONFIG(libcares)
+      if test "$PKGCONFIG" != "no" ; then
+        ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
+        ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
+        ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
+        AC_MSG_NOTICE([pkg-config: ares_LIBS: "$ares_LIBS"])
+        AC_MSG_NOTICE([pkg-config: ares_LDFLAGS: "$ares_LDFLAGS"])
+        AC_MSG_NOTICE([pkg-config: ares_CPPFLAGS: "$ares_CPPFLAGS"])
+      else
         ares_CPPFLAGS=""
-        ares_LDFLAGS="-L$embedded_ares_builddir"
+        ares_LDFLAGS=""
         ares_LIBS="-lcares"
-      else
-        dnl c-ares path not specified, use defaults
-        CURL_CHECK_PKGCONFIG(libcares)
-        if test "$PKGCONFIG" != "no" ; then
-          ares_LIBS=`$PKGCONFIG --libs-only-l libcares`
-          ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares`
-          ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares`
-          AC_MSG_NOTICE([pkg-config: ares_LIBS: "$ares_LIBS"])
-          AC_MSG_NOTICE([pkg-config: ares_LDFLAGS: "$ares_LDFLAGS"])
-          AC_MSG_NOTICE([pkg-config: ares_CPPFLAGS: "$ares_CPPFLAGS"])
-        else
-          ares_CPPFLAGS=""
-          ares_LDFLAGS=""
-          ares_LIBS="-lcares"
-        fi
       fi
     fi
     #
@@ -543,38 +528,37 @@ AC_DEFUN([CURL_CHECK_LIB_ARES], [
     LDFLAGS="$clean_LDFLAGS $ares_LDFLAGS"
     LIBS="$ares_LIBS $clean_LIBS"
     #
-    if test "$embedded_ares" != "yes"; then
-      dnl check if c-ares new enough when not using an embedded
-      dnl source tree one which normally has not been built yet.
-      AC_MSG_CHECKING([that c-ares is good and recent enough])
-      AC_LINK_IFELSE([
-        AC_LANG_PROGRAM([[
+
+    dnl check if c-ares new enough
+    AC_MSG_CHECKING([that c-ares is good and recent enough])
+    AC_LINK_IFELSE([
+      AC_LANG_PROGRAM([[
 #include <ares.h>
-          /* set of dummy functions in case c-ares was built with debug */
-          void curl_dofree() { }
-          void curl_sclose() { }
-          void curl_domalloc() { }
-          void curl_docalloc() { }
-          void curl_socket() { }
-        ]],[[
-          ares_channel channel;
-          ares_cancel(channel); /* added in 1.2.0 */
-          ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
-          ares_dup(&channel, channel); /* added in 1.6.0 */
-        ]])
-      ],[
-        AC_MSG_RESULT([yes])
-      ],[
-        AC_MSG_RESULT([no])
-        AC_MSG_ERROR([c-ares library defective or too old])
-        dnl restore initial settings
-        CPPFLAGS="$clean_CPPFLAGS"
-        LDFLAGS="$clean_LDFLAGS"
-        LIBS="$clean_LIBS"
-        # prevent usage
-        want_ares="no"
-      ])
-    fi
+        /* set of dummy functions in case c-ares was built with debug */
+        void curl_dofree() { }
+        void curl_sclose() { }
+        void curl_domalloc() { }
+        void curl_docalloc() { }
+        void curl_socket() { }
+      ]],[[
+        ares_channel channel;
+        ares_cancel(channel); /* added in 1.2.0 */
+        ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
+        ares_dup(&channel, channel); /* added in 1.6.0 */
+      ]])
+    ],[
+      AC_MSG_RESULT([yes])
+    ],[
+      AC_MSG_RESULT([no])
+      AC_MSG_ERROR([c-ares library defective or too old])
+      dnl restore initial settings
+      CPPFLAGS="$clean_CPPFLAGS"
+      LDFLAGS="$clean_LDFLAGS"
+      LIBS="$clean_LIBS"
+      # prevent usage
+      want_ares="no"
+    ])
+
     if test "$want_ares" = "yes"; then
       dnl finally c-ares will be used
       AC_DEFINE(USE_ARES, 1, [Define to enable c-ares support])
index 1a5954871a5529e8dfbdbe2abf4ed8cb78bb46f6..49ab0b03f03d0357f9c7dc904dfa6a7ae476cdfa 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
@@ -264,27 +266,6 @@ curl_includes_socket="\
 ])
 
 
-dnl CURL_INCLUDES_STDIO
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when stdio.h is to be included.
-
-AC_DEFUN([CURL_INCLUDES_STDIO], [
-curl_includes_stdio="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-#  include <sys/types.h>
-#endif
-#ifdef HAVE_STDIO_H
-#  include <stdio.h>
-#endif
-/* includes end */"
-  AC_CHECK_HEADERS(
-    sys/types.h stdio.h,
-    [], [], [$curl_includes_stdio])
-])
-
-
 dnl CURL_INCLUDES_STDLIB
 dnl -------------------------------------------------
 dnl Set up variable with list of headers that must be
@@ -541,14 +522,24 @@ dnl included when bsdsocket.h is to be included.
 AC_DEFUN([CURL_INCLUDES_BSDSOCKET], [
 curl_includes_bsdsocket="\
 /* includes start */
-#ifdef HAVE_PROTO_BSDSOCKET_H
+#if defined(HAVE_PROTO_BSDSOCKET_H)
+#  define __NO_NET_API
+#  define __USE_INLINE__
 #  include <proto/bsdsocket.h>
-  struct Library *SocketBase = NULL;
+#  ifdef HAVE_SYS_IOCTL_H
+#    include <sys/ioctl.h>
+#  endif
+#  ifdef __amigaos4__
+struct SocketIFace *ISocket = NULL;
+#  else
+struct Library *SocketBase = NULL;
+#  endif
+#  define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
 #endif
 /* includes end */"
   AC_CHECK_HEADERS(
     proto/bsdsocket.h,
-    [], [], [      $curl_includes_bsdsocket])
+    [], [], [$curl_includes_bsdsocket])
 ])
 
 dnl CURL_INCLUDES_NETIF
@@ -783,7 +774,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
   AC_LINK_IFELSE([
     AC_LANG_PROGRAM([[
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_socket
     ]],[[
       if(0 != closesocket(0))
@@ -801,7 +791,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
     AC_MSG_CHECKING([if closesocket is prototyped])
     AC_EGREP_CPP([closesocket],[
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_socket
     ],[
       AC_MSG_RESULT([yes])
@@ -817,7 +806,6 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
         $curl_includes_socket
       ]],[[
         if(0 != closesocket(0))
@@ -869,6 +857,7 @@ dnl then HAVE_CLOSESOCKET_CAMEL will be defined.
 
 AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   #
   tst_links_closesocket_camel="unknown"
   tst_proto_closesocket_camel="unknown"
@@ -878,6 +867,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
   AC_MSG_CHECKING([if CloseSocket can be linked])
   AC_LINK_IFELSE([
     AC_LANG_PROGRAM([[
+      $curl_includes_bsdsocket
       $curl_includes_sys_socket
     ]],[[
       if(0 != CloseSocket(0))
@@ -894,6 +884,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
   if test "$tst_links_closesocket_camel" = "yes"; then
     AC_MSG_CHECKING([if CloseSocket is prototyped])
     AC_EGREP_CPP([CloseSocket],[
+      $curl_includes_bsdsocket
       $curl_includes_sys_socket
     ],[
       AC_MSG_RESULT([yes])
@@ -908,6 +899,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOSESOCKET_CAMEL], [
     AC_MSG_CHECKING([if CloseSocket is compilable])
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
       ]],[[
         if(0 != CloseSocket(0))
@@ -960,6 +952,7 @@ dnl HAVE_CONNECT will be defined.
 AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   AC_REQUIRE([CURL_INCLUDES_SOCKET])dnl
   #
   tst_links_connect="unknown"
@@ -1007,7 +1000,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CONNECT], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
         $curl_includes_socket
       ]],[[
@@ -1149,7 +1142,7 @@ AC_DEFUN([CURL_CHECK_FUNC_FCNTL_O_NONBLOCK], [
   tst_allow_fcntl_o_nonblock="unknown"
   #
   case $host_os in
-    sunos4* | aix3* | beos*)
+    sunos4* | aix3*)
       dnl O_NONBLOCK does not work on these platforms
       curl_disallow_fcntl_o_nonblock="yes"
       ;;
@@ -2190,7 +2183,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_netdb
       ]],[[
         if(0 != gethostbyname(0))
@@ -2279,6 +2272,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
       AC_COMPILE_IFELSE([
         AC_LANG_PROGRAM([[
           $curl_includes_netdb
+          $curl_includes_bsdsocket
         ]],[[
           if(0 != gethostbyname_r(0, 0, 0))
             return 1;
@@ -2297,6 +2291,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
       AC_COMPILE_IFELSE([
         AC_LANG_PROGRAM([[
           $curl_includes_netdb
+          $curl_includes_bsdsocket
         ]],[[
           if(0 != gethostbyname_r(0, 0, 0, 0, 0))
             return 1;
@@ -2315,6 +2310,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTBYNAME_R], [
       AC_COMPILE_IFELSE([
         AC_LANG_PROGRAM([[
           $curl_includes_netdb
+          $curl_includes_bsdsocket
         ]],[[
           if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0))
             return 1;
@@ -2384,9 +2380,9 @@ dnl HAVE_GETHOSTNAME will be defined.
 
 AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
   AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
-  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   #
   tst_links_gethostname="unknown"
   tst_proto_gethostname="unknown"
@@ -2397,8 +2393,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
   AC_LINK_IFELSE([
     AC_LANG_PROGRAM([[
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_unistd
+      $curl_includes_bsdsocket
     ]],[[
       if(0 != gethostname(0, 0))
         return 1;
@@ -2415,8 +2411,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
     AC_MSG_CHECKING([if gethostname is prototyped])
     AC_EGREP_CPP([gethostname],[
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
       $curl_includes_unistd
+      $curl_includes_bsdsocket
     ],[
       AC_MSG_RESULT([yes])
       tst_proto_gethostname="yes"
@@ -2431,8 +2427,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
         $curl_includes_unistd
+        $curl_includes_bsdsocket
       ]],[[
         if(0 != gethostname(0, 0))
           return 1;
@@ -2455,8 +2451,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GETHOSTNAME], [
           AC_COMPILE_IFELSE([
             AC_LANG_PROGRAM([[
               $curl_includes_winsock2
-      $curl_includes_bsdsocket
               $curl_includes_unistd
+              $curl_includes_bsdsocket
               $curl_preprocess_callconv
               extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2);
             ]],[[
@@ -3459,93 +3455,6 @@ AC_DEFUN([CURL_CHECK_FUNC_INET_PTON], [
 ])
 
 
-dnl CURL_CHECK_FUNC_IOCTL
-dnl -------------------------------------------------
-dnl Verify if ioctl is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_ioctl, then
-dnl HAVE_IOCTL will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_IOCTL], [
-  AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
-  #
-  tst_links_ioctl="unknown"
-  tst_proto_ioctl="unknown"
-  tst_compi_ioctl="unknown"
-  tst_allow_ioctl="unknown"
-  #
-  AC_MSG_CHECKING([if ioctl can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([ioctl])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_ioctl="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_ioctl="no"
-  ])
-  #
-  if test "$tst_links_ioctl" = "yes"; then
-    AC_MSG_CHECKING([if ioctl is prototyped])
-    AC_EGREP_CPP([ioctl],[
-      $curl_includes_stropts
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_ioctl="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_ioctl="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_ioctl" = "yes"; then
-    AC_MSG_CHECKING([if ioctl is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_stropts
-      ]],[[
-        if(0 != ioctl(0, 0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_ioctl="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_ioctl="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_ioctl" = "yes"; then
-    AC_MSG_CHECKING([if ioctl usage allowed])
-    if test "x$curl_disallow_ioctl" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_ioctl="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_ioctl="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if ioctl might be used])
-  if test "$tst_links_ioctl" = "yes" &&
-     test "$tst_proto_ioctl" = "yes" &&
-     test "$tst_compi_ioctl" = "yes" &&
-     test "$tst_allow_ioctl" = "yes"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_IOCTL, 1,
-      [Define to 1 if you have the ioctl function.])
-    curl_cv_func_ioctl="yes"
-    CURL_CHECK_FUNC_IOCTL_FIONBIO
-    CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_ioctl="no"
-  fi
-])
-
-
 dnl CURL_CHECK_FUNC_IOCTL_FIONBIO
 dnl -------------------------------------------------
 dnl Verify if ioctl with the FIONBIO command is
@@ -3679,7 +3588,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
   AC_LINK_IFELSE([
     AC_LANG_PROGRAM([[
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
     ]],[[
       if(0 != ioctlsocket(0, 0, 0))
         return 1;
@@ -3696,7 +3604,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
     AC_MSG_CHECKING([if ioctlsocket is prototyped])
     AC_EGREP_CPP([ioctlsocket],[
       $curl_includes_winsock2
-      $curl_includes_bsdsocket
     ],[
       AC_MSG_RESULT([yes])
       tst_proto_ioctlsocket="yes"
@@ -3711,7 +3618,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
       ]],[[
         if(0 != ioctlsocket(0, 0, 0))
           return 1;
@@ -3770,7 +3676,6 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_FIONBIO], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
       ]],[[
         int flags = 0;
         if(0 != ioctlsocket(0, FIONBIO, &flags))
@@ -3819,7 +3724,7 @@ dnl shell variable curl_disallow_ioctlsocket_camel,
 dnl then HAVE_IOCTLSOCKET_CAMEL will be defined.
 
 AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
-  AC_REQUIRE([CURL_INCLUDES_STROPTS])dnl
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   #
   tst_links_ioctlsocket_camel="unknown"
   tst_proto_ioctlsocket_camel="unknown"
@@ -3828,7 +3733,11 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
   #
   AC_MSG_CHECKING([if IoctlSocket can be linked])
   AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([IoctlSocket])
+    AC_LANG_PROGRAM([[
+      $curl_includes_bsdsocket
+    ]],[[
+      IoctlSocket(0, 0, 0);
+    ]])
   ],[
     AC_MSG_RESULT([yes])
     tst_links_ioctlsocket_camel="yes"
@@ -3840,7 +3749,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
   if test "$tst_links_ioctlsocket_camel" = "yes"; then
     AC_MSG_CHECKING([if IoctlSocket is prototyped])
     AC_EGREP_CPP([IoctlSocket],[
-      $curl_includes_stropts
+      $curl_includes_bsdsocket
     ],[
       AC_MSG_RESULT([yes])
       tst_proto_ioctlsocket_camel="yes"
@@ -3854,7 +3763,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
     AC_MSG_CHECKING([if IoctlSocket is compilable])
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
-        $curl_includes_stropts
+        $curl_includes_bsdsocket
       ]],[[
         if(0 != IoctlSocket(0, 0, 0))
           return 1;
@@ -3903,6 +3812,7 @@ dnl can be compiled, and seems to work. If all of these are
 dnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.
 
 AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
+  AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
   #
   tst_compi_ioctlsocket_camel_fionbio="unknown"
   tst_allow_ioctlsocket_camel_fionbio="unknown"
@@ -3911,7 +3821,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
     AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
-        $curl_includes_stropts
+        $curl_includes_bsdsocket
       ]],[[
         long flags = 0;
         if(0 != IoctlSocket(0, FIONBIO, &flags))
@@ -4073,122 +3983,6 @@ AC_DEFUN([CURL_CHECK_FUNC_LISTXATTR], [
 ])
 
 
-dnl CURL_CHECK_FUNC_LOCALTIME_R
-dnl -------------------------------------------------
-dnl Verify if localtime_r is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable curl_disallow_localtime_r, then
-dnl HAVE_LOCALTIME_R will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_LOCALTIME_R], [
-  AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
-  AC_REQUIRE([CURL_INCLUDES_TIME])dnl
-  #
-  tst_links_localtime_r="unknown"
-  tst_proto_localtime_r="unknown"
-  tst_compi_localtime_r="unknown"
-  tst_works_localtime_r="unknown"
-  tst_allow_localtime_r="unknown"
-  #
-  AC_MSG_CHECKING([if localtime_r can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([localtime_r])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_localtime_r="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_localtime_r="no"
-  ])
-  #
-  if test "$tst_links_localtime_r" = "yes"; then
-    AC_MSG_CHECKING([if localtime_r is prototyped])
-    AC_EGREP_CPP([localtime_r],[
-      $curl_includes_time
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_localtime_r="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_localtime_r="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_localtime_r" = "yes"; then
-    AC_MSG_CHECKING([if localtime_r is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_time
-      ]],[[
-        if(0 != localtime_r(0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_localtime_r="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_localtime_r="no"
-    ])
-  fi
-  #
-  dnl only do runtime verification when not cross-compiling
-  if test "x$cross_compiling" != "xyes" &&
-    test "$tst_compi_localtime_r" = "yes"; then
-    AC_MSG_CHECKING([if localtime_r seems to work])
-    CURL_RUN_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_stdlib
-        $curl_includes_time
-      ]],[[
-        time_t clock = 1170352587;
-        struct tm *tmp = 0;
-        struct tm result;
-        tmp = localtime_r(&clock, &result);
-        if(tmp)
-          exit(0);
-        else
-          exit(1);
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_works_localtime_r="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_works_localtime_r="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_localtime_r" = "yes" &&
-    test "$tst_works_localtime_r" != "no"; then
-    AC_MSG_CHECKING([if localtime_r usage allowed])
-    if test "x$curl_disallow_localtime_r" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_localtime_r="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_localtime_r="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if localtime_r might be used])
-  if test "$tst_links_localtime_r" = "yes" &&
-     test "$tst_proto_localtime_r" = "yes" &&
-     test "$tst_compi_localtime_r" = "yes" &&
-     test "$tst_allow_localtime_r" = "yes" &&
-     test "$tst_works_localtime_r" != "no"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_LOCALTIME_R, 1,
-      [Define to 1 if you have a working localtime_r function.])
-    curl_cv_func_localtime_r="yes"
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_localtime_r="no"
-  fi
-])
-
-
 dnl CURL_CHECK_FUNC_MEMRCHR
 dnl -------------------------------------------------
 dnl Verify if memrchr is available, prototyped, and
@@ -4297,10 +4091,7 @@ AC_DEFUN([CURL_CHECK_FUNC_MEMRCHR], [
 dnl CURL_CHECK_FUNC_POLL
 dnl -------------------------------------------------
 dnl Verify if poll is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable curl_disallow_poll, then
-dnl HAVE_POLL will be defined.
+dnl be compiled and seems to work.
 
 AC_DEFUN([CURL_CHECK_FUNC_POLL], [
   AC_REQUIRE([CURL_INCLUDES_STDLIB])dnl
@@ -4430,8 +4221,6 @@ AC_DEFUN([CURL_CHECK_FUNC_POLL], [
      test "$tst_allow_poll" = "yes" &&
      test "$tst_works_poll" != "no"; then
     AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_POLL, 1,
-      [Define to 1 if you have a working poll function.])
     AC_DEFINE_UNQUOTED(HAVE_POLL_FINE, 1,
       [If you have a fine poll])
     curl_cv_func_poll="yes"
@@ -4564,104 +4353,6 @@ AC_DEFUN([CURL_CHECK_FUNC_REMOVEXATTR], [
 ])
 
 
-dnl CURL_CHECK_FUNC_SETSOCKOPT
-dnl -------------------------------------------------
-dnl Verify if setsockopt is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_setsockopt, then
-dnl HAVE_SETSOCKOPT will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT], [
-  AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
-  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
-  #
-  tst_links_setsockopt="unknown"
-  tst_proto_setsockopt="unknown"
-  tst_compi_setsockopt="unknown"
-  tst_allow_setsockopt="unknown"
-  #
-  AC_MSG_CHECKING([if setsockopt can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_PROGRAM([[
-      $curl_includes_winsock2
-      $curl_includes_bsdsocket
-      $curl_includes_sys_socket
-    ]],[[
-      if(0 != setsockopt(0, 0, 0, 0, 0))
-        return 1;
-    ]])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_setsockopt="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_setsockopt="no"
-  ])
-  #
-  if test "$tst_links_setsockopt" = "yes"; then
-    AC_MSG_CHECKING([if setsockopt is prototyped])
-    AC_EGREP_CPP([setsockopt],[
-      $curl_includes_winsock2
-      $curl_includes_bsdsocket
-      $curl_includes_sys_socket
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_setsockopt="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_setsockopt="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_setsockopt" = "yes"; then
-    AC_MSG_CHECKING([if setsockopt is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_winsock2
-      $curl_includes_bsdsocket
-        $curl_includes_sys_socket
-      ]],[[
-        if(0 != setsockopt(0, 0, 0, 0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_setsockopt="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_setsockopt="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_setsockopt" = "yes"; then
-    AC_MSG_CHECKING([if setsockopt usage allowed])
-    if test "x$curl_disallow_setsockopt" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_setsockopt="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_setsockopt="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if setsockopt might be used])
-  if test "$tst_links_setsockopt" = "yes" &&
-     test "$tst_proto_setsockopt" = "yes" &&
-     test "$tst_compi_setsockopt" = "yes" &&
-     test "$tst_allow_setsockopt" = "yes"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT, 1,
-      [Define to 1 if you have the setsockopt function.])
-    curl_cv_func_setsockopt="yes"
-    CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_setsockopt="no"
-  fi
-])
-
-
 dnl CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
 dnl -------------------------------------------------
 dnl Verify if setsockopt with the SO_NONBLOCK command is
@@ -4679,7 +4370,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
       ]],[[
         if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
@@ -5261,7 +4952,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SOCKET], [
     AC_COMPILE_IFELSE([
       AC_LANG_PROGRAM([[
         $curl_includes_winsock2
-      $curl_includes_bsdsocket
+        $curl_includes_bsdsocket
         $curl_includes_sys_socket
         $curl_includes_socket
       ]],[[
@@ -5652,8 +5343,8 @@ dnl -------------------------------------------------
 dnl Verify if strerror_r is available, prototyped, can be compiled and
 dnl seems to work. If all of these are true, and usage has not been
 dnl previously disallowed with shell variable curl_disallow_strerror_r,
-dnl then HAVE_STRERROR_R and STRERROR_R_TYPE_ARG3 will be defined, as
-dnl well as one of HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
+dnl then HAVE_STRERROR_R will be defined, as well as one of
+dnl HAVE_GLIBC_STRERROR_R or HAVE_POSIX_STRERROR_R.
 dnl
 dnl glibc-style strerror_r:
 dnl
@@ -5887,16 +5578,12 @@ AC_DEFUN([CURL_CHECK_FUNC_STRERROR_R], [
         [Define to 1 if you have the strerror_r function.])
       AC_DEFINE_UNQUOTED(HAVE_GLIBC_STRERROR_R, 1,
         [Define to 1 if you have a working glibc-style strerror_r function.])
-      AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_glibc_strerror_r_type_arg3,
-        [Define to the type of arg 3 for strerror_r.])
     fi
     if test "$tst_posix_strerror_r" = "yes"; then
       AC_DEFINE_UNQUOTED(HAVE_STRERROR_R, 1,
         [Define to 1 if you have the strerror_r function.])
       AC_DEFINE_UNQUOTED(HAVE_POSIX_STRERROR_R, 1,
         [Define to 1 if you have a working POSIX-style strerror_r function.])
-      AC_DEFINE_UNQUOTED(STRERROR_R_TYPE_ARG3, $tst_posix_strerror_r_type_arg3,
-        [Define to the type of arg 3 for strerror_r.])
     fi
     curl_cv_func_strerror_r="yes"
   else
@@ -5997,261 +5684,6 @@ AC_DEFUN([CURL_CHECK_FUNC_STRICMP], [
 ])
 
 
-dnl CURL_CHECK_FUNC_STRNCMPI
-dnl -------------------------------------------------
-dnl Verify if strncmpi is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_strncmpi, then
-dnl HAVE_STRNCMPI will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_STRNCMPI], [
-  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
-  #
-  tst_links_strncmpi="unknown"
-  tst_proto_strncmpi="unknown"
-  tst_compi_strncmpi="unknown"
-  tst_allow_strncmpi="unknown"
-  #
-  AC_MSG_CHECKING([if strncmpi can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([strncmpi])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_strncmpi="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_strncmpi="no"
-  ])
-  #
-  if test "$tst_links_strncmpi" = "yes"; then
-    AC_MSG_CHECKING([if strncmpi is prototyped])
-    AC_EGREP_CPP([strncmpi],[
-      $curl_includes_string
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_strncmpi="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_strncmpi="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_strncmpi" = "yes"; then
-    AC_MSG_CHECKING([if strncmpi is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_string
-      ]],[[
-        if(0 != strncmpi(0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_strncmpi="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_strncmpi="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_strncmpi" = "yes"; then
-    AC_MSG_CHECKING([if strncmpi usage allowed])
-    if test "x$curl_disallow_strncmpi" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_strncmpi="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_strncmpi="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if strncmpi might be used])
-  if test "$tst_links_strncmpi" = "yes" &&
-     test "$tst_proto_strncmpi" = "yes" &&
-     test "$tst_compi_strncmpi" = "yes" &&
-     test "$tst_allow_strncmpi" = "yes"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_STRNCMPI, 1,
-      [Define to 1 if you have the strncmpi function.])
-    curl_cv_func_strncmpi="yes"
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_strncmpi="no"
-  fi
-])
-
-
-dnl CURL_CHECK_FUNC_STRNICMP
-dnl -------------------------------------------------
-dnl Verify if strnicmp is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_strnicmp, then
-dnl HAVE_STRNICMP will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_STRNICMP], [
-  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
-  #
-  tst_links_strnicmp="unknown"
-  tst_proto_strnicmp="unknown"
-  tst_compi_strnicmp="unknown"
-  tst_allow_strnicmp="unknown"
-  #
-  AC_MSG_CHECKING([if strnicmp can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([strnicmp])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_strnicmp="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_strnicmp="no"
-  ])
-  #
-  if test "$tst_links_strnicmp" = "yes"; then
-    AC_MSG_CHECKING([if strnicmp is prototyped])
-    AC_EGREP_CPP([strnicmp],[
-      $curl_includes_string
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_strnicmp="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_strnicmp="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_strnicmp" = "yes"; then
-    AC_MSG_CHECKING([if strnicmp is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_string
-      ]],[[
-        if(0 != strnicmp(0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_strnicmp="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_strnicmp="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_strnicmp" = "yes"; then
-    AC_MSG_CHECKING([if strnicmp usage allowed])
-    if test "x$curl_disallow_strnicmp" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_strnicmp="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_strnicmp="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if strnicmp might be used])
-  if test "$tst_links_strnicmp" = "yes" &&
-     test "$tst_proto_strnicmp" = "yes" &&
-     test "$tst_compi_strnicmp" = "yes" &&
-     test "$tst_allow_strnicmp" = "yes"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_STRNICMP, 1,
-      [Define to 1 if you have the strnicmp function.])
-    curl_cv_func_strnicmp="yes"
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_strnicmp="no"
-  fi
-])
-
-
-dnl CURL_CHECK_FUNC_STRSTR
-dnl -------------------------------------------------
-dnl Verify if strstr is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_strstr, then
-dnl HAVE_STRSTR will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_STRSTR], [
-  AC_REQUIRE([CURL_INCLUDES_STRING])dnl
-  #
-  tst_links_strstr="unknown"
-  tst_proto_strstr="unknown"
-  tst_compi_strstr="unknown"
-  tst_allow_strstr="unknown"
-  #
-  AC_MSG_CHECKING([if strstr can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([strstr])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_strstr="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_strstr="no"
-  ])
-  #
-  if test "$tst_links_strstr" = "yes"; then
-    AC_MSG_CHECKING([if strstr is prototyped])
-    AC_EGREP_CPP([strstr],[
-      $curl_includes_string
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_strstr="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_strstr="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_strstr" = "yes"; then
-    AC_MSG_CHECKING([if strstr is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_string
-      ]],[[
-        if(0 != strstr(0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_strstr="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_strstr="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_strstr" = "yes"; then
-    AC_MSG_CHECKING([if strstr usage allowed])
-    if test "x$curl_disallow_strstr" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_strstr="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_strstr="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if strstr might be used])
-  if test "$tst_links_strstr" = "yes" &&
-     test "$tst_proto_strstr" = "yes" &&
-     test "$tst_compi_strstr" = "yes" &&
-     test "$tst_allow_strstr" = "yes"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_STRSTR, 1,
-      [Define to 1 if you have the strstr function.])
-    curl_cv_func_strstr="yes"
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_strstr="no"
-  fi
-])
-
-
 dnl CURL_CHECK_FUNC_STRTOK_R
 dnl -------------------------------------------------
 dnl Verify if strtok_r is available, prototyped, and
@@ -6421,91 +5853,6 @@ AC_DEFUN([CURL_CHECK_FUNC_STRTOLL], [
   fi
 ])
 
-
-dnl CURL_CHECK_FUNC_WRITEV
-dnl -------------------------------------------------
-dnl Verify if writev is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable curl_disallow_writev, then
-dnl HAVE_WRITEV will be defined.
-
-AC_DEFUN([CURL_CHECK_FUNC_WRITEV], [
-  AC_REQUIRE([CURL_INCLUDES_SYS_UIO])dnl
-  #
-  tst_links_writev="unknown"
-  tst_proto_writev="unknown"
-  tst_compi_writev="unknown"
-  tst_allow_writev="unknown"
-  #
-  AC_MSG_CHECKING([if writev can be linked])
-  AC_LINK_IFELSE([
-    AC_LANG_FUNC_LINK_TRY([writev])
-  ],[
-    AC_MSG_RESULT([yes])
-    tst_links_writev="yes"
-  ],[
-    AC_MSG_RESULT([no])
-    tst_links_writev="no"
-  ])
-  #
-  if test "$tst_links_writev" = "yes"; then
-    AC_MSG_CHECKING([if writev is prototyped])
-    AC_EGREP_CPP([writev],[
-      $curl_includes_sys_uio
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_proto_writev="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_proto_writev="no"
-    ])
-  fi
-  #
-  if test "$tst_proto_writev" = "yes"; then
-    AC_MSG_CHECKING([if writev is compilable])
-    AC_COMPILE_IFELSE([
-      AC_LANG_PROGRAM([[
-        $curl_includes_sys_uio
-      ]],[[
-        if(0 != writev(0, 0, 0))
-          return 1;
-      ]])
-    ],[
-      AC_MSG_RESULT([yes])
-      tst_compi_writev="yes"
-    ],[
-      AC_MSG_RESULT([no])
-      tst_compi_writev="no"
-    ])
-  fi
-  #
-  if test "$tst_compi_writev" = "yes"; then
-    AC_MSG_CHECKING([if writev usage allowed])
-    if test "x$curl_disallow_writev" != "xyes"; then
-      AC_MSG_RESULT([yes])
-      tst_allow_writev="yes"
-    else
-      AC_MSG_RESULT([no])
-      tst_allow_writev="no"
-    fi
-  fi
-  #
-  AC_MSG_CHECKING([if writev might be used])
-  if test "$tst_links_writev" = "yes" &&
-     test "$tst_proto_writev" = "yes" &&
-     test "$tst_compi_writev" = "yes" &&
-     test "$tst_allow_writev" = "yes"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE_UNQUOTED(HAVE_WRITEV, 1,
-      [Define to 1 if you have the writev function.])
-    curl_cv_func_writev="yes"
-  else
-    AC_MSG_RESULT([no])
-    curl_cv_func_writev="no"
-  fi
-])
-
 dnl CURL_RUN_IFELSE
 dnl -------------------------------------------------
 dnl Wrapper macro to use instead of AC_RUN_IFELSE. It
@@ -6515,16 +5862,17 @@ dnl changes contained within this macro.
 
 AC_DEFUN([CURL_RUN_IFELSE], [
    case $host_os in
-     darwin*) library_path_var=DYLD_LIBRARY_PATH ;;
-     *)       library_path_var=LD_LIBRARY_PATH ;;
+     darwin*)
+      AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+     ;;
+     *)
+      old=$LD_LIBRARY_PATH
+      LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old
+      export LD_LIBRARY_PATH
+      AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+      LD_LIBRARY_PATH=$old # restore
+     ;;
    esac
-
-   eval "old=$$library_path_var"
-   eval "$library_path_var=\$CURL_LIBRARY_PATH:\$old"
-
-   eval "export $library_path_var"
-   AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
-   eval "$library_path_var=\$old" # restore
 ])
 
 dnl CURL_COVERAGE
@@ -6561,7 +5909,92 @@ AC_DEFUN([CURL_COVERAGE],[
     fi
 
     CPPFLAGS="$CPPFLAGS -DNDEBUG"
-    CFLAGS="$CLAGS -O0 -g -fprofile-arcs -ftest-coverage"
+    CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage"
     LIBS="$LIBS -lgcov"
   fi
 ])
+
+dnl CURL_ATOMIC
+dnl -------------------------------------------------------------
+dnl Check if _Atomic works. But only check if stdatomic.h exists.
+dnl
+AC_DEFUN([CURL_ATOMIC],[
+  AC_CHECK_HEADERS(stdatomic.h, [
+    AC_MSG_CHECKING([if _Atomic is available])
+    AC_LINK_IFELSE([
+      AC_LANG_PROGRAM([[
+        $curl_includes_unistd
+      ]],[[
+        _Atomic int i = 0;
+        i = 4;  // Force an atomic-write operation.
+      ]])
+    ],[
+      AC_MSG_RESULT([yes])
+      AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
+        [Define to 1 if you have _Atomic support.])
+      tst_atomic="yes"
+    ],[
+      AC_MSG_RESULT([no])
+      tst_atomic="no"
+    ])
+  ])
+])
+
+# Rewrite inspired by the functionality once provided by
+# AX_COMPILE_CHECK_SIZEOF. Uses the switch() "trick" to find the size of the
+# given type.
+#
+# This code fails to compile:
+#
+#   switch() { case 0: case 0: }
+#
+# By making the second case number a boolean check, it fails to compile the
+# test code when the boolean is false and thus creating a zero, making it a
+# duplicated case label. If the boolean equals true, it becomes a one, the
+# code compiles and we know it was a match.
+#
+# The check iterates over all possible sizes and stops as soon it compiles
+# error-free.
+#
+# Usage:
+#
+#   CURL_SIZEOF(TYPE, [HEADERS])
+#
+
+AC_DEFUN([CURL_SIZEOF], [
+  dnl The #define name to make autoheader put the name in curl_config.h.in
+  define(TYPE, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl
+
+  AC_MSG_CHECKING(size of $1)
+  r=0
+  dnl Check the sizes in a reasonable order
+  for typesize in 8 4 2 16 1; do
+     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+$2
+]],
+     [switch(0) {
+       case 0:
+       case (sizeof($1) == $typesize):;
+     }
+    ]) ],
+      [
+       r=$typesize],
+      [
+       r=0])
+    dnl get out of the loop once matched
+    if test $r -gt 0; then
+      break;
+    fi
+  done
+  if test $r -eq 0; then
+    AC_MSG_ERROR([Failed to find size of $1])
+  fi
+  AC_MSG_RESULT($r)
+  dnl lowercase and underscore instead of space
+  tname=$(echo "ac_cv_sizeof_$1" | tr A-Z a-z | tr " " "_")
+  eval "$tname=$r"
+
+  AC_DEFINE_UNQUOTED(TYPE, [$r], [Size of $1 in number of bytes])
+
+])
index f0b80abe875f665be7813e1274d3859c22095c08..d6f4a970829debdc0b593295d98041e2a9478a3c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 dnl ----------------------------------------------------
@@ -37,7 +39,7 @@ if test "x$OPT_GNUTLS" != xno; then
     addcflags=""
 
     if test "x$OPT_GNUTLS" = "xyes"; then
-      dnl this is with no partiular path given
+      dnl this is with no particular path given
       CURL_CHECK_PKGCONFIG(gnutls)
 
       if test "$PKGCONFIG" != "no" ; then
index 4c91cba36f5b4970d296914aa4dcea34964d22e9..022d14ea25f6dd939ba838a8f0654e55cc1ecb6a 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 dnl ----------------------------------------------------
diff --git a/m4/curl-mesalink.m4 b/m4/curl-mesalink.m4
deleted file mode 100644 (file)
index 0f588a9..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2021, 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.
-#
-#***************************************************************************
-
-AC_DEFUN([CURL_WITH_MESALINK], [
-dnl ----------------------------------------------------
-dnl check for MesaLink
-dnl ----------------------------------------------------
-
-if test "x$OPT_MESALINK" != xno; then
-  _cppflags=$CPPFLAGS
-  _ldflags=$LDFLAGS
-  ssl_msg=
-
-  if test X"$OPT_MESALINK" != Xno; then
-
-    if test "$OPT_MESALINK" = "yes"; then
-      OPT_MESALINK=""
-    fi
-
-    if test -z "$OPT_MESALINK" ; then
-      dnl check for lib first without setting any new path
-
-      AC_CHECK_LIB(mesalink, mesalink_library_init,
-      dnl libmesalink found, set the variable
-       [
-         AC_DEFINE(USE_MESALINK, 1, [if MesaLink is enabled])
-         AC_SUBST(USE_MESALINK, [1])
-         MESALINK_ENABLED=1
-         USE_MESALINK="yes"
-         ssl_msg="MesaLink"
-        test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-        ])
-    fi
-
-    addld=""
-    addlib=""
-    addcflags=""
-    mesalinklib=""
-
-    if test "x$USE_MESALINK" != "xyes"; then
-      dnl add the path and test again
-      addld=-L$OPT_MESALINK/lib$libsuff
-      addcflags=-I$OPT_MESALINK/include
-      mesalinklib=$OPT_MESALINK/lib$libsuff
-
-      LDFLAGS="$LDFLAGS $addld"
-      if test "$addcflags" != "-I/usr/include"; then
-         CPPFLAGS="$CPPFLAGS $addcflags"
-      fi
-
-      AC_CHECK_LIB(mesalink, mesalink_library_init,
-       [
-       AC_DEFINE(USE_MESALINK, 1, [if MesaLink is enabled])
-       AC_SUBST(USE_MESALINK, [1])
-       MESALINK_ENABLED=1
-       USE_MESALINK="yes"
-       ssl_msg="MesaLink"
-       test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
-       ],
-       [
-         CPPFLAGS=$_cppflags
-         LDFLAGS=$_ldflags
-       ])
-    fi
-
-    if test "x$USE_MESALINK" = "xyes"; then
-      AC_MSG_NOTICE([detected MesaLink])
-
-      LIBS="-lmesalink $LIBS"
-
-      if test -n "$mesalinklib"; then
-        dnl when shared libs were found in a path that the run-time
-        dnl linker doesn't search through, we need to add it to
-        dnl LD_LIBRARY_PATH to prevent further configure tests to fail
-        dnl due to this
-        if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mesalinklib"
-          export LD_LIBRARY_PATH
-          AC_MSG_NOTICE([Added $mesalinklib to LD_LIBRARY_PATH])
-        fi
-      fi
-    fi
-
-  fi dnl MesaLink not disabled
-
-  test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
-fi
-])
index 397ba71b1c1cf73e596d6a58ed0c371b95f1b988..cb162755dca48408e6e187f158f597b15e35c4bd 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_NSS], [
index ee23c9d6f41f7398b98ae41199268406070e44d5..bdcbfde17146447c7a54f6bce8b2d5292f87f76b 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
 # serial 5
 
-
-dnl CURL_CHECK_OPENSSL_API_HEADERS
-dnl -------------------------------------------------
-dnl Find out OpenSSL headers API version, as reported
-dnl by OPENSSL_VERSION_NUMBER. No runtime checks
-dnl allowed here for cross-compilation support.
-dnl HAVE_OPENSSL_API_HEADERS is defined as appropriate
-dnl only for systems which actually run the configure
-dnl script. Config files generated manually or in any
-dnl other way shall not define this.
-
-AC_DEFUN([CURL_CHECK_OPENSSL_API_HEADERS], [
-  #
-  tst_api="unknown"
-  #
-  AC_MSG_CHECKING([for OpenSSL headers version])
-  CURL_CHECK_DEF([OPENSSL_VERSION_NUMBER], [
-#   ifdef USE_OPENSSL
-#     include <openssl/crypto.h>
-#   else
-#     include <crypto.h>
-#   endif
-    ], [silent])
-  CURL_CHECK_DEF([OPENSSL_VERSION_STR], [
-#     include <openssl/crypto.h>
-    ], [silent])
-  if test "$curl_cv_have_def_OPENSSL_VERSION_NUMBER" = "yes"; then
-    tst_verlen=`expr "$curl_cv_def_OPENSSL_VERSION_NUMBER" : '.*'`
-    case "x$tst_verlen" in
-      x6)
-        tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
-        tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 4`
-        tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
-        tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
-        ;;
-      x11|x10)
-        tst_vermaj=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 3`
-        tst_vermin=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 5`
-        tst_verfix=`echo $curl_cv_def_OPENSSL_VERSION_NUMBER | cut -c 7`
-        tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
-        ;;
-      *)
-        if test "$curl_cv_have_def_OPENSSL_VERSION_STR" = "yes"; then
-          ver=`echo $curl_cv_def_OPENSSL_VERSION_STR | sed 's/"//g'`;
-          tst_vermaj=`echo $ver | cut -d. -f1`
-          tst_vermin=`echo $ver | cut -d. -f2`
-          tst_verfix=`echo $ver | cut -d. -f3`
-          tst_show="$ver"
-          tst_api=0x$tst_vermaj$tst_vermin$tst_verfix
-        else
-          tst_api="unknown"
-        fi
-        ;;
-    esac
-    case $tst_api in
-      0x111) tst_show="1.1.1" ;;
-      0x110) tst_show="1.1.0" ;;
-      0x102) tst_show="1.0.2" ;;
-      0x101) tst_show="1.0.1" ;;
-      0x100) tst_show="1.0.0" ;;
-      0x099) tst_show="0.9.9" ;;
-      0x098) tst_show="0.9.8" ;;
-      0x097) tst_show="0.9.7" ;;
-      0x096) tst_show="0.9.6" ;;
-      0x095) tst_show="0.9.5" ;;
-      0x094) tst_show="0.9.4" ;;
-      0x093) tst_show="0.9.3" ;;
-      0x092) tst_show="0.9.2" ;;
-      0x091) tst_show="0.9.1" ;;
-      *)
-      if test -z "$tst_show"; then
-        tst_show="unknown"
-      fi
-      ;;
-    esac
-    tst_show="$tst_show - $tst_api"
-  else
-    tst_show="unknown"
-  fi
-  AC_MSG_RESULT([$tst_show])
-  #
-dnl if test "$tst_api" != "unknown"; then
-dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_HEADERS, $tst_api,
-dnl   [OpenSSL headers configure time API. Defined only by configure script.
-dnl    No matter what, do not ever define this manually or by any other means.])
-dnl fi
-  curl_openssl_api_headers=$tst_api
-])
-
-
-dnl CURL_CHECK_OPENSSL_API_LIBRARY
-dnl -------------------------------------------------
-dnl Find out OpenSSL library API version, performing
-dnl only link tests in order to avoid getting fooled
-dnl by mismatched OpenSSL headers. No runtime checks
-dnl allowed here for cross-compilation support.
-dnl HAVE_OPENSSL_API_LIBRARY is defined as appropriate
-dnl only for systems which actually run the configure
-dnl script. Config files generated manually or in any
-dnl other way shall not define this.
-dnl
-dnl Most probably we should not bother attempting to
-dnl detect OpenSSL library development API versions
-dnl 0.9.9 and 1.1.0. For our intended use, detecting
-dnl released versions should be good enough.
-dnl
-dnl Given that currently we are not using the result
-dnl of this check, except for informative purposes,
-dnl lets try to figure out everything.
-
-AC_DEFUN([CURL_CHECK_OPENSSL_API_LIBRARY], [
-  #
-  tst_api="unknown"
-  #
-  AC_MSG_CHECKING([for OpenSSL library version])
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_CTX_load_verify_dir])
-    ],[
-      tst_api="0x300"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([ERR_clear_last_mark])
-    ],[
-      tst_api="0x111"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    case $host in
-      *-*-vms*)
-        AC_LINK_IFELSE([
-          AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumbl_sess_cb])
-        ],[
-          tst_api="0x110"
-        ])
-        ;;
-      *)
-        AC_LINK_IFELSE([
-          AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_not_resumable_session_callback])
-        ],[
-          tst_api="0x110"
-        ])
-        ;;
-    esac
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_CONF_CTX_new])
-    ],[
-      tst_api="0x102"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_renegotiate_abbreviated])
-    ],[
-      tst_api="0x101"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([OBJ_add_sigid])
-    ],[
-      tst_api="0x100"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([ERR_set_mark])
-    ],[
-      tst_api="0x098"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([ERR_peek_last_error])
-    ],[
-      tst_api="0x097"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([c2i_ASN1_OBJECT])
-    ],[
-      tst_api="0x096"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_purpose])
-    ],[
-      tst_api="0x095"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([OBJ_obj2txt])
-    ],[
-      tst_api="0x094"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_get_verify_depth])
-    ],[
-      tst_api="0x093"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_library_init])
-    ],[
-      tst_api="0x092"
-    ])
-  fi
-  if test "$tst_api" = "unknown"; then
-    AC_LINK_IFELSE([
-      AC_LANG_FUNC_LINK_TRY([SSL_CTX_set_cipher_list])
-    ],[
-      tst_api="0x091"
-    ])
-  fi
-  case $tst_api in
-    0x300) tst_show="3.0.0" ;;
-    0x111) tst_show="1.1.1" ;;
-    0x110) tst_show="1.1.0" ;;
-    0x102) tst_show="1.0.2" ;;
-    0x101) tst_show="1.0.1" ;;
-    0x100) tst_show="1.0.0" ;;
-    0x099) tst_show="0.9.9" ;;
-    0x098) tst_show="0.9.8" ;;
-    0x097) tst_show="0.9.7" ;;
-    0x096) tst_show="0.9.6" ;;
-    0x095) tst_show="0.9.5" ;;
-    0x094) tst_show="0.9.4" ;;
-    0x093) tst_show="0.9.3" ;;
-    0x092) tst_show="0.9.2" ;;
-    0x091) tst_show="0.9.1" ;;
-    *)     tst_show="unknown" ;;
-  esac
-  AC_MSG_RESULT([$tst_show])
-  #
-dnl if test "$tst_api" != "unknown"; then
-dnl AC_DEFINE_UNQUOTED(HAVE_OPENSSL_API_LIBRARY, $tst_api,
-dnl   [OpenSSL library link time API. Defined only by configure script.
-dnl    No matter what, do not ever define this manually or by any other means.])
-dnl fi
-  curl_openssl_api_library=$tst_api
-])
-
-
-dnl CURL_CHECK_OPENSSL_API
-dnl -------------------------------------------------
-
-AC_DEFUN([CURL_CHECK_OPENSSL_API], [
-  #
-  CURL_CHECK_OPENSSL_API_HEADERS
-  CURL_CHECK_OPENSSL_API_LIBRARY
-  #
-  tst_match="yes"
-  #
-  AC_MSG_CHECKING([for OpenSSL headers and library versions matching])
-  if test "$curl_openssl_api_headers" = "unknown" ||
-    test "$curl_openssl_api_library" = "unknown"; then
-    tst_match="fail"
-    tst_warns="Can not compare OpenSSL headers and library versions."
-  elif test "$curl_openssl_api_headers" != "$curl_openssl_api_library"; then
-    tst_match="no"
-    tst_warns="OpenSSL headers and library versions do not match."
-  fi
-  AC_MSG_RESULT([$tst_match])
-  if test "$tst_match" != "yes"; then
-    AC_MSG_WARN([$tst_warns])
-  fi
-])
-
 dnl **********************************************************************
 dnl Check for OpenSSL libraries and headers
 dnl **********************************************************************
@@ -609,7 +333,6 @@ if test "x$OPT_OPENSSL" != xno; then
          AC_MSG_NOTICE([Added $LIB_OPENSSL to CURL_LIBRARY_PATH])
        fi
     fi
-    CURL_CHECK_OPENSSL_API
     check_for_ca_bundle=1
   fi
 
@@ -663,11 +386,21 @@ dnl ---
 dnl We require OpenSSL with SRP support.
 dnl ---
 if test "$OPENSSL_ENABLED" = "1"; then
-  AC_CHECK_LIB(crypto, SRP_Calc_client_key,
-   [
-     AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key])
-     AC_SUBST(HAVE_OPENSSL_SRP, [1])
-   ])
+  AC_MSG_CHECKING([for SRP support in OpenSSL])
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM([[
+#include <openssl/ssl.h>
+    ]],[[
+      SSL_CTX_set_srp_username(NULL, "");
+      SSL_CTX_set_srp_password(NULL, "");
+    ]])
+  ],[
+    AC_MSG_RESULT([yes])
+    AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the functions SSL_CTX_set_srp_username and SSL_CTX_set_srp_password])
+    AC_SUBST(HAVE_OPENSSL_SRP, [1])
+  ],[
+    AC_MSG_RESULT([no])
+  ])
 fi
 
 dnl ---
index 72fc393a86cbd88839bfa416513a2d3337736af6..fb84f67ccf9b0735197d4851be1923043b6ece39 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #***************************************************************************
 #***************************************************************************
index 92ef00252c15fa1722d35bf0b2d0835b0253bf01..1992c5ecd44574a4552da1e4e626bcf3132c6521 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
index 4fe7f8e854e631e5a89711ac41f2d54165c32e1d..6fd8235aad21a9db625ad1b991bb2078d18175b9 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_RUSTLS], [
index 7ffe8ddba91338d021fedba794b1c7feec79fa6e..49c387791654c60fb9ccaee271bbdb99c3874722 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_SCHANNEL], [
index 658df958f4d2b6bdf56f9c8682c834ba0a799d53..0c43b13a2f280a661ff2cac7c1ab2f0339672772 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_SECURETRANSPORT], [
index 0af96ba9376a099371d039473b5a3ac239c1912a..c6cd2f88e9af8d1fc0f86cb1a2014687961c30af 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_DARWIN_SYSTEMCONFIGURATION], [
index b3e4b95115e2b083effab5c50c8e20f0c7b9cfbf..d66c97935e29f88f0ca7d79eb13da087e4a4fe45 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 AC_DEFUN([CURL_WITH_WOLFSSL], [
@@ -93,6 +95,7 @@ if test "x$OPT_WOLFSSL" != xno; then
    They are set up properly later if it is detected.  */
 #undef SIZEOF_LONG
 #undef SIZEOF_LONG_LONG
+#include <wolfssl/options.h>
 #include <wolfssl/ssl.h>
        ]],[[
          return wolfSSL_Init();
@@ -120,7 +123,7 @@ if test "x$OPT_WOLFSSL" != xno; then
       check_for_ca_bundle=1
 
       dnl wolfssl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
-      AX_COMPILE_CHECK_SIZEOF(long long)
+      CURL_SIZEOF(long long)
 
       LIBS="$addlib -lm $LIBS"
 
@@ -136,19 +139,6 @@ if test "x$OPT_WOLFSSL" != xno; then
         [
             AC_DEFINE(HAVE_WOLFSSL_DES_ECB_ENCRYPT, 1,
                       [if you have wolfSSL_DES_ecb_encrypt])
-            if test -n "$addcflags"; then
-              dnl use a for loop to strip off whitespace
-              for f in $addcflags; do
-                CPPFLAGS="$f/wolfssl $CPPFLAGS"
-                AC_MSG_NOTICE([Add $f/wolfssl to CPPFLAGS])
-                break
-              done
-            else
-              dnl user didn't give a path, so guess/hope they installed wolfssl
-              dnl headers to system default location
-              CPPFLAGS="-I/usr/include/wolfssl $CPPFLAGS"
-              AC_MSG_NOTICE([Add /usr/include/wolfssl to CPPFLAGS])
-            fi
             WOLFSSL_NTLM=1
         ]
         )
@@ -164,7 +154,8 @@ if test "x$OPT_WOLFSSL" != xno; then
           AC_MSG_NOTICE([Added $wolfssllibpath to CURL_LIBRARY_PATH])
         fi
       fi
-
+    else
+        AC_MSG_ERROR([--with-wolfssl but wolfSSL was not found or doesn't work])
     fi
 
   fi dnl wolfSSL not disabled
index c4c02946dece797da877e40488def858d724f103..e7b68334557bd6f9835b1c67ca89bfc6fcce5ae2 100644 (file)
@@ -1,6 +1,7 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
+#   Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software
+#   Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -31,7 +32,7 @@ m4_define([_LT_COPYING], [dnl
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ])
 
-# serial 58 LT_INIT
+# serial 59 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -181,6 +182,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
 m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
 m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_DECL_FILECMD])dnl
 m4_require([_LT_CHECK_MAGIC_METHOD])dnl
 m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
@@ -219,8 +221,8 @@ esac
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a '.a' archive for static linking (except MSVC,
-# which needs '.lib').
+# All known linkers require a '.a' archive for static linking (except MSVC and
+# ICC, which need '.lib').
 libext=a
 
 with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -777,7 +779,7 @@ _LT_EOF
   # if finds mixed CR/LF and LF-only lines.  Since sed operates in
   # text mode, it properly converts lines to CR/LF.  This bash problem
   # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
+  $SED '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
    mv -f "$cfgfile" "$ofile" ||
@@ -1041,8 +1043,8 @@ int forced_loaded() { return 2;}
 _LT_EOF
       echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
       echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
       $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
       cat > conftest.c << _LT_EOF
@@ -1066,17 +1068,12 @@ _LT_EOF
       _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     darwin1.*)
       _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-       10.0,*86*-darwin8*|10.0,*-darwin[[912]]*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
-       10.[[012]][[,.]]*)
-         _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
-       10.*|11.*)
-         _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+    darwin*)
+      case $MACOSX_DEPLOYMENT_TARGET,$host in
+        10.[[012]],*|,*powerpc*-darwin[[5-8]]*)
+          _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
+        *)
+          _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
@@ -1125,12 +1122,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
     output_verbose_link_cmd=func_echo_all
     _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
     _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
     m4_if([$1], [CXX],
 [   if test yes != "$lt_cv_apple_cc_single_mod"; then
       _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     fi
 ],[])
   else
@@ -1244,7 +1241,8 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
 # _LT_WITH_SYSROOT
 # ----------------
 AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
+[m4_require([_LT_DECL_SED])dnl
+AC_MSG_CHECKING([for sysroot])
 AC_ARG_WITH([sysroot],
 [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
   [Search for dependent libraries within DIR (or the compiler's sysroot
@@ -1261,7 +1259,7 @@ case $with_sysroot in #(
    fi
    ;; #(
  /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"`
    ;; #(
  no|'')
    ;; #(
@@ -1291,7 +1289,7 @@ ia64-*-hpux*)
   # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *ELF-32*)
        HPUX_IA64_MODE=32
        ;;
@@ -1308,7 +1306,7 @@ ia64-*-hpux*)
   echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     if test yes = "$lt_cv_prog_gnu_ld"; then
-      case `/usr/bin/file conftest.$ac_objext` in
+      case `$FILECMD conftest.$ac_objext` in
        *32-bit*)
          LD="${LD-ld} -melf32bsmip"
          ;;
@@ -1320,7 +1318,7 @@ ia64-*-hpux*)
        ;;
       esac
     else
-      case `/usr/bin/file conftest.$ac_objext` in
+      case `$FILECMD conftest.$ac_objext` in
        *32-bit*)
          LD="${LD-ld} -32"
          ;;
@@ -1342,7 +1340,7 @@ mips64*-*linux*)
   echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     emul=elf
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *32-bit*)
        emul="${emul}32"
        ;;
@@ -1350,7 +1348,7 @@ mips64*-*linux*)
        emul="${emul}64"
        ;;
     esac
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *MSB*)
        emul="${emul}btsmip"
        ;;
@@ -1358,7 +1356,7 @@ mips64*-*linux*)
        emul="${emul}ltsmip"
        ;;
     esac
-    case `/usr/bin/file conftest.$ac_objext` in
+    case `$FILECMD conftest.$ac_objext` in
       *N32*)
        emul="${emul}n32"
        ;;
@@ -1378,14 +1376,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # not appear in the list.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
+    case `$FILECMD conftest.o` in
       *32-bit*)
        case $host in
          x86_64-*kfreebsd*-gnu)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           case `/usr/bin/file conftest.o` in
+           case `$FILECMD conftest.o` in
              *x86-64*)
                LD="${LD-ld} -m elf32_x86_64"
                ;;
@@ -1453,7 +1451,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
+    case `$FILECMD conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
       yes*)
@@ -1492,9 +1490,22 @@ need_locks=$enable_libtool_lock
 m4_defun([_LT_PROG_AR],
 [AC_CHECK_TOOLS(AR, [ar], false)
 : ${AR=ar}
-: ${AR_FLAGS=cr}
 _LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+# Use ARFLAGS variable as AR's operation code to sync the variable naming with
+# Automake.  If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have
+# higher priority because thats what people were doing historically (setting
+# ARFLAGS for automake and AR_FLAGS for libtool).  FIXME: Make the AR_FLAGS
+# variable obsoleted/removed.
+
+test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr}
+lt_ar_flags=$AR_FLAGS
+_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)])
+
+# Make AR_FLAGS overridable by 'make ARFLAGS='.  Don't try to run-time override
+# by AR_FLAGS because that was never working and AR_FLAGS is about to die.
+_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}],
+         [Flags to create an archive])
 
 AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
   [lt_cv_ar_at_file=no
@@ -1713,7 +1724,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
+  bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1756,7 +1767,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   sysv5* | sco5v6* | sysv4.2uw2*)
     kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
+      lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[       ]]//'`
     else
       lt_cv_sys_max_cmd_len=32768
     fi
@@ -2206,26 +2217,35 @@ m4_defun([_LT_CMD_STRIPLIB],
 striplib=
 old_striplib=
 AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
+if test -z "$STRIP"; then
+  AC_MSG_RESULT([no])
 else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP"; then
+  if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+    old_striplib="$STRIP --strip-debug"
+    striplib="$STRIP --strip-unneeded"
+    AC_MSG_RESULT([yes])
+  else
+    case $host_os in
+    darwin*)
+      # FIXME - insert some real tests, host_os isn't really good enough
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
       AC_MSG_RESULT([yes])
-    else
+      ;;
+    freebsd*)
+      if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then
+        old_striplib="$STRIP --strip-debug"
+        striplib="$STRIP --strip-unneeded"
+        AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+      fi
+      ;;
+    *)
       AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
+      ;;
+    esac
+  fi
 fi
 _LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
 _LT_DECL([], [striplib], [1])
@@ -2548,7 +2568,7 @@ cygwin* | mingw* | pw32* | cegcc*)
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
 m4_if([$1], [],[
       sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
@@ -2558,14 +2578,14 @@ m4_if([$1], [],[
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+      library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
     ;;
 
-  *,cl*)
-    # Native MSVC
+  *,cl* | *,icl*)
+    # Native MSVC or ICC
     libname_spec='$name'
     soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
     library_names_spec='$libname.dll.lib'
@@ -2584,7 +2604,7 @@ m4_if([$1], [],[
       done
       IFS=$lt_save_ifs
       # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
       ;;
     cygwin*)
       # Convert to unix form, then to dos form, then back to unix form
@@ -2621,7 +2641,7 @@ m4_if([$1], [],[
     ;;
 
   *)
-    # Assume MSVC wrapper
+    # Assume MSVC and ICC wrapper
     library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
     dynamic_linker='Win32 ld.exe'
     ;;
@@ -2654,7 +2674,7 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
   if test -x /usr/bin/objformat; then
@@ -3465,7 +3485,7 @@ beos*)
 
 bsdi[[45]]*)
   lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_cmd='$FILECMD -L'
   lt_cv_file_magic_test_file=/shlib/libc.so
   ;;
 
@@ -3499,14 +3519,14 @@ darwin* | rhapsody*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | dragonfly*)
+freebsd* | dragonfly* | midnightbsd*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
       # Not sure whether the presence of OpenBSD here was a mistake.
       # Let's accept both of them until this is cleared up.
       lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_cmd=$FILECMD
       lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
       ;;
     esac
@@ -3520,7 +3540,7 @@ haiku*)
   ;;
 
 hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_cmd=$FILECMD
   case $host_cpu in
   ia64*)
     lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
@@ -3567,7 +3587,7 @@ netbsd* | netbsdelf*-gnu)
 
 newos6*)
   lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_cmd=$FILECMD
   lt_cv_file_magic_test_file=/usr/lib/libnls.so
   ;;
 
@@ -3694,13 +3714,13 @@ else
        mingw*) lt_bad_file=conftest.nm/nofile ;;
        *) lt_bad_file=/dev/null ;;
        esac
-       case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+       case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in
        *$lt_bad_file* | *'Invalid file or object type'*)
          lt_cv_path_NM="$tmp_nm -B"
          break 2
          ;;
        *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in
          */dev/null*)
            lt_cv_path_NM="$tmp_nm -p"
            break 2
@@ -3726,7 +3746,7 @@ else
     # Let the user override the test.
   else
     AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in
     *COFF*)
       DUMPBIN="$DUMPBIN -symbols -headers"
       ;;
@@ -3966,7 +3986,7 @@ esac
 
 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
   # Gets list of data symbols to import.
-  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'"
   # Adjust the below global symbol transforms to fixup imported variables.
   lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
   lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
@@ -3984,20 +4004,20 @@ fi
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+lt_cv_sys_global_symbol_to_cdecl="$SED -n"\
 $lt_cdecl_hook\
 " -e 's/^T .* \(.*\)$/extern int \1();/p'"\
 " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\
 $lt_c_name_hook\
 " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
 " -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
 
 # Transform an extracted symbol line into symbol name with lib prefix and
 # symbol address.
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\
 $lt_c_name_lib_hook\
 " -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
 " -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
@@ -4021,7 +4041,7 @@ for ac_symprfx in "" "_"; do
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
     # Fake it for dumpbin and say T for any non-static function,
     # D for any global variable and I for any imported variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
+    # Also find C++ and __fastcall symbols from MSVC++ or ICC,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
@@ -4039,9 +4059,9 @@ for ac_symprfx in "" "_"; do
 "     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx]"
   else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+    lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[   ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -4329,7 +4349,7 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      freebsd* | dragonfly*)
+      freebsd* | dragonfly* | midnightbsd*)
        # FreeBSD uses GNU C++
        ;;
       hpux9* | hpux10* | hpux11*)
@@ -4412,7 +4432,7 @@ m4_if([$1], [CXX], [
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
            ;;
          *)
-           case `$CC -V 2>&1 | sed 5q` in
+           case `$CC -V 2>&1 | $SED 5q` in
            *Sun\ C*)
              # Sun C++ 5.9
              _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4754,7 +4774,7 @@ m4_if([$1], [CXX], [
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
        ;;
       *)
-       case `$CC -V 2>&1 | sed 5q` in
+       case `$CC -V 2>&1 | $SED 5q` in
        *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
          # Sun Fortran 8.3 passes all unrecognized flags to the linker
          _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4937,7 +4957,7 @@ m4_if([$1], [CXX], [
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     else
-      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
@@ -4945,7 +4965,7 @@ m4_if([$1], [CXX], [
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*)
+    cl* | icl*)
       _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
       ;;
     *)
@@ -5005,15 +5025,15 @@ dnl Note also adjust exclude_expsyms for C++ above.
 
   case $host_os in
   cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
+    # Microsoft Visual C++ or Intel C++ Compiler.
     if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
   interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC)
     with_gnu_ld=yes
     ;;
   openbsd* | bitrig*)
@@ -5068,7 +5088,7 @@ dnl Note also adjust exclude_expsyms for C++ above.
       _LT_TAGVAR(whole_archive_flag_spec, $1)=
     fi
     supports_anon_versioning=no
-    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
+    case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in
       *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -5180,6 +5200,7 @@ _LT_EOF
        emximp -o $lib $output_objdir/$libname.def'
       _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='@'
       ;;
 
     interix[[3-9]]*)
@@ -5194,7 +5215,7 @@ _LT_EOF
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
@@ -5237,7 +5258,7 @@ _LT_EOF
          _LT_TAGVAR(compiler_needs_object, $1)=yes
          ;;
        esac
-       case `$CC -V 2>&1 | sed 5q` in
+       case `$CC -V 2>&1 | $SED 5q` in
        *Sun\ C*)                       # Sun C 5.9
          _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
          _LT_TAGVAR(compiler_needs_object, $1)=yes
@@ -5249,13 +5270,14 @@ _LT_EOF
 
         if test yes = "$supports_anon_versioning"; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
             echo "local: *; };" >> $output_objdir/$libname.ver~
             $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
        case $cc_basename in
        tcc*)
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
          _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
          ;;
        xlf* | bgf* | bgxlf* | mpixlf*)
@@ -5265,7 +5287,7 @@ _LT_EOF
          _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
          if test yes = "$supports_anon_versioning"; then
            _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
               echo "local: *; };" >> $output_objdir/$libname.ver~
               $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
          fi
@@ -5397,7 +5419,7 @@ _LT_EOF
        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
          _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
        else
-         _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
+         _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
        fi
        aix_use_runtimelinking=no
 
@@ -5580,12 +5602,12 @@ _LT_EOF
 
     cygwin* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
+      # Microsoft Visual C++ or Intel C++ Compiler.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
       case $cc_basename in
-      cl*)
-       # Native MSVC
+      cl* | icl*)
+       # Native MSVC or ICC
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
        _LT_TAGVAR(always_export_symbols, $1)=yes
@@ -5626,7 +5648,7 @@ _LT_EOF
           fi'
        ;;
       *)
-       # Assume MSVC wrapper
+       # Assume MSVC and ICC wrapper
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
        # Tell ltmain to make .lib files, not .a files.
@@ -5674,7 +5696,7 @@ _LT_EOF
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
+    freebsd* | dragonfly* | midnightbsd*)
       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_TAGVAR(hardcode_direct, $1)=yes
@@ -5815,6 +5837,7 @@ _LT_EOF
        # Fabrice Bellard et al's Tiny C Compiler
        _LT_TAGVAR(ld_shlibs, $1)=yes
        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
        ;;
       esac
       ;;
@@ -5886,6 +5909,7 @@ _LT_EOF
        emximp -o $lib $output_objdir/$libname.def'
       _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='@'
       ;;
 
     osf3*)
@@ -6656,8 +6680,8 @@ if test yes != "$_lt_caught_CXX_error"; then
 
       cygwin* | mingw* | pw32* | cegcc*)
        case $GXX,$cc_basename in
-       ,cl* | no,cl*)
-         # Native MSVC
+       ,cl* | no,cl* | ,icl* | no,icl*)
+         # Native MSVC or ICC
          # hardcode_libdir_flag_spec is actually meaningless, as there is
          # no search path for DLLs.
          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
@@ -6755,6 +6779,7 @@ if test yes != "$_lt_caught_CXX_error"; then
          emximp -o $lib $output_objdir/$libname.def'
        _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       _LT_TAGVAR(file_list_spec, $1)='@'
        ;;
 
       dgux*)
@@ -6785,7 +6810,7 @@ if test yes != "$_lt_caught_CXX_error"; then
         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         ;;
 
-      freebsd* | dragonfly*)
+      freebsd* | dragonfly* | midnightbsd*)
         # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
         # conventions
         _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -6922,7 +6947,7 @@ if test yes != "$_lt_caught_CXX_error"; then
        # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
        # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
        ;;
       irix5* | irix6*)
         case $cc_basename in
@@ -7062,13 +7087,13 @@ if test yes != "$_lt_caught_CXX_error"; then
            _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
            if test yes = "$supports_anon_versioning"; then
              _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
                 echo "local: *; };" >> $output_objdir/$libname.ver~
                 $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
            fi
            ;;
          *)
-           case `$CC -V 2>&1 | sed 5q` in
+           case `$CC -V 2>&1 | $SED 5q` in
            *Sun\ C*)
              # Sun C++ 5.9
              _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
@@ -8214,6 +8239,14 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program])
 AC_SUBST([DLLTOOL])
 ])
 
+# _LT_DECL_FILECMD
+# ----------------
+# Check for a file(cmd) program that can be used to detect file type and magic
+m4_defun([_LT_DECL_FILECMD],
+[AC_CHECK_TOOL([FILECMD], [file], [:])
+_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types])
+])# _LD_DECL_FILECMD
+
 # _LT_DECL_SED
 # ------------
 # Check for a fully-functional sed program, that truncates
index 94b082976667c0c9edf2e9ff7a668c1fd7d997bf..b0b5e9c21260626dbace09fdb80b1fddb5a90db8 100644 (file)
@@ -1,7 +1,7 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
 #
-#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
-#   Foundation, Inc.
+#   Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free
+#   Software Foundation, Inc.
 #   Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
index 48bc9344a4d661e116be1483d5520753875b2bd1..902508bd93aec6b21aa65636f69eaeb7c9b67329 100644 (file)
@@ -1,6 +1,6 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software
 # Foundation, Inc.
 # Written by Gary V. Vaughan, 2004
 #
index fa04b52a3bf868bd57e7ba796d64385a51e7ec5a..b155d0aceca376bf6b735cbac50cf0c593c73d32 100644 (file)
@@ -1,6 +1,7 @@
 # ltversion.m4 -- version numbers                      -*- Autoconf -*-
 #
-#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation,
+#   Inc.
 #   Written by Scott James Remnant, 2004
 #
 # This file is free software; the Free Software Foundation gives
 
 # @configure_input@
 
-# serial 4179 ltversion.m4
+# serial 4245 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4.6])
-m4_define([LT_PACKAGE_REVISION], [2.4.6])
+m4_define([LT_PACKAGE_VERSION], [2.4.7])
+m4_define([LT_PACKAGE_REVISION], [2.4.7])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.6'
-macro_revision='2.4.6'
+[macro_version='2.4.7'
+macro_revision='2.4.7'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
index c6b26f88f6c3c1a052afa6314ba2adf832d785ee..0f7a8759da8d46df4a9996141d7138ca680cce6b 100644 (file)
@@ -1,7 +1,7 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
-#   Foundation, Inc.
+#   Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free
+#   Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
 # This file is free software; the Free Software Foundation gives
index 7070193aa9cc9e7f8b01cecf7817866c4029b696..621453d4e69aeaf8243a0902c7e371c900e2184f 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xc-am-iface.m4
 #
-# Copyright (c) 2013 - 2020 Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022 Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # serial 1
index fd58ca2cec61d1939e8d1a8eb9c47c2ef2ecab68..9eae8a647e9cd41e890c4fb7b6c5026629d3b7fe 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xc-cc-check.m4
 #
-# Copyright (c) 2013 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # serial 1
index e389b2b031719437055eebe26535500d91fa3d32..337c9f9cdf3d5ca36d7579460100f373f4b0cc93 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xc-lt-iface.m4
 #
-# Copyright (c) 2013 - 2021, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # serial 1
@@ -317,7 +319,7 @@ dnl   xc_lt_build_static_with_pic
 m4_define([_XC_CHECK_LT_BUILD_WITH_PIC],
 [dnl
 #
-# Find out whether libtool libraries would be built wit PIC
+# Find out whether libtool libraries would be built with PIC
 #
 
 case "x$pic_mode" in @%:@ ((((
index 18b63ecc8ac12ad25dc22768a9900e819e5a98e4..6fc837e636030bac7f028ebff8c7f7eedcb438d9 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xc-translit.m4
 #
-# Copyright (c) 2011 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2011 - 2022, Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # File version for 'aclocal' use. Keep it a single number.
index 775c149cc72677b1059ceb8e083afcaef37a4cdd..b721c315572babbe467f8988de13f4a4d2db1d55 100644 (file)
@@ -2,7 +2,7 @@
 #
 # xc-val-flgs.m4
 #
-# Copyright (c) 2013 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # serial 1
index 14c92d8c158ac4b7768241dea1e13637375f331b..3b96e5f01b03bdbe32a45d2fcac3549bc275ae64 100644 (file)
@@ -2,7 +2,7 @@
 #
 # zz40-xc-ovr.m4
 #
-# Copyright (c) 2013 - 2018 Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022 Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 dnl The funny name of this file is intentional in order to make it
@@ -358,7 +360,7 @@ dnl and stores the result in 'PATH_SEPARATOR', unless
 dnl the user has already set it with a non-empty value.
 dnl
 dnl This path separator is the symbol used to separate
-dnl or diferentiate paths inside the 'PATH' environment
+dnl or differentiate paths inside the 'PATH' environment
 dnl variable.
 dnl
 dnl Non-empty user provided 'PATH_SEPARATOR' always
@@ -592,7 +594,7 @@ dnl and stores the result in 'PATH_SEPARATOR', unless
 dnl the user has already set it with a non-empty value.
 dnl
 dnl This path separator is the symbol used to separate
-dnl or diferentiate paths inside the 'PATH' environment
+dnl or differentiate paths inside the 'PATH' environment
 dnl variable.
 dnl
 dnl Non-empty user provided 'PATH_SEPARATOR' always
index cf8604dcbb6fe2a09b647d826420a9f1e5370328..ea68e5b48d98e19d78e9ce84e3f3dc87ba8003ce 100644 (file)
@@ -2,7 +2,7 @@
 #
 # zz50-xc-ovr.m4
 #
-# Copyright (c) 2011 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2011 - 2022, Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # serial 1
index 126ac0fd7270ae7931ef9d5c4f41156555f4c606..e3e29bfc44da5b0bdba1ed067d2150db63ea35eb 100644 (file)
@@ -2,7 +2,7 @@
 #
 # zz60-xc-ovr.m4
 #
-# Copyright (c) 2013 - 2020, Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2022, Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 #---------------------------------------------------------------------------
 
 # serial 1
diff --git a/maketgz b/maketgz
index d1351addf725e2d1da4a99878327ad0aafd92551..92ea871af2dd6679ef80c15558dd325e8e419f75 100755 (executable)
--- a/maketgz
+++ b/maketgz
@@ -9,7 +9,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -22,6 +22,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 version=$1
@@ -92,10 +94,6 @@ rm -f "$HEADER.bak"
 sed -i.bak 's/#define CURL_VERSION .*/#define CURL_VERSION "'$curlversion'"/g' $CHEADER
 rm -f "$CHEADER.bak"
 
-# Replace version number in plist file:
-sed -i.bak "s/7\.12\.3/$libversion/g" $PLIST
-rm -f "$PLIST.bak"
-
 if test -n "$only"; then
   # done!
   exit;
@@ -169,6 +167,12 @@ git log --pretty=fuller --no-color --date=short --decorate=full -1000 | ./script
 echo "make dist"
 targz="curl-$version.tar.gz"
 make -sj dist VERSION=$version
+res=$?
+
+if test "$res" != 0; then
+    echo "make dist failed"
+    exit 2
+fi
 
 ############################################################################
 #
index 77bc271ea676d76803c8d7039311103e6b261760..f5093b7e448b1dd4eb9c6cb576ce34e6d4a8ae45 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Google Android makefile for curl and libcurl
 #
index cc9da379ed5b508b2dc6949444127fde4ea73658..8336efa412b73bc77f2cb74019cc933d50b4f88d 100644 (file)
@@ -1,4 +1,4 @@
-Gisle Vanem made curl build fine on DOS (and MingW) with djgpp, OpenSSL and his
+Gisle Vanem made curl build fine on DOS (and MinGW) with djgpp, OpenSSL and his
 Watt-32 stack.
 
 'make -f Makefile.dist djgpp' in the root curl dir should build it fine.
@@ -11,7 +11,7 @@ Note 1: djgpp 2.04 beta has a sscanf() bug so the URL parsing isn't
 Note 2: Compile Watt-32 (and OpenSSL) with the same version of djgpp.
         Otherwise things go wrong because things like FS-extensions and
         errnos have been changed between releases.
-        
+
 Note 3: Several 'USE_x' variables in 'common.dj' are on the 'USE_x ?= 0'
         form (conditional variable assignment). So one can build like this:
           c:\curl\lib> make -f makefile.dj USE_OPENSSL=1 USE_ZLIB=1 clean all
index dea4f3ec77c8a7722b8d25237ff14b47e8c835cf..b181e8215728d9ad4536cf7e99882e4e8c9949c5 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # Common defines for curl (djgpp/Watt-32)
@@ -144,7 +146,6 @@ ifeq ($(USE_OPENSSL),1)
   #
   # CFLAGS += -DUSE_TLS_SRP=1                    \
   #           -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES \
-  #           -DHAVE_OPENSSL_PKCS12_H            \
   #           -DHAVE_SSLV2_CLIENT_METHOD         \
   #           -DOPENSSL_NO_DEPRECATED
 
@@ -159,7 +160,7 @@ ifeq ($(USE_OPENSSL),1)
 endif
 
 ifeq ($(USE_ZLIB),1)
-  CFLAGS += -DUSE_ZLIB -I$(ZLIB_ROOT)
+  CFLAGS += -DHAVE_LIBZ -I$(ZLIB_ROOT)
 endif
 
 ifeq ($(USE_IPV6),1)
@@ -171,8 +172,7 @@ ifeq ($(USE_ARES),1)
 endif
 
 ifeq ($(USE_IDNA),1)
-  CFLAGS += -DHAVE_LIBIDN -DHAVE_IDN_FREE_H -DHAVE_IDN_FREE -DHAVE_TLD_H \
-            -DHAVE_TLD_STRERROR -I$(LIBIDN_ROOT)/lib
+  CFLAGS += -DHAVE_LIBIDN -I$(LIBIDN_ROOT)/lib
 endif
 
 ifeq ($(USE_DEBUG),1)
index 56b1ae404f6939e0acf54314bb7d7e32f6fe7e29..b379911666095436f081bd2c1cf68562e47f21ef 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 SUBDIRS = vms
 
@@ -37,9 +39,6 @@ EXTRA_DIST = README \
   OS400/makefile.sh \
   OS400/os400sys.c \
   OS400/os400sys.h \
-  TPF/curl.mak \
-  TPF/maketpf.env_curl \
-  TPF/maketpf.env_curllib \
   Android/Android.mk
 
 CHECKSRC = $(CS_$(V))
@@ -48,4 +47,4 @@ CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
index 36f2b898482ce0ce6de3842fc00265fd4f66ba94..9d9091e7a76748c223e7e619319d5b82464f816e 100644 (file)
@@ -89,15 +89,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = packages
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -247,6 +245,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -264,6 +263,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -321,6 +321,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -339,12 +340,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -411,7 +413,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -425,7 +426,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -438,6 +439,8 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 SUBDIRS = vms
 EXTRA_DIST = README \
@@ -456,9 +459,6 @@ EXTRA_DIST = README \
   OS400/makefile.sh \
   OS400/os400sys.c \
   OS400/os400sys.h \
-  TPF/curl.mak \
-  TPF/maketpf.env_curl \
-  TPF/maketpf.env_curllib \
   Android/Android.mk
 
 CHECKSRC = $(CS_$(V))
@@ -477,9 +477,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu packages/Makefile
+         $(AUTOMAKE) --foreign packages/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -780,7 +780,7 @@ uninstall-am:
 
 
 checksrc:
-       $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/OS400/*.[ch])
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index d3ad901775a64398fad72105322645938dc71ee4..e245aff992493b26a8e6187baa4b4835665cab74 100644 (file)
@@ -252,22 +252,24 @@ archive extraction. Do not ask questions about these subjects if you're not
 familiar with.
 
 _ As a prerequisite, QADRT development environment must be installed.
+  For more information on downloading and installing the QADRT development kit,
+  please see https://www.ibm.com/support/pages/node/6258183
 _ If data compression has to be supported, ZLIB development environment must
   be installed.
 _ Likewise, if SCP and SFTP protocols have to be compiled in, LIBSSH2
   developent environment must be installed.
 _ Install the curl source directory in IFS. Do NOT install it in the
   installation target directory (which defaults to /curl).
-_ Enter shell (QSH)
+_ Enter Qshell (QSH, not PASE)
 _ Change current directory to the curl installation directory
 _ Change current directory to ./packages/OS400
 _ Edit file iniscript.sh. You may want to change tunable configuration
-  parameters, like debug info generation, optimisation level, listing option,
+  parameters, like debug info generation, optimization level, listing option,
   target library, ZLIB/LIBSSH2 availability and location, etc.
 _ Copy any file in the current directory to makelog (i.e.:
   cp initscript.sh makelog): this is intended to create the makelog file with
   an ASCII CCSID!
-_ Enter the command "sh makefile.sh > makelog 2>&1'
+_ Enter the command "sh makefile.sh > makelog 2>&1"
 _ Examine the makelog file to check for compilation errors.
 
   Leaving file initscript.sh unchanged, this will produce the following OS/400
index 4b30683ea681a733dc3ec99303136eba1789ad9b..da696ca2b9e38b754986f9691efd4f4278e43fb8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  *
  ***************************************************************************/
 
index 959aaaabbda7649071878c7df0e3e8dbe8df8b64..9bd2ae7dd0f950231385dd1cc2ec53738aa47357 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  *
  ***************************************************************************/
 #include "curl.h"
index 919a856dda4e7c31f4cd12c18b3af3810b152dfc..6f8d38b773507e1db71662a0d87813a7bc27d6d1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <stdlib.h>
index d0990a76a5c83cb8c904590d79837160607e6e7c..6508b964d7eaeab09a23b3faacf2c8689892814a 100644 (file)
@@ -5,7 +5,7 @@
       *                            | (__| |_| |  _ <| |___
       *                             \___|\___/|_| \_\_____|
       *
-      * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+      * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
       * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
       * ANY KIND, either express or implied.
       *
+      * SPDX-License-Identifier: curl
+      *
       *
       **************************************************************************
       *
      d                 c                   X'10000000'
      d CURL_VERSION_GSASL...
      d                 c                   X'20000000'
+     d CURL_VERSION_THREADSAFE...
+     d                 c                   X'40000000'
       *
      d CURL_HTTPPOST_FILENAME...
      d                 c                   X'00000001'
      d                 c                   00110
      d  CURLOPT_PROXYAUTH...
      d                 c                   00111
-     d  CURLOPT_FTP_RESPONSE_TIMEOUT...
+     d  CURLOPT_SERVER_RESPONSE_TIMEOUT...
      d                 c                   00112
      d  CURLOPT_SERVER_RESPONSE_TIMEOUT...                                      Alias
      d                 c                   00112
      d                 c                   20
       *
      d CURLMIMEOPT_FORMESCAPE...
-     d                                     X'0000000'
+     d                 c                   X'00000001'
       *
      d CURLINFO        s             10i 0 based(######ptr######)               Enum
      d  CURLINFO_EFFECTIVE_URL...                                               CURLINFO_STRING + 1
      d                                     qualified
      d  name                           *                                        const char *
      d  id                                 like(CURLoption)
-     d  type                               like(curl_easytyoe)
+     d  type                               like(curl_easytype)
      d  flags                        10u 0
       *
      d curl_hstsentry...
       *
      d curl_easy_option_by_name...
      d                 pr              *   extproc('curl_easy_option_by_name')  curl_easyoption *
-     d  name                           *   value option(*string)
+     d  name                           *   value options(*string)
       *
      d curl_easy_option_by_id...
      d                 pr              *   extproc('curl_easy_option_by_id')    curl_easyoption *
      d curl_easy_option_by_name_ccsid...
      d                 pr              *   extproc(                             curl_easyoption *
      d                                      'curl_easy_option_by_name_ccsid')
-     d  name                           *   value option(*string)
+     d  name                           *   value options(*string)
      d  ccsid                        10u 0 value
       *
      d curl_easy_option_get_name_ccsid...
index 50550f77443a21558ea7b2b75e263629930852c8..4facf17edd26993135c2d472922f62354724c5e3 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
+system ()
+{
+    /usr/bin/system "$@" || exit 1
+}
 
 setenv()
 
@@ -69,9 +75,9 @@ setenv DYNBNDDIR        'CURL'                  # Dynamic binding directory.
 setenv SRVPGM           "CURL.${SONAME}"        # Service program.
 setenv TGTCCSID         '500'                   # Target CCSID of objects.
 setenv DEBUG            '*ALL'                  # Debug level.
-setenv OPTIMIZE         '10'                    # Optimisation level
+setenv OPTIMIZE         '10'                    # Optimization level
 setenv OUTPUT           '*NONE'                 # Compilation output option.
-setenv TGTRLS           'V6R1M0'                # Target OS release.
+setenv TGTRLS           '*CURRENT'              # Target OS release.
 setenv IFSDIR           '/curl'                 # Installation IFS directory.
 
 #       Define ZLIB availability and locations.
@@ -231,11 +237,11 @@ make_module()
         DEFINES="${3} BUILDING_LIBCURL"
 
         if [ "${WITH_ZLIB}" != "0" ]
-        then    DEFINES="${DEFINES} HAVE_LIBZ HAVE_ZLIB_H"
+        then    DEFINES="${DEFINES} HAVE_LIBZ"
         fi
 
         if [ "${WITH_LIBSSH2}" != "0" ]
-        then    DEFINES="${DEFINES} USE_LIBSSH2 HAVE_LIBSSH2_H"
+        then    DEFINES="${DEFINES} USE_LIBSSH2"
         fi
 
         if [ "${DEFINES}" ]
index b05ddf482d4c3404e767d1ab106abae26d9410eb..daf32627cbc1642a2a4f5d37b45ba9decdb0d9fc 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #       Installation of the header files in the OS/400 library.
index cac5aac209b4930e07cc68bcf5cbb21190b2c93c..7bbd9fa2aadb20bb62a5c51b5bdaf7bb13bfd674 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #       libcurl compilation script for the OS/400.
index 8e7ad6d3d5e5108a0c6e4d6cb0ba150ce417012c..327857d16c4e6a96ec65e967b97be9b4bbe73df5 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #
index 078b0f196a64327d23061fb07f489fb5ab55d259..9ac9d46d2e903d8a2a07a1f19cd0843561a1ed49 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #       tests compilation script for the OS/400.
index bfc56da3d656f30861cff1f498a0cee564fa6ffc..b2c1b5918030ef8175eff6ff3255cb0166220da1 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #       curl compilation script for the OS/400.
@@ -59,6 +61,8 @@ do      MEMBER="`basename \"${TEXT}\" .OS400`"
         MEMBER="`basename \"${MEMBER}\" .md`"
         MEMBER="${LIBIFSNAME}/DOCS.FILE/`db2_name \"${MEMBER}\"`.MBR"
 
+        [ -e "${TEXT}" ] || continue
+
         if action_needed "${MEMBER}" "${TEXT}"
         then    CMD="CPY OBJ('${TEXT}') TOOBJ('${MEMBER}') TOCCSID(${TGTCCSID})"
                 CMD="${CMD} DTAFMT(*TEXT) REPLACE(*YES)"
index ec06c9597f36febdb990f1e14b7e3f325c7837ee..862c7fd38e785805b334986a48f866d5b375562e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  *
  ***************************************************************************/
 
@@ -38,7 +40,7 @@
 #include <qadrt.h>
 #include <errno.h>
 
-#ifdef HAVE_ZLIB_H
+#ifdef HAVE_LIBZ
 #include <zlib.h>
 #endif
 
index 3b7667514f213bf5d6a18d27c2a18c45e7abad8b..f10723848cd7d418931a71a1f1d928754f6bd8c6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  *
  ***************************************************************************/
 
diff --git a/packages/TPF/curl.mak b/packages/TPF/curl.mak
deleted file mode 100644 (file)
index 5d6f3d7..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, 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.
-#
-###########################################################################
-#######################################################################
-#                                                                     #
-#  MAKEFILE NAME.....  curl.mak                                       #
-#                                                                     #
-#  DESCRIPTION.....    This is the makefile for libcurl.              #
-#                                                                     #
-#######################################################################
-
-APP := CURL
-
-TPF_RUN_TPFSOCHK := NO
-
-#######################################################################
-# Define any additional libs needed to link
-#######################################################################
-
-LIBS := CRYP CSSL
-
-#######################################################################
-# Define the envs needed to build this module
-#######################################################################
-
-maketpf_env := curllib
-maketpf_env += openssl
-maketpf_env += base_rt
-maketpf_env += system
-
-#######################################################################
-# Segments to be compiled with gcc compiler
-#######################################################################
-#
-### lib directory:
-include $(word 1,$(wildcard $(foreach d,$(TPF_ROOT),$d/opensource/curl/lib/Makefile.inc)) Makefile.inc_not_found)
-C_SRC := $(CSOURCES)
-
-#######################################################################
-# Additions and overrides for gcc compiler flags
-#######################################################################
-
-# suppress expected warnings in the ported code:
-CFLAGS_CURL += -w
-
-# use SSL
-# (overrides Curl's lib/config-tpf.h file)
-CFLAGS_CURL += -DUSE_OPENSSL
-
-# disable all protocols except FTP and HTTP
-# (overrides Curl's lib/config-tpf.h file)
-CFLAGS_CURL += -DCURL_DISABLE_DICT
-CFLAGS_CURL += -DCURL_DISABLE_FILE
-CFLAGS_CURL += -DCURL_DISABLE_LDAP
-CFLAGS_CURL += -DCURL_DISABLE_TELNET
-CFLAGS_CURL += -DCURL_DISABLE_TFTP
-
-#######################################################################
-# Include the maketpf.rules
-#######################################################################
-
-include maketpf.rules
diff --git a/packages/TPF/maketpf.env_curl b/packages/TPF/maketpf.env_curl
deleted file mode 100644 (file)
index 6ea24d4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, 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.
-#
-###########################################################################
-################################################################################
-################################################################################
-#env TPF CURL Includes
-################################################################################
-################################################################################
-
-################################################################################
-# Define the directories where the shared objects reside
-################################################################################
-
-ROOTLIBDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/lib)
-
-################################################################################
-# Set the include/header file directories
-################################################################################
-
-ROOTINCDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include)
-ROOTINCDIRS += $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include/curl)
-
-################################################################################
-# Define "TPF" to enable TPF-specific code in Curl files.
-################################################################################
-
-CFLAGS_$(APP) += -D TPF
diff --git a/packages/TPF/maketpf.env_curllib b/packages/TPF/maketpf.env_curllib
deleted file mode 100644 (file)
index 28414c6..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, 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.
-#
-###########################################################################
-################################################################################
-################################################################################
-#env TPF CURL Library Source and Output
-################################################################################
-################################################################################
-
-################################################################################
-# Define the directories where the shared objects reside
-################################################################################
-
-ROOTLIBDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/lib)
-
-################################################################################
-# Define the directories where the loadables (XXXXVV) are to be written
-################################################################################
-
-ROOTLOADDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/load)
-
-################################################################################
-# Define the location of the export files used by the LD postprocessor
-# - currently expected that .exp files will also live in lib dir
-################################################################################
-
-ROOTEXPDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/output/exp)
-
-################################################################################
-# Define the object file directory name
-################################################################################
-
-ROOTOBJDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/obj)
-
-################################################################################
-# Define the listing files directory name
-################################################################################
-
-ROOTLSTDIRS := $(foreach d,$(TPF_ROOT),$d/opensource/curl/output/lst)
-
-################################################################################
-# Set the include/header file directories
-################################################################################
-
-ROOTINCDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/lib)
-ROOTINCDIRS += $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include)
-ROOTINCDIRS += $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/include/curl)
-
-################################################################################
-# Set the C file directories
-################################################################################
-
-ROOTCDIRS := $(foreach d,$(TPF_ROOT_LM),$d/opensource/curl/lib)
-
-################################################################################
-# Define "TPF" to enable TPF-specific code in Curl files.
-################################################################################
-
-CFLAGS_$(APP) += -D TPF
index 16db59554aa3515fdd96c401396e153979845c8a..f4b2d68be3723a7e85c20d36e621d79bc94777cd 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 EXTRA_DIST = \
  backup_gnv_curl_src.com \
index 9c3bcc3ed2b78d86aece814b4ee83fcbddfeb8a9..78404196f7db975bf5a7d79d2cf0bfe82f0c97c0 100644 (file)
@@ -89,15 +89,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = packages/vms
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -189,6 +187,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -206,6 +205,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -263,6 +263,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -281,12 +282,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -353,7 +355,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -367,7 +368,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -380,6 +381,8 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 EXTRA_DIST = \
  backup_gnv_curl_src.com \
@@ -430,9 +433,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu packages/vms/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packages/vms/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu packages/vms/Makefile
+         $(AUTOMAKE) --foreign packages/vms/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
index fcf3061c280f7aa4e56a63e6168a461255ed048e..900a62b8497d30ea78230d5562b661eb5eee9ac0 100644 (file)
@@ -17,7 +17,7 @@ $! This file is created from a template file for the purpose of making it
 $! easier to port Unix code, particularly open source code to VMS.
 $! Therefore permission is freely granted for any use.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -31,6 +31,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 13-Jun-2009 J. Malmberg
 $!
 $!===========================================================================
index ea1881d2cf01f83a71530d56f4bfdfc340cd3498..b6a6575ecfe4d1d1d02f2cbb11a952a9732817d4 100644 (file)
@@ -2,7 +2,7 @@ $! build_curl-config_script.com
 $!
 $! This generates the curl-config. script from the curl-config.in file.
 $!
-$! Copyright 2014, John Malmberg
+$! Copyright 2014 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 16-Dec-2014 J. Malmberg
 $!
index ede38548d7f97999ea9aa54e7712595df4b8ff83..15931fb86690341d355f911ed22d5d468bfa754a 100644 (file)
@@ -4,7 +4,7 @@ $! $Id$
 $!
 $! All in one build procedure
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -18,6 +18,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 11-Jun-2009 J. Malmberg
 $!-----------------------------------------------------------------------
index 941875ab4e0dbff659ea2a5ee7370973324549a4..589de2c721e7d905e2fed24d83396fab1f2adf35 100644 (file)
@@ -31,7 +31,7 @@ $! A rename action section is needed to make sure that the files are
 $! created in the GNV$GNU: in the correct case, and to create the alias
 $! link [usr.bin]curl. for [usr.bin]curl.exe.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -45,6 +45,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 15-Jun-2009  J. Malmberg
 $!
index 94ca7eb440155bd3cea7c06e7afadffd2ea26788..9295ffb9daf5a6f79e6eb885b9cf77d9724c556e 100644 (file)
@@ -12,7 +12,7 @@ $!    4. Generated Producer section.
 $!
 $! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -26,6 +26,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 15-Jun-2009  J. Malmberg
 $!
index 8342ef9788f5eda0d9cc35039ead06bf2230b081..7673ab76ea28147e965a5f10d8653228cdab7b73 100644 (file)
@@ -11,7 +11,7 @@ $!
 $! Set the name of the release notes from the GNV_PCSI_FILENAME_BASE
 $! logical name.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -25,6 +25,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 14-Jun-2009  J. Malmberg
 $!
 $!===========================================================================
index 5b2315e2a23da0a76d6baaad9d27cee1c6e2a54c..e5eef33bf3f3823c0d6c632826b5bf57db7da325 100644 (file)
@@ -4,7 +4,7 @@ $! $Id:$
 $!
 $! Build the libcurl.pc file from the libcurl.pc.in file
 $!
-$! Copyright 2013 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -18,6 +18,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 15-Jun-2013  J. Malmberg
 $!
index 5846739e4a572e36753c6fbb5acc51ea9f90d60d..0fe31177d3f2ebf7570b1c30991935c0fa41fd7d 100644 (file)
@@ -15,7 +15,7 @@ $! Parameter P1: REALCLEAN
 $!   This removes all build products and brings the environment back to
 $!   the point where the gnv_curl_configure.sh procedure needs to be run again.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2009 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -29,6 +29,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 07-Jul-2009 J. Malmberg
 $!============================================================================
@@ -181,6 +182,9 @@ $!
 $ file = "lcl_root:[.lib]libcurl.vers"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
+$ file = "lcl_root:[.lib]libcurl.plist"
+$ if f$search(file) .nes. "" then delete 'file';*
+$!
 $ file = "lcl_root:[]ca-bundle.h"
 $ if f$search(file) .nes. "" then delete 'file';*
 $!
index a720afc63047985c29a4c96133a4eb9d61943264..1801f72b53f6148fd43ed86943b61696e3215378 100644 (file)
@@ -69,7 +69,7 @@ $!
 $!   This is to make sure that the backup save set for the unmodified
 $!   source is up to date.
 $!
-$! Copyright 2011 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -83,6 +83,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 18-Aug-2011  J. Malmberg
 $!==========================================================================
 $!
@@ -260,19 +262,12 @@ $!  These files are in the wrong format for VMS diff, and we don't change them.
 $   ref_skip = 0
 $   if ref_type .eqs. ".PDF" then ref_skip = 1
 $   if ref_type .eqs. ".HTML" then ref_skip = 1
-$   if ref_type .eqs. ".HQX" then ref_skip = 1
 $   if ref_type .eqs. ".P12" then ref_skip = 1
 $   if ref_type .eqs. "."
 $   then
 $       if f$locate("test", ref_fname) .eq. 0 then ref_skip = 1
 $       if ref_fname .eqs. "configure." then ref_skip = 1
 $   endif
-$   if ref_fname .eqs. "MACINSTALL.TXT" then ref_skip = 1
-$   if ref_fname .eqs. "$macinstall.txt" then ref_skip = 1
-$   if ref_fname .eqs. "curl.mcp$5nxml$5nsit$5nhqx" then ref_skip = 1
-$   if ref_fname .eqs. "curl_GUSIConfig.cpp" then ref_skip = 1
-$   if ref_fname .eqs. "curl_$gusic$onfig.cpp" then ref_skip = 1
-$   if ref_fname .eqs. "macos_main.cpp" then ref_skip = 1
 $!
 $!
 $   if ref_skip .ne. 0
index af97eb11839cde6cb8c3fbef01fe080e0f7bee6f..4612c6c2b580aeeeb2d0411939582cf290406b16 100644 (file)
@@ -28,7 +28,7 @@ $!
 $! This procedure may not guess the options correctly for all architectures,
 $! and is a work in progress.
 $!
-$! Copyright 2011 - 2021, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -42,6 +42,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 15-Jan-2001 J. Malmberg     Original
 $! 29-Apr-2001 J. Malmberg     Also look for config.*in* in a [.include]
 $!                             subdirectory
@@ -795,14 +797,6 @@ $      write tf "#endif"
 $          goto cfgh_in_loop1
 $      endif
 $!
-$      if key2 .eqs. "HAVE_LIBDL"
-$      then
-$          write tf "#ifndef ''key2'"
-$          write tf "#define ''key2' 1"
-$          write tf "#endif"
-$          goto cfgh_in_loop1
-$      endif
-$!
 $      if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
 $      then
 $          if (key2c .eqs. "EGD") .or. -
@@ -1667,117 +1661,6 @@ $               goto cfgh_in_loop1
 $          endif
 $      endif
 $!
-$!
-$!     Process RECVFROM directives
-$!-------------------------------------
-$      if key2a .eqs. "RECVFROM"
-$      then
-$          if key2 .eqs. "RECVFROM_QUAL_ARG5"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2'"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_ARG1"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' int"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_ARG2"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' void *"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_ARG3"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' size_t"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_ARG4"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' int"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_ARG5"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' struct sockaddr"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_ARG6"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' unsigned int"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "RECVFROM_TYPE_RETV"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' int"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$      endif
-$!
-$!     Process SELECT directives
-$!-------------------------------------
-$      if key2a .eqs. "SELECT"
-$      then
-$          if key2 .eqs. "SELECT_QUAL_ARG5"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' const"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "SELECT_TYPE_ARG1"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' int"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "SELECT_TYPE_ARG2"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' void *"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "SELECT_TYPE_ARG234"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' fd_set *"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "SELECT_TYPE_ARG5"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' struct timeval *"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$          if key2 .eqs. "SELECT_TYPE_RETV"
-$          then
-$              write tf "#ifndef ''key2'"
-$              write tf "#define ''key2' int"
-$              write tf "#endif"
-$              goto cfgh_in_loop1
-$          endif
-$      endif
-$!
 $!     Process SEND directives
 $!-------------------------------------
 $      if key2a .eqs. "SEND"
index 63c6742757cb7decd0078cc1f9ad8c448e2ac87c..8b5da62d5283d6310a52781fdeedfd560f3efb52 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* File: curl_crtl_init.c
  *
index 2c3dba1dad629f5cfe9a96aff3e0542384bc42f3..6274b7bbae56f8f1c59ef5a81d7dc6d1d330af2b 100644 (file)
@@ -1,6 +1,6 @@
 From File: curl_gnv_build_steps.txt
 
- Copyright 2009 - 2020, John Malmberg
+ Copyright 2013 - 2022, John Malmberg
 
  Permission to use, copy, modify, and/or distribute this software for any
  purpose with or without fee is hereby granted, provided that the above
@@ -14,6 +14,8 @@ From File: curl_gnv_build_steps.txt
  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
+ SPDX-License-Identifier: ISC
+
 Currently building Curl using GNV takes longer than building Curl via DCL.
 The GNV procedure actually uses the same configure and makefiles that
 Unix builds use.
index b94ee7f44d2a92805df1842b5a676c8b285b0809..47849dc2b17d470d1faa202a9d5a2c63c61cd19d 100644 (file)
@@ -5,7 +5,7 @@ $!
 $! Procedure to setup the CURL libraries for use by programs from the
 $! VMS SYSTARTUP*.COM procedure.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -19,6 +19,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 15-Jun-2009 J. Malmberg
 $! 30-Jul-2013 J. Malmberg  Update for Curl 7.32
 $!========================================================================
index b3d0b252b086a01dece972b3dead9339770c22e2..7f7378d05018c4da3ac96904e712f2830a6e0c86 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #pragma __member_alignment __save
index e86aee7c3bc11c09191350b8e602a7f52c5c8d2b..2122495507cac770c8e69b7475b21d6b9eaba5a1 100644 (file)
@@ -5,7 +5,7 @@
 !                            | (__| |_| |  _ <| |___
 !                             \___|\___/|_| \_\_____|
 !
-! Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+! Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 ! This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 ! KIND, either express or implied.
 !
+! SPDX-License-Identifier: curl
+!
 !##########################################################################
 !
 ! These VMS error codes are generated by taking apart the curl.h
index 3392a4cc45062001d705726baffec93ff2e49387..f24a1991e9bbb5da9b20ec0974e5da4af3678efc 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*                                                                          */
index 07d3fb0890429c863fcae98475edc710ba9e1233..2741b7b3c4df1aea070d13d91043e59835e74949 100644 (file)
@@ -17,7 +17,7 @@ $! and the [.lib]config-vms.h file do two different tasks and that the
 $! filenames are slightly different.
 $!
 $!
-$! Copyright 2013 - 2021, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -31,6 +31,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 06-Jan-2013 J. Malmberg
 $!
@@ -425,12 +426,10 @@ $! Allow explicit experimentation.
 $if libssh2
 $then
 $   write cvh "#define HAVE_LIBSSH2_EXIT 1"
-$   write cvh "#define HAVE_LIBSSH2_H 1"
 $   write cvh "#define HAVE_LIBSSH2_INIT 1"
 $   write cvh "#define HAVE_LIBSSH2_SCP_SEND64 1"
 $   write cvh "#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1"
 $   write cvh "#define HAVE_LIBSSH2_VERSION 1
-$   write cvh "#define HAVE_LIBSSH2 1
 $!
 $   write cvh "#ifndef USE_LIBSSH2"
 $   write cvh "#define USE_LIBSSH2 1"
@@ -446,7 +445,6 @@ $!
 $if .not. nozlib
 $then
 $   write cvh "#define HAVE_LIBZ 1"
-$   write cvh "#define HAVE_ZLIB_H 1"
 $endif
 $!
 $!
index 00020810f8a71abd5d9b758e6966d06e4d059313..f9d978b10f47b1e5e0e0e9c5b41673cf04d9c39c 100644 (file)
@@ -14,7 +14,7 @@ $!     gnv_libcurl_xfer.obj
 $!     gnv_libcurl_xfer.opt
 $!     macro32_exactcase.exe
 $!
-$! Copyright 2013 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -28,6 +28,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 20-Jul-2013  J. Malmberg
 $!============================================================================
 $!
index 1d69600a2e0c4b89609695094640d97e83d2f45f..2ee244735583107034c0e4a23f06a32fbef21976 100644 (file)
@@ -2,7 +2,7 @@
  *
  * $Id$
  *
- * Copyright 2009 - 2020, John Malmberg
+ * Copyright 2013 - 2022, John Malmberg
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +16,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
+ * SPDX-License-Identifier: ISC
+ *
  */
 
 /* This is needed for Configure tests to get the correct exit status */
index 839a40bff90bad04aaabd3feece53cdafdfaa96a..1cb0543cba0575e3c7626d6c983caa2c0e6f141d 100644 (file)
@@ -5,7 +5,7 @@
 # Set up and run the configure script for Curl so that it can find the
 # proper options for VMS.
 #
-# Copyright 2009 - 2020, John Malmberg
+# Copyright 2013 - 2022, John Malmberg
 #
 # Permission to use, copy, modify, and/or distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -19,6 +19,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 # 06-Jun-2009  J. Malmberg
 # 28-Dec-2012  J. Malmberg     Update for Bash 4.2.39
 #==========================================================================
index cae2a754b00d968858434b19c46fa9361e577b34..eff1cbe97c6baa375ecaaa674fe281a938c6f8e3 100644 (file)
@@ -41,7 +41,7 @@
 ! maintaining multiple versions as long as the routine can be called with
 ! the old number of parameters.
 !
-! Copyright 2009 - 2020, John Malmberg
+! Copyright 2013 - 2022, John Malmberg
 !
 ! Permission to use, copy, modify, and/or distribute this software for any
 ! purpose with or without fee is hereby granted, provided that the above
@@ -54,6 +54,8 @@
 ! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 ! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 ! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+!
+! SPDX-License-Identifier: ISC
 !============================================================================
 GSMATCH=LEQUAL,1,719050
 CASE_SENSITIVE=YES
index 0e2719cdee88007c468eba5690afb165a9cccad6..6e84229b465acf4414f4508f2cd98911085578d8 100644 (file)
@@ -4,7 +4,7 @@ $! $Id$
 $!
 $! File to build images using gnv$libcurl.exe
 $!
-$! Copyright 2009 - 2021, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -18,6 +18,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 10-Jun-2009  J. Malmberg
 $!============================================================================
 $!
index 699c8d2f29f5bb2cb29aa1e5d833515eb6e9b156..bdc6077e9cc1a32808dc391a94fe10eef0a4fd2d 100644 (file)
@@ -7,7 +7,7 @@
 # This makes the library, the curl binary and attempts an install.
 # A search list should be set up for GNU (GNV$GNU).
 #
-# Copyright 2009 - 2020, John Malmberg
+# Copyright 2013 - 2022, John Malmberg
 #
 # Permission to use, copy, modify, and/or distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -21,6 +21,8 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
+# SPDX-License-Identifier: ISC
+#
 # 06-Jun-2009  J. Malmberg
 #==========================================================================
 #
index 2061429ae1a9cabb1facd7cf47f9cbff93c08095..08d34725146c859bfd28f463a27b38aafbe438ea 100644 (file)
@@ -8,7 +8,7 @@ $!
 $! The results are stored in as logical names so that other procedures
 $! can use them.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -22,6 +22,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 11-Jun-2009 J. Malmberg
 $!
 $!========================================================================
index 6eb69c384d8ab8be01d76e7b92e21c7266750748..7015a800e563206531c6af32ab299da9e0f6dcdf 100644 (file)
@@ -15,7 +15,7 @@
 !
 ! [xxx.yyy]file.ext is a file for the rename and add phases.
 !
-! Copyright 2009 - 2020, John Malmberg
+! Copyright 2013 - 2022, John Malmberg
 !
 ! Permission to use, copy, modify, and/or distribute this software for any
 ! purpose with or without fee is hereby granted, provided that the above
@@ -29,6 +29,8 @@
 ! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 ! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 !
+! SPDX-License-Identifier: ISC
+!
 ! 15-Jun-2009  J. Malmberg
 !============================================================================
 [gnv.usr.bin]curl. -> [gnv.usr.bin]gnv$curl.exe
index 0f9961f49c0c2f8d44ce94b256389cca2688df6a..688c9c01489e9ec45a10c9baa869489cfa24b56d 100644 (file)
@@ -5,7 +5,7 @@ $!
 $! This command file packages up the product CURL into a sequential
 $! format kit
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -19,6 +19,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 16-Jun-2009  J.Malmberg
 $!
 $!=========================================================================
index ccb363be492d95116e1b3883ed52796f8387f2fb..493969616098d93d3779adbf26edfc57920eddb8 100644 (file)
@@ -9,7 +9,7 @@
  *
  * Usage:  report_openssl_version <shared_image> [<dcl_symbol>]
  *
- * Copyright 2013, John Malmberg
+ * Copyright 2013 - 2022, John Malmberg
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -23,6 +23,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
+ * SPDX-License-Identifier: ISC
+ *
  */
 
 #include <dlfcn.h>
index 45dcf0fb87f80f0ab7bb96361a56efc082e6478a..69aecc68dc49880668287e7815d1ceb2a87eca8b 100644 (file)
@@ -7,7 +7,7 @@ $!
 $! GNV needs some files moved into the other directories to help with
 $! the configure script and the build.
 $!
-$! Copyright 2009 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -21,6 +21,8 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
+$!
 $! 30-May-2009  J. Malmberg
 $!
 $!=======================================================================
index d79c9e33e0f6732a8e8034dc86632779e9a76fcb..8c4cb05b540ad439a2bc572a9197698acd37bec9 100644 (file)
@@ -24,7 +24,7 @@ $!     [usr.share.man.man3]curl*.3
 $!     [usr.share.man.man3]libcurl*.3
 $! Future: A symbolic link to the release notes?
 $!
-$! Copyright 2012 - 2020, John Malmberg
+$! Copyright 2013 - 2022, John Malmberg
 $!
 $! Permission to use, copy, modify, and/or distribute this software for any
 $! purpose with or without fee is hereby granted, provided that the above
@@ -38,6 +38,7 @@ $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 $!
+$! SPDX-License-Identifier: ISC
 $!
 $! 20-Aug-2012  J. Malmberg
 $!
index 05abe9101878edbf948140d6f02a635cb5abf651..cf2db53a311b4352540ea98455f7b6fd721f2166 100644 (file)
@@ -2,7 +2,7 @@
  *
  * $Id$
  *
- * Copyright 2012 - 2020, John Malmberg
+ * Copyright 2013 - 2022, John Malmberg
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -15,7 +15,9 @@
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
+ *
+ * SPDX-License-Identifier: ISC
+ *
  */
 
 /* This file should be incremented for each ECO that is kit */
index cbf403f89b6cd5ad7a6516de05167bad4a41665f..d61682b7504c1d6a8af1abbf35e700cc3e0d4303 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 DIR=/sys/include/ape/curl
index d64b465c01791dc9fdb1ed377c6cbe198eb4b982..45189485b0f86e40e5c399e2c8e262ac062a6cc8 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 <../mkfile.proto
index b202f57e3b6d0589602cadf4c7af2807ffbd1ab7..bf677bd07c82362e12071e803a2f669fcf527419 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # rename $(VAR) -> $VAR
index 0fd18f4937025c7c1f5ac9919946aef951608622..f48d412370fd65654b11944211106d4a7b4bdc8f 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 </sys/src/ape/config
index a88374cdac9afa675a2411876660fe641cd747ca..2557de79571bcdc0f4b48963eb3f94e764a72c08 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 </sys/src/ape/config
index f752078905a90c9b5bb8f7e50f64aa2c8dc621bd..0ec185b53dc7389e36bdfc1035081c0def9ef64c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 <../mkfile.proto
index b202f57e3b6d0589602cadf4c7af2807ffbd1ab7..bf677bd07c82362e12071e803a2f669fcf527419 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # rename $(VAR) -> $VAR
diff --git a/projects/README b/projects/README
deleted file mode 100644 (file)
index 7a7698c..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-Building via IDE Project Files
-==============================
-
-   This document describes how to compile, build and install curl and libcurl
-   from sources using an IDE based development tool such as Visual Studio.
-
-   Project files are currently available for Visual C++ v6.0 to v15.0. The
-   following directory structure has been used to cater for this:
-
-   somedirectory\
-    |_curl
-      |_projects
-        |_<platform>
-          |_<ide>
-            |_lib
-            |_src
-
-   This structure allows for side-by-side compilation of curl on the same
-   machine using different versions of a given compiler (for example VC8, VC9
-   and VC10) and allows for your own application or product to be compiled
-   against those variants of libcurl for example.
-
-   Note: Typically this side-by-side compilation is generally only required
-   when a library is being compiled against dynamic runtime libraries.
-
-Dependencies
-============
-
-   The projects files also support build configurations that require third
-   party dependencies such as OpenSSL, wolfSSL and SSH2. If you wish to support
-   these, you will also need to download and compile those libraries as well.
-
-   To support compilation of these libraries using different versions of
-   compilers, the following directory structure has been used for both the
-   output of curl and libcurl as well as these dependencies.
-
-   somedirectory\
-    |_curl
-    | |_ build
-    |    |_<architecture>
-    |      |_<ide>
-    |        |_<configuration>
-    |          |_lib
-    |          |_src
-    |
-    |_openssl
-    | |_ build
-    |    |_<architecture>
-    |      |_VC <version>
-    |        |_<configuration>
-    |
-    |_libssh2
-      |_ build
-         |_<architecture>
-           |_VC <version>
-             |_<configuration>
-
-   As OpenSSL and wolfSSL don't support side-by-side compilation when using
-   different versions of Visual Studio, build helper batch files have been
-   provided to assist with this. Please run "build-openssl -help" and/or
-   "build-wolfssl -help" for usage details.
-
-Building with Visual C++
-========================
-
-   To build with VC++, you will of course have to first install VC++ which is
-   part of Visual Studio.
-
-   If you are building with VC6 then you will also need the February 2003
-   Edition of the Windows Platform SDK which can be downloaded from:
-
-    https://www.microsoft.com/en-us/download/details.aspx?id=12261
-
-   If you require support for Internationalized Domain Names via Windows IDN
-   then you will need either:
-
-    * Microsoft Windows SDK Update for Windows Vista:
-      https://www.microsoft.com/en-us/download/details.aspx?id=23719
-
-    * Microsoft Visual Studio 2010 or above
-
-   Once you have VC++ installed you should launch the application and open one
-   of the solution or workspace files.
-
-   Whilst files are provided for both libcurl and the curl command line tool as
-   well as a configuration that includes both, it is recommend that you use the
-   all-in-one configuration.
-
-Running DLL based configurations
-================================
-
-   If you are a developer and plan to run the curl tool from Visual Studio (eg
-   you are debugging) with any third-party libraries (such as OpenSSL, wolfSSL
-   or LibSSH2) then you will need to add the search path of these DLLs to the
-   configuration's PATH environment. To do that:
-
-    * Open the 'curl-all.sln' or 'curl.sln' solutions
-
-    * Right-click on the 'curl' project and select Properties
-
-    * Navigate to 'Configuration Properties > Debugging > Environment'
-
-    * Add PATH='Path to DLL';C:\Windows\system32;C:\Windows;
-               C:\Windows\System32\Wbem
-
-   ... where 'Path to DLL` is the configuration specific path. For example the
-   following configurations in Visual Studio 2010 might be:
-
-   DLL Debug - DLL OpenSSL (Win32):
-   PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
-        C:\Windows;C:\Windows\System32\Wbem
-
-   DLL Debug - DLL OpenSSL (x64):
-   PATH=..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
-        C:\Windows;C:\Windows\System32\Wbem
-
-   DLL Debug - DLL wolfSSL (Win32):
-   PATH=..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
-        C:\Windows;C:\Windows\System32\Wbem
-
-   DLL Debug - DLL wolfSSL (x64):
-   PATH=..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
-        C:\Windows;C:\Windows\System32\Wbem
-
-   If you are using a configuration that uses multiple third-party library DLLs
-   (such as DLL Debug - DLL OpenSSL - DLL LibSSH2) then 'Path to DLL' will need
-   to contain the path to both of these.
-
-Notes
-=====
-
-   The following keywords have been used in the directory hierarchy:
-
-   <platform>      - The platform (For example: Windows)
-   <ide>           - The IDE (For example: VC6, VC10, BCC5)
-   <architecture>  - The platform architecture (For example: Win32, Win64)
-   <configuration> - The target configuration (For example: DLL Debug,
-                     LIB Release - LIB OpenSSL)
-
-   If you are using the source code from the git repository, rather than a
-   release archive or nightly build, you will need to generate the project
-   files. Please run "generate -help" for usage details.
-
-   Should you wish to help out with some of the items on the TODO list, or
-   find bugs in the project files that need correcting, and would like to
-   submit updated files back then please note that, whilst the solution files
-   can be edited directly, the templates for the project files (which are
-   stored in the git repository) will need to be modified rather than the
-   generated project files that Visual Studio uses.
-
-Legacy Windows and SSL
-======================
-
-   Some of the project configurations allow the use of Schannel, the native
-   SSL library in Windows which forms part of Windows SSPI. However, Schannel
-   in Windows <= XP is unable to connect to servers that no longer support the
-   legacy handshakes and algorithms used by those versions. If you will be
-   using curl in one of those earlier versions of Windows you should choose
-   another SSL backend such as OpenSSL.
diff --git a/projects/README.md b/projects/README.md
new file mode 100644 (file)
index 0000000..fca9cf4
--- /dev/null
@@ -0,0 +1,160 @@
+<!--
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
+Building via IDE Project Files
+==============================
+
+This document describes how to compile, build and install curl and libcurl
+from sources using an IDE based development tool such as Visual Studio.
+
+Project files are available for several different Visual C++ versions. The
+following directory structure has been used to cater for this:
+
+    somedirectory\
+     |_curl
+       |_projects
+         |_<platform>
+           |_<ide>
+             |_lib
+             |_src
+
+This structure allows for side-by-side compilation of curl on the same machine
+using different versions of a given compiler (for example VC10 and VC12) and
+allows for your own application or product to be compiled against those
+variants of libcurl for example.
+
+Note: Typically this side-by-side compilation is generally only required when
+a library is being compiled against dynamic runtime libraries.
+
+## Dependencies
+
+The projects files also support build configurations that require third party
+dependencies such as OpenSSL, wolfSSL and libssh2. If you wish to support
+these, you will also need to download and compile those libraries as well.
+
+To support compilation of these libraries using different versions of
+compilers, the following directory structure has been used for both the output
+of curl and libcurl as well as these dependencies.
+
+    somedirectory\
+     |_curl
+     | |_ build
+     |    |_<architecture>
+     |      |_<ide>
+     |        |_<configuration>
+     |          |_lib
+     |          |_src
+     |
+     |_openssl
+     | |_ build
+     |    |_<architecture>
+     |      |_VC <version>
+     |        |_<configuration>
+     |
+     |_libssh2
+       |_ build
+          |_<architecture>
+            |_VC <version>
+              |_<configuration>
+
+As OpenSSL and wolfSSL don't support side-by-side compilation when using
+different versions of Visual Studio, build helper batch files have been
+provided to assist with this. Please run `build-openssl -help` and/or
+`build-wolfssl -help` for usage details.
+
+## Building with Visual C++
+
+To build with VC++, you will of course have to first install VC++ which is
+part of Visual Studio.
+
+Once you have VC++ installed you should launch the application and open one of
+the solution or workspace files. The VC directory names are based on the
+version of Visual C++ that you will be using. Each version of Visual Studio
+has a default version of Visual C++. We offer these versions:
+
+ - VC10      (Visual Studio 2010 Version 10.0)
+ - VC11      (Visual Studio 2012 Version 11.0)
+ - VC12      (Visual Studio 2013 Version 12.0)
+ - VC14      (Visual Studio 2015 Version 14.0)
+ - VC14.10   (Visual Studio 2017 Version 15.0)
+ - VC14.30   (Visual Studio 2022 Version 17.0)
+
+Separate solutions are provided for both libcurl and the curl command line
+tool as well as a solution that includes both projects. libcurl.sln, curl.sln
+and curl-all.sln, respectively. We recommend using curl-all.sln to build both
+projects.
+
+For example, if you are using Visual Studio 2022 then you should be able to
+use `VC14.30\curl-all.sln` to build curl and libcurl.
+
+## Running DLL based configurations
+
+If you are a developer and plan to run the curl tool from Visual Studio with
+any third-party libraries (such as OpenSSL, wolfSSL or LibSSH2) then you will
+need to add the search path of these DLLs to the configuration's PATH
+environment. To do that:
+
+ 1. Open the 'curl-all.sln' or 'curl.sln' solutions
+ 2. Right-click on the 'curl' project and select Properties
+ 3. Navigate to 'Configuration Properties > Debugging > Environment'
+ 4. Add `PATH='Path to DLL';C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem`
+
+... where 'Path to DLL` is the configuration specific path. For example the
+following configurations in Visual Studio 2010 might be:
+
+DLL Debug - DLL OpenSSL (Win32):
+
+    PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+    C:\Windows;C:\Windows\System32\Wbem
+
+DLL Debug - DLL OpenSSL (x64):
+
+    PATH=..\..\..\..\..\openssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+    C:\Windows;C:\Windows\System32\Wbem
+
+DLL Debug - DLL wolfSSL (Win32):
+
+    PATH=..\..\..\..\..\wolfssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
+    C:\Windows;C:\Windows\System32\Wbem
+
+DLL Debug - DLL wolfSSL (x64):
+
+    PATH=..\..\..\..\..\wolfssl\build\Win64\VC10\DLL Debug;C:\Windows\system32;
+    C:\Windows;C:\Windows\System32\Wbem
+
+If you are using a configuration that uses multiple third-party library DLLs
+(such as DLL Debug - DLL OpenSSL - DLL LibSSH2) then 'Path to DLL' will need
+to contain the path to both of these.
+
+## Notes
+
+The following keywords have been used in the directory hierarchy:
+
+ - `<platform>`      - The platform (For example: Windows)
+ - `<ide>`           - The IDE (For example: VC10)
+ - `<architecture>`  - The platform architecture (For example: Win32, Win64)
+ - `<configuration>` - The target configuration (For example: DLL Debug, LIB
+   Release - LIB OpenSSL)
+
+If you are using the source code from the git repository, rather than a
+release archive or nightly build, you will need to generate the project
+files. Please run "generate -help" for usage details.
+
+Should you wish to help out with some of the items on the TODO list, or find
+bugs in the project files that need correcting, and would like to submit
+updated files back then please note that, whilst the solution files can be
+edited directly, the templates for the project files (which are stored in the
+git repository) will need to be modified rather than the generated project
+files that Visual Studio uses.
+
+## Legacy Windows and SSL
+
+Some of the project configurations allow the use of Schannel, the native SSL
+library in Windows which forms part of Windows SSPI. However, Schannel in
+Windows <= XP is unable to connect to servers that no longer support the
+legacy handshakes and algorithms used by those versions. If you will be using
+curl in one of those earlier versions of Windows you should choose another SSL
+backend such as OpenSSL.
index 8ddf84c022a8dcbf84b8f1ac9ed37d4dc1adb23e..e4574a1012ee06481de8134651c9ad4d671124f2 100644 (file)
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
     <ClCompile Include="..\..\..\..\lib\dict.c" />\r
     <ClCompile Include="..\..\..\..\lib\doh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\easy.c" />\r
     <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
     <ClCompile Include="..\..\..\..\lib\escape.c" />\r
     <ClCompile Include="..\..\..\..\lib\file.c" />\r
     <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fopen.c" />\r
     <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
     <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
     <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
     <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\h2h3.c" />\r
     <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\headers.c" />\r
     <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
     <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
     <ClCompile Include="..\..\..\..\lib\multi.c" />\r
     <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
-    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\noproxy.c" />\r
     <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
     <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
     <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
     <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
     <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
     <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
     <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
-    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ws.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
     <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
     <ClInclude Include="..\..\..\..\lib\dict.h" />\r
     <ClInclude Include="..\..\..\..\lib\doh.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easy_lock.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
     <ClInclude Include="..\..\..\..\lib\escape.h" />\r
     <ClInclude Include="..\..\..\..\lib\file.h" />\r
     <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fopen.h" />\r
     <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\functypes.h" />\r
     <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\h2h3.h" />\r
     <ClInclude Include="..\..\..\..\lib\hash.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\headers.h" />\r
     <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
     <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
     <ClInclude Include="..\..\..\..\lib\http2.h" />\r
     <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
     <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
     <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
-    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\noproxy.h" />\r
     <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
     <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
     <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
     <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
     <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
     <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
-    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ws.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
index 4e688f306403e3b00651208ae0e72be80d1a10e4..66a3b2fbacc6c8f8002efd9f3b15aabb9590c583 100644 (file)
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
index 2bbadab9506e531a2b85074e46d2590e4799decc..81c42455cfcfe76aed309ae042391011c5562dab 100644 (file)
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC11\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
     <ClCompile Include="..\..\..\..\lib\dict.c" />\r
     <ClCompile Include="..\..\..\..\lib\doh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\easy.c" />\r
     <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
     <ClCompile Include="..\..\..\..\lib\escape.c" />\r
     <ClCompile Include="..\..\..\..\lib\file.c" />\r
     <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fopen.c" />\r
     <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
     <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
     <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
     <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\h2h3.c" />\r
     <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\headers.c" />\r
     <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
     <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
     <ClCompile Include="..\..\..\..\lib\multi.c" />\r
     <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
-    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\noproxy.c" />\r
     <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
     <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
     <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
     <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
     <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
     <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
     <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
-    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ws.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
     <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
     <ClInclude Include="..\..\..\..\lib\dict.h" />\r
     <ClInclude Include="..\..\..\..\lib\doh.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easy_lock.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
     <ClInclude Include="..\..\..\..\lib\escape.h" />\r
     <ClInclude Include="..\..\..\..\lib\file.h" />\r
     <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fopen.h" />\r
     <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\functypes.h" />\r
     <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\h2h3.h" />\r
     <ClInclude Include="..\..\..\..\lib\hash.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\headers.h" />\r
     <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
     <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
     <ClInclude Include="..\..\..\..\lib\http2.h" />\r
     <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
     <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
     <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
-    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\noproxy.h" />\r
     <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
     <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
     <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
     <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
     <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
     <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
-    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ws.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
index 9fad5aaef699e19ee0acbcefe258747673ebaf59..a1b4e761d87d5f546af372aa9b4d0ee6c94933c4 100644 (file)
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
index 779211a286829acdbbe230a27bdd430e5fc24f01..9e62139ba99294a10746e5b2356daa38d876ff3c 100644 (file)
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC12\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
     <ClCompile Include="..\..\..\..\lib\dict.c" />\r
     <ClCompile Include="..\..\..\..\lib\doh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\easy.c" />\r
     <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
     <ClCompile Include="..\..\..\..\lib\escape.c" />\r
     <ClCompile Include="..\..\..\..\lib\file.c" />\r
     <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fopen.c" />\r
     <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
     <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
     <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
     <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\h2h3.c" />\r
     <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\headers.c" />\r
     <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
     <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
     <ClCompile Include="..\..\..\..\lib\multi.c" />\r
     <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
-    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\noproxy.c" />\r
     <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
     <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
     <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
     <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
     <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
     <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
     <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
-    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ws.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
     <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
     <ClInclude Include="..\..\..\..\lib\dict.h" />\r
     <ClInclude Include="..\..\..\..\lib\doh.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easy_lock.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
     <ClInclude Include="..\..\..\..\lib\escape.h" />\r
     <ClInclude Include="..\..\..\..\lib\file.h" />\r
     <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fopen.h" />\r
     <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\functypes.h" />\r
     <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\h2h3.h" />\r
     <ClInclude Include="..\..\..\..\lib\hash.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\headers.h" />\r
     <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
     <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
     <ClInclude Include="..\..\..\..\lib\http2.h" />\r
     <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
     <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
     <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
-    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\noproxy.h" />\r
     <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
     <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
     <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
     <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
     <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
     <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
-    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ws.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
index 1d5e73fd70d739c601c38e655aaecddb5c961492..0ef2cb2629ff6cf92549456261e2c273447064cb 100644 (file)
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
diff --git a/projects/Windows/VC14.10/curl-all.sln b/projects/Windows/VC14.10/curl-all.sln
new file mode 100644 (file)
index 0000000..d4576a1
--- /dev/null
@@ -0,0 +1,298 @@
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 15\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
+       EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
+               DLL Debug|Win32 = DLL Debug|Win32\r
+               DLL Debug|x64 = DLL Debug|x64\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
+               DLL Release|Win32 = DLL Release|Win32\r
+               DLL Release|x64 = DLL Release|x64\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
+               LIB Debug|Win32 = LIB Debug|Win32\r
+               LIB Debug|x64 = LIB Debug|x64\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
+               LIB Release|Win32 = LIB Release|Win32\r
+               LIB Release|x64 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/projects/Windows/VC14.10/lib/libcurl.sln b/projects/Windows/VC14.10/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..4de796c
--- /dev/null
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 15\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
+               DLL Debug|Win32 = DLL Debug|Win32\r
+               DLL Debug|x64 = DLL Debug|x64\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
+               DLL Release|Win32 = DLL Release|Win32\r
+               DLL Release|x64 = DLL Release|x64\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
+               LIB Debug|Win32 = LIB Debug|Win32\r
+               LIB Debug|x64 = LIB Debug|x64\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
+               LIB Release|Win32 = LIB Release|Win32\r
+               LIB Release|x64 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/projects/Windows/VC14.10/lib/libcurl.vcxproj b/projects/Windows/VC14.10/lib/libcurl.vcxproj
new file mode 100644 (file)
index 0000000..ccf69d6
--- /dev/null
@@ -0,0 +1,2675 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
+    <RootNamespace>libcurl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.10\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\altsvc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
+    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
+    <ClCompile Include="..\..\..\..\lib\bufref.c" />\r
+    <ClCompile Include="..\..\..\..\lib\c-hyper.c" />\r
+    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
+    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
+    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
+    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_get_line.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_path.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
+    <ClCompile Include="..\..\..\..\lib\doh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easyoptions.c" />\r
+    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
+    <ClCompile Include="..\..\..\..\lib\file.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fopen.c" />\r
+    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\h2h3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\headers.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hsts.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_aws_sigv4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
+    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mime.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
+    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\noproxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
+    <ClCompile Include="..\..\..\..\lib\psl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rand.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rename.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\select.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\setopt.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sha256.c" />\r
+    <ClCompile Include="..\..\..\..\lib\share.c" />\r
+    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socketpair.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strcase.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
+    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
+    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
+    <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\url.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ws.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vssh\wolfssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
+    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
+    <ClInclude Include="..\..\..\..\lib\bufref.h" />\r
+    <ClInclude Include="..\..\..\..\lib\c-hyper.h" />\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
+    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
+    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
+    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_get_line.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_krb5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_path.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sha256.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
+    <ClInclude Include="..\..\..\..\lib\doh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easy_lock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
+    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
+    <ClInclude Include="..\..\..\..\lib\file.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fopen.h" />\r
+    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\functypes.h" />\r
+    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\h2h3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
+    <ClInclude Include="..\..\..\..\lib\headers.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_aws_sigv4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
+    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
+    <ClInclude Include="..\..\..\..\lib\mime.h" />\r
+    <ClInclude Include="..\..\..\..\lib\mqtt.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\noproxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
+    <ClInclude Include="..\..\..\..\lib\psl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\quic.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rand.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rename.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\select.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setopt.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
+    <ClInclude Include="..\..\..\..\lib\share.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
+    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socketpair.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strcase.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
+    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\url.h" />\r
+    <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ws.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC14.10/lib/libcurl.vcxproj.filters b/projects/Windows/VC14.10/lib/libcurl.vcxproj.filters
new file mode 100644 (file)
index 0000000..4d6341d
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/projects/Windows/VC14.10/src/curl.sln b/projects/Windows/VC14.10/src/curl.sln
new file mode 100644 (file)
index 0000000..16d2296
--- /dev/null
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 15\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
+               DLL Debug|Win32 = DLL Debug|Win32\r
+               DLL Debug|x64 = DLL Debug|x64\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
+               DLL Release|Win32 = DLL Release|Win32\r
+               DLL Release|x64 = DLL Release|x64\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
+               LIB Debug|Win32 = LIB Debug|Win32\r
+               LIB Debug|x64 = LIB Debug|x64\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
+               LIB Release|Win32 = LIB Release|Win32\r
+               LIB Release|x64 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/projects/Windows/VC14.10/src/curl.vcxproj b/projects/Windows/VC14.10/src/curl.vcxproj
new file mode 100644 (file)
index 0000000..032e826
--- /dev/null
@@ -0,0 +1,2766 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
+    <RootNamespace>curl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v141</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.10\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.10\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.10\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.10\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_findfile.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_listhelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_progress.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout_json.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
+    <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_findfile.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_progress.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout_json.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC14.10/src/curl.vcxproj.filters b/projects/Windows/VC14.10/src/curl.vcxproj.filters
new file mode 100644 (file)
index 0000000..4d6341d
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/projects/Windows/VC14.30/curl-all.sln b/projects/Windows/VC14.30/curl-all.sln
new file mode 100644 (file)
index 0000000..88bf032
--- /dev/null
@@ -0,0 +1,298 @@
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 17\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
+       EndProjectSection\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
+               DLL Debug|Win32 = DLL Debug|Win32\r
+               DLL Debug|x64 = DLL Debug|x64\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
+               DLL Release|Win32 = DLL Release|Win32\r
+               DLL Release|x64 = DLL Release|x64\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
+               LIB Debug|Win32 = LIB Debug|Win32\r
+               LIB Debug|x64 = LIB Debug|x64\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
+               LIB Release|Win32 = LIB Release|Win32\r
+               LIB Release|x64 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/projects/Windows/VC14.30/lib/libcurl.sln b/projects/Windows/VC14.30/lib/libcurl.sln
new file mode 100644 (file)
index 0000000..171bb83
--- /dev/null
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 17\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
+               DLL Debug|Win32 = DLL Debug|Win32\r
+               DLL Debug|x64 = DLL Debug|x64\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
+               DLL Release|Win32 = DLL Release|Win32\r
+               DLL Release|x64 = DLL Release|x64\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
+               LIB Debug|Win32 = LIB Debug|Win32\r
+               LIB Debug|x64 = LIB Debug|x64\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
+               LIB Release|Win32 = LIB Release|Win32\r
+               LIB Release|x64 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/projects/Windows/VC14.30/lib/libcurl.vcxproj b/projects/Windows/VC14.30/lib/libcurl.vcxproj
new file mode 100644 (file)
index 0000000..65a6017
--- /dev/null
@@ -0,0 +1,2675 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
+    <RootNamespace>libcurl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>StaticLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>Win32</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <MkTypLibCompatible>true</MkTypLibCompatible>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14.30\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+    </ResourceCompile>\r
+    <Lib>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Lib>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\altsvc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
+    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
+    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
+    <ClCompile Include="..\..\..\..\lib\bufref.c" />\r
+    <ClCompile Include="..\..\..\..\lib\c-hyper.c" />\r
+    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
+    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
+    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
+    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_get_line.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_path.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
+    <ClCompile Include="..\..\..\..\lib\doh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
+    <ClCompile Include="..\..\..\..\lib\easyoptions.c" />\r
+    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
+    <ClCompile Include="..\..\..\..\lib\file.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fopen.c" />\r
+    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
+    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\h2h3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\headers.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
+    <ClCompile Include="..\..\..\..\lib\hsts.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_aws_sigv4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
+    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
+    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
+    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
+    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
+    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mime.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
+    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\noproxy.c" />\r
+    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
+    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
+    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
+    <ClCompile Include="..\..\..\..\lib\psl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rand.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rename.c" />\r
+    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\select.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\setopt.c" />\r
+    <ClCompile Include="..\..\..\..\lib\sha256.c" />\r
+    <ClCompile Include="..\..\..\..\lib\share.c" />\r
+    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
+    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socketpair.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strcase.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
+    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
+    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
+    <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\url.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ws.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vssh\wolfssh.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
+    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
+    <ClInclude Include="..\..\..\..\lib\bufref.h" />\r
+    <ClInclude Include="..\..\..\..\lib\c-hyper.h" />\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
+    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
+    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
+    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_get_line.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_krb5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_path.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sha256.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
+    <ClInclude Include="..\..\..\..\lib\doh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easy_lock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
+    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
+    <ClInclude Include="..\..\..\..\lib\file.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fopen.h" />\r
+    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\functypes.h" />\r
+    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\h2h3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
+    <ClInclude Include="..\..\..\..\lib\headers.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_aws_sigv4.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
+    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
+    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
+    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
+    <ClInclude Include="..\..\..\..\lib\mime.h" />\r
+    <ClInclude Include="..\..\..\..\lib\mqtt.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
+    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\noproxy.h" />\r
+    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
+    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
+    <ClInclude Include="..\..\..\..\lib\psl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\quic.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rand.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rename.h" />\r
+    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\select.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setopt.h" />\r
+    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
+    <ClInclude Include="..\..\..\..\lib\share.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
+    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
+    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socketpair.h" />\r
+    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
+    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strcase.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
+    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
+    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
+    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
+    <ClInclude Include="..\..\..\..\lib\url.h" />\r
+    <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ws.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC14.30/lib/libcurl.vcxproj.filters b/projects/Windows/VC14.30/lib/libcurl.vcxproj.filters
new file mode 100644 (file)
index 0000000..4d6341d
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/projects/Windows/VC14.30/src/curl.sln b/projects/Windows/VC14.30/src/curl.sln
new file mode 100644 (file)
index 0000000..16d2296
--- /dev/null
@@ -0,0 +1,181 @@
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 15\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
+               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
+               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
+               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
+               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
+               DLL Debug|Win32 = DLL Debug|Win32\r
+               DLL Debug|x64 = DLL Debug|x64\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
+               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
+               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
+               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
+               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
+               DLL Release|Win32 = DLL Release|Win32\r
+               DLL Release|x64 = DLL Release|x64\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
+               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
+               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
+               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
+               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
+               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
+               LIB Debug|Win32 = LIB Debug|Win32\r
+               LIB Debug|x64 = LIB Debug|x64\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
+               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
+               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
+               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
+               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
+               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
+               LIB Release|Win32 = LIB Release|Win32\r
+               LIB Release|x64 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
+               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/projects/Windows/VC14.30/src/curl.vcxproj b/projects/Windows/VC14.30/src/curl.vcxproj
new file mode 100644 (file)
index 0000000..8da28ab
--- /dev/null
@@ -0,0 +1,2766 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <ItemGroup Label="ProjectConfigurations">\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
+      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
+      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|Win32">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Debug|x64">\r
+      <Configuration>DLL Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
+      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
+      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
+      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|Win32">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="DLL Release|x64">\r
+      <Configuration>DLL Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
+      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
+      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
+      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|Win32">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Debug|x64">\r
+      <Configuration>LIB Debug</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
+      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
+      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
+      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
+      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|Win32">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>Win32</Platform>\r
+    </ProjectConfiguration>\r
+    <ProjectConfiguration Include="LIB Release|x64">\r
+      <Configuration>LIB Release</Configuration>\r
+      <Platform>x64</Platform>\r
+    </ProjectConfiguration>\r
+  </ItemGroup>\r
+  <PropertyGroup Label="Globals">\r
+    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
+    <RootNamespace>curl</RootNamespace>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
+    <ConfigurationType>Application</ConfigurationType>\r
+    <UseOfMfc>false</UseOfMfc>\r
+    <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v143</PlatformToolset>\r
+  </PropertyGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+  <ImportGroup Label="ExtensionSettings">\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+  </ImportGroup>\r
+  <PropertyGroup Label="UserMacros" />\r
+  <PropertyGroup>\r
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC14.30\$(Configuration)\</OutDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
+  </PropertyGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC14.30\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC14.30\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>Disabled</Optimization>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
+      <WarningLevel>Level4</WarningLevel>\r
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <GenerateDebugInformation>true</GenerateDebugInformation>\r
+      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
+    <Midl>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX86</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
+    <Midl>\r
+      <TargetEnvironment>X64</TargetEnvironment>\r
+      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
+      <HeaderFileName>\r
+      </HeaderFileName>\r
+    </Midl>\r
+    <ClCompile>\r
+      <Optimization>MaxSpeed</Optimization>\r
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <StringPooling>true</StringPooling>\r
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
+      <FunctionLevelLinking>true</FunctionLevelLinking>\r
+      <WarningLevel>Level4</WarningLevel>\r
+    </ClCompile>\r
+    <ResourceCompile>\r
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <Culture>0x0409</Culture>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+    </ResourceCompile>\r
+    <Link>\r
+      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
+      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC14.30\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+      <SubSystem>Console</SubSystem>\r
+      <TargetMachine>MachineX64</TargetMachine>\r
+    </Link>\r
+  </ItemDefinitionGroup>\r
+  <ItemGroup>\r
+    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
+    <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
+    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
+    <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
+    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
+    <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_findfile.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_listhelp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_progress.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_writeout_json.c" />\r
+    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
+    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
+    <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
+    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
+    <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
+    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
+    <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_findfile.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_progress.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_writeout_json.h" />\r
+    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
+  </ItemGroup>\r
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+  <ImportGroup Label="ExtensionTargets">\r
+  </ImportGroup>\r
+</Project>\r
diff --git a/projects/Windows/VC14.30/src/curl.vcxproj.filters b/projects/Windows/VC14.30/src/curl.vcxproj.filters
new file mode 100644 (file)
index 0000000..4d6341d
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index c7b860ca3587bafd61717efdffd9ff96794a1a79..7f8d052c2edf7c4fc2791387f76cf9aaced5eb20 100644 (file)
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     </Midl>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <WarningLevel>Level4</WarningLevel>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
+      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;..\..\..\..\..\wolfssl\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <WarningLevel>Level4</WarningLevel>\r
+      <DisableSpecificWarnings>4214</DisableSpecificWarnings>\r
     </ClCompile>\r
     <ResourceCompile>\r
       <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
     <ClCompile>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <MinimalRebuild>true</MinimalRebuild>\r
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
       <Optimization>MaxSpeed</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC14\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <StringPooling>true</StringPooling>\r
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
       <FunctionLevelLinking>true</FunctionLevelLinking>\r
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
     <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
     <ClCompile Include="..\..\..\..\lib\dict.c" />\r
     <ClCompile Include="..\..\..\..\lib\doh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\easy.c" />\r
     <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
     <ClCompile Include="..\..\..\..\lib\escape.c" />\r
     <ClCompile Include="..\..\..\..\lib\file.c" />\r
     <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
+    <ClCompile Include="..\..\..\..\lib\fopen.c" />\r
     <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
     <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
     <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
     <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
     <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
+    <ClCompile Include="..\..\..\..\lib\h2h3.c" />\r
     <ClCompile Include="..\..\..\..\lib\hash.c" />\r
+    <ClCompile Include="..\..\..\..\lib\headers.c" />\r
     <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
     <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
     <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
     <ClCompile Include="..\..\..\..\lib\multi.c" />\r
     <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
-    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
+    <ClCompile Include="..\..\..\..\lib\noproxy.c" />\r
     <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
     <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
     <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
     <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
     <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
     <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
     <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
-    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
+    <ClCompile Include="..\..\..\..\lib\ws.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
     <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vquic\msh3.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
     <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\hostcheck.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
     <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
+    <ClCompile Include="..\..\..\..\lib\vtls\x509asn1.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
     <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
     <ClInclude Include="..\..\..\..\lib\dict.h" />\r
     <ClInclude Include="..\..\..\..\lib\doh.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
+    <ClInclude Include="..\..\..\..\lib\easy_lock.h" />\r
     <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
     <ClInclude Include="..\..\..\..\lib\escape.h" />\r
     <ClInclude Include="..\..\..\..\lib\file.h" />\r
     <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
+    <ClInclude Include="..\..\..\..\lib\fopen.h" />\r
     <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
     <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
+    <ClInclude Include="..\..\..\..\lib\functypes.h" />\r
     <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
     <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
+    <ClInclude Include="..\..\..\..\lib\h2h3.h" />\r
     <ClInclude Include="..\..\..\..\lib\hash.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
+    <ClInclude Include="..\..\..\..\lib\headers.h" />\r
     <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
     <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
     <ClInclude Include="..\..\..\..\lib\http2.h" />\r
     <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
     <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
     <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
-    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
+    <ClInclude Include="..\..\..\..\lib\noproxy.h" />\r
     <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
     <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
     <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
     <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
     <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
     <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
     <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
-    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
+    <ClInclude Include="..\..\..\..\lib\ws.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
     <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vquic\msh3.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
     <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\hostcheck.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
     <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
+    <ClInclude Include="..\..\..\..\lib\vtls\x509asn1.h" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
index 744d31bafe8fefa84c9e48876df6f764f98852d0..aa7ff0236e7cc9ece7563ac3bd64942d95691499 100644 (file)
     </Link>\r
   </ItemDefinitionGroup>\r
   <ItemGroup>\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
     <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
     <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
     <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
+    <ClCompile Include="..\..\..\..\lib\timediff.c" />\r
     <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
     <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
     <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
     <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
     <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
+    <ClInclude Include="..\..\..\..\lib\timediff.h" />\r
     <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
     <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
     <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
diff --git a/projects/Windows/VC15/curl-all.sln b/projects/Windows/VC15/curl-all.sln
deleted file mode 100644 (file)
index d4576a1..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00\r
-# Visual Studio 15\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
-       EndProjectSection\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
-               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
-               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
-               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
-               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC15/lib/libcurl.sln b/projects/Windows/VC15/lib/libcurl.sln
deleted file mode 100644 (file)
index 4de796c..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00\r
-# Visual Studio 15\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
-               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
-               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
-               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
-               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj b/projects/Windows/VC15/lib/libcurl.vcxproj
deleted file mode 100644 (file)
index 9051489..0000000
+++ /dev/null
@@ -1,2658 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
-      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
-      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
-      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
-      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
-      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
-      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug|Win32">\r
-      <Configuration>DLL Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug|x64">\r
-      <Configuration>DLL Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
-      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
-      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
-      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
-      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
-      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
-      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release|Win32">\r
-      <Configuration>DLL Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release|x64">\r
-      <Configuration>DLL Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
-      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
-      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
-      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
-      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
-      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
-      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
-      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
-      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
-      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
-      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug|Win32">\r
-      <Configuration>LIB Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug|x64">\r
-      <Configuration>LIB Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
-      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
-      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
-      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
-      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
-      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
-      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
-      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
-      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
-      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
-      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release|Win32">\r
-      <Configuration>LIB Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release|x64">\r
-      <Configuration>LIB Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}</ProjectGuid>\r
-    <RootNamespace>libcurl</RootNamespace>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>StaticLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>DynamicLibrary</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)lib\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)lib\</IntDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)lib\</IntDir>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WOLFSSL;USE_IPV6;WOLFSSL_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\wolfssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\wolfssl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WOLFSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>Win32</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ManifestFile>$(IntDir)$(TargetFileName).intermediate.manifest</ManifestFile>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <MkTypLibCompatible>true</MkTypLibCompatible>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(OutDir)$(ProjectName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <ImportLibrary>$(TargetDir)$(TargetName).lib</ImportLibrary>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Release\include;..\..\..\..\..\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC15\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC15\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-    </ResourceCompile>\r
-    <Lib>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Lib>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\..\..\..\lib\altsvc.c" />\r
-    <ClCompile Include="..\..\..\..\lib\amigaos.c" />\r
-    <ClCompile Include="..\..\..\..\lib\asyn-ares.c" />\r
-    <ClCompile Include="..\..\..\..\lib\asyn-thread.c" />\r
-    <ClCompile Include="..\..\..\..\lib\base64.c" />\r
-    <ClCompile Include="..\..\..\..\lib\bufref.c" />\r
-    <ClCompile Include="..\..\..\..\lib\c-hyper.c" />\r
-    <ClCompile Include="..\..\..\..\lib\conncache.c" />\r
-    <ClCompile Include="..\..\..\..\lib\connect.c" />\r
-    <ClCompile Include="..\..\..\..\lib\content_encoding.c" />\r
-    <ClCompile Include="..\..\..\..\lib\cookie.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_des.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_endian.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_gethostname.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_get_line.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_gssapi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_memrchr.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_path.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_range.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_threads.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dict.c" />\r
-    <ClCompile Include="..\..\..\..\lib\doh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dotdot.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
-    <ClCompile Include="..\..\..\..\lib\easy.c" />\r
-    <ClCompile Include="..\..\..\..\lib\easygetopt.c" />\r
-    <ClCompile Include="..\..\..\..\lib\easyoptions.c" />\r
-    <ClCompile Include="..\..\..\..\lib\escape.c" />\r
-    <ClCompile Include="..\..\..\..\lib\file.c" />\r
-    <ClCompile Include="..\..\..\..\lib\fileinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\formdata.c" />\r
-    <ClCompile Include="..\..\..\..\lib\ftp.c" />\r
-    <ClCompile Include="..\..\..\..\lib\ftplistparser.c" />\r
-    <ClCompile Include="..\..\..\..\lib\getenv.c" />\r
-    <ClCompile Include="..\..\..\..\lib\getinfo.c" />\r
-    <ClCompile Include="..\..\..\..\lib\gopher.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hash.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hmac.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostasyn.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostcheck.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostip4.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostip6.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostip.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hostsyn.c" />\r
-    <ClCompile Include="..\..\..\..\lib\hsts.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http2.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http_aws_sigv4.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http_chunks.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http_digest.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http_negotiate.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http_ntlm.c" />\r
-    <ClCompile Include="..\..\..\..\lib\http_proxy.c" />\r
-    <ClCompile Include="..\..\..\..\lib\idn_win32.c" />\r
-    <ClCompile Include="..\..\..\..\lib\if2ip.c" />\r
-    <ClCompile Include="..\..\..\..\lib\imap.c" />\r
-    <ClCompile Include="..\..\..\..\lib\inet_ntop.c" />\r
-    <ClCompile Include="..\..\..\..\lib\inet_pton.c" />\r
-    <ClCompile Include="..\..\..\..\lib\krb5.c" />\r
-    <ClCompile Include="..\..\..\..\lib\ldap.c" />\r
-    <ClCompile Include="..\..\..\..\lib\llist.c" />\r
-    <ClCompile Include="..\..\..\..\lib\md4.c" />\r
-    <ClCompile Include="..\..\..\..\lib\md5.c" />\r
-    <ClCompile Include="..\..\..\..\lib\memdebug.c" />\r
-    <ClCompile Include="..\..\..\..\lib\mime.c" />\r
-    <ClCompile Include="..\..\..\..\lib\mprintf.c" />\r
-    <ClCompile Include="..\..\..\..\lib\mqtt.c" />\r
-    <ClCompile Include="..\..\..\..\lib\multi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\netrc.c" />\r
-    <ClCompile Include="..\..\..\..\lib\non-ascii.c" />\r
-    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\openldap.c" />\r
-    <ClCompile Include="..\..\..\..\lib\parsedate.c" />\r
-    <ClCompile Include="..\..\..\..\lib\pingpong.c" />\r
-    <ClCompile Include="..\..\..\..\lib\pop3.c" />\r
-    <ClCompile Include="..\..\..\..\lib\progress.c" />\r
-    <ClCompile Include="..\..\..\..\lib\psl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\rand.c" />\r
-    <ClCompile Include="..\..\..\..\lib\rename.c" />\r
-    <ClCompile Include="..\..\..\..\lib\rtsp.c" />\r
-    <ClCompile Include="..\..\..\..\lib\select.c" />\r
-    <ClCompile Include="..\..\..\..\lib\sendf.c" />\r
-    <ClCompile Include="..\..\..\..\lib\setopt.c" />\r
-    <ClCompile Include="..\..\..\..\lib\sha256.c" />\r
-    <ClCompile Include="..\..\..\..\lib\share.c" />\r
-    <ClCompile Include="..\..\..\..\lib\slist.c" />\r
-    <ClCompile Include="..\..\..\..\lib\smb.c" />\r
-    <ClCompile Include="..\..\..\..\lib\smtp.c" />\r
-    <ClCompile Include="..\..\..\..\lib\socketpair.c" />\r
-    <ClCompile Include="..\..\..\..\lib\socks.c" />\r
-    <ClCompile Include="..\..\..\..\lib\socks_gssapi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\socks_sspi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\speedcheck.c" />\r
-    <ClCompile Include="..\..\..\..\lib\splay.c" />\r
-    <ClCompile Include="..\..\..\..\lib\strcase.c" />\r
-    <ClCompile Include="..\..\..\..\lib\strdup.c" />\r
-    <ClCompile Include="..\..\..\..\lib\strerror.c" />\r
-    <ClCompile Include="..\..\..\..\lib\strtok.c" />\r
-    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
-    <ClCompile Include="..\..\..\..\lib\system_win32.c" />\r
-    <ClCompile Include="..\..\..\..\lib\telnet.c" />\r
-    <ClCompile Include="..\..\..\..\lib\tftp.c" />\r
-    <ClCompile Include="..\..\..\..\lib\timeval.c" />\r
-    <ClCompile Include="..\..\..\..\lib\transfer.c" />\r
-    <ClCompile Include="..\..\..\..\lib\urlapi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\url.c" />\r
-    <ClCompile Include="..\..\..\..\lib\version.c" />\r
-    <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
-    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
-    <ClCompile Include="..\..\..\..\lib\wildcard.c" />\r
-    <ClCompile Include="..\..\..\..\lib\x509asn1.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\cleartext.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\cram.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\digest.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\digest_sspi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\gsasl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\krb5_gssapi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\krb5_sspi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\ntlm.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\ntlm_sspi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\oauth2.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\spnego_gssapi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\spnego_sspi.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vauth\vauth.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vquic\ngtcp2.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vquic\quiche.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vquic\vquic.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vssh\libssh2.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vssh\libssh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vssh\wolfssh.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\bearssl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\gskit.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\gtls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\keylog.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mbedtls_threadlock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\mesalink.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\nss.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\openssl.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\rustls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\sectransp.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />\r
-    <ClCompile Include="..\..\..\..\lib\vtls\wolfssl.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\..\..\..\lib\altsvc.h" />\r
-    <ClInclude Include="..\..\..\..\lib\amigaos.h" />\r
-    <ClInclude Include="..\..\..\..\lib\arpa_telnet.h" />\r
-    <ClInclude Include="..\..\..\..\lib\asyn.h" />\r
-    <ClInclude Include="..\..\..\..\lib\bufref.h" />\r
-    <ClInclude Include="..\..\..\..\lib\c-hyper.h" />\r
-    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
-    <ClInclude Include="..\..\..\..\lib\conncache.h" />\r
-    <ClInclude Include="..\..\..\..\lib\connect.h" />\r
-    <ClInclude Include="..\..\..\..\lib\content_encoding.h" />\r
-    <ClInclude Include="..\..\..\..\lib\cookie.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_base64.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_des.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_endian.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_gethostname.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_get_line.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_gssapi.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_hmac.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_krb5.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_ldap.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_md4.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_md5.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_memory.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_memrchr.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_ntlm_core.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_path.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_printf.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_range.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_setup_once.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_sha256.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_sspi.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_threads.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curlx.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dict.h" />\r
-    <ClInclude Include="..\..\..\..\lib\doh.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dotdot.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
-    <ClInclude Include="..\..\..\..\lib\easyif.h" />\r
-    <ClInclude Include="..\..\..\..\lib\easyoptions.h" />\r
-    <ClInclude Include="..\..\..\..\lib\escape.h" />\r
-    <ClInclude Include="..\..\..\..\lib\file.h" />\r
-    <ClInclude Include="..\..\..\..\lib\fileinfo.h" />\r
-    <ClInclude Include="..\..\..\..\lib\formdata.h" />\r
-    <ClInclude Include="..\..\..\..\lib\ftp.h" />\r
-    <ClInclude Include="..\..\..\..\lib\ftplistparser.h" />\r
-    <ClInclude Include="..\..\..\..\lib\getinfo.h" />\r
-    <ClInclude Include="..\..\..\..\lib\gopher.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hash.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hostcheck.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hostip.h" />\r
-    <ClInclude Include="..\..\..\..\lib\hsts.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http2.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http_aws_sigv4.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http_chunks.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http_digest.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http_negotiate.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http_ntlm.h" />\r
-    <ClInclude Include="..\..\..\..\lib\http_proxy.h" />\r
-    <ClInclude Include="..\..\..\..\lib\if2ip.h" />\r
-    <ClInclude Include="..\..\..\..\lib\imap.h" />\r
-    <ClInclude Include="..\..\..\..\lib\inet_ntop.h" />\r
-    <ClInclude Include="..\..\..\..\lib\inet_pton.h" />\r
-    <ClInclude Include="..\..\..\..\lib\llist.h" />\r
-    <ClInclude Include="..\..\..\..\lib\memdebug.h" />\r
-    <ClInclude Include="..\..\..\..\lib\mime.h" />\r
-    <ClInclude Include="..\..\..\..\lib\mqtt.h" />\r
-    <ClInclude Include="..\..\..\..\lib\multihandle.h" />\r
-    <ClInclude Include="..\..\..\..\lib\multiif.h" />\r
-    <ClInclude Include="..\..\..\..\lib\netrc.h" />\r
-    <ClInclude Include="..\..\..\..\lib\non-ascii.h" />\r
-    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\parsedate.h" />\r
-    <ClInclude Include="..\..\..\..\lib\pingpong.h" />\r
-    <ClInclude Include="..\..\..\..\lib\pop3.h" />\r
-    <ClInclude Include="..\..\..\..\lib\progress.h" />\r
-    <ClInclude Include="..\..\..\..\lib\psl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\quic.h" />\r
-    <ClInclude Include="..\..\..\..\lib\rand.h" />\r
-    <ClInclude Include="..\..\..\..\lib\rename.h" />\r
-    <ClInclude Include="..\..\..\..\lib\rtsp.h" />\r
-    <ClInclude Include="..\..\..\..\lib\select.h" />\r
-    <ClInclude Include="..\..\..\..\lib\sendf.h" />\r
-    <ClInclude Include="..\..\..\..\lib\setopt.h" />\r
-    <ClInclude Include="..\..\..\..\lib\setup-vms.h" />\r
-    <ClInclude Include="..\..\..\..\lib\share.h" />\r
-    <ClInclude Include="..\..\..\..\lib\sigpipe.h" />\r
-    <ClInclude Include="..\..\..\..\lib\slist.h" />\r
-    <ClInclude Include="..\..\..\..\lib\smb.h" />\r
-    <ClInclude Include="..\..\..\..\lib\smtp.h" />\r
-    <ClInclude Include="..\..\..\..\lib\sockaddr.h" />\r
-    <ClInclude Include="..\..\..\..\lib\socketpair.h" />\r
-    <ClInclude Include="..\..\..\..\lib\socks.h" />\r
-    <ClInclude Include="..\..\..\..\lib\speedcheck.h" />\r
-    <ClInclude Include="..\..\..\..\lib\splay.h" />\r
-    <ClInclude Include="..\..\..\..\lib\strcase.h" />\r
-    <ClInclude Include="..\..\..\..\lib\strdup.h" />\r
-    <ClInclude Include="..\..\..\..\lib\strerror.h" />\r
-    <ClInclude Include="..\..\..\..\lib\strtok.h" />\r
-    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
-    <ClInclude Include="..\..\..\..\lib\system_win32.h" />\r
-    <ClInclude Include="..\..\..\..\lib\telnet.h" />\r
-    <ClInclude Include="..\..\..\..\lib\tftp.h" />\r
-    <ClInclude Include="..\..\..\..\lib\timeval.h" />\r
-    <ClInclude Include="..\..\..\..\lib\transfer.h" />\r
-    <ClInclude Include="..\..\..\..\lib\urlapi-int.h" />\r
-    <ClInclude Include="..\..\..\..\lib\urldata.h" />\r
-    <ClInclude Include="..\..\..\..\lib\url.h" />\r
-    <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
-    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
-    <ClInclude Include="..\..\..\..\lib\wildcard.h" />\r
-    <ClInclude Include="..\..\..\..\lib\x509asn1.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vauth\digest.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vauth\ntlm.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vauth\vauth.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vquic\ngtcp2.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vquic\quiche.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vquic\vquic.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vssh\ssh.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\bearssl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\gskit.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\gtls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\keylog.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mbedtls_threadlock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\mesalink.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\nssg.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\openssl.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\rustls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\schannel.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\sectransp.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\vtls.h" />\r
-    <ClInclude Include="..\..\..\..\lib\vtls\wolfssl.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ResourceCompile Include="..\..\..\..\lib\libcurl.rc" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>\r
diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj.filters b/projects/Windows/VC15/lib/libcurl.vcxproj.filters
deleted file mode 100644 (file)
index 4d6341d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/projects/Windows/VC15/src/curl.sln b/projects/Windows/VC15/src/curl.sln
deleted file mode 100644 (file)
index 16d2296..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00\r
-# Visual Studio 15\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug - DLL wolfSSL|Win32 = DLL Debug - DLL wolfSSL|Win32\r
-               DLL Debug - DLL wolfSSL|x64 = DLL Debug - DLL wolfSSL|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release - DLL wolfSSL|Win32 = DLL Release - DLL wolfSSL|Win32\r
-               DLL Release - DLL wolfSSL|x64 = DLL Release - DLL wolfSSL|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug - LIB wolfSSL|Win32 = LIB Debug - LIB wolfSSL|Win32\r
-               LIB Debug - LIB wolfSSL|x64 = LIB Debug - LIB wolfSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release - LIB wolfSSL|Win32 = LIB Release - LIB wolfSSL|Win32\r
-               LIB Release - LIB wolfSSL|x64 = LIB Release - LIB wolfSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.ActiveCfg = DLL Debug - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|Win32.Build.0 = DLL Debug - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.ActiveCfg = DLL Debug - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL wolfSSL|x64.Build.0 = DLL Debug - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.ActiveCfg = DLL Release - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|Win32.Build.0 = DLL Release - DLL wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.ActiveCfg = DLL Release - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL wolfSSL|x64.Build.0 = DLL Release - DLL wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.ActiveCfg = LIB Debug - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|Win32.Build.0 = LIB Debug - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.ActiveCfg = LIB Debug - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB wolfSSL|x64.Build.0 = LIB Debug - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.ActiveCfg = LIB Release - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|Win32.Build.0 = LIB Release - LIB wolfSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.ActiveCfg = LIB Release - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB wolfSSL|x64.Build.0 = LIB Release - LIB wolfSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC15/src/curl.vcxproj b/projects/Windows/VC15/src/curl.vcxproj
deleted file mode 100644 (file)
index d41652a..0000000
+++ /dev/null
@@ -1,2767 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
-  <ItemGroup Label="ProjectConfigurations">\r
-    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|Win32">\r
-      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL wolfSSL|x64">\r
-      <Configuration>DLL Debug - DLL wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>DLL Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|Win32">\r
-      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL OpenSSL|x64">\r
-      <Configuration>DLL Debug - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>DLL Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|Win32">\r
-      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug - DLL Windows SSPI|x64">\r
-      <Configuration>DLL Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug|Win32">\r
-      <Configuration>DLL Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Debug|x64">\r
-      <Configuration>DLL Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|Win32">\r
-      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL wolfSSL|x64">\r
-      <Configuration>DLL Release - DLL wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>DLL Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|Win32">\r
-      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL OpenSSL|x64">\r
-      <Configuration>DLL Release - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>DLL Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|Win32">\r
-      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release - DLL Windows SSPI|x64">\r
-      <Configuration>DLL Release - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release|Win32">\r
-      <Configuration>DLL Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="DLL Release|x64">\r
-      <Configuration>DLL Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>LIB Debug - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|Win32">\r
-      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL OpenSSL|x64">\r
-      <Configuration>LIB Debug - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>LIB Debug - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|Win32">\r
-      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - DLL Windows SSPI|x64">\r
-      <Configuration>LIB Debug - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|Win32">\r
-      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB wolfSSL|x64">\r
-      <Configuration>LIB Debug - LIB wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32">\r
-      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64">\r
-      <Configuration>LIB Debug - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|Win32">\r
-      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug - LIB OpenSSL|x64">\r
-      <Configuration>LIB Debug - LIB OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug|Win32">\r
-      <Configuration>LIB Debug</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Debug|x64">\r
-      <Configuration>LIB Debug</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32">\r
-      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL - DLL LibSSH2|x64">\r
-      <Configuration>LIB Release - DLL OpenSSL - DLL LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|Win32">\r
-      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL OpenSSL|x64">\r
-      <Configuration>LIB Release - DLL OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32">\r
-      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI - DLL WinIDN|x64">\r
-      <Configuration>LIB Release - DLL Windows SSPI - DLL WinIDN</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|Win32">\r
-      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - DLL Windows SSPI|x64">\r
-      <Configuration>LIB Release - DLL Windows SSPI</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|Win32">\r
-      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB wolfSSL|x64">\r
-      <Configuration>LIB Release - LIB wolfSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32">\r
-      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL - LIB LibSSH2|x64">\r
-      <Configuration>LIB Release - LIB OpenSSL - LIB LibSSH2</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|Win32">\r
-      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release - LIB OpenSSL|x64">\r
-      <Configuration>LIB Release - LIB OpenSSL</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release|Win32">\r
-      <Configuration>LIB Release</Configuration>\r
-      <Platform>Win32</Platform>\r
-    </ProjectConfiguration>\r
-    <ProjectConfiguration Include="LIB Release|x64">\r
-      <Configuration>LIB Release</Configuration>\r
-      <Platform>x64</Platform>\r
-    </ProjectConfiguration>\r
-  </ItemGroup>\r
-  <PropertyGroup Label="Globals">\r
-    <ProjectGuid>{5228E9CE-A216-422F-A5E6-58E95E2DD71D}</ProjectGuid>\r
-    <RootNamespace>curl</RootNamespace>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="Configuration">\r
-    <ConfigurationType>Application</ConfigurationType>\r
-    <UseOfMfc>false</UseOfMfc>\r
-    <CharacterSet>Unicode</CharacterSet>\r
-    <PlatformToolset>v141</PlatformToolset>\r
-  </PropertyGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
-  <ImportGroup Label="ExtensionSettings">\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'" Label="PropertySheets">\r
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
-  </ImportGroup>\r
-  <PropertyGroup Label="UserMacros" />\r
-  <PropertyGroup>\r
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">..\..\..\..\build\Win32\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">false</LinkIncremental>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">..\..\..\..\build\Win64\VC15\$(Configuration)\</OutDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(OutDir)src\</IntDir>\r
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(OutDir)src\</IntDir>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">false</LinkIncremental>\r
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">false</LinkIncremental>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)d</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">$(ProjectName)</TargetName>\r
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">$(ProjectName)</TargetName>\r
-  </PropertyGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL wolfSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB wolfSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB wolfSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;wolfssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\wolfssl\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL wolfSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DLL Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - LIB OpenSSL - LIB LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - LIB OpenSSL - LIB LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC15\LIB Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurld.lib;libcrypto.lib;libssl.lib;libssh2d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libcrypto.lib;libssl.lib;libssh2.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win32\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL OpenSSL - DLL LibSSH2|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>crypt32.lib;ws2_32.lib;wldap32.lib;libcurl.lib;libssh2.lib;libcrypto.lib;libssl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);..\..\..\..\..\openssl\build\Win64\VC15\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC15\DLL Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Debug - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>Disabled</Optimization>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>\r
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
-      <WarningLevel>Level4</WarningLevel>\r
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurld.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <GenerateDebugInformation>true</GenerateDebugInformation>\r
-      <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|Win32'">\r
-    <Midl>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win32\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX86</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='LIB Release - DLL Windows SSPI - DLL WinIDN|x64'">\r
-    <Midl>\r
-      <TargetEnvironment>X64</TargetEnvironment>\r
-      <TypeLibraryName>$(TargetDir)$(TargetName).tlb</TypeLibraryName>\r
-      <HeaderFileName>\r
-      </HeaderFileName>\r
-    </Midl>\r
-    <ClCompile>\r
-      <Optimization>MaxSpeed</Optimization>\r
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>NDEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <StringPooling>true</StringPooling>\r
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>\r
-      <FunctionLevelLinking>true</FunctionLevelLinking>\r
-      <WarningLevel>Level4</WarningLevel>\r
-    </ClCompile>\r
-    <ResourceCompile>\r
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
-      <Culture>0x0409</Culture>\r
-      <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-    </ResourceCompile>\r
-    <Link>\r
-      <AdditionalDependencies>ws2_32.lib;wldap32.lib;crypt32.lib;normaliz.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
-      <OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>\r
-      <AdditionalLibraryDirectories>..\..\..\..\build\Win64\VC15\$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
-      <SubSystem>Console</SubSystem>\r
-      <TargetMachine>MachineX64</TargetMachine>\r
-    </Link>\r
-  </ItemDefinitionGroup>\r
-  <ItemGroup>\r
-    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />\r
-    <ClCompile Include="..\..\..\..\lib\curl_multibyte.c" />\r
-    <ClCompile Include="..\..\..\..\lib\dynbuf.c" />\r
-    <ClCompile Include="..\..\..\..\lib\nonblock.c" />\r
-    <ClCompile Include="..\..\..\..\lib\strtoofft.c" />\r
-    <ClCompile Include="..\..\..\..\lib\version_win32.c" />\r
-    <ClCompile Include="..\..\..\..\lib\warnless.c" />\r
-    <ClCompile Include="..\..\..\..\src\slist_wc.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_binmode.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_bname.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cb_dbg.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cb_hdr.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cb_prg.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cb_rea.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cb_see.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cb_wrt.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_cfgable.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_convert.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_doswin.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_findfile.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_formparse.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_getparam.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_getpass.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_help.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_helpers.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_hugehelp.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_libinfo.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_listhelp.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_main.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_msgs.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_operate.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_operhlp.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_panykey.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_paramhlp.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_parsecfg.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_progress.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_setopt.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_sleep.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_strdup.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_urlglob.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_util.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_vms.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_writeout.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_writeout_json.c" />\r
-    <ClCompile Include="..\..\..\..\src\tool_xattr.c" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ClInclude Include="..\..\..\..\lib\config-win32.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_multibyte.h" />\r
-    <ClInclude Include="..\..\..\..\lib\curl_setup.h" />\r
-    <ClInclude Include="..\..\..\..\lib\dynbuf.h" />\r
-    <ClInclude Include="..\..\..\..\lib\nonblock.h" />\r
-    <ClInclude Include="..\..\..\..\lib\strtoofft.h" />\r
-    <ClInclude Include="..\..\..\..\lib\version_win32.h" />\r
-    <ClInclude Include="..\..\..\..\lib\warnless.h" />\r
-    <ClInclude Include="..\..\..\..\src\slist_wc.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_binmode.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_bname.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cb_dbg.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cb_hdr.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cb_prg.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cb_rea.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cb_see.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cb_wrt.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_cfgable.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_convert.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_doswin.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_findfile.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_formparse.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_getparam.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_getpass.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_helpers.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_help.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_hugehelp.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_libinfo.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_main.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_msgs.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_operate.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_operhlp.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_panykey.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_paramhlp.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_parsecfg.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_progress.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_sdecls.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_setopt.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_setup.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_sleep.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_strdup.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_urlglob.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_util.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_version.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_vms.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_writeout.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_writeout_json.h" />\r
-    <ClInclude Include="..\..\..\..\src\tool_xattr.h" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <ResourceCompile Include="..\..\..\..\src\curl.rc" />\r
-  </ItemGroup>\r
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
-  <ImportGroup Label="ExtensionTargets">\r
-  </ImportGroup>\r
-</Project>\r
diff --git a/projects/Windows/VC15/src/curl.vcxproj.filters b/projects/Windows/VC15/src/curl.vcxproj.filters
deleted file mode 100644 (file)
index 4d6341d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/projects/Windows/VC6/curl-all.dsw b/projects/Windows/VC6/curl-all.dsw
deleted file mode 100644 (file)
index a718e59..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00\r
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
-\r
-###############################################################################\r
-\r
-Project: "libcurl"=".\lib\libcurl.dsp" - Package Owner=<4>\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<4>\r
-{{{\r
-}}}\r
-\r
-###############################################################################\r
-\r
-Project: "curl"=".\src\curl.dsp" - Package Owner=<4>\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<4>\r
-{{{\r
-    Begin Project Dependency\r
-    Project_Dep_Name libcurl\r
-    End Project Dependency\r
-}}}\r
-\r
-###############################################################################\r
-\r
-Global:\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<3>\r
-{{{\r
-}}}\r
-\r
-###############################################################################\r
-\r
diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
deleted file mode 100644 (file)
index db26bb0..0000000
+++ /dev/null
@@ -1,1925 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libcurl" - Package Owner=<4>\r
-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
-# ** DO NOT EDIT **\r
-\r
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
-# TARGTYPE "Win32 (x86) Static Library" 0x0104\r
-\r
-CFG=libcurl - Win32 LIB Debug\r
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
-!MESSAGE use the Export Makefile command and run\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "libcurl.mak".\r
-!MESSAGE \r
-!MESSAGE You can specify a configuration when running NMAKE\r
-!MESSAGE by defining the macro CFG on the command line. For example:\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "libcurl.mak" CFG="libcurl - Win32 LIB Debug"\r
-!MESSAGE \r
-!MESSAGE Possible choices for configuration are:\r
-!MESSAGE \r
-!MESSAGE "libcurl - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Dynamic-Link Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Static Library")\r
-!MESSAGE "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Static Library")\r
-!MESSAGE \r
-\r
-# Begin Project\r
-# PROP AllowPerConfigDependencies 0\r
-# PROP Scc_ProjName ""\r
-# PROP Scc_LocalPath ""\r
-\r
-!IF  "$(CFG)" == "libcurl - Win32 DLL Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
-# ADD MTL /nologo /D "_DEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\libcurld.dll" /pdbtype:con /fixed:no\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\libcurld.dll" /pdbtype:con /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
-# ADD MTL /nologo /D "_DEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /fixed:no\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
-# ADD MTL /nologo /D "_DEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\libcurld.dll" /pdbtype:con /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
-# ADD MTL /nologo /D "_DEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\libcurld.dll" /pdbtype:con /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "_DEBUG" /win32\r
-# ADD MTL /nologo /D "_DEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no\r
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\libcurld.dll" /pdbtype:con /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
-# ADD MTL /nologo /D "NDEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /FD /EHsc /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
-# ADD MTL /nologo /D "NDEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no /release\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
-# ADD MTL /nologo /D "NDEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib /nologo /dll /pdb:none /machine:I386 /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no /release\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
-# ADD MTL /nologo /D "NDEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
-MTL=midl.exe\r
-# ADD BASE MTL /nologo /D "NDEBUG" /win32\r
-# ADD MTL /nologo /D "NDEBUG" /win32\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib /nologo /dll /pdb:none /machine:I386 /fixed:no /release\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug LIB OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Debug\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "_DEBUG" /D "BUILDING_LIBCURL" /D "DEBUGBUILD" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /GZ /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
-# ADD RSC /l 0x409 /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\libcurld.lib" /machine:I386\r
-# ADD LIB32 /nologo /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\libcurld.lib" /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\DLL Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_WINDOWS_SSPI" /D "USE_SCHANNEL" /D "USE_WIN32_IDN" /D "WANT_IDN_PROTOTYPES" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release LIB OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ELSEIF  "$(CFG)" == "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\lib"\r
-# PROP Target_Dir ""\r
-CPP=cl.exe\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\..\openssl\include\..\build\Win32\VC6\LIB Release\include" /I "..\..\..\..\..\openssl\include" /I "..\..\..\..\..\libssh2\include" /D "NDEBUG" /D "BUILDING_LIBCURL" /D "CURL_STATICLIB" /D "USE_OPENSSL" /D "USE_LIBSSH2" /D "HAVE_LIBSSH2_H" /FD /EHsc /c\r
-RSC=rc.exe\r
-# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
-# ADD RSC /l 0x409 /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LIB32=link.exe -lib\r
-# ADD BASE LIB32 /nologo /machine:I386\r
-# ADD LIB32 /nologo /machine:I386\r
-\r
-!ENDIF \r
-\r
-# Begin Target\r
-\r
-# Name "libcurl - Win32 DLL Debug"\r
-# Name "libcurl - Win32 DLL Debug DLL OpenSSL"\r
-# Name "libcurl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
-# Name "libcurl - Win32 DLL Debug DLL Windows SSPI"\r
-# Name "libcurl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
-# Name "libcurl - Win32 DLL Release"\r
-# Name "libcurl - Win32 DLL Release DLL OpenSSL"\r
-# Name "libcurl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
-# Name "libcurl - Win32 DLL Release DLL Windows SSPI"\r
-# Name "libcurl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
-# Name "libcurl - Win32 LIB Debug"\r
-# Name "libcurl - Win32 LIB Debug DLL OpenSSL"\r
-# Name "libcurl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
-# Name "libcurl - Win32 LIB Debug DLL Windows SSPI"\r
-# Name "libcurl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
-# Name "libcurl - Win32 LIB Debug LIB OpenSSL"\r
-# Name "libcurl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
-# Name "libcurl - Win32 LIB Release"\r
-# Name "libcurl - Win32 LIB Release DLL OpenSSL"\r
-# Name "libcurl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
-# Name "libcurl - Win32 LIB Release DLL Windows SSPI"\r
-# Name "libcurl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
-# Name "libcurl - Win32 LIB Release LIB OpenSSL"\r
-# Name "libcurl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
-# Begin Group "Source Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\altsvc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\amigaos.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\asyn-ares.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\asyn-thread.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\base64.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\bufref.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\c-hyper.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\conncache.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\connect.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\content_encoding.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\cookie.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_addrinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ctype.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_des.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_endian.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_fnmatch.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_gethostname.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_get_line.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_gssapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_memrchr.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_multibyte.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ntlm_core.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ntlm_wb.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_path.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_range.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_rtmp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_sasl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_threads.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dict.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\doh.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dotdot.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dynbuf.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\easy.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\easygetopt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\easyoptions.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\escape.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\file.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\fileinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\formdata.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\ftp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\ftplistparser.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\getenv.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\getinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\gopher.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hash.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hmac.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostasyn.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostcheck.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostip4.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostip6.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostip.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostsyn.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hsts.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http2.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_aws_sigv4.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_chunks.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_digest.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_negotiate.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_ntlm.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_proxy.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\idn_win32.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\if2ip.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\imap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\inet_ntop.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\inet_pton.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\krb5.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\ldap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\llist.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\md4.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\md5.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\memdebug.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\mime.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\mprintf.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\mqtt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\multi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\netrc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\non-ascii.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\nonblock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\openldap.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\parsedate.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\pingpong.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\pop3.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\progress.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\psl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\rand.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\rename.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\rtsp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\select.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\sendf.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\setopt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\sha256.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\share.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\slist.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\smb.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\smtp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\socketpair.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\socks.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\socks_gssapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\socks_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\speedcheck.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\splay.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strcase.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strdup.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strerror.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strtok.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strtoofft.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\system_win32.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\telnet.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\tftp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\timeval.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\transfer.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\urlapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\url.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\version.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\version_win32.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\warnless.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\wildcard.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\x509asn1.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\cleartext.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\cram.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\digest.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\digest_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\gsasl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\krb5_gssapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\krb5_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\ntlm.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\ntlm_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\oauth2.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\spnego_gssapi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\spnego_sspi.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\vauth.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vquic\ngtcp2.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vquic\quiche.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vquic\vquic.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vssh\libssh2.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vssh\libssh.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vssh\wolfssh.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\bearssl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\gskit.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\gtls.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\keylog.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\mbedtls.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\mbedtls_threadlock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\mesalink.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\nss.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\openssl.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\rustls.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\schannel.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\schannel_verify.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\sectransp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\vtls.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\wolfssl.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\altsvc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\amigaos.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\arpa_telnet.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\asyn.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\bufref.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\c-hyper.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\config-win32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\conncache.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\connect.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\content_encoding.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\cookie.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_addrinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_base64.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ctype.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_des.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_endian.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_fnmatch.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_gethostname.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_get_line.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_gssapi.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_hmac.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_krb5.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ldap.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_md4.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_md5.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_memory.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_memrchr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_multibyte.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ntlm_core.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ntlm_wb.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_path.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_printf.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_range.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_rtmp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_sasl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_setup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_setup_once.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_sha256.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_sspi.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_threads.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curlx.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dict.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\doh.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dotdot.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dynbuf.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\easyif.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\easyoptions.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\escape.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\file.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\fileinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\formdata.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\ftp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\ftplistparser.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\getinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\gopher.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hash.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostcheck.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hostip.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\hsts.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http2.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_aws_sigv4.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_chunks.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_digest.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_negotiate.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_ntlm.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\http_proxy.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\if2ip.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\imap.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\inet_ntop.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\inet_pton.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\llist.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\memdebug.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\mime.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\mqtt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\multihandle.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\multiif.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\netrc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\non-ascii.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\nonblock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\parsedate.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\pingpong.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\pop3.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\progress.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\psl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\quic.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\rand.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\rename.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\rtsp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\select.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\sendf.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\setopt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\setup-vms.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\share.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\sigpipe.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\slist.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\smb.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\smtp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\sockaddr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\socketpair.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\socks.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\speedcheck.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\splay.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strcase.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strdup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strerror.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strtok.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strtoofft.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\system_win32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\telnet.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\tftp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\timeval.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\transfer.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\urlapi-int.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\urldata.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\url.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\version_win32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\warnless.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\wildcard.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\x509asn1.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\digest.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\ntlm.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vauth\vauth.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vquic\ngtcp2.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vquic\quiche.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vquic\vquic.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vssh\ssh.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\bearssl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\gskit.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\gtls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\keylog.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\mbedtls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\mbedtls_threadlock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\mesalink.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\nssg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\openssl.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\rustls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\schannel.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\sectransp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\vtls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\vtls\wolfssl.h\r
-# End Source File\r
-# End Group\r
-# Begin Group "Resource Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\libcurl.rc\r
-# End Source File\r
-# End Group\r
-# End Target\r
-# End Project\r
diff --git a/projects/Windows/VC6/lib/libcurl.dsw b/projects/Windows/VC6/lib/libcurl.dsw
deleted file mode 100644 (file)
index e07624d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00\r
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
-\r
-###############################################################################\r
-\r
-Project: "libcurl"=".\libcurl.dsp" - Package Owner=<4>\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<4>\r
-{{{\r
-}}}\r
-\r
-###############################################################################\r
-\r
-Global:\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<3>\r
-{{{\r
-}}}\r
-\r
-###############################################################################\r
-\r
diff --git a/projects/Windows/VC6/src/curl.dsp b/projects/Windows/VC6/src/curl.dsp
deleted file mode 100644 (file)
index 31445d7..0000000
+++ /dev/null
@@ -1,1094 +0,0 @@
-# Microsoft Developer Studio Project File - Name="curl" - Package Owner=<4>\r
-# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
-# ** DO NOT EDIT **\r
-\r
-# TARGTYPE "Win32 (x86) Console Application" 0x0103\r
-\r
-CFG=curl - Win32 LIB Debug\r
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,\r
-!MESSAGE use the Export Makefile command and run\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "curl.mak".\r
-!MESSAGE \r
-!MESSAGE You can specify a configuration when running NMAKE\r
-!MESSAGE by defining the macro CFG on the command line. For example:\r
-!MESSAGE \r
-!MESSAGE NMAKE /f "curl.mak" CFG="curl - Win32 LIB Debug"\r
-!MESSAGE \r
-!MESSAGE Possible choices for configuration are:\r
-!MESSAGE \r
-!MESSAGE "curl - Win32 DLL Debug" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Release" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release DLL OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release LIB OpenSSL" (based on "Win32 (x86) Console Application")\r
-!MESSAGE "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2" (based on "Win32 (x86) Console Application")\r
-!MESSAGE \r
-\r
-# Begin Project\r
-# PROP AllowPerConfigDependencies 0\r
-# PROP Scc_ProjName ""\r
-# PROP Scc_LocalPath ""\r
-CPP=cl.exe\r
-RSC=rc.exe\r
-\r
-!IF  "$(CFG)" == "curl - Win32 DLL Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL OpenSSL" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\DLL Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\src"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "NDEBUG" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL OpenSSL" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-# ADD LINK32 wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\DLL Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curl.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /fixed:no\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL - DLL LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /fixed:no\r
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 1\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 1\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD CPP /nologo /MDd /W4 /Zi /Od /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_DEBUG" /D "_CONSOLE" /D "DEBUGBUILD" /D "CURL_STATICLIB" /FD /EHsc /GZ /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "_DEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no\r
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL - LIB LibSSH2\curld.exe" /pdbtype:con /libpath:"..\..\..\..\build\Win32\VC6\LIB Debug - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Debug" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Debug" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "_CONSOLE" /D "NDEBUG" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /fixed:no\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no\r
-# ADD LINK32 crypt32.lib advapi32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL - DLL LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\DLL Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\DLL Release" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no\r
-# ADD LINK32 advapi32.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-# ADD LINK32 advapi32.lib normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - DLL Windows SSPI - DLL WinIDN" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /fixed:no\r
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /fixed:no\r
-\r
-!ELSEIF  "$(CFG)" == "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
-\r
-# PROP BASE Use_MFC 0\r
-# PROP BASE Use_Debug_Libraries 0\r
-# PROP BASE Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
-# PROP BASE Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"\r
-# PROP BASE Ignore_Export_Lib 0\r
-# PROP BASE Target_Dir ""\r
-# PROP Use_MFC 0\r
-# PROP Use_Debug_Libraries 0\r
-# PROP Output_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2"\r
-# PROP Intermediate_Dir "..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\src"\r
-# PROP Ignore_Export_Lib 0\r
-# PROP Target_Dir ""\r
-# ADD BASE CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD CPP /nologo /MD /W4 /O2 /I "$(ProgramFiles)\Microsoft Platform SDK\Include" /I "..\..\..\..\include" /I "..\..\..\..\lib" /I "..\..\..\..\src" /D "NDEBUG" /D "_CONSOLE" /D "CURL_STATICLIB" /FD /EHsc /c\r
-# ADD BASE RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-# ADD RSC /l 0x409 /i "..\..\..\..\include" /d "NDEBUG"\r
-BSC32=bscmake.exe\r
-# ADD BASE BSC32 /nologo\r
-# ADD BSC32 /nologo\r
-LINK32=link.exe\r
-# ADD BASE LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no\r
-# ADD LINK32 advapi32.lib crypt32.lib gdi32.lib user32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL - LIB LibSSH2\curl.exe" /libpath:"..\..\..\..\build\Win32\VC6\LIB Release - LIB OpenSSL" /libpath:"..\..\..\..\..\openssl\build\Win32\VC6\LIB Release" /libpath:"..\..\..\..\..\libssh2\build\Win32\VC6\LIB Release" /fixed:no\r
-\r
-!ENDIF \r
-\r
-# Begin Target\r
-\r
-# Name "curl - Win32 DLL Debug"\r
-# Name "curl - Win32 DLL Debug DLL OpenSSL"\r
-# Name "curl - Win32 DLL Debug DLL OpenSSL DLL LibSSH2"\r
-# Name "curl - Win32 DLL Debug DLL Windows SSPI"\r
-# Name "curl - Win32 DLL Debug DLL Windows SSPI DLL WinIDN"\r
-# Name "curl - Win32 DLL Release"\r
-# Name "curl - Win32 DLL Release DLL OpenSSL"\r
-# Name "curl - Win32 DLL Release DLL OpenSSL DLL LibSSH2"\r
-# Name "curl - Win32 DLL Release DLL Windows SSPI"\r
-# Name "curl - Win32 DLL Release DLL Windows SSPI DLL WinIDN"\r
-# Name "curl - Win32 LIB Debug"\r
-# Name "curl - Win32 LIB Debug DLL OpenSSL"\r
-# Name "curl - Win32 LIB Debug DLL OpenSSL DLL LibSSH2"\r
-# Name "curl - Win32 LIB Debug DLL Windows SSPI"\r
-# Name "curl - Win32 LIB Debug DLL Windows SSPI DLL WinIDN"\r
-# Name "curl - Win32 LIB Debug LIB OpenSSL"\r
-# Name "curl - Win32 LIB Debug LIB OpenSSL LIB LibSSH2"\r
-# Name "curl - Win32 LIB Release"\r
-# Name "curl - Win32 LIB Release DLL OpenSSL"\r
-# Name "curl - Win32 LIB Release DLL OpenSSL DLL LibSSH2"\r
-# Name "curl - Win32 LIB Release DLL Windows SSPI"\r
-# Name "curl - Win32 LIB Release DLL Windows SSPI DLL WinIDN"\r
-# Name "curl - Win32 LIB Release LIB OpenSSL"\r
-# Name "curl - Win32 LIB Release LIB OpenSSL LIB LibSSH2"\r
-# Begin Group "Source Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ctype.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_multibyte.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dynbuf.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\nonblock.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strtoofft.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\version_win32.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\warnless.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\slist_wc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_binmode.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_bname.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_dbg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_hdr.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_prg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_rea.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_see.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_wrt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cfgable.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_convert.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_dirhie.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_doswin.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_easysrc.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_filetime.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_findfile.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_formparse.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_getparam.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_getpass.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_help.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_helpers.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_hugehelp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_libinfo.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_listhelp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_main.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_msgs.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_operate.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_operhlp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_panykey.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_paramhlp.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_parsecfg.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_progress.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_setopt.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_sleep.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_strdup.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_urlglob.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_util.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_vms.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_writeout.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_writeout_json.c\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_xattr.c\r
-# End Source File\r
-# End Group\r
-# Begin Group "Header Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\config-win32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_ctype.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_multibyte.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\curl_setup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\dynbuf.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\nonblock.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\strtoofft.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\version_win32.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\lib\warnless.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\slist_wc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_binmode.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_bname.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_dbg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_hdr.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_prg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_rea.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_see.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cb_wrt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_cfgable.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_convert.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_dirhie.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_doswin.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_easysrc.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_filetime.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_findfile.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_formparse.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_getparam.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_getpass.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_helpers.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_help.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_hugehelp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_libinfo.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_main.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_msgs.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_operate.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_operhlp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_panykey.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_paramhlp.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_parsecfg.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_progress.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_sdecls.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_setopt.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_setup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_sleep.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_strdup.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_urlglob.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_util.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_version.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_vms.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_writeout.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_writeout_json.h\r
-# End Source File\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\tool_xattr.h\r
-# End Source File\r
-# End Group\r
-# Begin Group "Resource Files"\r
-\r
-# PROP Default_Filter ""\r
-# Begin Source File\r
-\r
-SOURCE=..\..\..\..\src\curl.rc\r
-# End Source File\r
-# End Group\r
-# End Target\r
-# End Project\r
diff --git a/projects/Windows/VC6/src/curl.dsw b/projects/Windows/VC6/src/curl.dsw
deleted file mode 100644 (file)
index a7adbce..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00\r
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\r
-\r
-###############################################################################\r
-\r
-Project: "curl"=".\curl.dsp" - Package Owner=<4>\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<4>\r
-{{{\r
-}}}\r
-\r
-###############################################################################\r
-\r
-Global:\r
-\r
-Package=<5>\r
-{{{\r
-}}}\r
-\r
-Package=<3>\r
-{{{\r
-}}}\r
-\r
-###############################################################################\r
-\r
diff --git a/projects/Windows/VC7.1/curl-all.sln b/projects/Windows/VC7.1/curl-all.sln
deleted file mode 100644 (file)
index 0dd90b4..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
-       EndProjectSection\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-       EndProjectSection\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfiguration) = preSolution\r
-               DLL Debug = DLL Debug\r
-               DLL Debug - DLL OpenSSL = DLL Debug - DLL OpenSSL\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2 = DLL Debug - DLL OpenSSL - DLL LibSSH2\r
-               DLL Debug - DLL Windows SSPI = DLL Debug - DLL Windows SSPI\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN = DLL Debug - DLL Windows SSPI - DLL WinIDN\r
-               DLL Release = DLL Release\r
-               DLL Release - DLL OpenSSL = DLL Release - DLL OpenSSL\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2 = DLL Release - DLL OpenSSL - DLL LibSSH2\r
-               DLL Release - DLL Windows SSPI = DLL Release - DLL Windows SSPI\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN = DLL Release - DLL Windows SSPI - DLL WinIDN\r
-               LIB Debug = LIB Debug\r
-               LIB Debug - DLL OpenSSL = LIB Debug - DLL OpenSSL\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2 = LIB Debug - DLL OpenSSL - DLL LibSSH2\r
-               LIB Debug - DLL Windows SSPI = LIB Debug - DLL Windows SSPI\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN = LIB Debug - DLL Windows SSPI - DLL WinIDN\r
-               LIB Debug - LIB OpenSSL = LIB Debug - LIB OpenSSL\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2 = LIB Debug - LIB OpenSSL - LIB LibSSH2\r
-               LIB Release = LIB Release\r
-               LIB Release - DLL OpenSSL = LIB Release - DLL OpenSSL\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2 = LIB Release - DLL OpenSSL - DLL LibSSH2\r
-               LIB Release - DLL Windows SSPI = LIB Release - DLL Windows SSPI\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN = LIB Release - DLL Windows SSPI - DLL WinIDN\r
-               LIB Release - LIB OpenSSL = LIB Release - LIB OpenSSL\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2 = LIB Release - LIB OpenSSL - LIB LibSSH2\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfiguration) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityGlobals) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityAddIns) = postSolution\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC7.1/lib/libcurl.sln b/projects/Windows/VC7.1/lib/libcurl.sln
deleted file mode 100644 (file)
index c5ca5d4..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-       EndProjectSection\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfiguration) = preSolution\r
-               DLL Debug = DLL Debug\r
-               DLL Debug - DLL OpenSSL = DLL Debug - DLL OpenSSL\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2 = DLL Debug - DLL OpenSSL - DLL LibSSH2\r
-               DLL Debug - DLL Windows SSPI = DLL Debug - DLL Windows SSPI\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN = DLL Debug - DLL Windows SSPI - DLL WinIDN\r
-               DLL Release = DLL Release\r
-               DLL Release - DLL OpenSSL = DLL Release - DLL OpenSSL\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2 = DLL Release - DLL OpenSSL - DLL LibSSH2\r
-               DLL Release - DLL Windows SSPI = DLL Release - DLL Windows SSPI\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN = DLL Release - DLL Windows SSPI - DLL WinIDN\r
-               LIB Debug = LIB Debug\r
-               LIB Debug - DLL OpenSSL = LIB Debug - DLL OpenSSL\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2 = LIB Debug - DLL OpenSSL - DLL LibSSH2\r
-               LIB Debug - DLL Windows SSPI = LIB Debug - DLL Windows SSPI\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN = LIB Debug - DLL Windows SSPI - DLL WinIDN\r
-               LIB Debug - LIB OpenSSL = LIB Debug - LIB OpenSSL\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2 = LIB Debug - LIB OpenSSL - LIB LibSSH2\r
-               LIB Release = LIB Release\r
-               LIB Release - DLL OpenSSL = LIB Release - DLL OpenSSL\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2 = LIB Release - DLL OpenSSL - DLL LibSSH2\r
-               LIB Release - DLL Windows SSPI = LIB Release - DLL Windows SSPI\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN = LIB Release - DLL Windows SSPI - DLL WinIDN\r
-               LIB Release - LIB OpenSSL = LIB Release - LIB OpenSSL\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2 = LIB Release - LIB OpenSSL - LIB LibSSH2\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfiguration) = postSolution\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityGlobals) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityAddIns) = postSolution\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC7.1/lib/libcurl.vcproj b/projects/Windows/VC7.1/lib/libcurl.vcproj
deleted file mode 100644 (file)
index cf292d9..0000000
+++ /dev/null
@@ -1,2206 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="7.10"\r
-       Name="libcurl"\r
-       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-       SccProjectName=""\r
-       SccLocalPath="">\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"/>\r
-       </Platforms>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Release\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7.1\LIB Debug\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-ares.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-thread.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\base64.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easy.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easygetopt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getenv.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hmac.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostasyn.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip4.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip6.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostsyn.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\idn_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\krb5.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ldap.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md4.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md5.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mprintf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\openldap.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sha256.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_gssapi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_sspi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.c">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\arpa_telnet.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_base64.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_hmac.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_krb5.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ldap.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md4.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md5.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memory.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_printf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup_once.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sha256.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curlx.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyif.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multihandle.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multiif.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\quic.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setup-vms.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sigpipe.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sockaddr.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi-int.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urldata.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.h">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\libcurl.rc">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vauth"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cleartext.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cram.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\gsasl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\oauth2.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vquic"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vssh"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh2.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\wolfssh.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\ssh.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vtls"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nss.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nssg.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC7.1/src/curl.sln b/projects/Windows/VC7.1/src/curl.sln
deleted file mode 100644 (file)
index d92eb5d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-       EndProjectSection\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfiguration) = preSolution\r
-               DLL Debug = DLL Debug\r
-               DLL Debug - DLL OpenSSL = DLL Debug - DLL OpenSSL\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2 = DLL Debug - DLL OpenSSL - DLL LibSSH2\r
-               DLL Debug - DLL Windows SSPI = DLL Debug - DLL Windows SSPI\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN = DLL Debug - DLL Windows SSPI - DLL WinIDN\r
-               DLL Release = DLL Release\r
-               DLL Release - DLL OpenSSL = DLL Release - DLL OpenSSL\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2 = DLL Release - DLL OpenSSL - DLL LibSSH2\r
-               DLL Release - DLL Windows SSPI = DLL Release - DLL Windows SSPI\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN = DLL Release - DLL Windows SSPI - DLL WinIDN\r
-               LIB Debug = LIB Debug\r
-               LIB Debug - DLL OpenSSL = LIB Debug - DLL OpenSSL\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2 = LIB Debug - DLL OpenSSL - DLL LibSSH2\r
-               LIB Debug - DLL Windows SSPI = LIB Debug - DLL Windows SSPI\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN = LIB Debug - DLL Windows SSPI - DLL WinIDN\r
-               LIB Debug - LIB OpenSSL = LIB Debug - LIB OpenSSL\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2 = LIB Debug - LIB OpenSSL - LIB LibSSH2\r
-               LIB Release = LIB Release\r
-               LIB Release - DLL OpenSSL = LIB Release - DLL OpenSSL\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2 = LIB Release - DLL OpenSSL - DLL LibSSH2\r
-               LIB Release - DLL Windows SSPI = LIB Release - DLL Windows SSPI\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN = LIB Release - DLL Windows SSPI - DLL WinIDN\r
-               LIB Release - LIB OpenSSL = LIB Release - LIB OpenSSL\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2 = LIB Release - LIB OpenSSL - LIB LibSSH2\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfiguration) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityGlobals) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityAddIns) = postSolution\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC7.1/src/curl.vcproj b/projects/Windows/VC7.1/src/curl.vcproj
deleted file mode 100644 (file)
index ee434cf..0000000
+++ /dev/null
@@ -1,1679 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="7.10"\r
-       Name="curl"\r
-       SccProjectName=""\r
-       SccLocalPath="">\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"/>\r
-       </Platforms>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\DLL Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7.1\LIB Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7.1\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7.1\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-                       <Tool\r
-                               Name="VCManagedWrapperGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_listhelp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.c">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sdecls.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_version.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.h">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\curl.rc">\r
-                       </File>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC7/curl-all.sln b/projects/Windows/VC7/curl-all.sln
deleted file mode 100644 (file)
index 879f7d1..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfiguration) = preSolution\r
-               ConfigName.0 = DLL Debug\r
-               ConfigName.1 = DLL Debug - DLL OpenSSL\r
-               ConfigName.2 = DLL Debug - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.3 = DLL Debug - DLL Windows SSPI\r
-               ConfigName.4 = DLL Debug - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.5 = DLL Release\r
-               ConfigName.6 = DLL Release - DLL OpenSSL\r
-               ConfigName.7 = DLL Release - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.8 = DLL Release - DLL Windows SSPI\r
-               ConfigName.9 = DLL Release - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.10 = LIB Debug\r
-               ConfigName.11 = LIB Debug - DLL OpenSSL\r
-               ConfigName.12 = LIB Debug - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.13 = LIB Debug - DLL Windows SSPI\r
-               ConfigName.14 = LIB Debug - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.15 = LIB Debug - LIB OpenSSL\r
-               ConfigName.16 = LIB Debug - LIB OpenSSL - LIB LibSSH2\r
-               ConfigName.17 = LIB Release\r
-               ConfigName.18 = LIB Release - DLL OpenSSL\r
-               ConfigName.19 = LIB Release - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.20 = LIB Release - DLL Windows SSPI\r
-               ConfigName.21 = LIB Release - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.22 = LIB Release - LIB OpenSSL\r
-               ConfigName.23 = LIB Release - LIB OpenSSL - LIB LibSSH2\r
-       EndGlobalSection\r
-       GlobalSection(ProjectDependencies) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.0 = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfiguration) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityGlobals) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityAddIns) = postSolution\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC7/lib/libcurl.sln b/projects/Windows/VC7/lib/libcurl.sln
deleted file mode 100644 (file)
index cc375bb..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfiguration) = preSolution\r
-               ConfigName.0 = DLL Debug\r
-               ConfigName.1 = DLL Debug - DLL OpenSSL\r
-               ConfigName.2 = DLL Debug - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.3 = DLL Debug - DLL Windows SSPI\r
-               ConfigName.4 = DLL Debug - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.5 = DLL Release\r
-               ConfigName.6 = DLL Release - DLL OpenSSL\r
-               ConfigName.7 = DLL Release - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.8 = DLL Release - DLL Windows SSPI\r
-               ConfigName.9 = DLL Release - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.10 = LIB Debug\r
-               ConfigName.11 = LIB Debug - DLL OpenSSL\r
-               ConfigName.12 = LIB Debug - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.13 = LIB Debug - DLL Windows SSPI\r
-               ConfigName.14 = LIB Debug - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.15 = LIB Debug - LIB OpenSSL\r
-               ConfigName.16 = LIB Debug - LIB OpenSSL - LIB LibSSH2\r
-               ConfigName.17 = LIB Release\r
-               ConfigName.18 = LIB Release - DLL OpenSSL\r
-               ConfigName.19 = LIB Release - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.20 = LIB Release - DLL Windows SSPI\r
-               ConfigName.21 = LIB Release - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.22 = LIB Release - LIB OpenSSL\r
-               ConfigName.23 = LIB Release - LIB OpenSSL - LIB LibSSH2\r
-       EndGlobalSection\r
-       GlobalSection(ProjectDependencies) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfiguration) = postSolution\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityGlobals) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityAddIns) = postSolution\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC7/lib/libcurl.vcproj b/projects/Windows/VC7/lib/libcurl.vcproj
deleted file mode 100644 (file)
index 57f76d3..0000000
+++ /dev/null
@@ -1,2060 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="7.00"\r
-       Name="libcurl"\r
-       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-       SccProjectName=""\r
-       SccLocalPath="">\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"/>\r
-       </Platforms>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Release\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Release\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\DLL Debug\include,..\..\..\..\..\openssl\include,..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\..\openssl\include\..\build\Win32\VC7\LIB Debug\include,..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               SetChecksum="TRUE"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               SuppressStartupBanner="TRUE"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               AdditionalOptions="/machine:I386 "\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                               SuppressStartupBanner="TRUE"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-               </Configuration>\r
-       </Configurations>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-ares.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-thread.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\base64.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easy.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easygetopt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getenv.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hmac.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostasyn.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip4.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip6.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostsyn.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\idn_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\krb5.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ldap.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md4.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md5.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mprintf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\openldap.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sha256.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_gssapi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_sspi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.c">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\arpa_telnet.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_base64.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_hmac.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_krb5.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ldap.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md4.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md5.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memory.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_printf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup_once.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sha256.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curlx.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyif.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multihandle.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multiif.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\quic.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setup-vms.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sigpipe.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sockaddr.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi-int.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urldata.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.h">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\libcurl.rc">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vauth"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cleartext.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cram.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\gsasl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\oauth2.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vquic"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vssh"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh2.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\wolfssh.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\ssh.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vtls"\r
-                       Filter="">\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nss.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.c">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.c">\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               Filter="">\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nssg.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.h">\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.h">\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC7/src/curl.sln b/projects/Windows/VC7/src/curl.sln
deleted file mode 100644 (file)
index 8e17f81..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfiguration) = preSolution\r
-               ConfigName.0 = DLL Debug\r
-               ConfigName.1 = DLL Debug - DLL OpenSSL\r
-               ConfigName.2 = DLL Debug - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.3 = DLL Debug - DLL Windows SSPI\r
-               ConfigName.4 = DLL Debug - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.5 = DLL Release\r
-               ConfigName.6 = DLL Release - DLL OpenSSL\r
-               ConfigName.7 = DLL Release - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.8 = DLL Release - DLL Windows SSPI\r
-               ConfigName.9 = DLL Release - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.10 = LIB Debug\r
-               ConfigName.11 = LIB Debug - DLL OpenSSL\r
-               ConfigName.12 = LIB Debug - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.13 = LIB Debug - DLL Windows SSPI\r
-               ConfigName.14 = LIB Debug - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.15 = LIB Debug - LIB OpenSSL\r
-               ConfigName.16 = LIB Debug - LIB OpenSSL - LIB LibSSH2\r
-               ConfigName.17 = LIB Release\r
-               ConfigName.18 = LIB Release - DLL OpenSSL\r
-               ConfigName.19 = LIB Release - DLL OpenSSL - DLL LibSSH2\r
-               ConfigName.20 = LIB Release - DLL Windows SSPI\r
-               ConfigName.21 = LIB Release - DLL Windows SSPI - DLL WinIDN\r
-               ConfigName.22 = LIB Release - LIB OpenSSL\r
-               ConfigName.23 = LIB Release - LIB OpenSSL - LIB LibSSH2\r
-       EndGlobalSection\r
-       GlobalSection(ProjectDependencies) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfiguration) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityGlobals) = postSolution\r
-       EndGlobalSection\r
-       GlobalSection(ExtensibilityAddIns) = postSolution\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC7/src/curl.vcproj b/projects/Windows/VC7/src/curl.vcproj
deleted file mode 100644 (file)
index 0f8df7f..0000000
+++ /dev/null
@@ -1,1533 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="7.00"\r
-       Name="curl"\r
-       SccProjectName=""\r
-       SccLocalPath="">\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"/>\r
-       </Platforms>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Debug,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Release,..\..\..\..\..\libssh2\build\Win32\VC7\DLL Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\LIB Release,..\..\..\..\..\libssh2\build\Win32\VC7\LIB Release"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="crypt32.lib wldap32.lib ws2_32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName),..\..\..\..\..\openssl\build\Win32\VC7\DLL Debug"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="wldap32.lib ws2_32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               DebugInformationFormat="3"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               GenerateDebugInformation="TRUE"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory=".\..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="FALSE">\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               AdditionalOptions="/EHsc "\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="$(ProgramFiles)\Microsoft Platform SDK\Include,..\..\..\..\include,..\..\..\..\lib,..\..\..\..\src"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="TRUE"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="TRUE"\r
-                               WarningLevel="4"\r
-                               SuppressStartupBanner="TRUE"\r
-                               CompileAs="0"/>\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"/>\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalOptions="/MACHINE:I386 /FIXED:NO"\r
-                               AdditionalDependencies="normaliz.lib wldap32.lib ws2_32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               SuppressStartupBanner="TRUE"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC7\$(ConfigurationName)"\r
-                               SubSystem="1"/>\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"/>\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"/>\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"/>\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"/>\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"/>\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"/>\r
-               </Configuration>\r
-       </Configurations>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_listhelp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.c">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.c">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sdecls.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_version.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.h">\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.h">\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       Filter="">\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\curl.rc">\r
-                       </File>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC8/curl-all.sln b/projects/Windows/VC8/curl-all.sln
deleted file mode 100644 (file)
index 02961e0..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00\r
-# Visual Studio 2005\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
-       EndProjectSection\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC8/lib/libcurl.sln b/projects/Windows/VC8/lib/libcurl.sln
deleted file mode 100644 (file)
index b9cd13e..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00\r
-# Visual Studio 2005\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
deleted file mode 100644 (file)
index 3ed378f..0000000
+++ /dev/null
@@ -1,4863 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="8.00"\r
-       Name="libcurl"\r
-       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-       RootNamespace="libcurl"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-               <Platform\r
-                       Name="x64"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC8\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC8\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-ares.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-thread.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\base64.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easy.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easygetopt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getenv.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hmac.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostasyn.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip4.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip6.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostsyn.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\idn_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\krb5.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ldap.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md4.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md5.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mprintf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\openldap.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sha256.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_gssapi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_sspi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.c"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\arpa_telnet.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_base64.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_hmac.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_krb5.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ldap.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md4.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md5.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memory.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_printf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup_once.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sha256.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curlx.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyif.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multihandle.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multiif.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\quic.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setup-vms.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sigpipe.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sockaddr.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi-int.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urldata.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.h"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\libcurl.rc"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vauth"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cleartext.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cram.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\gsasl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\oauth2.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vquic"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vssh"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh2.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\wolfssh.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\ssh.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vtls"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nss.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nssg.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC8/src/curl.sln b/projects/Windows/VC8/src/curl.sln
deleted file mode 100644 (file)
index 088d133..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 9.00\r
-# Visual Studio 2005\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC8/src/curl.vcproj b/projects/Windows/VC8/src/curl.vcproj
deleted file mode 100644 (file)
index 147a2c4..0000000
+++ /dev/null
@@ -1,4499 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="8.00"\r
-       Name="curl"\r
-       ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       RootNamespace="curl"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-               <Platform\r
-                       Name="x64"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC8\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC8\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC8\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC8\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC8\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC8\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebDeploymentTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_listhelp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.c"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sdecls.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_version.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.h"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\curl.rc"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC9/curl-all.sln b/projects/Windows/VC9/curl-all.sln
deleted file mode 100644 (file)
index e15213a..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00\r
-# Visual Studio 2008\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}\r
-       EndProjectSection\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "lib\libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC9/lib/libcurl.sln b/projects/Windows/VC9/lib/libcurl.sln
deleted file mode 100644 (file)
index 7e01073..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00\r
-# Visual Studio 2008\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC9/lib/libcurl.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
deleted file mode 100644 (file)
index 35ae56e..0000000
+++ /dev/null
@@ -1,4804 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="9.00"\r
-       Name="libcurl"\r
-       ProjectGUID="{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"\r
-       RootNamespace="libcurl"\r
-       TargetFrameworkVersion="131072"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-               <Platform\r
-                       Name="x64"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Debug\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Debug\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\DLL Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Release\include;..\..\..\..\..\openssl\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_IPV6"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win32\VC9\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib;..\..\..\..\..\openssl\include\..\build\Win64\VC9\LIB Release\include;..\..\..\..\..\openssl\include;..\..\..\..\..\libssh2\include"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_OPENSSL;USE_LIBSSH2;USE_IPV6;HAVE_LIBSSH2_H"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="1"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ManifestFile="$(IntDir)\$(TargetFileName).intermediate.manifest"\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="2"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               MkTypLibCompatible="true"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(OutDir)\$(ProjectName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).dll"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories=""\r
-                               ImportLibrary="$(TargetDir)$(TargetName).lib"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;BUILDING_LIBCURL;DEBUGBUILD;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\lib"\r
-                       ConfigurationType="4"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;BUILDING_LIBCURL;CURL_STATICLIB;USE_WINDOWS_SSPI;USE_SCHANNEL;USE_WIN32_IDN;USE_IPV6;WANT_IDN_PROTOTYPES"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLibrarianTool"\r
-                               OutputFile="$(OutDir)\$(ProjectName).lib"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-ares.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn-thread.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\base64.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easy.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easygetopt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getenv.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hmac.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostasyn.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip4.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip6.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostsyn.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\idn_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\krb5.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ldap.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md4.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\md5.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mprintf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\openldap.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sha256.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_gssapi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks_sspi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.c"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\altsvc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\amigaos.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\arpa_telnet.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\asyn.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\bufref.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\c-hyper.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\conncache.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\connect.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\content_encoding.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\cookie.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_addrinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_base64.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_des.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_endian.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_fnmatch.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gethostname.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_get_line.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_gssapi.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_hmac.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_krb5.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ldap.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md4.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_md5.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memory.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_memrchr.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_core.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ntlm_wb.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_path.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_printf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_range.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_rtmp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sasl.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup_once.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sha256.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_sspi.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_threads.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curlx.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dict.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\doh.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dotdot.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyif.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\easyoptions.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\escape.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\file.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\fileinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\formdata.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\ftplistparser.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\getinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\gopher.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hash.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostcheck.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hostip.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\hsts.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http2.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_aws_sigv4.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_chunks.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_digest.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_negotiate.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_ntlm.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\http_proxy.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\if2ip.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\imap.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_ntop.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\inet_pton.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\llist.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\memdebug.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mime.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\mqtt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multihandle.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\multiif.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\netrc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\non-ascii.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\parsedate.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pingpong.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\pop3.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\progress.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\psl.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\quic.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rand.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rename.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\rtsp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\select.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sendf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setopt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\setup-vms.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\share.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sigpipe.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\slist.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smb.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\smtp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\sockaddr.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socketpair.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\socks.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\speedcheck.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\splay.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strcase.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strdup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strerror.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtok.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\system_win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\telnet.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\tftp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\timeval.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\transfer.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urlapi-int.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\urldata.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\url.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\wildcard.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\x509asn1.h"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\libcurl.rc"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vauth"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cleartext.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\cram.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\gsasl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_gssapi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\krb5_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\oauth2.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_gssapi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\spnego_sspi.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\digest.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\ntlm.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vauth\vauth.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vquic"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\ngtcp2.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\quiche.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vquic\vquic.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vssh"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh2.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\libssh.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\wolfssh.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vssh\ssh.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-               <Filter\r
-                       Name="vtls"\r
-                       >\r
-                       <Filter\r
-                               Name="Source Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nss.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.c"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.c"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-                       <Filter\r
-                               Name="Header Files"\r
-                               >\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\bearssl.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gskit.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\gtls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\keylog.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mbedtls_threadlock.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\mesalink.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\nssg.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\openssl.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\rustls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\schannel.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\sectransp.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\vtls.h"\r
-                               >\r
-                               </File>\r
-                               <File\r
-                                       RelativePath="..\..\..\..\lib\vtls\wolfssl.h"\r
-                               >\r
-                               </File>\r
-                       </Filter>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
diff --git a/projects/Windows/VC9/src/curl.sln b/projects/Windows/VC9/src/curl.sln
deleted file mode 100644 (file)
index 7a41e7a..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 10.00\r
-# Visual Studio 2008\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-EndProject\r
-Global\r
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Debug - DLL OpenSSL - DLL LibSSH2|x64 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Debug - DLL OpenSSL|Win32 = DLL Debug - DLL OpenSSL|Win32\r
-               DLL Debug - DLL OpenSSL|x64 = DLL Debug - DLL OpenSSL|x64\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Debug - DLL Windows SSPI - DLL WinIDN|x64 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Debug - DLL Windows SSPI|Win32 = DLL Debug - DLL Windows SSPI|Win32\r
-               DLL Debug - DLL Windows SSPI|x64 = DLL Debug - DLL Windows SSPI|x64\r
-               DLL Debug|Win32 = DLL Debug|Win32\r
-               DLL Debug|x64 = DLL Debug|x64\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|Win32 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               DLL Release - DLL OpenSSL - DLL LibSSH2|x64 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               DLL Release - DLL OpenSSL|Win32 = DLL Release - DLL OpenSSL|Win32\r
-               DLL Release - DLL OpenSSL|x64 = DLL Release - DLL OpenSSL|x64\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|Win32 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               DLL Release - DLL Windows SSPI - DLL WinIDN|x64 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               DLL Release - DLL Windows SSPI|Win32 = DLL Release - DLL Windows SSPI|Win32\r
-               DLL Release - DLL Windows SSPI|x64 = DLL Release - DLL Windows SSPI|x64\r
-               DLL Release|Win32 = DLL Release|Win32\r
-               DLL Release|x64 = DLL Release|x64\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Debug - DLL OpenSSL - DLL LibSSH2|x64 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Debug - DLL OpenSSL|Win32 = LIB Debug - DLL OpenSSL|Win32\r
-               LIB Debug - DLL OpenSSL|x64 = LIB Debug - DLL OpenSSL|x64\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Debug - DLL Windows SSPI - DLL WinIDN|x64 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Debug - DLL Windows SSPI|Win32 = LIB Debug - DLL Windows SSPI|Win32\r
-               LIB Debug - DLL Windows SSPI|x64 = LIB Debug - DLL Windows SSPI|x64\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Debug - LIB OpenSSL - LIB LibSSH2|x64 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Debug - LIB OpenSSL|Win32 = LIB Debug - LIB OpenSSL|Win32\r
-               LIB Debug - LIB OpenSSL|x64 = LIB Debug - LIB OpenSSL|x64\r
-               LIB Debug|Win32 = LIB Debug|Win32\r
-               LIB Debug|x64 = LIB Debug|x64\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|Win32 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               LIB Release - DLL OpenSSL - DLL LibSSH2|x64 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               LIB Release - DLL OpenSSL|Win32 = LIB Release - DLL OpenSSL|Win32\r
-               LIB Release - DLL OpenSSL|x64 = LIB Release - DLL OpenSSL|x64\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|Win32 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               LIB Release - DLL Windows SSPI - DLL WinIDN|x64 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               LIB Release - DLL Windows SSPI|Win32 = LIB Release - DLL Windows SSPI|Win32\r
-               LIB Release - DLL Windows SSPI|x64 = LIB Release - DLL Windows SSPI|x64\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|Win32 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               LIB Release - LIB OpenSSL - LIB LibSSH2|x64 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               LIB Release - LIB OpenSSL|Win32 = LIB Release - LIB OpenSSL|Win32\r
-               LIB Release - LIB OpenSSL|x64 = LIB Release - LIB OpenSSL|x64\r
-               LIB Release|Win32 = LIB Release|Win32\r
-               LIB Release|x64 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.ActiveCfg = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|Win32.Build.0 = DLL Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.ActiveCfg = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL OpenSSL|x64.Build.0 = DLL Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.ActiveCfg = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|Win32.Build.0 = DLL Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.ActiveCfg = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug - DLL Windows SSPI|x64.Build.0 = DLL Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|Win32.Build.0 = DLL Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Debug|x64.Build.0 = DLL Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = DLL Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.ActiveCfg = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|Win32.Build.0 = DLL Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.ActiveCfg = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL OpenSSL|x64.Build.0 = DLL Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = DLL Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.ActiveCfg = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|Win32.Build.0 = DLL Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.ActiveCfg = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release - DLL Windows SSPI|x64.Build.0 = DLL Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|Win32.Build.0 = DLL Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.ActiveCfg = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.DLL Release|x64.Build.0 = DLL Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Debug - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.ActiveCfg = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|Win32.Build.0 = LIB Debug - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.ActiveCfg = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL OpenSSL|x64.Build.0 = LIB Debug - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Debug - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.ActiveCfg = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|Win32.Build.0 = LIB Debug - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.ActiveCfg = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - DLL Windows SSPI|x64.Build.0 = LIB Debug - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Debug - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.ActiveCfg = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|Win32.Build.0 = LIB Debug - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.ActiveCfg = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug - LIB OpenSSL|x64.Build.0 = LIB Debug - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.ActiveCfg = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|Win32.Build.0 = LIB Debug|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.ActiveCfg = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Debug|x64.Build.0 = LIB Debug|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|Win32.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.ActiveCfg = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL - DLL LibSSH2|x64.Build.0 = LIB Release - DLL OpenSSL - DLL LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.ActiveCfg = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|Win32.Build.0 = LIB Release - DLL OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.ActiveCfg = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL OpenSSL|x64.Build.0 = LIB Release - DLL OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|Win32.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.ActiveCfg = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI - DLL WinIDN|x64.Build.0 = LIB Release - DLL Windows SSPI - DLL WinIDN|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.ActiveCfg = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|Win32.Build.0 = LIB Release - DLL Windows SSPI|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.ActiveCfg = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - DLL Windows SSPI|x64.Build.0 = LIB Release - DLL Windows SSPI|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|Win32.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.ActiveCfg = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL - LIB LibSSH2|x64.Build.0 = LIB Release - LIB OpenSSL - LIB LibSSH2|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.ActiveCfg = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|Win32.Build.0 = LIB Release - LIB OpenSSL|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.ActiveCfg = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release - LIB OpenSSL|x64.Build.0 = LIB Release - LIB OpenSSL|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.ActiveCfg = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|Win32.Build.0 = LIB Release|Win32\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.ActiveCfg = LIB Release|x64\r
-               {5228E9CE-A216-422F-A5E6-58E95E2DD71D}.LIB Release|x64.Build.0 = LIB Release|x64\r
-       EndGlobalSection\r
-       GlobalSection(SolutionProperties) = preSolution\r
-               HideSolutionNode = FALSE\r
-       EndGlobalSection\r
-EndGlobal\r
diff --git a/projects/Windows/VC9/src/curl.vcproj b/projects/Windows/VC9/src/curl.vcproj
deleted file mode 100644 (file)
index eb2112d..0000000
+++ /dev/null
@@ -1,4356 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>\r
-<VisualStudioProject\r
-       ProjectType="Visual C++"\r
-       Version="9.00"\r
-       Name="curl"\r
-       ProjectGUID="{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"\r
-       RootNamespace="curl"\r
-       TargetFrameworkVersion="131072"\r
-       >\r
-       <Platforms>\r
-               <Platform\r
-                       Name="Win32"\r
-               />\r
-               <Platform\r
-                       Name="x64"\r
-               />\r
-       </Platforms>\r
-       <ToolFiles>\r
-       </ToolFiles>\r
-       <Configurations>\r
-               <Configuration\r
-                       Name="DLL Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Debug;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win32\VC9\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - LIB OpenSSL - LIB LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\LIB Release;..\..\..\..\..\libssh2\build\Win64\VC9\LIB Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurld.lib libcrypto.lib libssl.lib libssh2d.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Debug;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Debug"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libcrypto.lib libssl.lib libssh2.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win32\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win32\VC9\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL OpenSSL - DLL LibSSH2|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="crypt32.lib ws2_32.lib wldap32.lib libcurl.lib libssh2.lib libcrypto.lib libssl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName);..\..\..\..\..\openssl\build\Win64\VC9\DLL Release;..\..\..\..\..\libssh2\build\Win64\VC9\DLL Release"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="DLL Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Debug - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="0"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="_DEBUG;_CONSOLE;DEBUGBUILD;CURL_STATICLIB"\r
-                               MinimalRebuild="true"\r
-                               BasicRuntimeChecks="3"\r
-                               RuntimeLibrary="3"\r
-                               WarningLevel="4"\r
-                               DebugInformationFormat="3"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="_DEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurld.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName)d.exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               GenerateDebugInformation="true"\r
-                               ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|Win32"\r
-                       OutputDirectory="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win32\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="1"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-               <Configuration\r
-                       Name="LIB Release - DLL Windows SSPI - DLL WinIDN|x64"\r
-                       OutputDirectory="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                       IntermediateDirectory="$(OutDir)\src"\r
-                       ConfigurationType="1"\r
-                       UseOfMFC="0"\r
-                       ATLMinimizesCRunTimeLibraryUsage="false"\r
-                       CharacterSet="2"\r
-                       >\r
-                       <Tool\r
-                               Name="VCPreBuildEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCCustomBuildTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXMLDataGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCWebServiceProxyGeneratorTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCMIDLTool"\r
-                               TargetEnvironment="3"\r
-                               TypeLibraryName="$(TargetDir)$(TargetName).tlb"\r
-                               HeaderFileName=""\r
-                       />\r
-                       <Tool\r
-                               Name="VCCLCompilerTool"\r
-                               Optimization="2"\r
-                               InlineFunctionExpansion="1"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\lib"\r
-                               PreprocessorDefinitions="NDEBUG;_CONSOLE;CURL_STATICLIB"\r
-                               StringPooling="true"\r
-                               RuntimeLibrary="2"\r
-                               EnableFunctionLevelLinking="true"\r
-                               WarningLevel="4"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManagedResourceCompilerTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCResourceCompilerTool"\r
-                               PreprocessorDefinitions="NDEBUG"\r
-                               Culture="1033"\r
-                               AdditionalIncludeDirectories="..\..\..\..\include"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPreLinkEventTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCLinkerTool"\r
-                               AdditionalDependencies="ws2_32.lib wldap32.lib crypt32.lib normaliz.lib libcurl.lib"\r
-                               OutputFile="$(OutDir)\$(ProjectName).exe"\r
-                               LinkIncremental="1"\r
-                               AdditionalLibraryDirectories="..\..\..\..\build\Win64\VC9\$(ConfigurationName)"\r
-                               SubSystem="1"\r
-                               TargetMachine="17"\r
-                       />\r
-                       <Tool\r
-                               Name="VCALinkTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCManifestTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCXDCMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCBscMakeTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCFxCopTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCAppVerifierTool"\r
-                       />\r
-                       <Tool\r
-                               Name="VCPostBuildEventTool"\r
-                       />\r
-               </Configuration>\r
-       </Configurations>\r
-       <References>\r
-       </References>\r
-       <Files>\r
-               <Filter\r
-                       Name="Source Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_listhelp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.c"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.c"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Header Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\config-win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_ctype.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_multibyte.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\curl_setup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\dynbuf.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\nonblock.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\strtoofft.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\version_win32.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\lib\warnless.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\slist_wc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_binmode.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_bname.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_dbg.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_hdr.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_prg.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_rea.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_see.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cb_wrt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_cfgable.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_convert.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_dirhie.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_doswin.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_easysrc.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_filetime.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_findfile.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_formparse.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getparam.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_getpass.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_helpers.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_help.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_hugehelp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_libinfo.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_main.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_msgs.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operate.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_operhlp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_panykey.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_paramhlp.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_parsecfg.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_progress.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sdecls.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setopt.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_setup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_sleep.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_strdup.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_urlglob.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_util.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_version.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_vms.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_writeout_json.h"\r
-                       >\r
-                       </File>\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\tool_xattr.h"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-               <Filter\r
-                       Name="Resource Files"\r
-                       >\r
-                       <File\r
-                               RelativePath="..\..\..\..\src\curl.rc"\r
-                       >\r
-                       </File>\r
-               </Filter>\r
-       </Files>\r
-       <Globals>\r
-       </Globals>\r
-</VisualStudioProject>\r
index a4a661ba5d0e0d1681b02d911fb632f3865d459a..106a2a36358d74feeefb9d0a0e9d47563616ba56 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___\r
 rem *                             \___|\___/|_| \_\_____|\r
 rem *\r
-rem * Copyright (C) 2012 - 2021, Steve Holme, <steve_holme@hotmail.com>.\r
+rem * Copyright (C) 2012 - 2022, Steve Holme, <steve_holme@hotmail.com>.\r
 rem *\r
 rem * This software is licensed as described in the file COPYING, which\r
 rem * you should have received as part of this distribution. The terms\r
@@ -18,6 +18,8 @@ rem * furnished to do so, under the terms of the COPYING file.
 rem *\r
 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 rem * KIND, either express or implied.\r
+rem * \r
+rem * SPDX-License-Identifier: curl\r
 rem *\r
 rem ***************************************************************************\r
 \r
@@ -44,33 +46,18 @@ rem ***************************************************************************
     set OS_PLATFORM=x86\r
   )\r
   if defined PROGRAMFILES(x86) (\r
-    set "PF=%PROGRAMFILES(x86)%"\r
+    rem Visual Studio was x86-only prior to 14.3\r
+    if /i "%~1" == "vc14.3" (\r
+      set "PF=%PROGRAMFILES%"\r
+    ) else (\r
+      set "PF=%PROGRAMFILES(x86)%"\r
+    )\r
     set OS_PLATFORM=x64\r
   )\r
 \r
 :parseArgs\r
   if not "%~1" == "" (\r
-    if /i "%~1" == "vc6" (\r
-      set VC_VER=6.0\r
-      set VC_DESC=VC6\r
-      set "VC_PATH=Microsoft Visual Studio\VC98"\r
-    ) else if /i "%~1" == "vc7" (\r
-      set VC_VER=7.0\r
-      set VC_DESC=VC7\r
-      set "VC_PATH=Microsoft Visual Studio .NET\Vc7"\r
-    ) else if /i "%~1" == "vc7.1" (\r
-      set VC_VER=7.1\r
-      set VC_DESC=VC7.1\r
-      set "VC_PATH=Microsoft Visual Studio .NET 2003\Vc7"\r
-    ) else if /i "%~1" == "vc8" (\r
-      set VC_VER=8.0\r
-      set VC_DESC=VC8\r
-      set "VC_PATH=Microsoft Visual Studio 8\VC"\r
-    ) else if /i "%~1" == "vc9" (\r
-      set VC_VER=9.0\r
-      set VC_DESC=VC9\r
-      set "VC_PATH=Microsoft Visual Studio 9.0\VC"\r
-    ) else if /i "%~1" == "vc10" (\r
+    if /i "%~1" == "vc10" (\r
       set VC_VER=10.0\r
       set VC_DESC=VC10\r
       set "VC_PATH=Microsoft Visual Studio 10.0\VC"\r
@@ -88,7 +75,7 @@ rem ***************************************************************************
       set "VC_PATH=Microsoft Visual Studio 14.0\VC"\r
     ) else if /i "%~1" == "vc14.1" (\r
       set VC_VER=14.1\r
-      set VC_DESC=VC14.1\r
+      set VC_DESC=VC14.10\r
 \r
       rem Determine the VC14.1 path based on the installed edition in descending\r
       rem order (Enterprise, then Professional and finally Community)\r
@@ -101,7 +88,7 @@ rem ***************************************************************************
       )\r
     ) else if /i "%~1" == "vc14.2" (\r
       set VC_VER=14.2\r
-      set VC_DESC=VC14.2\r
+      set VC_DESC=VC14.20\r
 \r
       rem Determine the VC14.2 path based on the installed edition in descending\r
       rem order (Enterprise, then Professional and finally Community)\r
@@ -112,6 +99,19 @@ rem ***************************************************************************
       ) else (\r
         set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"\r
       )\r
+    ) else if /i "%~1" == "vc14.3" (\r
+      set VC_VER=14.3\r
+      set VC_DESC=VC14.30\r
+\r
+      rem Determine the VC14.3 path based on the installed edition in descending\r
+      rem order (Enterprise, then Professional and finally Community)\r
+      if exist "%PF%\Microsoft Visual Studio\2022\Enterprise\VC" (\r
+        set "VC_PATH=Microsoft Visual Studio\2022\Enterprise\VC"\r
+      ) else if exist "%PF%\Microsoft Visual Studio\2022\Professional\VC" (\r
+        set "VC_PATH=Microsoft Visual Studio\2022\Professional\VC"\r
+      ) else (\r
+        set "VC_PATH=Microsoft Visual Studio\2022\Community\VC"\r
+      )\r
     ) else if /i "%~1%" == "x86" (\r
       set BUILD_PLATFORM=x86\r
     ) else if /i "%~1%" == "x64" (\r
@@ -209,17 +209,13 @@ rem ***************************************************************************
   if "%BUILD_PLATFORM%" == "x86" (\r
     set VCVARS_PLATFORM=x86\r
   ) else if "%BUILD_PLATFORM%" == "x64" (\r
-    if "%VC_VER%" == "6.0" goto nox64\r
-    if "%VC_VER%" == "7.0" goto nox64\r
-    if "%VC_VER%" == "7.1" goto nox64\r
-    if "%VC_VER%" == "8.0" set VCVARS_PLATFORM=x86_amd64\r
-    if "%VC_VER%" == "9.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%\r
     if "%VC_VER%" == "10.0" set VCVARS_PLATFORM=%BUILD_PLATFORM%\r
     if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64\r
     if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64\r
     if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64\r
     if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64\r
     if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64\r
+    if "%VC_VER%" == "14.3" set VCVARS_PLATFORM=amd64\r
   )\r
 \r
   if exist "%START_DIR%\ms\do_ms.bat" (\r
@@ -232,16 +228,12 @@ rem ***************************************************************************
   echo.\r
   set "SAVED_PATH=%CD%"\r
 \r
-  if "%VC_VER%" == "6.0" (\r
-    call "%ABS_VC_PATH%\bin\vcvars32"\r
-  ) else if "%VC_VER%" == "7.0" (\r
-    call "%ABS_VC_PATH%\bin\vcvars32"\r
-  ) else if "%VC_VER%" == "7.1" (\r
-    call "%ABS_VC_PATH%\bin\vcvars32"\r
-  ) else if "%VC_VER%" == "14.1" (\r
+  if "%VC_VER%" == "14.1" (\r
     call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%\r
   ) else if "%VC_VER%" == "14.2" (\r
     call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%\r
+  ) else if "%VC_VER%" == "14.3" (\r
+    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%\r
   ) else (\r
     call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%\r
   )\r
@@ -656,17 +648,13 @@ rem
   echo.\r
   echo Compiler:\r
   echo.\r
-  echo vc6       - Use Visual Studio 6\r
-  echo vc7       - Use Visual Studio .NET\r
-  echo vc7.1     - Use Visual Studio .NET 2003\r
-  echo vc8       - Use Visual Studio 2005\r
-  echo vc9       - Use Visual Studio 2008\r
   echo vc10      - Use Visual Studio 2010\r
   echo vc11      - Use Visual Studio 2012\r
   echo vc12      - Use Visual Studio 2013\r
   echo vc14      - Use Visual Studio 2015\r
   echo vc14.1    - Use Visual Studio 2017\r
   echo vc14.2    - Use Visual Studio 2019\r
+  echo vc14.3    - Use Visual Studio 2022\r
   echo.\r
   echo Platform:\r
   echo.\r
index fcd9ba1a15390ed16b9bf74d025c7e1be8fba015..3830e03e839e386303a9fc9944eabe824caa3fe3 100644 (file)
@@ -7,7 +7,7 @@ rem *                            | (__| |_| |  _ <| |___
 rem *                             \___|\___/|_| \_\_____|\r
 rem *\r
 rem * Copyright (C) 2012 - 2020, Steve Holme, <steve_holme@hotmail.com>.\r
-rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>.\r
+rem * Copyright (C) 2015 - 2022, Jay Satiro, <raysatiro@yahoo.com>.\r
 rem *\r
 rem * This software is licensed as described in the file COPYING, which\r
 rem * you should have received as part of this distribution. The terms\r
@@ -19,6 +19,8 @@ rem * furnished to do so, under the terms of the COPYING file.
 rem *\r
 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 rem * KIND, either express or implied.\r
+rem * \r
+rem * SPDX-License-Identifier: curl\r
 rem *\r
 rem ***************************************************************************\r
 \r
@@ -31,9 +33,7 @@ rem ***************************************************************************
   set SUCCESSFUL_BUILDS=\r
   set VC_VER=\r
   set BUILD_PLATFORM=\r
-\r
-  rem Ensure we have the required arguments\r
-  if /i "%~1" == "" goto syntax\r
+  set DEFAULT_START_DIR=..\..\wolfssl\r
 \r
   rem Calculate the program files directory\r
   if defined PROGRAMFILES (\r
@@ -41,10 +41,18 @@ rem ***************************************************************************
     set OS_PLATFORM=x86\r
   )\r
   if defined PROGRAMFILES(x86) (\r
-    set "PF=%PROGRAMFILES(x86)%"\r
+    rem Visual Studio was x86-only prior to 14.3\r
+    if /i "%~1" == "vc14.3" (\r
+      set "PF=%PROGRAMFILES%"\r
+    ) else (\r
+      set "PF=%PROGRAMFILES(x86)%"\r
+    )\r
     set OS_PLATFORM=x64\r
   )\r
 \r
+  rem Ensure we have the required arguments\r
+  if /i "%~1" == "" goto syntax\r
+\r
 :parseArgs\r
   if "%~1" == "" goto prerequisites\r
 \r
@@ -70,7 +78,7 @@ rem ***************************************************************************
     set "VC_PATH=Microsoft Visual Studio 14.0\VC"\r
   ) else if /i "%~1" == "vc14.1" (\r
     set VC_VER=14.1\r
-    set VC_DESC=VC14.1\r
+    set VC_DESC=VC14.10\r
     set VC_TOOLSET=v141\r
 \r
     rem Determine the VC14.1 path based on the installed edition in descending\r
@@ -84,7 +92,7 @@ rem ***************************************************************************
     )\r
   ) else if /i "%~1" == "vc14.2" (\r
     set VC_VER=14.2\r
-    set VC_DESC=VC14.2\r
+    set VC_DESC=VC14.20\r
     set VC_TOOLSET=v142\r
 \r
     rem Determine the VC14.2 path based on the installed edition in descending\r
@@ -96,6 +104,20 @@ rem ***************************************************************************
     ) else (\r
       set "VC_PATH=Microsoft Visual Studio\2019\Community\VC"\r
     )\r
+  ) else if /i "%~1" == "vc14.3" (\r
+    set VC_VER=14.3\r
+    set VC_DESC=VC14.30\r
+    set VC_TOOLSET=v143\r
+\r
+    rem Determine the VC14.3 path based on the installed edition in descending\r
+    rem order (Enterprise, then Professional and finally Community)\r
+    if exist "%PF%\Microsoft Visual Studio\2022\Enterprise\VC" (\r
+      set "VC_PATH=Microsoft Visual Studio\2022\Enterprise\VC"\r
+    ) else if exist "%PF%\Microsoft Visual Studio\2022\Professional\VC" (\r
+      set "VC_PATH=Microsoft Visual Studio\2022\Professional\VC"\r
+    ) else (\r
+      set "VC_PATH=Microsoft Visual Studio\2022\Community\VC"\r
+    )\r
   ) else if /i "%~1" == "x86" (\r
     set BUILD_PLATFORM=x86\r
   ) else if /i "%~1" == "x64" (\r
@@ -125,7 +147,7 @@ rem ***************************************************************************
   if not defined VC_VER goto syntax\r
 \r
   rem Default the start directory if one isn't specified\r
-  if not defined START_DIR set START_DIR=..\..\wolfssl\r
+  if not defined START_DIR set "START_DIR=%DEFAULT_START_DIR%"\r
 \r
   rem Check we have a program files directory\r
   if not defined PF goto nopf\r
@@ -148,6 +170,7 @@ rem ***************************************************************************
     if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64\r
     if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64\r
     if "%VC_VER%" == "14.2" set VCVARS_PLATFORM=amd64\r
+    if "%VC_VER%" == "14.3" set VCVARS_PLATFORM=amd64\r
   )\r
 \r
 :start\r
@@ -158,6 +181,8 @@ rem ***************************************************************************
     call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%\r
   ) else if "%VC_VER%" == "14.2" (\r
     call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%\r
+  ) else if "%VC_VER%" == "14.3" (\r
+    call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%\r
   ) else (\r
     call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%\r
   )\r
@@ -318,6 +343,7 @@ rem ***************************************************************************
   echo.\r
   echo Usage: build-wolfssl ^<compiler^> [platform] [configuration] [directory]\r
   echo.\r
+  echo.\r
   echo Compiler:\r
   echo.\r
   echo vc10      - Use Visual Studio 2010\r
@@ -326,20 +352,31 @@ rem ***************************************************************************
   echo vc14      - Use Visual Studio 2015\r
   echo vc14.1    - Use Visual Studio 2017\r
   echo vc14.2    - Use Visual Studio 2019\r
+  echo vc14.3    - Use Visual Studio 2022\r
+  echo.\r
   echo.\r
   echo Platform:\r
   echo.\r
   echo x86       - Perform a 32-bit build\r
   echo x64       - Perform a 64-bit build\r
   echo.\r
+  echo If this parameter is unset the OS platform is used ^(%OS_PLATFORM%^).\r
+  echo.\r
+  echo.\r
   echo Configuration:\r
   echo.\r
   echo debug     - Perform a debug build\r
   echo release   - Perform a release build\r
   echo.\r
+  echo If this parameter is unset both configurations are built.\r
+  echo.\r
+  echo.\r
   echo Other:\r
   echo.\r
   echo directory - Specifies the wolfSSL source directory\r
+  echo.\r
+  echo If this parameter is unset the directory used is "%DEFAULT_START_DIR%".\r
+  echo.\r
   goto error\r
 \r
 :unknown\r
index 3f04f0cd6a05ed25f2bc893f5a9f4acc071d1e43..022e591ba7b51f29e2cba503a758eedf71e4d175 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___\r
 rem *                             \___|\___/|_| \_\_____|\r
 rem *\r
-rem * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.\r
+rem * Copyright (C) 2014 - 2022, Steve Holme, <steve_holme@hotmail.com>.\r
 rem *\r
 rem * This software is licensed as described in the file COPYING, which\r
 rem * you should have received as part of this distribution. The terms\r
@@ -18,6 +18,8 @@ rem * furnished to do so, under the terms of the COPYING file.
 rem *\r
 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 rem * KIND, either express or implied.\r
+rem * \r
+rem * SPDX-License-Identifier: curl\r
 rem *\r
 rem ***************************************************************************\r
 \r
@@ -113,67 +115,67 @@ rem ***************************************************************************
   if "%CHECK_SRC%" == "TRUE" (\r
     rem Check the src directory\r
     if exist %SRC_DIR%\src (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\src" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\src" -Wtool_hugehelp.c "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\src\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\src" "%%i"\r
     )\r
   )\r
 \r
   if "%CHECK_LIB%" == "TRUE" (\r
     rem Check the lib directory\r
     if exist %SRC_DIR%\lib (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake -Wcurl_config.h.in -Wcurl_config.h "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib" -Wcurl_config.h.cmake -Wcurl_config.h.in -Wcurl_config.h "%%i"\r
     )\r
 \r
     rem Check the lib\vauth directory\r
     if exist %SRC_DIR%\lib\vauth (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vauth\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vauth" "%%i"\r
     )\r
 \r
     rem Check the lib\vquic directory\r
     if exist %SRC_DIR%\lib\vquic (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vquic\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vquic" "%%i"\r
     )\r
 \r
     rem Check the lib\vssh directory\r
     if exist %SRC_DIR%\lib\vssh (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vssh\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vssh" "%%i"\r
     )\r
 \r
     rem Check the lib\vtls directory\r
     if exist %SRC_DIR%\lib\vtls (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\lib\vtls\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\lib\vtls" "%%i"\r
     )\r
   )\r
 \r
   if "%CHECK_TESTS%" == "TRUE" (\r
     rem Check the tests\libtest directory\r
     if exist %SRC_DIR%\tests\libtest (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\libtest\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\libtest" "%%i"\r
     )\r
 \r
     rem Check the tests\unit directory\r
     if exist %SRC_DIR%\tests\unit (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\unit\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\unit" "%%i"\r
     )\r
 \r
     rem Check the tests\server directory\r
     if exist %SRC_DIR%\tests\server (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\tests\server\*.h.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\tests\server" "%%i"\r
     )\r
   )\r
 \r
   if "%CHECK_EXAMPLES%" == "TRUE" (\r
     rem Check the docs\examples directory\r
     if exist %SRC_DIR%\docs\examples (\r
-      for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\lib\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i"\r
+      for /f "delims=" %%i in ('dir "%SRC_DIR%\docs\examples\*.c.*" /b 2^>NUL') do @perl "%SRC_DIR%\scripts\checksrc.pl" "-D%SRC_DIR%\docs\examples" -ASNPRINTF "%%i"\r
     )\r
   )\r
 \r
index 840094e326a4e32d3a24c3c761ed29a5dc574533..372d1b3022031bcaf997f93e019b196e37bf545e 100644 (file)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___\r
 rem *                             \___|\___/|_| \_\_____|\r
 rem *\r
-rem * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.\r
+rem * Copyright (C) 2014 - 2022, Steve Holme, <steve_holme@hotmail.com>.\r
 rem *\r
 rem * This software is licensed as described in the file COPYING, which\r
 rem * you should have received as part of this distribution. The terms\r
@@ -18,6 +18,8 @@ rem * furnished to do so, under the terms of the COPYING file.
 rem *\r
 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 rem * KIND, either express or implied.\r
+rem * \r
+rem * SPDX-License-Identifier: curl\r
 rem *\r
 rem ***************************************************************************\r
 \r
@@ -44,16 +46,6 @@ rem ***************************************************************************
 \r
   if /i "%~1" == "pre" (\r
     set VERSION=PRE\r
-  ) else if /i "%~1" == "vc6" (\r
-    set VERSION=VC6\r
-  ) else if /i "%~1" == "vc7" (\r
-    set VERSION=VC7\r
-  ) else if /i "%~1" == "vc7.1" (\r
-    set VERSION=VC7.1\r
-  ) else if /i "%~1" == "vc8" (\r
-    set VERSION=VC8\r
-  ) else if /i "%~1" == "vc9" (\r
-    set VERSION=VC9\r
   ) else if /i "%~1" == "vc10" (\r
     set VERSION=VC10\r
   ) else if /i "%~1" == "vc11" (\r
@@ -62,8 +54,10 @@ rem ***************************************************************************
     set VERSION=VC12\r
   ) else if /i "%~1" == "vc14" (\r
     set VERSION=VC14\r
-  ) else if /i "%~1" == "vc15" (\r
-    set VERSION=VC15\r
+  ) else if /i "%~1" == "vc14.10" (\r
+    set VERSION=VC14.10\r
+  ) else if /i "%~1" == "vc14.30" (\r
+    set VERSION=VC14.30\r
   ) else if /i "%~1" == "-clean" (\r
     set MODE=CLEAN\r
   ) else if /i "%~1" == "-?" (\r
@@ -89,91 +83,12 @@ rem ***************************************************************************
     )\r
   )\r
   if "%VERSION%" == "PRE" goto success\r
-  if "%VERSION%" == "VC6" goto vc6\r
-  if "%VERSION%" == "VC7" goto vc7\r
-  if "%VERSION%" == "VC7.1" goto vc71\r
-  if "%VERSION%" == "VC8" goto vc8\r
-  if "%VERSION%" == "VC9" goto vc9\r
   if "%VERSION%" == "VC10" goto vc10\r
   if "%VERSION%" == "VC11" goto vc11\r
   if "%VERSION%" == "VC12" goto vc12\r
   if "%VERSION%" == "VC14" goto vc14\r
-  if "%VERSION%" == "VC15" goto vc15\r
-\r
-:vc6\r
-  echo.\r
-\r
-  if "%MODE%" == "GENERATE" (\r
-    echo Generating VC6 project files\r
-    call :generate dsp Windows\VC6\src\curl.tmpl Windows\VC6\src\curl.dsp\r
-    call :generate dsp Windows\VC6\lib\libcurl.tmpl Windows\VC6\lib\libcurl.dsp\r
-  ) else (\r
-    echo Removing VC6 project files\r
-    call :clean Windows\VC6\src\curl.dsp\r
-    call :clean Windows\VC6\lib\libcurl.dsp\r
-  )\r
-\r
-  if not "%VERSION%" == "ALL" goto success\r
-\r
-:vc7\r
-  echo.\r
-\r
-  if "%MODE%" == "GENERATE" (\r
-    echo Generating VC7 project files\r
-    call :generate vcproj1 Windows\VC7\src\curl.tmpl Windows\VC7\src\curl.vcproj\r
-    call :generate vcproj1 Windows\VC7\lib\libcurl.tmpl Windows\VC7\lib\libcurl.vcproj\r
-  ) else (\r
-    echo Removing VC7 project files\r
-    call :clean Windows\VC7\src\curl.vcproj\r
-    call :clean Windows\VC7\lib\libcurl.vcproj\r
-  )\r
-\r
-  if not "%VERSION%" == "ALL" goto success\r
-\r
-:vc71\r
-  echo.\r
-\r
-  if "%MODE%" == "GENERATE" (\r
-    echo Generating VC7.1 project files\r
-    call :generate vcproj1 Windows\VC7.1\src\curl.tmpl Windows\VC7.1\src\curl.vcproj\r
-    call :generate vcproj1 Windows\VC7.1\lib\libcurl.tmpl Windows\VC7.1\lib\libcurl.vcproj\r
-  ) else (\r
-    echo Removing VC7.1 project files\r
-    call :clean Windows\VC7.1\src\curl.vcproj\r
-    call :clean Windows\VC7.1\lib\libcurl.vcproj\r
-  )\r
-\r
-  if not "%VERSION%" == "ALL" goto success\r
-\r
-:vc8\r
-  echo.\r
-\r
-  if "%MODE%" == "GENERATE" (\r
-    echo Generating VC8 project files\r
-    call :generate vcproj2 Windows\VC8\src\curl.tmpl Windows\VC8\src\curl.vcproj\r
-    call :generate vcproj2 Windows\VC8\lib\libcurl.tmpl Windows\VC8\lib\libcurl.vcproj\r
-  ) else (\r
-    echo Removing VC8 project files\r
-    call :clean Windows\VC8\src\curl.vcproj\r
-    call :clean Windows\VC8\lib\libcurl.vcproj\r
-  )\r
-\r
-  if not "%VERSION%" == "ALL" goto success\r
-\r
-:vc9\r
-  echo.\r
-\r
-  if "%MODE%" == "GENERATE" (\r
-    echo Generating VC9 project files\r
-    call :generate vcproj2 Windows\VC9\src\curl.tmpl Windows\VC9\src\curl.vcproj\r
-    call :generate vcproj2 Windows\VC9\lib\libcurl.tmpl Windows\VC9\lib\libcurl.vcproj\r
-  ) else (\r
-    echo Removing VC9 project files\r
-    call :clean Windows\VC9\src\curl.vcproj\r
-    call :clean Windows\VC9\lib\libcurl.vcproj\r
-  )\r
-\r
-  if not "%VERSION%" == "ALL" goto success\r
+  if "%VERSION%" == "VC14.10" goto vc14.10\r
+  if "%VERSION%" == "VC14.30" goto vc14.30\r
 \r
 :vc10\r
   echo.\r
@@ -235,25 +150,39 @@ rem ***************************************************************************
 \r
   if not "%VERSION%" == "ALL" goto success\r
 \r
-:vc15\r
+:vc14.10\r
+  echo.\r
+\r
+  if "%MODE%" == "GENERATE" (\r
+    echo Generating VC14.10 project files\r
+    call :generate vcxproj Windows\VC14.10\src\curl.tmpl Windows\VC14.10\src\curl.vcxproj\r
+    call :generate vcxproj Windows\VC14.10\lib\libcurl.tmpl Windows\VC14.10\lib\libcurl.vcxproj\r
+  ) else (\r
+    echo Removing VC14.10 project files\r
+    call :clean Windows\VC14.10\src\curl.vcxproj\r
+    call :clean Windows\VC14.10\lib\libcurl.vcxproj\r
+  )\r
+\r
+  if not "%VERSION%" == "ALL" goto success\r
+\r
+:vc14.30\r
   echo.\r
 \r
   if "%MODE%" == "GENERATE" (\r
-    echo Generating VC15 project files\r
-    call :generate vcxproj Windows\VC15\src\curl.tmpl Windows\VC15\src\curl.vcxproj\r
-    call :generate vcxproj Windows\VC15\lib\libcurl.tmpl Windows\VC15\lib\libcurl.vcxproj\r
+    echo Generating VC14.30 project files\r
+    call :generate vcxproj Windows\VC14.30\src\curl.tmpl Windows\VC14.30\src\curl.vcxproj\r
+    call :generate vcxproj Windows\VC14.30\lib\libcurl.tmpl Windows\VC14.30\lib\libcurl.vcxproj\r
   ) else (\r
-    echo Removing VC15 project files\r
-    call :clean Windows\VC15\src\curl.vcxproj\r
-    call :clean Windows\VC15\lib\libcurl.vcxproj\r
+    echo Removing VC14.30 project files\r
+    call :clean Windows\VC14.30\src\curl.vcxproj\r
+    call :clean Windows\VC14.30\lib\libcurl.vcxproj\r
   )\r
 \r
   goto success\r
 \r
 rem Main generate function.\r
 rem\r
-rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9\r
-rem      or vcxproj for VC10, VC11, VC12, VC14 and VC15)\r
+rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10 and VC14.30)\r
 rem %2 - Input template file\r
 rem %3 - Output project file\r
 rem\r
@@ -282,9 +211,9 @@ rem
       for /f "delims=" %%r in ('dir /b ..\src\*.rc') do call :element %1 src "%%r" %3\r
     ) else if "!var!" == "CURL_SRC_X_C_FILES" (\r
       call :element %1 lib "strtoofft.c" %3\r
+      call :element %1 lib "timediff.c" %3\r
       call :element %1 lib "nonblock.c" %3\r
       call :element %1 lib "warnless.c" %3\r
-      call :element %1 lib "curl_ctype.c" %3\r
       call :element %1 lib "curl_multibyte.c" %3\r
       call :element %1 lib "version_win32.c" %3\r
       call :element %1 lib "dynbuf.c" %3\r
@@ -292,6 +221,7 @@ rem
       call :element %1 lib "config-win32.h" %3\r
       call :element %1 lib "curl_setup.h" %3\r
       call :element %1 lib "strtoofft.h" %3\r
+      call :element %1 lib "timediff.h" %3\r
       call :element %1 lib "nonblock.h" %3\r
       call :element %1 lib "warnless.h" %3\r
       call :element %1 lib "curl_ctype.h" %3\r
@@ -331,8 +261,7 @@ rem
 \r
 rem Generates a single file xml element.\r
 rem\r
-rem %1 - Project Type (dsp for VC6, vcproj1 for VC7 and VC7.1, vcproj2 for VC8 and VC9\r
-rem      or vcxproj for VC10, VC11, VC12, VC14 and VC15)\r
+rem %1 - Project Type (vcxproj for VC10, VC11, VC12, VC14, VC14.10 and VC14.30)\r
 rem %2 - Directory (src, lib, lib\vauth, lib\vquic, lib\vssh, lib\vtls)\r
 rem %3 - Source filename\r
 rem %4 - Output project file\r
@@ -423,16 +352,12 @@ rem
   echo What to generate:\r
   echo.\r
   echo pre       - Prerequisites only\r
-  echo vc6       - Use Visual Studio 6\r
-  echo vc7       - Use Visual Studio .NET\r
-  echo vc7.1     - Use Visual Studio .NET 2003\r
-  echo vc8       - Use Visual Studio 2005\r
-  echo vc9       - Use Visual Studio 2008\r
   echo vc10      - Use Visual Studio 2010\r
   echo vc11      - Use Visual Studio 2012\r
   echo vc12      - Use Visual Studio 2013\r
   echo vc14      - Use Visual Studio 2015\r
-  echo vc15      - Use Visual Studio 2017\r
+  echo vc14.10   - Use Visual Studio 2017\r
+  echo vc14.30   - Use Visual Studio 2022\r
   echo.\r
   echo -clean    - Removes the project files\r
   goto error\r
index ca36547f66cd498de7e00c31d3783775334e79c9..c30d0977712a1722b20109ae88d79dc7ef88fe35 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
 By default wolfSSL has a very conservative configuration that can result in
@@ -26,14 +28,17 @@ To remedy this issue for libcurl I've generated this options file that
 build-wolfssl will copy to the wolfSSL include directories and will result in
 maximum compatibility.
 
-These are the configure options that were used to build wolfSSL v3.11.0 in
+These are the configure options that were used to build wolfSSL v5.1.1 in
 mingw and generate the options in this file:
 
 C_EXTRA_FLAGS="\
   -Wno-attributes \
   -Wno-unused-but-set-variable \
   -DFP_MAX_BITS=16384 \
+  -DHAVE_SECRET_CALLBACK \
   -DTFM_TIMING_RESISTANT \
+  -DUSE_WOLF_STRTOK \
+  -DWOLFSSL_DES_ECB \
   -DWOLFSSL_STATIC_DH \
   -DWOLFSSL_STATIC_RSA \
   " \
@@ -41,6 +46,7 @@ C_EXTRA_FLAGS="\
   --disable-jobserver \
   --enable-aesgcm \
   --enable-alpn \
+  --enable-altcertchains \
   --enable-certgen \
   --enable-des3 \
   --enable-dh \
@@ -53,8 +59,9 @@ C_EXTRA_FLAGS="\
   --enable-sessioncerts \
   --enable-sha512 \
   --enable-sni \
-  --enable-sslv3 \
+  --enable-tlsv10 \
   --enable-supportedcurves \
+  --enable-tls13 \
   --enable-testcert \
   > config.out 2>&1
 
@@ -73,12 +80,22 @@ https://www.yassl.com/forums/topic423-cacertorgs-ca-cert-verify-failed-but-withd
 buffer size.  You can do this using the define:
 FP_MAX_BITS and setting it to 8192."
 
+HAVE_SECRET_CALLBACK
+Build wolfSSL with wolfSSL_set_tls13_secret_cb which allows saving TLS 1.3
+secrets to SSLKEYLOGFILE.
+
 TFM_TIMING_RESISTANT
 https://wolfssl.com/wolfSSL/Docs-wolfssl-manual-2-building-wolfssl.html
 From section 2.4.5 Increasing Performance, USE_FAST_MATH:
 "Because the stack memory usage can be larger when using fastmath, we recommend
 defining TFM_TIMING_RESISTANT as well when using this option."
 
+USE_WOLF_STRTOK
+Build wolfSSL to always use its internal strtok instead of C runtime strtok.
+
+WOLFSSL_DES_ECB
+Build wolfSSL with wolfSSL_DES_ecb_encrypt which is needed by libcurl for NTLM.
+
 WOLFSSL_STATIC_DH:    Allow TLS_ECDH_ ciphers
 WOLFSSL_STATIC_RSA:   Allow TLS_RSA_ ciphers
 https://github.com/wolfSSL/wolfssl/blob/v3.6.6/README.md#note-1
@@ -88,7 +105,7 @@ Static key cipher suites are deprecated and disabled by default since v3.6.6.
 /* wolfssl options.h
  * generated from configure options
  *
- * Copyright (C) 2006-2015 wolfSSL Inc.
+ * Copyright (C) 2006-2022 wolfSSL Inc.
  *
  * This file is part of wolfSSL. (formerly known as CyaSSL)
  *
@@ -105,40 +122,24 @@ extern "C" {
 #undef  FP_MAX_BITS
 #define FP_MAX_BITS 16384
 
+#undef  HAVE_SECRET_CALLBACK
+#define HAVE_SECRET_CALLBACK
+
 #undef  TFM_TIMING_RESISTANT
 #define TFM_TIMING_RESISTANT
 
+#undef  USE_WOLF_STRTOK
+#define USE_WOLF_STRTOK
+
+#undef  WOLFSSL_DES_ECB
+#define WOLFSSL_DES_ECB
+
 #undef  WOLFSSL_STATIC_DH
 #define WOLFSSL_STATIC_DH
 
 #undef  WOLFSSL_STATIC_RSA
 #define WOLFSSL_STATIC_RSA
 
-#undef  OPENSSL_EXTRA
-#define OPENSSL_EXTRA
-
-/*
-The commented out defines below are the equivalent of --enable-tls13.
-Uncomment them to build wolfSSL with TLS 1.3 support as of v3.11.1-tls13-beta.
-This is for experimenting only, afaict TLS 1.3 support doesn't appear to be
-functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
-
-#undef  WC_RSA_PSS
-#define WC_RSA_PSS
-
-#undef  WOLFSSL_TLS13
-#define WOLFSSL_TLS13
-
-#undef  HAVE_TLS_EXTENSIONS
-#define HAVE_TLS_EXTENSIONS
-
-#undef  HAVE_FFDHE_2048
-#define HAVE_FFDHE_2048
-
-#undef  HAVE_HKDF
-#define HAVE_HKDF
-*/
-
 #undef  TFM_TIMING_RESISTANT
 #define TFM_TIMING_RESISTANT
 
@@ -148,8 +149,8 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
 #undef  WC_RSA_BLINDING
 #define WC_RSA_BLINDING
 
-#undef  HAVE_AESGCM
-#define HAVE_AESGCM
+#undef  WOLFSSL_USE_ALIGN
+#define WOLFSSL_USE_ALIGN
 
 #undef  WOLFSSL_RIPEMD
 #define WOLFSSL_RIPEMD
@@ -163,8 +164,8 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
 #undef  SESSION_CERTS
 #define SESSION_CERTS
 
-#undef  WOLFSSL_CERT_GEN
-#define WOLFSSL_CERT_GEN
+#undef  HAVE_HKDF
+#define HAVE_HKDF
 
 #undef  HAVE_ECC
 #define HAVE_ECC
@@ -175,11 +176,11 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
 #undef  ECC_SHAMIR
 #define ECC_SHAMIR
 
-#undef  WOLFSSL_ALLOW_SSLV3
-#define WOLFSSL_ALLOW_SSLV3
+#undef  WOLFSSL_ALLOW_TLSV10
+#define WOLFSSL_ALLOW_TLSV10
 
-#undef  NO_RC4
-#define NO_RC4
+#undef  WC_RSA_PSS
+#define WC_RSA_PSS
 
 #undef  NO_HC128
 #define NO_HC128
@@ -217,24 +218,87 @@ functioning correctly yet. https://github.com/wolfSSL/wolfssl/pull/943
 #undef  HAVE_SUPPORTED_CURVES
 #define HAVE_SUPPORTED_CURVES
 
+#undef  HAVE_FFDHE_2048
+#define HAVE_FFDHE_2048
+
+#undef  HAVE_SUPPORTED_CURVES
+#define HAVE_SUPPORTED_CURVES
+
+#undef  WOLFSSL_TLS13
+#define WOLFSSL_TLS13
+
+#undef  HAVE_TLS_EXTENSIONS
+#define HAVE_TLS_EXTENSIONS
+
 #undef  HAVE_EXTENDED_MASTER
 #define HAVE_EXTENDED_MASTER
 
+#undef  WOLFSSL_ALT_CERT_CHAINS
+#define WOLFSSL_ALT_CERT_CHAINS
+
 #undef  WOLFSSL_TEST_CERT
 #define WOLFSSL_TEST_CERT
 
+#undef  NO_RC4
+#define NO_RC4
+
+#undef  HAVE_ENCRYPT_THEN_MAC
+#define HAVE_ENCRYPT_THEN_MAC
+
 #undef  NO_PSK
 #define NO_PSK
 
 #undef  NO_MD4
 #define NO_MD4
 
+#undef  WOLFSSL_ENCRYPTED_KEYS
+#define WOLFSSL_ENCRYPTED_KEYS
+
 #undef  USE_FAST_MATH
 #define USE_FAST_MATH
 
 #undef  WC_NO_ASYNC_THREADING
 #define WC_NO_ASYNC_THREADING
 
+#undef  HAVE_DH_DEFAULT_PARAMS
+#define HAVE_DH_DEFAULT_PARAMS
+
+#undef  WOLFSSL_CERT_GEN
+#define WOLFSSL_CERT_GEN
+
+#undef  OPENSSL_EXTRA
+#define OPENSSL_EXTRA
+
+#undef  WOLFSSL_ALWAYS_VERIFY_CB
+#define WOLFSSL_ALWAYS_VERIFY_CB
+
+#undef  WOLFSSL_VERIFY_CB_ALL_CERTS
+#define WOLFSSL_VERIFY_CB_ALL_CERTS
+
+#undef  WOLFSSL_EXTRA_ALERTS
+#define WOLFSSL_EXTRA_ALERTS
+
+#undef  HAVE_EXT_CACHE
+#define HAVE_EXT_CACHE
+
+#undef  WOLFSSL_FORCE_CACHE_ON_TICKET
+#define WOLFSSL_FORCE_CACHE_ON_TICKET
+
+#undef  WOLFSSL_AKID_NAME
+#define WOLFSSL_AKID_NAME
+
+#undef  HAVE_CTS
+#define HAVE_CTS
+
+#undef  GCM_TABLE_4BIT
+#define GCM_TABLE_4BIT
+
+#undef  HAVE_AESGCM
+#define HAVE_AESGCM
+
+#undef  HAVE_WC_INTROSPECTION
+#define HAVE_WC_INTROSPECTION
+
 
 #ifdef __cplusplus
 }
index 214a10f6caa1c8b54bb6082ba53f68cd86d18cdd..ed9819b87a42c43afd1841dcf669fce824b031ce 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
+
+EXTRA_DIST = updatemanpages.pl coverage.sh completion.pl firefox-db2pem.sh \
+ checksrc.pl mk-ca-bundle.pl
+
 ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 PERL = @PERL@
index 575fa36bcfdc09fc24ef05d25dc77666ca60ce01..d225f24809ad6ba0c69cc852b3766558d6d53bb7 100644 (file)
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, 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
+#
+###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -89,15 +113,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = scripts
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -189,6 +211,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -206,6 +229,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -263,6 +287,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -281,12 +306,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -303,28 +329,6 @@ USE_WOLFSSL = @USE_WOLFSSL@
 VERSION = @VERSION@
 VERSIONNUM = @VERSIONNUM@
 ZLIB_LIBS = @ZLIB_LIBS@
-
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 1998 - 2020, 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.
-#
-###########################################################################
 ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
@@ -375,12 +379,14 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
+EXTRA_DIST = updatemanpages.pl coverage.sh completion.pl firefox-db2pem.sh \
+ checksrc.pl mk-ca-bundle.pl
+
 ZSH_COMPLETION_FUNCTION_FILENAME = _curl
 FISH_COMPLETION_FUNCTION_FILENAME = curl.fish
 CLEANFILES = $(ZSH_COMPLETION_FUNCTION_FILENAME) $(FISH_COMPLETION_FUNCTION_FILENAME)
@@ -396,9 +402,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu scripts/Makefile
+         $(AUTOMAKE) --foreign scripts/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
diff --git a/scripts/checksrc.pl b/scripts/checksrc.pl
new file mode 100755 (executable)
index 0000000..651b4b7
--- /dev/null
@@ -0,0 +1,878 @@
+#!/usr/bin/env perl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2011 - 2022, 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
+#
+###########################################################################
+
+use strict;
+use warnings;
+
+my $max_column = 79;
+my $indent = 2;
+
+my $warnings = 0;
+my $swarnings = 0;
+my $errors = 0;
+my $serrors = 0;
+my $suppressed; # skipped problems
+my $file;
+my $dir=".";
+my $wlist="";
+my @alist;
+my $windows_os = $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys';
+my $verbose;
+my %skiplist;
+
+my %ignore;
+my %ignore_set;
+my %ignore_used;
+my @ignore_line;
+
+my %warnings_extended = (
+    'COPYRIGHTYEAR'    => 'copyright year incorrect',
+    'STRERROR',        => 'strerror() detected',
+    );
+
+my %warnings = (
+    'LONGLINE'         => "Line longer than $max_column",
+    'TABS'             => 'TAB characters not allowed',
+    'TRAILINGSPACE'    => 'Trailing whitespace on the line',
+    'CPPCOMMENTS'      => '// comment detected',
+    'SPACEBEFOREPAREN' => 'space before an open parenthesis',
+    'SPACEAFTERPAREN'  => 'space after open parenthesis',
+    'SPACEBEFORECLOSE' => 'space before a close parenthesis',
+    'SPACEBEFORECOMMA' => 'space before a comma',
+    'RETURNNOSPACE'    => 'return without space',
+    'COMMANOSPACE'     => 'comma without following space',
+    'BRACEELSE'        => '} else on the same line',
+    'PARENBRACE'       => '){ without sufficient space',
+    'SPACESEMICOLON'   => 'space before semicolon',
+    'BANNEDFUNC'       => 'a banned function was used',
+    'FOPENMODE'        => 'fopen needs a macro for the mode string',
+    'BRACEPOS'         => 'wrong position for an open brace',
+    'INDENTATION'      => 'wrong start column for code',
+    'COPYRIGHT'        => 'file missing a copyright statement',
+    'BADCOMMAND'       => 'bad !checksrc! instruction',
+    'UNUSEDIGNORE'     => 'a warning ignore was not used',
+    'OPENCOMMENT'      => 'file ended with a /* comment still "open"',
+    'ASTERISKSPACE'    => 'pointer declared with space after asterisk',
+    'ASTERISKNOSPACE'  => 'pointer declared without space before asterisk',
+    'ASSIGNWITHINCONDITION' => 'assignment within conditional expression',
+    'EQUALSNOSPACE'    => 'equals sign without following space',
+    'NOSPACEEQUALS'    => 'equals sign without preceding space',
+    'SEMINOSPACE'      => 'semicolon without following space',
+    'MULTISPACE'       => 'multiple spaces used when not suitable',
+    'SIZEOFNOPAREN'    => 'use of sizeof without parentheses',
+    'SNPRINTF'         => 'use of snprintf',
+    'ONELINECONDITION' => 'conditional block on the same line as the if()',
+    'TYPEDEFSTRUCT'    => 'typedefed struct',
+    'DOBRACE'          => 'A single space between do and open brace',
+    'BRACEWHILE'       => 'A single space between open brace and while',
+    'EXCLAMATIONSPACE' => 'Whitespace after exclamation mark in expression',
+    'EMPTYLINEBRACE'   => 'Empty line before the open brace',
+    'EQUALSNULL'       => 'if/while comparison with == NULL',
+    'NOTEQUALSZERO',   => 'if/while comparison with != 0',
+    );
+
+sub readskiplist {
+    open(W, "<$dir/checksrc.skip") or return;
+    my @all=<W>;
+    for(@all) {
+        $windows_os ? $_ =~ s/\r?\n$// : chomp;
+        $skiplist{$_}=1;
+    }
+    close(W);
+}
+
+# Reads the .checksrc in $dir for any extended warnings to enable locally.
+# Currently there is no support for disabling warnings from the standard set,
+# and since that's already handled via !checksrc! commands there is probably
+# little use to add it.
+sub readlocalfile {
+    my $i = 0;
+
+    open(my $rcfile, "<", "$dir/.checksrc") or return;
+
+    while(<$rcfile>) {
+        $i++;
+
+        # Lines starting with '#' are considered comments
+        if (/^\s*(#.*)/) {
+            next;
+        }
+        elsif (/^\s*enable ([A-Z]+)$/) {
+            if(!defined($warnings_extended{$1})) {
+                print STDERR "invalid warning specified in .checksrc: \"$1\"\n";
+                next;
+            }
+            $warnings{$1} = $warnings_extended{$1};
+        }
+        elsif (/^\s*disable ([A-Z]+)$/) {
+            if(!defined($warnings{$1})) {
+                print STDERR "invalid warning specified in .checksrc: \"$1\"\n";
+                next;
+            }
+            # Accept-list
+            push @alist, $1;
+        }
+        else {
+            die "Invalid format in $dir/.checksrc on line $i\n";
+        }
+    }
+    close($rcfile);
+}
+
+sub checkwarn {
+    my ($name, $num, $col, $file, $line, $msg, $error) = @_;
+
+    my $w=$error?"error":"warning";
+    my $nowarn=0;
+
+    #if(!$warnings{$name}) {
+    #    print STDERR "Dev! there's no description for $name!\n";
+    #}
+
+    # checksrc.skip
+    if($skiplist{$line}) {
+        $nowarn = 1;
+    }
+    # !checksrc! controlled
+    elsif($ignore{$name}) {
+        $ignore{$name}--;
+        $ignore_used{$name}++;
+        $nowarn = 1;
+        if(!$ignore{$name}) {
+            # reached zero, enable again
+            enable_warn($name, $num, $file, $line);
+        }
+    }
+
+    if($nowarn) {
+        $suppressed++;
+        if($w) {
+            $swarnings++;
+        }
+        else {
+            $serrors++;
+        }
+        return;
+    }
+
+    if($w) {
+        $warnings++;
+    }
+    else {
+        $errors++;
+    }
+
+    $col++;
+    print "$file:$num:$col: $w: $msg ($name)\n";
+    print " $line\n";
+
+    if($col < 80) {
+        my $pref = (' ' x $col);
+        print "${pref}^\n";
+    }
+}
+
+$file = shift @ARGV;
+
+while(defined $file) {
+
+    if($file =~ /-D(.*)/) {
+        $dir = $1;
+        $file = shift @ARGV;
+        next;
+    }
+    elsif($file =~ /-W(.*)/) {
+        $wlist .= " $1 ";
+        $file = shift @ARGV;
+        next;
+    }
+    elsif($file =~ /-A(.+)/) {
+        push @alist, $1;
+        $file = shift @ARGV;
+        next;
+    }
+    elsif($file =~ /-i([1-9])/) {
+        $indent = $1 + 0;
+        $file = shift @ARGV;
+        next;
+    }
+    elsif($file =~ /-m([0-9]+)/) {
+        $max_column = $1 + 0;
+        $file = shift @ARGV;
+        next;
+    }
+    elsif($file =~ /^(-h|--help)/) {
+        undef $file;
+        last;
+    }
+
+    last;
+}
+
+if(!$file) {
+    print "checksrc.pl [option] <file1> [file2] ...\n";
+    print " Options:\n";
+    print "  -A[rule]  Accept this violation, can be used multiple times\n";
+    print "  -D[DIR]   Directory to prepend file names\n";
+    print "  -h        Show help output\n";
+    print "  -W[file]  Skip the given file - ignore all its flaws\n";
+    print "  -i<n>     Indent spaces. Default: 2\n";
+    print "  -m<n>     Maximum line length. Default: 79\n";
+    print "\nDetects and warns for these problems:\n";
+    my @allw = keys %warnings;
+    push @allw, keys %warnings_extended;
+    for my $w (sort @allw) {
+        if($warnings{$w}) {
+            printf (" %-18s: %s\n", $w, $warnings{$w});
+        }
+        else {
+            printf (" %-18s: %s[*]\n", $w, $warnings_extended{$w});
+        }
+    }
+    print " [*] = disabled by default\n";
+    exit;
+}
+
+readskiplist();
+readlocalfile();
+
+do {
+    if("$wlist" !~ / $file /) {
+        my $fullname = $file;
+        $fullname = "$dir/$file" if ($fullname !~ '^\.?\.?/');
+        scanfile($fullname);
+    }
+    $file = shift @ARGV;
+
+} while($file);
+
+sub accept_violations {
+    for my $r (@alist) {
+        if(!$warnings{$r}) {
+            print "'$r' is not a warning to accept!\n";
+            exit;
+        }
+        $ignore{$r}=999999;
+        $ignore_used{$r}=0;
+    }
+}
+
+sub checksrc_clear {
+    undef %ignore;
+    undef %ignore_set;
+    undef @ignore_line;
+}
+
+sub checksrc_endoffile {
+    my ($file) = @_;
+    for(keys %ignore_set) {
+        if($ignore_set{$_} && !$ignore_used{$_}) {
+            checkwarn("UNUSEDIGNORE", $ignore_set{$_},
+                      length($_)+11, $file,
+                      $ignore_line[$ignore_set{$_}],
+                      "Unused ignore: $_");
+        }
+    }
+}
+
+sub enable_warn {
+    my ($what, $line, $file, $l) = @_;
+
+    # switch it back on, but warn if not triggered!
+    if(!$ignore_used{$what}) {
+        checkwarn("UNUSEDIGNORE",
+                  $line, length($what) + 11, $file, $l,
+                  "No warning was inhibited!");
+    }
+    $ignore_set{$what}=0;
+    $ignore_used{$what}=0;
+    $ignore{$what}=0;
+}
+sub checksrc {
+    my ($cmd, $line, $file, $l) = @_;
+    if($cmd =~ / *([^ ]*) *(.*)/) {
+        my ($enable, $what) = ($1, $2);
+        $what =~ s: *\*/$::; # cut off end of C comment
+        # print "ENABLE $enable WHAT $what\n";
+        if($enable eq "disable") {
+            my ($warn, $scope)=($1, $2);
+            if($what =~ /([^ ]*) +(.*)/) {
+                ($warn, $scope)=($1, $2);
+            }
+            else {
+                $warn = $what;
+                $scope = 1;
+            }
+            # print "IGNORE $warn for SCOPE $scope\n";
+            if($scope eq "all") {
+                $scope=999999;
+            }
+
+            # Comparing for a literal zero rather than the scalar value zero
+            # covers the case where $scope contains the ending '*' from the
+            # comment. If we use a scalar comparison (==) we induce warnings
+            # on non-scalar contents.
+            if($scope eq "0") {
+                checkwarn("BADCOMMAND",
+                          $line, 0, $file, $l,
+                          "Disable zero not supported, did you mean to enable?");
+            }
+            elsif($ignore_set{$warn}) {
+                checkwarn("BADCOMMAND",
+                          $line, 0, $file, $l,
+                          "$warn already disabled from line $ignore_set{$warn}");
+            }
+            else {
+                $ignore{$warn}=$scope;
+                $ignore_set{$warn}=$line;
+                $ignore_line[$line]=$l;
+            }
+        }
+        elsif($enable eq "enable") {
+            enable_warn($what, $line, $file, $l);
+        }
+        else {
+            checkwarn("BADCOMMAND",
+                      $line, 0, $file, $l,
+                      "Illegal !checksrc! command");
+        }
+    }
+}
+
+sub nostrings {
+    my ($str) = @_;
+    $str =~ s/\".*\"//g;
+    return $str;
+}
+
+sub scanfile {
+    my ($file) = @_;
+
+    my $line = 1;
+    my $prevl="";
+    my $prevpl="";
+    my $l = "";
+    my $prep = 0;
+    my $prevp = 0;
+    open(R, "<$file") || die "failed to open $file";
+
+    my $incomment=0;
+    my @copyright=();
+    checksrc_clear(); # for file based ignores
+    accept_violations();
+
+    while(<R>) {
+        $windows_os ? $_ =~ s/\r?\n$// : chomp;
+        my $l = $_;
+        my $ol = $l; # keep the unmodified line for error reporting
+        my $column = 0;
+
+        # check for !checksrc! commands
+        if($l =~ /\!checksrc\! (.*)/) {
+            my $cmd = $1;
+            checksrc($cmd, $line, $file, $l)
+        }
+
+        # check for a copyright statement and save the years
+        if($l =~ /\* +copyright .* \d\d\d\d/i) {
+            while($l =~ /([\d]{4})/g) {
+                push @copyright, {
+                  year => $1,
+                  line => $line,
+                  col => index($l, $1),
+                  code => $l
+                };
+            }
+        }
+
+        # detect long lines
+        if(length($l) > $max_column) {
+            checkwarn("LONGLINE", $line, length($l), $file, $l,
+                      "Longer than $max_column columns");
+        }
+        # detect TAB characters
+        if($l =~ /^(.*)\t/) {
+            checkwarn("TABS",
+                      $line, length($1), $file, $l, "Contains TAB character", 1);
+        }
+        # detect trailing whitespace
+        if($l =~ /^(.*)[ \t]+\z/) {
+            checkwarn("TRAILINGSPACE",
+                      $line, length($1), $file, $l, "Trailing whitespace");
+        }
+
+        # ------------------------------------------------------------
+        # Above this marker, the checks were done on lines *including*
+        # comments
+        # ------------------------------------------------------------
+
+        # strip off C89 comments
+
+      comment:
+        if(!$incomment) {
+            if($l =~ s/\/\*.*\*\// /g) {
+                # full /* comments */ were removed!
+            }
+            if($l =~ s/\/\*.*//) {
+                # start of /* comment was removed
+                $incomment = 1;
+            }
+        }
+        else {
+            if($l =~ s/.*\*\///) {
+                # end of comment */ was removed
+                $incomment = 0;
+                goto comment;
+            }
+            else {
+                # still within a comment
+                $l="";
+            }
+        }
+
+        # ------------------------------------------------------------
+        # Below this marker, the checks were done on lines *without*
+        # comments
+        # ------------------------------------------------------------
+
+        # prev line was a preprocessor **and** ended with a backslash
+        if($prep && ($prevpl =~ /\\ *\z/)) {
+            # this is still a preprocessor line
+            $prep = 1;
+            goto preproc;
+        }
+        $prep = 0;
+
+        # crude attempt to detect // comments without too many false
+        # positives
+        if($l =~ /^(([^"\*]*)[^:"]|)\/\//) {
+            checkwarn("CPPCOMMENTS",
+                      $line, length($1), $file, $l, "\/\/ comment");
+        }
+
+        # detect and strip preprocessor directives
+        if($l =~ /^[ \t]*\#/) {
+            # preprocessor line
+            $prep = 1;
+            goto preproc;
+        }
+
+        my $nostr = nostrings($l);
+        # check spaces after for/if/while/function call
+        if($nostr =~ /^(.*)(for|if|while| ([a-zA-Z0-9_]+)) \((.)/) {
+            if($1 =~ / *\#/) {
+                # this is a #if, treat it differently
+            }
+            elsif(defined $3 && $3 eq "return") {
+                # return must have a space
+            }
+            elsif(defined $3 && $3 eq "case") {
+                # case must have a space
+            }
+            elsif($4 eq "*") {
+                # (* beginning makes the space OK!
+            }
+            elsif($1 =~ / *typedef/) {
+                # typedefs can use space-paren
+            }
+            else {
+                checkwarn("SPACEBEFOREPAREN", $line, length($1)+length($2), $file, $l,
+                          "$2 with space");
+            }
+        }
+        # check for '== NULL' in if/while conditions but not if the thing on
+        # the left of it is a function call
+        if($nostr =~ /^(.*)(if|while)(\(.*?)([!=]= NULL|NULL [!=]=)/) {
+            checkwarn("EQUALSNULL", $line,
+                      length($1) + length($2) + length($3),
+                      $file, $l, "we prefer !variable instead of \"== NULL\" comparisons");
+        }
+
+        # check for '!= 0' in if/while conditions but not if the thing on
+        # the left of it is a function call
+        if($nostr =~ /^(.*)(if|while)(\(.*[^)]) != 0[^x]/) {
+            checkwarn("NOTEQUALSZERO", $line,
+                      length($1) + length($2) + length($3),
+                      $file, $l, "we prefer if(rc) instead of \"rc != 0\" comparisons");
+        }
+
+        # check spaces in 'do {'
+        if($nostr =~ /^( *)do( *)\{/ && length($2) != 1) {
+            checkwarn("DOBRACE", $line, length($1) + 2, $file, $l, "one space after do before brace");
+        }
+        # check spaces in 'do {'
+        elsif($nostr =~ /^( *)\}( *)while/ && length($2) != 1) {
+            checkwarn("BRACEWHILE", $line, length($1) + 2, $file, $l, "one space between brace and while");
+        }
+        if($nostr =~ /^((.*\s)(if) *\()(.*)\)(.*)/) {
+            my $pos = length($1);
+            my $postparen = $5;
+            my $cond = $4;
+            if($cond =~ / = /) {
+                checkwarn("ASSIGNWITHINCONDITION",
+                          $line, $pos+1, $file, $l,
+                          "assignment within conditional expression");
+            }
+            my $temp = $cond;
+            $temp =~ s/\(//g; # remove open parens
+            my $openc = length($cond) - length($temp);
+
+            $temp = $cond;
+            $temp =~ s/\)//g; # remove close parens
+            my $closec = length($cond) - length($temp);
+            my $even = $openc == $closec;
+
+            if($l =~ / *\#/) {
+                # this is a #if, treat it differently
+            }
+            elsif($even && $postparen &&
+               ($postparen !~ /^ *$/) && ($postparen !~ /^ *[,{&|\\]+/)) {
+                checkwarn("ONELINECONDITION",
+                          $line, length($l)-length($postparen), $file, $l,
+                          "conditional block on the same line");
+            }
+        }
+        # check spaces after open parentheses
+        if($l =~ /^(.*[a-z])\( /i) {
+            checkwarn("SPACEAFTERPAREN",
+                      $line, length($1)+1, $file, $l,
+                      "space after open parenthesis");
+        }
+
+        # check spaces before close parentheses, unless it was a space or a
+        # close parenthesis!
+        if($l =~ /(.*[^\) ]) \)/) {
+            checkwarn("SPACEBEFORECLOSE",
+                      $line, length($1)+1, $file, $l,
+                      "space before close parenthesis");
+        }
+
+        # check spaces before comma!
+        if($l =~ /(.*[^ ]) ,/) {
+            checkwarn("SPACEBEFORECOMMA",
+                      $line, length($1)+1, $file, $l,
+                      "space before comma");
+        }
+
+        # check for "return(" without space
+        if($l =~ /^(.*)return\(/) {
+            if($1 =~ / *\#/) {
+                # this is a #if, treat it differently
+            }
+            else {
+                checkwarn("RETURNNOSPACE", $line, length($1)+6, $file, $l,
+                          "return without space before paren");
+            }
+        }
+
+        # check for "sizeof" without parenthesis
+        if(($l =~ /^(.*)sizeof *([ (])/) && ($2 ne "(")) {
+            if($1 =~ / *\#/) {
+                # this is a #if, treat it differently
+            }
+            else {
+                checkwarn("SIZEOFNOPAREN", $line, length($1)+6, $file, $l,
+                          "sizeof without parenthesis");
+            }
+        }
+
+        # check for comma without space
+        if($l =~ /^(.*),[^ \n]/) {
+            my $pref=$1;
+            my $ign=0;
+            if($pref =~ / *\#/) {
+                # this is a #if, treat it differently
+                $ign=1;
+            }
+            elsif($pref =~ /\/\*/) {
+                # this is a comment
+                $ign=1;
+            }
+            elsif($pref =~ /[\"\']/) {
+                $ign = 1;
+                # There is a quote here, figure out whether the comma is
+                # within a string or '' or not.
+                if($pref =~ /\"/) {
+                    # within a string
+                }
+                elsif($pref =~ /\'$/) {
+                    # a single letter
+                }
+                else {
+                    $ign = 0;
+                }
+            }
+            if(!$ign) {
+                checkwarn("COMMANOSPACE", $line, length($pref)+1, $file, $l,
+                          "comma without following space");
+            }
+        }
+
+        # check for "} else"
+        if($l =~ /^(.*)\} *else/) {
+            checkwarn("BRACEELSE",
+                      $line, length($1), $file, $l, "else after closing brace on same line");
+        }
+        # check for "){"
+        if($l =~ /^(.*)\)\{/) {
+            checkwarn("PARENBRACE",
+                      $line, length($1)+1, $file, $l, "missing space after close paren");
+        }
+        # check for "^{" with an empty line before it
+        if(($l =~ /^\{/) && ($prevl =~ /^[ \t]*\z/)) {
+            checkwarn("EMPTYLINEBRACE",
+                      $line, 0, $file, $l, "empty line before open brace");
+        }
+
+        # check for space before the semicolon last in a line
+        if($l =~ /^(.*[^ ].*) ;$/) {
+            checkwarn("SPACESEMICOLON",
+                      $line, length($1), $file, $ol, "no space before semicolon");
+        }
+
+        # scan for use of banned functions
+        if($l =~ /^(.*\W)
+                   (gmtime|localtime|
+                    gets|
+                    strtok|
+                    v?sprintf|
+                    (str|_mbs|_tcs|_wcs)n?cat|
+                    LoadLibrary(Ex)?(A|W)?)
+                   \s*\(
+                 /x) {
+            checkwarn("BANNEDFUNC",
+                      $line, length($1), $file, $ol,
+                      "use of $2 is banned");
+        }
+        if($warnings{"STRERROR"}) {
+            # scan for use of banned strerror. This is not a BANNEDFUNC to
+            # allow for individual enable/disable of this warning.
+            if($l =~ /^(.*\W)(strerror)\s*\(/x) {
+                if($1 !~ /^ *\#/) {
+                    # skip preprocessor lines
+                    checkwarn("STRERROR",
+                              $line, length($1), $file, $ol,
+                              "use of $2 is banned");
+                }
+            }
+        }
+        # scan for use of snprintf for curl-internals reasons
+        if($l =~ /^(.*\W)(v?snprintf)\s*\(/x) {
+            checkwarn("SNPRINTF",
+                      $line, length($1), $file, $ol,
+                      "use of $2 is banned");
+        }
+
+        # scan for use of non-binary fopen without the macro
+        if($l =~ /^(.*\W)fopen\s*\([^,]*, *\"([^"]*)/) {
+            my $mode = $2;
+            if($mode !~ /b/) {
+                checkwarn("FOPENMODE",
+                          $line, length($1), $file, $ol,
+                          "use of non-binary fopen without FOPEN_* macro: $mode");
+            }
+        }
+
+        # check for open brace first on line but not first column only alert
+        # if previous line ended with a close paren and it wasn't a cpp line
+        if(($prevl =~ /\)\z/) && ($l =~ /^( +)\{/) && !$prevp) {
+            checkwarn("BRACEPOS",
+                      $line, length($1), $file, $ol, "badly placed open brace");
+        }
+
+        # if the previous line starts with if/while/for AND ends with an open
+        # brace, or an else statement, check that this line is indented $indent
+        # more steps, if not a cpp line
+        if(!$prevp && ($prevl =~ /^( *)((if|while|for)\(.*\{|else)\z/)) {
+            my $first = length($1);
+            # this line has some character besides spaces
+            if($l =~ /^( *)[^ ]/) {
+                my $second = length($1);
+                my $expect = $first+$indent;
+                if($expect != $second) {
+                    my $diff = $second - $first;
+                    checkwarn("INDENTATION", $line, length($1), $file, $ol,
+                              "not indented $indent steps (uses $diff)");
+
+                }
+            }
+        }
+
+        # check for 'char * name'
+        if(($l =~ /(^.*(char|int|long|void|CURL|CURLM|CURLMsg|[cC]url_[A-Za-z_]+|struct [a-zA-Z_]+) *(\*+)) (\w+)/) && ($4 !~ /^(const|volatile)$/)) {
+            checkwarn("ASTERISKSPACE",
+                      $line, length($1), $file, $ol,
+                      "space after declarative asterisk");
+        }
+        # check for 'char*'
+        if(($l =~ /(^.*(char|int|long|void|curl_slist|CURL|CURLM|CURLMsg|curl_httppost|sockaddr_in|FILE)\*)/)) {
+            checkwarn("ASTERISKNOSPACE",
+                      $line, length($1)-1, $file, $ol,
+                      "no space before asterisk");
+        }
+
+        # check for 'void func() {', but avoid false positives by requiring
+        # both an open and closed parentheses before the open brace
+        if($l =~ /^((\w).*)\{\z/) {
+            my $k = $1;
+            $k =~ s/const *//;
+            $k =~ s/static *//;
+            if($k =~ /\(.*\)/) {
+                checkwarn("BRACEPOS",
+                          $line, length($l)-1, $file, $ol,
+                          "wrongly placed open brace");
+            }
+        }
+
+        # check for equals sign without spaces next to it
+        if($nostr =~ /(.*)\=[a-z0-9]/i) {
+            checkwarn("EQUALSNOSPACE",
+                      $line, length($1)+1, $file, $ol,
+                      "no space after equals sign");
+        }
+        # check for equals sign without spaces before it
+        elsif($nostr =~ /(.*)[a-z0-9]\=/i) {
+            checkwarn("NOSPACEEQUALS",
+                      $line, length($1)+1, $file, $ol,
+                      "no space before equals sign");
+        }
+
+        # check for plus signs without spaces next to it
+        if($nostr =~ /(.*)[^+]\+[a-z0-9]/i) {
+            checkwarn("PLUSNOSPACE",
+                      $line, length($1)+1, $file, $ol,
+                      "no space after plus sign");
+        }
+        # check for plus sign without spaces before it
+        elsif($nostr =~ /(.*)[a-z0-9]\+[^+]/i) {
+            checkwarn("NOSPACEPLUS",
+                      $line, length($1)+1, $file, $ol,
+                      "no space before plus sign");
+        }
+
+        # check for semicolons without space next to it
+        if($nostr =~ /(.*)\;[a-z0-9]/i) {
+            checkwarn("SEMINOSPACE",
+                      $line, length($1)+1, $file, $ol,
+                      "no space after semicolon");
+        }
+
+        # typedef struct ... {
+        if($nostr =~ /^(.*)typedef struct.*{/) {
+            checkwarn("TYPEDEFSTRUCT",
+                      $line, length($1)+1, $file, $ol,
+                      "typedef'ed struct");
+        }
+
+        if($nostr =~ /(.*)! +(\w|\()/) {
+            checkwarn("EXCLAMATIONSPACE",
+                      $line, length($1)+1, $file, $ol,
+                      "space after exclamation mark");
+        }
+
+        # check for more than one consecutive space before open brace or
+        # question mark. Skip lines containing strings since they make it hard
+        # due to artificially getting multiple spaces
+        if(($l eq $nostr) &&
+           $nostr =~ /^(.*(\S)) + [{?]/i) {
+            checkwarn("MULTISPACE",
+                      $line, length($1)+1, $file, $ol,
+                      "multiple spaces");
+        }
+      preproc:
+        $line++;
+        $prevp = $prep;
+        $prevl = $ol if(!$prep);
+        $prevpl = $ol if($prep);
+    }
+
+    if(!scalar(@copyright)) {
+        checkwarn("COPYRIGHT", 1, 0, $file, "", "Missing copyright statement", 1);
+    }
+
+    # COPYRIGHTYEAR is a extended warning so we must first see if it has been
+    # enabled in .checksrc
+    if(defined($warnings{"COPYRIGHTYEAR"})) {
+        # The check for updated copyrightyear is overly complicated in order to
+        # not punish current hacking for past sins. The copyright years are
+        # right now a bit behind, so enforcing copyright year checking on all
+        # files would cause hundreds of errors. Instead we only look at files
+        # which are tracked in the Git repo and edited in the workdir, or
+        # committed locally on the branch without being in upstream master.
+        #
+        # The simple and naive test is to simply check for the current year,
+        # but updating the year even without an edit is against project policy
+        # (and it would fail every file on January 1st).
+        #
+        # A rather more interesting, and correct, check would be to not test
+        # only locally committed files but inspect all files wrt the year of
+        # their last commit. Removing the `git rev-list origin/master..HEAD`
+        # condition below will enforce copyright year checks against the year
+        # the file was last committed (and thus edited to some degree).
+        my $commityear = undef;
+        @copyright = sort {$$b{year} cmp $$a{year}} @copyright;
+
+        # if the file is modified, assume commit year this year
+        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`;
+            if($grl) {
+                chomp $grl;
+                $commityear = (localtime((split(/ /, $grl))[0]))[5] + 1900;
+            }
+        }
+
+        if(defined($commityear) && scalar(@copyright) &&
+           $copyright[0]{year} != $commityear) {
+            checkwarn("COPYRIGHTYEAR", $copyright[0]{line}, $copyright[0]{col},
+                      $file, $copyright[0]{code},
+                      "Copyright year out of date, should be $commityear, " .
+                      "is $copyright[0]{year}", 1);
+        }
+    }
+
+    if($incomment) {
+        checkwarn("OPENCOMMENT", 1, 0, $file, "", "Missing closing comment", 1);
+    }
+
+    checksrc_endoffile($file);
+
+    close(R);
+
+}
+
+
+if($errors || $warnings || $verbose) {
+    printf "checksrc: %d errors and %d warnings\n", $errors, $warnings;
+    if($suppressed) {
+        printf "checksrc: %d errors and %d warnings suppressed\n",
+        $serrors,
+        $swarnings;
+    }
+    exit 5; # return failure
+}
index 8bbf4838ab953eef866848098a447a722336852c..c2eb774f786244c06f007e8ba5945ec4ea1ac98c 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 use strict;
@@ -102,11 +104,20 @@ sub parse_main_opts {
             $option .= '}' if defined $short;
             $option .= '\'[' . trim($desc) . ']\'' if defined $desc;
 
-            $option .= ":'$arg'" if defined $arg;
-
-            $option .= ':_files'
-                if defined $arg and ($arg eq '<file>' || $arg eq '<filename>'
-                    || $arg eq '<dir>');
+            if (defined $arg) {
+                $option .= ":'$arg'";
+                if ($arg =~ /<file ?(name)?>|<path>/) {
+                    $option .= ':_files';
+                } elsif ($arg =~ /<dir>/) {
+                    $option .= ":'_path_files -/'";
+                } elsif ($arg =~ /<url>/i) {
+                    $option .= ':_urls';
+                } elsif ($long =~ /ftp/ && $arg =~ /<method>/) {
+                    $option .= ":'(multicwd nocwd singlecwd)'";
+                } elsif ($arg =~ /<method>/) {
+                    $option .= ":'(DELETE GET HEAD POST PUT)'";
+                }
+            }
         }
 
         push @list, $option;
index e2b65b7f05096052cd180fdda4add7175d3856fd..f3db9af1750ac1bf1c4b271a18423fdb1378e3a2 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
-./buildconf
+autoreconf -fi
 mkdir -p cvr
 cd cvr
 ../configure --disable-shared --enable-debug --enable-maintainer-mode --enable-code-coverage
diff --git a/scripts/firefox-db2pem.sh b/scripts/firefox-db2pem.sh
new file mode 100755 (executable)
index 0000000..36c2de9
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/sh
+# ***************************************************************************
+# *                                  _   _ ____  _
+# *  Project                     ___| | | |  _ \| |
+# *                             / __| | | | |_) | |
+# *                            | (__| |_| |  _ <| |___
+# *                             \___|\___/|_| \_\_____|
+# *
+# * Copyright (C) 1998 - 2022, 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
+# *
+# ***************************************************************************
+# This shell script creates a fresh ca-bundle.crt file for use with libcurl.
+# It extracts all ca certs it finds in the local Firefox database and converts
+# them all into PEM format.
+#
+db=$(ls -1d $HOME/.mozilla/firefox/*default*)
+out=$1
+
+if test -z "$out"; then
+  out="ca-bundle.crt" # use a sensible default
+fi
+
+currentdate=$(date)
+
+cat >$out <<EOF
+##
+## Bundle of CA Root Certificates
+##
+## Converted at: ${currentdate}
+## These were converted from the local Firefox directory by the db2pem script.
+##
+EOF
+
+
+certutil -L -h 'Builtin Object Token' -d "$db" | \
+grep ' *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$' | \
+sed -e 's/ *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$//' -e 's/\(.*\)/"\1"/' | \
+sort | \
+while read -r nickname; \
+ do echo "$nickname" | sed -e "s/Builtin Object Token://g"; \
+eval certutil -d "$db" -L -n "$nickname" -a ; \
+done >> $out
diff --git a/scripts/mk-ca-bundle.pl b/scripts/mk-ca-bundle.pl
new file mode 100755 (executable)
index 0000000..926478f
--- /dev/null
@@ -0,0 +1,713 @@
+#!/usr/bin/env perl
+# ***************************************************************************
+# *                                  _   _ ____  _
+# *  Project                     ___| | | |  _ \| |
+# *                             / __| | | | |_) | |
+# *                            | (__| |_| |  _ <| |___
+# *                             \___|\___/|_| \_\_____|
+# *
+# * Copyright (C) 1998 - 2022, 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
+# *
+# ***************************************************************************
+# This Perl script creates a fresh ca-bundle.crt file for use with libcurl.
+# It downloads certdata.txt from Mozilla's source tree (see URL below),
+# then parses certdata.txt and extracts CA Root Certificates into PEM format.
+# These are then processed with the OpenSSL commandline tool to produce the
+# final ca-bundle.crt file.
+# The script is based on the parse-certs script written by Roland Krikava.
+# This Perl script works on almost any platform since its only external
+# dependency is the OpenSSL commandline tool for optional text listing.
+# Hacked by Guenter Knauf.
+#
+use Encode;
+use Getopt::Std;
+use MIME::Base64;
+use strict;
+use warnings;
+use vars qw($opt_b $opt_d $opt_f $opt_h $opt_i $opt_k $opt_l $opt_m $opt_n $opt_p $opt_q $opt_s $opt_t $opt_u $opt_v $opt_w);
+use List::Util;
+use Text::Wrap;
+use Time::Local;
+my $MOD_SHA = "Digest::SHA";
+eval "require $MOD_SHA";
+if ($@) {
+  $MOD_SHA = "Digest::SHA::PurePerl";
+  eval "require $MOD_SHA";
+}
+eval "require LWP::UserAgent";
+
+my %urls = (
+  'nss' =>
+    'https://hg.mozilla.org/projects/nss/raw-file/default/lib/ckfw/builtins/certdata.txt',
+  'central' =>
+    'https://hg.mozilla.org/mozilla-central/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+  'beta' =>
+    'https://hg.mozilla.org/releases/mozilla-beta/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+  'release' =>
+    'https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
+);
+
+$opt_d = 'release';
+
+# If the OpenSSL commandline is not in search path you can configure it here!
+my $openssl = 'openssl';
+
+my $version = '1.29';
+
+$opt_w = 76; # default base64 encoded lines length
+
+# default cert types to include in the output (default is to include CAs which
+# may issue SSL server certs)
+my $default_mozilla_trust_purposes = "SERVER_AUTH";
+my $default_mozilla_trust_levels = "TRUSTED_DELEGATOR";
+$opt_p = $default_mozilla_trust_purposes . ":" . $default_mozilla_trust_levels;
+
+my @valid_mozilla_trust_purposes = (
+  "DIGITAL_SIGNATURE",
+  "NON_REPUDIATION",
+  "KEY_ENCIPHERMENT",
+  "DATA_ENCIPHERMENT",
+  "KEY_AGREEMENT",
+  "KEY_CERT_SIGN",
+  "CRL_SIGN",
+  "SERVER_AUTH",
+  "CLIENT_AUTH",
+  "CODE_SIGNING",
+  "EMAIL_PROTECTION",
+  "IPSEC_END_SYSTEM",
+  "IPSEC_TUNNEL",
+  "IPSEC_USER",
+  "TIME_STAMPING",
+  "STEP_UP_APPROVED"
+);
+
+my @valid_mozilla_trust_levels = (
+  "TRUSTED_DELEGATOR",    # CAs
+  "NOT_TRUSTED",          # Don't trust these certs.
+  "MUST_VERIFY_TRUST",    # This explicitly tells us that it ISN'T a CA but is
+                          # otherwise ok. In other words, this should tell the
+                          # app to ignore any other sources that claim this is
+                          # a CA.
+  "TRUSTED"               # This cert is trusted, but only for itself and not
+                          # for delegates (i.e. it is not a CA).
+);
+
+my $default_signature_algorithms = $opt_s = "MD5";
+
+my @valid_signature_algorithms = (
+  "MD5",
+  "SHA1",
+  "SHA256",
+  "SHA384",
+  "SHA512"
+);
+
+$0 =~ s@.*(/|\\)@@;
+$Getopt::Std::STANDARD_HELP_VERSION = 1;
+getopts('bd:fhiklmnp:qs:tuvw:');
+
+if(!defined($opt_d)) {
+    # to make plain "-d" use not cause warnings, and actually still work
+    $opt_d = 'release';
+}
+
+# Use predefined URL or else custom URL specified on command line.
+my $url;
+if(defined($urls{$opt_d})) {
+  $url = $urls{$opt_d};
+  if(!$opt_k && $url !~ /^https:\/\//i) {
+    die "The URL for '$opt_d' is not HTTPS. Use -k to override (insecure).\n";
+  }
+}
+else {
+  $url = $opt_d;
+}
+
+my $curl = `curl -V`;
+
+if ($opt_i) {
+  print ("=" x 78 . "\n");
+  print "Script Version                   : $version\n";
+  print "Perl Version                     : $]\n";
+  print "Operating System Name            : $^O\n";
+  print "Getopt::Std.pm Version           : ${Getopt::Std::VERSION}\n";
+  print "Encode::Encoding.pm Version      : ${Encode::Encoding::VERSION}\n";
+  print "MIME::Base64.pm Version          : ${MIME::Base64::VERSION}\n";
+  print "LWP::UserAgent.pm Version        : ${LWP::UserAgent::VERSION}\n" if($LWP::UserAgent::VERSION);
+  print "LWP.pm Version                   : ${LWP::VERSION}\n" if($LWP::VERSION);
+  print "Digest::SHA.pm Version           : ${Digest::SHA::VERSION}\n" if ($Digest::SHA::VERSION);
+  print "Digest::SHA::PurePerl.pm Version : ${Digest::SHA::PurePerl::VERSION}\n" if ($Digest::SHA::PurePerl::VERSION);
+  print ("=" x 78 . "\n");
+}
+
+sub warning_message() {
+  if ( $opt_d =~ m/^risk$/i ) { # Long Form Warning and Exit
+    print "Warning: Use of this script may pose some risk:\n";
+    print "\n";
+    print "  1) If you use HTTP URLs they are subject to a man in the middle attack\n";
+    print "  2) Default to 'release', but more recent updates may be found in other trees\n";
+    print "  3) certdata.txt file format may change, lag time to update this script\n";
+    print "  4) Generally unwise to blindly trust CAs without manual review & verification\n";
+    print "  5) Mozilla apps use additional security checks aren't represented in certdata\n";
+    print "  6) Use of this script will make a security engineer grind his teeth and\n";
+    print "     swear at you.  ;)\n";
+    exit;
+  } else { # Short Form Warning
+    print "Warning: Use of this script may pose some risk, -d risk for more details.\n";
+  }
+}
+
+sub HELP_MESSAGE() {
+  print "Usage:\t${0} [-b] [-d<certdata>] [-f] [-i] [-k] [-l] [-n] [-p<purposes:levels>] [-q] [-s<algorithms>] [-t] [-u] [-v] [-w<l>] [<outputfile>]\n";
+  print "\t-b\tbackup an existing version of ca-bundle.crt\n";
+  print "\t-d\tspecify Mozilla tree to pull certdata.txt or custom URL\n";
+  print "\t\t  Valid names are:\n";
+  print "\t\t    ", join( ", ", map { ( $_ =~ m/$opt_d/ ) ? "$_ (default)" : "$_" } sort keys %urls ), "\n";
+  print "\t-f\tforce rebuild even if certdata.txt is current\n";
+  print "\t-i\tprint version info about used modules\n";
+  print "\t-k\tallow URLs other than HTTPS, enable HTTP fallback (insecure)\n";
+  print "\t-l\tprint license info about certdata.txt\n";
+  print "\t-m\tinclude meta data in output\n";
+  print "\t-n\tno download of certdata.txt (to use existing)\n";
+  print wrap("\t","\t\t", "-p\tlist of Mozilla trust purposes and levels for certificates to include in output. Takes the form of a comma separated list of purposes, a colon, and a comma separated list of levels. (default: $default_mozilla_trust_purposes:$default_mozilla_trust_levels)"), "\n";
+  print "\t\t  Valid purposes are:\n";
+  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_mozilla_trust_purposes ) ), "\n";
+  print "\t\t  Valid levels are:\n";
+  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_mozilla_trust_levels ) ), "\n";
+  print "\t-q\tbe really quiet (no progress output at all)\n";
+  print wrap("\t","\t\t", "-s\tcomma separated list of certificate signatures/hashes to output in plain text mode. (default: $default_signature_algorithms)\n");
+  print "\t\t  Valid signature algorithms are:\n";
+  print wrap("\t\t    ","\t\t    ", join( ", ", "ALL", @valid_signature_algorithms ) ), "\n";
+  print "\t-t\tinclude plain text listing of certificates\n";
+  print "\t-u\tunlink (remove) certdata.txt after processing\n";
+  print "\t-v\tbe verbose and print out processed CAs\n";
+  print "\t-w <l>\twrap base64 output lines after <l> chars (default: ${opt_w})\n";
+  exit;
+}
+
+sub VERSION_MESSAGE() {
+  print "${0} version ${version} running Perl ${]} on ${^O}\n";
+}
+
+warning_message() unless ($opt_q || $url =~ m/^(ht|f)tps:/i );
+HELP_MESSAGE() if ($opt_h);
+
+sub report($@) {
+  my $output = shift;
+
+  print STDERR $output . "\n" unless $opt_q;
+}
+
+sub is_in_list($@) {
+  my $target = shift;
+
+  return defined(List::Util::first { $target eq $_ } @_);
+}
+
+# Parses $param_string as a case insensitive comma separated list with optional
+# whitespace validates that only allowed parameters are supplied
+sub parse_csv_param($$@) {
+  my $description = shift;
+  my $param_string = shift;
+  my @valid_values = @_;
+
+  my @values = map {
+    s/^\s+//;  # strip leading spaces
+    s/\s+$//;  # strip trailing spaces
+    uc $_      # return the modified string as upper case
+  } split( ',', $param_string );
+
+  # Find all values which are not in the list of valid values or "ALL"
+  my @invalid = grep { !is_in_list($_,"ALL",@valid_values) } @values;
+
+  if ( scalar(@invalid) > 0 ) {
+    # Tell the user which parameters were invalid and print the standard help
+    # message which will exit
+    print "Error: Invalid ", $description, scalar(@invalid) == 1 ? ": " : "s: ", join( ", ", map { "\"$_\"" } @invalid ), "\n";
+    HELP_MESSAGE();
+  }
+
+  @values = @valid_values if ( is_in_list("ALL",@values) );
+
+  return @values;
+}
+
+sub sha256 {
+  my $result;
+  if ($Digest::SHA::VERSION || $Digest::SHA::PurePerl::VERSION) {
+    open(FILE, $_[0]) or die "Can't open '$_[0]': $!";
+    binmode(FILE);
+    $result = $MOD_SHA->new(256)->addfile(*FILE)->hexdigest;
+    close(FILE);
+  } else {
+    # Use OpenSSL command if Perl Digest::SHA modules not available
+    $result = `"$openssl" dgst -r -sha256 "$_[0]"`;
+    $result =~ s/^([0-9a-f]{64}) .+/$1/is;
+  }
+  return $result;
+}
+
+
+sub oldhash {
+  my $hash = "";
+  open(C, "<$_[0]") || return 0;
+  while(<C>) {
+    chomp;
+    if($_ =~ /^\#\# SHA256: (.*)/) {
+      $hash = $1;
+      last;
+    }
+  }
+  close(C);
+  return $hash;
+}
+
+if ( $opt_p !~ m/:/ ) {
+  print "Error: Mozilla trust identifier list must include both purposes and levels\n";
+  HELP_MESSAGE();
+}
+
+(my $included_mozilla_trust_purposes_string, my $included_mozilla_trust_levels_string) = split( ':', $opt_p );
+my @included_mozilla_trust_purposes = parse_csv_param( "trust purpose", $included_mozilla_trust_purposes_string, @valid_mozilla_trust_purposes );
+my @included_mozilla_trust_levels = parse_csv_param( "trust level", $included_mozilla_trust_levels_string, @valid_mozilla_trust_levels );
+
+my @included_signature_algorithms = parse_csv_param( "signature algorithm", $opt_s, @valid_signature_algorithms );
+
+sub should_output_cert(%) {
+  my %trust_purposes_by_level = @_;
+
+  foreach my $level (@included_mozilla_trust_levels) {
+    # for each level we want to output, see if any of our desired purposes are
+    # included
+    return 1 if ( defined( List::Util::first { is_in_list( $_, @included_mozilla_trust_purposes ) } @{$trust_purposes_by_level{$level}} ) );
+  }
+
+  return 0;
+}
+
+my $crt = $ARGV[0] || 'ca-bundle.crt';
+(my $txt = $url) =~ s@(.*/|\?.*)@@g;
+
+my $stdout = $crt eq '-';
+my $resp;
+my $fetched;
+
+my $oldhash = oldhash($crt);
+
+report "SHA256 of old file: $oldhash";
+
+if(!$opt_n) {
+  report "Downloading $txt ...";
+
+  # If we have an HTTPS URL then use curl
+  if($url =~ /^https:\/\//i) {
+    if($curl) {
+      if($curl =~ /^Protocols:.* https( |$)/m) {
+        report "Get certdata with curl!";
+        my $proto = !$opt_k ? "--proto =https" : "";
+        my $quiet = $opt_q ? "-s" : "";
+        my @out = `curl -w %{response_code} $proto $quiet -o "$txt" "$url"`;
+        if(!$? && @out && $out[0] == 200) {
+          $fetched = 1;
+          report "Downloaded $txt";
+        }
+        else {
+          report "Failed downloading via HTTPS with curl";
+          if(-e $txt && !unlink($txt)) {
+            report "Failed to remove '$txt': $!";
+          }
+        }
+      }
+      else {
+        report "curl lacks https support";
+      }
+    }
+    else {
+      report "curl not found";
+    }
+  }
+
+  # If nothing was fetched then use LWP
+  if(!$fetched) {
+    if($url =~ /^https:\/\//i) {
+      report "Falling back to HTTP";
+      $url =~ s/^https:\/\//http:\/\//i;
+    }
+    if(!$opt_k) {
+      report "URLs other than HTTPS are disabled by default, to enable use -k";
+      exit 1;
+    }
+    report "Get certdata with LWP!";
+    if(!defined(${LWP::UserAgent::VERSION})) {
+      report "LWP is not available (LWP::UserAgent not found)";
+      exit 1;
+    }
+    my $ua  = new LWP::UserAgent(agent => "$0/$version");
+    $ua->env_proxy();
+    $resp = $ua->mirror($url, $txt);
+    if($resp && $resp->code eq '304') {
+      report "Not modified";
+      exit 0 if -e $crt && !$opt_f;
+    }
+    else {
+      $fetched = 1;
+      report "Downloaded $txt";
+    }
+    if(!$resp || $resp->code !~ /^(?:200|304)$/) {
+      report "Unable to download latest data: "
+        . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed");
+      exit 1 if -e $crt || ! -r $txt;
+    }
+  }
+}
+
+my $filedate = $resp ? $resp->last_modified : (stat($txt))[9];
+my $datesrc = "as of";
+if(!$filedate) {
+    # mxr.mozilla.org gave us a time, hg.mozilla.org does not!
+    $filedate = time();
+    $datesrc="downloaded on";
+}
+
+# get the hash from the download file
+my $newhash= sha256($txt);
+
+if(!$opt_f && $oldhash eq $newhash) {
+    report "Downloaded file identical to previous run\'s source file. Exiting";
+    if($opt_u && -e $txt && !unlink($txt)) {
+        report "Failed to remove $txt: $!\n";
+    }
+    exit;
+}
+
+report "SHA256 of new file: $newhash";
+
+my $currentdate = scalar gmtime($filedate);
+
+my $format = $opt_t ? "plain text and " : "";
+if( $stdout ) {
+    open(CRT, '> -') or die "Couldn't open STDOUT: $!\n";
+} else {
+    open(CRT,">$crt.~") or die "Couldn't open $crt.~: $!\n";
+}
+print CRT <<EOT;
+##
+## Bundle of CA Root Certificates
+##
+## Certificate data from Mozilla ${datesrc}: ${currentdate} GMT
+##
+## This is a bundle of X.509 certificates of public Certificate Authorities
+## (CA). These were automatically extracted from Mozilla's root certificates
+## file (certdata.txt).  This file can be found in the mozilla source tree:
+## ${url}
+##
+## It contains the certificates in ${format}PEM format and therefore
+## can be directly used with curl / libcurl / php_curl, or with
+## an Apache+mod_ssl webserver for SSL client authentication.
+## Just configure this file as the SSLCACertificateFile.
+##
+## Conversion done with mk-ca-bundle.pl version $version.
+## SHA256: $newhash
+##
+
+EOT
+
+report "Processing  '$txt' ...";
+my $caname;
+my $certnum = 0;
+my $skipnum = 0;
+my $start_of_cert = 0;
+my $main_block = 0;
+my $main_block_name;
+my $trust_block = 0;
+my $trust_block_name;
+my @precert;
+my $cka_value;
+my $valid = 0;
+
+open(TXT,"$txt") or die "Couldn't open $txt: $!\n";
+while (<TXT>) {
+  if (/\*\*\*\*\* BEGIN LICENSE BLOCK \*\*\*\*\*/) {
+    print CRT;
+    print if ($opt_l);
+    while (<TXT>) {
+      print CRT;
+      print if ($opt_l);
+      last if (/\*\*\*\*\* END LICENSE BLOCK \*\*\*\*\*/);
+    }
+    next;
+  }
+  # The input file format consists of blocks of Mozilla objects.
+  # The blocks are separated by blank lines but may be related.
+  elsif(/^\s*$/) {
+    $main_block = 0;
+    $trust_block = 0;
+    next;
+  }
+  # Each certificate has a main block.
+  elsif(/^# Certificate "(.*)"/) {
+    (!$main_block && !$trust_block) or die "Unexpected certificate block";
+    $main_block = 1;
+    $main_block_name = $1;
+    # Reset all other certificate variables.
+    $trust_block = 0;
+    $trust_block_name = "";
+    $valid = 0;
+    $start_of_cert = 0;
+    $caname = "";
+    $cka_value = "";
+    undef @precert;
+    next;
+  }
+  # Each certificate's main block is followed by a trust block.
+  elsif(/^# Trust for (?:Certificate )?"(.*)"/) {
+    (!$main_block && !$trust_block) or die "Unexpected trust block";
+    $trust_block = 1;
+    $trust_block_name = $1;
+    if($main_block_name ne $trust_block_name) {
+      die "cert name \"$main_block_name\" != trust name \"$trust_block_name\"";
+    }
+    next;
+  }
+  # Ignore other blocks.
+  #
+  # There is a documentation comment block, a BEGINDATA block, and a bunch of
+  # blocks starting with "# Explicitly Distrust <certname>".
+  #
+  # The latter is for certificates that have already been removed and are not
+  # included. Not all explicitly distrusted certificates are ignored at this
+  # point, just those without an actual certificate.
+  elsif(!$main_block && !$trust_block) {
+    next;
+  }
+  elsif(/^#/) {
+    # The commented lines in a main block are plaintext metadata that describes
+    # the certificate. Issuer, Subject, Fingerprint, etc.
+    if($main_block) {
+      push @precert, $_ if not /^#$/;
+      if(/^# Not Valid After : (.*)/) {
+        my $stamp = $1;
+        use Time::Piece;
+        # Not Valid After : Thu Sep 30 14:01:15 2021
+        my $t = Time::Piece->strptime($stamp, "%a %b %d %H:%M:%S %Y");
+        my $delta = ($t->epoch - time()); # negative means no longer valid
+        if($delta < 0) {
+          $skipnum++;
+          report "Skipping: $main_block_name is not valid anymore" if ($opt_v);
+          $valid = 0;
+        }
+        else {
+          $valid = 1;
+        }
+      }
+    }
+    next;
+  }
+  elsif(!$valid) {
+    next;
+  }
+
+  chomp;
+
+  if($main_block) {
+    if(/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
+      !$start_of_cert or die "Duplicate CKO_CERTIFICATE object";
+      $start_of_cert = 1;
+      next;
+    }
+    elsif(!$start_of_cert) {
+      next;
+    }
+    elsif(/^CKA_LABEL UTF8 \"(.*)\"/) {
+      ($caname eq "") or die "Duplicate CKA_LABEL attribute";
+      $caname = $1;
+      if($caname ne $main_block_name) {
+        die "caname \"$caname\" != cert name \"$main_block_name\"";
+      }
+      next;
+    }
+    elsif(/^CKA_VALUE MULTILINE_OCTAL/) {
+      ($cka_value eq "") or die "Duplicate CKA_VALUE attribute";
+      while (<TXT>) {
+        last if (/^END/);
+        chomp;
+        my @octets = split(/\\/);
+        shift @octets;
+        for (@octets) {
+          $cka_value .= chr(oct);
+        }
+      }
+      next;
+    }
+    elsif (/^CKA_NSS_SERVER_DISTRUST_AFTER (CK_BBOOL CK_FALSE|MULTILINE_OCTAL)/) {
+      # Example:
+      # CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
+      # \062\060\060\066\061\067\060\060\060\060\060\060\132
+      # END
+      if($1 eq "MULTILINE_OCTAL") {
+        my @timestamp;
+        while (<TXT>) {
+          last if (/^END/);
+          chomp;
+          my @octets = split(/\\/);
+          shift @octets;
+          for (@octets) {
+            push @timestamp, chr(oct);
+          }
+        }
+        scalar(@timestamp) == 13 or die "Failed parsing timestamp";
+        # A trailing Z in the timestamp signifies UTC
+        if($timestamp[12] ne "Z") {
+          report "distrust date stamp is not using UTC";
+        }
+        # Example date: 200617000000Z
+        # Means 2020-06-17 00:00:00 UTC
+        my $distrustat =
+          timegm($timestamp[10] . $timestamp[11], # second
+                 $timestamp[8] . $timestamp[9],   # minute
+                 $timestamp[6] . $timestamp[7],   # hour
+                 $timestamp[4] . $timestamp[5],   # day
+                 ($timestamp[2] . $timestamp[3]) - 1, # month
+                 "20" . $timestamp[0] . $timestamp[1]); # year
+        if(time >= $distrustat) {
+          # not trusted anymore
+          $skipnum++;
+          report "Skipping: $main_block_name is not trusted anymore" if ($opt_v);
+          $valid = 0;
+        }
+        else {
+          # still trusted
+        }
+      }
+      next;
+    }
+    else {
+      next;
+    }
+  }
+
+  if(!$trust_block || !$start_of_cert || $caname eq "" || $cka_value eq "") {
+    die "Certificate extraction failed";
+  }
+
+  my %trust_purposes_by_level;
+
+  if(/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/) {
+    # now scan the trust part to determine how we should trust this cert
+    while (<TXT>) {
+      if(/^\s*$/) {
+        $trust_block = 0;
+        last;
+      }
+      if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
+        if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
+          report "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2";
+        } elsif ( !is_in_list($2,@valid_mozilla_trust_levels) ) {
+          report "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2";
+        } else {
+          push @{$trust_purposes_by_level{$2}}, $1;
+        }
+      }
+    }
+
+    # Sanity check that an explicitly distrusted certificate only has trust
+    # purposes with a trust level of NOT_TRUSTED.
+    #
+    # Certificate objects that are explicitly distrusted are in a certificate
+    # block that starts # Certificate "Explicitly Distrust(ed) <certname>",
+    # where "Explicitly Distrust(ed) " was prepended to the original cert name.
+    if($caname =~ /distrust/i ||
+       $main_block_name =~ /distrust/i ||
+       $trust_block_name =~ /distrust/i) {
+      my @levels = keys %trust_purposes_by_level;
+      if(scalar(@levels) != 1 || $levels[0] ne "NOT_TRUSTED") {
+        die "\"$caname\" must have all trust purposes at level NOT_TRUSTED.";
+      }
+    }
+
+    if ( !should_output_cert(%trust_purposes_by_level) ) {
+      $skipnum ++;
+      report "Skipping: $caname lacks acceptable trust level" if ($opt_v);
+    } else {
+      my $encoded = MIME::Base64::encode_base64($cka_value, '');
+      $encoded =~ s/(.{1,${opt_w}})/$1\n/g;
+      my $pem = "-----BEGIN CERTIFICATE-----\n"
+              . $encoded
+              . "-----END CERTIFICATE-----\n";
+      print CRT "\n$caname\n";
+      my $maxStringLength = length(decode('UTF-8', $caname, Encode::FB_CROAK | Encode::LEAVE_SRC));
+      print CRT ("=" x $maxStringLength . "\n");
+      if ($opt_t) {
+        foreach my $key (sort keys %trust_purposes_by_level) {
+           my $string = $key . ": " . join(", ", @{$trust_purposes_by_level{$key}});
+           print CRT $string . "\n";
+        }
+      }
+      if($opt_m) {
+        print CRT for @precert;
+      }
+      if (!$opt_t) {
+        print CRT $pem;
+      } else {
+        my $pipe = "";
+        foreach my $hash (@included_signature_algorithms) {
+          $pipe = "|$openssl x509 -" . $hash . " -fingerprint -noout -inform PEM";
+          if (!$stdout) {
+            $pipe .= " >> $crt.~";
+            close(CRT) or die "Couldn't close $crt.~: $!";
+          }
+          open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
+          print TMP $pem;
+          close(TMP) or die "Couldn't close openssl pipe: $!";
+          if (!$stdout) {
+            open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
+          }
+        }
+        $pipe = "|$openssl x509 -text -inform PEM";
+        if (!$stdout) {
+          $pipe .= " >> $crt.~";
+          close(CRT) or die "Couldn't close $crt.~: $!";
+        }
+        open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
+        print TMP $pem;
+        close(TMP) or die "Couldn't close openssl pipe: $!";
+        if (!$stdout) {
+          open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
+        }
+      }
+      report "Processed: $caname" if ($opt_v);
+      $certnum ++;
+    }
+  }
+}
+close(TXT) or die "Couldn't close $txt: $!\n";
+close(CRT) or die "Couldn't close $crt.~: $!\n";
+unless( $stdout ) {
+    if ($opt_b && -e $crt) {
+        my $bk = 1;
+        while (-e "$crt.~${bk}~") {
+            $bk++;
+        }
+        rename $crt, "$crt.~${bk}~" or die "Failed to create backup $crt.~$bk}~: $!\n";
+    } elsif( -e $crt ) {
+        unlink( $crt ) or die "Failed to remove $crt: $!\n";
+    }
+    rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
+}
+if($opt_u && -e $txt && !unlink($txt)) {
+  report "Failed to remove $txt: $!\n";
+}
+report "Done ($certnum CA certs processed, $skipnum skipped).";
index 2b6e25a656613013c1574fc6eb0bc3f855714b1e..fd461e4bd0b14ed41abd8c42372ee9ed1011a336 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # Update man pages.
index 6f9c5d65868d39595451cb80bde611c396d5a67c..bf8ce7a1bdf32e3a054801ea77f5152ea4099f28 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 set(EXE_NAME curl)
 
@@ -45,9 +47,7 @@ if(USE_MANUAL)
 else()
   add_custom_command(
     OUTPUT tool_hugehelp.c
-    COMMAND ${CMAKE_COMMAND} -E echo "/* built-in manual is disabled, blank function */" > tool_hugehelp.c
-    COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" >> tool_hugehelp.c
-    COMMAND ${CMAKE_COMMAND} -E echo "void hugehelp(void) {}" >> tool_hugehelp.c
+    COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_hugehelp.h\"" > tool_hugehelp.c
     DEPENDS
       "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h"
     VERBATIM)
@@ -57,7 +57,7 @@ endif()
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
 include(${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake)
 
-if(MSVC)
+if(WIN32)
   list(APPEND CURL_FILES curl.rc)
 endif()
 
@@ -109,6 +109,6 @@ target_link_libraries(${EXE_NAME} libcurl ${CURL_LIBS})
 
 install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
 export(TARGETS ${EXE_NAME}
-       APPEND FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
+       FILE ${PROJECT_BINARY_DIR}/curl-target.cmake
        NAMESPACE ${PROJECT_NAME}::
 )
index c8abc93b140329591563264ba8779828ec3dd1d6..d9180b0b148270289302e95bf1f07663858aa05d 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
@@ -53,6 +55,10 @@ include Makefile.inc
 
 # CURL_FILES comes from Makefile.inc
 curl_SOURCES = $(CURL_FILES)
+if OS_WINDOWS
+curl_SOURCES += $(CURL_RCFILES)
+$(CURL_RCFILES): tool_version.h
+endif
 
 # This might hold -Werror
 CFLAGS += @CURL_CFLAG_EXTRAS@
@@ -73,7 +79,7 @@ libcurltool_la_CPPFLAGS = $(AM_CPPFLAGS) \
                           -DCURL_STATICLIB -DUNITTESTS
 libcurltool_la_CFLAGS =
 libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
-libcurltool_la_SOURCES = $(curl_SOURCES)
+libcurltool_la_SOURCES = $(CURL_FILES)
 endif
 
 CLEANFILES = tool_hugehelp.c
@@ -82,9 +88,7 @@ CLEANFILES = tool_hugehelp.c
 NROFF=env LC_ALL=C @NROFF@ @MANOPT@ # figured out by the configure script
 
 EXTRA_DIST = mkhelp.pl makefile.dj                                     \
- Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT          \
- macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
- curl.rc Makefile.netware Makefile.inc CMakeLists.txt
+ Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
 
 # Use absolute directory to disable VPATH
 MANPAGE=$(abs_top_builddir)/docs/curl.1
@@ -127,15 +131,13 @@ endif
 else # USE_MANUAL
 # built-in manual has been disabled, make a blank file
 $(HUGE):
-       $(HUGECMD)(echo "/* built-in manual is disabled, blank function */" > $(HUGE); \
-       echo '#include "tool_hugehelp.h"' >> $(HUGE); \
-       echo "void hugehelp(void) {}" >>$(HUGE) )
+       echo '#include "tool_hugehelp.h"' >> $(HUGE)
 endif
 
 # ignore tool_hugehelp.c since it is generated source code and it plays
 # by slightly different rules!
 checksrc:
-       $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir)        \
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
        -W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
 
 if CURLDEBUG
@@ -153,3 +155,9 @@ tidy:
 
 listhelp:
        (cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c
+
+if OS_WINDOWS
+# Warning is "normal": libtool:   error: ignoring unknown tag RC
+.rc.o:
+       $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include -DCURL_EMBED_MANIFEST $(RCFLAGS) -i $< -o $@
+endif
index c35b2a3a3e825caae83cdd7b650306ab4b2cefae..652e6be6dd9fbf7bccde2f114c3d1eae2058148c 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # ./src/Makefile.inc
-# Using the backslash as line continuation character might be problematic
-# with some make flavours, as Watcom's wmake showed us already. If we
-# ever want to change this in a portable manner then we should consider
-# this idea (posted to the libcurl list by Adam Kellas):
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
 # CSRC1 = file1.c file2.c file3.c
 # CSRC2 = file4.c file5.c file6.c
 # CSOURCES = $(CSRC1) $(CSRC2)
@@ -121,17 +122,16 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = curl$(EXEEXT)
 @USE_CPPFLAG_CURL_STATICLIB_TRUE@am__append_1 = -DCURL_STATICLIB
+@OS_WINDOWS_TRUE@am__append_2 = $(CURL_RCFILES)
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -165,36 +165,36 @@ libcurltool_la_LIBADD =
 am__libcurltool_la_SOURCES_DIST = slist_wc.c tool_binmode.c \
        tool_bname.c tool_cb_dbg.c tool_cb_hdr.c tool_cb_prg.c \
        tool_cb_rea.c tool_cb_see.c tool_cb_wrt.c tool_cfgable.c \
-       tool_convert.c tool_dirhie.c tool_doswin.c tool_easysrc.c \
-       tool_filetime.c tool_findfile.c tool_formparse.c \
-       tool_getparam.c tool_getpass.c tool_help.c tool_helpers.c \
-       tool_hugehelp.c tool_libinfo.c tool_listhelp.c tool_main.c \
-       tool_msgs.c tool_operate.c tool_operhlp.c tool_panykey.c \
-       tool_paramhlp.c tool_parsecfg.c tool_progress.c tool_strdup.c \
-       tool_setopt.c tool_sleep.c tool_urlglob.c tool_util.c \
-       tool_vms.c tool_writeout.c tool_writeout_json.c tool_xattr.c \
-       ../lib/strtoofft.c ../lib/nonblock.c ../lib/warnless.c \
-       ../lib/curl_ctype.c ../lib/curl_multibyte.c \
+       tool_dirhie.c tool_doswin.c tool_easysrc.c tool_filetime.c \
+       tool_findfile.c tool_formparse.c tool_getparam.c \
+       tool_getpass.c tool_help.c tool_helpers.c tool_hugehelp.c \
+       tool_libinfo.c tool_listhelp.c tool_main.c tool_msgs.c \
+       tool_operate.c tool_operhlp.c tool_panykey.c tool_paramhlp.c \
+       tool_parsecfg.c tool_progress.c tool_strdup.c tool_setopt.c \
+       tool_sleep.c tool_urlglob.c tool_util.c tool_vms.c \
+       tool_writeout.c tool_writeout_json.c tool_xattr.c \
+       ../lib/strtoofft.c ../lib/timediff.c ../lib/nonblock.c \
+       ../lib/warnless.c ../lib/curl_multibyte.c \
        ../lib/version_win32.c ../lib/dynbuf.c slist_wc.h \
        tool_binmode.h tool_bname.h tool_cb_dbg.h tool_cb_hdr.h \
        tool_cb_prg.h tool_cb_rea.h tool_cb_see.h tool_cb_wrt.h \
-       tool_cfgable.h tool_convert.h tool_dirhie.h tool_doswin.h \
-       tool_easysrc.h tool_filetime.h tool_findfile.h \
-       tool_formparse.h tool_getparam.h tool_getpass.h tool_help.h \
-       tool_helpers.h tool_hugehelp.h tool_libinfo.h tool_main.h \
-       tool_msgs.h tool_operate.h tool_operhlp.h tool_panykey.h \
-       tool_paramhlp.h tool_parsecfg.h tool_progress.h tool_sdecls.h \
-       tool_setopt.h tool_setup.h tool_sleep.h tool_strdup.h \
-       tool_urlglob.h tool_util.h tool_version.h tool_vms.h \
-       tool_writeout.h tool_writeout_json.h tool_xattr.h
+       tool_cfgable.h tool_dirhie.h tool_doswin.h tool_easysrc.h \
+       tool_filetime.h tool_findfile.h tool_formparse.h \
+       tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
+       tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \
+       tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+       tool_parsecfg.h tool_progress.h tool_sdecls.h tool_setopt.h \
+       tool_setup.h tool_sleep.h tool_strdup.h tool_urlglob.h \
+       tool_util.h tool_version.h tool_vms.h tool_writeout.h \
+       tool_writeout_json.h tool_xattr.h
 am__objects_1 = libcurltool_la-slist_wc.lo \
        libcurltool_la-tool_binmode.lo libcurltool_la-tool_bname.lo \
        libcurltool_la-tool_cb_dbg.lo libcurltool_la-tool_cb_hdr.lo \
        libcurltool_la-tool_cb_prg.lo libcurltool_la-tool_cb_rea.lo \
        libcurltool_la-tool_cb_see.lo libcurltool_la-tool_cb_wrt.lo \
-       libcurltool_la-tool_cfgable.lo libcurltool_la-tool_convert.lo \
-       libcurltool_la-tool_dirhie.lo libcurltool_la-tool_doswin.lo \
-       libcurltool_la-tool_easysrc.lo libcurltool_la-tool_filetime.lo \
+       libcurltool_la-tool_cfgable.lo libcurltool_la-tool_dirhie.lo \
+       libcurltool_la-tool_doswin.lo libcurltool_la-tool_easysrc.lo \
+       libcurltool_la-tool_filetime.lo \
        libcurltool_la-tool_findfile.lo \
        libcurltool_la-tool_formparse.lo \
        libcurltool_la-tool_getparam.lo libcurltool_la-tool_getpass.lo \
@@ -213,16 +213,15 @@ am__objects_1 = libcurltool_la-slist_wc.lo \
        libcurltool_la-tool_xattr.lo
 am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_2 = ../lib/libcurltool_la-strtoofft.lo \
+       ../lib/libcurltool_la-timediff.lo \
        ../lib/libcurltool_la-nonblock.lo \
        ../lib/libcurltool_la-warnless.lo \
-       ../lib/libcurltool_la-curl_ctype.lo \
        ../lib/libcurltool_la-curl_multibyte.lo \
        ../lib/libcurltool_la-version_win32.lo \
        ../lib/libcurltool_la-dynbuf.lo
 am__objects_3 =
 am__objects_4 = $(am__objects_1) $(am__objects_2) $(am__objects_3)
-am__objects_5 = $(am__objects_4)
-@BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_5)
+@BUILD_UNITTESTS_TRUE@am_libcurltool_la_OBJECTS = $(am__objects_4)
 libcurltool_la_OBJECTS = $(am_libcurltool_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -233,19 +232,43 @@ libcurltool_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $(libcurltool_la_CFLAGS) $(CFLAGS) $(libcurltool_la_LDFLAGS) \
        $(LDFLAGS) -o $@
 @BUILD_UNITTESTS_TRUE@am_libcurltool_la_rpath =
-am__objects_6 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
+am__curl_SOURCES_DIST = slist_wc.c tool_binmode.c tool_bname.c \
+       tool_cb_dbg.c tool_cb_hdr.c tool_cb_prg.c tool_cb_rea.c \
+       tool_cb_see.c tool_cb_wrt.c tool_cfgable.c tool_dirhie.c \
+       tool_doswin.c tool_easysrc.c tool_filetime.c tool_findfile.c \
+       tool_formparse.c tool_getparam.c tool_getpass.c tool_help.c \
+       tool_helpers.c tool_hugehelp.c tool_libinfo.c tool_listhelp.c \
+       tool_main.c tool_msgs.c tool_operate.c tool_operhlp.c \
+       tool_panykey.c tool_paramhlp.c tool_parsecfg.c tool_progress.c \
+       tool_strdup.c tool_setopt.c tool_sleep.c tool_urlglob.c \
+       tool_util.c tool_vms.c tool_writeout.c tool_writeout_json.c \
+       tool_xattr.c ../lib/strtoofft.c ../lib/timediff.c \
+       ../lib/nonblock.c ../lib/warnless.c ../lib/curl_multibyte.c \
+       ../lib/version_win32.c ../lib/dynbuf.c slist_wc.h \
+       tool_binmode.h tool_bname.h tool_cb_dbg.h tool_cb_hdr.h \
+       tool_cb_prg.h tool_cb_rea.h tool_cb_see.h tool_cb_wrt.h \
+       tool_cfgable.h tool_dirhie.h tool_doswin.h tool_easysrc.h \
+       tool_filetime.h tool_findfile.h tool_formparse.h \
+       tool_getparam.h tool_getpass.h tool_help.h tool_helpers.h \
+       tool_hugehelp.h tool_libinfo.h tool_main.h tool_msgs.h \
+       tool_operate.h tool_operhlp.h tool_panykey.h tool_paramhlp.h \
+       tool_parsecfg.h tool_progress.h tool_sdecls.h tool_setopt.h \
+       tool_setup.h tool_sleep.h tool_strdup.h tool_urlglob.h \
+       tool_util.h tool_version.h tool_vms.h tool_writeout.h \
+       tool_writeout_json.h tool_xattr.h curl.rc
+am__objects_5 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
        tool_bname.$(OBJEXT) tool_cb_dbg.$(OBJEXT) \
        tool_cb_hdr.$(OBJEXT) tool_cb_prg.$(OBJEXT) \
        tool_cb_rea.$(OBJEXT) tool_cb_see.$(OBJEXT) \
        tool_cb_wrt.$(OBJEXT) tool_cfgable.$(OBJEXT) \
-       tool_convert.$(OBJEXT) tool_dirhie.$(OBJEXT) \
-       tool_doswin.$(OBJEXT) tool_easysrc.$(OBJEXT) \
-       tool_filetime.$(OBJEXT) tool_findfile.$(OBJEXT) \
-       tool_formparse.$(OBJEXT) tool_getparam.$(OBJEXT) \
-       tool_getpass.$(OBJEXT) tool_help.$(OBJEXT) \
-       tool_helpers.$(OBJEXT) tool_hugehelp.$(OBJEXT) \
-       tool_libinfo.$(OBJEXT) tool_listhelp.$(OBJEXT) \
-       tool_main.$(OBJEXT) tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \
+       tool_dirhie.$(OBJEXT) tool_doswin.$(OBJEXT) \
+       tool_easysrc.$(OBJEXT) tool_filetime.$(OBJEXT) \
+       tool_findfile.$(OBJEXT) tool_formparse.$(OBJEXT) \
+       tool_getparam.$(OBJEXT) tool_getpass.$(OBJEXT) \
+       tool_help.$(OBJEXT) tool_helpers.$(OBJEXT) \
+       tool_hugehelp.$(OBJEXT) tool_libinfo.$(OBJEXT) \
+       tool_listhelp.$(OBJEXT) tool_main.$(OBJEXT) \
+       tool_msgs.$(OBJEXT) tool_operate.$(OBJEXT) \
        tool_operhlp.$(OBJEXT) tool_panykey.$(OBJEXT) \
        tool_paramhlp.$(OBJEXT) tool_parsecfg.$(OBJEXT) \
        tool_progress.$(OBJEXT) tool_strdup.$(OBJEXT) \
@@ -253,12 +276,14 @@ am__objects_6 = slist_wc.$(OBJEXT) tool_binmode.$(OBJEXT) \
        tool_urlglob.$(OBJEXT) tool_util.$(OBJEXT) tool_vms.$(OBJEXT) \
        tool_writeout.$(OBJEXT) tool_writeout_json.$(OBJEXT) \
        tool_xattr.$(OBJEXT)
-am__objects_7 = ../lib/strtoofft.$(OBJEXT) ../lib/nonblock.$(OBJEXT) \
-       ../lib/warnless.$(OBJEXT) ../lib/curl_ctype.$(OBJEXT) \
+am__objects_6 = ../lib/strtoofft.$(OBJEXT) ../lib/timediff.$(OBJEXT) \
+       ../lib/nonblock.$(OBJEXT) ../lib/warnless.$(OBJEXT) \
        ../lib/curl_multibyte.$(OBJEXT) ../lib/version_win32.$(OBJEXT) \
        ../lib/dynbuf.$(OBJEXT)
-am__objects_8 = $(am__objects_6) $(am__objects_7) $(am__objects_3)
-am_curl_OBJECTS = $(am__objects_8)
+am__objects_7 = $(am__objects_5) $(am__objects_6) $(am__objects_3)
+am__objects_8 = curl.$(OBJEXT)
+@OS_WINDOWS_TRUE@am__objects_9 = $(am__objects_8)
+am_curl_OBJECTS = $(am__objects_7) $(am__objects_9)
 curl_OBJECTS = $(am_curl_OBJECTS)
 @USE_EXPLICIT_LIB_DEPS_FALSE@curl_DEPENDENCIES =  \
 @USE_EXPLICIT_LIB_DEPS_FALSE@  $(top_builddir)/lib/libcurl.la
@@ -279,17 +304,18 @@ am__v_at_1 =
 DEFAULT_INCLUDES = 
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ../lib/$(DEPDIR)/curl_ctype.Po \
-       ../lib/$(DEPDIR)/curl_multibyte.Po ../lib/$(DEPDIR)/dynbuf.Po \
-       ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo \
+am__depfiles_remade = ../lib/$(DEPDIR)/curl_multibyte.Po \
+       ../lib/$(DEPDIR)/dynbuf.Po \
        ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo \
        ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo \
        ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo \
        ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo \
+       ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo \
        ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo \
        ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo \
        ../lib/$(DEPDIR)/nonblock.Po ../lib/$(DEPDIR)/strtoofft.Po \
-       ../lib/$(DEPDIR)/version_win32.Po ../lib/$(DEPDIR)/warnless.Po \
+       ../lib/$(DEPDIR)/timediff.Po ../lib/$(DEPDIR)/version_win32.Po \
+       ../lib/$(DEPDIR)/warnless.Po \
        ./$(DEPDIR)/libcurltool_la-slist_wc.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_binmode.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_bname.Plo \
@@ -300,7 +326,6 @@ am__depfiles_remade = ../lib/$(DEPDIR)/curl_ctype.Po \
        ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo \
-       ./$(DEPDIR)/libcurltool_la-tool_convert.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo \
        ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo \
@@ -336,22 +361,21 @@ am__depfiles_remade = ../lib/$(DEPDIR)/curl_ctype.Po \
        ./$(DEPDIR)/tool_cb_hdr.Po ./$(DEPDIR)/tool_cb_prg.Po \
        ./$(DEPDIR)/tool_cb_rea.Po ./$(DEPDIR)/tool_cb_see.Po \
        ./$(DEPDIR)/tool_cb_wrt.Po ./$(DEPDIR)/tool_cfgable.Po \
-       ./$(DEPDIR)/tool_convert.Po ./$(DEPDIR)/tool_dirhie.Po \
-       ./$(DEPDIR)/tool_doswin.Po ./$(DEPDIR)/tool_easysrc.Po \
-       ./$(DEPDIR)/tool_filetime.Po ./$(DEPDIR)/tool_findfile.Po \
-       ./$(DEPDIR)/tool_formparse.Po ./$(DEPDIR)/tool_getparam.Po \
-       ./$(DEPDIR)/tool_getpass.Po ./$(DEPDIR)/tool_help.Po \
-       ./$(DEPDIR)/tool_helpers.Po ./$(DEPDIR)/tool_hugehelp.Po \
-       ./$(DEPDIR)/tool_libinfo.Po ./$(DEPDIR)/tool_listhelp.Po \
-       ./$(DEPDIR)/tool_main.Po ./$(DEPDIR)/tool_msgs.Po \
-       ./$(DEPDIR)/tool_operate.Po ./$(DEPDIR)/tool_operhlp.Po \
-       ./$(DEPDIR)/tool_panykey.Po ./$(DEPDIR)/tool_paramhlp.Po \
-       ./$(DEPDIR)/tool_parsecfg.Po ./$(DEPDIR)/tool_progress.Po \
-       ./$(DEPDIR)/tool_setopt.Po ./$(DEPDIR)/tool_sleep.Po \
-       ./$(DEPDIR)/tool_strdup.Po ./$(DEPDIR)/tool_urlglob.Po \
-       ./$(DEPDIR)/tool_util.Po ./$(DEPDIR)/tool_vms.Po \
-       ./$(DEPDIR)/tool_writeout.Po ./$(DEPDIR)/tool_writeout_json.Po \
-       ./$(DEPDIR)/tool_xattr.Po
+       ./$(DEPDIR)/tool_dirhie.Po ./$(DEPDIR)/tool_doswin.Po \
+       ./$(DEPDIR)/tool_easysrc.Po ./$(DEPDIR)/tool_filetime.Po \
+       ./$(DEPDIR)/tool_findfile.Po ./$(DEPDIR)/tool_formparse.Po \
+       ./$(DEPDIR)/tool_getparam.Po ./$(DEPDIR)/tool_getpass.Po \
+       ./$(DEPDIR)/tool_help.Po ./$(DEPDIR)/tool_helpers.Po \
+       ./$(DEPDIR)/tool_hugehelp.Po ./$(DEPDIR)/tool_libinfo.Po \
+       ./$(DEPDIR)/tool_listhelp.Po ./$(DEPDIR)/tool_main.Po \
+       ./$(DEPDIR)/tool_msgs.Po ./$(DEPDIR)/tool_operate.Po \
+       ./$(DEPDIR)/tool_operhlp.Po ./$(DEPDIR)/tool_panykey.Po \
+       ./$(DEPDIR)/tool_paramhlp.Po ./$(DEPDIR)/tool_parsecfg.Po \
+       ./$(DEPDIR)/tool_progress.Po ./$(DEPDIR)/tool_setopt.Po \
+       ./$(DEPDIR)/tool_sleep.Po ./$(DEPDIR)/tool_strdup.Po \
+       ./$(DEPDIR)/tool_urlglob.Po ./$(DEPDIR)/tool_util.Po \
+       ./$(DEPDIR)/tool_vms.Po ./$(DEPDIR)/tool_writeout.Po \
+       ./$(DEPDIR)/tool_writeout_json.Po ./$(DEPDIR)/tool_xattr.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -372,7 +396,8 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libcurltool_la_SOURCES) $(curl_SOURCES)
-DIST_SOURCES = $(am__libcurltool_la_SOURCES_DIST) $(curl_SOURCES)
+DIST_SOURCES = $(am__libcurltool_la_SOURCES_DIST) \
+       $(am__curl_SOURCES_DIST)
 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
        ctags-recursive dvi-recursive html-recursive info-recursive \
        install-data-recursive install-dvi-recursive \
@@ -485,6 +510,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -502,6 +528,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -563,6 +590,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -581,12 +609,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -653,7 +682,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -667,7 +695,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -680,6 +708,8 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
@@ -702,9 +732,9 @@ SUBDIRS = ../docs
 # the official API, but we re-use the code here to avoid duplication.
 CURLX_CFILES = \
   ../lib/strtoofft.c \
+  ../lib/timediff.c \
   ../lib/nonblock.c \
   ../lib/warnless.c \
-  ../lib/curl_ctype.c \
   ../lib/curl_multibyte.c \
   ../lib/version_win32.c \
   ../lib/dynbuf.c
@@ -712,6 +742,7 @@ CURLX_CFILES = \
 CURLX_HFILES = \
   ../lib/curl_setup.h \
   ../lib/strtoofft.h \
+  ../lib/timediff.h \
   ../lib/nonblock.h \
   ../lib/warnless.h \
   ../lib/curl_ctype.h \
@@ -730,7 +761,6 @@ CURL_CFILES = \
   tool_cb_see.c \
   tool_cb_wrt.c \
   tool_cfgable.c \
-  tool_convert.c \
   tool_dirhie.c \
   tool_doswin.c \
   tool_easysrc.c \
@@ -773,7 +803,6 @@ CURL_HFILES = \
   tool_cb_see.h \
   tool_cb_wrt.h \
   tool_cfgable.h \
-  tool_convert.h \
   tool_dirhie.h \
   tool_doswin.h \
   tool_easysrc.h \
@@ -813,7 +842,7 @@ CURL_RCFILES = curl.rc
 CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES)
 
 # CURL_FILES comes from Makefile.inc
-curl_SOURCES = $(CURL_FILES)
+curl_SOURCES = $(CURL_FILES) $(am__append_2)
 @USE_EXPLICIT_LIB_DEPS_FALSE@curl_LDADD = $(top_builddir)/lib/libcurl.la @NSS_LIBS@ @SSL_LIBS@ @ZLIB_LIBS@ @CURL_NETWORK_AND_TIME_LIBS@
 @USE_EXPLICIT_LIB_DEPS_TRUE@curl_LDADD = $(top_builddir)/lib/libcurl.la @LIBCURL_LIBS@
 
@@ -824,12 +853,10 @@ curl_SOURCES = $(CURL_FILES)
 
 @BUILD_UNITTESTS_TRUE@libcurltool_la_CFLAGS = 
 @BUILD_UNITTESTS_TRUE@libcurltool_la_LDFLAGS = -static $(LINKFLAGS)
-@BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(curl_SOURCES)
+@BUILD_UNITTESTS_TRUE@libcurltool_la_SOURCES = $(CURL_FILES)
 CLEANFILES = tool_hugehelp.c
 EXTRA_DIST = mkhelp.pl makefile.dj                                     \
- Makefile.m32 macos/curl.mcp.xml.sit.hqx macos/MACINSTALL.TXT          \
- macos/src/curl_GUSIConfig.cpp macos/src/macos_main.cpp makefile.amiga \
- curl.rc Makefile.netware Makefile.inc CMakeLists.txt
+ Makefile.m32 makefile.amiga curl.rc Makefile.inc CMakeLists.txt
 
 
 # Use absolute directory to disable VPATH
@@ -851,7 +878,7 @@ TIDY := clang-tidy
 all: all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .o .obj .rc
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -950,12 +977,12 @@ clean-noinstLTLIBRARIES:
        @: > ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/libcurltool_la-strtoofft.lo: ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/libcurltool_la-timediff.lo: ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/libcurltool_la-nonblock.lo: ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/libcurltool_la-warnless.lo: ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
-../lib/libcurltool_la-curl_ctype.lo: ../lib/$(am__dirstamp) \
-       ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/libcurltool_la-curl_multibyte.lo: ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/libcurltool_la-version_win32.lo: ../lib/$(am__dirstamp) \
@@ -967,12 +994,12 @@ libcurltool.la: $(libcurltool_la_OBJECTS) $(libcurltool_la_DEPENDENCIES) $(EXTRA
        $(AM_V_CCLD)$(libcurltool_la_LINK) $(am_libcurltool_la_rpath) $(libcurltool_la_OBJECTS) $(libcurltool_la_LIBADD) $(LIBS)
 ../lib/strtoofft.$(OBJEXT): ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
+../lib/timediff.$(OBJEXT): ../lib/$(am__dirstamp) \
+       ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/nonblock.$(OBJEXT): ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/warnless.$(OBJEXT): ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
-../lib/curl_ctype.$(OBJEXT): ../lib/$(am__dirstamp) \
-       ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/curl_multibyte.$(OBJEXT): ../lib/$(am__dirstamp) \
        ../lib/$(DEPDIR)/$(am__dirstamp)
 ../lib/version_win32.$(OBJEXT): ../lib/$(am__dirstamp) \
@@ -992,18 +1019,18 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/dynbuf.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-timediff.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/libcurltool_la-warnless.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/version_win32.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../lib/$(DEPDIR)/warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-slist_wc.Plo@am__quote@ # am--include-marker
@@ -1016,7 +1043,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_convert.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_doswin.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo@am__quote@ # am--include-marker
@@ -1057,7 +1083,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_see.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cb_wrt.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_cfgable.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_convert.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_dirhie.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_doswin.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tool_easysrc.Po@am__quote@ # am--include-marker
@@ -1189,13 +1214,6 @@ libcurltool_la-tool_cfgable.lo: tool_cfgable.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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_cfgable.lo `test -f 'tool_cfgable.c' || echo '$(srcdir)/'`tool_cfgable.c
 
-libcurltool_la-tool_convert.lo: tool_convert.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_convert.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_convert.Tpo -c -o libcurltool_la-tool_convert.lo `test -f 'tool_convert.c' || echo '$(srcdir)/'`tool_convert.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_convert.Tpo $(DEPDIR)/libcurltool_la-tool_convert.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tool_convert.c' object='libcurltool_la-tool_convert.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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o libcurltool_la-tool_convert.lo `test -f 'tool_convert.c' || echo '$(srcdir)/'`tool_convert.c
-
 libcurltool_la-tool_dirhie.lo: tool_dirhie.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT libcurltool_la-tool_dirhie.lo -MD -MP -MF $(DEPDIR)/libcurltool_la-tool_dirhie.Tpo -c -o libcurltool_la-tool_dirhie.lo `test -f 'tool_dirhie.c' || echo '$(srcdir)/'`tool_dirhie.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libcurltool_la-tool_dirhie.Tpo $(DEPDIR)/libcurltool_la-tool_dirhie.Plo
@@ -1413,6 +1431,13 @@ libcurltool_la-tool_xattr.lo: tool_xattr.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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-strtoofft.lo `test -f '../lib/strtoofft.c' || echo '$(srcdir)/'`../lib/strtoofft.c
 
+../lib/libcurltool_la-timediff.lo: ../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-timediff.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-timediff.Tpo -c -o ../lib/libcurltool_la-timediff.lo `test -f '../lib/timediff.c' || echo '$(srcdir)/'`../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-timediff.Tpo ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/timediff.c' object='../lib/libcurltool_la-timediff.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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-timediff.lo `test -f '../lib/timediff.c' || echo '$(srcdir)/'`../lib/timediff.c
+
 ../lib/libcurltool_la-nonblock.lo: ../lib/nonblock.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-nonblock.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-nonblock.Tpo -c -o ../lib/libcurltool_la-nonblock.lo `test -f '../lib/nonblock.c' || echo '$(srcdir)/'`../lib/nonblock.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-nonblock.Tpo ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
@@ -1427,13 +1452,6 @@ libcurltool_la-tool_xattr.lo: tool_xattr.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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-warnless.lo `test -f '../lib/warnless.c' || echo '$(srcdir)/'`../lib/warnless.c
 
-../lib/libcurltool_la-curl_ctype.lo: ../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-curl_ctype.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Tpo -c -o ../lib/libcurltool_la-curl_ctype.lo `test -f '../lib/curl_ctype.c' || echo '$(srcdir)/'`../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Tpo ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../lib/curl_ctype.c' object='../lib/libcurltool_la-curl_ctype.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) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -c -o ../lib/libcurltool_la-curl_ctype.lo `test -f '../lib/curl_ctype.c' || echo '$(srcdir)/'`../lib/curl_ctype.c
-
 ../lib/libcurltool_la-curl_multibyte.lo: ../lib/curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcurltool_la_CPPFLAGS) $(CPPFLAGS) $(libcurltool_la_CFLAGS) $(CFLAGS) -MT ../lib/libcurltool_la-curl_multibyte.lo -MD -MP -MF ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Tpo -c -o ../lib/libcurltool_la-curl_multibyte.lo `test -f '../lib/curl_multibyte.c' || echo '$(srcdir)/'`../lib/curl_multibyte.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Tpo ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
@@ -1666,18 +1684,18 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \
        clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-recursive
-               -rm -f ../lib/$(DEPDIR)/curl_ctype.Po
-       -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
+               -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
        -rm -f ../lib/$(DEPDIR)/dynbuf.Po
-       -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+       -rm -f ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
        -rm -f ../lib/$(DEPDIR)/nonblock.Po
        -rm -f ../lib/$(DEPDIR)/strtoofft.Po
+       -rm -f ../lib/$(DEPDIR)/timediff.Po
        -rm -f ../lib/$(DEPDIR)/version_win32.Po
        -rm -f ../lib/$(DEPDIR)/warnless.Po
        -rm -f ./$(DEPDIR)/libcurltool_la-slist_wc.Plo
@@ -1690,7 +1708,6 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo
-       -rm -f ./$(DEPDIR)/libcurltool_la-tool_convert.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo
@@ -1731,7 +1748,6 @@ distclean: distclean-recursive
        -rm -f ./$(DEPDIR)/tool_cb_see.Po
        -rm -f ./$(DEPDIR)/tool_cb_wrt.Po
        -rm -f ./$(DEPDIR)/tool_cfgable.Po
-       -rm -f ./$(DEPDIR)/tool_convert.Po
        -rm -f ./$(DEPDIR)/tool_dirhie.Po
        -rm -f ./$(DEPDIR)/tool_doswin.Po
        -rm -f ./$(DEPDIR)/tool_easysrc.Po
@@ -1807,18 +1823,18 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
-               -rm -f ../lib/$(DEPDIR)/curl_ctype.Po
-       -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
+               -rm -f ../lib/$(DEPDIR)/curl_multibyte.Po
        -rm -f ../lib/$(DEPDIR)/dynbuf.Po
-       -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_ctype.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-curl_multibyte.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-dynbuf.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-nonblock.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-strtoofft.Plo
+       -rm -f ../lib/$(DEPDIR)/libcurltool_la-timediff.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-version_win32.Plo
        -rm -f ../lib/$(DEPDIR)/libcurltool_la-warnless.Plo
        -rm -f ../lib/$(DEPDIR)/nonblock.Po
        -rm -f ../lib/$(DEPDIR)/strtoofft.Po
+       -rm -f ../lib/$(DEPDIR)/timediff.Po
        -rm -f ../lib/$(DEPDIR)/version_win32.Po
        -rm -f ../lib/$(DEPDIR)/warnless.Po
        -rm -f ./$(DEPDIR)/libcurltool_la-slist_wc.Plo
@@ -1831,7 +1847,6 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_see.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_cb_wrt.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_cfgable.Plo
-       -rm -f ./$(DEPDIR)/libcurltool_la-tool_convert.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_dirhie.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_doswin.Plo
        -rm -f ./$(DEPDIR)/libcurltool_la-tool_easysrc.Plo
@@ -1872,7 +1887,6 @@ maintainer-clean: maintainer-clean-recursive
        -rm -f ./$(DEPDIR)/tool_cb_see.Po
        -rm -f ./$(DEPDIR)/tool_cb_wrt.Po
        -rm -f ./$(DEPDIR)/tool_cfgable.Po
-       -rm -f ./$(DEPDIR)/tool_convert.Po
        -rm -f ./$(DEPDIR)/tool_dirhie.Po
        -rm -f ./$(DEPDIR)/tool_doswin.Po
        -rm -f ./$(DEPDIR)/tool_easysrc.Po
@@ -1944,6 +1958,7 @@ uninstall-am: uninstall-binPROGRAMS
 
 # remove targets if the command fails
 .DELETE_ON_ERROR:
+@OS_WINDOWS_TRUE@$(CURL_RCFILES): tool_version.h
 
 # Here are the stuff to create a built-in manual
 
@@ -1966,14 +1981,12 @@ uninstall-am: uninstall-binPROGRAMS
 
 # built-in manual has been disabled, make a blank file
 @USE_MANUAL_FALSE@$(HUGE):
-@USE_MANUAL_FALSE@     $(HUGECMD)(echo "/* built-in manual is disabled, blank function */" > $(HUGE); \
-@USE_MANUAL_FALSE@     echo '#include "tool_hugehelp.h"' >> $(HUGE); \
-@USE_MANUAL_FALSE@     echo "void hugehelp(void) {}" >>$(HUGE) )
+@USE_MANUAL_FALSE@     echo '#include "tool_hugehelp.h"' >> $(HUGE)
 
 # ignore tool_hugehelp.c since it is generated source code and it plays
 # by slightly different rules!
 checksrc:
-       $(CHECKSRC)(@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir)        \
+       $(CHECKSRC)(@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) \
        -W$(srcdir)/tool_hugehelp.c $(srcdir)/*.[ch])
 
 # for debug builds, we scan the sources on all regular make invokes
@@ -1985,6 +1998,10 @@ tidy:
 listhelp:
        (cd $(top_srcdir)/docs/cmdline-opts && ./gen.pl listhelp *.d) > tool_listhelp.c
 
+# Warning is "normal": libtool:   error: ignoring unknown tag RC
+@OS_WINDOWS_TRUE@.rc.o:
+@OS_WINDOWS_TRUE@      $(LIBTOOL) --tag=RC --mode=compile $(RC) -I$(top_srcdir)/include -DCURL_EMBED_MANIFEST $(RCFLAGS) -i $< -o $@
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 44cfe0f816121b50c3410efdbe89494f50f8ccde..bdf663f9504fdab17abcbaaabab4a48237fcb4d2 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # ./src/Makefile.inc
-# Using the backslash as line continuation character might be problematic
-# with some make flavours, as Watcom's wmake showed us already. If we
-# ever want to change this in a portable manner then we should consider
-# this idea (posted to the libcurl list by Adam Kellas):
+# Using the backslash as line continuation character might be problematic with
+# some make flavours. If we ever want to change this in a portable manner then
+# we should consider this idea :
 # CSRC1 = file1.c file2.c file3.c
 # CSRC2 = file4.c file5.c file6.c
 # CSOURCES = $(CSRC1) $(CSRC2)
@@ -32,9 +33,9 @@
 # the official API, but we re-use the code here to avoid duplication.
 CURLX_CFILES = \
   ../lib/strtoofft.c \
+  ../lib/timediff.c \
   ../lib/nonblock.c \
   ../lib/warnless.c \
-  ../lib/curl_ctype.c \
   ../lib/curl_multibyte.c \
   ../lib/version_win32.c \
   ../lib/dynbuf.c
@@ -42,6 +43,7 @@ CURLX_CFILES = \
 CURLX_HFILES = \
   ../lib/curl_setup.h \
   ../lib/strtoofft.h \
+  ../lib/timediff.h \
   ../lib/nonblock.h \
   ../lib/warnless.h \
   ../lib/curl_ctype.h \
@@ -60,7 +62,6 @@ CURL_CFILES = \
   tool_cb_see.c \
   tool_cb_wrt.c \
   tool_cfgable.c \
-  tool_convert.c \
   tool_dirhie.c \
   tool_doswin.c \
   tool_easysrc.c \
@@ -103,7 +104,6 @@ CURL_HFILES = \
   tool_cb_see.h \
   tool_cb_wrt.h \
   tool_cfgable.h \
-  tool_convert.h \
   tool_dirhie.h \
   tool_doswin.h \
   tool_easysrc.h \
index 2412b40bf5ff8f75f30cc08524a9f6f8fdc67b27..096e09399033d80b1e1ae08376bcb2fc8c646687 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
-#***************************************************************************
-
-###########################################################################
-#
-## Makefile for building curl.exe with MingW (GCC-3.2 or later or LLVM/Clang)
-## and optionally OpenSSL (1.0.2a), libssh2 (1.5), zlib (1.2.8), librtmp (2.4),
-## brotli (1.0.1), zstd (1.4.5)
-##
-## Usage:   mingw32-make -f Makefile.m32 CFG=-feature1[-feature2][-feature3][...]
-## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn
-##
-## Hint: you can also set environment vars to control the build, f.e.:
-## set ZLIB_PATH=c:/zlib-1.2.8
-## set ZLIB=1
+# SPDX-License-Identifier: curl
 #
-###########################################################################
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-# Edit the path below to point to the base of your Zstandard sources.
-ifndef ZSTD_PATH
-ZSTD_PATH = ../../zstd-1.4.5
-endif
-# Edit the path below to point to the base of your Brotli sources.
-ifndef BROTLI_PATH
-BROTLI_PATH = ../../brotli-1.0.1
-endif
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.4
-endif
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../expat-2.1.0
-endif
-# Edit the path below to point to the base of your libxml2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../libxml2-2.9.2
-endif
-# Edit the path below to point to the base of your libgsasl package.
-ifndef LIBGSASL_PATH
-LIBGSASL_PATH = ../../libgsasl-1.10.0
-endif
-# Edit the path below to point to the base of your libidn2 package.
-ifndef LIBIDN2_PATH
-LIBIDN2_PATH = ../../libidn2-2.0.3
-endif
-# Edit the path below to point to the base of your MS IDN package.
-# Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1
-# https://www.microsoft.com/en-us/download/details.aspx?id=734
-ifndef WINIDN_PATH
-WINIDN_PATH = ../../Microsoft IDN Mitigation APIs
-endif
-# Edit the path below to point to the base of your Novell LDAP NDK.
-ifndef LDAP_SDK
-LDAP_SDK = c:/novell/ndk/cldapsdk/win32
-endif
-# Edit the path below to point to the base of your nghttp2 package.
-ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-1.0.0
-endif
-# Edit the path below to point to the base of your nghttp3 package.
-ifndef NGHTTP3_PATH
-NGHTTP3_PATH = ../../nghttp3-1.0.0
-endif
-# Edit the path below to point to the base of your ngtcp2 package.
-ifndef NGTCP2_PATH
-NGTCP2_PATH = ../../ngtcp2-1.0.0
-endif
-
-PROOT = ..
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = $(PROOT)/ares
-endif
-
-ifeq ($(CURL_CC),)
-CURL_CC := $(CROSSPREFIX)gcc
-endif
-ifeq ($(CURL_AR),)
-CURL_AR := $(CROSSPREFIX)ar
-endif
-
-CC = $(CURL_CC)
-CFLAGS = $(CURL_CFLAG_EXTRAS) -g -O2 -Wall -W
-CFLAGS += -fno-strict-aliasing
-# comment LDFLAGS below to keep debug info
-LDFLAGS = $(CURL_LDFLAG_EXTRAS) $(CURL_LDFLAG_EXTRAS_EXE) -s
-AR = $(CURL_AR)
-RC = $(CROSSPREFIX)windres
-RCFLAGS = --include-dir=$(PROOT)/include -O coff -DCURL_EMBED_MANIFEST
-STRIP   = $(CROSSPREFIX)strip -g
+#***************************************************************************
 
-# We may need these someday
-# PERL = perl
-# NROFF = nroff
+# See usage in lib/Makefile.m32
 
-# Set environment var ARCH to your architecture to override autodetection.
-ifndef ARCH
-ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
-ARCH = w64
-else
-ARCH = w32
-endif
-endif
+PROOT := ..
 
-ifeq ($(ARCH),w64)
-CFLAGS  += -m64 -D_AMD64_
-LDFLAGS += -m64
-RCFLAGS += -F pe-x86-64
-else
-CFLAGS  += -m32
-LDFLAGS += -m32
-RCFLAGS += -F pe-i386
-endif
-
-# Platform-dependent helper tool macros
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DEL     = rm -f $1
-RMDIR   = rm -fr $1
-MKDIR   = mkdir -p $1
-COPY    = -cp -afv $1 $2
-#COPYR  = -cp -afr $1/* $2
-COPYR   = -rsync -aC $1/* $2
-TOUCH   = touch $1
-CAT     = cat
-ECHONL  = echo ""
-DL = '
-else
-ifeq "$(OS)" "Windows_NT"
-DEL     = -del 2>NUL /q /f $(subst /,\,$1)
-RMDIR   = -rd 2>NUL /q /s $(subst /,\,$1)
-else
-DEL     = -del 2>NUL $(subst /,\,$1)
-RMDIR   = -deltree 2>NUL /y $(subst /,\,$1)
-endif
-MKDIR   = -md 2>NUL $(subst /,\,$1)
-COPY    = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
-COPYR   = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
-TOUCH   = copy 2>&1>NUL /b $(subst /,\,$1) +,,
-CAT     = type
-ECHONL  = $(ComSpec) /c echo.
-endif
-
-########################################################
-## Nothing more to do below this line!
+RCFLAGS  += -DCURL_EMBED_MANIFEST
+CPPFLAGS += -I$(PROOT)/lib
+LDFLAGS  += -L$(PROOT)/lib
+LIBS     += -lcurl
 
 ifneq ($(findstring -dyn,$(CFG)),)
-DYN = 1
-endif
-ifneq ($(findstring -ares,$(CFG)),)
-ARES = 1
-endif
-ifneq ($(findstring -sync,$(CFG)),)
-SYNC = 1
-endif
-ifneq ($(findstring -rtmp,$(CFG)),)
-RTMP = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssh2,$(CFG)),)
-SSH2 = 1
-ZLIB = 1
-endif
-ifneq ($(findstring -ssl,$(CFG)),)
-SSL = 1
-endif
-ifneq ($(findstring -zlib,$(CFG)),)
-ZLIB = 1
-endif
-ifneq ($(findstring -zstd,$(CFG)),)
-ZSTD = 1
-endif
-ifneq ($(findstring -brotli,$(CFG)),)
-BROTLI = 1
-endif
-ifneq ($(findstring -gsasl,$(CFG)),)
-GSASL = 1
-endif
-ifneq ($(findstring -idn2,$(CFG)),)
-IDN2 = 1
-endif
-ifneq ($(findstring -winidn,$(CFG)),)
-WINIDN = 1
-endif
-ifneq ($(findstring -sspi,$(CFG)),)
-SSPI = 1
-endif
-ifneq ($(findstring -ldaps,$(CFG)),)
-LDAPS = 1
-endif
-ifneq ($(findstring -ipv6,$(CFG)),)
-IPV6 = 1
-endif
-ifneq ($(findstring -schannel,$(CFG))$(findstring -winssl,$(CFG)),)
-SCHANNEL = 1
-SSPI = 1
-endif
-ifneq ($(findstring -nghttp2,$(CFG)),)
-NGHTTP2 = 1
-endif
-ifneq ($(findstring -nghttp3,$(CFG)),)
-NGHTTP3 = 1
-endif
-ifneq ($(findstring -ngtcp2,$(CFG)),)
-NGTCP2 = 1
-endif
-ifneq ($(findstring -unicode,$(CFG)),)
-UNICODE = 1
-endif
-
-# SSH2 and RTMP require an SSL library; assume OpenSSL if none specified
-ifneq ($(SSH2)$(RTMP),)
-  ifeq ($(SSL)$(SCHANNEL),)
-    SSL = 1
-  endif
-endif
-
-INCLUDES = -I. -I../include -I../lib
-ifdef SSL
-  ifdef SCHANNEL
-    CFLAGS += -DCURL_WITH_MULTI_SSL
-  endif
-endif
-ifdef UNICODE
-  CFLAGS += -DUNICODE -D_UNICODE
-  LDFLAGS += -municode
-endif
-
-ifdef DYN
-  curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
-  curl_LDADD = -L$(PROOT)/lib -lcurldll
+  curl_DEPENDENCIES := $(PROOT)/lib/libcurl$(CURL_DLL_SUFFIX).dll
+  curl_DEPENDENCIES += $(PROOT)/lib/libcurl.dll.a
+  DYN := 1
 else
-  curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
-  curl_LDADD = -L$(PROOT)/lib -lcurl
-  CFLAGS += -DCURL_STATICLIB
+  curl_DEPENDENCIES := $(PROOT)/lib/libcurl.a
+  CPPFLAGS += -DCURL_STATICLIB
   LDFLAGS += -static
 endif
-ifdef SYNC
-  CFLAGS += -DUSE_SYNC_DNS
-else
-  ifdef ARES
-    ifndef DYN
-      curl_DEPENDENCIES += $(LIBCARES_PATH)/libcares.a
-    endif
-    CFLAGS += -DUSE_ARES -DCARES_STATICLIB
-    curl_LDADD += -L"$(LIBCARES_PATH)" -lcares
-  endif
-endif
-ifdef RTMP
-  CFLAGS += -DUSE_LIBRTMP
-  curl_LDADD += -L"$(LIBRTMP_PATH)/librtmp" -lrtmp -lwinmm
-endif
-ifdef NGHTTP2
-  CFLAGS += -DUSE_NGHTTP2
-  curl_LDADD += -L"$(NGHTTP2_PATH)/lib" -lnghttp2
-endif
-ifdef SSH2
-  CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
-  curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2
-  ifdef SCHANNEL
-    ifndef DYN
-      curl_LDADD += -lbcrypt -lcrypt32
-    endif
-  endif
-endif
-ifdef SSL
-  ifdef NGHTTP3
-    CFLAGS += -DUSE_NGHTTP3
-    curl_LDADD += -L"$(NGHTTP3_PATH)/lib" -lnghttp3
-    ifdef NGTCP2
-      CFLAGS += -DUSE_NGTCP2
-      curl_LDADD += -L"$(NGTCP2_PATH)/lib" -lngtcp2 -lngtcp2_crypto_openssl
-    endif
-  endif
 
-  ifndef OPENSSL_INCLUDE
-    ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
-      OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
-    endif
-    ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
-      OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
-    endif
-  endif
-  ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
-    $(error Invalid path to OpenSSL package: $(OPENSSL_PATH))
-  endif
-  ifndef OPENSSL_LIBPATH
-    OPENSSL_LIBS = -lssl -lcrypto
-    ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
-      OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
-      ifdef DYN
-        OPENSSL_LIBS = -lssl32 -leay32
-      endif
-    endif
-    ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
-      OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
-    endif
-  endif
-  ifndef DYN
-    OPENSSL_LIBS += -lgdi32 -lcrypt32
-  endif
-  INCLUDES += -I"$(OPENSSL_INCLUDE)"
-  CFLAGS += -DUSE_OPENSSL
-  curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS)
-endif
-ifdef SCHANNEL
-  CFLAGS += -DUSE_SCHANNEL
-  curl_LDADD += -lcrypt32
-endif
-ifdef ZLIB
-  INCLUDES += -I"$(ZLIB_PATH)"
-  CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
-  curl_LDADD += -L"$(ZLIB_PATH)" -lz
-endif
-ifdef ZSTD
-  INCLUDES += -I"$(ZSTD_PATH)/include"
-  CFLAGS += -DHAVE_ZSTD
-  curl_LDADD += -L"$(ZSTD_PATH)/lib"
-  ifdef ZSTD_LIBS
-    curl_LDADD += $(ZSTD_LIBS)
-  else
-    curl_LDADD += -lzstd
-  endif
-endif
-ifdef BROTLI
-  INCLUDES += -I"$(BROTLI_PATH)/include"
-  CFLAGS += -DHAVE_BROTLI
-  curl_LDADD += -L"$(BROTLI_PATH)/lib"
-  ifdef BROTLI_LIBS
-    curl_LDADD += $(BROTLI_LIBS)
-  else
-    curl_LDADD += -lbrotlidec
-  endif
-endif
-ifdef GSASL
-  CFLAGS += -DUSE_GSASL
-  curl_LDADD += -L"$(LIBGSASL_PATH)/lib" -lgsasl
-endif
-ifdef IDN2
-  CFLAGS += -DUSE_LIBIDN2
-  curl_LDADD += -L"$(LIBIDN2_PATH)/lib" -lidn2
-else
-ifdef WINIDN
-  CFLAGS += -DUSE_WIN32_IDN
-  curl_LDADD += -L"$(WINIDN_PATH)" -lnormaliz
-endif
-endif
-ifdef SSPI
-  CFLAGS += -DUSE_WINDOWS_SSPI
-endif
-ifdef IPV6
-  CFLAGS += -DENABLE_IPV6 -D_WIN32_WINNT=0x0501
-endif
-ifdef LDAPS
-  CFLAGS += -DHAVE_LDAP_SSL
-endif
-ifdef USE_LDAP_NOVELL
-  CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
-  curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
-endif
-ifdef USE_LDAP_OPENLDAP
-  CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
-  curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
-endif
-ifndef USE_LDAP_NOVELL
-ifndef USE_LDAP_OPENLDAP
-curl_LDADD += -lwldap32
-endif
-endif
-curl_LDADD += -lws2_32
+### Sources and targets
 
-# Makefile.inc provides the CSOURCES and HHEADERS defines
+# Provides CURL_CFILES, CURLX_CFILES, CURL_RCFILES
 include Makefile.inc
 
-curl_PROGRAMS = curl.exe
+TARGETS := curl.exe
+
 curl_OBJECTS := $(patsubst %.c,%.o,$(strip $(CURL_CFILES)))
-curlx_OBJECTS := $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
-curl_OBJECTS += $(curlx_OBJECTS)
+curl_OBJECTS += $(patsubst %.c,%.o,$(notdir $(strip $(CURLX_CFILES))))
+curl_OBJECTS += $(patsubst %.rc,%.res,$(strip $(CURL_RCFILES)))
 vpath %.c $(PROOT)/lib
 
-RESOURCE = curl.res
-
-
-all: $(curl_PROGRAMS)
+TOCLEAN := $(curl_OBJECTS)
+ifneq ($(wildcard tool_hugehelp.c.cvs),)
+TOCLEAN += tool_hugehelp.c
+endif
 
-curl.exe: $(RESOURCE) $(curl_OBJECTS) $(curl_DEPENDENCIES)
-       $(call DEL, $@)
-       $(CC) $(LDFLAGS) -o $@ $< $(curl_OBJECTS) $(curl_LDADD)
+### Local rules
 
-# We don't have nroff normally under win32
-# tool_hugehelp.c: $(PROOT)/docs/MANUAL $(PROOT)/docs/curl.1 mkhelp.pl
-#      @$(call DEL, tool_hugehelp.c)
-#      $(NROFF) -man $(PROOT)/docs/curl.1 | $(PERL) mkhelp.pl $(PROOT)/docs/MANUAL > tool_hugehelp.c
+$(TARGETS): $(curl_OBJECTS) $(curl_DEPENDENCIES)
+       $(CC) $(LDFLAGS) $(CURL_LDFLAGS_BIN) -o $@ $(curl_OBJECTS) $(LIBS)
 
 tool_hugehelp.c:
        @echo Creating $@
        @$(call COPY, $@.cvs, $@)
 
-%.o: %.c
-       $(CC) $(INCLUDES) $(CFLAGS) -c $<
-
-%.res: %.rc
-       $(RC) $(RCFLAGS) -i $< -o $@
-
-clean:
-ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
-       @$(call DEL, tool_hugehelp.c)
-endif
-       @$(call DEL, $(curl_OBJECTS) $(curlx_OBJECTS) $(RESOURCE))
+### Global script
 
-distclean vclean: clean
-       @$(call DEL, $(curl_PROGRAMS))
+include $(PROOT)/lib/Makefile.m32
diff --git a/src/Makefile.netware b/src/Makefile.netware
deleted file mode 100644 (file)
index 20c82ea..0000000
+++ /dev/null
@@ -1,474 +0,0 @@
-#***************************************************************************
-#                                  _   _ ____  _
-#  Project                     ___| | | |  _ \| |
-#                             / __| | | | |_) | |
-#                            | (__| |_| |  _ <| |___
-#                             \___|\___/|_| \_\_____|
-#
-# Copyright (C) 2004 - 2014, Guenter Knauf
-# Copyright (C) 2001 - 2021, 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.
-#
-#***************************************************************************
-
-#################################################################
-#
-## Makefile for building curl.nlm (NetWare version - gnu make)
-##
-## Use: make -f Makefile.netware
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-# Edit the path below to point to the base of your Zlib sources.
-ifndef ZLIB_PATH
-ZLIB_PATH = ../../zlib-1.2.8
-endif
-
-# Edit the path below to point to the base of your OpenSSL package.
-ifndef OPENSSL_PATH
-OPENSSL_PATH = ../../openssl-1.0.2a
-endif
-
-# Edit the path below to point to the base of your LibSSH2 package.
-ifndef LIBSSH2_PATH
-LIBSSH2_PATH = ../../libssh2-1.5.0
-endif
-
-# Edit the path below to point to the base of your libidn package.
-ifndef LIBIDN_PATH
-LIBIDN_PATH = ../../libidn-1.18
-endif
-
-# Edit the path below to point to the base of your librtmp package.
-ifndef LIBRTMP_PATH
-LIBRTMP_PATH = ../../librtmp-2.3
-endif
-
-# Edit the path below to point to the base of your nghttp2 package.
-ifndef NGHTTP2_PATH
-NGHTTP2_PATH = ../../nghttp2-0.6.7
-endif
-
-# Edit the path below to point to the base of your fbopenssl package.
-ifndef FBOPENSSL_PATH
-FBOPENSSL_PATH = ../../fbopenssl-0.4
-endif
-
-# Edit the path below to point to the base of your libexpat package.
-ifndef LIBEXPAT_PATH
-LIBEXPAT_PATH = ../../expat-2.1.0
-endif
-
-# Edit the path below to point to the base of your libXML2 package.
-ifndef LIBXML2_PATH
-LIBXML2_PATH = ../../libxml2-2.8.0
-endif
-
-# Edit the path below to point to the base of your c-ares package.
-ifndef LIBCARES_PATH
-LIBCARES_PATH = ../ares
-endif
-
-ifndef INSTDIR
-INSTDIR = ..$(DS)curl-$(LIBCURL_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGET  = curl
-VERSION = $(LIBCURL_VERSION)
-COPYR   = Copyright (C) $(LIBCURL_COPYRIGHT_STR)
-DESCR   = curl $(LIBCURL_VERSION_STR) ($(LIBARCH)) - https://curl.se
-MTSAFE  = YES
-STACK   = 64000
-SCREEN  = $(TARGET) commandline utility
-# Comment the line below if you don't want to load protected automatically.
-# LDRING = 3
-
-# Uncomment the next line to enable linking with POSIX semantics.
-# POSIXFL = 1
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
-  OPT = -O2
-  OBJDIR = release
-else
-  OPT = -g
-  OBJDIR = debug
-endif
-
-# The following lines defines your compiler.
-ifdef CWFolder
-  METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
-  # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
-  MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
-  CC = mwccnlm
-else
-  CC = gcc
-endif
-PERL = perl
-# Here you can find a native Win32 binary of the original awk:
-# http://www.gknw.net/development/prgtools/awk-20100523.zip
-AWK = awk
-CP  = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# If you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# LIBARCH_U = $(shell $(AWK) 'BEGIN {print toupper(ARGV[1])}' $(LIBARCH))
-LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
-  LD = mwldnlm
-  LDFLAGS = -nostdlib $(OBJS) $(PRELUDE) $(LDLIBS) -o $@ -commandfile
-  LIBEXT  = lib
-  CFLAGS  += -gccinc -inline off -opt nointrinsics -proc 586
-  CFLAGS  += -relax_pointers
-  #CFLAGS += -w on
-  ifeq ($(LIBARCH),LIBC)
-    ifeq ($(POSIXFL),1)
-      PRELUDE = $(NDK_LIBC)/imports/posixpre.o
-    else
-      PRELUDE = $(NDK_LIBC)/imports/libcpre.o
-    endif
-    CFLAGS += -align 4
-  else
-    # PRELUDE = $(NDK_CLIB)/imports/clibpre.o
-    # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
-    PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
-    # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
-    CFLAGS += -align 1
-  endif
-else
-  LD = nlmconv
-  LDFLAGS = -T
-  LIBEXT  = a
-  CFLAGS  += -m32
-  CFLAGS  += -fno-builtin -fno-strict-aliasing
-  ifeq ($(findstring gcc,$(CC)),gcc)
-    CFLAGS  += -fpcc-struct-return
-  endif
-  CFLAGS  += -Wall # -pedantic
-  ifeq ($(LIBARCH),LIBC)
-    ifeq ($(POSIXFL),1)
-      PRELUDE = $(NDK_LIBC)/imports/posixpre.gcc.o
-    else
-      PRELUDE = $(NDK_LIBC)/imports/libcpre.gcc.o
-    endif
-  else
-    # PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
-    # to avoid the __init_* / __deinit_* woes don't use prelude from NDK
-    # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
-    PRELUDE = $(NDK_ROOT)/pre/prelude.o
-    CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
-  endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-ifndef NDK_CLIB
-NDK_CLIB = $(NDK_ROOT)/nwsdk
-endif
-ifndef NDK_LIBC
-NDK_LIBC = $(NDK_ROOT)/libc
-endif
-ifndef NDK_LDAP
-NDK_LDAP = $(NDK_ROOT)/cldapsdk/netware
-endif
-CURL_INC = ../include
-CURL_LIB = ../lib
-
-INCLUDES = -I$(CURL_INC) -I$(CURL_LIB)
-
-ifeq ($(findstring -static,$(CFG)),-static)
-LINK_STATIC = 1
-endif
-ifeq ($(findstring -ares,$(CFG)),-ares)
-WITH_ARES = 1
-endif
-ifeq ($(findstring -rtmp,$(CFG)),-rtmp)
-WITH_RTMP = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssh2,$(CFG)),-ssh2)
-WITH_SSH2 = 1
-WITH_SSL = 1
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -ssl,$(CFG)),-ssl)
-WITH_SSL = 1
-endif
-ifeq ($(findstring -zlib,$(CFG)),-zlib)
-WITH_ZLIB = 1
-endif
-ifeq ($(findstring -idn,$(CFG)),-idn)
-WITH_IDN = 1
-endif
-ifeq ($(findstring -nghttp2,$(CFG)),-nghttp2)
-WITH_NGHTTP2 = 1
-endif
-ifeq ($(findstring -ipv6,$(CFG)),-ipv6)
-ENABLE_IPV6 = 1
-endif
-
-ifdef LINK_STATIC
-  LDLIBS = $(CURL_LIB)/libcurl.$(LIBEXT)
-ifdef WITH_ARES
-  LDLIBS += $(LIBCARES_PATH)/libcares.$(LIBEXT)
-endif
-else
-  MODULES  = libcurl.nlm
-  IMPORTS = @$(CURL_LIB)/libcurl.imp
-endif
-ifdef WITH_SSH2
-  # INCLUDES += -I$(LIBSSH2_PATH)/include
-  ifdef LINK_STATIC
-    LDLIBS += $(LIBSSH2_PATH)/nw/libssh2.$(LIBEXT)
-  else
-    MODULES += libssh2.nlm
-    IMPORTS += @$(LIBSSH2_PATH)/nw/libssh2.imp
-  endif
-endif
-ifdef WITH_RTMP
-  # INCLUDES += -I$(LIBRTMP_PATH)
-  ifdef LINK_STATIC
-    LDLIBS += $(LIBRTMP_PATH)/librtmp/librtmp.$(LIBEXT)
-  endif
-endif
-ifdef WITH_SSL
-  # INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
-  LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
-  LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
-  IMPORTS += GetProcessSwitchCount RunningProcess
-endif
-ifdef WITH_ZLIB
-  INCLUDES += -I$(ZLIB_PATH)
-  ifdef LINK_STATIC
-    LDLIBS += $(ZLIB_PATH)/nw/$(LIBARCH)/libz.$(LIBEXT)
-  else
-    MODULES += libz.nlm
-    IMPORTS += @$(ZLIB_PATH)/nw/$(LIBARCH)/libz.imp
-  endif
-endif
-ifdef WITH_IDN
-  # INCLUDES += -I$(LIBIDN_PATH)/include
-  LDLIBS += $(LIBIDN_PATH)/lib/libidn.$(LIBEXT)
-endif
-ifdef WITH_NGHTTP2
-  INCLUDES += -I$(NGHTTP2_PATH)/include
-  LDLIBS += $(NGHTTP2_PATH)/lib/libnghttp2.$(LIBEXT)
-endif
-endif
-
-ifeq ($(LIBARCH),LIBC)
-  INCLUDES += -I$(NDK_LIBC)/include
-  # INCLUDES += -I$(NDK_LIBC)/include/nks
-  # INCLUDES += -I$(NDK_LIBC)/include/winsock
-  CFLAGS += -D_POSIX_SOURCE
-else
-  INCLUDES += -I$(NDK_CLIB)/include/nlm
-  # INCLUDES += -I$(NDK_CLIB)/include
-endif
-ifndef DISABLE_LDAP
-  # INCLUDES += -I$(NDK_LDAP)/$(LIBARCH_L)/inc
-endif
-CFLAGS += $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
-  XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
-  XDCOPT = -u
-endif
-ifdef XDCOPT
-  XDCDATA = $(OBJDIR)/$(TARGET).xdc
-endif
-
-ifeq ($(findstring /sh,$(SHELL)),/sh)
-DL  = '
-DS  = /
-PCT = %
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-else
-DS  = \\
-PCT = %%
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-OBJX := $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(strip $(CURLX_CFILES))))
-OBJS := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CURL_CFILES)))
-ifndef LINK_STATIC
-OBJS += $(OBJX)
-endif
-
-vpath %.c $(CURL_LIB)
-
-all: prebuild $(TARGET).nlm
-
-prebuild: $(OBJDIR) $(OBJDIR)/version.inc
-
-$(OBJDIR)/%.o: %.c
-#      @echo Compiling $<
-       $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR)
-       @echo Creating $@
-       @$(AWK) -f ../packages/NetWare/get_ver.awk $< > $@
-
-install: $(INSTDIR) all
-       @-$(CP) ../docs/$(TARGET).pdf $(INSTDIR)
-       @-$(CP) ../docs/$(TARGET).html $(INSTDIR)
-       @$(CP) $(TARGET).nlm $(INSTDIR)
-
-clean:
-ifeq "$(wildcard tool_hugehelp.c.cvs)" "tool_hugehelp.c.cvs"
-       -$(RM) tool_hugehelp.c
-endif
-       -$(RM) -r $(OBJDIR)
-
-distclean vclean: clean
-       -$(RM) $(TARGET).nlm
-
-$(OBJDIR) $(INSTDIR):
-       @$(MKDIR) $@
-
-$(TARGET).nlm: $(OBJS) $(OBJDIR)/$(TARGET).def $(XDCDATA)
-       @echo Linking $@
-       @-$(RM) $@
-       @$(LD) $(LDFLAGS) $(OBJDIR)/$(TARGET).def
-
-$(OBJDIR)/%.xdc: Makefile.netware
-       @echo Creating $@
-       @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
-       @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
-       @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
-       @echo $(DL)# All your changes will be lost!!$(DL) >> $@
-       @echo $(DL)#$(DL) >> $@
-       @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
-       @echo $(DL)description "$(DESCR)"$(DL) >> $@
-       @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
-       @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
-       @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
-       @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
-else
-       @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifneq ($(DB),NDEBUG)
-       @echo $(DL)debug$(DL) >> $@
-endif
-       @echo $(DL)threadname "$(TARGET)"$(DL) >> $@
-ifdef XDCDATA
-       @echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
-       @echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
-       @echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
-       @echo $(DL)start _Prelude$(DL) >> $@
-       @echo $(DL)exit _Stop$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/clib.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/threads.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_CLIB)/imports/socklib.imp$(DL) >> $@
-       @echo $(DL)module clib$(DL) >> $@
-ifndef DISABLE_LDAP
-       @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapsdk.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapssl.imp$(DL) >> $@
-#      @echo $(DL)import @$(NDK_LDAP)/clib/imports/ldapx.imp$(DL) >> $@
-       @echo $(DL)module ldapsdk ldapssl$(DL) >> $@
-endif
-else
-ifeq ($(POSIXFL),1)
-       @echo $(DL)flag_on 4194304$(DL) >> $@
-endif
-       @echo $(DL)flag_on 64$(DL) >> $@
-       @echo $(DL)pseudopreemption$(DL) >> $@
-ifeq ($(findstring posixpre,$(PRELUDE)),posixpre)
-       @echo $(DL)start POSIX_Start$(DL) >> $@
-       @echo $(DL)exit POSIX_Stop$(DL) >> $@
-       @echo $(DL)check POSIX_CheckUnload$(DL) >> $@
-else
-       @echo $(DL)start _LibCPrelude$(DL) >> $@
-       @echo $(DL)exit _LibCPostlude$(DL) >> $@
-       @echo $(DL)check _LibCCheckUnload$(DL) >> $@
-endif
-       @echo $(DL)import @$(NDK_LIBC)/imports/libc.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LIBC)/imports/netware.imp$(DL) >> $@
-       @echo $(DL)module libc$(DL) >> $@
-ifndef DISABLE_LDAP
-       @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapsdk.imp$(DL) >> $@
-       @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapssl.imp$(DL) >> $@
-#      @echo $(DL)import @$(NDK_LDAP)/libc/imports/lldapx.imp$(DL) >> $@
-       @echo $(DL)module lldapsdk lldapssl$(DL) >> $@
-endif
-endif
-ifdef MODULES
-       @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
-       @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
-       @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(findstring nlmconv,$(LD)),nlmconv)
-       @echo $(DL)input $(PRELUDE)$(DL) >> $@
-       @echo $(DL)input $(OBJS)$(DL) >> $@
-ifdef LDLIBS
-       @echo $(DL)input $(LDLIBS)$(DL) >> $@
-endif
-       @echo $(DL)output $(TARGET).nlm$(DL) >> $@
-endif
-
-tool_hugehelp.c:
-       @echo Creating $@
-       @$(CP) tool_hugehelp.c.cvs $@
-
-$(LIBCARES_PATH)/libcares.$(LIBEXT):
-       $(MAKE) -C $(LIBCARES_PATH) -f Makefile.netware lib
index 7d88b32d97bff78b03f4184a59a050b0fd853d6c..b0e32879818b9c1a733144d4e28920022c3e152a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <winver.h>
 #include "tool_version.h"
diff --git a/src/macos/MACINSTALL.TXT b/src/macos/MACINSTALL.TXT
deleted file mode 100644 (file)
index 2bab9fd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-MACOS (not MACOS X)\r===================\rThis is the first attempt at porting curl to MacOS.\rhttp, ftp, dict and telnet seems to work fine, other protocols and advanced \rfeatures have not been all tested.\r\rThis port is heavily based on the GUSI library from Matthias Neeracher.\rGUSI (Grand Unified Socket Interface) is a POSIX/Pthreads/Sockets library \rbringing some of the comforts of UNIX 98 to traditional MacOS.\rThe latest GUSI release can be downloaded from sourceforge \rat <https://sourceforge.net/projects/gusi/>\r\rI have also written a few functions to help port Unix applications to MacOS.\rThese functions are part of the GUSI Extra library that can be downloaded at\r<http://perso.wanadoo.fr/ela/resources.html#gusiextra>\r\rOpenSSL support is still experimental but I hope to deliver a version \rincluding SSL soon.\r\rcurl for MacOS requires using the CodeWarrior compiler from Metrowerks.\r\rFirst download GUSI, GUSI Extra and curl. Access paths have been setup so that\rGUSI, GUSI Extra and curl directories should have the same parent directory.\r\rFollow the instructions in GUSI Extra "readme.txt" mainly the ones related to\rSIOUX and GUSI patches. If you do not apply these patches curl will not behave \rcorrectly.\r\rIn the 'curl/src/macos' directory, decode "curl.mcp.xml.sit.hqx" (This is a \rstuffit binhexed file)\rFrom the CodeWarrior IDE, import 'curl/src/macos/curl.xml', adjust the access \rpaths if required. Then you should be able to build:\r- the libcurl libraries for PPC and 68K.\r- the curl application (also available for PPC and 68K) which is the command\r  line version of curl.\r\rIf the file "tool_hugehelp.c" is missing rename "curl/src/tool_hugehelp.c.cvs"\rto "tool_hugehelp.c" and make sure its file type is 'TEXT'\r
diff --git a/src/macos/curl.mcp.xml.sit.hqx b/src/macos/curl.mcp.xml.sit.hqx
deleted file mode 100644 (file)
index 01650b9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(This file must be converted with BinHex 4.0)\r:%'0eFQ`ZE@0`,RKYE#jcDA3!8dP8090*9#%!N!3F@`#3")EF8h4eCQC*G#!SBbN\ra16Nh,6)`-$%J3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q&XB@4\rND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!!F@`#3!h)!!3#3!h)0,`fPT9*PFf9\rbGQ9NTD8!TC!%!3!!2!!3Z$+T+EJbU5N!N!d-['F!"*UP!!!E'J#3"!m!Bh9bE#j\rYBh!ZH'eX!!%`!P4&@&4$9dP&!3$rN!3!N!U!!*!*!CS!N!0K!*!%$`"#`G6)[bB\r"`A,RBHAV3f@ZJUhAq'5,9!EjE+@0l9R9ECKR4kTRRh2Tr@@VMJ"@0,FaU4R&FMa\rLBT)4LbVeb+BC%jqHQQI4[fPBGXP3'T4BeHdDm#H-`9$4'EUJEJ186cE)3X(8K-U\r1KiJ4+5-HVi0DI[@5XBTQHb300K2--ZQmjPHEfdA)NhXMSJc'A+@kemq4P`'SeCB\rTD8QEYXMK8Kk4YZRkc1,G%m39"[dp8Zmc'[eKd,jpTVh555HQXd2`S9"KrGB`laE\r(r+!)8r8DP'9kbYVQeY-aSjVQRA2k-`'2pqTr9EP6Z&H-%4eK4@qp1Z(fDAd1&`A\rH1IYG&T86QUHmp*%cdr$@G4fJrQ[9'8p)f"FPKmMQH6!kGBGeTA5Im1Pp*(P69-*\rb8ld+I'KQIH`@CNfcIEGE&Zbb`3f,4IkZ#4Ve"2%R-a#MLYefeG"*FSMj,RD`aaE\rDHh6$h8hF"r`SK84RjI*$KFfI&J3ZTk"r!J2$Nr#%K(IA803e(bAG645j1231E'$\rC5$(Nr9Z2LZbqJPSH&9[h1(,+e"8!I$4XKrIeH6Y"")PlSQG2V4#-hZAbb2jBT25\r(IUG-bFQ+0[bbfAlrpIDlpCradaS5G(*4d%[i*ISQ&5*3e$NVT#A+!Y3P%V*@HX9\r6AGI"h1N`D@lj56PX8fB95NekUL&lk'15a*Z(38rC`Ii%$Y$E-A"!QfHG(Ed)Uhd\r$e&Ckrm4jfVikK&j$D[%H)*lGX!FUK'&[Ck*%#lJUT9qiT13X#T4mK2)e"`%-JFe\r)*)Sa9b+92'@Gb8N6d9E+kJ#VEA(c6+d`%E82FXcNKJYM'a,FD@Jf-Bhe0i+B2b'\r4,T!!lq1IYLpFITlMfGiYPc0f$6,+MDV5TI9#X-SpJhU%)Fb8cp2EjaJ6Y-)DC*f\re'FGC5B'BdQV'H!@cS`XJID*-@m3!EFmNq*Ve20Pc0%pLrF4I`MH*iE!bAI`TJ6f\rfIkZ$4)P"bTla%@'ZL"8pmd(L(R3XEa8KPe@FkheL$l%E1UF89BS&afbE`RN#pXJ\rIUFD+"e#6RG6PSV[,G0B8l,Ipa2UU$4a@eA6jr+8Y,jkA1f9)d0!)UcD8pc1PCaS\r$4e#PcC8bCKD'Ar-2Yr"-%XLQh@AF!9p6rj`FhAk@,R*F(2h!LB#ca(F'im+pi,L\rBf4LJV+icK26r2XR2)q9fr#K3PQ3PU)3V#9KqDVJL&pEb*`f)lAAq9FdpFU[$8N6\rH43&)*h$BNrd0,c(!ICCA2Nh-i-b#,A9)Dq6b0QXcb4Cb)HG0c,H"E8"bQ0V82+K\r(6bpND%LUfp6S(mNAhkhHBJTdab-6GA&I%2cqe4`NjKlSpKDmI6m!h0,h!`LC-2j\rpCCGeT6#1Y62eS"hVZBAlj!YPi8DS1XV14b!3d)r5Z1C(*KTB'Df3!+cZN!#aJMU\ram2DQK54epTl55RJcT[d$'Q5Me1@)lDI#N6S,Rb-#2%BpdZePl2&DZb9GH)-0FR`\r3N!!5&mlD,Sp)"5ZC2f@E-bpUflPTaUfFJ4mZUlcp#`iNNNl#eBaVI1&m0!dP'F[\rlT`UUYVZpKX&HPmBMVf"+'fS0*6pRfA+HccXLd0PXk",eKDrh`@MYIGqm(MRcMcP\rUCb#C$m'[dhBrb438Hbh4+bDe&0"BSF1P+PPP4@i`%iP22P9ibJHTcBXRN5!leUL\rLkN%bVNT!r-qGI('DMAp8jc1e[eH9VBp1+DSk0V(-aMaJD(6FHQ+T'%'h8"e3LeY\r*2ldFPa@Tem)!l+PBLXN#idPfFC0i-V-9Ed2X@hEhCC!!e2J+JDccb1@@XE`Ch+V\r@!I1YF"Jf&8Kc*-A[5BT"cFJ3I8rP#Vb#NHYS+"%q25(pP2,aD$5KBV4"&PiN--c\rf!&h'b,[%ZDE0!j&ZY32dZD3h)p'VEr2p@kU8c8kU,K'lh$A8,)`efrhRPmImIpI\rYXG)SXje6-1Z$'lrlYNl#ECVlA2V[1h9Ej6X"Q-(LA%P65$-Ka92rah%dQmeF#KH\r(%CE56(aEpX$BKjEHj(6mN!"l3iEi(2#eJXU2$BHK`913!#8U6q3!&-VfilRY05#\r+CbP+)RJR0D'943,GI+$+0I0+'SNaNUMBZ[q4'kLpb*c)iGMP,'c'hFQc1B6@@J6\rfXPPfGrc`"VaZDc5@lD1*@AIr'1UT5C'NI$HV@!e*U##m)62YSNd$`'p*J1[@ZVM\r5D'GRTkrhF6"1D9-DV'2YVR*$RV,I`+QmTjICq92DT-f+SL1lD&kp)C8`64h*aY*\rAaJiFNQBGVU!$p6A1-m-e*1L9Iic!B!lQ,rZIkda"cB%TJ`U*0QP,'JVEhkFUFU&\r(X5K4`r3eG5!0T0`KfYQ6-I-E-mUbb&1TIGYrd"X"EXL$@U!J)EB+%q8mMd,dFeJ\rfLGJA5!N*4MXRSYfk8"8Vp9RY*4rXaR0dQ"3d!1R%CAQZRaPE1*MZ&DHdelBBaaA\r(CTA1k$H!##ZMT'i$kB0JJPc9Y"5Em&M)DRM*#SIahMpP`2T[3F,Sr2JX9E@,U5L\r10Sdd1Y(qAG#,G'hX$PibcN@!,X`qX*,'eM#B)#S*k1PLLI*REMpB"UmhHT-j!0&\rTG)jc$@3BLI"em*jDf-B%qLmRR$,BQ1q)YN!*Q1ZNVH,YL#f$!C3-1#@Lch3a2+D\r1S3dIq-1a[1C*E$*P+KPQG`THP&p'TQ$JJ-*$cK9F03c3F-aJGGic8i,3hd[fAQ(\rX2Zr!KU)Rlj!!cer8P'[-pmXiEG4ETUADfi2e!+XIM"@%f)[i)Ikd3c!4jR!-4ar\rq1T6*aH(Xp6eP)1"JRKV00!kq!BaZa-p*GA93QrN2e@l5U!bDcH)QqRTh9BT04b$\r5Yml1!p$+q9ILbSc)r+'IfN,jLH0'9S)Z+ji4P'1GBK9MHCmrhF8AVC(Xmm"IHl#\rQFBJ"3PC,19FjeHrVT3AV%qCIqAh1VJm(G,#b$Gh-aRS@jXNFTGXV8@2Eq&L#U%L\rbf**dKC),j0c9*P0&V!XPRpA0'`jEQG1PDJ+Zdb`[PpRLe34(EcHI-CPm54(VIbE\r2J3S%q'`"i`+,HjI3D&@MmVRC5ffqFSVlc[1eQP`@)$eHGrSTSGA@,fc&Yd%c#-[\rc`N5)bZ%5b!`+QA-C%YBp[NpG`fMrU'VklXR-he$9jRbE5pBEJR2GeER[mN'1,[`\r*5HDBYJFl#DN&kKi#mVHiL2@'H4Lb-%(#jb5!e"`RQeJJPfD*L#l$'($NZ1*53#4\rP"Z19[8kVVN86PN0#LLPpq&`6QI1)ZR-h3b"[H'qCf&q%J1$CRiFD6AhC'iAdA!5\r&9qaeYeVcr,1k'F2P%TlIY-mjXqRIMK+"1cJjQ1[ad0mTG53!aa[IQhlKS@)N-(a\rpUJ$DahNB2HZ[!!fJ,p(-ACep@IGH86&XYZf#UZd`6HTD`e66bA,VjkUkQpeq)%J\rhajLPmXp(SipKb*'k%k1f[e'0!D&Sh80Q"$BH&jiJb+SEbpTbQBkE2Qp,5[hLS@1\r1pUZ(*&)`(+D+RH8$Z0,+br4iTZJ2rZVP,UC!FP8[XHa#3+"aHC!!DMcpKpFDeIe\rD%2`@$YX20DB&iIcJUS-R%eCPc4&MSE2f3qfA9IJK5I@,R4403FVlTR'JKYF'NBr\reC`jcaFi8Bl$9bp,K,TCp"cJ33fq@Z6`!DldUA,C8J[(2MaI2,p!`$5YT12Mei`2\rkEK")F$6(J8GAiLMFaTiMqpE8KiZGrrk"D3Fi#8(4*fVmGK4GIb9Pb9N,%Qh2V&b\rG`4BR#1B@ZrmSF@DdRU#!!i64LJXc9abPYpjfa+I*FSZ(&IkqF2,@5XqlSfe(pJ5\r@FBNcIm6`B$SBQ19pA0k8'bmMac8kRP[Q#l4qV9P3ibU$dmlE'[@*Dj1JGRJe4[Z\r5M#`*0UYGpeTAFQV4)hc"Frq0Qe88T#fG+YrEd%GD5VaN8ee69)@GJLMaCTYZJ$h\rY`PmD[A8fB#4GP0TV(G5&@%i-DBILl&5HUC*fk#qhfiL-VdMPEK`@*G5aB'3@1DI\r`Gmq!%mJhD-m-E@ei1#pf)H!Y)#hdYf5,Kre61KKr6-k+iC&[6#!,*8aC4V,dBda\r*G-Ea,kcp`EQYmI)q(TSXdpT[&6NmmVela*&ZrNk#!a*Ek1U9e(A-C#MTiFrU*8#\rGRIPS(IG0NC0@D@C,ef!3$-V,f1MmeU$hMNGflfPjdA1l$m'dhT6mE$5k,&09Rk*\r35$B&A8hc`Q,f[MCL'()&ZSp9"F43Y6Gp$d@GQ1*-IFE)fQ`!Gl+4bY!)4&ME!i1\rS(e$jM(!B0$aPZUklAZC&R6Q$q(JE0b`QVJ8l2ELL'2i"i$m4hNQq3$S*@r,KlPV\r@0aB$#$cij*NFIiA[#P'Hmk'D%mJh*T,r&0T!Sj!!I%QRN!"4J!C25i'JdhRAG4#\r+iPZ,'C)pS[%JqMbf%5Z@HYTRpTjm`P9K-jj6!9j,5+E8[jbd,$Qb,rLerVlm'a"\rEJ,NAIG%b0S`!KTfSi1,Hlm6&Tl86i@XA-SjmDCVVm2JR[U[ZUaabTc`"ZLc''*T\rMA06`8"HaVhrb,12m0TYp8$49BH,J(bC-qMij8S3`iIJLm!&DUAX,NDT4j(cCZq`\rSjr#YLPbe+8AqUc@cBNPJ0I"'D`jmfZPUpmQhXQ'2G"i,XrX6PZh5*UdATE`QBJT\r2*-NNJ'H03hDLq3NLl8V#BcH(SN53!&)l)I#5DJXfUc)pbK*kKMMdhlkIbRYcdU*\r-kaTcDabVQGjqY*`D1++%&&hPjA0$mc46dA5Pa&+%QbaXIY(9*40iKhGhE(!d(Zj\rTU%6JfY"(KHR"&-pfT-D8AB"c'iDKcqH'9"0#TcflZJ5YE#(YDU4QTYFS*`lY2+'\rHUH+"N6hThTfY$V%@bmP3RrZVqj*lIM!qQ&'(*R8#YUX0ViVa-8c1cLi5mSh423Y\rc"ZTZ&UCCXZeRVUh#+(cU-p`4R%4,2aCl@ZeXXYH'f1j5r6'Fdp6k&d9CITqHK#@\rjRIp9LG#d$jCXIJ9ZTRb1X1r#JCA&JjmSEMUfVbL!D[6I$5#JScE6Na9lmKfF0EH\rV"15k'@bDdk%miP"ThZ@A0I0@V`65l5S9deFHd#$hUXR5GDT"DMik$YJL+GmY#CB\rf%KC+a"&%)ihiBfR+0I#@&ENYGGfGh1ZaX"RlLlZ$l-9X9H*LaaQqEZ6LZ'rpIM*\rGCa`prJ+&V"j-rb!(B[h8XVQbRfQhYc,GJ(J65aIbPCVha(mX8UAS2e@%VYZYMF(\r$UMM#pf[eK66(Dj1)d*GNK+[I"ZK52ijfp01Pj098q,AA1GUbRR,5Z)jBdJMD1LZ\rY8$2iKCVB!R2!PiF*N!$Ycb2#1Nh6&f-fSDEc2YH1jp9GM@!XI'*ilG-Qc4qT0fe\rdIZdlC9qP)X!!&@4T9A$EaNq-AZKQ6%R$$a54DScX[R*,M*!!k)K4LrB9Ma0[+II\rjcUfa44M*R18DLAMSp36ELf),#2#qPidNRI[QVFj%D95q)Xa`RS6EjCd+5BN6MeV\r%!,Q1a$r!B1`Bp3FM8IpLD)S+$G#+BR1)d#!hB9'5GRjMXFLAC-06*FkSLrBpG6X\r,q$JVU-a-"TBp@F)+T`$8S[Dj!EIek6Ei!CIBUAGZpERj!eKb9(,X'RqjiBH5bbP\r-M*hrM9L`Xhl"GqM#U-f9*jXA"IQeZ[b#&`DqGehATT!!(S$6dqLGCl@A-NeefUB\rCPHNb!6cQp-!L[%Qal$RBVE9ZN!#qrF#!'d&V@ceTH8bbU3`DV0!06TamU$%('FZ\rl0N`a41a+-&6)Jcjl2XS1jHBp[HE"-PTaj6*#rZXdIX8%X8XRqJXc(FN5iG%bELS\r+b,60YmQf"J65!j!!D%+B#Ik0&-B3B@*GM[jJlJBU$RkG93B`&-#!h+HerJ8PT,@\rb4!M[IeX(5fA%bFZLUp@K6(mkd@BTHhBcDkGaJh0`$CA2N!#3!%G1-Ne!SYh%drH\rF,BQM`')#DqM&#U(*Y-1lG45[6@GDN!#,bMKZRMG8"D$T2Kc192P!mSK@0AC8#3E\rD5,p-B+X2ZcmCQAIc,2AEdK5!+1N5*`cl9qJ@N!")h+G,fYaRJrRN`dd1NQ"E$VL\rki6&AIilJU6[Z6pR5B*U9Rm1S[dr`a6mp3Fd`ArhVJQ!TR9T#ZhI+MpjYcFC*Tpf\rJP)[hkrKT5D`IVBCl"QA0TS2!TdYN8%E#epb&4PA9Q-hQ50A5SA@GjUa`kE-X-HM\r+d28*r*JYMjd!ICRc,(ZrmcU5e(4KNd[IAR$U[Tm*rdK"&(P&HE,U5c&(#0[`'-D\r5f6@Qdr3dIB[VAlQbBHEiXrVYae)ZjkP@,'U[dE)NKfe95B9"Jk0'I$A8b$VC&CI\rhj0TB-$9m0"N8$CIaHe"M2@3-GQ$(12rHGfTrFM[EP9BMH3B`fcFE2PM'VNZ+fSm\rR[kIC&VabE@DX[9ZChF-R3*X*[Gmakl`@[!XBM"Iq3#d4e2`)6dE"fe2&5r'*3)D\rfB!kY""qf-#Xh!5DUNqDYG(&`URfpc*RAAS-#r+D@!A[j8r[eAi!S-rimJJ'!JGb\r%*BZ5$!f,GjJjLa5D")q,RL4XR[Ppi(r8RNiP$2e@ALL+bU&lUIljbU5MXf56RSK\r#8KbRX8C@f&kmYX-V,K+TmASNfml4&HPfSV$Y(&Y&J8ER)M[,N!"VmB&c'$a2h'h\rc`MAp!+rpRY(4Qe8@Z#el[0+YYH#ZYd3EMkbHRechUKDqX5k8m)cfAKj'mJ*[h6'\r6)pLEDAqcBBi5[CE[rpIkcC%LIUe3f4@8TFUBfZ9B6FYY-F)N[fBV'h3@(m&iB,a\r)d1HkSQUS"C91!eHTUrHa9J[FLDk'K8-H9XmKc$L*'V5H'-5[*p)TC'El!$b2J"k\rT0Ul!A)(4ZlVY!Te#X5V)+@[J"r1e-BdkRFe`N!#r0DcM"VUBekGkJe,*5cpX0PS\rT(d3588LNcfA!1-TB8GQ`K0eIIl0N96)Nd!Rb%&4LIRETS'P3+jA+Bi9SY#qCmGI\r5Ai,[V-NK#La5439PX&LDc8hTl$aLj359-bqmDJZ)GiaX1k1[k)bMZ2r(U*c[Gej\r%D)m*@@+eGqbF249V)fRpkp)6e0JrHiB*[K8*9fGR-AU+jTcpi#f0+U0+L@Yc'U2\rdc04kb961J1JdC5PLEV30PJSYZXJ#jfdlb$,0UrY"jX[RkUY8JLY)-L`Gj6ieH'6\r%C*LCT`)3ZS@[X2!%!-SJKp1jEL2Cml64,qZhPa)'AidDL1Ybp@6`iI80l+RfHpd\rY1XF"[0[r!$B*PqDdHB95)l8[1I%*Nr,#e&Y3CCiNFC[8dj9TDKdh)Q6,,fCk(S#\rpQbBT0TY@PD(I@lDhBV%Pk9GrD%IY,YpIM-V9cE(UBbG2&Xck6c5I1BcMA-YcJFA\r0,Q"*[F1C16*jHTMMPV0@6HYDU5V0`dPbD&X+MPSlR&+hbi36I8(5pBhrN!$Nj*a\rZ#!akZ&EGD+M,95XdGQGpfB`RY9BjCa9"Jp0EhH,EFY$Xp0#fq5DI#KVJBj,10hZ\r`Bq#LBCm2%H@E,+X9!b92Xb3iDFh4MVPIpfIVl"rkr%Eie%$X)MHS6PM!XTB'1$H\rkR%(U%"b&pq)aqe3a9TkCmFDMGk2qq%"HEh*XqVLk9-A,*pAd(dpZSG2Q#&qCJP2\rX5cRMX'hX$'L5*+0!i`51"Yaj''JmqAJA#qUqe!P,MR-!NDje18N(qV3@5C1&B`D\rIqHRl9X2i2T6ZJH'e!jK,MY#3!+TSYiGI*AaPcjIbGE,pQ5[0Bk@%Ahrf#aQ$NkU\rd!GNU@XiVQ!T6'EHGZC4@(Qf-icF'*X1,1elXp1L)jmi`Y"F,'Fll%A@'$Mp1IT%\r4pZjYGj%b,8rhMFlIh1-NN!#MD$'mrpeRD+18mX9YJ+9kiQE-B&U''*jE1*6raUl\r$40TV"8Aj2`cF3YHakZ6%05+TZ8&#e4HlCpJjL2$)l&2RNVNKBEAbL2UqijV4C,4\r!9bq*`lQDp-&$iV8-!)S2)(el3Gp5lfekXY%TkcB%-PkqfD`DRD,R`APCTf%SkYi\rYkMk9pc01i''-FlHj6bF6QU%PJ+-@4DbAp91&Q,4`0mc1'1(,P6j)j1fMGbAf%BG\r,M8&e!2R'Uk,%Rcm9JkL53'"eTe@IXaCCY!0!33RNL)DY5CYmjN%VhK,U8GXFG+[\r8jmX*Z2'(9BE)F'c"[r"4(UF4E*Qa[Nk-j&"MM!B6UZ*0YpL'!+9)G*&k,&2l@&&\rAbpQL&q)IrbB+ED(J8lRM"*Ii6%VUADiNE'dVU'q%[LHeia*6Y%89acHSZLZH(mq\rI[jRmr6$mVc-RTPb8+)ZMjI@hNG(F0VT&bU@(Hq1!F"2j881[Z$Nm5SC@1$41qHC\rZ*B%dX0kZFfcHDPjCH`GJrbU5DkEdIaTUI+NaK"PdSmI[LPTLJ9IJ8KA#kV"2Uia\rKdERdQFN93d"lqUqXj@Mr+*qi6&"UECZ-#,*iEC&C`bZqlMfYpM(epQ)*%&C![LJ\rhPR8L[G0#*-Pj,5P*C$cF+BTi2&i!bX+hlrFri`8+M'SNkXcMM(Q3!%%A2MlD*28\rVCqT[JjMIq0PTUq0qPSAf4a0$XLC)-48j(c*)V1K5Pc(m%SGL+($j+p8S%dQ3!&Z\rlQ%+#S[eP8p$5$[$Vq)R)6HaCkZT5CT&*Rb,2I'PA"EVrJTPJKBE@Xi$J%rQAiUE\r$fqc2ald8l1R&r%FZ(Gq*VR(@l'M!MiUBId*-Kd&S!pP"YBNkYP[B[Z%YlT5SmY!\r2rJF43CSX-e@Gp1FDa-d'!JQ@al9raL0r$[fkG0#D5VmHClHGEqhD`fmVA[jC+rM\r(&qL@f"N"(1DT-#2bD)j)N3!`Tr&$Rep"LN@aR!Rl(5lcE1UYTUmcVKrX(f1)40K\rY4RQl"CKXF9C08YC(*$aR5a@QalMZGITR05QRZ"+h`52GmMN4pj6iXh*6MZFb8ke\rarcTIYkJ%@!F4TNFBfCKU#I3SZViZSKC0e*!!"cFIrhEC%XbSMX6jaS5&9#h@!`d\r[Y&`V)j*NiURXkhF0DP5e2dAG*Z,9N!$*D[l1$KF5SNi[b"J@Z2Di),1E93CDGmd\rGb1)8,k@iE`R'kNHkLYb%dGd34Y,C013(''CiPAT2BRL[dYPHEY6ZE'`i0f-mp)a\rX&[HT"f3K+8rfE`T!,%MI)YZKJqZ#ZDTfGRYe'+5[Ke+2E%ecBS3pPC!!rU*,drD\r&884$ZmbC%Y-Iea(IUfjblN-*cX2hB`Mr+aG#AhMaaJfKPbd5P[+H$9A'(jGqcQ-\r2pAc0'J[b`hF4+N1dYV[8#-aHm&FiqHbK`R8PpZ*be,`-[a"P"q1lcb$Z8I%0RA2\rX8bcClk*cpGU1Q5c6VI%#`63X"PYE,*Hi3bF21r2JTij#%Q3J'cij@e+-99)rZqB\r$DdVZbrG[S8$eBj!!@$Z3!%C,DD1H[Dr+iFXKGGD&**8$2mqBZG+M+&`P%``#e8Y\r13020cm&rj9ND(4q*S+D%eYGi'X(IT1lA+fV1,T!!6(fcKe2S6"!X-C-F-TqlSTB\rBJTb$,U'!bY8!!!:
\ No newline at end of file
diff --git a/src/macos/src/curl_GUSIConfig.cpp b/src/macos/src/curl_GUSIConfig.cpp
deleted file mode 100644 (file)
index fc9378a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/**************** BEGIN GUSI CONFIGURATION ****************************\r *\r * GUSI Configuration section generated by GUSI Configurator\r * last modified: Mon Oct 29 15:41:51 2001\r *\r * This section will be overwritten by the next run of Configurator.\r */\r\r#define GUSI_SOURCE\r#include <GUSIConfig.h>\r#include <sys/cdefs.h>\r\r/* Declarations of Socket Factories */\r\r__BEGIN_DECLS\rvoid GUSIwithInetSockets();\rvoid GUSIwithLocalSockets();\rvoid GUSIwithMTInetSockets();\rvoid GUSIwithMTTcpSockets();\rvoid GUSIwithMTUdpSockets();\rvoid GUSIwithOTInetSockets();\rvoid GUSIwithOTTcpSockets();\rvoid GUSIwithOTUdpSockets();\rvoid GUSIwithPPCSockets();\rvoid GUSISetupFactories();\r__END_DECLS\r\r/* Configure Socket Factories */\r\rvoid GUSISetupFactories()\r{\r#ifdef GUSISetupFactories_BeginHook\r       GUSISetupFactories_BeginHook\r#endif\r    GUSIwithInetSockets();\r#ifdef GUSISetupFactories_EndHook\r       GUSISetupFactories_EndHook\r#endif\r}\r\r/* Declarations of File Devices */\r\r__BEGIN_DECLS\rvoid GUSIwithNullSockets();\rvoid GUSISetupDevices();\r__END_DECLS\r\r/* Configure File Devices */\r\rvoid GUSISetupDevices()\r{\r#ifdef GUSISetupDevices_BeginHook\r     GUSISetupDevices_BeginHook\r#endif\r      GUSIwithNullSockets();\r#ifdef GUSISetupDevices_EndHook\r GUSISetupDevices_EndHook\r#endif\r}\r\r#ifndef __cplusplus\r#error GUSISetupConfig() needs to be written in C++\r#endif\r\rGUSIConfiguration::FileSuffix        sSuffices[] = {\r        "", '????', '????'\r};\r\rextern "C" void GUSISetupConfig()\r{\r     GUSIConfiguration * config =\r           GUSIConfiguration::CreateInstance(GUSIConfiguration::kNoResource);\r\r    config->ConfigureDefaultTypeCreator('TEXT', 'CWIE');\r   config->ConfigureSuffices(\r             sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices);\r}\r\r/**************** END GUSI CONFIGURATION *************************/\r
\ No newline at end of file
diff --git a/src/macos/src/macos_main.cpp b/src/macos/src/macos_main.cpp
deleted file mode 100644 (file)
index 51cf894..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* =========================================================================\r   Copyright (C) 2001 - 2020, Eric Lavigne\r\r   Permission is granted to anyone to use this software for any purpose on any\r   computer system, and to redistribute it freely, subject to the following\r   restrictions:\r   - The author is not responsible for the consequences of use of this\r   software, no matter how awful, even if they arise from defects in it.\r   - The origin of this software must not be misrepresented, either by\r   explicit claim or by omission.\r   - You are allowed to distributed modified copies of the software, in source\r   and binary form, provided they are marked plainly as altered versions, and\r   are not misrepresented as being the original software.\r   ========================================================================= */\r\r#include <stdlib.h>\r#include <string.h>\r#include <stdio.h>\r#include <Memory.h>\r#include <GUSICommandLine.h>\r#include <stdlib.h>\r\r/* ========================================================================= */\r\rDECLARE_MAIN(curl)\r\rREGISTER_MAIN_START\rREGISTER_MAIN(curl)\rREGISTER_MAIN_END\r\r/* ========================================================================= */\r\rint main()\r{\r  ::MaxApplZone();\r       for (int i = 1; i <= 10; i++)\r          ::MoreMasters();\r\r      (void) exec_commands();\r\r       return 0;\r}\r
\ No newline at end of file
index acc0aef151ede745bc3722de3d1de83a09e2f9c7..9aac7a0fb807d964bcf10c4ed185cec9a5630db4 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # curl Makefile for AmigaOS ...
@@ -29,7 +31,7 @@ ATCPSDKI= /GG/netinclude
 
 
 CC = m68k-amigaos-gcc
-CFLAGS  = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall
+CFLAGS  = -I$(ATCPSDKI) -m68020-60 -O2 -msoft-float -noixemul -g -I. -I../include -W -Wall -DUSE_OPENSSL -DHAVE_LIBZ
 LIBS    = ../lib/libcurl.a -lssl -lcrypto -lz
 MANPAGE = ../docs/curl.1
 README  = ../docs/MANUAL
index d92a5cd9cec077a150fad2934d78cee883caada3..84c127b07b89c57da91d67e7466c8ce003fa7d1e 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2003 - 2021, Gisle Vanem <gvanem@yahoo.no>.
+# Copyright (C) 2003 - 2022, Gisle Vanem <gvanem@yahoo.no>.
 # Copyright (C) 2003 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 #
index a52bf22be396a2dd66659cc62e11aa531c3088b6..bf146d7c9362eb32cda5c3f2e00d6df31f8679b9 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # Yeah, I know, probably 1000 other persons already wrote a script like
@@ -225,10 +227,6 @@ foot();
 
 sub foot {
   print <<FOOT
-#else /* !USE_MANUAL */
-/* built-in manual is disabled, blank function */
-#include "tool_hugehelp.h"
-void hugehelp(void) {}
 #endif /* USE_MANUAL */
 FOOT
   ;
index c1393eeb862f43c2feecc62122bcfeeb7d9c0d56..68021e61e06cd3c4c6f943c2188961b021682ae7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "tool_setup.h"
index dd7e0b5ea69d0a163ef1fdf9fe54934526215172..e309fd5a361bdaeb5648d42b4797aa06f1c7b52f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "tool_setup.h"
index f8559e778710561c06a03d2e555198a10e9ccfeb..68c6c367166485a963aff7eaaff147f4e92bb552 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 1d84cffbb6841edadbe9e9bb411c76a853af421b..0b3d24b38977ed8071643f87a780ee68bd31bd3f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index c1c3b0d4fc9c39c966ab468e3b0c0aabdb1bf0ca..e70f7d76ffff04c3e65ad221148e3a07fa1d7de2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 3a4ec96c2bb5d367b6641d6d569fb936e5f7bb66..0efd7f19cbdf25f68bca413c73b2eaf5030e0acc 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 6e82e385260a35f30a3c99568eabd4fed2fc59a6..c1dba85ab8ae3c623ad59da91768fb19c542b1e0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -26,7 +28,6 @@
 #include "curlx.h"
 
 #include "tool_cfgable.h"
-#include "tool_convert.h"
 #include "tool_msgs.h"
 #include "tool_cb_dbg.h"
 #include "tool_util.h"
@@ -162,29 +163,6 @@ int tool_debug_cb(CURL *handle, curl_infotype type,
     return 0;
   }
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Special processing is needed for CURLINFO_HEADER_OUT blocks
-   * if they contain both headers and data (separated by CRLFCRLF).
-   * We dump the header text and then switch type to CURLINFO_DATA_OUT.
-   */
-  if((type == CURLINFO_HEADER_OUT) && (size > 4)) {
-    size_t i;
-    for(i = 0; i < size - 4; i++) {
-      if(memcmp(&data[i], "\r\n\r\n", 4) == 0) {
-        /* dump everything through the CRLFCRLF as a sent header */
-        text = "=> Send header";
-        dump(timebuf, text, output, (unsigned char *)data, i + 4,
-             config->tracetype, type);
-        data += i + 3;
-        size -= i + 4;
-        type = CURLINFO_DATA_OUT;
-        data += 1;
-        break;
-      }
-    }
-  }
-#endif /* CURL_DOES_CONVERSIONS */
-
   switch(type) {
   case CURLINFO_TEXT:
     fprintf(output, "%s== Info: %.*s", timebuf, (int)size, data);
@@ -253,21 +231,9 @@ static void dump(const char *timebuf, const char *text,
         i += (c + 2 - width);
         break;
       }
-#ifdef CURL_DOES_CONVERSIONS
-      /* repeat the 0D0A check above but use the host encoding for CRLF */
-      if((tracetype == TRACE_ASCII) &&
-         (i + c + 1 < size) && (ptr[i + c] == '\r') &&
-         (ptr[i + c + 1] == '\n')) {
-        i += (c + 2 - width);
-        break;
-      }
-      /* convert to host encoding and print this character */
-      fprintf(stream, "%c", convert_char(infotype, ptr[i + c]));
-#else
       (void)infotype;
-      fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x80)) ?
+      fprintf(stream, "%c", ((ptr[i + c] >= 0x20) && (ptr[i + c] < 0x7F)) ?
               ptr[i + c] : UNPRINTABLE_CHAR);
-#endif /* CURL_DOES_CONVERSIONS */
       /* check again for 0D0A, to avoid an extra \n if it's at width */
       if((tracetype == TRACE_ASCII) &&
          (i + c + 2 < size) && (ptr[i + c + 1] == 0x0D) &&
index c3d3f7b777fc4531ac23a73540174b6812eed625..bc69e56604666c7d07ecfd2c96b0766adda76ab3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 67ea104471cc2916e644e654d130fa15f6ecb1d4..23700de222ac3b41073f402751dce68d67f1f9d3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -33,6 +35,7 @@
 #include "tool_cb_hdr.h"
 #include "tool_cb_wrt.h"
 #include "tool_operate.h"
+#include "tool_libinfo.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
@@ -47,6 +50,15 @@ static char *parse_filename(const char *ptr, size_t len);
    bold-off code (21) isn't supported everywhere - like in the mac
    Terminal. */
 #define BOLDOFF "\x1b[0m"
+/* OSC 8 hyperlink escape sequence */
+#define LINK "\x1b]8;;"
+#define LINKST "\x1b\\"
+#define LINKOFF LINK LINKST
+#endif
+
+#ifdef LINK
+static void write_linked_location(CURL *curl, const char *location,
+    size_t loclen, FILE *stream);
 #endif
 
 /*
@@ -63,7 +75,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
   const char *str = ptr;
   const size_t cb = size * nmemb;
   const char *end = (char *)ptr + cb;
-  long protocol = 0;
+  const char *scheme = NULL;
 
   /*
    * Once that libcurl has called back tool_header_cb() the returned value
@@ -105,7 +117,7 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
       const char *etag_h = &str[5];
       const char *eot = end - 1;
       if(*eot == '\n') {
-        while(ISSPACE(*etag_h) && (etag_h < eot))
+        while(ISBLANK(*etag_h) && (etag_h < eot))
           etag_h++;
         while(ISSPACE(*eot))
           eot--;
@@ -128,10 +140,11 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
    * Content-Disposition header specifying a filename property.
    */
 
-  curl_easy_getinfo(per->curl, CURLINFO_PROTOCOL, &protocol);
+  curl_easy_getinfo(per->curl, CURLINFO_SCHEME, &scheme);
+  scheme = proto_token(scheme);
   if(hdrcbdata->honor_cd_filename &&
      (cb > 20) && checkprefix("Content-disposition:", str) &&
-     (protocol & (CURLPROTO_HTTPS|CURLPROTO_HTTP))) {
+     (scheme == proto_http || scheme == proto_https)) {
     const char *p = str + 20;
 
     /* look for the 'filename=' parameter
@@ -191,8 +204,8 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
       per->was_last_header_empty = TRUE;
   }
   if(hdrcbdata->config->show_headers &&
-    (protocol &
-     (CURLPROTO_HTTP|CURLPROTO_HTTPS|CURLPROTO_RTSP|CURLPROTO_FILE))) {
+    (scheme == proto_http || scheme == proto_https ||
+     scheme == proto_rtsp || scheme == proto_file)) {
     /* bold headers only for selected protocols */
     char *value = NULL;
 
@@ -204,7 +217,16 @@ size_t tool_header_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
     if(value) {
       size_t namelen = value - ptr;
       fprintf(outs->stream, BOLD "%.*s" BOLDOFF ":", namelen, ptr);
+#ifndef LINK
       fwrite(&value[1], cb - namelen - 1, 1, outs->stream);
+#else
+      if(curl_strnequal("Location", ptr, namelen)) {
+        write_linked_location(per->curl, &value[1], cb - namelen - 1,
+            outs->stream);
+      }
+      else
+        fwrite(&value[1], cb - namelen - 1, 1, outs->stream);
+#endif
     }
     else
       /* not "handled", just show it */
@@ -311,3 +333,85 @@ static char *parse_filename(const char *ptr, size_t len)
 
   return copy;
 }
+
+#ifdef LINK
+/*
+ * Treat the Location: header specially, by writing a special escape
+ * sequence that adds a hyperlink to the displayed text. This makes
+ * the absolute URL of the redirect clickable in supported terminals,
+ * which couldn't happen otherwise for relative URLs. The Location:
+ * header is supposed to always be absolute so this theoretically
+ * shouldn't be needed but the real world returns plenty of relative
+ * URLs here.
+ */
+static
+void write_linked_location(CURL *curl, const char *location, size_t loclen,
+                           FILE *stream) {
+  /* This would so simple if CURLINFO_REDIRECT_URL were available here */
+  CURLU *u = NULL;
+  char *copyloc = NULL, *locurl = NULL, *scheme = NULL, *finalurl = NULL;
+  const char *loc = location;
+  size_t llen = loclen;
+
+  /* Strip leading whitespace of the redirect URL */
+  while(llen && *loc == ' ') {
+    ++loc;
+    --llen;
+  }
+
+  /* Strip the trailing end-of-line characters, normally "\r\n" */
+  while(llen && (loc[llen-1] == '\n' || loc[llen-1] == '\r'))
+    --llen;
+
+  /* CURLU makes it easy to handle the relative URL case */
+  u = curl_url();
+  if(!u)
+    goto locout;
+
+  /* Create a NUL-terminated and whitespace-stripped copy of Location: */
+  copyloc = malloc(llen + 1);
+  if(!copyloc)
+    goto locout;
+  memcpy(copyloc, loc, llen);
+  copyloc[llen] = 0;
+
+  /* The original URL to use as a base for a relative redirect URL */
+  if(curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &locurl))
+    goto locout;
+  if(curl_url_set(u, CURLUPART_URL, locurl, 0))
+    goto locout;
+
+  /* Redirected location. This can be either absolute or relative. */
+  if(curl_url_set(u, CURLUPART_URL, copyloc, 0))
+    goto locout;
+
+  if(curl_url_get(u, CURLUPART_URL, &finalurl, CURLU_NO_DEFAULT_PORT))
+    goto locout;
+
+  if(curl_url_get(u, CURLUPART_SCHEME, &scheme, 0))
+    goto locout;
+
+  if(!strcmp("http", scheme) ||
+     !strcmp("https", scheme) ||
+     !strcmp("ftp", scheme) ||
+     !strcmp("ftps", scheme)) {
+    fprintf(stream, LINK "%s" LINKST "%.*s" LINKOFF,
+            finalurl, loclen, location);
+    goto locdone;
+  }
+
+  /* Not a "safe" URL: don't linkify it */
+
+locout:
+  /* Write the normal output in case of error or unsafe */
+  fwrite(location, loclen, 1, stream);
+
+locdone:
+  if(u) {
+    curl_free(finalurl);
+    curl_free(scheme);
+    curl_url_cleanup(u);
+    free(copyloc);
+  }
+}
+#endif
index 6bb2153b2ed30c54e0edee153828d720fb226396..01175bb6ab7c151718db467fd49b635002828ac5 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 2a23fd91174b5da240407efc6f3ba693a515f10f..3532c31bc1f58de0ed07b478ae7d54bc8bad7931 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index a6fab323a2b5cf7e329ebefcc9f70a11a5c08676..7d8fbae8f91b9121bda6ae315c6593c769bcbfc9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 507373d8fb85dcc3650b6d1e621bc7ba7af55951..4aed55c3aa3ea4a3b731e6195ef873607180ff6c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 0e5ad470d5812e4136a18dcd278177468e389210..81b5f871a5bc98f97fccd698df69b596620a7a12 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index c158c8dffbcf97fa05bae8e4cf2a1b9985b1046d..d24d52651836e5568f65a51e5bcba9459afbe207 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index edaf8180837637e371c32fbf3f08f16c7291e3a4..4af0b0ab4088925434238c244879093ceedd1a96 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index d5e96aa0b9eccf5b6564e046e0a1a32bb5ff306d..c9d1dbd1d2809e2930a9eb90a886bc16f24f19f2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
 #define OPENMODE S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
 #endif
 
-/* create a local file for writing, return TRUE on success */
+/* create/open a local file for writing, return TRUE on success */
 bool tool_create_output_file(struct OutStruct *outs,
                              struct OperationConfig *config)
 {
   struct GlobalConfig *global;
   FILE *file = NULL;
+  char *fname = outs->filename;
+  char *aname = NULL;
   DEBUGASSERT(outs);
   DEBUGASSERT(config);
   global = config->global;
-  if(!outs->filename || !*outs->filename) {
+  if(!fname || !*fname) {
     warnf(global, "Remote filename has no length!\n");
     return FALSE;
   }
 
-  if(outs->is_cd_filename) {
-    /* don't overwrite existing files */
+  if(config->output_dir && outs->is_cd_filename) {
+    aname = aprintf("%s/%s", config->output_dir, fname);
+    if(!aname) {
+      errorf(global, "out of memory\n");
+      return FALSE;
+    }
+    fname = aname;
+  }
+
+  if(config->file_clobber_mode == CLOBBER_ALWAYS ||
+     (config->file_clobber_mode == CLOBBER_DEFAULT &&
+      !outs->is_cd_filename)) {
+    /* open file for writing */
+    file = fopen(fname, "wb");
+  }
+  else {
     int fd;
-    char *name = outs->filename;
-    char *aname = NULL;
-    if(config->output_dir) {
-      aname = aprintf("%s/%s", config->output_dir, name);
-      if(!aname) {
+    do {
+      fd = open(fname, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+      /* Keep retrying in the hope that it isn't interrupted sometime */
+    } while(fd == -1 && errno == EINTR);
+    if(config->file_clobber_mode == CLOBBER_NEVER && fd == -1) {
+      int next_num = 1;
+      size_t len = strlen(fname);
+      size_t newlen = len + 13; /* nul + 1-11 digits + dot */
+      char *newname;
+      /* Guard against wraparound in new filename */
+      if(newlen < len) {
+        free(aname);
+        errorf(global, "overflow in filename generation\n");
+        return FALSE;
+      }
+      newname = malloc(newlen);
+      if(!newname) {
         errorf(global, "out of memory\n");
+        free(aname);
         return FALSE;
       }
-      name = aname;
+      memcpy(newname, fname, len);
+      newname[len] = '.';
+      while(fd == -1 && /* haven't successfully opened a file */
+            (errno == EEXIST || errno == EISDIR) &&
+            /* because we keep having files that already exist */
+            next_num < 100 /* and we haven't reached the retry limit */ ) {
+        curlx_msnprintf(newname + len + 1, 12, "%d", next_num);
+        next_num++;
+        do {
+          fd = open(newname, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+          /* Keep retrying in the hope that it isn't interrupted sometime */
+        } while(fd == -1 && errno == EINTR);
+      }
+      outs->filename = newname; /* remember the new one */
+      outs->alloc_filename = TRUE;
     }
-    fd = open(name, O_CREAT | O_WRONLY | O_EXCL | O_BINARY, OPENMODE);
+    /* An else statement to not overwrite existing files and not retry with
+       new numbered names (which would cover
+       config->file_clobber_mode == CLOBBER_DEFAULT && outs->is_cd_filename)
+       is not needed because we would have failed earlier, in the while loop
+       and `fd` would now be -1 */
     if(fd != -1) {
       file = fdopen(fd, "wb");
       if(!file)
         close(fd);
     }
-    free(aname);
   }
-  else
-    /* open file for writing */
-    file = fopen(outs->filename, "wb");
 
   if(!file) {
-    warnf(global, "Failed to create the file %s: %s\n", outs->filename,
+    warnf(global, "Failed to open the file %s: %s\n", fname,
           strerror(errno));
+    free(aname);
     return FALSE;
   }
+  free(aname);
   outs->s_isreg = TRUE;
   outs->fopened = TRUE;
   outs->stream = file;
@@ -187,7 +234,7 @@ size_t tool_write_cb(char *buffer, size_t sz, size_t nmemb, void *userdata)
       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");
-      config->synthetic_error = ERR_BINARY_TERMINAL;
+      config->synthetic_error = TRUE;
       return failure;
     }
   }
index 95a11ebbed7c980f3cb4021b95ab57a939229fd0..0cbbceefe68199c5df77987adbcac1ccba61822e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 34e17ce55b043fa419bdce715e65178ed6bc45cc..eccb3bcb59567abed6bea0670e2176e0a6191514 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -34,25 +36,20 @@ void config_init(struct OperationConfig *config)
   config->use_httpget = FALSE;
   config->create_dirs = FALSE;
   config->maxredirs = DEFAULT_MAXREDIRS;
-  config->proto = CURLPROTO_ALL;
   config->proto_present = FALSE;
-  config->proto_redir = CURLPROTO_ALL & /* All except FILE, SCP and SMB */
-    ~(CURLPROTO_FILE | CURLPROTO_SCP | CURLPROTO_SMB |
-      CURLPROTO_SMBS);
   config->proto_redir_present = FALSE;
   config->proto_default = NULL;
   config->tcp_nodelay = TRUE; /* enabled by default */
   config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
   config->http09_allowed = FALSE;
   config->ftp_skip_ip = TRUE;
+  config->file_clobber_mode = CLOBBER_DEFAULT;
 }
 
 static void free_config_fields(struct OperationConfig *config)
 {
   struct getout *urlnode;
 
-  Curl_safefree(config->random_file);
-  Curl_safefree(config->egd_file);
   Curl_safefree(config->useragent);
   Curl_safefree(config->altsvc);
   Curl_safefree(config->hsts);
@@ -171,6 +168,8 @@ static void free_config_fields(struct OperationConfig *config)
   Curl_safefree(config->ftp_alternative_to_user);
 
   Curl_safefree(config->aws_sigv4);
+  Curl_safefree(config->proto_str);
+  Curl_safefree(config->proto_redir_str);
 }
 
 void config_free(struct OperationConfig *config)
index 227b914e3379040a3ef3e9e643f0c478fb22d406..c26cddd5e0c206cb470e1a15ded176d606c41671 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_sdecls.h"
 #include "tool_urlglob.h"
 #include "tool_formparse.h"
 
-typedef enum {
-  ERR_NONE,
-  ERR_BINARY_TERMINAL = 1, /* binary to terminal detected */
-  ERR_LAST
-} curl_error;
-
 struct GlobalConfig;
 
 struct State {
@@ -50,8 +46,6 @@ struct State {
 
 struct OperationConfig {
   bool remote_time;
-  char *random_file;
-  char *egd_file;
   char *useragent;
   struct curl_slist *cookies;  /* cookies to serialize into a single line */
   char *cookiejar;          /* write to this file */
@@ -67,9 +61,9 @@ struct OperationConfig {
   bool disable_epsv;
   bool disable_eprt;
   bool ftp_pret;
-  long proto;
+  char *proto_str;
   bool proto_present;
-  long proto_redir;
+  char *proto_redir_str;
   bool proto_redir_present;
   char *proto_default;
   curl_off_t resume_from;
@@ -110,7 +104,7 @@ struct OperationConfig {
   struct curl_slist *mail_rcpt;
   char *mail_auth;
   bool mail_rcpt_allowfails; /* --mail-rcpt-allowfails */
-  char *sasl_authzid;       /* Authorisation identity (identity to use) */
+  char *sasl_authzid;       /* Authorization identity (identity to use) */
   bool sasl_ir;             /* Enable/disable SASL initial response */
   bool proxytunnel;
   bool ftp_append;          /* APPE on ftp */
@@ -189,6 +183,7 @@ struct OperationConfig {
   bool proxydigest;
   bool proxybasic;
   bool proxyanyauth;
+  bool jsoned; /* added json content-type */
   char *writeout;           /* %-styled format string to output */
   struct curl_slist *quote;
   struct curl_slist *postquote;
@@ -272,7 +267,6 @@ struct OperationConfig {
                                   certificate for authentication (Schannel) */
   bool proxy_ssl_auto_client_cert; /* proxy version of ssl_auto_client_cert */
   char *oauth_bearer;             /* OAuth 2.0 bearer token */
-  bool nonpn;                     /* enable/disable TLS NPN extension */
   bool noalpn;                    /* enable/disable TLS ALPN extension */
   char *unix_socket_path;         /* path to Unix domain socket */
   bool abstract_unix_socket;      /* path to an abstract Unix domain socket */
@@ -281,18 +275,28 @@ struct OperationConfig {
   double expect100timeout;
   bool suppress_connect_headers;  /* suppress proxy CONNECT response headers
                                      from user callbacks */
-  curl_error synthetic_error;     /* if non-zero, it overrides any libcurl
-                                     error */
+  bool synthetic_error;           /* if TRUE, this is tool-internal error */
   bool ssh_compression;           /* enable/disable SSH compression */
   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 */
   bool disallow_username_in_url;  /* disallow usernames in URLs */
   char *aws_sigv4;
+  enum {
+    CLOBBER_DEFAULT, /* Provides compatibility with previous versions of curl,
+                        by using the default behavior for -o, -O, and -J.
+                        If those options would have overwritten files, like
+                        -o and -O would, then overwrite them. In the case of
+                        -J, this will not overwrite any files. */
+    CLOBBER_NEVER, /* If the file exists, always fail */
+    CLOBBER_ALWAYS /* If the file exists, always overwrite it */
+  } file_clobber_mode;
   struct GlobalConfig *global;
   struct OperationConfig *prev;
   struct OperationConfig *next;   /* Always last in the struct */
   struct State state;             /* for create_transfer() */
+  bool rm_partial;                /* on error, remove partially written output
+                                     files */
 };
 
 struct GlobalConfig {
@@ -313,6 +317,8 @@ struct GlobalConfig {
   char *libcurl;                  /* Output libcurl code to this file name */
   bool fail_early;                /* exit on first transfer error */
   bool styled_output;             /* enable fancy output style detection */
+  long ms_per_transfer;           /* start next transfer after (at least) this
+                                     many milliseconds */
 #ifdef CURLDEBUG
   bool test_event_based;
 #endif
diff --git a/src/tool_convert.c b/src/tool_convert.c
deleted file mode 100644 (file)
index 04818e9..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2021, 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.
- *
- ***************************************************************************/
-#include "tool_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-#ifdef HAVE_ICONV
-#  include <iconv.h>
-#endif
-
-#include "tool_convert.h"
-
-#include "memdebug.h" /* keep this as LAST include */
-
-#ifdef HAVE_ICONV
-
-/* curl tool iconv conversion descriptors */
-static iconv_t inbound_cd  = (iconv_t)-1;
-static iconv_t outbound_cd = (iconv_t)-1;
-
-/* set default codesets for iconv */
-#ifndef CURL_ICONV_CODESET_OF_NETWORK
-#  define CURL_ICONV_CODESET_OF_NETWORK "ISO8859-1"
-#endif
-
-/*
- * convert_to_network() is a curl tool function to convert
- * from the host encoding to ASCII on non-ASCII platforms.
- */
-CURLcode convert_to_network(char *buffer, size_t length)
-{
-  /* translate from the host encoding to the network encoding */
-  char *input_ptr, *output_ptr;
-  size_t res, in_bytes, out_bytes;
-
-  /* open an iconv conversion descriptor if necessary */
-  if(outbound_cd == (iconv_t)-1) {
-    outbound_cd = iconv_open(CURL_ICONV_CODESET_OF_NETWORK,
-                             CURL_ICONV_CODESET_OF_HOST);
-    if(outbound_cd == (iconv_t)-1) {
-      return CURLE_CONV_FAILED;
-    }
-  }
-  /* call iconv */
-  input_ptr = output_ptr = buffer;
-  in_bytes = out_bytes = length;
-  res = iconv(outbound_cd, &input_ptr,  &in_bytes,
-              &output_ptr, &out_bytes);
-  if((res == (size_t)-1) || (in_bytes)) {
-    return CURLE_CONV_FAILED;
-  }
-
-  return CURLE_OK;
-}
-
-/*
- * convert_from_network() is a curl tool function
- * for performing ASCII conversions on non-ASCII platforms.
- */
-CURLcode convert_from_network(char *buffer, size_t length)
-{
-  /* translate from the network encoding to the host encoding */
-  char *input_ptr, *output_ptr;
-  size_t res, in_bytes, out_bytes;
-
-  /* open an iconv conversion descriptor if necessary */
-  if(inbound_cd == (iconv_t)-1) {
-    inbound_cd = iconv_open(CURL_ICONV_CODESET_OF_HOST,
-                            CURL_ICONV_CODESET_OF_NETWORK);
-    if(inbound_cd == (iconv_t)-1) {
-      return CURLE_CONV_FAILED;
-    }
-  }
-  /* call iconv */
-  input_ptr = output_ptr = buffer;
-  in_bytes = out_bytes = length;
-  res = iconv(inbound_cd, &input_ptr,  &in_bytes,
-              &output_ptr, &out_bytes);
-  if((res == (size_t)-1) || (in_bytes)) {
-    return CURLE_CONV_FAILED;
-  }
-
-  return CURLE_OK;
-}
-
-void convert_cleanup(void)
-{
-  /* close iconv conversion descriptors */
-  if(inbound_cd != (iconv_t)-1)
-    (void)iconv_close(inbound_cd);
-  if(outbound_cd != (iconv_t)-1)
-    (void)iconv_close(outbound_cd);
-}
-
-#endif /* HAVE_ICONV */
-
-char convert_char(curl_infotype infotype, char this_char)
-{
-/* determine how this specific character should be displayed */
-  switch(infotype) {
-  case CURLINFO_DATA_IN:
-  case CURLINFO_DATA_OUT:
-  case CURLINFO_SSL_DATA_IN:
-  case CURLINFO_SSL_DATA_OUT:
-    /* data, treat as ASCII */
-    if(this_char < 0x20 || this_char >= 0x7f) {
-      /* non-printable ASCII, use a replacement character */
-      return UNPRINTABLE_CHAR;
-    }
-    /* printable ASCII hex value: convert to host encoding */
-    (void)convert_from_network(&this_char, 1);
-    /* FALLTHROUGH */
-  default:
-    /* treat as host encoding */
-    if(ISPRINT(this_char)
-       &&  (this_char != '\t')
-       &&  (this_char != '\r')
-       &&  (this_char != '\n')) {
-      /* printable characters excluding tabs and line end characters */
-      return this_char;
-    }
-    break;
-  }
-  /* non-printable, use a replacement character  */
-  return UNPRINTABLE_CHAR;
-}
-
-#endif /* CURL_DOES_CONVERSIONS */
diff --git a/src/tool_convert.h b/src/tool_convert.h
deleted file mode 100644 (file)
index 59db764..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef HEADER_CURL_TOOL_CONVERT_H
-#define HEADER_CURL_TOOL_CONVERT_H
-/***************************************************************************
- *                                  _   _ ____  _
- *  Project                     ___| | | |  _ \| |
- *                             / __| | | | |_) | |
- *                            | (__| |_| |  _ <| |___
- *                             \___|\___/|_| \_\_____|
- *
- * Copyright (C) 1998 - 2020, 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.
- *
- ***************************************************************************/
-#include "tool_setup.h"
-
-#ifdef CURL_DOES_CONVERSIONS
-
-#ifdef HAVE_ICONV
-
-CURLcode convert_to_network(char *buffer, size_t length);
-CURLcode convert_from_network(char *buffer, size_t length);
-void convert_cleanup(void);
-
-#endif /* HAVE_ICONV */
-
-char convert_char(curl_infotype infotype, char this_char);
-
-#endif /* CURL_DOES_CONVERSIONS */
-
-#if !defined(CURL_DOES_CONVERSIONS) || !defined(HAVE_ICONV)
-#define convert_cleanup() Curl_nop_stmt
-#endif
-
-#endif /* HEADER_CURL_TOOL_CONVERT_H */
index 93882d9b28f3b7faa284ca376f775cd7fef6d11b..1b6ac17480f1532f4ac475519224293afdd2b1cc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index c0ef1fcda236a90977afe5355c169c00b0259c76..954f3e24889fe36a4aa77f279ddaf28dbea5a40f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 2390fab7f8d7a347849991bb885a5068169ff07c..d8695e93c211af947dee7a10c42b6e99ec0a9798 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -635,12 +637,11 @@ CURLcode FindWin32CACert(struct OperationConfig *config,
 
     res_len = SearchPath(NULL, bundle_file, NULL, PATH_MAX, buf, &ptr);
     if(res_len > 0) {
+      char *mstr = curlx_convert_tchar_to_UTF8(buf);
       Curl_safefree(config->cacert);
-#ifdef UNICODE
-      config->cacert = curlx_convert_wchar_to_UTF8(buf);
-#else
-      config->cacert = strdup(buf);
-#endif
+      if(mstr)
+        config->cacert = strdup(mstr);
+      curlx_unicodefree(mstr);
       if(!config->cacert)
         result = CURLE_OUT_OF_MEMORY;
     }
index ecf952b796c81cc027d408246b08be0a595a611a..ff9bad97eb4b2b42ae0f01722d36de9b312ca9d1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 85a586d9d64e1eea9e8fe5fef3025142a3c9db3d..e653b3117035c9c766b7d13ebda6d356cd8eca95 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -59,7 +61,7 @@ static const char *const srchead[]={
   NULL
 };
 /* easysrc_decl declarations come here */
-/* easysrc_data initialisations come here */
+/* easysrc_data initialization come here */
 /* easysrc_code statements come here */
 static const char *const srchard[]={
   "/* Here is a list of options the curl code used that cannot get generated",
index 86bdfa26ef982daa9f830fbf66bdd60810106613..ec2fdd23f05701bf156d1149a13691c94b72b4c0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #ifndef CURL_DISABLE_LIBCURL_OPTION
@@ -44,6 +46,13 @@ extern CURLcode easysrc_cleanup(void);
 
 void dumpeasysrc(struct GlobalConfig *config);
 
+#else /* CURL_DISABLE_LIBCURL_OPTION is defined */
+
+#define easysrc_init() CURLE_OK
+#define easysrc_cleanup()
+#define dumpeasysrc(x)
+#define easysrc_perform(x) CURLE_OK
+
 #endif /* CURL_DISABLE_LIBCURL_OPTION */
 
 #endif /* HEADER_CURL_TOOL_EASYSRC_H */
index 57ff0c2d9d87dd778e233cb2999539fd347fd935..c095a49eee9ede633dc0753d3f4254091431f549 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_filetime.h"
 #include "tool_cfgable.h"
index f3883d2c531aa722edd56a910e1cd52d96ce2ac1..3d88d8913b61938ae8bf63c2cf27dfdef67d89c3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index cda8c8ed8d8fac156b5a00dca3bd08a817078025..51a45ff3a02b8608c8cb9cf49ad76bf63cbd0ddf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
 struct finder {
   const char *env;
   const char *append;
+  bool withoutdot;
 };
 
+/* The order of the variables below is important, as the index number is used
+   in the findfile() function */
 static const struct finder list[] = {
-  { "CURL_HOME", NULL },
-  { "XDG_CONFIG_HOME", NULL },
-  { "HOME", NULL },
+  { "CURL_HOME", NULL, FALSE },
+  { "XDG_CONFIG_HOME", NULL, FALSE }, /* index == 1, used in the code */
+  { "HOME", NULL, FALSE },
 #ifdef WIN32
-  { "USERPROFILE", NULL },
-  { "APPDATA", NULL },
-  { "USERPROFILE", "\\Application Data"},
+  { "USERPROFILE", NULL, FALSE },
+  { "APPDATA", NULL, FALSE },
+  { "USERPROFILE", "\\Application Data", FALSE},
 #endif
-  { NULL, NULL }
+  /* these are for .curlrc if XDG_CONFIG_HOME is not defined */
+  { "CURL_HOME", "/.config", TRUE },
+  { "HOME", "/.config", TRUE },
+
+  { NULL, NULL, FALSE }
 };
 
 static char *checkhome(const char *home, const char *fname, bool dotscore)
@@ -90,11 +99,12 @@ static char *checkhome(const char *home, const char *fname, bool dotscore)
  *    the given file to be accessed there, then it is a match.
  * 2. Non-windows: try getpwuid
  */
-char *findfile(const char *fname, bool dotscore)
+char *findfile(const char *fname, int dotscore)
 {
   int i;
+  bool xdg = FALSE;
   DEBUGASSERT(fname && fname[0]);
-  DEBUGASSERT(!dotscore || (fname[0] == '.'));
+  DEBUGASSERT((dotscore != 1) || (fname[0] == '.'));
 
   if(!fname[0])
     return NULL;
@@ -103,6 +113,9 @@ char *findfile(const char *fname, bool dotscore)
     char *home = curl_getenv(list[i].env);
     if(home) {
       char *path;
+      const char *filename = fname;
+      if(i == 1 /* XDG_CONFIG_HOME */)
+        xdg = TRUE;
       if(!home[0]) {
         curl_free(home);
         continue;
@@ -114,7 +127,17 @@ char *findfile(const char *fname, bool dotscore)
           return NULL;
         home = c;
       }
-      path = checkhome(home, fname, dotscore);
+      if(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 */
+          curl_free(home);
+          continue;
+        }
+        filename++; /* move past the leading dot */
+        dotscore = 0; /* disable it for this check */
+      }
+      path = checkhome(home, filename, dotscore ? dotscore - 1 : 0);
       curl_free(home);
       if(path)
         return path;
index 0f6a8eb55b52f9f4847d86f28b2e6d85f3d89cb6..5bae579e148e78c518008bdac488087be075be00 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
-char *findfile(const char *fname, bool dotscore);
+#ifdef WIN32
+#define CURLRC_DOTSCORE 2 /* look for underscore-prefixed name too */
+#else
+#define CURLRC_DOTSCORE 1 /* regular .curlrc check */
+#endif
+
+char *findfile(const char *fname, int dotscore);
 
 #endif /* HEADER_CURL_TOOL_HOMEDIR_H */
index 3661a979e4790b51f80b6762bd4fe242e6e90038..d4fc651e252c2cb9e8d09c9610ff4d1b42f78706 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -28,7 +30,6 @@
 #include "curlx.h"
 
 #include "tool_cfgable.h"
-#include "tool_convert.h"
 #include "tool_msgs.h"
 #include "tool_binmode.h"
 #include "tool_getparam.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
-/* Macros to free const pointers. */
-#define CONST_FREE(x)           free((void *) (x))
-#define CONST_SAFEFREE(x)       Curl_safefree(*((void **) &(x)))
-
 /* tool_mime functions. */
 static struct tool_mime *tool_mime_new(struct tool_mime *parent,
                                        toolmimekind kind)
@@ -64,7 +61,7 @@ static struct tool_mime *tool_mime_new_parts(struct tool_mime *parent)
 }
 
 static struct tool_mime *tool_mime_new_data(struct tool_mime *parent,
-                                            const char *data)
+                                            char *data)
 {
   struct tool_mime *m = NULL;
 
@@ -72,7 +69,7 @@ static struct tool_mime *tool_mime_new_data(struct tool_mime *parent,
   if(data) {
     m = tool_mime_new(parent, TOOLMIME_DATA);
     if(!m)
-      CONST_FREE(data);
+      free(data);
     else
       m->data = data;
   }
@@ -90,13 +87,13 @@ static struct tool_mime *tool_mime_new_filedata(struct tool_mime *parent,
   *errcode = CURLE_OUT_OF_MEMORY;
   if(strcmp(filename, "-")) {
     /* This is a normal file. */
-    filename = strdup(filename);
-    if(filename) {
+    char *filedup = strdup(filename);
+    if(filedup) {
       m = tool_mime_new(parent, TOOLMIME_FILE);
       if(!m)
-        CONST_FREE(filename);
+        free(filedup);
       else {
-        m->data = filename;
+        m->data = filedup;
         if(!isremotefile)
           m->kind = TOOLMIME_FILEDATA;
        *errcode = CURLE_OK;
@@ -126,21 +123,20 @@ static struct tool_mime *tool_mime_new_filedata(struct tool_mime *parent,
     else {  /* Not suitable for direct use, buffer stdin data. */
       size_t stdinsize = 0;
 
-      if(file2memory(&data, &stdinsize, stdin) != PARAM_OK) {
-        /* Out of memory. */
+      switch(file2memory(&data, &stdinsize, stdin)) {
+      case PARAM_NO_MEM:
         return m;
-      }
-
-      if(ferror(stdin)) {
+      case PARAM_READ_ERROR:
         result = CURLE_READ_ERROR;
-        Curl_safefree(data);
-        data = NULL;
-      }
-      else if(!stdinsize) {
-        /* Zero-length data has been freed. Re-create it. */
-        data = strdup("");
-        if(!data)
-          return m;
+        break;
+      default:
+        if(!stdinsize) {
+          /* Zero-length data has been freed. Re-create it. */
+          data = strdup("");
+          if(!data)
+            return m;
+        }
+        break;
       }
       size = curlx_uztoso(stdinsize);
       origin = 0;
@@ -168,11 +164,11 @@ void tool_mime_free(struct tool_mime *mime)
       tool_mime_free(mime->subparts);
     if(mime->prev)
       tool_mime_free(mime->prev);
-    CONST_SAFEFREE(mime->name);
-    CONST_SAFEFREE(mime->filename);
-    CONST_SAFEFREE(mime->type);
-    CONST_SAFEFREE(mime->encoder);
-    CONST_SAFEFREE(mime->data);
+    Curl_safefree(mime->name);
+    Curl_safefree(mime->filename);
+    Curl_safefree(mime->type);
+    Curl_safefree(mime->encoder);
+    Curl_safefree(mime->data);
     curl_slist_free_all(mime->headers);
     free(mime);
   }
@@ -268,25 +264,7 @@ static CURLcode tool2curlparts(CURL *curl, struct tool_mime *m,
         break;
 
       case TOOLMIME_DATA:
-#ifdef CURL_DOES_CONVERSIONS
-        /* Our data is always textual: convert it to ASCII. */
-        {
-          size_t size = strlen(m->data);
-          char *cp = malloc(size + 1);
-
-          if(!cp)
-            ret = CURLE_OUT_OF_MEMORY;
-          else {
-            memcpy(cp, m->data, size + 1);
-            ret = convert_to_network(cp, size);
-            if(!ret)
-              ret = curl_mime_data(part, cp, CURL_ZERO_TERMINATED);
-            free(cp);
-          }
-        }
-#else
         ret = curl_mime_data(part, m->data, CURL_ZERO_TERMINATED);
-#endif
         break;
 
       case TOOLMIME_FILE:
@@ -427,7 +405,7 @@ static int read_field_headers(struct OperationConfig *config,
   size_t pos = 0;
   bool incomment = FALSE;
   int lineno = 1;
-  char hdrbuf[999]; /* Max. header length + 1. */
+  char hdrbuf[999] = ""; /* Max. header length + 1. */
 
   for(;;) {
     int c = getc(fp);
@@ -517,7 +495,7 @@ static int get_param_part(struct OperationConfig *config, char endchar,
   sep = *p;
   *endpos = '\0';
   while(sep == ';') {
-    while(ISSPACE(*++p))
+    while(p++ && ISSPACE(*p))
       ;
 
     if(!endct && checkprefix("type=", p)) {
@@ -727,24 +705,15 @@ static int get_param_part(struct OperationConfig *config, char endchar,
  *
  ***************************************************************************/
 
-/* Convenience macros for null pointer check. */
-#define NULL_CHECK(ptr, init, retcode)                                  \
+#define SET_TOOL_MIME_PTR(m, field)                                     \
   do {                                                                  \
-    (ptr) = (init);                                                     \
-    if(!(ptr)) {                                                        \
-      warnf(config->global, "out of memory!\n");                        \
-      curl_slist_free_all(headers);                                     \
-      Curl_safefree(contents);                                          \
-      return retcode;                                                   \
+    if(field) {                                                         \
+      (m)->field = strdup(field);                                       \
+      if(!(m)->field)                                                   \
+        goto fail;                                                      \
     }                                                                   \
   } while(0)
 
-#define SET_TOOL_MIME_PTR(m, field, retcode)                            \
-  do {                                                                  \
-    if(field)                                                           \
-      NULL_CHECK((m)->field, strdup(field), retcode);                   \
-  } while(0)
-
 int formparse(struct OperationConfig *config,
               const char *input,
               struct tool_mime **mimeroot,
@@ -763,15 +732,20 @@ int formparse(struct OperationConfig *config,
   struct curl_slist *headers = NULL;
   struct tool_mime *part = NULL;
   CURLcode res;
+  int err = 1;
 
   /* Allocate the main mime structure if needed. */
   if(!*mimecurrent) {
-    NULL_CHECK(*mimeroot, tool_mime_new_parts(NULL), 1);
+    *mimeroot = tool_mime_new_parts(NULL);
+    if(!*mimeroot)
+      goto fail;
     *mimecurrent = *mimeroot;
   }
 
   /* Make a copy we can overwrite. */
-  NULL_CHECK(contents, strdup(input), 2);
+  contents = strdup(input);
+  if(!contents)
+    goto fail;
 
   /* Scan for the end of the name. */
   contp = strchr(contents, '=');
@@ -785,23 +759,22 @@ int formparse(struct OperationConfig *config,
       /* Starting a multipart. */
       sep = get_param_part(config, '\0',
                            &contp, &data, &type, NULL, NULL, &headers);
-      if(sep < 0) {
-        Curl_safefree(contents);
-        return 3;
-      }
-      NULL_CHECK(part, tool_mime_new_parts(*mimecurrent), 4);
+      if(sep < 0)
+        goto fail;
+      part = tool_mime_new_parts(*mimecurrent);
+      if(!part)
+        goto fail;
       *mimecurrent = part;
       part->headers = headers;
       headers = NULL;
-      SET_TOOL_MIME_PTR(part, type, 5);
+      SET_TOOL_MIME_PTR(part, type);
     }
     else if(!name && !strcmp(contp, ")") && !literal_value) {
       /* Ending a multipart. */
       if(*mimecurrent == *mimeroot) {
         warnf(config->global, "no multipart to terminate!\n");
-        Curl_safefree(contents);
-        return 6;
-        }
+        goto fail;
+      }
       *mimecurrent = (*mimecurrent)->parent;
     }
     else if('@' == contp[0] && !literal_value) {
@@ -817,8 +790,7 @@ int formparse(struct OperationConfig *config,
         sep = get_param_part(config, ',', &contp,
                              &data, &type, &filename, &encoder, &headers);
         if(sep < 0) {
-          Curl_safefree(contents);
-          return 7;
+          goto fail;
         }
 
         /* now contp point to comma or string end.
@@ -826,13 +798,17 @@ int formparse(struct OperationConfig *config,
         if(!subparts) {
           if(sep != ',')    /* If there is a single file. */
             subparts = *mimecurrent;
-          else
-            NULL_CHECK(subparts, tool_mime_new_parts(*mimecurrent), 8);
+          else {
+            subparts = tool_mime_new_parts(*mimecurrent);
+            if(!subparts)
+              goto fail;
+          }
         }
 
         /* Store that file in a part. */
-        NULL_CHECK(part,
-                   tool_mime_new_filedata(subparts, data, TRUE, &res), 9);
+        part = tool_mime_new_filedata(subparts, data, TRUE, &res);
+        if(!part)
+          goto fail;
         part->headers = headers;
         headers = NULL;
         part->config = config->global;
@@ -843,17 +819,16 @@ int formparse(struct OperationConfig *config,
           if(part->size > 0) {
             warnf(config->global,
                   "error while reading standard input\n");
-            Curl_safefree(contents);
-            return 10;
+            goto fail;
           }
-          CONST_SAFEFREE(part->data);
+          Curl_safefree(part->data);
           part->data = NULL;
           part->size = -1;
           res = CURLE_OK;
         }
-        SET_TOOL_MIME_PTR(part, filename, 11);
-        SET_TOOL_MIME_PTR(part, type, 12);
-        SET_TOOL_MIME_PTR(part, encoder, 13);
+        SET_TOOL_MIME_PTR(part, filename);
+        SET_TOOL_MIME_PTR(part, type);
+        SET_TOOL_MIME_PTR(part, encoder);
 
         /* *contp could be '\0', so we just check with the delimiter */
       } while(sep); /* loop if there's another file name */
@@ -864,13 +839,13 @@ int formparse(struct OperationConfig *config,
         ++contp;
         sep = get_param_part(config, '\0', &contp,
                              &data, &type, NULL, &encoder, &headers);
-        if(sep < 0) {
-          Curl_safefree(contents);
-          return 14;
-        }
+        if(sep < 0)
+          goto fail;
 
-        NULL_CHECK(part, tool_mime_new_filedata(*mimecurrent, data, FALSE,
-                                                &res), 15);
+        part = tool_mime_new_filedata(*mimecurrent, data, FALSE,
+                                      &res);
+        if(!part)
+          goto fail;
         part->headers = headers;
         headers = NULL;
         part->config = config->global;
@@ -881,10 +856,9 @@ int formparse(struct OperationConfig *config,
           if(part->size > 0) {
             warnf(config->global,
                   "error while reading standard input\n");
-            Curl_safefree(contents);
-            return 16;
+            goto fail;
           }
-          CONST_SAFEFREE(part->data);
+          Curl_safefree(part->data);
           part->data = NULL;
           part->size = -1;
           res = CURLE_OK;
@@ -896,20 +870,20 @@ int formparse(struct OperationConfig *config,
         else {
           sep = get_param_part(config, '\0', &contp,
                                &data, &type, &filename, &encoder, &headers);
-          if(sep < 0) {
-            Curl_safefree(contents);
-            return 17;
-          }
+          if(sep < 0)
+            goto fail;
         }
 
-        NULL_CHECK(part, tool_mime_new_data(*mimecurrent, data), 18);
+        part = tool_mime_new_data(*mimecurrent, data);
+        if(!part)
+          goto fail;
         part->headers = headers;
         headers = NULL;
       }
 
-      SET_TOOL_MIME_PTR(part, filename, 19);
-      SET_TOOL_MIME_PTR(part, type, 20);
-      SET_TOOL_MIME_PTR(part, encoder, 21);
+      SET_TOOL_MIME_PTR(part, filename);
+      SET_TOOL_MIME_PTR(part, type);
+      SET_TOOL_MIME_PTR(part, encoder);
 
       if(sep) {
         *contp = (char) sep;
@@ -919,13 +893,15 @@ int formparse(struct OperationConfig *config,
     }
 
     /* Set part name. */
-    SET_TOOL_MIME_PTR(part, name, 22);
+    SET_TOOL_MIME_PTR(part, name);
   }
   else {
     warnf(config->global, "Illegally formatted input field!\n");
-    Curl_safefree(contents);
-    return 23;
+    goto fail;
   }
+  err = 0;
+  fail:
   Curl_safefree(contents);
-  return 0;
+  curl_slist_free_all(headers);
+  return err;
 }
index 7fb41070f408694430257d9e09aa43a628d26aa8..8c0461c69e3180e448dbdc5de2a6fc0a109afe33 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -41,11 +43,11 @@ struct tool_mime {
   struct tool_mime *parent;     /* Parent item. */
   struct tool_mime *prev;       /* Previous sibling (reverse order link). */
   /* Common fields. */
-  const char *data;             /* Actual data or data filename. */
-  const char *name;             /* Part name. */
-  const char *filename;         /* Part's filename. */
-  const char *type;             /* Part's mime type. */
-  const char *encoder;          /* Part's requested encoding. */
+  char *data;                   /* Actual data or data filename. */
+  char *name;                   /* Part name. */
+  char *filename;               /* Part's filename. */
+  char *type;                   /* Part's mime type. */
+  char *encoder;                /* Part's requested encoding. */
   struct curl_slist *headers;   /* User-defined headers. */
   /* TOOLMIME_PARTS fields. */
   struct tool_mime *subparts;   /* Part's subparts. */
index 7abbcc639de38bc94492528c5c9e2b1d769f5ec3..af4b3a6984097b0dbb1f0137f069f9c96d150fe9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -30,7 +32,6 @@
 #include "tool_binmode.h"
 #include "tool_cfgable.h"
 #include "tool_cb_prg.h"
-#include "tool_convert.h"
 #include "tool_filetime.h"
 #include "tool_formparse.h"
 #include "tool_getparam.h"
@@ -94,6 +95,7 @@ static const struct LongShort aliases[]= {
   {"*h", "trace-ascii",              ARG_FILENAME},
   {"*H", "alpn",                     ARG_BOOL},
   {"*i", "limit-rate",               ARG_STRING},
+  {"*I", "rate",                     ARG_STRING},
   {"*j", "compressed",               ARG_BOOL},
   {"*J", "tr-encoding",              ARG_BOOL},
   {"*k", "digest",                   ARG_BOOL},
@@ -230,6 +232,7 @@ static const struct LongShort aliases[]= {
   {"da", "data-ascii",               ARG_STRING},
   {"db", "data-binary",              ARG_STRING},
   {"de", "data-urlencode",           ARG_STRING},
+  {"df", "json",                     ARG_STRING},
   {"D",  "dump-header",              ARG_FILENAME},
   {"e",  "referer",                  ARG_STRING},
   {"E",  "cert",                     ARG_FILENAME},
@@ -284,6 +287,7 @@ static const struct LongShort aliases[]= {
   {"fb", "styled-output",            ARG_BOOL},
   {"fc", "mail-rcpt-allowfails",     ARG_BOOL},
   {"fd", "fail-with-body",           ARG_BOOL},
+  {"fe", "remove-on-error",          ARG_BOOL},
   {"F",  "form",                     ARG_STRING},
   {"Fs", "form-string",              ARG_STRING},
   {"g",  "globoff",                  ARG_BOOL},
@@ -310,9 +314,10 @@ static const struct LongShort aliases[]= {
   {"N",  "buffer",                   ARG_BOOL},
          /* 'buffer' listed as --no-buffer in the help */
   {"o",  "output",                   ARG_FILENAME},
-  {"O",  "remote-name",              ARG_NONE},
+  {"O",  "remote-name",              ARG_BOOL},
   {"Oa", "remote-name-all",          ARG_BOOL},
   {"Ob", "output-dir",               ARG_STRING},
+  {"Oc", "clobber",                  ARG_BOOL},
   {"p",  "proxytunnel",              ARG_BOOL},
   {"P",  "ftp-port",                 ARG_STRING},
   {"q",  "disable",                  ARG_BOOL},
@@ -418,10 +423,9 @@ void parse_cert_parameter(const char *cert_parameter,
          separator, but we try to detect when it is used for a file name! On
          windows. */
 #ifdef WIN32
-      if(param_place &&
-          (param_place == &cert_parameter[1]) &&
-          (cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
-          (ISALPHA(cert_parameter[0])) ) {
+      if((param_place == &cert_parameter[1]) &&
+         (cert_parameter[2] == '\\' || cert_parameter[2] == '/') &&
+         (ISALPHA(cert_parameter[0])) ) {
         /* colon in the second column, followed by a backslash, and the
            first character is an alphabetic letter:
 
@@ -483,7 +487,6 @@ GetFileAndPassword(char *nextarg, char **file, char **password)
     Curl_safefree(*password);
     *password = passphrase;
   }
-  cleanarg(nextarg);
 }
 
 /* Get a size parameter for '--limit-rate' or '--max-filesize'.
@@ -538,6 +541,121 @@ static ParameterError GetSizeParameter(struct GlobalConfig *global,
   return PARAM_OK;
 }
 
+#ifdef HAVE_WRITABLE_ARGV
+static void cleanarg(argv_item_t str)
+{
+  /* now that GetStr has copied the contents of nextarg, wipe the next
+   * argument out so that the username:password isn't displayed in the
+   * system process list */
+  if(str) {
+    size_t len = strlen(str);
+    memset(str, ' ', len);
+  }
+}
+#else
+#define cleanarg(x)
+#endif
+
+/* --data-urlencode */
+static ParameterError data_urlencode(struct GlobalConfig *global,
+                                     char *nextarg,
+                                     char **postp,
+                                     size_t *lenp)
+{
+  /* [name]=[content], we encode the content part only
+   * [name]@[file name]
+   *
+   * Case 2: we first load the file using that name and then encode
+   * the content.
+   */
+  ParameterError err;
+  const char *p = strchr(nextarg, '=');
+  size_t nlen;
+  char is_file;
+  char *postdata = NULL;
+  size_t size = 0;
+  if(!p)
+    /* there was no '=' letter, check for a '@' instead */
+    p = strchr(nextarg, '@');
+  if(p) {
+    nlen = p - nextarg; /* length of the name part */
+    is_file = *p++; /* pass the separator */
+  }
+  else {
+    /* neither @ nor =, so no name and it isn't a file */
+    nlen = is_file = 0;
+    p = nextarg;
+  }
+  if('@' == is_file) {
+    FILE *file;
+    /* a '@' letter, it means that a file name or - (stdin) follows */
+    if(!strcmp("-", p)) {
+      file = stdin;
+      set_binmode(stdin);
+    }
+    else {
+      file = fopen(p, "rb");
+      if(!file)
+        warnf(global,
+              "Couldn't read data from file \"%s\", this makes "
+              "an empty POST.\n", nextarg);
+    }
+
+    err = file2memory(&postdata, &size, file);
+
+    if(file && (file != stdin))
+      fclose(file);
+    if(err)
+      return err;
+  }
+  else {
+    GetStr(&postdata, p);
+    if(postdata)
+      size = strlen(postdata);
+  }
+
+  if(!postdata) {
+    /* no data from the file, point to a zero byte string to make this
+       get sent as a POST anyway */
+    postdata = strdup("");
+    if(!postdata)
+      return PARAM_NO_MEM;
+    size = 0;
+  }
+  else {
+    char *enc = curl_easy_escape(NULL, postdata, (int)size);
+    Curl_safefree(postdata); /* no matter if it worked or not */
+    if(enc) {
+      /* replace (in-place) '%20' by '+' according to RFC1866 */
+      size_t enclen = replace_url_encoded_space_by_plus(enc);
+      /* now make a string with the name from above and append the
+         encoded string */
+      size_t outlen = nlen + enclen + 2;
+      char *n = malloc(outlen);
+      if(!n) {
+        curl_free(enc);
+        return PARAM_NO_MEM;
+      }
+      if(nlen > 0) { /* only append '=' if we have a name */
+        msnprintf(n, outlen, "%.*s=%s", (int)nlen, nextarg, enc);
+        size = outlen-1;
+      }
+      else {
+        strcpy(n, enc);
+        size = outlen-2; /* since no '=' was inserted */
+      }
+      curl_free(enc);
+      postdata = n;
+    }
+    else
+      return PARAM_NO_MEM;
+  }
+  *postp = postdata;
+  *lenp = size;
+  return PARAM_OK;
+}
+
+
 ParameterError getparameter(const char *flag, /* f or -long-flag */
                             char *nextarg,    /* NULL if unset */
                             bool *usedarg,    /* set to TRUE if the arg
@@ -557,6 +675,17 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
   ParameterError err;
   bool toggle = TRUE; /* how to switch boolean options, on or off. Controlled
                          by using --OPTION or --no-OPTION */
+#ifdef HAVE_WRITABLE_ARGV
+  argv_item_t clearthis = NULL;
+#endif
+
+  static const char *redir_protos[] = {
+    "http",
+    "https",
+    "ftp",
+    "ftps",
+    NULL
+  };
 
   *usedarg = FALSE; /* default is that we don't use the arg */
 
@@ -633,6 +762,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
       /* this option requires an extra parameter */
       if(!longopt && parse[1]) {
         nextarg = (char *)&parse[1]; /* this is the actual extra parameter */
+#ifdef HAVE_WRITABLE_ARGV
+        clearthis = nextarg;
+#endif
         singleopt = TRUE;   /* don't loop anymore after this */
       }
       else if(!nextarg)
@@ -654,36 +786,44 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
     case '*': /* options without a short option */
       switch(subletter) {
       case '4': /* --dns-ipv4-addr */
+        if(!curlinfo->ares_num) /* c-ares is needed for this */
+          return PARAM_LIBCURL_DOESNT_SUPPORT;
         /* addr in dot notation */
         GetStr(&config->dns_ipv4_addr, nextarg);
         break;
       case '6': /* --dns-ipv6-addr */
+        if(!curlinfo->ares_num) /* c-ares is needed for this */
+          return PARAM_LIBCURL_DOESNT_SUPPORT;
         /* addr in dot notation */
         GetStr(&config->dns_ipv6_addr, nextarg);
         break;
       case 'a': /* random-file */
-        GetStr(&config->random_file, nextarg);
         break;
       case 'b': /* egd-file */
-        GetStr(&config->egd_file, nextarg);
         break;
       case 'B': /* OAuth 2.0 bearer token */
         GetStr(&config->oauth_bearer, nextarg);
+        cleanarg(clearthis);
         config->authtype |= CURLAUTH_BEARER;
         break;
       case 'c': /* connect-timeout */
         err = str2udouble(&config->connecttimeout, nextarg,
-                          LONG_MAX/1000);
+                          (double)LONG_MAX/1000);
         if(err)
           return err;
         break;
       case 'C': /* doh-url */
         GetStr(&config->doh_url, nextarg);
+        if(config->doh_url && !config->doh_url[0])
+          /* if given a blank string, we make it NULL again */
+          Curl_safefree(config->doh_url);
         break;
       case 'd': /* ciphers */
         GetStr(&config->cipher_list, nextarg);
         break;
       case 'D': /* --dns-interface */
+        if(!curlinfo->ares_num) /* c-ares is needed for this */
+          return PARAM_LIBCURL_DOESNT_SUPPORT;
         /* interface name */
         GetStr(&config->dns_interface, nextarg);
         break;
@@ -697,6 +837,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         config->disable_epsv = (!toggle)?TRUE:FALSE;
         break;
       case 'F': /* --dns-servers */
+        if(!curlinfo->ares_num) /* c-ares is needed for this */
+          return PARAM_LIBCURL_DOESNT_SUPPORT;
         /* IP addrs of DNS servers */
         GetStr(&config->dns_servers, nextarg);
         break;
@@ -707,7 +849,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         global->tracetype = TRACE_BIN;
         break;
       case 'G': /* --npn */
-        config->nonpn = (!toggle)?TRUE:FALSE;
+        warnf(global, "--npn is no longer supported\n");
         break;
       case 'h': /* --trace-ascii */
         GetStr(&global->trace_dump, nextarg);
@@ -730,6 +872,51 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         config->sendpersecond = value;
       }
       break;
+      case 'I': /* --rate (request rate) */
+      {
+        /* support a few different suffixes, extract the suffix first, then
+           get the number and convert to per hour.
+           /s == per second
+           /m == per minute
+           /h == per hour (default)
+           /d == per day (24 hours)
+        */
+        char *div = strchr(nextarg, '/');
+        char number[26];
+        long denominator;
+        long numerator = 60*60*1000; /* default per hour */
+        size_t numlen = div ? (size_t)(div - nextarg) : strlen(nextarg);
+        if(numlen > sizeof(number)-1)
+          return PARAM_NUMBER_TOO_LARGE;
+        strncpy(number, nextarg, numlen);
+        number[numlen] = 0;
+        err = str2unum(&denominator, number);
+        if(err)
+          return err;
+        if(denominator < 1)
+          return PARAM_BAD_USE;
+        if(div) {
+          char unit = div[1];
+          switch(unit) {
+          case 's': /* per second */
+            numerator = 1000;
+            break;
+          case 'm': /* per minute */
+            numerator = 60*1000;
+            break;
+          case 'h': /* per hour */
+            break;
+          case 'd': /* per day */
+            numerator = 24*60*60*1000;
+            break;
+          default:
+            errorf(global, "unsupported --rate unit\n");
+            return PARAM_BAD_USE;
+          }
+        }
+        global->ms_per_transfer = numerator/denominator;
+      }
+      break;
 
       case 'j': /* --compressed */
         if(toggle &&
@@ -929,6 +1116,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         if(toggle && !(curlinfo->features & CURL_VERSION_SSL))
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         config->ftp_ssl = toggle;
+        if(config->ftp_ssl)
+          warnf(global,
+                "--ssl is an insecure option, consider --ssl-reqd instead\n");
         break;
       case 'b': /* --ftp-pasv */
         Curl_safefree(config->ftpport);
@@ -1128,12 +1318,13 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         break;
       case 'D': /* --proto */
         config->proto_present = TRUE;
-        if(proto2num(config, &config->proto, nextarg))
-          return PARAM_BAD_USE;
+        err = proto2num(config, built_in_protos, &config->proto_str, nextarg);
+        if(err)
+          return err;
         break;
       case 'E': /* --proto-redir */
         config->proto_redir_present = TRUE;
-        if(proto2num(config, &config->proto_redir, nextarg))
+        if(proto2num(config, redir_protos, &config->proto_redir_str, nextarg))
           return PARAM_BAD_USE;
         break;
       case 'F': /* --resolve */
@@ -1183,7 +1374,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
           return err;
         break;
       case 'R': /* --expect100-timeout */
-        err = str2udouble(&config->expect100timeout, nextarg, LONG_MAX/1000);
+        err = str2udouble(&config->expect100timeout, nextarg,
+                          (double)LONG_MAX/1000);
         if(err)
           return err;
         break;
@@ -1377,91 +1569,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
       size_t size = 0;
       bool raw_mode = (subletter == 'r');
 
-      if(subletter == 'e') { /* --data-urlencode*/
-        /* [name]=[content], we encode the content part only
-         * [name]@[file name]
-         *
-         * Case 2: we first load the file using that name and then encode
-         * the content.
-         */
-        const char *p = strchr(nextarg, '=');
-        size_t nlen;
-        char is_file;
-        if(!p)
-          /* there was no '=' letter, check for a '@' instead */
-          p = strchr(nextarg, '@');
-        if(p) {
-          nlen = p - nextarg; /* length of the name part */
-          is_file = *p++; /* pass the separator */
-        }
-        else {
-          /* neither @ nor =, so no name and it isn't a file */
-          nlen = is_file = 0;
-          p = nextarg;
-        }
-        if('@' == is_file) {
-          /* a '@' letter, it means that a file name or - (stdin) follows */
-          if(!strcmp("-", p)) {
-            file = stdin;
-            set_binmode(stdin);
-          }
-          else {
-            file = fopen(p, "rb");
-            if(!file)
-              warnf(global,
-                    "Couldn't read data from file \"%s\", this makes "
-                    "an empty POST.\n", nextarg);
-          }
-
-          err = file2memory(&postdata, &size, file);
-
-          if(file && (file != stdin))
-            fclose(file);
-          if(err)
-            return err;
-        }
-        else {
-          GetStr(&postdata, p);
-          if(postdata)
-            size = strlen(postdata);
-        }
-
-        if(!postdata) {
-          /* no data from the file, point to a zero byte string to make this
-             get sent as a POST anyway */
-          postdata = strdup("");
-          if(!postdata)
-            return PARAM_NO_MEM;
-          size = 0;
-        }
-        else {
-          char *enc = curl_easy_escape(NULL, postdata, (int)size);
-          Curl_safefree(postdata); /* no matter if it worked or not */
-          if(enc) {
-            /* replace (in-place) '%20' by '+' according to RFC1866 */
-            size_t enclen = replace_url_encoded_space_by_plus(enc);
-            /* now make a string with the name from above and append the
-               encoded string */
-            size_t outlen = nlen + enclen + 2;
-            char *n = malloc(outlen);
-            if(!n) {
-              curl_free(enc);
-              return PARAM_NO_MEM;
-            }
-            if(nlen > 0) { /* only append '=' if we have a name */
-              msnprintf(n, outlen, "%.*s=%s", nlen, nextarg, enc);
-              size = outlen-1;
-            }
-            else {
-              strcpy(n, enc);
-              size = outlen-2; /* since no '=' was inserted */
-            }
-            curl_free(enc);
-            postdata = n;
-          }
-          else
-            return PARAM_NO_MEM;
-        }
+      if(subletter == 'e') { /* --data-urlencode */
+        err = data_urlencode(global, nextarg, &postdata, &size);
+        if(err)
+          return err;
       }
       else if('@' == *nextarg && !raw_mode) {
         /* the data begins with a '@' letter, it means that a file name
@@ -1480,7 +1591,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
                   "an empty POST.\n", nextarg);
         }
 
-        if(subletter == 'b')
+        if((subletter == 'b') || /* --data-binary */
+           (subletter == 'f') /* --json */)
           /* forced binary */
           err = file2memory(&postdata, &size, file);
         else {
@@ -1507,16 +1619,8 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         if(postdata)
           size = strlen(postdata);
       }
-
-#ifdef CURL_DOES_CONVERSIONS
-      if(subletter != 'b') {
-        /* NOT forced binary, convert to ASCII */
-        if(convert_to_network(postdata, strlen(postdata))) {
-          Curl_safefree(postdata);
-          return PARAM_NO_MEM;
-        }
-      }
-#endif
+      if(subletter == 'f')
+        config->jsoned = TRUE;
 
       if(config->postfields) {
         /* we already have a string, we append this one with a separating
@@ -1531,13 +1635,21 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
           return PARAM_NO_MEM;
         }
         memcpy(config->postfields, oldpost, (size_t)oldlen);
-        /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
-        config->postfields[oldlen] = '\x26';
-        memcpy(&config->postfields[oldlen + 1], postdata, size);
-        config->postfields[oldlen + 1 + size] = '\0';
+        if(subletter != 'f') {
+          /* skip this treatment for --json */
+          /* use byte value 0x26 for '&' to accommodate non-ASCII platforms */
+          config->postfields[oldlen] = '\x26';
+          memcpy(&config->postfields[oldlen + 1], postdata, size);
+          config->postfields[oldlen + 1 + size] = '\0';
+          config->postfieldsize += size + 1;
+        }
+        else {
+          memcpy(&config->postfields[oldlen], postdata, size);
+          config->postfields[oldlen + size] = '\0';
+          config->postfieldsize += size;
+        }
         Curl_safefree(oldpost);
         Curl_safefree(postdata);
-        config->postfieldsize += size + 1;
       }
       else {
         config->postfields = postdata;
@@ -1576,6 +1688,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
     case 'E':
       switch(subletter) {
       case '\0': /* certificate file */
+        cleanarg(clearthis);
         GetFileAndPassword(nextarg, &config->cert, &config->key_passwd);
         break;
       case 'a': /* CA info PEM file */
@@ -1592,7 +1705,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         break;
       case 'e': /* private key passphrase */
         GetStr(&config->key_passwd, nextarg);
-        cleanarg(nextarg);
+        cleanarg(clearthis);
         break;
       case 'f': /* crypto engine */
         GetStr(&config->engine, nextarg);
@@ -1617,16 +1730,20 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         GetStr(&config->crlfile, nextarg);
         break;
       case 'k': /* TLS username */
-        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
-          GetStr(&config->tls_username, nextarg);
-        else
+        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+          cleanarg(clearthis);
           return PARAM_LIBCURL_DOESNT_SUPPORT;
+        }
+        GetStr(&config->tls_username, nextarg);
+        cleanarg(clearthis);
         break;
       case 'l': /* TLS password */
-        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
-          GetStr(&config->tls_password, nextarg);
-        else
+        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
+          cleanarg(clearthis);
           return PARAM_LIBCURL_DOESNT_SUPPORT;
+        }
+        GetStr(&config->tls_password, nextarg);
+        cleanarg(clearthis);
         break;
       case 'm': /* TLS authentication type */
         if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP) {
@@ -1687,17 +1804,19 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         break;
 
       case 'u': /* TLS username for proxy */
-        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
-          GetStr(&config->proxy_tls_username, nextarg);
-        else
+        cleanarg(clearthis);
+        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
           return PARAM_LIBCURL_DOESNT_SUPPORT;
+        }
+        GetStr(&config->proxy_tls_username, nextarg);
         break;
 
       case 'v': /* TLS password for proxy */
-        if(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)
-          GetStr(&config->proxy_tls_password, nextarg);
-        else
+        cleanarg(clearthis);
+        if(!(curlinfo->features & CURL_VERSION_TLSAUTH_SRP)) {
           return PARAM_LIBCURL_DOESNT_SUPPORT;
+        }
+        GetStr(&config->proxy_tls_password, nextarg);
         break;
 
       case 'w': /* TLS authentication type for proxy */
@@ -1711,6 +1830,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         break;
 
       case 'x': /* certificate file for proxy */
+        cleanarg(clearthis);
         GetFileAndPassword(nextarg, &config->proxy_cert,
                            &config->proxy_key_passwd);
         break;
@@ -1729,7 +1849,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
 
       case '1': /* private key passphrase for proxy */
         GetStr(&config->proxy_key_passwd, nextarg);
-        cleanarg(nextarg);
+        cleanarg(clearthis);
         break;
 
       case '2': /* ciphers for proxy */
@@ -1812,7 +1932,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
       case 'd': /* --fail-with-body */
         config->failwithbody = toggle;
         break;
-      default: /* --fail (hard on errors)  */
+      case 'e': /* --remove-on-error */
+        config->rm_partial = toggle;
+        break;
+       default: /* --fail (hard on errors)  */
         config->failonerror = toggle;
         break;
       }
@@ -1925,9 +2048,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         config->insecure_ok = toggle;
       break;
     case 'K': /* parse config file */
-      if(parseconfig(nextarg, global))
-        warnf(global, "error trying read config from the '%s' file\n",
-              nextarg);
+      if(parseconfig(nextarg, global)) {
+        errorf(global, "cannot read config from '%s'\n", nextarg);
+        return PARAM_READ_ERROR;
+      }
       break;
     case 'l':
       config->dirlistonly = toggle; /* only list the names of the FTP dir */
@@ -1944,19 +2068,17 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
       break;
     case 'm':
       /* specified max time */
-      err = str2udouble(&config->timeout, nextarg, LONG_MAX/1000);
+      err = str2udouble(&config->timeout, nextarg, (double)LONG_MAX/1000);
       if(err)
         return err;
       break;
     case 'M': /* M for manual, huge help */
       if(toggle) { /* --no-manual shows no manual... */
-#ifdef USE_MANUAL
-        return PARAM_MANUAL_REQUESTED;
-#else
+#ifndef USE_MANUAL
         warnf(global,
               "built-in manual was disabled at build-time!\n");
-        return PARAM_OPTION_UNKNOWN;
 #endif
+        return PARAM_MANUAL_REQUESTED;
       }
       break;
     case 'n':
@@ -1977,10 +2099,7 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
     case 'N':
       /* disable the output I/O buffering. note that the option is called
          --buffer but is mostly used in the negative form: --no-buffer */
-      if(longopt)
-        config->nobuffer = (!toggle)?TRUE:FALSE;
-      else
-        config->nobuffer = toggle;
+      config->nobuffer = longopt ? !toggle : TRUE;
       break;
     case 'O': /* --remote-name */
       if(subletter == 'a') { /* --remote-name-all */
@@ -1991,6 +2110,10 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         GetStr(&config->output_dir, nextarg);
         break;
       }
+      else if(subletter == 'c') { /* --clobber / --no-clobber */
+        config->file_clobber_mode = toggle ? CLOBBER_ALWAYS : CLOBBER_NEVER;
+        break;
+      }
       /* FALLTHROUGH */
     case 'o': /* --output */
       /* output file */
@@ -2019,6 +2142,10 @@ 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");
+          return PARAM_BAD_USE;
+        }
         GetStr(&url->outfile, nextarg);
         url->flags &= ~GETOUT_USEREMOTE; /* switch off */
       }
@@ -2168,12 +2295,12 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
     case 'u':
       /* user:password  */
       GetStr(&config->userpwd, nextarg);
-      cleanarg(nextarg);
+      cleanarg(clearthis);
       break;
     case 'U':
       /* Proxy user:password  */
       GetStr(&config->proxyuserpwd, nextarg);
-      cleanarg(nextarg);
+      cleanarg(clearthis);
       break;
     case 'v':
       if(toggle) {
@@ -2265,8 +2392,9 @@ ParameterError getparameter(const char *flag, /* f or -long-flag */
         err = str2unum(&global->parallel_max, nextarg);
         if(err)
           return err;
-        if((global->parallel_max > MAX_PARALLEL) ||
-           (global->parallel_max < 1))
+        if(global->parallel_max > MAX_PARALLEL)
+          global->parallel_max = MAX_PARALLEL;
+        else if(global->parallel_max < 1)
           global->parallel_max = PARALLEL_DEFAULT;
         break;
       case 'c':   /* --parallel-connect */
@@ -2345,11 +2473,18 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
            following (URL) argument to start with -. */
         stillflags = FALSE;
       else {
-        char *nextarg = (i < (argc - 1))
-          ? curlx_convert_tchar_to_UTF8(argv[i + 1])
-          : NULL;
+        char *nextarg = NULL;
+        if(i < (argc - 1)) {
+          nextarg = curlx_convert_tchar_to_UTF8(argv[i + 1]);
+          if(!nextarg) {
+            curlx_unicodefree(orig_opt);
+            return PARAM_NO_MEM;
+          }
+        }
+
+        result = getparameter(orig_opt, nextarg, &passarg,
+                              global, config);
 
-        result = getparameter(orig_opt, nextarg, &passarg, global, config);
         curlx_unicodefree(nextarg);
         config = global->last;
         if(result == PARAM_NEXT_OPERATION) {
@@ -2386,8 +2521,7 @@ ParameterError parse_args(struct GlobalConfig *global, int argc,
       bool used;
 
       /* Just add the URL please */
-      result = getparameter("--url", orig_opt, &used, global,
-                            config);
+      result = getparameter("--url", orig_opt, &used, global, config);
     }
 
     if(!result)
index 599a0ac8858bcf33b3618928de3ff137c2516a0e..3eb177391896586cdcc72b4f6315c735181bf14f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -45,13 +47,15 @@ typedef enum {
   PARAM_NO_NOT_BOOLEAN,
   PARAM_CONTDISP_SHOW_HEADER, /* --include and --remote-header-name */
   PARAM_CONTDISP_RESUME_FROM, /* --continue-at and --remote-header-name */
+  PARAM_READ_ERROR,
   PARAM_LAST
 } ParameterError;
 
 struct GlobalConfig;
 struct OperationConfig;
 
-ParameterError getparameter(const char *flag, char *nextarg, bool *usedarg,
+ParameterError getparameter(const char *flag, char *nextarg,
+                            bool *usedarg,
                             struct GlobalConfig *global,
                             struct OperationConfig *operation);
 
index 4c50a12d930a948ceb5fac62cf042742405e0022..c959c5a5258fc39e251dd7c88e131cde393ad290 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index d4b35e7f3eacd39d2a298365d371ed7079822e7b..01dc46401566397e63d863136fcfe53854774933 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index d49cccd0582d6b63924d15863919c9e9aedd3986..65a1f43dfa4e94480ebc56cd7dd6f9e8d55ec194 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
-#if defined(HAVE_STRCASECMP) && defined(HAVE_STRINGS_H)
-#include <strings.h>
-#endif
 #define ENABLE_CURLX_PRINTF
 /* use our own printf() functions */
 #include "curlx.h"
@@ -30,6 +29,7 @@
 #include "tool_panykey.h"
 #include "tool_help.h"
 #include "tool_libinfo.h"
+#include "tool_util.h"
 #include "tool_version.h"
 
 #include "memdebug.h" /* keep this as LAST include */
@@ -110,6 +110,7 @@ static const struct feat feats[] = {
   {"alt-svc",        CURL_VERSION_ALTSVC},
   {"HSTS",           CURL_VERSION_HSTS},
   {"gsasl",          CURL_VERSION_GSASL},
+  {"threadsafe",     CURL_VERSION_THREADSAFE},
 };
 
 static void print_category(curlhelp_t category)
@@ -187,20 +188,6 @@ void tool_help(char *category)
   free(category);
 }
 
-static int
-featcomp(const void *p1, const void *p2)
-{
-  /* The arguments to this function are "pointers to pointers to char", but
-     the comparison arguments are "pointers to char", hence the following cast
-     plus dereference */
-#ifdef HAVE_STRCASECMP
-  return strcasecmp(* (char * const *) p1, * (char * const *) p2);
-#elif defined(HAVE_STRCMPI)
-  return strcmpi(* (char * const *) p1, * (char * const *) p2);
-#else
-  return strcmp(* (char * const *) p1, * (char * const *) p2);
-#endif
-}
 
 void tool_version_info(void)
 {
@@ -216,7 +203,10 @@ void tool_version_info(void)
   if(curlinfo->protocols) {
     printf("Protocols: ");
     for(proto = curlinfo->protocols; *proto; ++proto) {
-      printf("%s ", *proto);
+      /* Special case: do not list rtmp?* protocols.
+         They may only appear together with "rtmp" */
+      if(!curl_strnequal(*proto, "rtmp", 4) || !proto[0][4])
+        printf("%s ", *proto);
     }
     puts(""); /* newline */
   }
@@ -229,7 +219,7 @@ void tool_version_info(void)
       if(curlinfo->features & feats[i].bitmask)
         featp[numfeat++] = (char *)feats[i].name;
     }
-    qsort(&featp[0], numfeat, sizeof(char *), featcomp);
+    qsort(&featp[0], numfeat, sizeof(char *), struplocompare4sort);
     for(i = 0; i< numfeat; i++)
       printf(" %s", featp[i]);
     puts(""); /* newline */
index 143466286f7f4d852fd64f21cb6c18ce05b772f6..6fe244e2cf19098b76bfbee358642ba9f6df7cc9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 9244d1fb5a9ee09abd308e598861375a5e869db2..3b2fe9d1548a2fa8415116e3bd282bccd4b315f1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -72,6 +74,8 @@ const char *param2text(int res)
     return "showing headers and --remote-header-name cannot be combined";
   case PARAM_CONTDISP_RESUME_FROM:
     return "--continue-at and --remote-header-name cannot be combined";
+  case PARAM_READ_ERROR:
+    return "error encountered when reading a file";
   default:
     return "unknown error";
   }
@@ -85,7 +89,8 @@ int SetHTTPrequest(struct OperationConfig *config, HttpReq req, HttpReq *store)
     "GET (-G, --get)",
     "HEAD (-I, --head)",
     "multipart formpost (-F, --form)",
-    "POST (-d, --data)"
+    "POST (-d, --data)",
+    "PUT (-T, --upload-file)"
   };
 
   if((*store == HTTPREQ_UNSPEC) ||
@@ -109,7 +114,8 @@ void customrequest_helper(struct OperationConfig *config, HttpReq req,
     "GET",
     "HEAD",
     "POST",
-    "POST"
+    "POST",
+    "PUT"
   };
 
   if(!method)
index c5e577313755c4a78534e8ce95dd04f5868ee1c7..cdc84106c89b47b92ed57fb1220bcf683e331701 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 9e7207dde9057cbb2e26217d46bf4cbf382da945..b1c2113dd99a853f58e30e2d602aa1b3c529919a 100644 (file)
@@ -26,8 +26,8 @@ void hugehelp(void)
 , stdout);
  fputs(
 "       IMAP,  IMAPS,  LDAP,  LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP,\n"
-"       SFTP, SMB, SMBS, SMTP, SMTPS, TELNET or TFTP. The command  is  designed\n"
-"       to work without user interaction.\n"
+"       SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. The command  is\n"
+"       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"
@@ -114,9 +114,9 @@ void hugehelp(void)
 , stdout);
  fputs(
 "       be  instructed  to  instead save that data into a local file, using the\n"
-"       -o, --output or -O, --remote-name options. If curl  is  given  multiple\n"
-"       URLs  to  transfer on the command line, it similarly needs multiple op-\n"
-"       tions for where to save them.\n"
+"       --output or --remote-name options. If curl is given  multiple  URLs  to\n"
+"       transfer  on  the command line, it similarly needs multiple options for\n"
+"       where to save them.\n"
 "\n"
 "       curl does not parse or otherwise \"understand\" the content  it  gets  or\n"
 "       writes  as  output.  It does no encoding or decoding, unless explicitly\n"
@@ -207,17 +207,17 @@ void hugehelp(void)
 "       mixing progress meter and response data.\n"
 "\n"
 "       If you want a progress meter for HTTP POST or PUT requests, you need to\n"
-"       redirect the response output to a file, using shell redirect  (>),  -o,\n"
+"       redirect the response output to  a  file,  using  shell  redirect  (>),\n"
 "       --output or similar.\n"
 "\n"
 "       This  does  not apply to FTP upload as that operation does not spit out\n"
 "       any response data to the terminal.\n"
 "\n"
-"       If you prefer a progress  \"bar\"  instead  of  the  regular  meter,  -#,\n"
+"       If  you  prefer  a  progress  \"bar\"  instead  of  the  regular   meter,\n"
 , stdout);
  fputs(
 "       --progress-bar  is your friend. You can also disable the progress meter\n"
-"       completely with the -s, --silent option.\n"
+"       completely with the --silent option.\n"
 "\n"
 "OPTIONS\n"
 "       Options start with one or two dashes. Many of the  options  require  an\n"
@@ -225,10 +225,10 @@ void hugehelp(void)
 "\n"
 "       The  short  \"single-dash\"  form  of the options, -d for example, may be\n"
 "       used with or without a space between it and its value, although a space\n"
-"       is a recommended separator. The long \"double-dash\" form, -d, --data for\n"
+"       is a recommended separator. The long \"double-dash\" form, --data for ex-\n"
 , stdout);
  fputs(
-"       example, requires a space between it and its value.\n"
+"       ample, requires a space between it and its value.\n"
 "\n"
 "       Short version options that do not need any  additional  values  can  be\n"
 "       used  immediately  next to each other, like for example you can specify\n"
@@ -247,73 +247,85 @@ void hugehelp(void)
 "              stract  socket  prefixed  with  '@', however the <path> argument\n"
 "              should not have this leading character.\n"
 "\n"
-"              Example:\n"
 , stdout);
  fputs(
+"              If --abstract-unix-socket is provided several  times,  the  last\n"
+"              set value will be used.\n"
+"\n"
+"              Example:\n"
 "               curl --abstract-unix-socket socketpath https://example.com\n"
 "\n"
 "              See also --unix-socket. Added in 7.53.0.\n"
 "\n"
 "       --alt-svc <file name>\n"
-"              (HTTPS) This option enables the alt-svc parser in curl.  If  the\n"
+"              (HTTPS)  This  option enables the alt-svc parser in curl. If the\n"
 "              file name points to an existing alt-svc cache file, that will be\n"
+, stdout);
+ fputs(
 "              used. After a completed transfer, the cache will be saved to the\n"
 "              file name again if it has been modified.\n"
 "\n"
-, stdout);
- fputs(
 "              Specify a \"\" file name (zero length) to avoid loading/saving and\n"
 "              make curl just handle the cache in memory.\n"
 "\n"
-"              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"
+"\n"
+, stdout);
+ fputs(
 "              Example:\n"
 "               curl --alt-svc svc.txt https://example.com\n"
 "\n"
 "              See also --resolve and --connect-to. Added in 7.64.1.\n"
 "\n"
 "       --anyauth\n"
-, stdout);
- fputs(
 "              (HTTP) Tells curl to figure out authentication method by itself,\n"
-"              and use the most secure one the remote site claims  to  support.\n"
+"              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"
 , stdout);
  fputs(
+"              This is  used  instead  of  setting  a  specific  authentication\n"
+"              method,  which  you  can  do with --basic, --digest, --ntlm, and\n"
 "              --negotiate.\n"
 "\n"
 "              Using --anyauth is not recommended if you do uploads from stdin,\n"
-"              since it may require data to be sent twice and then  the  client\n"
-"              must  be able to rewind. If the need should arise when uploading\n"
+"              since  it  may require data to be sent twice and then the client\n"
+"              must be able to rewind. If the need should arise when  uploading\n"
 "              from stdin, the upload operation will fail.\n"
 "\n"
+, stdout);
+ fputs(
 "              Used together with -u, --user.\n"
 "\n"
+"              Providing --anyauth multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --anyauth --user me:pwd https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --proxy-anyauth, --basic and --digest.\n"
 "\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"
+, stdout);
+ fputs(
 "              not exist, it will be created. Note that this flag is ignored by\n"
 "              some SFTP servers (including OpenSSH).\n"
 "\n"
+"              Providing --append multiple times has no extra effect.   Disable\n"
+"              it again with --no-append.\n"
+"\n"
 "              Example:\n"
 "               curl --upload-file local --append ftp://example.com/\n"
 "\n"
-, stdout);
- fputs(
 "              See also -r, --range and -C, --continue-at.\n"
 "\n"
 "       --aws-sigv4 <provider1[:provider2[:region[:service]]]>\n"
+, stdout);
+ fputs(
 "              Use AWS V4 signature authentication in the transfer.\n"
 "\n"
 "              The  provider argument is a string that is used by the algorithm\n"
@@ -321,30 +333,35 @@ void hugehelp(void)
 "\n"
 "              The region argument is a string that points to a geographic area\n"
 "              of  a resources collection (region-code) when the region name is\n"
-, stdout);
- fputs(
 "              omitted from the endpoint.\n"
 "\n"
 "              The service argument is a string that points to a function  pro-\n"
+, stdout);
+ fputs(
 "              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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --aws-sigv4 \"aws:amz:east-2:es\" --user \"key:secret\" https://example.com\n"
 "\n"
 "              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"
 , stdout);
  fputs(
-"              (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"
-"              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"
 "\n"
+"              Providing --basic multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl -u name:password --basic https://example.com\n"
 "\n"
@@ -354,47 +371,47 @@ void hugehelp(void)
 "\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"
-"              certificate(s) must be in PEM format. Normally curl is built  to\n"
+"              the peer. The file may contain  multiple  CA  certificates.  The\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"
-"              curl recognizes the environment variable named  'CURL_CA_BUNDLE'\n"
+"              curl  recognizes the environment variable named 'CURL_CA_BUNDLE'\n"
 , stdout);
  fputs(
-"              if  it  is  set,  and uses the given path as a path to a CA cert\n"
+"              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"
+"              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"
 "\n"
-"              If  curl  is  built  against  the  NSS  SSL library, the NSS PEM\n"
+"              If curl is built against  the  NSS  SSL  library,  the  NSS  PEM\n"
 , stdout);
  fputs(
 "              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"
-"              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"
+"              (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"
 , stdout);
  fputs(
-"              user  Keychain to verify the peer, which is the preferred method\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"
-"              7  or later with libcurl 7.60 or later. This option is supported\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"
 , stdout);
  fputs(
-"              If this option is used several times, the last one will be used.\n"
-"\n"
+"              If  --cacert  is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --cacert CA-file.txt https://example.com\n"
 "\n"
@@ -412,11 +429,11 @@ void hugehelp(void)
 "              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 this option is set, the default capath value will be ignored.\n"
 , stdout);
  fputs(
-"              and if it is used several times, the last one will be used.\n"
-"\n"
+"              If  --capath  is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --capath /local/directory https://example.com\n"
 "\n"
@@ -437,54 +454,66 @@ void hugehelp(void)
 "              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"
+, stdout);
+ fputs(
+"              Disable it again with --no-cert-status.\n"
+"\n"
 "              Example:\n"
 "               curl --cert-status https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --pinnedpubkey. Added in 7.41.0.\n"
 "\n"
 "       --cert-type <type>\n"
-"              (TLS) Tells curl what type the provided  client  certificate  is\n"
-"              using. PEM, DER, ENG and P12 are recognized types. If not speci-\n"
-"              fied, PEM is assumed.\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"
+, stdout);
+ fputs(
+"              however  for  Secure Transport and Schannel it is P12. If --cert\n"
+"              is a pkcs11: URI then ENG is the default type.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --cert-type is provided several times,  the  last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --cert-type PEM --cert file https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              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"
-"              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"
+"              col.  The  certificate must be in PKCS#12 format if using Secure\n"
+"              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"
 , stdout);
  fputs(
-"              terminal.  Note  that  this  option assumes a \"certificate\" file\n"
-"              that is the private key and the client certificate concatenated!\n"
-"              See -E, --cert and --key to specify them independently.\n"
+"              is  the private key and the client certificate concatenated. See\n"
+"              --cert and --key to specify them independently.\n"
+"\n"
+"              In the <certificate> portion of the argument,  you  must  escape\n"
+"              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"
+, stdout);
+ fputs(
 "              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(
 "              default /etc/pki/nssdb). If the NSS  PEM  PKCS#11  module  (lib-\n"
-"              nsspem.so)  is  available  then  PEM files may be loaded. If you\n"
-"              want to use a file from the current directory, please precede it\n"
-"              with  \"./\"  prefix, in order to avoid confusion with a nickname.\n"
-"              If the nickname contains \":\", it needs to be preceded by \"\\\"  so\n"
-"              that it is not recognized as password delimiter. If the nickname\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"
 , stdout);
  fputs(
-"              contains \"\\\", it needs to be escaped as \"\\\\\" so that it  is  not\n"
-"              recognized as an escape character.\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"
 "              is available, then a PKCS#11 URI (RFC 7512) can be used to spec-\n"
@@ -520,7 +549,8 @@ void hugehelp(void)
  fputs(
 "              LocalMachineGroupPolicy, LocalMachineEnterprise.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --cert is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl --cert certfile --key keyfile https://example.com\n"
@@ -529,41 +559,49 @@ void hugehelp(void)
 "\n"
 "       --ciphers <list of ciphers>\n"
 "              (TLS) Specifies which ciphers to use in the connection. The list\n"
-"              of ciphers must specify valid ciphers. Read  up  on  SSL  cipher\n"
 , stdout);
  fputs(
+"              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
 "              list details on this URL:\n"
 "\n"
 "               https://curl.se/docs/ssl-ciphers.html\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
+"              If --ciphers is provided several times, the last set value  will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --ciphers ECDHE-ECDSA-AES256-CCM8 https://example.com\n"
 "\n"
 "              See also --tlsv1.3.\n"
 "\n"
 "       --compressed-ssh\n"
+, stdout);
+ fputs(
 "              (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"
+"              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"
 "\n"
 "       --compressed\n"
+, stdout);
+ fputs(
 "              (HTTP) Request a compressed response using one of the algorithms\n"
 "              curl supports, and automatically decompress the content. Headers\n"
 "              are not modified.\n"
 "\n"
-"              If this option is used and the server sends an  unsupported  en-\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"
+"              der; the server may or may not deliver data compressed.\n"
+"\n"
+"              Providing --compressed multiple times has no extra effect.  Dis-\n"
 , stdout);
  fputs(
-"              der; the server may or may not deliver data compressed.\n"
+"              able it again with --no-compressed.\n"
 "\n"
 "              Example:\n"
 "               curl --compressed https://example.com\n"
@@ -575,18 +613,18 @@ void hugehelp(void)
 "              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"
 , stdout);
  fputs(
-"              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"
 "              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"
-, stdout);
- fputs(
 "              ter between the option and its parameter.\n"
 "\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"
@@ -594,24 +632,24 @@ void hugehelp(void)
 "              nored.\n"
 "\n"
 "              If the first column of a config line is  a  '#'  character,  the\n"
-, stdout);
- fputs(
 "              rest of the line will be treated as a comment.\n"
 "\n"
+, stdout);
+ fputs(
 "              Only write one option per physical line in the config file.\n"
 "\n"
-"              Specify  the  filename  to -K, --config as '-' to make curl read\n"
-"              the file from stdin.\n"
+"              Specify  the  filename  to --config as '-' to make curl read the\n"
+"              file from stdin.\n"
 "\n"
 "              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"
 "              writing the URL on its own line. So, it could  look  similar  to\n"
-, stdout);
- fputs(
 "              this:\n"
 "\n"
 "              url = \"https://curl.se/docs/\"\n"
 "\n"
+, stdout);
+ fputs(
 "               # --- Example file ---\n"
 "               # this is a comment\n"
 "               url = \"example.com\"\n"
@@ -624,12 +662,12 @@ void hugehelp(void)
 "               referer = \"http://nowhereatall.example.com/\"\n"
 "               # --- End of example file ---\n"
 "\n"
+"              When curl is invoked, it (unless --disable is used) checks for a\n"
 , stdout);
  fputs(
-"              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"
-"              following places in this order:\n"
+"              default config file and uses it if found, even when --config  is\n"
+"              used.  The  default  config file is checked for in the following\n"
+"              places in this order:\n"
 "\n"
 "              1) \"$CURL_HOME/.curlrc\"\n"
 "\n"
@@ -639,36 +677,40 @@ void hugehelp(void)
 "\n"
 "              4) Windows: \"%USERPROFILE%\\.curlrc\"\n"
 "\n"
-, stdout);
- fputs(
 "              5) Windows: \"%APPDATA%\\.curlrc\"\n"
 "\n"
 "              6) Windows: \"%USERPROFILE%\\Application Data\\.curlrc\"\n"
 "\n"
-"              7) Non-windows: use getpwuid to find the home directory\n"
+, stdout);
+ fputs(
+"              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"
+"              8) On Windows, if it finds no .curlrc file in the  sequence  de-\n"
 "              scribed  above,  it checks for one in the same dir the curl exe-\n"
 "              cutable is placed.\n"
 "\n"
-"              This option can be used multiple times to load  multiple  config\n"
-"              files.\n"
+"              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"
 "\n"
 , stdout);
  fputs(
+"              --config can be used several times in a command line\n"
+"\n"
 "              Example:\n"
 "               curl --config file.txt https://example.com\n"
 "\n"
 "              See also -q, --disable.\n"
 "\n"
 "       --connect-timeout <fractional seconds>\n"
-"              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"
+"              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"
 , stdout);
  fputs(
-"              If this option is used several times, the last one will be used.\n"
+"              exit.  Since version 7.32.0, this option accepts decimal values.\n"
+"              If  --connect-timeout  is  provided  several times, the last set\n"
+"              value will be used.\n"
 "\n"
 "              Examples:\n"
 "               curl --connect-timeout 20 https://example.com\n"
@@ -678,41 +720,41 @@ void hugehelp(void)
 "\n"
 "       --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"
 , stdout);
  fputs(
+"              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"
 "              used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
-"              application protocols. \"HOST1\" and  \"PORT1\"  may  be  the  empty\n"
-"              string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
 , stdout);
  fputs(
+"              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"
 "              needs to match the name used in request URL. It  can  be  either\n"
+, stdout);
+ fputs(
 "              numerical such as \"127.0.0.1\" or the full host name such as \"ex-\n"
 "              ample.org\".\n"
 "\n"
-"              This option can be used many times to add many connect rules.\n"
+"              --connect-to can be used several times in a command line\n"
 "\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --connect-to example.com:443:example.net:8443 https://example.com\n"
 "\n"
 "              See also --resolve and -H, --header. Added in 7.49.0.\n"
 "\n"
 "       -C, --continue-at <offset>\n"
 "              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"
 , stdout);
  fputs(
+"              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"
@@ -720,91 +762,97 @@ void hugehelp(void)
 "              resume  the  transfer. It then uses the given output/input files\n"
 "              to figure that out.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+"              If --continue-at is provided several times, the last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Examples:\n"
 "               curl -C - https://example.com\n"
-, stdout);
- fputs(
 "               curl -C 400 https://example.com\n"
 "\n"
 "              See also -r, --range.\n"
 "\n"
 "       -c, --cookie-jar <filename>\n"
-"              (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"
+"              (HTTP)  Specify to which file you want curl to write all cookies\n"
+"              after a completed operation. Curl writes all  cookies  from  its\n"
 , stdout);
  fputs(
-"              file will be written using the Netscape cookie file  format.  If\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"
 "              written to stdout.\n"
 "\n"
-"              This command line option will activate the  cookie  engine  that\n"
+"              This  command  line  option will activate the cookie engine that\n"
+, stdout);
+ fputs(
 "              makes curl record and use cookies. Another way to activate it is\n"
-"              to use the -b, --cookie option.\n"
+"              to use the --cookie option.\n"
+"\n"
+"              If  the  cookie  jar  cannot be created or written to, the whole\n"
+"              curl operation will not fail or even report  an  error  clearly.\n"
+"              Using  --verbose  will  get a warning displayed, but that is the\n"
+"              only visible feedback you get about this possibly lethal  situa-\n"
+"              tion.\n"
 "\n"
-"              If the cookie jar cannot be created or  written  to,  the  whole\n"
 , stdout);
  fputs(
-"              curl  operation  will  not fail or even report an error clearly.\n"
-"              Using -v, --verbose will get a warning displayed,  but  that  is\n"
-"              the  only  visible  feedback  you get about this possibly lethal\n"
-"              situation.\n"
-"\n"
-"              If this option is used several times, the  last  specified  file\n"
-"              name will be used.\n"
+"              If  --cookie-jar  is  provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Examples:\n"
 "               curl -c store-here.txt https://example.com\n"
-, stdout);
- fputs(
 "               curl -c store-here.txt -b read-these https://example.com\n"
 "\n"
 "              See also -b, --cookie.\n"
 "\n"
 "       -b, --cookie <data|filename>\n"
 "              (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\".\n"
-"\n"
+"              is  supposedly the data previously received from the server in a\n"
 , stdout);
  fputs(
+"              \"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"
+"              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"
+, stdout);
+ fputs(
 "              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"
-"              bination with the -L,  --location  option  or  do  multiple  URL\n"
-"              transfers  on the same invoke. If the file name is exactly a mi-\n"
+"              bination with the --location option or do multiple URL transfers\n"
+"              on  the  same invoke. If the file name is exactly a minus (\"-\"),\n"
+"              curl will instead read the contents from stdin.\n"
+"\n"
 , stdout);
  fputs(
-"              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"
 "              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"
-"              -c, --cookie-jar option.\n"
+"              The file specified with --cookie is only used as input. No cook-\n"
+"              ies  will  be  written  to  the  file. To store cookies, use the\n"
+"              --cookie-jar option.\n"
 "\n"
+"              If you use the Set-Cookie file format and do not specify  a  do-\n"
 , stdout);
  fputs(
-"              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"
-"              This option can be used multiple times.\n"
-"\n"
 "              Users often want to both read cookies from a file and write  up-\n"
+"              dated  cookies  back  to  a  file,  so  using  both --cookie and\n"
+"              --cookie-jar in the same command line is common.\n"
+"\n"
 , stdout);
  fputs(
-"              dated cookies back to a file, so using both -b, --cookie and -c,\n"
-"              --cookie-jar in the same command line is common.\n"
+"              --cookie can be used several times in a command line\n"
 "\n"
 "              Examples:\n"
 "               curl -b cookiefile https://example.com\n"
@@ -813,21 +861,24 @@ void hugehelp(void)
 "              See also -c, --cookie-jar and -j, --junk-session-cookies.\n"
 "\n"
 "       --create-dirs\n"
-"              When used in conjunction with the -o, --output option, curl will\n"
+"              When used in conjunction with the  --output  option,  curl  will\n"
+"              create  the  necessary local directory hierarchy as needed. This\n"
 , stdout);
  fputs(
-"              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 --output file name uses no direc-\n"
-"              tory, or if the directories it mentions already exist, no direc-\n"
-"              tories will be created.\n"
+"              option creates the directories mentioned with the  --output  op-\n"
+"              tion, nothing else. If the --output file name uses no directory,\n"
+"              or if the directories it mentions already exist, no  directories\n"
+"              will be created.\n"
 "\n"
 "              Created dirs are made with mode 0750 on unix style file systems.\n"
-, stdout);
- fputs(
 "              To  create remote directories when using FTP or SFTP, try --ftp-\n"
 "              create-dirs.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing --create-dirs multiple  times  has  no  extra  effect.\n"
+"              Disable it again with --no-create-dirs.\n"
+"\n"
 "              Example:\n"
 "               curl --create-dirs --output local/dir/file https://example.com\n"
 "\n"
@@ -835,7 +886,7 @@ void hugehelp(void)
 "\n"
 "       --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"
 , stdout);
  fputs(
 "              set which 'mode' to set on the file at creation time, instead of\n"
@@ -843,20 +894,24 @@ void hugehelp(void)
 "\n"
 "              This option takes an octal number as argument.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --create-file-mode is provided several times,  the  last  set\n"
+"              value will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --create-file-mode 0777 -T localfile sftp://example.com/new\n"
 "\n"
 "              See also --ftp-create-dirs. Added in 7.75.0.\n"
 "\n"
-"       --crlf (FTP  SMTP)  Convert  LF  to  CRLF  in  upload.  Useful  for MVS\n"
 , stdout);
  fputs(
+"       --crlf (FTP  SMTP)  Convert  LF  to  CRLF  in  upload.  Useful  for MVS\n"
 "              (OS/390).\n"
 "\n"
 "              (SMTP added in 7.40.0)\n"
 "\n"
+"              Providing --crlf multiple times has no extra effect.  Disable it\n"
+"              again with --no-crlf.\n"
+"\n"
 "              Example:\n"
 "               curl --crlf -T file ftp://example.com/\n"
 "\n"
@@ -864,71 +919,79 @@ void hugehelp(void)
 "\n"
 "       --crlfile <file>\n"
 "              (TLS) Provide a file using PEM format with a Certificate Revoca-\n"
+, stdout);
+ fputs(
 "              tion List that may specify peer certificates that are to be con-\n"
 "              sidered revoked.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
+"              If  --crlfile is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --crlfile rejects.txt https://example.com\n"
 "\n"
 "              See also --cacert and --capath.\n"
 "\n"
 "       --curves <algorithm list>\n"
 "              (TLS) Tells curl to request specific curves to  use  during  SSL\n"
+, stdout);
+ fputs(
 "              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"
-, stdout);
- fputs(
 "              \"openssl s_client/s_server\" utilities.\n"
 "\n"
 "              --curves allows a OpenSSL powered curl to  make  SSL-connections\n"
 "              with  exactly  the  (EC) curve requested by the client, avoiding\n"
+, stdout);
+ fputs(
 "              nontransparent client/server negotiations.\n"
 "\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"
+"              be used.\n"
 "              Example:\n"
 "               curl --curves X25519 https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --ciphers. Added in 7.73.0.\n"
 "\n"
 "       --data-ascii <data>\n"
 "              (HTTP) This is just an alias for -d, --data.\n"
 "\n"
+, stdout);
+ fputs(
+"              --data-ascii can be used several times in a command line\n"
+"\n"
 "              Example:\n"
 "               curl --data-ascii @file https://example.com\n"
 "\n"
 "              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"
+"              If  you  start  the data with the letter @, the rest should be a\n"
 , stdout);
  fputs(
-"              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"
+"              filename. Data is posted in a similar manner as --data does, ex-\n"
+"              cept  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 --data the default content-type sent to the server  is  ap-\n"
+"              plication/x-www-form-urlencoded.  If  you  want  the  data to be\n"
+"              treated as arbitrary binary data by the server then set the con-\n"
 , stdout);
  fputs(
-"              treated as arbitrary binary data by the server then set the con-\n"
-"              tent-type to octet-stream: -H \"Content-Type:  application/octet-\n"
+"              tent-type  to octet-stream: -H \"Content-Type: application/octet-\n"
 "              stream\".\n"
 "\n"
-"              If  this  option  is  used several times, the ones following the\n"
+"              If this option is used several times,  the  ones  following  the\n"
 "              first will append data as described in -d, --data.\n"
 "\n"
+"              --data-binary can be used several times in a command line\n"
+"\n"
 "              Example:\n"
 "               curl --data-binary @filename https://example.com\n"
 "\n"
@@ -937,8 +1000,10 @@ void hugehelp(void)
 "       --data-raw <data>\n"
 , stdout);
  fputs(
-"              (HTTP) This posts data similarly to -d, --data but  without  the\n"
-"              special interpretation of the @ character.\n"
+"              (HTTP)  This posts data similarly to --data but without the spe-\n"
+"              cial interpretation of the @ character.\n"
+"\n"
+"              --data-raw can be used several times in a command line\n"
 "\n"
 "              Examples:\n"
 "               curl --data-raw \"hello\" https://example.com\n"
@@ -947,120 +1012,125 @@ void hugehelp(void)
 "              See also -d, --data. Added in 7.43.0.\n"
 "\n"
 "       --data-urlencode <data>\n"
-"              (HTTP)  This posts data, similar to the other -d, --data options\n"
 , stdout);
  fputs(
-"              with the exception that this performs URL-encoding.\n"
+"              (HTTP) This posts data, similar to the other --data options with\n"
+"              the exception that this performs URL-encoding.\n"
 "\n"
-"              To be CGI-compliant, the <data> part should begin  with  a  name\n"
-"              followed  by a separator and a content specification. The <data>\n"
+"              To  be  CGI-compliant,  the <data> part should begin with a name\n"
+"              followed by a separator and a content specification. The  <data>\n"
 "              part can be passed to curl using one of the following syntaxes:\n"
 "\n"
 "              content\n"
-"                     This will make curl URL-encode the content and pass  that\n"
-"                     on.  Just be careful so that the content does not contain\n"
+"                     This  will make curl URL-encode the content and pass that\n"
 , stdout);
  fputs(
-"                     any = or @ symbols, as that will  then  make  the  syntax\n"
+"                     on. Just be careful so that the content does not  contain\n"
+"                     any  =  or  @  symbols, as that will then make the syntax\n"
 "                     match one of the other cases below!\n"
 "\n"
 "              =content\n"
-"                     This  will make curl URL-encode the content and pass that\n"
+"                     This will make curl URL-encode the content and pass  that\n"
 "                     on. The preceding = symbol is not included in the data.\n"
 "\n"
 "              name=content\n"
-"                     This will make curl URL-encode the content part and  pass\n"
 , stdout);
  fputs(
-"                     that  on.  Note that the name part is expected to be URL-\n"
+"                     This  will make curl URL-encode the content part and pass\n"
+"                     that on. Note that the name part is expected to  be  URL-\n"
 "                     encoded already.\n"
 "\n"
 "              @filename\n"
-"                     This will make curl load data from the  given  file  (in-\n"
-"                     cluding  any  newlines), URL-encode that data and pass it\n"
+"                     This  will  make  curl load data from the given file (in-\n"
+"                     cluding any newlines), URL-encode that data and  pass  it\n"
 "                     on in the POST.\n"
 "\n"
 "              name@filename\n"
-"                     This will make curl load data from the  given  file  (in-\n"
 , stdout);
  fputs(
-"                     cluding  any  newlines), URL-encode that data and pass it\n"
-"                     on in the POST. The name part  gets  an  equal  sign  ap-\n"
-"                     pended,  resulting  in name=urlencoded-file-content. Note\n"
+"                     This  will  make  curl load data from the given file (in-\n"
+"                     cluding any newlines), URL-encode that data and  pass  it\n"
+"                     on  in  the  POST.  The  name part gets an equal sign ap-\n"
+"                     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"
+"\n"
 "       Examples:\n"
-"        curl --data-urlencode name=val https://example.com\n"
-"        curl --data-urlencode =encodethis https://example.com\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"
 "\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  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"
-"              filled in an HTML form and presses the submit button. This  will\n"
 , stdout);
  fputs(
+"              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"
-"              value of a form field you may use --data-urlencode.\n"
-"\n"
+"              pretation of the @ character. To post data  purely  binary,  you\n"
+"              should  instead  use the --data-binary option. To URL-encode the\n"
 , stdout);
  fputs(
-"              If  any of these options is used more than once on the same com-\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"
 "              mand line, the data pieces specified will be merged with a sepa-\n"
-"              rating  &-symbol.  Thus,  using  '-d name=daniel -d skill=lousy'\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"
-"              If  you  start  the data with the letter @, the rest should be a\n"
 , stdout);
  fputs(
-"              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"
-"              to have a special interpretation use --data-raw instead.\n"
-"\n"
-"              Examples:\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 --data is told\n"
+"              to read from a file like that,  carriage  returns  and  newlines\n"
+"              will be stripped out. If you do not want the @ character to have\n"
 , stdout);
  fputs(
+"              a special interpretation use --data-raw instead.\n"
+"\n"
+"              --data can be used several times in a command line\n"
+"\n"
+"              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"
-"              See  also  --data-binary,  --data-urlencode and --data-raw. This\n"
-"              option overrides -F, --form and -I,  --head  and  -T,  --upload-\n"
-"              file.\n"
-"\n"
-"       --delegation <LEVEL>\n"
-"              (GSS/kerberos)  Set  LEVEL to tell the server what it is allowed\n"
+"              See also --data-binary, --data-urlencode  and  --data-raw.  This\n"
+"              option  is  mutually  exclusive to -F, --form and -I, --head and\n"
 , stdout);
  fputs(
+"              -T, --upload-file.\n"
+"\n"
+"       --delegation <LEVEL>\n"
+"              (GSS/kerberos) Set LEVEL to tell the server what it  is  allowed\n"
 "              to delegate when it comes to user credentials.\n"
 "\n"
 "              none   Do not allow any delegation.\n"
 "\n"
-"              policy Delegates if and only if the OK-AS-DELEGATE flag  is  set\n"
-"                     in  the  Kerberos  service  ticket,  which is a matter of\n"
+"              policy Delegates  if  and only if the OK-AS-DELEGATE flag is set\n"
+"                     in the Kerberos service ticket,  which  is  a  matter  of\n"
 "                     realm policy.\n"
 "\n"
+, stdout);
+ fputs(
 "              always Unconditionally allow the server to delegate.\n"
 "\n"
-"       If this option is used several times, the last one will be used.\n"
+"       If  --delegation  is provided several times, the last set value will be\n"
+"       used.\n"
 "\n"
 "       Example:\n"
-, stdout);
- fputs(
 "        curl --delegation \"none\" https://example.com\n"
 "\n"
 "       See also -k, --insecure and --ssl.\n"
@@ -1068,42 +1138,47 @@ void hugehelp(void)
 "       --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"
-"              -u, --user option to set user name and password.\n"
-"\n"
-"              If  this  option  is  used  several times, only the first one is\n"
 , stdout);
  fputs(
-"              used.\n"
+"              the wire in clear text. Use this in combination with the  normal\n"
+"              --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"
 "              Example:\n"
 "               curl -u name:password --digest https://example.com\n"
 "\n"
 "              See also -u, --user, --proxy-digest and --anyauth.  This  option\n"
-"              overrides --basic and --ntlm and --negotiate.\n"
+, stdout);
+ fputs(
+"              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(
 "              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"
+, stdout);
+ fputs(
 "              servers, but they enable more functionality in a better way than\n"
 "              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"
 "              Disabling  EPRT only changes the active behavior. If you want to\n"
-"              switch to passive mode you need to not  use  -P,  --ftp-port  or\n"
-"              force it with --ftp-pasv.\n"
+, stdout);
+ fputs(
+"              switch to passive mode you need to not use --ftp-port  or  force\n"
+"              it with --ftp-pasv.\n"
+"\n"
+"              Providing  --disable-eprt  multiple  times  has no extra effect.\n"
+"              Disable it again with --no-disable-eprt.\n"
 "\n"
 "              Example:\n"
 "               curl --disable-eprt ftp://example.com/\n"
@@ -1111,35 +1186,41 @@ void hugehelp(void)
 "              See also --disable-epsv and -P, --ftp-port.\n"
 "\n"
 "       --disable-epsv\n"
+"              (FTP) Tell curl to disable the use of the EPSV command when  do-\n"
 , stdout);
  fputs(
-"              (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"
+"              ing  passive  FTP transfers. Curl will normally always first at-\n"
 "              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"
 "              is an alias for --disable-epsv.\n"
 "\n"
-"              If  the  server is an IPv6 host, this option will have no effect\n"
-, stdout);
- fputs(
+"              If the server is an IPv6 host, this option will have  no  effect\n"
 "              as EPSV is necessary then.\n"
 "\n"
+, stdout);
+ fputs(
 "              Disabling EPSV only changes the passive behavior. If you want to\n"
 "              switch to active mode you need to use -P, --ftp-port.\n"
 "\n"
+"              Providing --disable-epsv multiple times  has  no  extra  effect.\n"
+"              Disable it again with --no-disable-epsv.\n"
+"\n"
 "              Example:\n"
 "               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"
 , 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"
+"              If  used  as the first parameter on the command line, the curlrc\n"
+"              config file will not be read and used. See the --config for  de-\n"
+"              tails on the default config file search path.\n"
+"\n"
+"              Providing --disable multiple times has no extra effect.  Disable\n"
+"              it again with --no-disable.\n"
 "\n"
 "              Example:\n"
 "               curl -q https://example.com\n"
@@ -1147,15 +1228,20 @@ void hugehelp(void)
 "              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"
-"              provided at run-time or similar.\n"
-"\n"
 , stdout);
  fputs(
+"              (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"
+"              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"
 "              Example:\n"
 "               curl --disallow-username-in-url https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also --proto. Added in 7.61.0.\n"
 "\n"
 "       --dns-interface <interface>\n"
@@ -1164,23 +1250,27 @@ void hugehelp(void)
 "              not  affect  DNS). The supplied string must be an interface name\n"
 "              (not an address).\n"
 "\n"
+"              If --dns-interface is provided several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 , stdout);
  fputs(
 "               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"
+"              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"
 "              (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"
+"              quests, so that the DNS requests originate  from  this  address.\n"
 , stdout);
  fputs(
 "              The argument should be a single IPv4 address.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              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"
@@ -1196,26 +1286,28 @@ void hugehelp(void)
 "              quests,  so  that  the DNS requests originate from this address.\n"
 "              The argument should be a single IPv6 address.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --dns-ipv6-addr is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --dns-ipv6-addr 2a04:4e42::561 https://example.com\n"
 "\n"
-"              See also --dns-interface  and  --dns-ipv4-addr.  --dns-ipv6-addr\n"
 , stdout);
  fputs(
-"              requires  that  the  underlying  libcurl was built to support c-\n"
+"              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"
+"              fault.  The list of IP addresses should be separated  with  com-\n"
 "              mas. Port numbers may also optionally be given as :<port-number>\n"
-"              after each IP address.\n"
-"\n"
 , stdout);
  fputs(
-"              If this option is used several times, the last one will be used.\n"
+"              after each IP address.\n"
+"\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"
@@ -1225,17 +1317,25 @@ void hugehelp(void)
 "              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"
+"              Disable it again with --no-doh-cert-status.\n"
+"\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --doh-cert-status --doh-url https://doh.example https://example.com\n"
 "\n"
 "              See also --doh-insecure. Added in 7.76.0.\n"
 "\n"
 "       --doh-insecure\n"
-"              Same as -k, --insecure but used for DoH (DNS-over-HTTPS).\n"
+"              Same as --insecure but used for DoH (DNS-over-HTTPS).\n"
+"\n"
+, stdout);
+ fputs(
+"              Providing --doh-insecure multiple times  has  no  extra  effect.\n"
+"              Disable it again with --no-doh-insecure.\n"
 "\n"
 "              Example:\n"
 "               curl --doh-insecure --doh-url https://doh.example https://example.com\n"
@@ -1243,21 +1343,24 @@ void hugehelp(void)
 "              See also --doh-url. Added in 7.76.0.\n"
 "\n"
 "       --doh-url <URL>\n"
-, stdout);
- fputs(
 "              Specifies  which  DNS-over-HTTPS  (DoH) server to use to resolve\n"
 "              hostnames, instead of using the default name resolver mechanism.\n"
+, stdout);
+ fputs(
 "              The URL must be HTTPS.\n"
 "\n"
 "              Some  SSL  options  that you set for your transfer will apply to\n"
 "              DoH since the name lookups take place  over  SSL.  However,  the\n"
 "              certificate  verification  settings are not inherited and can be\n"
-, stdout);
- fputs(
 "              controlled separately via --doh-insecure and --doh-cert-status.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              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"
 "               curl --doh-url https://doh.example https://example.com\n"
 "\n"
@@ -1265,15 +1368,16 @@ 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"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --dump-header  is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --dump-header store.txt https://example.com\n"
@@ -1281,26 +1385,36 @@ void hugehelp(void)
 "              See also -o, --output.\n"
 "\n"
 "       --egd-file <file>\n"
+"              (TLS) Deprecated option. This option is ignored  by  curl  since\n"
 , stdout);
  fputs(
-"              (TLS)  Specify  the  path  name  to the Entropy Gathering Daemon\n"
-"              socket. The socket is used to seed the  random  engine  for  SSL\n"
-"              connections.\n"
+"              7.84.0.  Prior to that it only had an effect on curl if built to\n"
+"              use old versions of OpenSSL.\n"
+"\n"
+"              Specify the path name to the Entropy  Gathering  Daemon  socket.\n"
+"              The  socket  is  used  to seed the random engine for SSL connec-\n"
+"              tions.\n"
 "\n"
+"              If --egd-file is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --egd-file /random/here https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              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(
 "              engines.  Note  that  not all (and possibly none) of the engines\n"
-"              may be available at run-time.\n"
+"              may be available at runtime.\n"
 "\n"
+"              If --engine is provided several times, the last set  value  will\n"
+"              be used.\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --engine flavor https://example.com\n"
 "\n"
 "              See also --ciphers and --curves.\n"
@@ -1310,21 +1424,24 @@ void hugehelp(void)
 "              cific ETag read from the given file by sending a custom If-None-\n"
 "              Match header using the stored ETag.\n"
 "\n"
+"              For  correct results, make sure that the specified file contains\n"
 , stdout);
  fputs(
-"              For correct results, make sure that the specified file  contains\n"
-"              only  a  single  line  with  the  desired ETag. An empty file is\n"
+"              only a single line with the  desired  ETag.  An  empty  file  is\n"
 "              parsed as an empty ETag.\n"
 "\n"
-"              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"
+"              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"
 "              ETag in a subsequent request.\n"
 "\n"
-"              Example:\n"
-"               curl --etag-compare etag.txt https://example.com\n"
+"              If  --etag-compare is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
+"              Example:\n"
 , stdout);
  fputs(
+"               curl --etag-compare etag.txt https://example.com\n"
+"\n"
 "              See also --etag-save and -z, --time-cond. Added in 7.68.0.\n"
 "\n"
 "       --etag-save <file>\n"
@@ -1334,111 +1451,135 @@ void hugehelp(void)
 "\n"
 "              If no ETag is sent by the server, an empty file is created.\n"
 "\n"
+"              If --etag-save is provided several times,  the  last  set  value\n"
+, stdout);
+ fputs(
+"              will be used.\n"
+"\n"
 "              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"
+"              100-continue response when curl emits an  Expects:  100-continue\n"
+"              header  in  its  request.  By default curl will wait one second.\n"
+, stdout);
+ fputs(
+"              This option accepts decimal values! When curl stops waiting,  it\n"
 "              will continue as if the response has been received.\n"
 "\n"
+"              If  --expect100-timeout  is provided several times, the last set\n"
+"              value will be used.\n"
+"\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --expect100-timeout 2.5 -T file https://example.com\n"
 "\n"
 "              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"
 "              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"
-, stdout);
- fputs(
 "              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"
+, 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"
 "              ures go undetected by scripts and similar.\n"
 "\n"
-, stdout);
- fputs(
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
 "              This option does not imply -f, --fail, which causes transfers to\n"
+, stdout);
+ fputs(
 "              fail due to the server's HTTP status code. You can  combine  the\n"
-"              two options, however note -f, --fail is not global and is there-\n"
-"              fore contained by -:, --next.\n"
+"              two  options, however note --fail is not global and is therefore\n"
+"              contained by -:, --next.\n"
+"\n"
+"              Providing --fail-early multiple times has no extra effect.  Dis-\n"
+"              able it again with --no-fail-early.\n"
 "\n"
 "              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"
+, stdout);
+ fputs(
 "       --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"
+"              (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"
+"              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"
+"              turn error 22.\n"
+"\n"
 , stdout);
  fputs(
-"              turn error 22.\n"
+"              This is an alternative option to --fail which  makes  curl  fail\n"
+"              for the same circumstances but without saving the content.\n"
 "\n"
-"              This  is  an  alternative  option to -f, --fail which makes curl\n"
-"              fail for the same circumstances but without saving the content.\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. Added in 7.76.0.\n"
+"              See also -f, --fail. This option is mutually  exclusive  to  -f,\n"
+"              --fail. Added in 7.76.0.\n"
 "\n"
-"       -f, --fail\n"
-"              (HTTP) Fail silently (no output at all) on server  errors.  This\n"
-"              is  mostly done to enable scripts etc to better deal with failed\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"
+"              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"
-"              successful response codes will slip through, especially when au-\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"
+"              Providing --fail multiple times has no extra effect.  Disable it\n"
+"              again with --no-fail.\n"
+"\n"
 "              Example:\n"
 "               curl --fail https://example.com\n"
 "\n"
-"              See also --fail-with-body.\n"
-"\n"
-"       --false-start\n"
-"              (TLS)  Tells  curl  to use false start during the TLS handshake.\n"
-"              False start is a mode where a TLS client will start sending  ap-\n"
-"              plication  data  before verifying the server's Finished message,\n"
+"              See  also --fail-with-body. This option is mutually exclusive to\n"
 , stdout);
  fputs(
+"              --fail-with-body.\n"
+"\n"
+"       --false-start\n"
+"              (TLS) Tells curl to use false start during  the  TLS  handshake.\n"
+"              False  start is a mode where a TLS client will start sending ap-\n"
+"              plication data before verifying the server's  Finished  message,\n"
 "              thus saving a round trip when performing a full handshake.\n"
 "\n"
-"              This is currently only implemented in the NSS and Secure  Trans-\n"
+"              This  is currently only implemented in the NSS and Secure Trans-\n"
+, stdout);
+ fputs(
 "              port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
 "\n"
+"              Providing --false-start multiple  times  has  no  extra  effect.\n"
+"              Disable it again with --no-false-start.\n"
+"\n"
 "              Example:\n"
 "               curl --false-start https://example.com\n"
 "\n"
@@ -1450,201 +1591,210 @@ void hugehelp(void)
  fputs(
 "              files using backslash-escaping instead of percent-encoding.\n"
 "\n"
+"              If --form-escape is provided several times, the last  set  value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
-"               curl --form-escape --form 'field\\name=curl' 'file=@load\"this' https://example.com\n"
+"               curl --form-escape -F 'field\\name=curl' -F 'file=@load\"this' https://example.com\n"
 "\n"
 "              See also -F, --form. Added in 7.81.0.\n"
 "\n"
 "       --form-string <name=string>\n"
-"              (HTTP SMTP IMAP) Similar to -F, --form  except  that  the  value\n"
-"              string  for  the  named parameter is used literally. Leading '@'\n"
+"              (HTTP  SMTP IMAP) Similar to --form except that the value string\n"
 , stdout);
  fputs(
-"              and '<' characters, and the ';type=' string in the value have no\n"
-"              special meaning. Use this in preference to -F, --form if there's\n"
-"              any possibility that the string value may  accidentally  trigger\n"
-"              the '@' or '<' features of -F, --form.\n"
+"              for the named parameter is used literally. Leading '@'  and  '<'\n"
+"              characters, and the ';type=' string in the value have no special\n"
+"              meaning. Use this in preference to --form if there's any  possi-\n"
+"              bility that the string value may accidentally trigger the '@' or\n"
+"              '<' features of -F, --form.\n"
+"\n"
+"              --form-string can be used several times in a command line\n"
 "\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --form-string \"data\" https://example.com\n"
 "\n"
 "              See also -F, --form.\n"
 "\n"
 "       -F, --form <name=content>\n"
-, stdout);
- fputs(
-"              (HTTP  SMTP  IMAP) For HTTP protocol family, this lets curl emu-\n"
-"              late a filled-in form in which a user  has  pressed  the  submit\n"
-"              button.  This  causes  curl  to POST data using the Content-Type\n"
+"              (HTTP SMTP IMAP) For HTTP protocol family, this lets  curl  emu-\n"
+"              late  a  filled-in  form  in which a user has pressed the submit\n"
+"              button. This causes curl to POST  data  using  the  Content-Type\n"
 "              multipart/form-data according to RFC 2388.\n"
 "\n"
+, stdout);
+ fputs(
 "              For SMTP and IMAP protocols, this is the means to compose a mul-\n"
 "              tipart mail message to transmit.\n"
 "\n"
-, stdout);
- fputs(
-"              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"
-"              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"
+"              the  symbol  <.  The  difference  between @ and < is then that @\n"
 , stdout);
  fputs(
+"              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"
-"              Tell  curl to read content from stdin instead of a file by using\n"
+"              Tell curl to read content from stdin instead of a file by  using\n"
 "              - as filename. This goes for both @ and < constructs. When stdin\n"
 "              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"
 , stdout);
  fputs(
-"              ilar) is unfortunately not subject to buffering and will be  ef-\n"
-"              fectively  read at transmission time; since the full size is un-\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"
 "              known before the transfer starts, such data is sent as chunks by\n"
 "              HTTP and rejected by IMAP.\n"
 "\n"
+, stdout);
+ fputs(
 "              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"
-, stdout);
- fputs(
 "               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"
-"              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"
+, 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"
 "              file:\n"
 "\n"
 "               curl -F \"story=<hugefile.txt\" https://example.com/\n"
 "\n"
-, stdout);
- fputs(
-"              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"
 "\n"
 "              or\n"
 "\n"
+, stdout);
+ 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"
-, stdout);
- fputs(
-"              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"
 "\n"
 "              or\n"
 "\n"
+, 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"
-, stdout);
- fputs(
-"              Quoting  must  also  be  applied to non-file data if it contains\n"
+"              Quoting must also be applied to non-file  data  if  it  contains\n"
 "              semicolons, leading/trailing spaces or leading double quotes:\n"
 "\n"
+, stdout);
+ fputs(
 "               curl -F 'colors=\"red; green; blue\";type=text/x-myapp' example.com\n"
 "\n"
-"              You can add custom headers to the  field  by  setting  headers=,\n"
+"              You  can  add  custom  headers to the field by setting headers=,\n"
 "              like\n"
 "\n"
 "                curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
 "\n"
 "              or\n"
 "\n"
-, stdout);
- fputs(
 "                curl -F \"submit=OK;headers=@headerfile\" example.com\n"
 "\n"
-"              The  headers=  keyword may appear more that once and above notes\n"
-"              about quoting apply. When headers are read from  a  file,  Empty\n"
-"              lines and lines starting with '#' are comments and ignored; each\n"
-"              header can be folded by splitting between two words and starting\n"
-"              the  continuation  line  with a space; embedded carriage-returns\n"
+"              The headers= keyword may appear more that once and  above  notes\n"
 , stdout);
  fputs(
-"              and trailing spaces are stripped.   Here  is  an  example  of  a\n"
+"              about  quoting  apply.  When headers are read from a file, Empty\n"
+"              lines and lines starting with '#' are comments and ignored; each\n"
+"              header can be folded by splitting between two words and starting\n"
+"              the continuation line with a  space;  embedded  carriage-returns\n"
+"              and  trailing  spaces  are  stripped.   Here  is an example of a\n"
 "              header file contents:\n"
 "\n"
 "                # This file contain two headers.\n"
+, stdout);
+ fputs(
 "                X-header-1: this is a header\n"
 "\n"
 "                # The following header is folded.\n"
 "                X-header-2: this is\n"
 "                 another header\n"
 "\n"
-"              To  support  sending  multipart mail messages, the syntax is ex-\n"
+"              To support sending multipart mail messages, the  syntax  is  ex-\n"
 "              tended as follows:\n"
+"              -  name can be omitted: the equal sign is the first character of\n"
+"              the argument,\n"
+"              - if data starts with '(', this signals to start  a  new  multi-\n"
 , stdout);
  fputs(
-"              - name can be omitted: the equal sign is the first character  of\n"
-"              the argument,\n"
-"              -  if  data  starts with '(', this signals to start a new multi-\n"
 "              part: it can be followed by a content type specification.\n"
 "              - a multipart can be terminated with a '=)' argument.\n"
 "\n"
 "              Example: the following command sends an SMTP mime email consist-\n"
 "              ing in an inline part in two alternative formats: plain text and\n"
-, stdout);
- fputs(
 "              HTML. It attaches a text file:\n"
 "\n"
 "               curl -F '=(;type=multipart/alternative' \\\n"
 "                    -F '=plain text message' \\\n"
+, stdout);
+ fputs(
 "                    -F '= <body>HTML message</body>;type=text/html' \\\n"
 "                    -F '=)' -F '=@textfile.txt' ...  smtp://example.com\n"
 "\n"
-"              Data can be encoded for transfer using encoder=.  Available  en-\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"
+"              rejects 8-bit characters with a transfer error, quoted-printable\n"
 , stdout);
  fputs(
-"              corresponding Content-Transfer-Encoding header, 7bit  that  only\n"
-"              rejects 8-bit characters with a transfer error, quoted-printable\n"
-"              and base64 that encodes  data  according  to  the  corresponding\n"
+"              and  base64  that  encodes  data  according to the corresponding\n"
 "              schemes, limiting lines length to 76 characters.\n"
 "\n"
-"              Example:  send  multipart mail with a quoted-printable text mes-\n"
+"              Example: send multipart mail with a quoted-printable  text  mes-\n"
 "              sage and a base64 attached file:\n"
 "\n"
 "               curl -F '=text message;encoder=quoted-printable' \\\n"
-, stdout);
- fputs(
 "                    -F '=@localfile;encoder=base64' ... smtp://example.com\n"
 "\n"
 "              See further examples and details in the MANUAL.\n"
 "\n"
-"              This option can be used multiple times.\n"
+, stdout);
+ fputs(
+"              --form can be used several times in a command line\n"
 "\n"
 "              Example:\n"
 "               curl --form \"name=curl\" --form \"file=@loadthis\" https://example.com\n"
 "\n"
-"              See also -d, --data, --form-string and --form-escape.  This  op-\n"
-"              tion overrides -d, --data and -I, --head and -T, --upload-file.\n"
+"              See  also  -d, --data, --form-string and --form-escape. This op-\n"
+"              tion is mutually exclusive to -d, --data and -I, --head and  -T,\n"
+"              --upload-file.\n"
 "\n"
 "       --ftp-account <data>\n"
+"              (FTP) When an FTP server asks for \"account data\" after user name\n"
 , stdout);
  fputs(
-"              (FTP) When an FTP server asks for \"account data\" after user name\n"
 "              and password has been provided, this data is sent off using  the\n"
 "              ACCT command.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --ftp-account  is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --ftp-account \"mr.robot\" ftp://example.com/\n"
@@ -1652,103 +1802,114 @@ 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"
 , stdout);
  fputs(
-"              (FTP)  If  authenticating with the USER and PASS commands fails,\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"
+"              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"
+"              set value will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --ftp-alternative-to-user \"U53r\" ftp://example.com\n"
 "\n"
-"              See also --ftp-account and -u, --user.\n"
-"\n"
 , stdout);
  fputs(
+"              See also --ftp-account and -u, --user.\n"
+"\n"
 "       --ftp-create-dirs\n"
 "              (FTP  SFTP)  When  an FTP or SFTP URL/operation uses a path that\n"
 "              does not currently exist on the server, the standard behavior of\n"
 "              curl is to fail. Using this option, curl will instead attempt to\n"
 "              create missing directories.\n"
 "\n"
+"              Providing --ftp-create-dirs multiple times has no extra  effect.\n"
+"              Disable it again with --no-ftp-create-dirs.\n"
+"\n"
+, stdout);
+ fputs(
 "              Example:\n"
 "               curl --ftp-create-dirs -T file ftp://example.com/remote/path/file\n"
 "\n"
 "              See also --create-dirs.\n"
 "\n"
 "       --ftp-method <method>\n"
-, stdout);
- fputs(
-"              (FTP) Control what method curl should use to reach a file on  an\n"
-"              FTP(S)  server. The method argument should be one of the follow-\n"
+"              (FTP)  Control what method curl should use to reach a file on an\n"
+"              FTP(S) server. The method argument should be one of the  follow-\n"
 "              ing alternatives:\n"
 "\n"
 "              multicwd\n"
-"                     curl does a single CWD operation for each  path  part  in\n"
-"                     the  given URL. For deep hierarchies this means many com-\n"
-"                     mands. This is how RFC 1738 says it should be done.  This\n"
+"                     curl  does  a  single CWD operation for each path part in\n"
 , stdout);
  fputs(
+"                     the given URL. For deep hierarchies this means many  com-\n"
+"                     mands.  This is how RFC 1738 says it should be done. This\n"
 "                     is the default but the slowest behavior.\n"
 "\n"
-"              nocwd  curl  does  no  CWD at all. curl will do SIZE, RETR, STOR\n"
+"              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
 "                     etc and give a full path to the server for all these com-\n"
 "                     mands. This is the fastest behavior.\n"
 "\n"
 "              singlecwd\n"
-"                     curl does one CWD with the full target directory and then\n"
-"                     operates on the file \"normally\"  (like  in  the  multicwd\n"
 , stdout);
  fputs(
-"                     case).  This  is  somewhat  more standards compliant than\n"
+"                     curl does one CWD with the full target directory and then\n"
+"                     operates  on  the  file  \"normally\" (like in the multicwd\n"
+"                     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"
+"\n"
 "       Examples:\n"
 "        curl --ftp-method multicwd ftp://example.com/dir1/dir2/file\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"
 "\n"
 "       See also -l, --list-only.\n"
 "\n"
 "       --ftp-pasv\n"
-, stdout);
- fputs(
 "              (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"
-"              If this option is used several times,  only  the  first  one  is\n"
-"              used.  Undoing  an enforced passive really is not doable but you\n"
-"              must then instead enforce the correct -P, --ftp-port again.\n"
+"              override a previous --ftp-port option.\n"
 "\n"
+"              Reversing an enforced passive really is not doable but you  must\n"
 , stdout);
  fputs(
+"              then instead enforce the correct --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"
+"              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"
-"              (FTP)  Reverses  the  default initiator/listener roles when con-\n"
-"              necting with FTP. This option makes curl use active  mode.  curl\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"
 "              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(
 "                     e.g. \"eth0\" to specify which interface's IP  address  you\n"
 "                     want to use (Unix only)\n"
 "\n"
 "              IP address\n"
-, stdout);
- fputs(
 "                     e.g. \"192.168.10.1\" to specify the exact IP address\n"
 "\n"
 "              host name\n"
@@ -1757,23 +1918,25 @@ void hugehelp(void)
 "              -      make  curl  pick the same IP address that is already used\n"
 "                     for the control connection\n"
 "\n"
-"       If this option is used several times, the last one will be  used.  Dis-\n"
-"       able  the  use  of PORT with --ftp-pasv. Disable the attempt to use the\n"
 , stdout);
  fputs(
-"       EPRT command instead of PORT by using --disable-eprt.  EPRT  is  really\n"
+"       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"
 "\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  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"
+, stdout);
+ fputs(
 "       not be available.\n"
 "\n"
+"       If --ftp-port is provided several times, the last  set  value  will  be\n"
+"       used.\n"
+"\n"
 "       Examples:\n"
 "        curl -P - ftp:/example.com\n"
-, stdout);
- fputs(
 "        curl -P eth0 ftp:/example.com\n"
 "        curl -P 192.168.0.2 ftp:/example.com\n"
 "\n"
@@ -1782,28 +1945,37 @@ void hugehelp(void)
 "       --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(
 "              command  for  directory  listings as well as up and downloads in\n"
 "              PASV mode.\n"
 "\n"
+"              Providing --ftp-pret multiple times has no extra  effect.   Dis-\n"
+"              able it again with --no-ftp-pret.\n"
+"\n"
 "              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"
-"              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"
+, 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"
 "              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"
+"              of PASV.\n"
+"\n"
+"              Providing --ftp-skip-pasv-ip multiple times has no extra effect.\n"
 , stdout);
  fputs(
-"              This  option has no effect if PORT, EPRT or EPSV is used instead\n"
-"              of PASV.\n"
+"              Disable it again with --no-ftp-skip-pasv-ip.\n"
+"\n"
 "              Example:\n"
 "               curl --ftp-skip-pasv-ip ftp://example.com/\n"
 "\n"
@@ -1817,92 +1989,106 @@ void hugehelp(void)
  fputs(
 "              the shutdown and waits for a reply from the server.\n"
 "\n"
+"              Providing --ftp-ssl-ccc-mode multiple times has no extra effect.\n"
+"              Disable it again with --no-ftp-ssl-ccc-mode.\n"
+"\n"
 "              Example:\n"
 "               curl --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/\n"
 "\n"
 "              See also --ftp-ssl-ccc.\n"
 "\n"
 "       --ftp-ssl-ccc\n"
-"              (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"
+"              (FTP) Use CCC (Clear Command Channel)  Shuts  down  the  SSL/TLS\n"
 , stdout);
  fputs(
+"              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"
 "\n"
+"              Providing  --ftp-ssl-ccc  multiple  times  has  no extra effect.\n"
+"              Disable it again with --no-ftp-ssl-ccc.\n"
+"\n"
 "              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"
+"              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(
-"              Example:\n"
 "               curl --ftp-ssl-control ftp://example.com\n"
 "\n"
 "              See also --ssl.\n"
 "\n"
 "       -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"
-"              GET  request instead of the POST request that otherwise would be\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"
+"              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(
-"              If used in combination with -I, --head, the POST data  will  in-\n"
 "              stead be appended to the URL with a HEAD request.\n"
 "\n"
-"              If  this  option  is  used  several times, only the first one is\n"
-"              used. This is because undoing a GET does not make sense, but you\n"
-"              should then instead enforce the alternative method you prefer.\n"
+"              Providing --get multiple times has no extra effect.  Disable  it\n"
+"              again with --no-get.\n"
 "\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 --globoff multiple times has no extra effect.  Disable\n"
+"              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"
-"              Happy  Eyeballs is an algorithm that attempts to connect to both\n"
-"              IPv4 and IPv6 addresses for  dual-stack  hosts,  giving  IPv6  a\n"
+"              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(
-"              head-start  of the specified number of milliseconds. If the IPv6\n"
-"              address cannot be connected to within that time, then a  connec-\n"
-"              tion  attempt is made to the IPv4 address in parallel. The first\n"
+"              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"
-"              The range of suggested useful values is limited. Happy  Eyeballs\n"
-"              RFC  6555  says  \"It  is RECOMMENDED that connection attempts be\n"
+"              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(
-"              paced 150-250 ms apart to balance human factors against  network\n"
-"              load.\"  libcurl currently defaults to 200 ms. Firefox and Chrome\n"
 "              currently default to 300 ms.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --happy-eyeballs-timeout-ms  is  provided several times, the\n"
+"              last set value will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --happy-eyeballs-timeout-ms 500 https://example.com\n"
@@ -1910,84 +2096,106 @@ void hugehelp(void)
 "              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"
 , stdout);
  fputs(
-"              (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"
 "              This option is primarily useful when sending test requests to  a\n"
 "              service that expects this header.\n"
 "\n"
-"              Example:\n"
-"               curl --haproxy-protocol https://example.com\n"
+"              Providing --haproxy-protocol multiple times has no extra effect.\n"
+"              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"
 "              (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"
+"              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 --head multiple times has no extra effect.  Disable it\n"
+"              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"
-"              (HTTP) Extra header to include in the request when sending  HTTP\n"
-"              to  a  server. You may specify any number of extra headers. Note\n"
-"              that if you should add a custom header that has the same name as\n"
-"              one  of  the  internal  ones curl would use, your externally set\n"
-"              header will be used instead of the internal one. This allows you\n"
+"              (HTTP IMAP SMTP) Extra header to include  in  information  sent.\n"
+"              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  --form  op-\n"
+"              tions,  it  is  prepended to the resulting MIME document, effec-\n"
+"              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(
-"              to  make  even  trickier  stuff than curl would normally do. You\n"
-"              should not replace internally set headers without  knowing  per-\n"
-"              fectly  well  what  you  are doing. Remove an internal header by\n"
-"              giving a replacement without content on the right  side  of  the\n"
-"              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
-"              value then its header must be terminated with a semicolon,  such\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"
+"              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(
-"              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
+"              \"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"
+"              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"
-"              You need --proxy-header to send custom headers  intended  for  a\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"
+"              this option.\n"
+"\n"
+"              You  need  --proxy-header to send custom headers intended for an\n"
 "              HTTP proxy. Added in 7.37.0.\n"
 "\n"
-"              Passing  on  a  \"Transfer-Encoding: chunked\" header when doing a\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"
 , stdout);
  fputs(
-"              WARNING:  headers  set  with  this option will be set in all re-\n"
-"              quests - even after redirects are followed, like when told  with\n"
-"              -L,  --location. This can lead to the header being sent to other\n"
-"              hosts than the original host, so  sensitive  headers  should  be\n"
-"              used with caution combined with following redirects.\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"
+"              other  hosts than the original host, so sensitive headers should\n"
+"              be used with caution combined with following redirects.\n"
 "\n"
-"              This  option  can  be  used multiple times to add/replace/remove\n"
-"              multiple headers.\n"
+"              --header can be used several times in a command line\n"
 "\n"
+"              Examples:\n"
 , stdout);
  fputs(
-"              Examples:\n"
 "               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"
@@ -2003,70 +2211,86 @@ void hugehelp(void)
 "              display  all  options available.  If the argument \"category\" was\n"
 "              provided, curl will display all categories and their meanings.\n"
 "\n"
+"              Providing --help multiple times has no extra effect.  Disable it\n"
+"              again with --no-help.\n"
+"\n"
 "              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"
 "              Example:\n"
 "               curl --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/\n"
 "\n"
+, stdout);
+ fputs(
 "              See also --hostpubsha256.\n"
 "\n"
 "       --hostpubsha256 <sha256>\n"
 "              (SFTP SCP) Pass a string containing a Base64-encoded SHA256 hash\n"
-, stdout);
- fputs(
 "              of the remote host's public key. Curl will refuse the connection\n"
 "              with the host unless the hashes match.\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"
-, stdout);
- fputs(
-"              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"
+"              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"
+, stdout);
+ fputs(
 "              Specify a \"\" file name (zero length) to avoid loading/saving and\n"
 "              make curl just handle HSTS in memory.\n"
 "\n"
-"              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"
+"\n"
 "              Example:\n"
 "               curl --hsts cache.txt https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --proto. Added in 7.74.0.\n"
 "\n"
+, stdout);
+ fputs(
 "       --http0.9\n"
 "              (HTTP) Tells curl to be fine with HTTP version 0.9 response.\n"
 "\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"
+"              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"
-"              Example:\n"
+"              Providing --http0.9 multiple times has no extra effect.  Disable\n"
 , stdout);
  fputs(
+"              it again with --no-http0.9.\n"
+"\n"
+"              Example:\n"
 "               curl --http0.9 https://example.com\n"
 "\n"
 "              See also --http1.1, --http2 and --http3. Added in 7.64.0.\n"
@@ -2075,103 +2299,127 @@ void hugehelp(void)
 "              (HTTP)  Tells  curl to use HTTP version 1.0 instead of using its\n"
 "              internally preferred HTTP version.\n"
 "\n"
+"              Providing --http1.0 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --http1.0 https://example.com\n"
 "\n"
-"              See  also  --http0.9  and  --http1.1.  This   option   overrides\n"
-"              --http1.1 and --http2.\n"
-"\n"
-"       --http1.1\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"
+"\n"
+"       --http1.1\n"
 "              (HTTP) Tells curl to use HTTP version 1.1.\n"
 "\n"
+"              Providing --http1.1 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --http1.1 https://example.com\n"
 "\n"
-"              See  also  --http1.1  and  --http0.9.  This option overrides -0,\n"
-"              --http1.0 and --http2. Added in 7.33.0.\n"
+"              See also -0, --http1.0 and --http0.9. This  option  is  mutually\n"
+, stdout);
+ fputs(
+"              exclusive  to -0, --http1.0 and --http2 and --http2-prior-knowl-\n"
+"              edge and --http3. Added in 7.33.0.\n"
 "\n"
 "       --http2-prior-knowledge\n"
 "              (HTTP) Tells curl to  issue  its  non-TLS  HTTP  requests  using\n"
 "              HTTP/2  without  HTTP/1.1  Upgrade.  It requires prior knowledge\n"
-, stdout);
- fputs(
 "              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(
 "              version in the TLS handshake.\n"
 "\n"
+"              Providing --http2-prior-knowledge multiple times  has  no  extra\n"
+"              effect.  Disable it again with --no-http2-prior-knowledge.\n"
+"\n"
 "              Example:\n"
 "               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"
+"              See  also  --http2 and --http3. --http2-prior-knowledge requires\n"
+"              that the underlying libcurl was built to  support  HTTP/2.  This\n"
 , stdout);
  fputs(
-"              option overrides --http1.1 and -0, --http1.0 and --http2.  Added\n"
-"              in 7.49.0.\n"
+"              option  is mutually exclusive to --http1.1 and -0, --http1.0 and\n"
+"              --http2 and --http3. Added in 7.49.0.\n"
 "\n"
 "       --http2\n"
 "              (HTTP) Tells curl to use HTTP version 2.\n"
 "\n"
-"              For  HTTPS,  this means curl will attempt to negotiate HTTP/2 in\n"
+"              For HTTPS, this means curl will attempt to negotiate  HTTP/2  in\n"
 "              the TLS handshake. curl does this by default.\n"
 "\n"
 "              For HTTP, this means curl will attempt to upgrade the request to\n"
 "              HTTP/2 using the Upgrade: request header.\n"
 "\n"
-"              Example:\n"
 , stdout);
  fputs(
+"              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"
 "               curl --http2 https://example.com\n"
 "\n"
 "              See also --http1.1 and --http3. --http2 requires that the under-\n"
-"              lying libcurl was built to support HTTP/2. This option overrides\n"
-"              --http1.1  and  -0, --http1.0 and --http2-prior-knowledge. Added\n"
-"              in 7.33.0.\n"
+, stdout);
+ fputs(
+"              lying  libcurl was built to support HTTP/2. This option is mutu-\n"
+"              ally exclusive to --http1.1 and -0, --http1.0 and --http2-prior-\n"
+"              knowledge and --http3. Added in 7.33.0.\n"
 "\n"
 "       --http3\n"
-"              (HTTP) WARNING: this option is experimental. Do not use in  pro-\n"
-"              duction.\n"
+"              (HTTP)  **WARNING**:  this option is experimental. Do not use in\n"
+"              production.\n"
 "\n"
+"              Tells curl to use HTTP version 3 directly to the host  and  port\n"
+"              number used in the URL. A normal HTTP/3 transaction will be done\n"
 , stdout);
  fputs(
-"              Tells  curl  to use HTTP version 3 directly to the host and port\n"
-"              number used in the URL. A normal HTTP/3 transaction will be done\n"
-"              to  a  host and then get redirected via Alt-Svc, but this option\n"
-"              allows a user to circumvent that when you know that  the  target\n"
+"              to a host and then get redirected via Alt-Svc, but  this  option\n"
+"              allows  a  user to circumvent that when you know that the target\n"
 "              speaks HTTP/3 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 cannot fall back to a lower HTTP version on  its\n"
+"              This option will make curl fail if a QUIC connection  cannot  be\n"
+"              established,  it cannot fall back to a lower HTTP version on its\n"
 "              own.\n"
 "\n"
+"              Providing --http3 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               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 overrides\n"
-"              --http1.1 and -0, --http1.0 and --http2 and --http2-prior-knowl-\n"
-"              edge. Added in 7.66.0.\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. Added in 7.66.0.\n"
 "\n"
 "       --ignore-content-length\n"
+"              (FTP  HTTP)  For HTTP, Ignore the Content-Length header. This is\n"
 , stdout);
  fputs(
-"              (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"
+"              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"
-"              For  FTP (since 7.46.0), skip the RETR command to figure out the\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"
 , stdout);
  fputs(
+"              effect.  Disable it again with --no-ignore-content-length.\n"
+"\n"
 "              Example:\n"
 "               curl --ignore-content-length https://example.com\n"
 "\n"
@@ -2182,103 +2430,167 @@ void hugehelp(void)
 "              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"
-"              Example:\n"
 , stdout);
  fputs(
+"              To view the request headers, consider the --verbose option.\n"
+"\n"
+"              Providing --include multiple times has no extra effect.  Disable\n"
+"              it again with --no-include.\n"
+"\n"
+"              Example:\n"
 "               curl -i https://example.com\n"
 "\n"
 "              See also -v, --verbose.\n"
 "\n"
 "       -k, --insecure\n"
 "              (TLS SFTP SCP) By default, every secure connection curl makes is\n"
-"              verified to be secure before the transfer takes place. This  op-\n"
-"              tion  makes  curl skip the verification step and proceed without\n"
+"              verified  to be secure before the transfer takes place. This op-\n"
+, stdout);
+ fputs(
+"              tion makes curl skip the verification step and  proceed  without\n"
 "              checking.\n"
 "\n"
 "              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"
+, stdout);
+ fputs(
 "              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"
-, stdout);
- fputs(
-"              verification.  known_hosts is a  file  normally  stored  in  the\n"
-"              user's  home  directory in the .ssh subdirectory, which contains\n"
+"              For SFTP and SCP, this option makes curl  skip  the  known_hosts\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"
 "              WARNING: using this option makes the transfer insecure.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing  --insecure  multiple times has no extra effect.  Dis-\n"
+"              able it again with --no-insecure.\n"
+"\n"
 "              Example:\n"
 "               curl --insecure https://example.com\n"
 "\n"
 "              See also --proxy-insecure, --cacert and --capath.\n"
 "\n"
 "       --interface <name>\n"
-, stdout);
- fputs(
 "              Perform an operation using a specified interface. You can  enter\n"
 "              interface  name,  IP address or host name. An example could look\n"
 "              like:\n"
 "\n"
+, stdout);
+ fputs(
 "               curl --interface eth0:1 https://www.example.com/\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
 "              On Linux it can be used to specify a VRF, but the  binary  needs\n"
 "              to  either  have CAP_NET_RAW or to be run as root. More informa-\n"
-, stdout);
- fputs(
 "              tion  about  Linux  VRF:   https://www.kernel.org/doc/Documenta-\n"
 "              tion/networking/vrf.txt\n"
 "\n"
+"              If  --interface  is  provided  several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --interface eth0 https://example.com\n"
 "\n"
 "              See also --dns-interface.\n"
 "\n"
 "       -4, --ipv4\n"
-"              This  option tells curl to resolve names to IPv4 addresses only,\n"
-"              and not for example try IPv6.\n"
+"              This option tells curl to use IPv4 addresses only, and  not  for\n"
+"              example try IPv6.\n"
+"\n"
+"              Providing --ipv4 multiple times has no extra effect.  Disable it\n"
+"              again with --no-ipv4.\n"
 "\n"
 "              Example:\n"
 "               curl --ipv4 https://example.com\n"
 "\n"
+"              See also --http1.1 and --http2. This option is  mutually  exclu-\n"
 , stdout);
  fputs(
-"              See also  --http1.1  and  --http2.  This  option  overrides  -6,\n"
-"              --ipv6.\n"
+"              sive to -6, --ipv6.\n"
 "\n"
 "       -6, --ipv6\n"
-"              This  option tells curl to resolve names to IPv6 addresses only,\n"
-"              and not for example try IPv4.\n"
+"              This  option  tells curl to use IPv6 addresses only, and not for\n"
+"              example try IPv4.\n"
+"\n"
+"              Providing --ipv6 multiple times has no extra effect.  Disable it\n"
+"              again with --no-ipv6.\n"
 "\n"
 "              Example:\n"
 "               curl --ipv6 https://example.com\n"
 "\n"
-"              See also  --http1.1  and  --http2.  This  option  overrides  -4,\n"
-"              --ipv4.\n"
+"              See  also  --http1.1 and --http2. This option is mutually exclu-\n"
+"              sive to -4, --ipv4.\n"
+"\n"
+"       --json <data>\n"
+, stdout);
+ fputs(
+"              (HTTP) Sends the specified JSON data in a POST  request  to  the\n"
+"              HTTP  server.  --json  works  as a shortcut for passing on these\n"
+"              three options:\n"
+"\n"
+"               --data [arg]\n"
+"               --header \"Content-Type: application/json\"\n"
+"               --header \"Accept: application/json\"\n"
+"\n"
+"              There is no verification that the passed in data is actual  JSON\n"
+"              or that the syntax is correct.\n"
 "\n"
-"       -j, --junk-session-cookies\n"
 , stdout);
  fputs(
+"              If  you  start  the data with the letter @, the rest should be a\n"
+"              file name to read the data from, or a single  dash  (-)  if  you\n"
+"              want  curl to read the data from stdin. Posting data from a file\n"
+"              named 'foobar' would thus be done with --json @foobar and to in-\n"
+"              stead read the data from stdin, use --json @-.\n"
+"\n"
+"              If  this option is used more than once on the same command line,\n"
+, stdout);
+ fputs(
+"              the additional data pieces will be concatenated to the  previous\n"
+"              before sending.\n"
+"\n"
+"              The  headers this option sets can be overridden with --header as\n"
+"              usual.\n"
+"\n"
+"              --json can be used several times in a command line\n"
+"\n"
+"              Examples:\n"
+"               curl --json '{ \"drink\": \"coffe\" }' https://example.com\n"
+"               curl --json '{ \"drink\":' --json ' \"coffe\" }' https://example.com\n"
+, stdout);
+ fputs(
+"               curl --json @prepared https://example.com\n"
+"               curl --json @- https://example.com < json.txt\n"
+"\n"
+"              See also --data-binary and --data-raw. This option  is  mutually\n"
+"              exclusive  to  -F,  --form and -I, --head and -T, --upload-file.\n"
+"              Added in 7.82.0.\n"
+"\n"
+"       -j, --junk-session-cookies\n"
 "              (HTTP) When curl is told to read cookies from a given file, this\n"
+, stdout);
+ fputs(
 "              option will make it discard all \"session cookies\". This will ba-\n"
-"              sically  have  the  same  effect as if a new session is started.\n"
-"              Typical browsers always discard session cookies  when  they  are\n"
+"              sically have the same effect as if a  new  session  is  started.\n"
+"              Typical  browsers  always  discard session cookies when they are\n"
 "              closed down.\n"
 "\n"
-"              Example:\n"
-"               curl --junk-session-cookies -b cookies.txt https://example.com\n"
+"              Providing --junk-session-cookies multiple times has no extra ef-\n"
+"              fect.  Disable it again with --no-junk-session-cookies.\n"
 "\n"
+"              Example:\n"
 , stdout);
  fputs(
+"               curl --junk-session-cookies -b cookies.txt https://example.com\n"
+"\n"
 "              See also -b, --cookie and -c, --cookie-jar.\n"
 "\n"
 "       --keepalive-time <seconds>\n"
@@ -2286,28 +2598,35 @@ void hugehelp(void)
 "              fore sending keepalive probes and the  time  between  individual\n"
 "              keepalive probes. It is currently effective on operating systems\n"
 "              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options\n"
-"              (meaning  Linux, recent AIX, HP-UX and more). This option has no\n"
 , stdout);
  fputs(
-"              effect if --no-keepalive is used.\n"
+"              (meaning  Linux,  recent  AIX,  HP-UX and more).  Keepalives are\n"
+"              used by the TCP stack to detect broken networks on idle  connec-\n"
+"              tions.  The  number  of missed keepalive probes before declaring\n"
+"              the connection down is OS dependent and is  commonly  9  or  10.\n"
+"              This option has no effect if --no-keepalive is used.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
 "              If unspecified, the option defaults to 60 seconds.\n"
 "\n"
+, stdout);
+ fputs(
+"              If  --keepalive-time  is  provided  several  times, the last set\n"
+"              value will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --keepalive-time 20 https://example.com\n"
 "\n"
 "              See also --no-keepalive and -m, --max-time.\n"
 "\n"
 "       --key-type <type>\n"
-"              (TLS)  Private key file type. Specify which type your --key pro-\n"
-, stdout);
- fputs(
-"              vided private key is. DER, PEM, and ENG are  supported.  If  not\n"
+"              (TLS) Private key file type. Specify which type your --key  pro-\n"
+"              vided  private  key  is. DER, PEM, and ENG are supported. If not\n"
 "              specified, PEM is assumed.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
+, stdout);
+ fputs(
+"              If --key-type is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --key-type DER --key here https://example.com\n"
 "\n"
@@ -2316,22 +2635,30 @@ void hugehelp(void)
 "       --key <key>\n"
 "              (TLS SSH) Private key file name. Allows you to provide your pri-\n"
 "              vate key in this separate file. For SSH, if not specified,  curl\n"
+"              tries   the  following  candidates  in  order:  '~/.ssh/id_rsa',\n"
 , stdout);
  fputs(
-"              tries   the  following  candidates  in  order:  '~/.ssh/id_rsa',\n"
 "              '~/.ssh/id_dsa', './id_rsa', './id_dsa'.\n"
 "\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"
 "              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(
-"              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"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If curl is built against Secure Transport or Schannel then  this\n"
+"              option is ignored for TLS protocols (HTTPS, etc). Those backends\n"
+"              expect the private key to be already present in the keychain  or\n"
+"              PKCS#12 file containing the certificate.\n"
+"\n"
+, stdout);
+ fputs(
+"              If  --key  is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl --cert certificate --key here https://example.com\n"
@@ -2339,70 +2666,71 @@ void hugehelp(void)
 "              See also --key-type and -E, --cert.\n"
 "\n"
 "       --krb <level>\n"
-, stdout);
- fputs(
 "              (FTP) Enable Kerberos authentication and use. The level must  be\n"
 "              entered and should be one of 'clear', 'safe', 'confidential', or\n"
+, stdout);
+ fputs(
 "              'private'. Should you use a level that  is  not  one  of  these,\n"
 "              'private' will instead be used.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --krb  is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl --krb clear ftp://example.com/\n"
 "\n"
-, stdout);
- fputs(
-"              See  also --delegation and --ssl. --krb requires that the under-\n"
+"              See also --delegation and --ssl. --krb requires that the  under-\n"
 "              lying libcurl was built to support Kerberos.\n"
 "\n"
 "       --libcurl <file>\n"
-"              Append this option to any ordinary curl command  line,  and  you\n"
-"              will  get  libcurl-using  C source code written to the file that\n"
+, stdout);
+ fputs(
+"              Append  this  option  to any ordinary curl command line, and you\n"
+"              will get libcurl-using C source code written to  the  file  that\n"
 "              does the equivalent of what your command-line operation does!\n"
 "\n"
 "              This option is global and does not need to be specified for each\n"
-, stdout);
- fputs(
 "              use of -:, --next.\n"
 "\n"
-"              If  this  option is used several times, the last given file name\n"
-"              will be used.\n"
-"\n"
+"              If --libcurl is provided several times, the last set value  will\n"
+"              be used.\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --libcurl client.c https://example.com\n"
 "\n"
 "              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"
-, stdout);
- fputs(
-"              limited pipe and you would like your transfer not  to  use  your\n"
+"              limited  pipe  and  you would like your transfer not to use your\n"
 "              entire bandwidth. To make it slower than it otherwise would be.\n"
 "\n"
-"              The  given speed is measured in bytes/second, unless a suffix is\n"
-"              appended.  Appending 'k' or 'K' will count the number  as  kilo-\n"
-"              bytes,  'm' or 'M' makes it megabytes, while 'g' or 'G' makes it\n"
-"              gigabytes. The suffixes (k, M, G, T, P) are 1024 based. For  ex-\n"
 , stdout);
  fputs(
+"              The given speed is measured in bytes/second, unless a suffix  is\n"
+"              appended.   Appending  'k' or 'K' will count the number as kilo-\n"
+"              bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes  it\n"
+"              gigabytes.  The suffixes (k, M, G, T, P) are 1024 based. For ex-\n"
 "              ample 1k is 1024. Examples: 200K, 3m and 1G.\n"
 "\n"
 "              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"
+, stdout);
+ fputs(
+"              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"
-"              take precedence and might cripple the rate-limiting slightly, to\n"
-"              help keeping the speed-limit logic working.\n"
+"              If you also use the --speed-limit option, that option will  take\n"
+"              precedence and might cripple the rate-limiting slightly, to help\n"
+"              keeping the speed-limit logic working.\n"
 "\n"
-, stdout);
- fputs(
-"              If this option is used several times, the last one will be used.\n"
+"              If --limit-rate is provided several times, the  last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Examples:\n"
+, stdout);
+ fputs(
 "               curl --limit-rate 100K https://example.com\n"
 "               curl --limit-rate 1000 https://example.com\n"
 "               curl --limit-rate 10M https://example.com\n"
@@ -2411,44 +2739,50 @@ void hugehelp(void)
 "\n"
 "       -l, --list-only\n"
 "              (FTP  POP3)  (FTP)  When  listing  an FTP directory, this switch\n"
-, stdout);
- fputs(
 "              forces a name-only view. This is especially useful if  the  user\n"
 "              wants  to  machine-parse  the contents of an FTP directory since\n"
+, stdout);
+ fputs(
 "              the normal directory view does not use a standard look  or  for-\n"
 "              mat.  When  used like this, the option causes an NLST command to\n"
 "              be sent to the server instead of LIST.\n"
 "\n"
 "              Note: Some FTP servers list only  files  in  their  response  to\n"
-, stdout);
- fputs(
 "              NLST; they do not include sub-directories and symbolic links.\n"
 "\n"
 "              (POP3)  When  retrieving a specific email from POP3, this switch\n"
+, stdout);
+ fputs(
 "              forces a LIST command to be performed instead of RETR.  This  is\n"
 "              particularly  useful if the user wants to see if a specific mes-\n"
 "              sage-id exists on the server and what size it is.\n"
 "\n"
 "              Note: When combined with -X, --request, this option can be  used\n"
-, stdout);
- fputs(
 "              to  send a UIDL command instead, so the user may use the email's\n"
 "              unique identifier rather than its message-id  to  make  the  re-\n"
 "              quest.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing  --list-only multiple times has no extra effect.  Dis-\n"
+"              able it again with --no-list-only.\n"
+"\n"
 "              Example:\n"
 "               curl --list-only ftp://example.com/dir/\n"
 "              See also -Q, --quote and -X, --request.\n"
 "\n"
 "       --local-port <num/range>\n"
-"              Set  a  preferred single number or range (FROM-TO) of local port\n"
+"              Set a preferred single number or range (FROM-TO) of  local  port\n"
+"              numbers to use for the connection(s).  Note that port numbers by\n"
 , 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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --local-port 1000-3000 https://example.com\n"
 "\n"
@@ -2463,86 +2797,101 @@ void hugehelp(void)
 "              a site to which you will send your authentication info (which is\n"
 "              plaintext in the case of HTTP Basic authentication).\n"
 "\n"
+"              Providing --location-trusted multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+"              Disable it again with --no-location-trusted.\n"
+"\n"
 "              Example:\n"
 "               curl --location-trusted -u user:password https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              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"
-"              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"
+"              3XX response code), this option will make curl redo the  request\n"
 , stdout);
  fputs(
-"              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"
-"              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"
+"              on the new place. If used together with --include or -I, --head,\n"
+"              headers from all requested pages will be shown. When authentica-\n"
+"              tion  is  used,  curl  only sends its credentials to the initial\n"
+"              host. If a redirect takes curl to a different host, it will  not\n"
+"              be  able  to  intercept  the user+password. See also --location-\n"
+"              trusted on how to change this. You can limit the amount of redi-\n"
 , stdout);
  fputs(
-"              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"
+"              rects 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"
 "              code, curl will re-send the following request using the same un-\n"
 "              modified method.\n"
 "\n"
 "              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"
-"              --post302 and --post303.\n"
-"\n"
 , stdout);
  fputs(
-"              The method set with -X,  --request  overrides  the  method  curl\n"
-"              would otherwise select to use.\n"
+"              response by using the dedicated  options  for  that:  --post301,\n"
+"              --post302 and --post303.\n"
+"\n"
+"              The  method  set  with --request overrides the method curl would\n"
+"              otherwise select to use.\n"
+"\n"
+"              Providing --location multiple times has no extra  effect.   Dis-\n"
+"              able it again with --no-location.\n"
 "\n"
 "              Example:\n"
 "               curl -L https://example.com\n"
 "\n"
 "              See also --resolve and --alt-svc.\n"
 "\n"
+, stdout);
+ fputs(
 "       --login-options <options>\n"
-"              (IMAP  POP3 SMTP) Specify the login options to use during server\n"
-"              authentication.\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"
-, stdout);
- fputs(
 "              that  may  be  used during authentication. At present only IMAP,\n"
 "              POP3 and SMTP support login options. For more information  about\n"
 "              login  options  please  see  RFC  2384,  RFC 5092 and IETF draft\n"
+, stdout);
+ fputs(
 "              draft-earhart-url-smtp-00.txt\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --login-options is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --login-options 'AUTH=*' imap://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              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"
-"              the  authentication  address  (identity)  of a submitted message\n"
+"              (SMTP)  Specify  a  single address. This will be used to specify\n"
+"              the authentication address (identity)  of  a  submitted  message\n"
+, stdout);
+ fputs(
 "              that is being relayed to another server.\n"
 "\n"
+"              If  --mail-auth  is  provided  several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --mail-auth user@example.come -T mail smtp://example.com/\n"
 "\n"
 "              See also --mail-rcpt and --mail-from.\n"
 "\n"
 "       --mail-from <address>\n"
-, stdout);
- fputs(
 "              (SMTP) Specify a single address that the given mail  should  get\n"
 "              sent from.\n"
 "\n"
+, stdout);
+ fputs(
+"              If  --mail-from  is  provided  several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --mail-from user@example.com -T mail smtp://example.com/\n"
 "\n"
@@ -2550,21 +2899,24 @@ void hugehelp(void)
 "\n"
 "       --mail-rcpt-allowfails\n"
 "              (SMTP) When sending data to multiple recipients, by default curl\n"
-"              will abort SMTP conversation if at least one of  the  recipients\n"
+"              will  abort  SMTP conversation if at least one of the recipients\n"
 , stdout);
  fputs(
 "              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"
-"              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"
 , stdout);
  fputs(
 "              turn the error received from to the last RCPT TO command.\n"
 "\n"
+"              Providing --mail-rcpt-allowfails multiple times has no extra ef-\n"
+"              fect.  Disable it again with --no-mail-rcpt-allowfails.\n"
+"\n"
 "              Example:\n"
 "               curl --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com\n"
 "\n"
@@ -2572,22 +2924,24 @@ void hugehelp(void)
 "\n"
 "       --mail-rcpt <address>\n"
 "              (SMTP) Specify a single email address, user name or mailing list\n"
+, stdout);
+ fputs(
 "              name. Repeat this option several times to send to  multiple  re-\n"
 "              cipients.\n"
 "\n"
-, stdout);
- fputs(
 "              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"
 "\n"
 "              When performing a mailing list expand (EXPN command), the recip-\n"
 "              ient should be specified using the mailing list  name,  such  as\n"
+, stdout);
+ fputs(
 "              \"Friends\" or \"London-Office\".  (Added in 7.34.0)\n"
 "\n"
+"              --mail-rcpt can be used several times in a command line\n"
+"\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --mail-rcpt user@example.net smtp://example.com\n"
 "\n"
 "              See also --mail-rcpt-allowfails.\n"
@@ -2595,41 +2949,50 @@ void hugehelp(void)
 "       -M, --manual\n"
 "              Manual. Display the huge help text.\n"
 "\n"
+"              Providing  --manual multiple times has no extra effect.  Disable\n"
+"              it again with --no-manual.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --manual\n"
 "\n"
 "              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"
-, stdout);
- fputs(
+"              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"
-"              megabytes,  while 'g' or 'G' makes it gigabytes. Examples: 200K,\n"
+"              A size modifier may be used. For example, Appending 'k'  or  'K'\n"
+, stdout);
+ fputs(
+"              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"
+"              fer  ends up being larger than this given limit.  If --max-file-\n"
 , stdout);
  fputs(
-"              for such files this option has no effect even if the file trans-\n"
-"              fer ends up being larger than this given limit.  Example:\n"
+"              size is provided several times, the last set value will be used.\n"
+"\n"
+"              Example:\n"
 "               curl --max-filesize 100K https://example.com\n"
 "\n"
 "              See also --limit-rate.\n"
 "\n"
 "       --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"
+"              (HTTP) Set maximum number of redirections to follow. When  --lo-\n"
+"              cation  is  used,  to prevent curl from following too many redi-\n"
+"              rects, by default, the limit is set to 50  redirects.  Set  this\n"
 , stdout);
  fputs(
-"              redirects, by default, the limit is set  to  50  redirects.  Set\n"
-"              this option to -1 to make it unlimited.\n"
+"              option to -1 to make it unlimited.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --max-redirs  is  provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --max-redirs 3 --location https://example.com\n"
@@ -2637,86 +3000,102 @@ void hugehelp(void)
 "              See also -L, --location.\n"
 "\n"
 "       -m, --max-time <fractional seconds>\n"
-"              Maximum  time  in  seconds that you allow the whole operation to\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"
 , stdout);
  fputs(
-"              take.  This is useful for preventing your batch jobs from  hang-\n"
-"              ing  for  hours due to slow networks or links going down.  Since\n"
-"              7.32.0, this option accepts decimal values, but the actual time-\n"
-"              out will decrease in accuracy as the specified timeout increases\n"
-"              in decimal precision.\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 this option is used several times, the last one will be used.\n"
+"              If  you  enable retrying the transfer (--retry) then the maximum\n"
+"              time counter is reset each time the transfer is retried. You can\n"
+"              use --retry-max-time to limit the retry time.\n"
 "\n"
-"              Examples:\n"
 , stdout);
  fputs(
+"              If --max-time is provided several times, the last set value will\n"
+"              be used.\n"
+"\n"
+"              Examples:\n"
 "               curl --max-time 10 https://example.com\n"
 "               curl --max-time 2.92 https://example.com\n"
 "\n"
-"              See also --connect-timeout.\n"
+"              See also --connect-timeout and --retry-max-time.\n"
 "\n"
 "       --metalink\n"
 "              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"
+, stdout);
+ fputs(
 "              curity reasons.\n"
 "\n"
+"              If --metalink is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --metalink file https://example.com\n"
 "\n"
 "              See also -Z, --parallel.\n"
 "\n"
 "       --negotiate\n"
-, stdout);
- fputs(
 "              (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
 "\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"
+"              This  option  requires a library built with GSS-API or SSPI sup-\n"
+"              port. Use --version to see if your curl supports GSS-API/SSPI or\n"
 , stdout);
  fputs(
-"              --user option are not actually used.\n"
+"              SPNEGO.\n"
+"\n"
+"              When  using this option, you must also provide a fake --user op-\n"
+"              tion to activate the authentication code properly. Sending a '-u\n"
+"              :'  is  enough as the user name and password from the --user op-\n"
+"              tion are not actually used.\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"
 "\n"
+"              Providing --negotiate multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --negotiate -u : https://example.com\n"
 "\n"
 "              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"
-"              the  path  (absolute  or  relative)  to the netrc file that curl\n"
-, stdout);
- fputs(
-"              should use. You can only specify one netrc file per  invocation.\n"
-"              If  several --netrc-file options are provided, the last one will\n"
-"              be used.\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"
+, stdout);
+ fputs(
+"              If  --netrc-file  is  provided several times, the last set value\n"
+"              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"
-"              overrides -n, --netrc.\n"
+"              is mutually exclusive to -n, --netrc.\n"
 "\n"
 "       --netrc-optional\n"
+"              Similar  to  -n, --netrc, but this option makes the .netrc usage\n"
+"              optional and not mandatory as the --netrc option does.\n"
+"\n"
 , stdout);
  fputs(
-"              Similar  to  -n, --netrc, but this option makes the .netrc usage\n"
-"              optional and not mandatory as the -n, --netrc option does.\n"
+"              Providing --netrc-optional multiple times has no  extra  effect.\n"
+"              Disable it again with --no-netrc-optional.\n"
 "\n"
 "              Example:\n"
 "               curl --netrc-optional https://example.com\n"
 "\n"
-"              See also --netrc-file. This option overrides -n, --netrc.\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"
@@ -2738,93 +3117,134 @@ void hugehelp(void)
 "\n"
 "               machine host.domain.com\n"
 "               login myself\n"
-"               password secret\"\n"
+"               password secret\n"
+"\n"
+"              Providing  --netrc  multiple times has no extra effect.  Disable\n"
+"              it again with --no-netrc.\n"
 "\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --netrc https://example.com\n"
 "\n"
 "              See also --netrc-file, -K, --config and -u, --user.\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"
-"              bose, --trace, --trace-ascii and --fail-early.\n"
+"              --next  will  reset  all local options and only global ones will\n"
+"              have their values survive over to the  operation  following  the\n"
+"              --next   instruction.  Global  options  include  -v,  --verbose,\n"
+"              --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"
 "               curl -I https://example.com --next https://example.net/\n"
 "\n"
-, stdout);
- fputs(
 "              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"
+"              (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"
 "              Example:\n"
 "               curl --no-alpn https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              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"
+, stdout);
+ fputs(
 "       -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"
-, stdout);
- fputs(
 "              will disable that buffering.\n"
 "\n"
-"              Note that this is the negated option name  documented.  You  can\n"
-"              thus use --buffer to enforce the buffering.\n"
+"              Providing --no-buffer multiple times has no extra effect.   Dis-\n"
+, stdout);
+ fputs(
+"              able it again with --buffer.\n"
 "\n"
 "              Example:\n"
 "               curl --no-buffer https://example.com\n"
 "\n"
 "              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"
+"              and a number gets appended to the name of the file that would be\n"
+, stdout);
+ fputs(
+"              created,  up  to filename.100 after which it will not create any\n"
+"              file.\n"
+"\n"
+"              Note that this is the negated option name documented.   You  can\n"
+"              thus  use --clobber to enforce the clobbering, even if --remote-\n"
+"              header-name or -J is specified.\n"
+"\n"
+"              Providing --no-clobber multiple times has no extra effect.  Dis-\n"
+"              able it again with --clobber.\n"
+"\n"
+"              Example:\n"
+, stdout);
+ fputs(
+"               curl --no-clobber --output local/dir/file https://example.com\n"
+"              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"
 "              curl otherwise enables them by default.\n"
 "\n"
-, stdout);
- fputs(
 "              Note that this is the negated option name  documented.  You  can\n"
 "              thus use --keepalive to enforce keepalive.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing  --no-keepalive  multiple  times  has no extra effect.\n"
+"              Disable it again with --keepalive.\n"
+"\n"
 "              Example:\n"
 "               curl --no-keepalive https://example.com\n"
 "\n"
 "              See also --keepalive-time.\n"
 "\n"
 "       --no-npn\n"
-"              (HTTPS) Disable the NPN TLS extension. NPN is enabled by default\n"
-"              if libcurl was built with an SSL library that supports NPN.  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"
 , stdout);
  fputs(
-"              is  used  by  a libcurl that supports HTTP/2 to negotiate HTTP/2\n"
-"              support with the server during https sessions.\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"
+"              it again with --npn.\n"
 "\n"
 "              Example:\n"
 "               curl --no-npn https://example.com\n"
@@ -2832,36 +3252,44 @@ void hugehelp(void)
 "              See also --no-alpn and --http2. --no-npn requires that  the  un-\n"
 "              derlying libcurl was built to support TLS. Added in 7.36.0.\n"
 "\n"
-"       --no-progress-meter\n"
-"              Option to switch off the progress meter output without muting or\n"
 , stdout);
  fputs(
-"              otherwise affecting warning and informational messages like  -s,\n"
+"       --no-progress-meter\n"
+"              Option to switch off the progress meter output without muting or\n"
+"              otherwise affecting  warning  and  informational  messages  like\n"
 "              --silent does.\n"
 "\n"
 "              Note  that  this  is the negated option name documented. You can\n"
 "              thus use --progress-meter to enable the progress meter again.\n"
 "\n"
+"              Providing --no-progress-meter multiple times has  no  extra  ef-\n"
+, stdout);
+ fputs(
+"              fect.  Disable it again with --progress-meter.\n"
+"\n"
 "              Example:\n"
 "               curl --no-progress-meter -o store https://example.com\n"
 "\n"
 "              See also -v, --verbose and -s, --silent. Added in 7.67.0.\n"
 "\n"
 "       --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(
-"              (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"
 "              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"
-, stdout);
- fputs(
+"              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"
+"              Disable it again with --sessionid.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --no-sessionid https://example.com\n"
 "\n"
 "              See also -k, --insecure.\n"
@@ -2870,20 +3298,22 @@ void hugehelp(void)
 "              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"
 , stdout);
  fputs(
-"              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"
-, stdout);
- fputs(
 "              an  environment  variable disabling a proxy, you can set the no-\n"
 "              proxy list to \"\" to override it.\n"
 "\n"
+, stdout);
+ fputs(
+"              If --noproxy is provided several times, the last set value  will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --noproxy \"www.example\" https://example.com\n"
 "\n"
@@ -2891,76 +3321,80 @@ void hugehelp(void)
 "\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"
-"              Example:\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"
 "              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"
+"              It  is a proprietary protocol, reverse-engineered by clever peo-\n"
 , stdout);
  fputs(
-"              behavior should not be endorsed, you should  encourage  everyone\n"
-"              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"
-"\n"
-"              Example:\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"
-"              See also  --proxy-ntlm.  --ntlm  requires  that  the  underlying\n"
-"              libcurl  was built to support TLS. This option overrides --basic\n"
-"              and --negotiate and --digest and --anyauth.\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 POP3 SMTP HTTP) Specify the Bearer  Token  for  OAUTH  2.0\n"
-"              server  authentication.  The Bearer Token is used in conjunction\n"
+"              (IMAP  LDAP  POP3  SMTP HTTP) Specify the Bearer Token for OAUTH\n"
 , stdout);
  fputs(
-"              with the user name which can be specified as part of  the  --url\n"
-"              or -u, --user options.\n"
+"              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 --user options.\n"
 "\n"
-"              The  Bearer  Token  and user name are formatted according to RFC\n"
+"              The Bearer Token and user name are formatted  according  to  RFC\n"
 "              6750.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --oauth2-bearer is provided several times, the last set value\n"
+"              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"
 "       --output-dir <dir>\n"
-"\n"
-, stdout);
- fputs(
 "              This option specifies the directory in  which  files  should  be\n"
-"              stored, when -O, --remote-name or -o, --output are used.\n"
+"              stored, when --remote-name or --output are used.\n"
 "\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"
+, stdout);
+ fputs(
 "              If the specified target directory does not exist, the  operation\n"
 "              will fail unless --create-dirs is also used.\n"
 "\n"
-, stdout);
- fputs(
-"              If this option is used multiple times, the last specified direc-\n"
-"              tory will be used.\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"
@@ -2969,10 +3403,10 @@ void hugehelp(void)
 "              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(
+"              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"
@@ -2981,11 +3415,11 @@ void hugehelp(void)
 "\n"
 "              or use several variables like:\n"
 "\n"
+, stdout);
+ fputs(
 "               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"
 "              line, you can use it like this:\n"
 "\n"
@@ -2993,12 +3427,12 @@ void hugehelp(void)
 "\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"
 "              will force the output to be done to stdout.\n"
@@ -3008,40 +3442,47 @@ void hugehelp(void)
 "\n"
 "                curl example.com -o /dev/null\n"
 "\n"
+, stdout);
+ fputs(
 "              Or for Windows use nul:\n"
 "                curl example.com -o nul\n"
 "\n"
+"              --output can be used several times in a command line\n"
+"\n"
 "              Examples:\n"
-, stdout);
- fputs(
 "               curl -o file https://example.com\n"
 "               curl \"http://{one,two}.example.com\" -o \"file_#1.txt\"\n"
 "               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"
+, stdout);
+ fputs(
 "              See also -O, --remote-name, --remote-name-all and -J,  --remote-\n"
 "              header-name.\n"
 "\n"
 "       --parallel-immediate\n"
 "              When  doing  parallel  transfers, this option will instruct curl\n"
-, stdout);
- fputs(
 "              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"
+"              fect.  Disable it again with --no-parallel-immediate.\n"
+"\n"
 "              Example:\n"
 "               curl --parallel-immediate -Z https://example.com -o file1 https://example.com -o file2\n"
 "\n"
-, stdout);
- fputs(
 "              See also -Z, --parallel and --parallel-max. Added in 7.68.0.\n"
 "\n"
 "       --parallel-max <num>\n"
-"              When  asked to do parallel transfers, using -Z, --parallel, this\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"
@@ -3049,6 +3490,9 @@ void hugehelp(void)
 "              use of -:, --next.\n"
 "              The default is 50.\n"
 "\n"
+"              If  --parallel-max is provided several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 , stdout);
  fputs(
@@ -3063,9 +3507,12 @@ void hugehelp(void)
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
-"              Example:\n"
+"              Providing --parallel multiple times has no extra  effect.   Dis-\n"
 , stdout);
  fputs(
+"              able it again with --no-parallel.\n"
+"\n"
+"              Example:\n"
 "               curl --parallel https://example.com -o file1 https://example.com -o file2\n"
 "\n"
 "              See also -:, --next and -v, --verbose. Added in 7.66.0.\n"
@@ -3073,46 +3520,52 @@ void hugehelp(void)
 "       --pass <phrase>\n"
 "              (SSH TLS) Passphrase for the private key.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\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"
-, stdout);
- fputs(
+"       --path-as-is\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"
-"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
-, stdout);
- fputs(
-"              hashes)  to  verify the peer. This can be a path to a file which\n"
+"              (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"
-"              rated by ';'.\n"
-"\n"
-"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
-"              certificate  indicating  its identity. A public key is extracted\n"
 , stdout);
  fputs(
-"              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"
+"              rated by ';'.\n"
+"\n"
+"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
+"              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"
 "              before sending or receiving any data.\n"
 "\n"
 "              PEM/DER support:\n"
 "\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"
@@ -3122,44 +3575,51 @@ void hugehelp(void)
 "\n"
 "              7.47.0: mbedtls\n"
 "\n"
-, stdout);
- fputs(
 "              Other SSL backends not supported.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --pinnedpubkey is provided several times, the last set value\n"
+"              will be used.\n"
 "\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"
 "              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
-, stdout);
- fputs(
 "              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"
+"              Providing --post301 multiple times has no extra effect.  Disable\n"
+"              it again with --no-post301.\n"
+"\n"
 "              Example:\n"
 "               curl --post301 --location -d \"data\" https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --post302, --post303 and -L, --location.\n"
 "\n"
 "       --post302\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(
-"              This option is meaningful only when using -L, --location.\n"
+"              Providing --post302 multiple times has no extra effect.  Disable\n"
+"              it again with --no-post302.\n"
 "\n"
 "              Example:\n"
 "               curl --post302 --location -d \"data\" https://example.com\n"
@@ -3169,74 +3629,82 @@ void hugehelp(void)
 "       --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"
 , stdout);
  fputs(
+"              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"
+"              Providing --post303 multiple times has no extra effect.  Disable\n"
+"              it again with --no-post303.\n"
+"\n"
 "              Example:\n"
 "               curl --post303 --location -d \"data\" https://example.com\n"
 "\n"
 "              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(
-"              SOCKS  proxy  and  then  connects (through SOCKS) to the HTTP or\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"
+"              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"
+"              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 this option is used several times, the last one will be used.\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"
 "              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"
+"              Providing  --progress-bar  multiple  times  has no extra effect.\n"
+"              Disable it again with --no-progress-bar.\n"
+"\n"
 "              Example:\n"
 "               curl -# -O https://example.com\n"
 "\n"
 "              See also --styled-output.\n"
 "\n"
 "       --proto-default <protocol>\n"
-, stdout);
- fputs(
 "              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"
@@ -3244,11 +3712,14 @@ void hugehelp(void)
 "              Without this option set, curl guesses protocol based on the host\n"
 "              name, see --url for details.\n"
 "\n"
-"              Example:\n"
-"               curl --proto-default https ftp.example.com\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"
@@ -3258,99 +3729,114 @@ void hugehelp(void)
 "\n"
 "              Example, allow only HTTP and HTTPS on redirect:\n"
 "\n"
-"               curl --proto-redir -all,http,https http://example.com\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"
 "\n"
+"              If  --proto-redir  is provided several times, the last set value\n"
+"              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"
-"              Tells  curl  to  limit  what protocols it may use for transfers.\n"
-, stdout);
- fputs(
-"              Protocols are evaluated left to right, are comma separated,  and\n"
-"              are  each  a protocol name or 'all', optionally prefixed by zero\n"
+"              Tells curl to limit what protocols it  may  use  for  transfers.\n"
+"              Protocols  are evaluated left to right, are comma separated, and\n"
+"              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(
 "                 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"
-, stdout);
- fputs(
-"              =  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"
 "              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"
-, stdout);
- fputs(
 "                             also only enables http and https\n"
 "\n"
-"              Unknown protocols produce a  warning.  This  allows  scripts  to\n"
-"              safely  rely on being able to disable potentially dangerous pro-\n"
-"              tocols, without relying upon support  for  that  protocol  being\n"
-"              built into curl to avoid an error.\n"
+"              Unknown  and  disabled  protocols produce a warning. This allows\n"
+"              scripts to safely rely on being able to disable potentially dan-\n"
+"              gerous protocols, without relying upon support for that protocol\n"
+"              being built into curl to avoid an error.\n"
 "\n"
-"              This option can be used multiple times, in which case the effect\n"
 , stdout);
  fputs(
-"              is the same as concatenating the protocols into one instance  of\n"
+"              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"
 "\n"
+"              If --proto is provided several times, the last set value will be\n"
+"              used.\n"
+"\n"
 "              Example:\n"
 "               curl --proto =http,https,sftp https://example.com\n"
 "\n"
 "              See also --proto-redir and --proto-default.\n"
 "\n"
 "       --proxy-anyauth\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"
-, stdout);
- fputs(
+"              Providing --proxy-anyauth multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               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"
+, 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"
+"              Providing --proxy-basic multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               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-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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               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);
@@ -3358,6 +3844,9 @@ void hugehelp(void)
 "       --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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-capath /local/directory -x https://proxy https://example.com\n"
 "\n"
@@ -3365,17 +3854,25 @@ void hugehelp(void)
 "              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"
+"              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"
 "\n"
 "       --proxy-cert <cert[:passwd]>\n"
-"              Same as -E, --cert but used in HTTPS proxy context.\n"
+"              Same as --cert but used in HTTPS proxy context.\n"
+"\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"
@@ -3383,11 +3880,14 @@ void hugehelp(void)
 "              See also --proxy-cert-type. Added in 7.52.0.\n"
 "\n"
 "       --proxy-ciphers <list>\n"
-, stdout);
- fputs(
 "              Same as --ciphers but used in HTTPS proxy context.\n"
 "\n"
+"              If --proxy-ciphers is provided several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy https://example.com\n"
 "\n"
 "              See also --ciphers, --curves and -x, --proxy. Added in 7.52.0.\n"
@@ -3395,6 +3895,9 @@ void hugehelp(void)
 "       --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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-crlfile rejects.txt -x https://proxy https://example.com\n"
 "\n"
@@ -3407,51 +3910,59 @@ void hugehelp(void)
 "              with the given proxy. Use --digest for enabling HTTP Digest with\n"
 "              a remote host.\n"
 "\n"
+"              Providing --proxy-digest multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-digest --proxy-user user:passwd -x proxy https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also -x, --proxy, --proxy-anyauth and --proxy-basic.\n"
 "\n"
 "       --proxy-header <header/@file>\n"
-, stdout);
- fputs(
 "              (HTTP) Extra header to include in the request when sending  HTTP\n"
 "              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"
-"              host.\n"
-"\n"
-"              curl  will  make  sure  that each header you add/replace is sent\n"
+"              the equivalent option to --header but is for proxy communication\n"
+"              only  like  in  CONNECT requests when you want a separate header\n"
+"              sent to the proxy to what is sent to the actual remote host.\n"
 , stdout);
  fputs(
+"\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"
 "              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"
 , stdout);
  fputs(
-"              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"
 "              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"
+"\n"
 "              Examples:\n"
-"               curl --proxy-header \"X-First-Name: Joe\" -x http://proxy https://example.com\n"
-"               curl --proxy-header \"User-Agent: surprise\" -x http://proxy https://example.com\n"
 , stdout);
  fputs(
+"               curl --proxy-header \"X-First-Name: Joe\" -x http://proxy https://example.com\n"
+"               curl --proxy-header \"User-Agent: surprise\" -x http://proxy https://example.com\n"
 "               curl --proxy-header \"Host:\" -x http://proxy https://example.com\n"
 "\n"
 "              See also -x, --proxy. Added in 7.37.0.\n"
 "\n"
 "       --proxy-insecure\n"
-"              Same as -k, --insecure but used in HTTPS proxy context.\n"
+"              Same as --insecure but used in HTTPS proxy context.\n"
+"\n"
+"              Providing  --proxy-insecure  multiple times has no extra effect.\n"
+, stdout);
+ fputs(
+"              Disable it again with --no-proxy-insecure.\n"
 "\n"
 "              Example:\n"
 "               curl --proxy-insecure -x https://proxy https://example.com\n"
@@ -3461,9 +3972,12 @@ void hugehelp(void)
 "       --proxy-key-type <type>\n"
 "              Same as --key-type but used in HTTPS proxy context.\n"
 "\n"
+"              If --proxy-key-type is provided  several  times,  the  last  set\n"
+"              value will be used.\n"
+"\n"
+"              Example:\n"
 , stdout);
  fputs(
-"              Example:\n"
 "               curl --proxy-key-type DER --proxy-key here -x https://proxy https://example.com\n"
 "\n"
 "              See also --proxy-key and -x, --proxy. Added in 7.52.0.\n"
@@ -3471,31 +3985,40 @@ void hugehelp(void)
 "       --proxy-key <key>\n"
 "              Same as --key but used in HTTPS proxy context.\n"
 "\n"
+"              If  --proxy-key  is  provided  several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-key here -x https://proxy https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also --proxy-key-type and -x, --proxy. Added in 7.52.0.\n"
 "\n"
 "       --proxy-negotiate\n"
-, stdout);
- fputs(
 "              Tells curl to use HTTP Negotiate  (SPNEGO)  authentication  when\n"
 "              communicating with the given proxy. Use --negotiate for enabling\n"
 "              HTTP Negotiate (SPNEGO) with a remote host.\n"
 "\n"
+"              Providing --proxy-negotiate multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --proxy-negotiate --proxy-user user:passwd -x proxy https://example.com\n"
 "\n"
 "              See also --proxy-anyauth and --proxy-basic.\n"
 "\n"
 "       --proxy-ntlm\n"
 "              Tells curl to use HTTP NTLM  authentication  when  communicating\n"
-, stdout);
- fputs(
 "              with the given proxy. Use --ntlm for enabling NTLM with a remote\n"
 "              host.\n"
 "\n"
+"              Providing --proxy-ntlm multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --proxy-ntlm --proxy-user user:passwd -x http://proxy https://example.com\n"
 "\n"
 "              See also --proxy-negotiate and --proxy-anyauth.\n"
@@ -3503,6 +4026,9 @@ void hugehelp(void)
 "       --proxy-pass <phrase>\n"
 "              Same as --pass but used in HTTPS proxy context.\n"
 "\n"
+"              If --proxy-pass is provided several times, the  last  set  value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-pass secret --proxy-key here -x https://proxy https://example.com\n"
 "\n"
@@ -3511,25 +4037,26 @@ void hugehelp(void)
 "              See also -x, --proxy and --proxy-key. Added in 7.52.0.\n"
 "\n"
 "       --proxy-pinnedpubkey <hashes>\n"
-"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
-"              hashes)  to verify the proxy. This can be a path to a file which\n"
+"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
+"              hashes) to verify the proxy. 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"
 "              rated by ';'.\n"
 "\n"
 , stdout);
  fputs(
-"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
-"              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"
+"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
+"              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"
 "              before sending or receiving any data.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --proxy-pinnedpubkey is provided several times, the last set\n"
+"              value will be used.\n"
 "\n"
-"              Examples:\n"
 , stdout);
  fputs(
+"              Examples:\n"
 "               curl --proxy-pinnedpubkey keyfile https://example.com\n"
 "               curl --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' https://example.com\n"
 "\n"
@@ -3539,17 +4066,25 @@ void hugehelp(void)
 "              This option allows you to change the service name for proxy  ne-\n"
 "              gotiation.\n"
 "\n"
+"              If  --proxy-service-name is provided several times, the last set\n"
+, stdout);
+ fputs(
+"              value will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-service-name \"shrubbery\" -x proxy https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --service-name and -x, --proxy. Added in 7.43.0.\n"
 "\n"
 "       --proxy-ssl-allow-beast\n"
 "              Same as --ssl-allow-beast but used in HTTPS proxy context.\n"
 "\n"
+"              Providing --proxy-ssl-allow-beast multiple times  has  no  extra\n"
+"              effect.  Disable it again with --no-proxy-ssl-allow-beast.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --proxy-ssl-allow-beast -x https://proxy https://example.com\n"
 "\n"
 "              See also --ssl-allow-beast and -x, --proxy. Added in 7.52.0.\n"
@@ -3557,6 +4092,10 @@ void hugehelp(void)
 "       --proxy-ssl-auto-client-cert\n"
 "              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"
+"              cert.\n"
+"\n"
 "              Example:\n"
 , stdout);
  fputs(
@@ -3580,11 +4119,12 @@ void hugehelp(void)
 "              you  can try setting TLS 1.3 cipher suites by using the --proxy-\n"
 "              ciphers option.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\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"
@@ -3592,33 +4132,46 @@ void hugehelp(void)
 "       --proxy-tlsauthtype <type>\n"
 "              Same as --tlsauthtype but used in HTTPS proxy context.\n"
 "\n"
+"              If  --proxy-tlsauthtype  is provided several times, the last set\n"
+"              value will be used.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --proxy-tlsauthtype SRP -x https://proxy https://example.com\n"
 "\n"
 "              See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.\n"
 "\n"
 "       --proxy-tlspassword <string>\n"
-, stdout);
- fputs(
 "              Same as --tlspassword but used in HTTPS proxy context.\n"
 "\n"
+"              If --proxy-tlspassword is provided several times, the  last  set\n"
+"              value will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-tlspassword passwd -x https://proxy https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also -x, --proxy and --proxy-tlsuser. Added in 7.52.0.\n"
 "\n"
 "       --proxy-tlsuser <name>\n"
 "              Same as --tlsuser but used in HTTPS proxy context.\n"
 "\n"
+"              If --proxy-tlsuser is provided several times, the last set value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy-tlsuser smith -x https://proxy https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also -x, --proxy and --proxy-tlspassword. Added in 7.52.0.\n"
 "\n"
 "       --proxy-tlsv1\n"
-"              Same as -1, --tlsv1 but used in HTTPS proxy context.\n"
+, stdout);
+ fputs(
+"              Same as --tlsv1 but used in HTTPS proxy context.\n"
+"\n"
+"              Providing --proxy-tlsv1 multiple times has no extra effect.\n"
 "\n"
 "              Example:\n"
 "               curl --proxy-tlsv1 -x https://proxy https://example.com\n"
@@ -3644,60 +4197,65 @@ 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"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --proxy-user  is  provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
-"               curl --proxy-user name:pwd -x proxy https://example.com\n"
-"\n"
 , stdout);
  fputs(
+"               curl --proxy-user name:pwd -x proxy https://example.com\n"
+"\n"
 "              See also --proxy-pass.\n"
 "\n"
 "       -x, --proxy [protocol://]host[:port]\n"
 "              Use the specified proxy.\n"
 "\n"
-"              The  proxy string can be specified with a protocol:// prefix. No\n"
+"              The proxy string can be specified with a protocol:// prefix.  No\n"
 "              protocol specified or http:// will be treated as HTTP proxy. Use\n"
 "              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
 "              cific SOCKS version to be used.\n"
 "\n"
-"              HTTPS proxy support via https:// protocol prefix  was  added  in\n"
 , stdout);
  fputs(
+"              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.\n"
 "\n"
 "              Unrecognized  and  unsupported  proxy  protocols  cause an error\n"
 "              since 7.52.0.  Prior versions may ignore the  protocol  and  use\n"
 "              http:// instead.\n"
 "\n"
+, stdout);
+ fputs(
 "              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"
-, stdout);
- fputs(
 "              the  proxy  to use. If there's an environment variable setting a\n"
 "              proxy, you can set proxy to \"\" to override it.\n"
 "\n"
 "              All operations that are performed over an HTTP proxy will trans-\n"
 "              parently  be  converted  to HTTP. It means that certain protocol\n"
-"              specific operations might not be available. This is not the case\n"
-"              if you can tunnel through the proxy, as one with the -p, --prox-\n"
-"              ytunnel option.\n"
-"\n"
 , stdout);
  fputs(
+"              specific operations might not be available. This is not the case\n"
+"              if you can tunnel through the proxy, as one with the --proxytun-\n"
+"              nel option.\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"
 "              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"
+, stdout);
+ fputs(
 "              ronment  variables,  including the protocol prefix (http://) and\n"
 "              the embedded user + password.\n"
 "\n"
-, stdout);
- fputs(
-"              If this option is used several times, the last one will be used.\n"
+"              If --proxy is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl --proxy http://proxy.example https://example.com\n"
@@ -3705,32 +4263,39 @@ void hugehelp(void)
 "              See also --socks5 and --proxy-basic.\n"
 "\n"
 "       --proxy1.0 <host[:port]>\n"
-"              Use the specified HTTP 1.0 proxy. If  the  port  number  is  not\n"
-"              specified, it is assumed at port 1080.\n"
-"\n"
-"              The  only  difference between this and the HTTP proxy option -x,\n"
+"              Use  the  specified  HTTP  1.0  proxy. If the port number is not\n"
 , stdout);
  fputs(
-"              --proxy, is that attempts to use CONNECT through the proxy  will\n"
+"              specified, it is assumed at port 1080.\n"
+"\n"
+"              The only difference between this and the HTTP proxy  option  -x,\n"
+"              --proxy,  is that attempts to use CONNECT through the proxy will\n"
 "              specify an HTTP 1.0 protocol instead of the default HTTP 1.1.\n"
 "\n"
+"              Providing --proxy1.0 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --proxy1.0 -x http://proxy https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also -x, --proxy, --socks5 and --preproxy.\n"
 "\n"
 "       -p, --proxytunnel\n"
-"              When  an  HTTP  proxy is used -x, --proxy, this option will make\n"
-"              curl tunnel through the proxy. The tunnel approach is made  with\n"
-, stdout);
- fputs(
-"              the  HTTP  proxy CONNECT request and requires that the proxy al-\n"
+"              When an HTTP proxy is used -x, --proxy, this  option  will  make\n"
+"              curl  tunnel through the proxy. The tunnel approach is made with\n"
+"              the HTTP proxy CONNECT request and requires that the  proxy  al-\n"
 "              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"
+, stdout);
+ fputs(
+"              To suppress proxy CONNECT response headers when curl is  set  to\n"
 "              output headers use --suppress-connect-headers.\n"
 "\n"
+"              Providing  --proxytunnel  multiple  times  has  no extra effect.\n"
+"              Disable it again with --no-proxytunnel.\n"
+"\n"
 "              Example:\n"
 "               curl --proxytunnel -x http://proxy https://example.com\n"
 "\n"
@@ -3742,93 +4307,98 @@ void hugehelp(void)
 "              (SFTP SCP) Public key file name. Allows you to provide your pub-\n"
 "              lic key in this separate file.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\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"
 "              ally not required. Note that this public key extraction requires\n"
-, stdout);
- fputs(
 "              libcurl to be linked against a copy of libssh2 1.2.8  or  higher\n"
 "              that is itself linked against OpenSSL.)\n"
 "\n"
+, stdout);
+ fputs(
+"              If  --pubkey  is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --pubkey file.pub sftp://example.com/\n"
 "\n"
 "              See also --pass.\n"
 "\n"
 "       -Q, --quote <command>\n"
-"              (FTP  SFTP)  Send an arbitrary command to the remote FTP or SFTP\n"
-"              server. Quote commands are sent BEFORE the transfer takes  place\n"
+"              (FTP SFTP) Send an arbitrary command to the remote FTP  or  SFTP\n"
+"              server.  Quote commands are sent BEFORE the transfer takes place\n"
+"              (just after the initial PWD command in an FTP  transfer,  to  be\n"
 , stdout);
  fputs(
-"              (just  after  the  initial PWD command in an FTP transfer, to be\n"
 "              exact). To make commands take place after a successful transfer,\n"
-"              prefix them with a dash '-'. To make commands be sent after curl\n"
-"              has changed the working directory, just before the transfer com-\n"
-"              mand(s),  prefix  the command with a '+' (this is only supported\n"
-"              for FTP). You may specify any number of commands.\n"
+"              prefix them with a dash '-'.\n"
+"\n"
+"              (FTP only) To make commands be sent after curl has  changed  the\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"
 , stdout);
  fputs(
-"              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"
 "              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"
 , stdout);
  fputs(
 "              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"
-"              acters. Following is the list of all supported SFTP  quote  com-\n"
+"              acters.  Following  is the list of all supported SFTP quote com-\n"
 "              mands:\n"
 "\n"
 "              atime date file\n"
 , stdout);
  fputs(
-"                     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"
+"                     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"
 "                     page for date expression details. (Added in 7.73.0)\n"
 "\n"
 "              chgrp group file\n"
-"                     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"
+"                     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"
 , stdout);
  fputs(
 "                     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"
+"                     The  chmod  command  modifies  the  file mode bits of the\n"
 "                     specified file. The mode operand is an octal integer mode\n"
 "                     number.\n"
 "\n"
 "              chown user file\n"
 "                     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"
+"                     file operand to the user ID specified by the  user  oper-\n"
 , stdout);
  fputs(
 "                     and. 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"
-"                     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"
+"                     The  mkdir command creates the directory named by the di-\n"
 "                     rectory_name operand.\n"
 "\n"
 "              mtime date file\n"
 , stdout);
  fputs(
-"                     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"
 "                     be all sorts of date strings, see the curl_getdate(3) man\n"
 "                     page for date expression details. (Added in 7.73.0)\n"
@@ -3840,7 +4410,7 @@ void hugehelp(void)
 , stdout);
  fputs(
 "                     The rename command renames the file or directory named by\n"
-"                     the source operand to the destination path named  by  the\n"
+"                     the  source  operand to the destination path named by the\n"
 "                     target operand.\n"
 "\n"
 "              rm file\n"
@@ -3848,7 +4418,7 @@ void hugehelp(void)
 "                     erand.\n"
 "\n"
 "              rmdir directory\n"
-"                     The rmdir command removes the directory  entry  specified\n"
+"                     The  rmdir  command removes the directory entry specified\n"
 , stdout);
  fputs(
 "                     by the directory operand, provided it is empty.\n"
@@ -3856,17 +4426,26 @@ void hugehelp(void)
 "              symlink source_file target_file\n"
 "                     See ln.\n"
 "\n"
+"       --quote can be used several times in a command line\n"
+"\n"
 "       Example:\n"
 "        curl --quote \"DELE file\" ftp://example.com/foo\n"
 "\n"
 "       See also -X, --request.\n"
 "\n"
 "       --random-file <file>\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"
+"              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(
-"              for SSL connections. See also the --egd-file option.\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"
+"              for SSL connections.\n"
+"\n"
+"              If --random-file is provided several times, the last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --random-file rubbish https://example.com\n"
@@ -3874,78 +4453,131 @@ void hugehelp(void)
 "              See also --egd-file.\n"
 "\n"
 "       -r, --range <range>\n"
+, stdout);
+ fputs(
 "              (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"
 "              Ranges can be specified in a number of ways.\n"
 "\n"
 "              0-499     specifies the first 500 bytes\n"
 "\n"
-, stdout);
- fputs(
 "              500-999   specifies the second 500 bytes\n"
 "\n"
 "              -500      specifies the last 500 bytes\n"
 "\n"
 "              9500-     specifies the bytes from offset 9500 and forward\n"
 "\n"
+, stdout);
+ fputs(
 "              0-0,-1    specifies the first and last byte only(*)(HTTP)\n"
 "\n"
 "              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"
-, stdout);
- fputs(
 "              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"
+, stdout);
+ fputs(
 "              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"
 "              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"
+, stdout);
+ fputs(
+"              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 --range is provided several times, the last set value will be\n"
+"              used.\n"
+"\n"
+"              Example:\n"
+"               curl --range 22-44 https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+"              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"
+"              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"
+"              If  given  several URLs and a transfer completes faster than the\n"
 , stdout);
  fputs(
-"              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"
+"              allowed rate, curl will wait until the next transfer is  started\n"
+"              to  maintain  the requested rate. This option has no effect when\n"
+"              --parallel is used.\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"
+"              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"
+, stdout);
+ fputs(
+"              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"
+"              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"
+"              quency is set more than 1000 per second, it will instead run un-\n"
+"              restricted.\n"
 "\n"
 , stdout);
  fputs(
-"              If this option is used several times, the last one will be used.\n"
+"              When retrying transfers,  enabled  with  --retry,  the  separate\n"
+"              retry delay logic is used and not this setting.\n"
 "\n"
-"              Example:\n"
-"               curl --range 22-44 https://example.com\n"
+"              If  --rate is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
-"              See also -C, --continue-at and -a, --append.\n"
+"              Examples:\n"
+"               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"
+"              tent  or transfer encodings and instead makes them passed on un-\n"
 "              altered, raw.\n"
 "\n"
+"              Providing --raw multiple times has no extra effect.  Disable  it\n"
+"              again with --no-raw.\n"
+"\n"
 "              Example:\n"
 "               curl --raw https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              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"
-"              --referer URL to make curl automatically set  the  previous  URL\n"
-"              when  it  follows  a Location: header. The \";auto\" string can be\n"
 , stdout);
  fputs(
-"              used alone, even if you do not set an initial -e, --referer.\n"
+"              (HTTP) Sends the \"Referrer Page\" information to the HTTP server.\n"
+"              This can also be set with the --header flag of course. When used\n"
+"              with  --location  you can append \";auto\" to the --referer URL to\n"
+"              make curl automatically set the previous URL when it  follows  a\n"
+"              Location:  header. The \";auto\" string can be used alone, even if\n"
+"              you do not set an initial -e, --referer.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+"              If --referer is provided several times, the last set value  will\n"
+"              be used.\n"
 "\n"
 "              Examples:\n"
 "               curl --referer \"https://fake.example\" https://example.com\n"
@@ -3957,41 +4589,54 @@ void hugehelp(void)
 "       -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.\n"
+"              (HTTP)  This  option  tells  the --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"
+"              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"
-"              If the server specifies a file name and a file  with  that  name\n"
-"              already  exists  in the current working directory it will not be\n"
-"              overwritten and an error will occur.  If  the  server  does  not\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.  If  the  server  does  not\n"
 "              specify a file 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"
+, stdout);
+ fputs(
 "              WARNING:  Exercise  judicious  use of this option, especially on\n"
 "              Windows. A rogue server could send you the  name  of  a  DLL  or\n"
 "              other file that could be loaded automatically by Windows or some\n"
-, stdout);
- fputs(
 "              third party software.\n"
 "\n"
+"              Providing --remote-header-name multiple times has no  extra  ef-\n"
+"              fect.  Disable it again with --no-remote-header-name.\n"
+"\n"
 "              Example:\n"
 "               curl -OJ https://example.com/file\n"
 "\n"
+, stdout);
+ fputs(
 "              See also -O, --remote-name.\n"
 "\n"
 "       --remote-name-all\n"
-"              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"
+"              This  option changes the default action for all given URLs to be\n"
+"              dealt with as if --remote-name were used for each one. So if you\n"
+"              want  to disable that for a specific URL after --remote-name-all\n"
+"              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(
+"              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"
@@ -4007,15 +4652,15 @@ void hugehelp(void)
  fputs(
 "              want the file saved in a  different  directory,  make  sure  you\n"
 "              change  the  current working directory before invoking curl with\n"
-"              this option.\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"
 , stdout);
  fputs(
-"              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"
+"              file name refer to --remote-header-name which can be used in ad-\n"
+"              dition 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"
@@ -4027,22 +4672,48 @@ void hugehelp(void)
  fputs(
 "              have.\n"
 "\n"
+"              --remote-name can be used several times in a command line\n"
+"\n"
 "              Example:\n"
 "               curl -O https://example.com/filename\n"
 "\n"
-"              See also --remote-name-all.\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"
+"              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"
+, stdout);
+ fputs(
 "              cal file get that same timestamp.\n"
 "\n"
+"              Providing  --remote-time  multiple  times  has  no extra effect.\n"
+"              Disable it again with --no-remote-time.\n"
+"\n"
 "              Example:\n"
 "               curl --remote-time -o foo https://example.com\n"
 "\n"
+"              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"
 , stdout);
  fputs(
-"              See also -O, --remote-name and -z, --time-cond.\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"
+"              Disable it again with --no-remove-on-error.\n"
+"\n"
+"              Example:\n"
+"               curl --remove-on-error -o output https://example.com\n"
+"\n"
+, stdout);
+ fputs(
+"              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"
@@ -4051,41 +4722,44 @@ void hugehelp(void)
 "              other  data  that  does not follow the regular URL pattern, like\n"
 "              \"OPTIONS *\".\n"
 "\n"
-"              Example:\n"
 , stdout);
  fputs(
+"              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"
 "              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"
-"              used instead of the method otherwise  used  (which  defaults  to\n"
-"              GET).  Read  the HTTP 1.1 specification for details and explana-\n"
+"              ing with the HTTP server. The specified request method  will  be\n"
 , stdout);
  fputs(
-"              tions. Common additional HTTP requests include PUT  and  DELETE,\n"
+"              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"
 "              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"
-"              mand line options.\n"
-"\n"
-"              This option only changes the actual word used in  the  HTTP  re-\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"
-"              you want to make a proper HEAD request, using -X HEAD  will  not\n"
-"              suffice. You need to use the -I, --head option.\n"
+"              you  want  to make a proper HEAD request, using -X HEAD will not\n"
+"              suffice. You need to use the --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"
+"              The method string you set with --request will be  used  for  all\n"
+"              requests,  which if you for example use --location may cause un-\n"
 , stdout);
  fputs(
-"              method according to the HTTP 30x response codes - and similar.\n"
+"              intended side-effects when curl does not change  request  method\n"
+"              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"
@@ -4093,15 +4767,16 @@ void hugehelp(void)
 "              (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"
-"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
 , stdout);
  fputs(
+"              (SMTP) Specifies a custom SMTP command to use instead of HELP or\n"
 "              VRFY. (Added in 7.34.0)\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --request is provided several times, the last set value will\n"
+"              be used.\n"
 "\n"
 "              Examples:\n"
 "               curl -X \"DELETE\" https://example.com\n"
@@ -4110,28 +4785,29 @@ 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"
 "              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"
+"              The provided address set by this option will  be  used  even  if\n"
 , stdout);
  fputs(
+"              --ipv4 or --ipv6 is set to make curl use another IP version.\n"
+"\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"
@@ -4139,9 +4815,9 @@ void hugehelp(void)
 "              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"
@@ -4154,11 +4830,13 @@ 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"
 "               curl --resolve example.com:443:127.0.0.1 https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --connect-to and --alt-svc.\n"
 "\n"
 "       --retry-all-errors\n"
@@ -4166,49 +4844,57 @@ void hugehelp(void)
 "\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"
-"              with redirected input or output. You'd be much better  off  han-\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"
-"              example,  before  retrying  it removes output data from a failed\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"
+, stdout);
+ fputs(
 "              may receive duplicate data.\n"
 "\n"
 "              By default curl will not error on an HTTP response code that in-\n"
-, stdout);
- fputs(
 "              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"
-"              codes such as 404. If you want to retry on  all  response  codes\n"
 , stdout);
  fputs(
+"              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"
+"              Disable it again with --no-retry-all-errors.\n"
+"\n"
 "              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"
-"              In addition to the other conditions, consider ECONNREFUSED as  a\n"
-"              transient  error  too  for --retry. This option is used together\n"
+"              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"
 "\n"
+"              Providing  --retry-connrefused  multiple  times has no extra ef-\n"
+"              fect.  Disable it again with --no-retry-connrefused.\n"
+"\n"
 "              Example:\n"
 , stdout);
  fputs(
@@ -4225,7 +4911,8 @@ void hugehelp(void)
  fputs(
 "              zero will make curl use the default backoff time.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --retry-delay is provided several times, the last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --retry-delay 5 --retry https://example.com\n"
@@ -4233,21 +4920,22 @@ void hugehelp(void)
 "              See also --retry.\n"
 "\n"
 "       --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"
+"              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"
 , 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"
+"              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"
 "              this option to zero to not timeout retries.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              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"
@@ -4275,28 +4963,32 @@ void hugehelp(void)
 "              sponse  header if one was present to know when to issue the next\n"
 "              retry.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --retry is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl --retry 7 https://example.com\n"
 "\n"
 "              See also --retry-max-time.\n"
 "\n"
-"       --sasl-authzid <identity>\n"
 , stdout);
  fputs(
-"              Use this authorisation identity (authzid), during SASL PLAIN au-\n"
-"              thentication,  in addition to the authentication identity (auth-\n"
+"       --sasl-authzid <identity>\n"
+"              Use this authorization identity (authzid), during SASL PLAIN au-\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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --sasl-authzid zid imap://example.com/\n"
 "\n"
@@ -4305,19 +4997,27 @@ void hugehelp(void)
 "       --sasl-ir\n"
 "              Enable initial response in SASL authentication.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing --sasl-ir multiple times has no extra effect.  Disable\n"
+"              it again with --no-sasl-ir.\n"
+"\n"
 "              Example:\n"
 "               curl --sasl-ir imap://example.com/\n"
 "\n"
 "              See also --sasl-authzid. Added in 7.31.0.\n"
 "\n"
 "       --service-name <name>\n"
-, stdout);
- fputs(
 "              This option allows you to change the service name for SPNEGO.\n"
 "\n"
-"              Examples:   --negotiate   --service-name   sockd    would    use\n"
+"              Examples:    --negotiate    --service-name   sockd   would   use\n"
 "              sockd/server-name.\n"
 "\n"
+, stdout);
+ fputs(
+"              If --service-name is provided several times, the last set  value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --service-name sockd/server https://example.com\n"
 "\n"
@@ -4327,82 +5027,96 @@ void hugehelp(void)
 "              When used with -s, --silent, it makes curl show an error message\n"
 "              if it fails.\n"
 "\n"
+"              This option is global and does not need to be specified for each\n"
 , stdout);
  fputs(
-"              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
+"              Providing --show-error multiple times has no extra effect.  Dis-\n"
+"              able it again with --no-show-error.\n"
+"\n"
 "              Example:\n"
 "               curl --show-error --silent https://example.com\n"
 "\n"
 "              See also --no-progress-meter.\n"
 "\n"
 "       -s, --silent\n"
-"              Silent  or  quiet mode. Do not show progress meter or error mes-\n"
-"              sages. Makes Curl mute. It will still output the  data  you  ask\n"
+"              Silent or quiet mode. Do not show progress meter or  error  mes-\n"
+"              sages.  Makes  Curl  mute. It will still output the data you ask\n"
 , stdout);
  fputs(
 "              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"
-"              progress meter but still show error messages.\n"
+"              Use  --show-error in addition to this option to disable progress\n"
+"              meter but still show error messages.\n"
+"\n"
+"              Providing --silent multiple times has no extra effect.   Disable\n"
+"              it again with --no-silent.\n"
 "\n"
 "              Example:\n"
 "               curl -s https://example.com\n"
 "\n"
 "              See also -v, --verbose, --stderr and --no-progress-meter.\n"
 "\n"
-"       --socks4 <host[:port]>\n"
-"              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
 , stdout);
  fputs(
+"       --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"
 "              proxy.\n"
 "\n"
-"              This option overrides any previous use of -x, --proxy,  as  they\n"
+"              To specify proxy on a unix  domain  socket,  use  localhost  for\n"
+"              host, e.g.  socks4://localhost/path/to/socket.sock\n"
+"\n"
+, stdout);
+ fputs(
+"              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"
-"              with -x, --proxy using a socks4:// protocol prefix.\n"
+"              This option is superfluous since you can specify a socks4  proxy\n"
+"              with --proxy using a socks4:// protocol prefix.\n"
 "\n"
+"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+"              the same time --proxy is used with an HTTP/HTTPS proxy. In  such\n"
+"              a  case curl first connects to the SOCKS proxy and then connects\n"
 , stdout);
  fputs(
-"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-"              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 this option is used several times, the last one will be used.\n"
+"              (through SOCKS) to the HTTP or HTTPS proxy.\n"
 "\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"
 "\n"
-, stdout);
- fputs(
 "              See also --socks4a, --socks5 and --socks5-hostname.\n"
 "\n"
 "       --socks4a <host[:port]>\n"
 "              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
+, stdout);
+ fputs(
 "              ified, it is assumed at port 1080. This asks the  proxy  to  re-\n"
 "              solve the host name.\n"
 "\n"
-"              This  option  overrides any previous use of -x, --proxy, as they\n"
+"              To  specify  proxy  on  a  unix domain socket, use localhost for\n"
+"              host, e.g.  socks4a://localhost/path/to/socket.sock\n"
+"\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 socks4a proxy\n"
 , stdout);
  fputs(
-"              with -x, --proxy using a socks4a:// protocol prefix.\n"
+"              with --proxy using a socks4a:// protocol prefix.\n"
 "\n"
 "              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
-"              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 this option is used several times, the last one will be used.\n"
+"              the  same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+"              a case curl first connects to the SOCKS proxy and then  connects\n"
+"              (through SOCKS) to the HTTP or HTTPS proxy.\n"
 "\n"
+"              If  --socks4a is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 , stdout);
  fputs(
@@ -4416,9 +5130,11 @@ void hugehelp(void)
 "              enabled by default.  Use --socks5-gssapi to  force  GSS-API  au-\n"
 "              thentication to SOCKS5 proxies.\n"
 "\n"
-"              Example:\n"
 , stdout);
  fputs(
+"              Providing --socks5-basic multiple times has no extra effect.\n"
+"\n"
+"              Example:\n"
 "               curl --socks5-basic --socks5 hostname:4096 https://example.com\n"
 "\n"
 "              See also --socks5. Added in 7.55.0.\n"
@@ -4427,26 +5143,34 @@ void hugehelp(void)
 "              As  part of the GSS-API negotiation a protection mode is negoti-\n"
 "              ated. RFC 1961 says in section 4.3/4.4 it should  be  protected,\n"
 "              but  the  NEC  reference  implementation  does  not.  The option\n"
-"              --socks5-gssapi-nec allows the unprotected exchange of the  pro-\n"
 , stdout);
  fputs(
+"              --socks5-gssapi-nec allows the unprotected exchange of the  pro-\n"
 "              tection mode negotiation.\n"
 "\n"
+"              Providing  --socks5-gssapi-nec  multiple  times has no extra ef-\n"
+"              fect.  Disable it again with --no-socks5-gssapi-nec.\n"
+"\n"
 "              Example:\n"
 "               curl --socks5-gssapi-nec --socks5 hostname:4096 https://example.com\n"
 "\n"
 "              See also --socks5.\n"
 "\n"
 "       --socks5-gssapi-service <name>\n"
+, stdout);
+ fputs(
 "              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"
+"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
+"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\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"
 , stdout);
  fputs(
-"              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
-"              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
-"              where the proxy-name does not match the principal name.\n"
+"              If --socks5-gssapi-service is provided several times,  the  last\n"
+"              set value will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --socks5-gssapi-service sockd --socks5 hostname:4096 https://example.com\n"
@@ -4455,12 +5179,15 @@ void hugehelp(void)
 "\n"
 "       --socks5-gssapi\n"
 "              Tells  curl  to  use GSS-API authentication when connecting to a\n"
+"              SOCKS5 proxy.  The GSS-API authentication is enabled by  default\n"
 , stdout);
  fputs(
-"              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"
+"              Disable it again with --no-socks5-gssapi.\n"
+"\n"
 "              Example:\n"
 "               curl --socks5-gssapi --socks5 hostname:4096 https://example.com\n"
 "\n"
@@ -4469,105 +5196,121 @@ void hugehelp(void)
 "       --socks5-hostname <host[:port]>\n"
 , stdout);
  fputs(
-"              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"
+"              host, e.g.  socks5h://localhost/path/to/socket.sock\n"
+"\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"
-"              name proxy with -x, --proxy using a socks5h:// protocol prefix.\n"
-"\n"
 , stdout);
  fputs(
+"              This  option is superfluous since you can specify a socks5 host-\n"
+"              name proxy with --proxy using a socks5h:// protocol prefix.\n"
+"\n"
 "              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-"              such a case curl first connects to the SOCKS proxy and then con-\n"
-"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"              the  same time --proxy is used with an HTTP/HTTPS proxy. In such\n"
+"              a case curl first connects to the SOCKS proxy and then  connects\n"
+"              (through SOCKS) to the HTTP or HTTPS proxy.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+"              If  --socks5-hostname  is  provided  several times, the last set\n"
+"              value will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --socks5-hostname proxy.example:7000 https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also --socks5 and --socks4a.\n"
 "\n"
 "       --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"
+, stdout);
+ fputs(
+"              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"
 "              are mutually exclusive.\n"
 "\n"
 "              This option is superfluous since you can specify a socks5  proxy\n"
-, stdout);
- fputs(
-"              with -x, --proxy using a socks5:// protocol prefix.\n"
+"              with --proxy using a socks5:// protocol prefix.\n"
 "\n"
 "              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
-"              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 this option is used several times, the last one will be used.\n"
 , stdout);
  fputs(
+"              the same time --proxy is used with an HTTP/HTTPS proxy. In  such\n"
+"              a  case curl first connects to the SOCKS proxy and then connects\n"
+"              (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\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"
+"              be used.\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --socks5 proxy.example:7000 https://example.com\n"
 "\n"
 "              See also --socks5-hostname and --socks4a.\n"
 "\n"
 "       -Y, --speed-limit <speed>\n"
-"              If a download is slower than this given speed (in bytes per sec-\n"
-"              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
-"              with -y, --speed-time and is 30 if not set.\n"
-, stdout);
- fputs(
+"              If a transfer is slower than this given speed (in bytes per sec-\n"
+"              ond)  for  speed-time seconds it gets aborted. speed-time is set\n"
+"              with --speed-time and is 30 if not set.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --speed-limit is provided several times, the last  set  value\n"
+"              will be used.\n"
 "\n"
+, stdout);
+ fputs(
 "              Example:\n"
 "               curl --speed-limit 300 --speed-time 10 https://example.com\n"
 "\n"
 "              See also -y, --speed-time, --limit-rate and -m, --max-time.\n"
 "\n"
 "       -y, --speed-time <seconds>\n"
-"              If a download is slower than speed-limit bytes per second during\n"
-"              a speed-time period, the download gets aborted. If speed-time is\n"
-, stdout);
- fputs(
-"              used,  the  default  speed-limit  will  be 1 unless set with -Y,\n"
+"              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"
 "              --speed-limit.\n"
 "\n"
-"              This option controls transfers and thus  will  not  affect  slow\n"
-"              connects  etc.  If this is a concern for you, try the --connect-\n"
-"              timeout option.\n"
+, stdout);
+ fputs(
+"              This option controls transfers (in both directions) but will not\n"
+"              affect  slow connects etc. If this is a concern for you, try the\n"
+"              --connect-timeout option.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --speed-time is provided several times, the  last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --speed-limit 300 --speed-time 10 https://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See also -Y, --speed-limit and --limit-rate.\n"
 "\n"
 "       --ssl-allow-beast\n"
+, stdout);
+ fputs(
 "              This option tells curl to not work around a security flaw in the\n"
 "              SSL3 and TLS1.0 protocols known as BEAST.  If this option is not\n"
-"              used, the SSL layer may use workarounds known to cause  interop-\n"
+"              used,  the SSL layer may use workarounds known to cause interop-\n"
 "              erability problems with some older SSL implementations.\n"
 "\n"
 "              WARNING: this option loosens the SSL security, and by using this\n"
+"              flag you ask for exactly that.\n"
+"\n"
 , stdout);
  fputs(
-"              flag you ask for exactly that.\n"
+"              Providing  --ssl-allow-beast multiple times has no extra effect.\n"
+"              Disable it again with --no-ssl-allow-beast.\n"
 "\n"
 "              Example:\n"
 "               curl --ssl-allow-beast https://example.com\n"
@@ -4577,26 +5320,34 @@ void hugehelp(void)
 "       --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"
 , stdout);
  fputs(
+"              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"
 "              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"
+, stdout);
+ fputs(
+"              fect.  Disable it again with --no-ssl-auto-client-cert.\n"
+"\n"
 "              Example:\n"
 "               curl --ssl-auto-client-cert https://example.com\n"
 "\n"
 "              See also --proxy-ssl-auto-client-cert. Added in 7.77.0.\n"
 "\n"
 "       --ssl-no-revoke\n"
-, stdout);
- fputs(
 "              (Schannel) This option tells curl to disable certificate revoca-\n"
 "              tion checks.  WARNING: this option loosens the SSL security, and\n"
 "              by using this flag you ask for exactly that.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing  --ssl-no-revoke  multiple  times has no extra effect.\n"
+"              Disable it again with --no-ssl-no-revoke.\n"
+"\n"
 "              Example:\n"
 "               curl --ssl-no-revoke https://example.com\n"
 "\n"
@@ -4604,17 +5355,20 @@ void hugehelp(void)
 "\n"
 "       --ssl-reqd\n"
 "              (FTP IMAP POP3 SMTP LDAP) Require SSL/TLS  for  the  connection.\n"
-, stdout);
- fputs(
 "              Terminates  the  connection  if  the  server  does  not  support\n"
 "              SSL/TLS.\n"
 "\n"
+, stdout);
+ fputs(
 "              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 was formerly known as --ftp-ssl-reqd.\n"
 "\n"
+"              Providing --ssl-reqd multiple times has no extra  effect.   Dis-\n"
+"              able it again with --no-ssl-reqd.\n"
+"\n"
 "              Example:\n"
 "               curl --ssl-reqd ftp://example.com\n"
 "\n"
@@ -4623,86 +5377,106 @@ 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"
+"              Providing  --ssl-revoke-best-effort  multiple times has no extra\n"
+"              effect.  Disable it again with --no-ssl-revoke-best-effort.\n"
+"\n"
 "              Example:\n"
+, stdout);
+ fputs(
 "               curl --ssl-revoke-best-effort https://example.com\n"
 "\n"
 "              See also --crlfile and -k, --insecure. Added in 7.70.0.\n"
 "\n"
+"       --ssl  (FTP IMAP POP3 SMTP LDAP) Warning: this is considered  an  inse-\n"
+"              cure  option.  Consider using --ssl-reqd instead to be sure curl\n"
+"              upgrades to a secure connection.\n"
+"\n"
+"              Try to use SSL/TLS for the connection. Reverts to  a  non-secure\n"
 , stdout);
  fputs(
-"       --ssl  (FTP IMAP POP3 SMTP LDAP) Try to use SSL/TLS for the connection.\n"
-"              Reverts  to  a non-secure connection if the server does not sup-\n"
-"              port SSL/TLS. See also --ftp-ssl-control and --ssl-reqd for dif-\n"
-"              ferent levels of encryption required.\n"
+"              connection  if  the  server  does  not support SSL/TLS. See also\n"
+"              --ftp-ssl-control and --ssl-reqd for different levels of encryp-\n"
+"              tion required.\n"
 "\n"
 "              This option is handled in LDAP since version 7.81.0. It is fully\n"
-"              supported by the openldap backend and  ignored  by  the  generic\n"
+"              supported by the OpenLDAP backend and  ignored  by  the  generic\n"
 "              ldap backend.\n"
 "\n"
-, stdout);
- fputs(
 "              Please  note that a server may close the connection if the nego-\n"
 "              tiation does not succeed.\n"
 "\n"
+, stdout);
+ fputs(
 "              This option was formerly known as --ftp-ssl.  That  option  name\n"
 "              can still be used but will be removed in a future version.\n"
 "\n"
+"              Providing  --ssl multiple times has no extra effect.  Disable it\n"
+"              again with --no-ssl.\n"
+"\n"
 "              Example:\n"
 "               curl --ssl pop3://example.com/\n"
 "\n"
-"              See also -k, --insecure and --ciphers.\n"
+"              See also --ssl-reqd, -k, --insecure and --ciphers.\n"
 "\n"
 "       -2, --sslv2\n"
-"              (SSL) This option previously asked curl to use SSLv2, but start-\n"
 , stdout);
  fputs(
-"              ing in curl 7.77.0 this instruction is ignored. SSLv2 is  widely\n"
+"              (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"
 "              considered insecure (see RFC 6176).\n"
 "\n"
+"              Providing --sslv2 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --sslv2 https://example.com\n"
 "\n"
-"              See  also  --http1.1  and --http2. -2, --sslv2 requires that the\n"
-"              underlying libcurl was built to support TLS. This  option  over-\n"
-"              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
-"\n"
-"       -3, --sslv3\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"
+"              and --tlsv1.2.\n"
+"\n"
+"       -3, --sslv3\n"
 "              (SSL) This option previously asked curl to use SSLv3, but start-\n"
 "              ing in curl 7.77.0 this instruction is ignored. SSLv3 is  widely\n"
 "              considered insecure (see RFC 7568).\n"
 "\n"
+"              Providing --sslv3 multiple times has no extra effect.\n"
+"\n"
+, stdout);
+ fputs(
 "              Example:\n"
 "               curl --sslv3 https://example.com\n"
 "\n"
 "              See  also  --http1.1  and --http2. -3, --sslv3 requires that the\n"
-"              underlying libcurl was built to support TLS. This  option  over-\n"
-, stdout);
- fputs(
-"              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
+"              underlying libcurl was built to support TLS. This option is  mu-\n"
+"              tually  exclusive  to  -2, --sslv2 and -1, --tlsv1 and --tlsv1.1\n"
+"              and --tlsv1.2.\n"
 "\n"
 "       --stderr <file>\n"
-"              Redirect  all writes to stderr to the specified file instead. If\n"
+"              Redirect all writes to stderr to the specified file instead.  If\n"
+, stdout);
+ fputs(
 "              the file name is a plain '-', it is instead written to stdout.\n"
 "\n"
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
+"              If --stderr is provided several times, the last set  value  will\n"
+"              be used.\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --stderr output.txt https://example.com\n"
 "\n"
 "              See also -v, --verbose and -s, --silent.\n"
 "\n"
 "       --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"
 "              off.\n"
@@ -4710,6 +5484,9 @@ void hugehelp(void)
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
+"              Providing --styled-output multiple times has  no  extra  effect.\n"
+"              Disable it again with --no-styled-output.\n"
+"\n"
 "              Example:\n"
 , stdout);
  fputs(
@@ -4718,14 +5495,16 @@ 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"
-"              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"
+"              When  --proxytunnel is used and a CONNECT request is made do not\n"
+"              output proxy CONNECT response headers. This option is  meant  to\n"
+"              be  used  with --dump-header or --include which are used to show\n"
+"              protocol headers in the output. It has no effect  on  debug  op-\n"
 , stdout);
  fputs(
-"              debug options such as -v, --verbose or --trace, or  any  statis-\n"
-"              tics.\n"
+"              tions such as --verbose or --trace, or any statistics.\n"
+"\n"
+"              Providing --suppress-connect-headers multiple times has no extra\n"
+"              effect.  Disable it again with --no-suppress-connect-headers.\n"
 "\n"
 "              Example:\n"
 "               curl --suppress-connect-headers --include -x proxy https://example.com\n"
@@ -4734,30 +5513,38 @@ void hugehelp(void)
 "              Added in 7.54.0.\n"
 "\n"
 "       --tcp-fastopen\n"
+, stdout);
+ fputs(
 "              Enable use of TCP Fast Open (RFC7413).\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"
 "              page for details about this option.\n"
 "\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"
+"              Disable it again with --no-tcp-nodelay.\n"
+"\n"
 "              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(
-"       -t, --telnet-option <opt=val>\n"
 "              Pass options to the telnet protocol. Supported options are:\n"
 "\n"
 "              TTYPE=<term> Sets the terminal type.\n"
@@ -4766,6 +5553,8 @@ void hugehelp(void)
 "\n"
 "              NEW_ENV=<var,val> Sets an environment variable.\n"
 "\n"
+"              --telnet-option can be used several times in a command line\n"
+"\n"
 "              Example:\n"
 "               curl -t TTYPE=vt100 telnet://example.com/\n"
 "\n"
@@ -4777,7 +5566,8 @@ void hugehelp(void)
 "              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 this option is used several times, the last one will be used.\n"
+"              If  --tftp-blksize is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --tftp-blksize 1024 tftp://example.com/file\n"
@@ -4793,35 +5583,39 @@ void hugehelp(void)
 "              not  acknowledge  or  properly implement TFTP options. When this\n"
 "              option is used --tftp-blksize is ignored.\n"
 "\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"
+"              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(
-"              (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"
-"              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"
-, stdout);
- fputs(
 "              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"
+"              a document that is older than the given date/time, default is  a\n"
 "              document that is newer than the specified date/time.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --time-cond  is  provided  several times, the last set value\n"
+, stdout);
+ fputs(
+"              will be used.\n"
 "\n"
 "              Examples:\n"
 "               curl -z \"Wed 01 Sep 2021 12:18:00\" https://example.com\n"
 "               curl -z \"-Wed 01 Sep 2021 12:18:00\" https://example.com\n"
-, stdout);
- fputs(
 "               curl -z file https://example.com\n"
 "\n"
 "              See also --etag-compare and -R, --remote-time.\n"
@@ -4829,14 +5623,14 @@ void hugehelp(void)
 "       --tls-max <VERSION>\n"
 "              (SSL) VERSION defines maximum supported TLS version. The minimum\n"
 "              acceptable  version  is  set  by  tlsv1.0,  tlsv1.1,  tlsv1.2 or\n"
+, stdout);
+ fputs(
 "              tlsv1.3.\n"
 "\n"
 "              If the connection is done without TLS, this option  has  no  ef-\n"
 "              fect. This includes QUIC-using (HTTP/3) transfers.\n"
 "\n"
 "              default\n"
-, stdout);
- fputs(
 "                     Use up to recommended TLS version.\n"
 "\n"
 "              1.0    Use up to TLSv1.0.\n"
@@ -4844,32 +5638,38 @@ void hugehelp(void)
 "              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"
+, stdout);
+ fputs(
+"       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"
 "\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"
-, stdout);
- fputs(
+"       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"
 "\n"
 "       --tls13-ciphers <ciphersuite list>\n"
-"              (TLS)  Specifies which cipher suites to use in the connection if\n"
-"              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"
+"              (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"
 "\n"
-"              This option is currently used only when curl  is  built  to  use\n"
-, stdout);
- fputs(
+"              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 --ciphers\n"
 "              option.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+, stdout);
+ fputs(
+"              If --tls13-ciphers is provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl --tls13-ciphers TLS_AES_128_GCM_SHA256 https://example.com\n"
@@ -4877,170 +5677,198 @@ void hugehelp(void)
 "              See also --ciphers and --curves. Added in 7.61.0.\n"
 "\n"
 "       --tlsauthtype <type>\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"
+, stdout);
+ fputs(
 "              --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"
 "              OpenSSL or GnuTLS with TLS-SRP support.\n"
 "\n"
+"              If --tlsauthtype is provided several times, the last  set  value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --tlsauthtype SRP https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              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"
+"              If --tlspassword is provided several times, the last  set  value\n"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --tlspassword pwd --tlsuser user https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also --tlsuser.\n"
 "\n"
 "       --tlsuser <name>\n"
-, stdout);
- fputs(
 "              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"
+"              If  --tlsuser is provided several times, the last set value will\n"
+"              be used.\n"
 "              Example:\n"
 "               curl --tlspassword pwd --tlsuser user https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              See also --tlspassword.\n"
 "\n"
 "       --tlsv1.0\n"
-"              (TLS)  Forces curl to use TLS version 1.0 or later when connect-\n"
-, stdout);
- fputs(
+"              (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"
+"              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"
 "              sion.\n"
 "\n"
+, stdout);
+ fputs(
+"              Providing --tlsv1.0 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --tlsv1.0 https://example.com\n"
 "\n"
 "              See also --tlsv1.3. Added in 7.34.0.\n"
 "\n"
 "       --tlsv1.1\n"
-, stdout);
- fputs(
-"              (TLS)  Forces curl to use TLS version 1.1 or later when connect-\n"
+"              (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"
 "              _only_ TLS 1.1.  That behavior was inconsistent depending on the\n"
+, stdout);
+ fputs(
 "              TLS library. Use --tls-max if you want to set a maximum TLS ver-\n"
 "              sion.\n"
 "\n"
+"              Providing --tlsv1.1 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
 "               curl --tlsv1.1 https://example.com\n"
 "\n"
-, stdout);
- fputs(
-"              See also --tlsv1.3. Added in 7.34.0.\n"
+"              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"
 "              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.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"
+"              Providing --tlsv1.2 multiple times has no extra effect.\n"
+"\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --tlsv1.2 https://example.com\n"
 "\n"
-"              See also --tlsv1.3. Added in 7.34.0.\n"
+"              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"
+, stdout);
+ fputs(
+"              (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"
 "              Note that TLS 1.3 is not supported by all TLS backends.\n"
+"              Providing --tlsv1.3 multiple times has no extra effect.\n"
 "\n"
 "              Example:\n"
-, stdout);
- fputs(
 "               curl --tlsv1.3 https://example.com\n"
 "\n"
-"              See also --tlsv1.2. Added in 7.52.0.\n"
+, stdout);
+ fputs(
+"              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"
+"              (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"
 "              higher\n"
 "\n"
+"              Providing --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"
+"              See also --http1.1 and --http2. -1, --tlsv1  requires  that  the\n"
 , stdout);
  fputs(
-"              underlying libcurl was built to support TLS. This  option  over-\n"
-"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\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"
-"              of the algorithms curl supports, and uncompress the  data  while\n"
+"              of  the  algorithms curl supports, and uncompress the data while\n"
 "              receiving it.\n"
 "\n"
+"              Providing --tr-encoding multiple  times  has  no  extra  effect.\n"
+"              Disable it again with --no-tr-encoding.\n"
+"\n"
+, stdout);
+ fputs(
 "              Example:\n"
 "               curl --tr-encoding https://example.com\n"
 "\n"
 "              See also --compressed.\n"
 "\n"
 "       --trace-ascii <file>\n"
-, stdout);
- fputs(
 "              Enables a full trace dump of all incoming and outgoing data, in-\n"
 "              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"
+, stdout);
+ fputs(
 "              shows the ASCII part of the dump. It makes smaller  output  that\n"
 "              might be easier to read for untrained humans.\n"
 "\n"
-, stdout);
- fputs(
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              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  overrides\n"
-"              --trace and -v, --verbose.\n"
-"\n"
-"       --trace-time\n"
-"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
 , stdout);
  fputs(
+"              See  also -v, --verbose and --trace. This option is mutually ex-\n"
+"              clusive to --trace and -v, --verbose.\n"
+"\n"
+"       --trace-time\n"
+"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
 "              displays.\n"
 "\n"
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
+"              Providing --trace-time multiple times has no extra effect.  Dis-\n"
+"              able it again with --no-trace-time.\n"
+"\n"
+, stdout);
+ fputs(
 "              Example:\n"
 "               curl --trace-time --trace-ascii output https://example.com\n"
 "\n"
@@ -5049,28 +5877,32 @@ void hugehelp(void)
 "       --trace <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(
 "              \"-\"  as  filename  to have the output sent to stdout. Use \"%\" as\n"
 "              filename to have the output sent to stderr.\n"
 "\n"
+, stdout);
+ fputs(
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --trace is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl --trace log.txt https://example.com\n"
 "\n"
-"              See  also  --trace-ascii and --trace-time. This option overrides\n"
-, stdout);
- fputs(
-"              -v, --verbose and --trace-ascii.\n"
+"              See also --trace-ascii and --trace-time. This option is mutually\n"
+"              exclusive to -v, --verbose and --trace-ascii.\n"
 "\n"
 "       --unix-socket <path>\n"
+, stdout);
+ fputs(
 "              (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"
+"              will be used.\n"
+"\n"
 "              Example:\n"
 "               curl --unix-socket socket-path https://example.com\n"
 "\n"
@@ -5096,22 +5928,23 @@ void hugehelp(void)
 "              mode  to  allow  reading  server output while stdin is being up-\n"
 "              loaded.\n"
 "\n"
-"              You can specify one -T, --upload-file for each URL on  the  com-\n"
-"              mand  line.  Each -T, --upload-file + URL pair specifies what to\n"
+"              You can specify one --upload-file for each URL  on  the  command\n"
+"              line. Each -T, --upload-file + URL pair specifies what to upload\n"
 , stdout);
  fputs(
-"              upload and to where. curl also supports \"globbing\"  of  the  -T,\n"
-"              --upload-file  argument,  meaning  that  you can upload multiple\n"
-"              files to a single URL by using the same URL globbing style  sup-\n"
-"              ported in the URL.\n"
+"              and to where. curl also supports \"globbing\" of the --upload-file\n"
+"              argument, meaning that you can upload multiple files to a single\n"
+"              URL by using the same URL globbing style supported in the URL.\n"
 "\n"
-"              When  uploading  to an SMTP server: the uploaded data is assumed\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"
 , stdout);
  fputs(
-"              headers  and  mail  body formatted correctly by the user as curl\n"
 "              will not transcode nor encode it further in any way.\n"
 "\n"
+"              --upload-file can be used several times in a command line\n"
+"\n"
 "              Examples:\n"
 "               curl -T file https://example.com\n"
 "               curl -T \"img[1-1000].png\" ftp://ftp.example.com/\n"
@@ -5120,59 +5953,63 @@ void hugehelp(void)
 "              See also -G, --get and -I, --head.\n"
 "\n"
 "       --url <url>\n"
+"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
 , stdout);
  fputs(
-"              Specify a URL to fetch. This option is  mostly  handy  when  you\n"
 "              want to specify URL(s) in a config file.\n"
 "\n"
-"              If  the given URL is missing a scheme name (such as \"http://\" or\n"
-"              \"ftp://\" etc) then curl will make a guess based on the host.  If\n"
-"              the  outermost  sub-domain  name  matches DICT, FTP, IMAP, LDAP,\n"
-"              POP3 or SMTP then that protocol will  be  used,  otherwise  HTTP\n"
+"              If the given URL is missing a scheme name (such as \"http://\"  or\n"
+"              \"ftp://\"  etc) then curl will make a guess based on the host. If\n"
+"              the outermost sub-domain name matches  DICT,  FTP,  IMAP,  LDAP,\n"
+"              POP3  or  SMTP  then  that protocol will be used, otherwise HTTP\n"
+"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
 , stdout);
  fputs(
-"              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
 "              default protocol, see --proto-default for details.\n"
 "\n"
-"              This option may be used any number of times.  To  control  where\n"
-"              this  URL  is written, use the -o, --output or the -O, --remote-\n"
-"              name options.\n"
+"              To  control  where  this URL is written, use the --output or the\n"
+"              --remote-name options.\n"
 "\n"
 "              WARNING: On Windows, particular file://  accesses  can  be  con-\n"
 "              verted to network accesses by the operating system. Beware!\n"
 "\n"
-, stdout);
- fputs(
+"              --url can be used several times in a command line\n"
+"\n"
 "              Example:\n"
 "               curl --url https://example.com\n"
 "\n"
+, stdout);
+ fputs(
 "              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"
 "              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  --use-ascii multiple times has no extra effect.  Dis-\n"
+"              able it again with --no-use-ascii.\n"
 "\n"
 "              Example:\n"
-"               curl -B ftp://example.com/README\n"
-"\n"
 , stdout);
  fputs(
+"               curl -B ftp://example.com/README\n"
+"\n"
 "              See also --crlf and --data-ascii.\n"
 "\n"
 "       -A, --user-agent <name>\n"
 "              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
-"              To encode blanks in the string, surround the string with  single\n"
-"              quote  marks.  This header can also be set with the -H, --header\n"
-"              or the --proxy-header options.\n"
+"              To  encode blanks in the string, surround the string with single\n"
+"              quote marks. This header can also be set with  the  --header  or\n"
+"              the --proxy-header options.\n"
 "\n"
-"              If you give an empty argument to -A, --user-agent (\"\"), it  will\n"
+"              If  you give an empty argument to -A, --user-agent (\"\"), it will\n"
 , stdout);
  fputs(
-"              remove  the  header completely from the request. If you prefer a\n"
+"              remove the header completely from the request. If you  prefer  a\n"
 "              blank header, you can set it to a single space (\" \").\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --user-agent  is  provided several times, the last set value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 "               curl -A \"Agent 007\" https://example.com\n"
@@ -5180,10 +6017,10 @@ void hugehelp(void)
 "              See also -H, --header and --proxy-header.\n"
 "\n"
 "       -u, --user <user:password>\n"
-"              Specify the user name and password to use for server authentica-\n"
 , stdout);
  fputs(
-"              tion. Overrides -n, --netrc and --netrc-optional.\n"
+"              Specify the user name and password to use for server authentica-\n"
+"              tion. Overrides --netrc and --netrc-optional.\n"
 "\n"
 "              If  you  simply  specify  the  user name, curl will prompt for a\n"
 "              password.\n"
@@ -5192,27 +6029,27 @@ void hugehelp(void)
 "              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"
 , stdout);
  fputs(
+"              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"
 "              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"
-"              When  using  Kerberos  V5 with a Windows based server you should\n"
 , stdout);
  fputs(
+"              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"
 "              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"
-"              forest in your setup for example.\n"
-"\n"
 , stdout);
  fputs(
+"              forest in your setup for example.\n"
+"\n"
 "              To specify the domain name use either Down-Level Logon  Name  or\n"
 "              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
 "              user@example.com respectively.\n"
@@ -5224,7 +6061,8 @@ void hugehelp(void)
  fputs(
 "              ronment by specifying a single colon with this option: \"-u :\".\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If  --user is provided several times, the last set value will be\n"
+"              used.\n"
 "\n"
 "              Example:\n"
 "               curl -u user:secret https://example.com\n"
@@ -5232,16 +6070,16 @@ 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"
+"              Makes curl verbose during the operation.  Useful  for  debugging\n"
+"              and  seeing  what's  going  on \"under the hood\". A line starting\n"
 , stdout);
  fputs(
-"              with  '>'  means  \"header  data\" sent by curl, '<' means \"header\n"
-"              data\" received by curl that is hidden in  normal  cases,  and  a\n"
+"              with '>' means \"header data\" sent by  curl,  '<'  means  \"header\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 might\n"
-"              be the option you are looking for.\n"
+"              If you only want HTTP headers in the output, --include might  be\n"
+"              the option you are looking for.\n"
 "\n"
 "              If you think this option still does not give you enough details,\n"
 , stdout);
@@ -5251,17 +6089,20 @@ void hugehelp(void)
 "              This option is global and does not need to be specified for each\n"
 "              use of -:, --next.\n"
 "\n"
-"              Use -s, --silent to make curl really quiet.\n"
+"              Use --silent to make curl really quiet.\n"
+"\n"
+"              Providing --verbose multiple times has no extra effect.  Disable\n"
+"              it again with --no-verbose.\n"
 "\n"
 "              Example:\n"
 "               curl --verbose https://example.com\n"
 "\n"
-"              See also  -i,  --include.  This  option  overrides  --trace  and\n"
-"              --trace-ascii.\n"
-"\n"
-"       -V, --version\n"
 , stdout);
  fputs(
+"              See also -i, --include. This option  is  mutually  exclusive  to\n"
+"              --trace and --trace-ascii.\n"
+"\n"
+"       -V, --version\n"
 "              Displays information about curl and the libcurl version it uses.\n"
 "              The  first  line  includes the full version of curl, libcurl and\n"
 "              other 3rd party libraries linked with the executable.\n"
@@ -5269,9 +6110,9 @@ void hugehelp(void)
 "              The second line (starts with \"Protocols:\") shows  all  protocols\n"
 "              that libcurl reports to support.\n"
 "\n"
-"              The third line (starts with \"Features:\") shows specific features\n"
 , stdout);
  fputs(
+"              The third line (starts with \"Features:\") shows specific features\n"
 "              libcurl reports to offer. Available features include:\n"
 "\n"
 "              alt-svc\n"
@@ -5282,11 +6123,11 @@ void hugehelp(void)
 "                     name  resolves can be done using either the c-ares or the\n"
 "                     threaded resolver backends.\n"
 "\n"
+, stdout);
+ fputs(
 "              brotli Support for automatic brotli compression over HTTP(S).\n"
 "\n"
 "              CharConv\n"
-, stdout);
- fputs(
 "                     curl was built with support for character set conversions\n"
 "                     (like EBCDIC)\n"
 "\n"
@@ -5295,11 +6136,11 @@ void hugehelp(void)
 "                     developers only!\n"
 "\n"
 "              gsasl  The  built-in  SASL authentication includes extensions to\n"
+, stdout);
+ fputs(
 "                     support SCRAM because libcurl was built with libgsasl.\n"
 "\n"
 "              GSS-API\n"
-, stdout);
- fputs(
 "                     GSS-API is supported.\n"
 "\n"
 "              HSTS   HSTS support is present.\n"
@@ -5312,11 +6153,11 @@ void hugehelp(void)
 "\n"
 "              IDN    This curl supports IDN - international domain names.\n"
 "\n"
+, stdout);
+ fputs(
 "              IPv6   You can use IPv6 with this.\n"
 "\n"
 "              Kerberos\n"
-, stdout);
- fputs(
 "                     Kerberos V5 authentication is supported.\n"
 "\n"
 "              Largefile\n"
@@ -5329,11 +6170,11 @@ void hugehelp(void)
 "              MultiSSL\n"
 "                     This curl supports multiple TLS backends.\n"
 "\n"
+, stdout);
+ fputs(
 "              NTLM   NTLM authentication is supported.\n"
 "\n"
 "              NTLM_WB\n"
-, stdout);
- fputs(
 "                     NTLM delegation to winbind helper is supported.\n"
 "\n"
 "              PSL    PSL is short for Public Suffix List and means  that  this\n"
@@ -5343,12 +6184,12 @@ void hugehelp(void)
 "              SPNEGO SPNEGO authentication is supported.\n"
 "\n"
 "              SSL    SSL versions of various protocols are supported, such  as\n"
+, stdout);
+ fputs(
 "                     HTTPS, FTPS, POP3S and so on.\n"
 "\n"
 "              SSPI   SSPI is supported.\n"
 "\n"
-, stdout);
- fputs(
 "              TLS-SRP\n"
 "                     SRP  (Secure Remote Password) authentication is supported\n"
 "                     for TLS.\n"
@@ -5362,11 +6203,14 @@ void hugehelp(void)
 "              UnixSockets\n"
 "                     Unix sockets support is provided.\n"
 "\n"
+, stdout);
+ fputs(
 "              zstd   Automatic decompression (via zstd)  of  compressed  files\n"
 "                     over HTTP is supported.\n"
 "\n"
-, stdout);
- fputs(
+"       Providing  --version  multiple  times  has no extra effect.  Disable it\n"
+"       again with --no-version.\n"
+"\n"
 "       Example:\n"
 "        curl --version\n"
 "\n"
@@ -5374,34 +6218,42 @@ void hugehelp(void)
 "\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"
 , stdout);
  fputs(
-"              file  with  \"@filename\" and to tell curl to read the format from\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"
+"              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"
 , stdout);
  fputs(
+"              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"
 "              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"
+, stdout);
+ fputs(
+"              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"
+"              actly as sent over the network, with leading and trailing white-\n"
+"              space trimmed. Added in curl 7.84.0.\n"
+"\n"
 "              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-"              where all occurrences of % must be doubled when using  this  op-\n"
+, stdout);
+ fputs(
+"              where  all  occurrences of % must be doubled when using this op-\n"
 "              tion.\n"
 "\n"
 "              The variables available are:\n"
 "\n"
-, stdout);
- fputs(
-"              content_type   The  Content-Type  of  the requested document, if\n"
+"              content_type   The Content-Type of the  requested  document,  if\n"
 "                             there was any.\n"
 "\n"
 "              errormsg       The error message. (Added in 7.75.0)\n"
@@ -5410,22 +6262,37 @@ 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"
 , stdout);
  fputs(
-"                             to  a  file  with  the  -O,  --remote-name or -o,\n"
-"                             --output option. It's most useful in  combination\n"
-"                             with the -J, --remote-header-name option.\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 --remote-name or --output  op-\n"
+"                             tion.  It's  most  useful in combination with the\n"
+"                             --remote-header-name option.\n"
 "\n"
 "              ftp_entry_path The initial path curl ended up in when logging on\n"
+, stdout);
+ fputs(
 "                             to the remote FTP server.\n"
 "\n"
-"              http_code      The numerical response code that was found in the\n"
+"              header_json    A JSON object with all HTTP response headers from\n"
+"                             the recent transfer. Values are provided  as  ar-\n"
+"                             rays, since in the case of multiple headers there\n"
+"                             can be multiple values.\n"
+"\n"
+"                             The header names provided in lowercase, listed in\n"
 , stdout);
  fputs(
+"                             order of appearance over the wire. Except for du-\n"
+"                             plicated headers. They are grouped on  the  first\n"
+"                             occurrence  of  that  header,  each value is pre-\n"
+"                             sented in the JSON array.\n"
+"\n"
+"              http_code      The numerical response code that was found in the\n"
 "                             last retrieved HTTP(S) or FTP(s) transfer.\n"
 "\n"
+, stdout);
+ fputs(
 "              http_connect   The numerical code that was found in the last re-\n"
 "                             sponse (from a proxy) to a curl CONNECT request.\n"
 "\n"
@@ -5434,9 +6301,9 @@ void hugehelp(void)
 "\n"
 "              json           A JSON object with all available keys.\n"
 "\n"
+"              local_ip       The  IP  address of the local end of the most re-\n"
 , stdout);
  fputs(
-"              local_ip       The  IP  address of the local end of the most re-\n"
 "                             cently done connection - can be  either  IPv4  or\n"
 "                             IPv6.\n"
 "\n"
@@ -5446,21 +6313,22 @@ void hugehelp(void)
 "              method         The http method used in the most recent HTTP  re-\n"
 "                             quest. (Added in 7.72.0)\n"
 "\n"
-, stdout);
- fputs(
 "              num_connects   Number  of new connects made in the recent trans-\n"
 "                             fer.\n"
 "\n"
+, stdout);
+ fputs(
 "              num_headers    The number of response headers in the most recent\n"
-"                             request (restarted at each\n"
-"                              redirect). Note that the status line IS NOT a header. (Added in 7.73.0)\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"
 "                             quest.\n"
 "\n"
+"              onerror        The rest of the  output  is  only  shown  if  the\n"
 , stdout);
  fputs(
-"              onerror        The rest of the  output  is  only  shown  if  the\n"
 "                             transfer  returned  a  non-zero  error  (Added in\n"
 "                             7.75.0)\n"
 "\n"
@@ -5469,10 +6337,10 @@ void hugehelp(void)
 "                             cate verification that was requested. 0 means the\n"
 "                             verification was successful. (Added in 7.52.0)\n"
 "\n"
+"              redirect_url   When an HTTP request was made without  --location\n"
 , stdout);
  fputs(
-"              redirect_url   When an HTTP request was made without -L, --loca-\n"
-"                             tion to follow redirects (or when --max-redirs is\n"
+"                             to  follow  redirects  (or  when  --max-redirs is\n"
 "                             met), this variable will show the  actual  URL  a\n"
 "                             redirect would have gone to.\n"
 "\n"
@@ -5480,10 +6348,10 @@ void hugehelp(void)
 "                             7.76.0)\n"
 "\n"
 "              remote_ip      The remote IP address of the most  recently  done\n"
-, stdout);
- fputs(
 "                             connection - can be either IPv4 or IPv6.\n"
 "\n"
+, stdout);
+ fputs(
 "              remote_port    The  remote port number of the most recently done\n"
 "                             connection.\n"
 "\n"
@@ -5524,37 +6392,36 @@ void hugehelp(void)
 "                             tion that was requested. 0 means the verification\n"
 "                             was successful.\n"
 "\n"
-"              stderr         From this point on, the  -w,  --write-out  output\n"
-"                             will  be  written  to  standard  error. (Added in\n"
-"                             7.63.0)\n"
+"              stderr         From this point on, the --write-out  output  will\n"
+"                             be written to standard error. (Added in 7.63.0)\n"
+"\n"
 , stdout);
  fputs(
-"\n"
-"              stdout         From this point on, the  -w,  --write-out  output\n"
-"                             will  be written to standard output.  This is the\n"
-"                             default, but can be used  to  switch  back  after\n"
+"              stdout         From  this  point on, the --write-out output will\n"
+"                             be written to standard output.  This is  the  de-\n"
+"                             fault,  but  can  be  used  to  switch back after\n"
 "                             switching to stderr.  (Added in 7.63.0)\n"
 "\n"
 "              time_appconnect\n"
-"                             The  time, in seconds, it took from the start un-\n"
-"                             til the SSL/SSH/etc connect/handshake to the  re-\n"
+"                             The time, in seconds, it took from the start  un-\n"
+"                             til  the SSL/SSH/etc connect/handshake to the re-\n"
 , stdout);
  fputs(
 "                             mote host was completed.\n"
 "\n"
-"              time_connect   The  time, in seconds, it took from the start un-\n"
+"              time_connect   The time, in seconds, it took from the start  un-\n"
 "                             til the TCP connect to the remote host (or proxy)\n"
 "                             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"
@@ -5563,20 +6430,20 @@ 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"
@@ -5584,14 +6451,15 @@ void hugehelp(void)
 "              urlnum         The URL index number of this transfer, 0-indexed.\n"
 , stdout);
  fputs(
-"                             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"
-"                             ingful if you have told curl to follow  location:\n"
+"                             ingful  if you have told curl to follow location:\n"
 "                             headers.\n"
 "\n"
-"              If this option is used several times, the last one will be used.\n"
+"              If --write-out is provided several times,  the  last  set  value\n"
+"              will be used.\n"
 "\n"
 "              Example:\n"
 , stdout);
@@ -5610,6 +6478,9 @@ void hugehelp(void)
 "              file  system  does not support extended attributes, a warning is\n"
 "              issued.\n"
 "\n"
+"              Providing --xattr multiple times has no extra  effect.   Disable\n"
+"              it again with --no-xattr.\n"
+"\n"
 "              Example:\n"
 "               curl --xattr -o storage https://example.com\n"
 "\n"
@@ -5617,51 +6488,50 @@ void hugehelp(void)
 "\n"
 "FILES\n"
 "       ~/.curlrc\n"
-"              Default config file, see -K, --config for details.\n"
+"              Default config file, see --config for details.\n"
 "\n"
 "ENVIRONMENT\n"
-"       The environment variables can be specified in lower case or upper case.\n"
 , stdout);
  fputs(
+"       The environment variables can be specified in lower case or upper case.\n"
 "       The lower case version has precedence. http_proxy is an exception as it\n"
 "       is only available in lower case.\n"
 "\n"
-"       Using an environment variable to set the proxy has the same  effect  as\n"
-"       using the -x, --proxy option.\n"
+"       Using  an  environment variable to set the proxy has the same effect as\n"
+"       using the --proxy option.\n"
 "\n"
 "       http_proxy [protocol://]<host>[:port]\n"
 "              Sets the proxy server to use for HTTP.\n"
 "       HTTPS_PROXY [protocol://]<host>[:port]\n"
+, stdout);
+ fputs(
 "              Sets the proxy server to use for HTTPS.\n"
 "\n"
 "       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
-, stdout);
- fputs(
-"              Sets  the proxy server to use for [url-protocol], where the pro-\n"
-"              tocol is a protocol that curl supports and  as  specified  in  a\n"
+"              Sets the proxy server to use for [url-protocol], where the  pro-\n"
+"              tocol  is  a  protocol  that curl supports and as specified in a\n"
 "              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP, etc.\n"
 "\n"
 "       ALL_PROXY [protocol://]<host>[:port]\n"
-"              Sets  the  proxy  server to use if no protocol-specific proxy is\n"
+"              Sets the proxy server to use if no  protocol-specific  proxy  is\n"
 "              set.\n"
 "\n"
-"       NO_PROXY <comma-separated list of hosts/domains>\n"
-"              list of host names that should not go through any proxy. If  set\n"
 , stdout);
  fputs(
+"       NO_PROXY <comma-separated list of hosts/domains>\n"
+"              list  of host names that should not go through any proxy. If set\n"
 "              to an asterisk '*' only, it matches all hosts. Each name in this\n"
 "              list is matched as either a domain name which contains the host-\n"
 "              name, or the hostname itself.\n"
 "\n"
-"              This  environment  variable  disables use of the proxy even when\n"
-"              specified with the -x,  --proxy  option.  That  is  NO_PROXY=di-\n"
-"              rect.example.com  curl  -x  http://proxy.example.com  http://di-\n"
+"              This environment variable disables use of the  proxy  even  when\n"
+"              specified with the --proxy option. That is NO_PROXY=direct.exam-\n"
 , stdout);
  fputs(
-"              rect.example.com  accesses  the   target   URL   directly,   and\n"
-"              NO_PROXY=direct.example.com   curl  -x  http://proxy.example.com\n"
-"              http://somewhere.example.com accesses the target URL through the\n"
-"              proxy.\n"
+"              ple.com  curl  -x  http://proxy.example.com  http://direct.exam-\n"
+"              ple.com  accesses  the  target  URL  directly,  and NO_PROXY=di-\n"
+"              rect.example.com curl -x  http://proxy.example.com  http://some-\n"
+"              where.example.com accesses the target URL through the 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"
@@ -5705,8 +6575,8 @@ void hugehelp(void)
 "              SSL  backend  names  (case-insensitive): bearssl, gnutls, gskit,\n"
 , stdout);
  fputs(
-"              mbedtls, mesalink, nss, openssl, rustls, schannel, secure-trans-\n"
-"              port, wolfssl\n"
+"              mbedtls, nss, openssl, rustls, schannel, secure-transport, wolf-\n"
+"              ssl\n"
 "\n"
 "       HOME <dir>\n"
 "              If  set,  this  is  used to find the home directory when that is\n"
@@ -5791,6 +6661,9 @@ void hugehelp(void)
 "       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"
+"              instructions.\n"
+"\n"
 "       1      Unsupported protocol. This build of curl has no support for this\n"
 "              protocol.\n"
 "\n"
@@ -5798,50 +6671,50 @@ void hugehelp(void)
 "\n"
 "       3      URL malformed. The syntax was not correct.\n"
 "\n"
-"       4      A feature or option that was needed to perform the  desired  re-\n"
-"              quest  was not enabled or was explicitly disabled at build-time.\n"
 , stdout);
  fputs(
+"       4      A  feature  or option that was needed to perform the desired re-\n"
+"              quest was not enabled or was explicitly disabled at  build-time.\n"
 "              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"
 "              solved.\n"
 "\n"
+, stdout);
+ fputs(
 "       7      Failed to connect to host.\n"
 "\n"
 "       8      Weird server reply. The server sent data curl could not parse.\n"
 "\n"
-, stdout);
- fputs(
-"       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"
-"              when  an active FTP session is used, an error code was sent over\n"
-"              the control connection or similar.\n"
-"\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"
+"              the control connection or similar.\n"
+"\n"
 "       11     FTP weird PASS reply. Curl could not parse the reply sent to the\n"
 "              PASS request.\n"
 "\n"
-"       12     During  an  active  FTP  session while waiting for the server to\n"
+"       12     During an active FTP session while waiting  for  the  server  to\n"
 "              connect back to curl, the timeout expired.\n"
 "\n"
 "       13     FTP weird PASV reply, Curl could not parse the reply sent to the\n"
 "              PASV request.\n"
 "\n"
-"       14     FTP  weird  227  format.  Curl  could not parse the 227-line the\n"
-"              server sent.\n"
-"\n"
 , stdout);
  fputs(
+"       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"
 "              227-line.\n"
 "\n"
@@ -5849,27 +6722,27 @@ void hugehelp(void)
 "              This is somewhat generic and can be one out of several problems,\n"
 "              see the error message for details.\n"
 "\n"
-"       17     FTP  could  not  set binary. Could not change transfer method to\n"
+"       17     FTP could not set binary. Could not change  transfer  method  to\n"
+, stdout);
+ fputs(
 "              binary.\n"
 "\n"
 "       18     Partial file. Only a part of the file was transferred.\n"
 "\n"
-, stdout);
- fputs(
 "       19     FTP could not download/access the given file, the RETR (or simi-\n"
 "              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"
-"              above. This return code only appears if -f, --fail is used.\n"
-"\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(
-"       23     Write  error. Curl could not write data to a local filesystem or\n"
+"              above. This return code only appears if --fail is used.\n"
+"\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"
@@ -5877,12 +6750,12 @@ void hugehelp(void)
 "       27     Out of memory. A memory allocation request failed.\n"
 "\n"
 "       28     Operation timeout. The specified time-out period was reached ac-\n"
-"              cording to the conditions.\n"
-"\n"
 , stdout);
  fputs(
-"       30     FTP PORT failed. The PORT command failed. Not  all  FTP  servers\n"
-"              support  the  PORT  command, try doing a transfer using PASV in-\n"
+"              cording to the conditions.\n"
+"\n"
+"       30     FTP  PORT  failed.  The PORT command failed. Not all FTP servers\n"
+"              support the PORT command, try doing a transfer  using  PASV  in-\n"
 "              stead!\n"
 "\n"
 "       31     FTP could not use REST. The REST command failed. This command is\n"
@@ -5914,23 +6787,21 @@ 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"
 "              mum amount.\n"
 "\n"
-"       48     Unknown  option  specified  to  libcurl. This indicates that you\n"
-"              passed a weird option to curl that was passed on to libcurl  and\n"
+"       48     Unknown option specified to libcurl.  This  indicates  that  you\n"
+"              passed  a weird option to curl that was passed on to libcurl and\n"
 , stdout);
  fputs(
 "              rejected. Read up in the manual!\n"
 "\n"
 "       49     Malformed telnet option.\n"
 "\n"
-"       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
-"\n"
-"       52     The  server  did not reply anything, which here is considered an\n"
+"       52     The server did not reply anything, which here is  considered  an\n"
 "              error.\n"
 "\n"
 "       53     SSL crypto engine not found.\n"
@@ -5941,18 +6812,16 @@ void hugehelp(void)
 "\n"
 "       56     Failure in receiving network data.\n"
 "\n"
-, stdout);
- fputs(
 "       58     Problem with the local certificate.\n"
 "       59     Could not use specified SSL cipher.\n"
 "\n"
-"       60     Peer certificate cannot be authenticated with known CA  certifi-\n"
+, stdout);
+ fputs(
+"       60     Peer  certificate cannot be authenticated with known CA certifi-\n"
 "              cates.\n"
 "\n"
 "       61     Unrecognized transfer encoding.\n"
 "\n"
-"       62     Invalid LDAP URL.\n"
-"\n"
 "       63     Maximum file size exceeded.\n"
 "\n"
 "       64     Requested FTP SSL level failed.\n"
@@ -5961,11 +6830,11 @@ void hugehelp(void)
 "\n"
 "       66     Failed to initialise SSL Engine.\n"
 "\n"
-, stdout);
- fputs(
-"       67     The  user  name,  password, or similar was not accepted and curl\n"
+"       67     The user name, password, or similar was not  accepted  and  curl\n"
 "              failed to log in.\n"
 "\n"
+, stdout);
+ fputs(
 "       68     File not found on TFTP server.\n"
 "\n"
 "       69     Permission problem on TFTP server.\n"
@@ -5980,16 +6849,12 @@ void hugehelp(void)
 "\n"
 "       74     No such user (TFTP).\n"
 "\n"
-"       75     Character conversion failed.\n"
-"\n"
-, stdout);
- fputs(
-"       76     Character conversion functions required.\n"
-"\n"
 "       77     Problem reading the SSL CA cert (path? access rights?).\n"
 "\n"
 "       78     The resource referenced in the URL does not exist.\n"
 "\n"
+, stdout);
+ fputs(
 "       79     An unspecified error occurred during the SSH session.\n"
 "\n"
 "       80     Failed to shut down the SSL connection.\n"
@@ -6000,8 +6865,6 @@ void hugehelp(void)
 "\n"
 "       84     The FTP PRET command failed.\n"
 "\n"
-, stdout);
- fputs(
 "       85     Mismatch of RTSP CSeq numbers.\n"
 "\n"
 "       86     Mismatch of RTSP Session Identifiers.\n"
@@ -6010,6 +6873,8 @@ void hugehelp(void)
 "\n"
 "       88     FTP chunk callback reported error.\n"
 "\n"
+, stdout);
+ fputs(
 "       89     No connection available, the session will be queued.\n"
 "\n"
 "       90     SSL public key does not matched pinned public key.\n"
@@ -6020,28 +6885,28 @@ void hugehelp(void)
 "\n"
 "       93     An API function was called from inside a callback.\n"
 "\n"
-, stdout);
- fputs(
 "       94     An authentication function returned an error.\n"
 "\n"
-"       95     A problem was detected in the HTTP/3  layer.  This  is  somewhat\n"
-"              generic  and  can  be one out of several problems, see the error\n"
+"       95     A  problem  was  detected  in the HTTP/3 layer. This is somewhat\n"
+, stdout);
+ fputs(
+"              generic and can be one out of several problems,  see  the  error\n"
 "              message for details.\n"
 "\n"
-"       96     QUIC connection error. This error may be caused by  an  SSL  li-\n"
+"       96     QUIC  connection  error.  This error may be caused by an SSL li-\n"
 "              brary error. QUIC is the protocol used for HTTP/3 transfers.\n"
 "\n"
 "       XX     More error codes will appear here in future releases. The exist-\n"
-, stdout);
- fputs(
 "              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"
+, stdout);
+ fputs(
 "       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"
@@ -6052,10 +6917,6 @@ void hugehelp(void)
 "\n"
 , stdout) ;
 }
-#else /* !USE_MANUAL */
-/* built-in manual is disabled, blank function */
-#include "tool_hugehelp.h"
-void hugehelp(void) {}
 #endif /* USE_MANUAL */
 #else
 /*
@@ -6067,4826 +6928,5270 @@ 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 222237
-     to 57795 bytes. You can disable the use of compressed help
+     Thanks to this operation, the size of this data shrank from 253328
+     to 63131 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, 0xed, 0xbd,
-  0x6b, 0x7b, 0xdc, 0xc6, 0xb5, 0x26, 0xfa, 0xdd, 0xbf, 0x02, 0xbb, 0x73,
-  0x32, 0x24, 0x77, 0x1a, 0xcd, 0xbb, 0x2e, 0x0c, 0xed, 0x31, 0x4d, 0x51,
-  0x16, 0x77, 0x28, 0x91, 0x51, 0x53, 0xb6, 0x33, 0xb6, 0x1f, 0x3d, 0x60,
-  0x37, 0x48, 0xc2, 0xea, 0x06, 0x3a, 0x00, 0x9a, 0x17, 0x67, 0x72, 0x7e,
-  0xfb, 0x59, 0xd7, 0xaa, 0x02, 0xaa, 0xd0, 0x64, 0xd3, 0x76, 0x9c, 0x3d,
-  0x67, 0xf6, 0x4c, 0x2c, 0x89, 0x04, 0x0a, 0x55, 0xab, 0x56, 0xad, 0x5a,
-  0xd7, 0x77, 0x45, 0xd1, 0x43, 0xff, 0xf7, 0x91, 0xfe, 0xf7, 0x11, 0xfe,
-  0x0f, 0xfe, 0xfc, 0x2c, 0x8a, 0xce, 0xca, 0xe2, 0xa7, 0x74, 0x54, 0x87,
-  0x9f, 0xfd, 0xf8, 0xf1, 0x7f, 0x47, 0xfc, 0xff, 0xe0, 0x9d, 0x1f, 0xe0,
-  0xcf, 0xcf, 0x16, 0x8e, 0xbd, 0x1e, 0xd9, 0x17, 0xfe, 0xf7, 0xc7, 0xb5,
-  0xe8, 0xa1, 0x17, 0xfe, 0x77, 0xb4, 0x4a, 0x2f, 0x7c, 0x94, 0x2f, 0xec,
-  0xe3, 0xdf, 0x3f, 0x7e, 0x5c, 0xfc, 0x91, 0x1f, 0x70, 0x56, 0xf8, 0x9f,
-  0x75, 0x7c, 0xef, 0x87, 0x8f, 0xf8, 0x57, 0xf8, 0xc9, 0x67, 0x9f, 0xbd,
-  0x3b, 0x78, 0x7b, 0xa4, 0xaf, 0x8e, 0xe6, 0xe5, 0x24, 0x8a, 0xa3, 0xba,
-  0x4c, 0xf2, 0xea, 0x32, 0x2d, 0xa3, 0x24, 0xfa, 0xf0, 0xfe, 0xe4, 0xb3,
-  0xcf, 0x86, 0x7f, 0x7b, 0x77, 0x7a, 0x36, 0x3c, 0x1e, 0x36, 0x1e, 0xfb,
-  0xbe, 0x98, 0xd5, 0x59, 0x91, 0x57, 0x30, 0x7d, 0x78, 0xa8, 0xfa, 0xf1,
-  0xb3, 0xcf, 0x5e, 0x1d, 0x0d, 0x0f, 0xdf, 0x1f, 0x9f, 0x9d, 0x1f, 0x9f,
-  0xbe, 0x6b, 0x3c, 0x19, 0x65, 0x55, 0x04, 0x43, 0xd5, 0x45, 0x31, 0x89,
-  0x2e, 0x8b, 0xd2, 0x0c, 0x5f, 0x66, 0xf9, 0x55, 0x34, 0x4e, 0xea, 0x24,
-  0xba, 0x2c, 0x8b, 0x69, 0x84, 0xbf, 0x29, 0xe0, 0xb9, 0x2a, 0x2d, 0x6f,
-  0xd2, 0x72, 0x10, 0x1d, 0xd7, 0x51, 0x35, 0x9f, 0xcd, 0x8a, 0xb2, 0xae,
-  0x74, 0xb8, 0xfa, 0x3a, 0xad, 0xd2, 0x68, 0x56, 0x16, 0x75, 0x31, 0x2a,
-  0x26, 0xd5, 0x5e, 0xf4, 0xea, 0xf8, 0xf0, 0xbc, 0x1f, 0xbd, 0x3e, 0x3e,
-  0x39, 0x82, 0xff, 0x9e, 0x9f, 0xd1, 0x7f, 0x86, 0xfd, 0xe8, 0xeb, 0xd3,
-  0xb3, 0x37, 0x47, 0xef, 0xf5, 0x4f, 0xf8, 0x41, 0xf4, 0xe6, 0x1c, 0x7f,
-  0x4b, 0x7f, 0x0c, 0xfb, 0x3a, 0xdc, 0xf1, 0xdb, 0x03, 0xfc, 0x21, 0xfe,
-  0x81, 0xcf, 0x9c, 0xbc, 0xa2, 0x7f, 0xe2, 0x1f, 0xf0, 0xcf, 0xb7, 0x7f,
-  0x3d, 0x87, 0xa1, 0xcf, 0x4e, 0xcf, 0xb6, 0xf9, 0xbf, 0xf0, 0xa3, 0xf7,
-  0xe7, 0x6f, 0xcf, 0xf8, 0xbf, 0xf4, 0x8f, 0x21, 0xfc, 0x63, 0x78, 0x78,
-  0x66, 0x86, 0x1b, 0xd2, 0x0c, 0x86, 0x6f, 0xbf, 0xa2, 0xff, 0x0c, 0xf1,
-  0xbf, 0xfc, 0x03, 0x9a, 0xd3, 0xf9, 0xd1, 0xc9, 0xbb, 0xa3, 0x73, 0x5c,
-  0xe5, 0x39, 0x3c, 0x37, 0x88, 0xce, 0xaf, 0xd3, 0x68, 0x54, 0x4c, 0xa7,
-  0x49, 0x3e, 0x66, 0x0a, 0x8d, 0xd3, 0x2a, 0xbb, 0xca, 0xd3, 0xb1, 0x59,
-  0x6c, 0x11, 0xdd, 0x16, 0xe5, 0xa7, 0xe8, 0x36, 0xab, 0xaf, 0x8b, 0x79,
-  0x1d, 0xcd, 0x81, 0x30, 0x51, 0x96, 0xd7, 0x69, 0x99, 0x8c, 0x90, 0xf2,
-  0x83, 0xcf, 0x1a, 0x54, 0x2e, 0x2e, 0x81, 0xa4, 0x15, 0xd0, 0xef, 0x62,
-  0x5e, 0x4d, 0x8a, 0x64, 0x0c, 0x3f, 0xc0, 0x57, 0x2e, 0xe7, 0x13, 0x20,
-  0x78, 0x36, 0xfa, 0x54, 0x45, 0x93, 0xec, 0x13, 0x11, 0xef, 0xee, 0x5e,
-  0x09, 0xdb, 0xe7, 0x41, 0x93, 0x39, 0x10, 0x36, 0x8f, 0xcd, 0x87, 0xb3,
-  0x51, 0x82, 0x1f, 0x20, 0x6a, 0x46, 0xf3, 0x19, 0x8e, 0xd6, 0x27, 0xd2,
-  0x45, 0xb3, 0xa2, 0x82, 0x97, 0x86, 0xc3, 0x13, 0x98, 0x7a, 0x9e, 0xa7,
-  0x34, 0x8f, 0xaa, 0x0f, 0xff, 0x28, 0x3e, 0x65, 0x29, 0xfc, 0xe5, 0x32,
-  0x9b, 0xa4, 0x11, 0x6f, 0xb0, 0x19, 0x0e, 0x19, 0xa9, 0x4c, 0xab, 0xf9,
-  0x34, 0x8d, 0x70, 0xad, 0xd3, 0xa2, 0x4c, 0x07, 0xd1, 0x41, 0x15, 0xdd,
-  0x17, 0x73, 0x58, 0xdb, 0x64, 0x02, 0x1b, 0x9e, 0x46, 0x17, 0xe9, 0xa4,
-  0xb8, 0xed, 0xe3, 0x06, 0x47, 0xf9, 0x7c, 0x7a, 0x01, 0xaf, 0xc0, 0xf4,
-  0x2f, 0xd3, 0xa4, 0x9e, 0xc3, 0xab, 0xf4, 0x98, 0x0e, 0x37, 0x4d, 0x60,
-  0x15, 0xf0, 0x6e, 0x19, 0x5d, 0xa7, 0xb0, 0xca, 0x6a, 0x96, 0xb5, 0x29,
-  0x01, 0xc4, 0x9c, 0x15, 0xb7, 0x69, 0x99, 0x8e, 0xa3, 0x8b, 0xfb, 0x08,
-  0x96, 0x7d, 0xc1, 0x6c, 0x88, 0xbc, 0x17, 0x25, 0xf0, 0x41, 0xc3, 0x81,
-  0x71, 0x99, 0x4e, 0x92, 0x1a, 0x9e, 0x33, 0x9f, 0x1a, 0xc0, 0x36, 0xa6,
-  0xa9, 0x0e, 0x27, 0xaf, 0xae, 0x6e, 0xaf, 0xd1, 0xcb, 0xe3, 0xb4, 0x4e,
-  0xb2, 0x49, 0x05, 0x9f, 0xc3, 0x63, 0x21, 0xcf, 0xe0, 0x3e, 0xe2, 0x09,
-  0x88, 0xa2, 0xea, 0x3e, 0xaf, 0x93, 0x3b, 0xfa, 0xbc, 0x70, 0x68, 0x3c,
-  0x4e, 0x67, 0x69, 0x3e, 0x4e, 0xf3, 0x7a, 0x10, 0xfd, 0x0d, 0x96, 0x7b,
-  0x99, 0x01, 0x01, 0x12, 0x19, 0x07, 0x3e, 0x0b, 0x5b, 0x3e, 0x2a, 0x33,
-  0x3a, 0x47, 0x3a, 0x5c, 0x96, 0x47, 0xef, 0x5f, 0x1f, 0x46, 0xdb, 0x2f,
-  0x5f, 0x3c, 0xb3, 0xcb, 0xc2, 0x77, 0x47, 0x49, 0x0e, 0x8b, 0x4d, 0x47,
-  0xd9, 0xe5, 0x7d, 0x34, 0x9d, 0x4f, 0xea, 0x6c, 0x06, 0xa4, 0xc6, 0x93,
-  0x87, 0x2c, 0x35, 0x4b, 0xe0, 0x94, 0x20, 0xc9, 0xe8, 0x07, 0xb4, 0xec,
-  0xdb, 0x32, 0xab, 0xf1, 0x80, 0xd1, 0xef, 0x60, 0x72, 0xa9, 0x3d, 0x46,
-  0xc8, 0x51, 0xf0, 0x9d, 0x0b, 0x60, 0x24, 0x20, 0x2e, 0x6e, 0xca, 0xdf,
-  0xe7, 0x05, 0x3d, 0x8c, 0xf4, 0xc7, 0xb5, 0x24, 0x15, 0x4c, 0x64, 0xef,
-  0x33, 0x2b, 0x52, 0x7a, 0xd7, 0x75, 0x3d, 0xdb, 0x5b, 0x5f, 0xaf, 0xb2,
-  0x3a, 0x1d, 0xfc, 0xa3, 0xc8, 0xd3, 0x7e, 0x7d, 0x5b, 0xf4, 0xeb, 0xeb,
-  0x32, 0x4d, 0xff, 0x39, 0x00, 0x36, 0xee, 0x99, 0x67, 0x61, 0x36, 0xf7,
-  0x32, 0xdd, 0xab, 0x14, 0x8e, 0x70, 0xfa, 0xf7, 0x79, 0x9a, 0xe3, 0x77,
-  0x60, 0x76, 0xc9, 0x64, 0x76, 0x9d, 0xc0, 0xfe, 0xa6, 0xc0, 0x90, 0x78,
-  0xce, 0x81, 0x67, 0x70, 0xae, 0xf3, 0x0a, 0xbf, 0xfd, 0xfd, 0x8f, 0x81,
-  0xcf, 0x5e, 0xd2, 0x57, 0xe1, 0xbf, 0x83, 0xf4, 0x2e, 0x99, 0xc2, 0x92,
-  0xf1, 0x63, 0xeb, 0xc8, 0x66, 0xdf, 0x6f, 0xc6, 0x9b, 0x1b, 0x1b, 0x3f,
-  0x0e, 0xea, 0xbb, 0xba, 0xf7, 0xc8, 0x37, 0x36, 0x36, 0x9c, 0x77, 0xf0,
-  0xe1, 0x55, 0xa4, 0x44, 0x34, 0x01, 0x3e, 0xc2, 0x09, 0xfc, 0x9c, 0x96,
-  0x45, 0xb5, 0xf6, 0xc8, 0xb1, 0x92, 0xf8, 0xe7, 0xd6, 0xb7, 0xdf, 0xa5,
-  0x15, 0xb1, 0x92, 0x5d, 0x71, 0x94, 0x94, 0xc0, 0xce, 0x85, 0x91, 0x63,
-  0x29, 0x1c, 0xa3, 0x0b, 0x38, 0xc9, 0x4a, 0x1f, 0x38, 0x7c, 0xf0, 0x34,
-  0x08, 0xbb, 0x04, 0x8e, 0x6f, 0x0e, 0x2f, 0xe4, 0xe9, 0x5d, 0xed, 0x1c,
-  0xff, 0x34, 0x19, 0x5d, 0x47, 0x05, 0xec, 0x49, 0x19, 0xda, 0x0a, 0x77,
-  0x4a, 0x49, 0x39, 0xba, 0xce, 0x6e, 0x80, 0x26, 0x2f, 0x5f, 0x3e, 0x8b,
-  0xe1, 0x3f, 0x2f, 0x7f, 0x5c, 0xbf, 0x29, 0x26, 0x40, 0xa2, 0x9d, 0x1f,
-  0xd7, 0x71, 0xff, 0xff, 0x91, 0xf4, 0x2f, 0xfa, 0xa3, 0x7f, 0x0e, 0xae,
-  0xeb, 0xe9, 0xa4, 0xd7, 0xc9, 0x56, 0x49, 0x0e, 0xff, 0x9b, 0x16, 0xf3,
-  0xbc, 0x36, 0xac, 0x54, 0xe4, 0xc4, 0x13, 0x2a, 0xa8, 0x26, 0x59, 0x0e,
-  0x87, 0x17, 0x79, 0x1e, 0x39, 0x0c, 0x0f, 0x2f, 0x9c, 0x5c, 0x7b, 0xd0,
-  0xeb, 0xd1, 0x35, 0x52, 0x00, 0x78, 0x2b, 0x11, 0x32, 0xd4, 0x19, 0xac,
-  0x0d, 0x5e, 0xcd, 0x49, 0x76, 0xd1, 0x58, 0xfc, 0xb5, 0x0c, 0x1e, 0x2c,
-  0xca, 0x31, 0x0a, 0xfa, 0xd6, 0x34, 0xcc, 0x59, 0x76, 0xbe, 0x19, 0xe9,
-  0x65, 0x83, 0x3f, 0xa0, 0x89, 0x4d, 0xb3, 0x3b, 0x18, 0x01, 0xff, 0x89,
-  0x5f, 0x83, 0x89, 0xf3, 0x68, 0x11, 0xce, 0x98, 0x3e, 0xa3, 0xef, 0xdb,
-  0xb3, 0x0c, 0x53, 0x6f, 0x2c, 0x9d, 0x3e, 0x6a, 0x17, 0x1f, 0xc1, 0xf6,
-  0xcd, 0xe0, 0xad, 0x39, 0x8a, 0x58, 0xbe, 0xa8, 0x60, 0x18, 0x90, 0x14,
-  0x57, 0xb0, 0x33, 0xb0, 0x1b, 0xc8, 0xcd, 0xb8, 0x59, 0xf7, 0xd1, 0x3b,
-  0x60, 0x1a, 0x96, 0x52, 0x0e, 0xd3, 0x4f, 0xd2, 0xba, 0x7e, 0x78, 0xa3,
-  0x2c, 0xe7, 0xee, 0x6d, 0x06, 0x98, 0xb7, 0xeb, 0x0d, 0xe0, 0xb6, 0xbd,
-  0xad, 0xd6, 0xe3, 0xdf, 0x82, 0xcc, 0xb6, 0x47, 0x07, 0x66, 0xf0, 0x8f,
-  0x7f, 0x3a, 0xbc, 0x77, 0x8b, 0xbf, 0xcd, 0xf2, 0x9b, 0xe2, 0x13, 0x90,
-  0x89, 0xee, 0xd7, 0xa4, 0x49, 0x51, 0x14, 0x52, 0xd3, 0x59, 0x6d, 0x6e,
-  0x2f, 0x64, 0x4a, 0xf8, 0xd1, 0x45, 0x72, 0x31, 0xb9, 0x8f, 0xae, 0x93,
-  0x9b, 0x14, 0xd7, 0x3c, 0x03, 0x6e, 0x45, 0x2a, 0xc0, 0x2d, 0x32, 0x21,
-  0xc1, 0x20, 0xa2, 0x63, 0x5c, 0xcc, 0x2f, 0x40, 0xfc, 0xa0, 0xd8, 0x60,
-  0xe2, 0x24, 0x37, 0x45, 0x36, 0xc6, 0x47, 0x75, 0xb8, 0xea, 0x3a, 0x85,
-  0x57, 0xe8, 0xc3, 0x74, 0x67, 0x81, 0xb4, 0xc5, 0x99, 0xd2, 0x81, 0xcb,
-  0x6a, 0xbc, 0xfe, 0x40, 0x4e, 0x26, 0x93, 0xaa, 0x88, 0xa2, 0xab, 0x02,
-  0xcf, 0x0a, 0x49, 0x67, 0x62, 0x76, 0xd8, 0x98, 0xeb, 0x04, 0x2f, 0x39,
-  0xb8, 0xcf, 0xcc, 0x69, 0x28, 0x53, 0x12, 0xd4, 0xb4, 0x5b, 0xc9, 0xa4,
-  0xcf, 0x97, 0x19, 0xbe, 0x23, 0xb4, 0x8a, 0x56, 0xfe, 0xc7, 0x4a, 0x3f,
-  0x5a, 0xf9, 0x9f, 0x2b, 0xc4, 0x13, 0x2b, 0xff, 0xb9, 0x62, 0xf7, 0x1a,
-  0x74, 0xb5, 0x9b, 0x6c, 0x9c, 0x32, 0x5b, 0x1c, 0x9f, 0xdd, 0x3c, 0x8b,
-  0x7e, 0x86, 0xd3, 0x06, 0xd3, 0x1a, 0xa7, 0x77, 0xca, 0x94, 0xba, 0x36,
-  0x78, 0x3b, 0x02, 0xa1, 0x9c, 0xcc, 0xe0, 0x5b, 0xb3, 0xb4, 0x1c, 0x01,
-  0x07, 0x27, 0x57, 0xc0, 0xb3, 0x70, 0x33, 0xeb, 0x70, 0x38, 0x3e, 0xbe,
-  0xc2, 0xcb, 0x02, 0x11, 0x1a, 0xe5, 0xc9, 0x14, 0x4e, 0xc5, 0x09, 0xce,
-  0x28, 0xcb, 0x03, 0xdb, 0xf9, 0xfd, 0x65, 0xfa, 0x62, 0x63, 0x6f, 0x6f,
-  0xfb, 0x8f, 0x5b, 0xbb, 0x69, 0x7d, 0xbd, 0xf1, 0xe3, 0xba, 0xdd, 0xc4,
-  0xe3, 0x4b, 0x22, 0xbc, 0x32, 0xa1, 0x4e, 0x03, 0xef, 0x7b, 0xbd, 0x44,
-  0x60, 0x00, 0xf8, 0x7b, 0x7a, 0x99, 0xdd, 0xf5, 0x55, 0xa1, 0xe2, 0x93,
-  0x97, 0x00, 0xc3, 0xc1, 0x0e, 0xa2, 0xa8, 0xd0, 0xe1, 0xae, 0xe6, 0x69,
-  0x05, 0xb4, 0xbc, 0xbd, 0x4e, 0xea, 0xc8, 0x0c, 0xc0, 0x7b, 0x3b, 0xcd,
-  0xae, 0xae, 0xeb, 0xe8, 0x36, 0xc1, 0xbb, 0x08, 0x54, 0x2b, 0x1a, 0x02,
-  0xaf, 0x7d, 0xb8, 0x84, 0x2e, 0x13, 0xb8, 0x4f, 0x70, 0x17, 0xe9, 0x8e,
-  0x07, 0x09, 0x65, 0xa9, 0x7e, 0x2f, 0x5b, 0x62, 0x74, 0xae, 0xe8, 0x22,
-  0xa9, 0xf0, 0xe8, 0xe6, 0x20, 0x22, 0x6a, 0x50, 0x1a, 0xe6, 0xf8, 0xaf,
-  0x6b, 0x50, 0x0b, 0x88, 0x0a, 0x32, 0x51, 0xba, 0x47, 0x5f, 0xe3, 0x86,
-  0xe2, 0xee, 0x18, 0x4d, 0x00, 0xb6, 0xa9, 0x2f, 0x1b, 0x6d, 0xde, 0xa8,
-  0xe0, 0xd8, 0x81, 0x80, 0x32, 0xbc, 0x81, 0x32, 0x77, 0xd0, 0xe3, 0x75,
-  0xd2, 0x1c, 0x93, 0x8a, 0x54, 0x07, 0xd2, 0x16, 0x60, 0xf2, 0xce, 0x62,
-  0x81, 0x68, 0xc9, 0x27, 0xd4, 0x51, 0x5a, 0xf7, 0x3f, 0xbd, 0x36, 0x2e,
-  0x80, 0xcd, 0x60, 0xb6, 0x20, 0x94, 0x71, 0x65, 0x28, 0x6a, 0x89, 0x2a,
-  0xc4, 0xe6, 0x30, 0x26, 0xfe, 0x30, 0xab, 0xf1, 0xc6, 0x21, 0x25, 0x17,
-  0xe6, 0x0b, 0x44, 0x21, 0x3d, 0x0c, 0x04, 0xb6, 0xb3, 0x7e, 0xba, 0x42,
-  0xe1, 0xd9, 0xe8, 0x26, 0x99, 0x64, 0xa0, 0xac, 0xa6, 0xe6, 0x2d, 0xba,
-  0xee, 0x47, 0xa8, 0x2c, 0x4d, 0xe0, 0xc4, 0x8c, 0x8a, 0xb2, 0x44, 0x83,
-  0x00, 0x77, 0xf0, 0x82, 0x45, 0xe9, 0x34, 0x05, 0x2d, 0xc3, 0x25, 0x27,
-  0x8c, 0x7e, 0x99, 0x64, 0x25, 0x3c, 0x0d, 0x8a, 0x05, 0x49, 0x7d, 0x5a,
-  0x32, 0xcd, 0x0b, 0x47, 0x1d, 0x8d, 0xd2, 0x59, 0x5d, 0x85, 0x56, 0xa3,
-  0x5b, 0x0d, 0x13, 0x29, 0x53, 0xa4, 0xb9, 0xab, 0x7f, 0x11, 0x45, 0x8d,
-  0x4a, 0x40, 0x2a, 0x98, 0x2a, 0x38, 0xa0, 0x92, 0x55, 0x85, 0xd5, 0x9e,
-  0x91, 0x2b, 0x40, 0x8c, 0x11, 0xb5, 0xa7, 0x38, 0x45, 0x7c, 0xb8, 0xe2,
-  0x53, 0x4a, 0xa2, 0x19, 0xb7, 0x90, 0xf5, 0x6f, 0xfe, 0x2e, 0x5e, 0x5e,
-  0x40, 0x49, 0x33, 0x38, 0x7c, 0xd5, 0xec, 0x26, 0x7e, 0x1e, 0xb5, 0x7f,
-  0xb8, 0xd1, 0xc7, 0xd5, 0x35, 0x68, 0x65, 0x95, 0x9c, 0xea, 0x6c, 0x0a,
-  0xdc, 0x72, 0x83, 0x3b, 0x3b, 0x4b, 0xd3, 0xf1, 0x20, 0x3a, 0xbd, 0x44,
-  0xa9, 0x5a, 0xc2, 0xa4, 0x6b, 0xfa, 0x35, 0xde, 0x2a, 0x40, 0x83, 0x31,
-  0x1e, 0x42, 0xab, 0xf8, 0xf0, 0x54, 0x9c, 0xdb, 0x81, 0x24, 0x79, 0x02,
-  0x3f, 0x81, 0xd9, 0x4e, 0x9a, 0x57, 0x10, 0x9d, 0x41, 0x90, 0xde, 0x38,
-  0xbd, 0x8b, 0x34, 0x22, 0x1e, 0xbc, 0x48, 0xeb, 0xdb, 0x34, 0x35, 0xc3,
-  0x55, 0x29, 0xdc, 0x7b, 0xb8, 0x5d, 0xac, 0x12, 0x82, 0x20, 0x64, 0xa5,
-  0x16, 0xc9, 0x7b, 0xfa, 0xe1, 0xfc, 0xec, 0xc3, 0xb9, 0x73, 0x04, 0x71,
-  0x9c, 0xba, 0x98, 0x8c, 0x99, 0xd9, 0x6f, 0xb3, 0x0a, 0xf8, 0x94, 0x89,
-  0x0f, 0x4a, 0x14, 0x0a, 0x38, 0xbc, 0x08, 0xd2, 0x51, 0x0a, 0x57, 0xec,
-  0x98, 0x2d, 0x16, 0xd8, 0x88, 0xaa, 0x06, 0x29, 0xc8, 0x87, 0x09, 0xe7,
-  0xa2, 0xc3, 0xc1, 0x7c, 0xe0, 0x73, 0x55, 0x5d, 0xce, 0x47, 0xa4, 0x0e,
-  0x20, 0xef, 0xe0, 0xbf, 0x49, 0x59, 0x25, 0xb1, 0x8a, 0xdb, 0x40, 0x83,
-  0x80, 0x04, 0x41, 0x83, 0x67, 0x02, 0x53, 0x9b, 0xd0, 0xfa, 0xfb, 0x22,
-  0xcf, 0x1d, 0x39, 0x1a, 0x17, 0xfd, 0x28, 0x8e, 0xe1, 0x43, 0x28, 0x8a,
-  0x61, 0x9f, 0xe3, 0x53, 0xfc, 0x77, 0x99, 0x4e, 0x41, 0xf2, 0xc6, 0x74,
-  0xe4, 0xe4, 0x6a, 0x1c, 0xe0, 0x42, 0xac, 0xbd, 0x75, 0x05, 0x73, 0x05,
-  0xfa, 0xe9, 0xce, 0xe9, 0x70, 0xac, 0x1f, 0xe2, 0x9c, 0x8c, 0x91, 0x17,
-  0xb8, 0xe2, 0xfb, 0xc8, 0x8e, 0x55, 0x36, 0xcd, 0x26, 0x09, 0x72, 0x6b,
-  0x0e, 0xdb, 0x58, 0x59, 0x26, 0x28, 0x66, 0x8e, 0xa9, 0xa0, 0xfc, 0x07,
-  0xf7, 0x4d, 0x49, 0x57, 0x86, 0xac, 0x31, 0x9d, 0xb6, 0xf8, 0x78, 0x8c,
-  0x52, 0x1e, 0x09, 0x0d, 0xfb, 0x02, 0xac, 0x00, 0xaf, 0x18, 0x62, 0x47,
-  0xbd, 0x39, 0xc8, 0xe2, 0x12, 0x04, 0x41, 0x3e, 0xee, 0xc9, 0x64, 0x40,
-  0xb8, 0xe6, 0x78, 0x20, 0x99, 0x63, 0x2b, 0xbc, 0x62, 0x8d, 0xfa, 0xca,
-  0x9b, 0x82, 0xa7, 0x30, 0x62, 0xc2, 0xf0, 0xe9, 0x95, 0x2f, 0x44, 0x70,
-  0x01, 0x16, 0xa4, 0xd0, 0x91, 0xca, 0xce, 0x7f, 0x07, 0xca, 0xe6, 0x13,
-  0x94, 0x8d, 0xe9, 0xdd, 0x6c, 0x92, 0x8d, 0xb2, 0x7a, 0x62, 0xf4, 0x8c,
-  0xa4, 0xc2, 0x2b, 0x12, 0xad, 0x2d, 0x3c, 0x8c, 0xe3, 0x74, 0x8c, 0xe6,
-  0x0f, 0xfc, 0x24, 0xa4, 0x7f, 0xc0, 0x9a, 0xce, 0xde, 0x9f, 0x9e, 0x9f,
-  0x1e, 0x9e, 0x9e, 0x34, 0xad, 0x61, 0xb5, 0x54, 0x23, 0xd2, 0x6e, 0x8b,
-  0xb9, 0xb5, 0x01, 0xe0, 0x08, 0xa2, 0x82, 0x0e, 0xbb, 0x07, 0x57, 0x0d,
-  0xd9, 0x09, 0x70, 0x6d, 0x4c, 0xc1, 0x76, 0x8d, 0x2a, 0xd0, 0x96, 0xa6,
-  0x24, 0x2a, 0x41, 0x1b, 0x31, 0xab, 0x43, 0x75, 0x2d, 0x1b, 0xcd, 0x81,
-  0xf2, 0x20, 0x3a, 0x32, 0xe0, 0xc9, 0x69, 0x72, 0xef, 0x2a, 0x91, 0x44,
-  0x5b, 0x34, 0x63, 0x2c, 0x7d, 0xd1, 0x0a, 0x86, 0x3f, 0x4e, 0x90, 0x4e,
-  0x28, 0xdf, 0x26, 0x60, 0x8e, 0xcd, 0x67, 0x68, 0x3d, 0xc2, 0xb6, 0x31,
-  0x47, 0xc1, 0x89, 0xc3, 0x65, 0xc0, 0xda, 0x70, 0x1d, 0x09, 0x6a, 0xde,
-  0xf6, 0x7d, 0xb4, 0x9f, 0xe1, 0x8f, 0xf7, 0xc8, 0xa2, 0x38, 0x59, 0xa6,
-  0x70, 0x24, 0x8c, 0xc9, 0x27, 0x73, 0xa0, 0x77, 0x8f, 0xd9, 0x47, 0x9d,
-  0x0f, 0x8a, 0xad, 0x0a, 0x3f, 0xd2, 0x72, 0x40, 0xe0, 0x6b, 0x78, 0x77,
-  0xe1, 0x9a, 0x99, 0x5f, 0x27, 0xf7, 0xac, 0xff, 0x92, 0x6e, 0x52, 0xce,
-  0xf3, 0x9c, 0x67, 0x16, 0xbd, 0xcd, 0x46, 0xa0, 0x79, 0xc3, 0x7d, 0x12,
-  0x7d, 0x0b, 0x97, 0x72, 0x71, 0x0b, 0xfb, 0x3a, 0xb7, 0xf6, 0xa3, 0x31,
-  0x8c, 0xd8, 0x3c, 0xc9, 0xe1, 0x18, 0x03, 0x87, 0x7d, 0x78, 0x77, 0x18,
-  0x25, 0x33, 0x20, 0x32, 0xea, 0xc8, 0x24, 0xab, 0xd0, 0x58, 0x76, 0xd6,
-  0x74, 0x7e, 0xb6, 0x3a, 0x5c, 0x93, 0x39, 0x9b, 0xdd, 0x61, 0xcd, 0xf0,
-  0x35, 0x8a, 0xc8, 0x73, 0xe5, 0xff, 0x33, 0xbd, 0x26, 0xf9, 0xfe, 0x87,
-  0x55, 0x93, 0xfa, 0x0b, 0xd2, 0x24, 0xf9, 0x54, 0xb5, 0x26, 0x41, 0xfc,
-  0x80, 0x4a, 0x20, 0xd0, 0xe3, 0x5b, 0x7c, 0x1c, 0x39, 0xdf, 0xd8, 0xe7,
-  0x38, 0xc5, 0xf3, 0x93, 0xa1, 0x9d, 0x04, 0xfb, 0x1f, 0x60, 0x1e, 0xad,
-  0x61, 0xde, 0xa7, 0x60, 0x92, 0xc3, 0x30, 0x42, 0x5a, 0xf3, 0x3c, 0xde,
-  0xbf, 0xfe, 0xd3, 0x4d, 0x06, 0xa3, 0x3b, 0x9a, 0xa6, 0x6a, 0x58, 0xcd,
-  0x55, 0x8e, 0x6f, 0x60, 0x6f, 0x13, 0x15, 0x08, 0x4d, 0xc9, 0xd4, 0xb8,
-  0x36, 0x69, 0x18, 0x5c, 0x08, 0x3c, 0x1a, 0x6d, 0x0c, 0x5e, 0xf6, 0xa3,
-  0xcd, 0xc1, 0x06, 0xfe, 0x67, 0xb3, 0x1f, 0x6d, 0xd1, 0x48, 0xdb, 0x11,
-  0x5b, 0xaf, 0xb2, 0x49, 0xcc, 0x8c, 0xce, 0xd9, 0x6f, 0x88, 0x00, 0x55,
-  0x8a, 0xf4, 0x1a, 0xec, 0x38, 0x3c, 0x8e, 0xe3, 0xc5, 0x5f, 0xe7, 0x07,
-  0x95, 0x7d, 0xc0, 0xf2, 0xd9, 0x04, 0x78, 0x86, 0xcd, 0x32, 0x3d, 0x48,
-  0x22, 0x92, 0x51, 0x69, 0xef, 0x01, 0x93, 0xe4, 0xe8, 0x96, 0xe8, 0x45,
-  0x29, 0x3e, 0xcb, 0xea, 0x63, 0x6b, 0x38, 0x38, 0x09, 0x8f, 0xda, 0x24,
-  0xf4, 0xf7, 0x74, 0x10, 0x1d, 0xbf, 0x05, 0xd7, 0xdf, 0x38, 0xc3, 0x35,
-  0x15, 0xa0, 0x0c, 0xf1, 0xc9, 0x62, 0x89, 0x07, 0xe3, 0xf7, 0x79, 0x23,
-  0x9c, 0xf1, 0x1b, 0x23, 0xa3, 0x0b, 0xc9, 0xdb, 0x3f, 0xfa, 0xa1, 0x12,
-  0x7e, 0x7b, 0x10, 0xbd, 0x92, 0xa5, 0x10, 0x99, 0xf1, 0xe2, 0xa5, 0x07,
-  0x40, 0x8f, 0x07, 0xe5, 0x38, 0xea, 0x55, 0xf3, 0x8b, 0x36, 0xc1, 0xd1,
-  0x65, 0x70, 0x91, 0xf6, 0xd8, 0x59, 0x56, 0x17, 0x33, 0x30, 0xa5, 0x6f,
-  0xaf, 0x91, 0xa3, 0xd9, 0x53, 0x03, 0xe3, 0xac, 0xa3, 0x9b, 0x06, 0xc7,
-  0xd3, 0x51, 0x66, 0xa0, 0xad, 0x67, 0xd5, 0x75, 0x0f, 0xf7, 0x31, 0x69,
-  0xef, 0x1f, 0x8e, 0x30, 0xe0, 0xaf, 0xd2, 0xf7, 0x61, 0x09, 0x78, 0x83,
-  0x34, 0xec, 0xd6, 0x68, 0xf5, 0x3e, 0xad, 0xd7, 0x1c, 0x95, 0xfa, 0xf4,
-  0x6c, 0xdb, 0xa7, 0x99, 0xbb, 0x14, 0x56, 0x2a, 0xf0, 0xfe, 0x9e, 0x15,
-  0xb3, 0xed, 0x48, 0xb5, 0x0a, 0xd6, 0x89, 0x54, 0x07, 0x49, 0x68, 0xa7,
-  0xcd, 0x2e, 0xb5, 0x86, 0x5b, 0xb0, 0x67, 0xe8, 0x83, 0xf3, 0xbf, 0x8f,
-  0xae, 0x18, 0x10, 0x62, 0x70, 0x4d, 0xc1, 0xb5, 0xf8, 0x16, 0x84, 0x52,
-  0x72, 0x85, 0x6f, 0x9a, 0x03, 0x4e, 0x17, 0xe3, 0xac, 0xcc, 0xa6, 0x70,
-  0x46, 0xe0, 0x5a, 0x63, 0xbd, 0x81, 0x2e, 0x43, 0x9e, 0x5d, 0x9b, 0xd0,
-  0x68, 0x74, 0x4c, 0x49, 0x57, 0x82, 0x4b, 0x21, 0x61, 0xa5, 0xc3, 0xb2,
-  0x05, 0xaf, 0x15, 0x8d, 0x19, 0x67, 0x5a, 0xc3, 0x33, 0x6f, 0xc3, 0xe9,
-  0x87, 0x70, 0xb8, 0xcc, 0x2b, 0xce, 0x41, 0x18, 0x1e, 0x9e, 0xf9, 0x27,
-  0x7c, 0x38, 0x7c, 0x63, 0x18, 0x64, 0x0b, 0xb6, 0x7b, 0x66, 0xd5, 0x39,
-  0xe7, 0x4d, 0xf4, 0xcd, 0x79, 0x6f, 0xe2, 0x0f, 0x57, 0xc7, 0x65, 0x02,
-  0xa2, 0x74, 0x77, 0x4d, 0x34, 0x2c, 0x24, 0x7b, 0x63, 0x48, 0x67, 0x90,
-  0xb7, 0x5f, 0x19, 0x21, 0x69, 0x07, 0x79, 0xfb, 0x95, 0x79, 0x76, 0x93,
-  0x38, 0x9d, 0x19, 0x8b, 0xd6, 0xaf, 0x6b, 0x70, 0xc7, 0x08, 0xc9, 0xac,
-  0x0f, 0x33, 0xc3, 0x08, 0x72, 0x97, 0x8b, 0xda, 0x81, 0x26, 0x37, 0xbe,
-  0xd2, 0x64, 0x88, 0x4a, 0xe4, 0x0c, 0x5a, 0x5f, 0xc4, 0x12, 0xad, 0xe1,
-  0xbe, 0x5d, 0x74, 0xcc, 0xc4, 0xb3, 0x7a, 0x0e, 0x06, 0x27, 0x8e, 0x41,
-  0xab, 0x81, 0x4f, 0x91, 0x3b, 0x02, 0x8f, 0x48, 0x3a, 0xc9, 0x53, 0x56,
-  0xcc, 0xc9, 0xd4, 0x40, 0x61, 0x65, 0xfd, 0xa8, 0x37, 0xa8, 0xf0, 0x56,
-  0x95, 0xe3, 0x81, 0x53, 0xee, 0x23, 0x85, 0x86, 0x14, 0x10, 0x9c, 0x9d,
-  0xb1, 0xaa, 0xf0, 0x07, 0x28, 0x9a, 0x2a, 0x52, 0x50, 0x41, 0x09, 0x24,
-  0xff, 0xc3, 0x58, 0x34, 0x91, 0x8a, 0x9f, 0x72, 0x14, 0x38, 0xa3, 0x8f,
-  0xd2, 0x72, 0x79, 0x28, 0x97, 0x67, 0xce, 0x9d, 0x8d, 0x14, 0x79, 0x43,
-  0x3f, 0x32, 0xdc, 0x42, 0xa3, 0xf3, 0x16, 0x88, 0xfe, 0xf1, 0xf5, 0xfb,
-  0xa3, 0xe1, 0x30, 0x7a, 0x7b, 0x74, 0x7e, 0xf4, 0xbe, 0xa1, 0x84, 0xe4,
-  0x45, 0x39, 0x25, 0x63, 0x64, 0x9c, 0x55, 0xb3, 0x49, 0x72, 0x8f, 0x56,
-  0x0a, 0x48, 0xcf, 0xab, 0x12, 0x15, 0x9f, 0x69, 0x8a, 0x6e, 0x8d, 0xf1,
-  0x9c, 0xcc, 0x70, 0x10, 0xc9, 0xb0, 0x7c, 0xf1, 0xde, 0xa2, 0x25, 0x4c,
-  0x2e, 0x5f, 0x7b, 0x85, 0xd3, 0x35, 0x29, 0xae, 0x20, 0xbc, 0x0c, 0xad,
-  0xcf, 0x1e, 0x4f, 0x0c, 0x2a, 0xaf, 0x7d, 0x47, 0x83, 0x24, 0x3d, 0x9f,
-  0xe7, 0x09, 0xe6, 0x16, 0x1c, 0x2f, 0x94, 0x18, 0x78, 0x08, 0x8d, 0xef,
-  0x25, 0xbd, 0xac, 0xfb, 0x11, 0xec, 0x07, 0xbb, 0xbd, 0xdb, 0x73, 0xd2,
-  0xd9, 0x5a, 0xcf, 0xef, 0xc5, 0x7d, 0x2d, 0x9e, 0x49, 0x9e, 0x0a, 0x7f,
-  0xc1, 0x68, 0x6c, 0xb4, 0x31, 0x79, 0x24, 0x8f, 0xcd, 0x88, 0xae, 0xc0,
-  0x66, 0x63, 0x1e, 0xbe, 0x9a, 0x5f, 0x92, 0x0d, 0x1a, 0xad, 0x7e, 0xea,
-  0x47, 0x6f, 0xfb, 0xd1, 0xd7, 0xfd, 0x08, 0x3d, 0xf9, 0x6b, 0xf4, 0xde,
-  0xe6, 0xc6, 0xd6, 0x0e, 0xdb, 0xb0, 0x86, 0xc7, 0x5e, 0x3b, 0x5e, 0x84,
-  0xcd, 0x4f, 0x28, 0x24, 0xf8, 0x21, 0x1c, 0x7c, 0x10, 0x6d, 0xbe, 0xe5,
-  0x9f, 0xec, 0xbc, 0xd8, 0x7d, 0xfe, 0x4c, 0x7e, 0xd8, 0xd2, 0x6c, 0x75,
-  0xfe, 0x64, 0xde, 0xa8, 0x79, 0x80, 0xf3, 0x46, 0x4d, 0x2f, 0xcb, 0x41,
-  0x87, 0x02, 0x8b, 0x50, 0xcc, 0x6c, 0x34, 0xc8, 0x60, 0xf2, 0x97, 0x6c,
-  0x94, 0x8b, 0x87, 0xa6, 0x19, 0x2e, 0x81, 0x97, 0x81, 0x09, 0x80, 0x15,
-  0xcc, 0x26, 0xb1, 0x9f, 0xab, 0xc6, 0x89, 0x24, 0x17, 0xc8, 0xff, 0xa8,
-  0xad, 0x92, 0x8e, 0x16, 0xfa, 0x9a, 0x71, 0xe9, 0xc0, 0x1b, 0x30, 0xb7,
-  0xe4, 0x62, 0x22, 0x26, 0x4c, 0x8b, 0xee, 0xa0, 0x3f, 0x5b, 0x15, 0x1c,
-  0x9e, 0xbd, 0x2d, 0xe6, 0xa8, 0x6e, 0xe2, 0x03, 0xa0, 0x3d, 0xe2, 0x0b,
-  0xcc, 0xd3, 0xc6, 0xf3, 0x9e, 0xdd, 0xc9, 0x7d, 0xdc, 0x18, 0x05, 0xa6,
-  0x06, 0xff, 0x9c, 0x01, 0x2b, 0xf1, 0x74, 0x06, 0x6d, 0xe7, 0x06, 0x99,
-  0xed, 0x1e, 0x27, 0xa2, 0x60, 0x21, 0x25, 0xe4, 0xec, 0x74, 0x48, 0x61,
-  0x11, 0x30, 0xc9, 0x60, 0xa0, 0xbf, 0xcf, 0x81, 0x85, 0x80, 0x29, 0xf1,
-  0x45, 0xb4, 0x3b, 0x1c, 0x7b, 0x1f, 0x78, 0x8f, 0x2e, 0x62, 0x31, 0xc7,
-  0xe4, 0x93, 0x62, 0x1a, 0xd1, 0x6d, 0xe8, 0xda, 0x50, 0xec, 0x80, 0x32,
-  0xef, 0x44, 0xab, 0x5f, 0xac, 0xf5, 0xc9, 0x9c, 0x32, 0x96, 0x95, 0x63,
-  0x55, 0x89, 0xad, 0xe3, 0x9c, 0xca, 0x6b, 0x0a, 0xc9, 0x90, 0x67, 0x0a,
-  0x6f, 0x42, 0x50, 0x35, 0xe1, 0x5c, 0xc1, 0x47, 0x6c, 0x48, 0x04, 0xe9,
-  0x47, 0xb6, 0x9c, 0xdd, 0x26, 0xab, 0x1b, 0xcf, 0x80, 0x9e, 0x85, 0x25,
-  0x1d, 0xda, 0xda, 0x0d, 0x22, 0xb5, 0xf7, 0xcc, 0x23, 0x1a, 0x3a, 0x52,
-  0x28, 0x02, 0x67, 0xc8, 0x16, 0xf5, 0x2e, 0x92, 0xb2, 0x67, 0x8d, 0x49,
-  0x3e, 0x97, 0x78, 0x3a, 0xca, 0xf4, 0x8a, 0xec, 0x05, 0xa6, 0x2c, 0xae,
-  0xf2, 0x0f, 0xce, 0x2a, 0x75, 0x80, 0xf8, 0x02, 0x1f, 0xc9, 0x2a, 0x0e,
-  0x9e, 0x5c, 0x82, 0x02, 0x8a, 0x07, 0x46, 0x9d, 0xaf, 0xe4, 0x8a, 0x13,
-  0x6e, 0x09, 0x30, 0x8b, 0xe3, 0x94, 0x85, 0x63, 0x82, 0xaa, 0x3c, 0xab,
-  0x3e, 0xf8, 0x64, 0x5c, 0xa1, 0x49, 0x5a, 0x01, 0xed, 0xd1, 0x71, 0x3c,
-  0x93, 0xd8, 0xd4, 0x29, 0x05, 0x02, 0x8d, 0x95, 0x74, 0x2a, 0x3a, 0x2a,
-  0x89, 0x60, 0x51, 0x9b, 0x72, 0x32, 0x03, 0xeb, 0x5b, 0xf8, 0x70, 0x02,
-  0xdb, 0x05, 0x87, 0xed, 0x2d, 0x12, 0x0a, 0x95, 0x6f, 0x5c, 0x96, 0xaa,
-  0xb5, 0xc4, 0x15, 0x19, 0x9e, 0x79, 0xab, 0xcb, 0x26, 0xe3, 0x71, 0x46,
-  0x96, 0xcc, 0x04, 0x1d, 0x33, 0xf3, 0x94, 0x5c, 0xe7, 0x42, 0xd4, 0xa9,
-  0xbb, 0x8d, 0x28, 0x3c, 0xae, 0xd1, 0x4c, 0x01, 0x5d, 0x8a, 0x1c, 0x09,
-  0x31, 0x7e, 0xab, 0x47, 0x0a, 0xe3, 0x34, 0xd2, 0x6f, 0xc9, 0xa7, 0x60,
-  0x1d, 0x63, 0xd7, 0xa9, 0xd8, 0x27, 0xe3, 0xcb, 0x7a, 0xb8, 0x49, 0x61,
-  0x68, 0xab, 0x7c, 0x09, 0xec, 0x36, 0x7a, 0x01, 0xc5, 0x01, 0x41, 0x9e,
-  0x1c, 0x3a, 0xae, 0x15, 0x4f, 0xad, 0x0f, 0xb4, 0xc5, 0x27, 0xaf, 0xae,
-  0xf5, 0x51, 0xc7, 0x1f, 0x94, 0xa0, 0x5f, 0x01, 0x74, 0x65, 0x8c, 0x12,
-  0x8d, 0xd5, 0x69, 0x51, 0x94, 0x2c, 0xc8, 0x26, 0x05, 0xf0, 0x71, 0x8f,
-  0x7d, 0xad, 0x32, 0x6d, 0x9c, 0x35, 0xce, 0x12, 0x29, 0xce, 0xa1, 0x53,
-  0xab, 0x36, 0x99, 0x49, 0x0b, 0xbd, 0xaa, 0x07, 0xa7, 0xe6, 0xdc, 0xe2,
-  0x44, 0x23, 0xbd, 0xf6, 0x95, 0xf2, 0xec, 0xaa, 0x28, 0x88, 0xa5, 0xe9,
-  0x30, 0x92, 0xa3, 0xdd, 0xa1, 0x3d, 0x0f, 0x53, 0x89, 0x2b, 0xbd, 0x45,
-  0xa8, 0x28, 0x9b, 0x92, 0xe2, 0x44, 0xdc, 0x62, 0x36, 0xc8, 0x06, 0x35,
-  0x02, 0x4e, 0xdc, 0xfb, 0x70, 0x28, 0x20, 0x61, 0x5f, 0xa5, 0x99, 0x17,
-  0x39, 0x41, 0x4e, 0x68, 0x2d, 0xf1, 0x4d, 0x84, 0x47, 0x30, 0x87, 0x55,
-  0x26, 0xf8, 0x8b, 0x93, 0x1b, 0xe7, 0x28, 0x61, 0x08, 0x2a, 0x47, 0x47,
-  0x5b, 0x9f, 0x86, 0xb8, 0x28, 0x8a, 0x49, 0x9a, 0xd8, 0xe5, 0xe1, 0x7d,
-  0x90, 0xe6, 0xc8, 0xf1, 0xb2, 0xab, 0x20, 0x12, 0x66, 0x46, 0xde, 0x82,
-  0xc6, 0x1b, 0x25, 0x57, 0x49, 0x66, 0x78, 0x4e, 0x4e, 0xc7, 0x98, 0x35,
-  0x53, 0x3c, 0x5a, 0x79, 0x21, 0x2f, 0x50, 0x4c, 0x04, 0xbd, 0x78, 0x22,
-  0xb9, 0xe6, 0x55, 0x6a, 0x1d, 0x6a, 0x32, 0x26, 0x39, 0x6b, 0x1c, 0x6f,
-  0x20, 0xbb, 0x4a, 0x49, 0xf0, 0x92, 0xe3, 0x13, 0x06, 0xeb, 0x0d, 0xa2,
-  0x37, 0xc5, 0x2d, 0xda, 0x97, 0x7d, 0x76, 0x4c, 0x67, 0x18, 0xb5, 0xad,
-  0xe0, 0x09, 0x60, 0xe3, 0x29, 0x28, 0xf5, 0x48, 0x48, 0x72, 0x9e, 0xf1,
-  0x8f, 0x23, 0x27, 0xbe, 0x01, 0x5c, 0x7e, 0xcb, 0xc7, 0x51, 0x17, 0x61,
-  0x76, 0xf3, 0xb2, 0x75, 0x2a, 0xe2, 0x38, 0xb9, 0x00, 0xe5, 0x16, 0xd4,
-  0x9f, 0x78, 0x9e, 0x67, 0x77, 0x71, 0x55, 0x8c, 0x3e, 0xc1, 0x62, 0xf7,
-  0x67, 0x49, 0x7d, 0xfd, 0x45, 0x4b, 0x6f, 0x59, 0x45, 0x19, 0xbd, 0x16,
-  0x45, 0x87, 0xec, 0x6f, 0x44, 0x89, 0x53, 0x32, 0x2f, 0x03, 0x95, 0x64,
-  0x94, 0xe8, 0x03, 0x8c, 0x02, 0x7c, 0x02, 0x9a, 0x1b, 0x6c, 0x1d, 0x0d,
-  0xd6, 0x57, 0x31, 0xd5, 0x1a, 0x8e, 0x82, 0xd2, 0xc6, 0x94, 0x07, 0xb6,
-  0x44, 0xa3, 0x3d, 0x8a, 0xde, 0x15, 0x75, 0xba, 0x87, 0xff, 0x06, 0xf1,
-  0x50, 0xd3, 0x52, 0xe4, 0xc6, 0x4a, 0x90, 0xd0, 0x28, 0xe8, 0x90, 0xbf,
-  0x12, 0xdf, 0x16, 0xe2, 0xef, 0xcb, 0x47, 0x95, 0xa6, 0x76, 0x8b, 0x56,
-  0xbe, 0x5c, 0xe9, 0x47, 0xd7, 0x4c, 0x52, 0x1a, 0x90, 0xd7, 0x08, 0x3b,
-  0x7f, 0x05, 0xc6, 0x73, 0x5e, 0xb7, 0x87, 0xbb, 0xa6, 0x2b, 0x10, 0xd9,
-  0x9d, 0x23, 0x20, 0xb4, 0x01, 0x62, 0x87, 0x9a, 0xa0, 0xc4, 0xe0, 0xb3,
-  0xd6, 0x6b, 0x47, 0xcc, 0xbd, 0x7b, 0xed, 0x0c, 0x0c, 0x4e, 0xa7, 0x08,
-  0x13, 0x9b, 0xff, 0xa0, 0xf5, 0x61, 0x94, 0xa0, 0x6a, 0x46, 0x7d, 0xda,
-  0x5f, 0x18, 0xa6, 0x29, 0x4b, 0xe8, 0xd8, 0x1d, 0x64, 0x10, 0x1d, 0x8c,
-  0x51, 0x6c, 0x00, 0xd5, 0x9f, 0x0f, 0x76, 0xb7, 0x07, 0x1b, 0x8d, 0x2d,
-  0x9e, 0xd4, 0x71, 0x75, 0x33, 0x8a, 0xf6, 0xc9, 0x21, 0x8c, 0xcc, 0x17,
-  0xdc, 0x5a, 0x50, 0xff, 0xe9, 0xae, 0x13, 0x9e, 0xe1, 0xe3, 0xc0, 0xc4,
-  0xd7, 0x11, 0xc8, 0x61, 0x47, 0xe1, 0x3b, 0x5c, 0xd0, 0x80, 0xae, 0xa8,
-  0x80, 0x86, 0x6b, 0xbe, 0x03, 0x16, 0x5f, 0x86, 0xfa, 0x7e, 0x4d, 0x4a,
-  0x4c, 0x7a, 0x97, 0xb1, 0x31, 0xaa, 0xc3, 0x8d, 0x40, 0x00, 0xa4, 0x72,
-  0x55, 0x93, 0x80, 0x21, 0xef, 0xcd, 0x45, 0x7b, 0x38, 0x14, 0x21, 0xb0,
-  0xc0, 0x4b, 0xd2, 0x31, 0xcc, 0xbd, 0x33, 0x36, 0x5a, 0x27, 0x27, 0x0b,
-  0xf0, 0x60, 0x32, 0x02, 0xf9, 0x1e, 0xc7, 0x72, 0x0b, 0x74, 0xce, 0x8e,
-  0xce, 0x34, 0x6a, 0x60, 0x19, 0xee, 0x32, 0x86, 0x08, 0x40, 0x32, 0x4e,
-  0x8b, 0x31, 0x79, 0x9d, 0xbd, 0xbd, 0x1d, 0x9a, 0xf0, 0x60, 0xaf, 0xe7,
-  0x0c, 0xb2, 0x8a, 0xc1, 0x62, 0x60, 0x8d, 0xfc, 0xaa, 0xbe, 0x5e, 0xb3,
-  0x01, 0x30, 0x35, 0xc0, 0x61, 0x22, 0x6c, 0xce, 0xb4, 0xf9, 0x9f, 0xb2,
-  0x17, 0x88, 0x2f, 0x7e, 0x9a, 0x57, 0x35, 0xf9, 0xce, 0xe5, 0xbe, 0xe5,
-  0x95, 0xc0, 0xcc, 0xa6, 0xe9, 0xb4, 0x28, 0xef, 0xbd, 0x89, 0x1c, 0x5f,
-  0x32, 0x3b, 0xca, 0x46, 0x65, 0x15, 0x0b, 0x59, 0x8d, 0x1f, 0xa3, 0xba,
-  0x5d, 0xf5, 0x1b, 0xf1, 0x21, 0x52, 0x52, 0x8c, 0xf9, 0xd5, 0xa6, 0x07,
-  0x85, 0x04, 0x45, 0xae, 0xb2, 0xef, 0xfd, 0x42, 0x82, 0x7d, 0x93, 0xa4,
-  0xaa, 0xe9, 0x72, 0x56, 0xb2, 0xd2, 0x87, 0x50, 0x4c, 0xf3, 0xb2, 0x96,
-  0xe6, 0x7f, 0xd9, 0x78, 0xf8, 0x1f, 0x46, 0x30, 0x97, 0xe4, 0x77, 0xb8,
-  0xc7, 0x8a, 0xc9, 0x0d, 0xbb, 0xfc, 0xe3, 0x58, 0xc2, 0x1e, 0x71, 0x5d,
-  0x34, 0x98, 0xff, 0xd9, 0xce, 0x60, 0xb3, 0xc1, 0xfc, 0xf9, 0x3d, 0x26,
-  0xb5, 0x84, 0x65, 0x19, 0x1a, 0x8a, 0x95, 0x35, 0x13, 0xb3, 0xab, 0x79,
-  0x49, 0x6a, 0xa4, 0xe4, 0xc1, 0x68, 0xfa, 0x0b, 0x2a, 0x3e, 0xd7, 0x05,
-  0xe5, 0x90, 0xc0, 0x85, 0x99, 0x4e, 0x2e, 0xfb, 0x01, 0x67, 0xa0, 0x0a,
-  0x7a, 0x14, 0xce, 0x68, 0x84, 0xd0, 0x50, 0x79, 0x2a, 0x2a, 0x2a, 0x3a,
-  0x3d, 0x23, 0x4c, 0x99, 0x88, 0x46, 0x93, 0x24, 0x9b, 0x8a, 0x09, 0x2c,
-  0x96, 0xf6, 0xc0, 0xf3, 0x5e, 0x70, 0x70, 0x84, 0xac, 0xf6, 0x0b, 0x8c,
-  0xcd, 0x94, 0x15, 0xde, 0xbe, 0xec, 0x28, 0x11, 0xcd, 0x98, 0x9d, 0x10,
-  0xd7, 0xe9, 0xe8, 0x93, 0x0a, 0x51, 0x55, 0x2b, 0xdb, 0xa2, 0x11, 0xb3,
-  0x63, 0x28, 0x00, 0x54, 0x5f, 0xa3, 0x37, 0xba, 0x00, 0x1b, 0x17, 0x23,
-  0xbb, 0x60, 0xeb, 0xcd, 0x47, 0x64, 0x02, 0xa2, 0x44, 0x85, 0x3b, 0xb9,
-  0x4c, 0x22, 0x15, 0xc4, 0xa0, 0x69, 0x81, 0xc5, 0x37, 0x8e, 0xeb, 0x32,
-  0x9b, 0x05, 0x67, 0x47, 0x0e, 0x14, 0xb9, 0xdb, 0x5d, 0x2d, 0xb4, 0x12,
-  0x7f, 0x0e, 0x85, 0x6b, 0x38, 0x80, 0x33, 0x6a, 0x51, 0xb3, 0x7d, 0x0e,
-  0x88, 0xb6, 0x7d, 0xf4, 0x5c, 0x81, 0x3a, 0xa0, 0xd7, 0xfe, 0xb8, 0x30,
-  0x57, 0x2b, 0x98, 0x68, 0xd9, 0x08, 0x55, 0xd9, 0x78, 0x9c, 0x5d, 0xa5,
-  0x98, 0x75, 0x84, 0xf7, 0x6d, 0x3d, 0x01, 0xed, 0x27, 0x70, 0xac, 0xe0,
-  0x57, 0xe9, 0x55, 0x51, 0xa3, 0xae, 0xe1, 0x71, 0x27, 0xbb, 0x15, 0x0d,
-  0x4f, 0xa8, 0x6f, 0xcb, 0xd5, 0xbb, 0x32, 0xd6, 0xb9, 0xe1, 0xf3, 0x62,
-  0x67, 0xf3, 0xf1, 0x20, 0xe3, 0xbe, 0xbd, 0xeb, 0x30, 0xda, 0x88, 0xcc,
-  0x25, 0x54, 0x0d, 0x55, 0x33, 0x55, 0x95, 0x1e, 0x65, 0x10, 0x6a, 0xc1,
-  0xf5, 0x6d, 0x36, 0x4a, 0xd5, 0x29, 0x6a, 0x12, 0x12, 0x26, 0x99, 0x7f,
-  0xe5, 0x4c, 0x51, 0x0c, 0xe0, 0x7b, 0xac, 0x78, 0x63, 0x7c, 0xef, 0x36,
-  0x43, 0xc5, 0xfc, 0xf8, 0x52, 0xee, 0x48, 0x3c, 0xe4, 0x7c, 0x2f, 0x25,
-  0x65, 0x46, 0x61, 0x4c, 0x8c, 0xfb, 0xab, 0x7f, 0x25, 0x74, 0xac, 0x79,
-  0xde, 0xf4, 0xba, 0x98, 0x2a, 0xd6, 0x44, 0xa1, 0x33, 0x7d, 0x49, 0x2e,
-  0x16, 0x8f, 0x4e, 0x24, 0x3b, 0xaf, 0x52, 0x0a, 0xf8, 0xb2, 0x3e, 0x34,
-  0x47, 0x3d, 0x13, 0x73, 0xc4, 0x96, 0x3e, 0xf3, 0x42, 0x6c, 0x7e, 0x1b,
-  0xb6, 0x7b, 0x6f, 0x76, 0x3b, 0x5e, 0xf2, 0xe4, 0x53, 0xaa, 0x9a, 0x8e,
-  0xd4, 0x57, 0x9e, 0x10, 0x41, 0xc0, 0x5c, 0xe1, 0x9c, 0xf9, 0x04, 0x9f,
-  0x00, 0x33, 0x2d, 0xf5, 0x98, 0x63, 0x15, 0x6d, 0x36, 0x74, 0x8d, 0xad,
-  0x69, 0xce, 0x44, 0x2a, 0x59, 0x23, 0x26, 0xb9, 0x8d, 0x24, 0x2b, 0xca,
-  0x66, 0x91, 0x0b, 0x3c, 0x4e, 0xf8, 0x26, 0x01, 0x03, 0x06, 0x53, 0x41,
-  0x24, 0xd7, 0x4d, 0xcf, 0x01, 0x1c, 0x03, 0xf4, 0xb4, 0x69, 0xd6, 0x15,
-  0xa6, 0x38, 0xc8, 0x0e, 0x8a, 0x18, 0xa0, 0xc7, 0xd1, 0x40, 0x6c, 0x0d,
-  0x87, 0xbc, 0x48, 0x77, 0x64, 0x9f, 0x55, 0x41, 0x16, 0xb9, 0x23, 0xce,
-  0x77, 0x18, 0x90, 0x66, 0xc4, 0xd7, 0x24, 0xcd, 0xf1, 0x72, 0x92, 0x5c,
-  0x21, 0x07, 0x67, 0x57, 0x79, 0xc1, 0x09, 0x6e, 0x6d, 0xf6, 0x2c, 0xe0,
-  0x76, 0x22, 0x3f, 0x20, 0x7b, 0x9c, 0xaa, 0x68, 0x15, 0x18, 0x76, 0x32,
-  0x27, 0x15, 0xe6, 0x14, 0x56, 0x35, 0x1c, 0xbe, 0x59, 0x5b, 0x76, 0x37,
-  0x99, 0x4c, 0x31, 0x2d, 0x81, 0x83, 0x42, 0x4a, 0xea, 0xe8, 0xd2, 0x4b,
-  0x58, 0xe9, 0xde, 0xd1, 0x92, 0x42, 0x97, 0x98, 0x50, 0xc3, 0x9b, 0x78,
-  0xd8, 0x67, 0x89, 0x0e, 0x14, 0x9b, 0xa7, 0x71, 0x52, 0x37, 0x24, 0xf8,
-  0x6d, 0x05, 0x26, 0xe5, 0xd5, 0xcd, 0x0e, 0xa8, 0x6c, 0x9c, 0xbf, 0x51,
-  0x6e, 0x7e, 0xbf, 0xa7, 0x7f, 0xdd, 0xfa, 0x7e, 0x0f, 0x8c, 0x5e, 0xe0,
-  0xe7, 0xef, 0xf7, 0x70, 0x99, 0x70, 0xd8, 0x7e, 0xfc, 0xf1, 0xc7, 0x2f,
-  0x7c, 0x86, 0x8e, 0x0e, 0xbe, 0x1d, 0x46, 0xdf, 0xec, 0x50, 0xfe, 0x06,
-  0x25, 0xf8, 0xb5, 0x65, 0xbc, 0xa4, 0x7f, 0xa8, 0x52, 0xe1, 0x11, 0x86,
-  0x0c, 0x48, 0xfd, 0xaa, 0x51, 0x1b, 0xd9, 0x72, 0x03, 0xad, 0x8e, 0x85,
-  0x30, 0x29, 0xfe, 0x12, 0x85, 0xbe, 0x17, 0xd5, 0xe9, 0xaa, 0x00, 0x4e,
-  0xb8, 0x9e, 0xfa, 0x4e, 0xc5, 0x9c, 0xf7, 0x96, 0xdc, 0xfd, 0xf3, 0xfa,
-  0x8a, 0xc5, 0x7b, 0x73, 0x52, 0x22, 0xba, 0x83, 0x93, 0xe1, 0x65, 0x2f,
-  0x98, 0x89, 0xa3, 0x7c, 0x81, 0xf5, 0x03, 0x36, 0x7c, 0x32, 0xbb, 0xc6,
-  0x53, 0x03, 0x1f, 0xf5, 0x75, 0x71, 0xba, 0x58, 0xaa, 0x62, 0x5e, 0x62,
-  0xca, 0xd0, 0xa8, 0x98, 0x4c, 0x38, 0xa5, 0x20, 0x5a, 0xe5, 0xcf, 0xc0,
-  0xe6, 0x8c, 0xd3, 0x35, 0x9e, 0x75, 0x6d, 0x3f, 0x4e, 0x1a, 0x50, 0xd6,
-  0x66, 0xe4, 0x62, 0x9a, 0xd5, 0xb5, 0x26, 0x1b, 0xe1, 0xd3, 0xc0, 0x1e,
-  0x34, 0x99, 0xe0, 0x3a, 0x64, 0xdb, 0x1e, 0xb9, 0x90, 0xcb, 0x79, 0xce,
-  0x13, 0xc3, 0xbd, 0x68, 0xdf, 0x74, 0xb8, 0x37, 0x44, 0x79, 0x50, 0x13,
-  0x27, 0xc5, 0x7c, 0x1c, 0xad, 0xca, 0xe0, 0xed, 0xe9, 0xeb, 0x37, 0x65,
-  0xfe, 0x3a, 0xe3, 0x90, 0x08, 0x5d, 0x38, 0xff, 0x87, 0x64, 0x9f, 0x61,
-  0xdd, 0x1e, 0xfc, 0x75, 0x2f, 0x99, 0xfe, 0xbc, 0x97, 0x82, 0x4a, 0x15,
-  0x6f, 0xed, 0xa5, 0x55, 0x4f, 0x25, 0x62, 0xef, 0x53, 0x7a, 0x0f, 0xbc,
-  0x0b, 0xbc, 0x50, 0xf7, 0x96, 0x94, 0x8b, 0x8e, 0x18, 0xb4, 0xf2, 0xd9,
-  0xd5, 0x86, 0x9e, 0xef, 0x36, 0x4d, 0x01, 0x7a, 0xe1, 0x31, 0xba, 0x10,
-  0x6a, 0x33, 0xe4, 0x93, 0xfb, 0x8a, 0x3f, 0xd1, 0x64, 0x4b, 0xe3, 0xf0,
-  0xc1, 0x1c, 0x94, 0xf6, 0x35, 0x86, 0x62, 0x0a, 0x93, 0x7a, 0x06, 0x46,
-  0x8f, 0xc1, 0x27, 0x35, 0xb7, 0x88, 0x6f, 0xc2, 0x96, 0xf6, 0x3a, 0x27,
-  0x5f, 0x35, 0x91, 0xb8, 0x3d, 0x1c, 0x86, 0xea, 0x4d, 0xc8, 0x5e, 0x0d,
-  0xea, 0x8c, 0xfc, 0x07, 0x28, 0x65, 0x4b, 0x4c, 0xe7, 0x42, 0xd7, 0x58,
-  0x7a, 0x93, 0x15, 0xf3, 0x0a, 0x46, 0x01, 0x0d, 0x44, 0xc7, 0x46, 0xe6,
-  0xf1, 0x9c, 0xef, 0x35, 0xa5, 0xa0, 0x83, 0x09, 0x8f, 0x59, 0xd2, 0x94,
-  0x59, 0x10, 0x56, 0xf6, 0x56, 0xab, 0x39, 0x06, 0x0d, 0x2a, 0xa3, 0x6c,
-  0xe0, 0x4d, 0xd3, 0x9e, 0x1d, 0xeb, 0x23, 0x98, 0x8c, 0x61, 0xd5, 0x8e,
-  0xb5, 0xdf, 0xf4, 0x3e, 0x9d, 0x13, 0xcf, 0xee, 0x61, 0xe2, 0x12, 0x46,
-  0xf5, 0x0d, 0x13, 0x3c, 0xe5, 0x42, 0xa5, 0x37, 0x5d, 0xf6, 0x00, 0xcb,
-  0x23, 0x2d, 0x6b, 0x36, 0x14, 0x3d, 0x1b, 0xf1, 0xfc, 0x64, 0x18, 0xe2,
-  0x92, 0x66, 0x22, 0x27, 0xbe, 0x8f, 0x3a, 0x5f, 0xa2, 0xf7, 0x1c, 0x3c,
-  0x05, 0xdb, 0xe4, 0x78, 0x70, 0xdc, 0xb8, 0xc2, 0x2c, 0x45, 0x7e, 0x65,
-  0xd1, 0xca, 0x97, 0x28, 0xaa, 0x52, 0x78, 0x0f, 0xa0, 0x61, 0x66, 0xd2,
-  0x4c, 0x0e, 0x0f, 0xdc, 0x71, 0x29, 0xb9, 0xa8, 0x7d, 0x15, 0x3b, 0xbf,
-  0x5f, 0xad, 0xd6, 0x58, 0x97, 0xba, 0x20, 0x23, 0xea, 0xec, 0xe8, 0x2d,
-  0xf9, 0xca, 0xe0, 0x52, 0x81, 0x2b, 0x54, 0xc2, 0x22, 0x9a, 0x1d, 0x8e,
-  0xa1, 0xec, 0x46, 0xda, 0x9c, 0x35, 0x39, 0x29, 0x3b, 0x9b, 0x79, 0x96,
-  0xa6, 0xc6, 0x69, 0xa0, 0x19, 0xe5, 0x51, 0xb5, 0x39, 0xb8, 0xbe, 0x9f,
-  0x49, 0xf2, 0xd7, 0xbc, 0x6a, 0x38, 0xaa, 0x8d, 0xd7, 0xaa, 0x26, 0xaf,
-  0x03, 0xfa, 0xd0, 0x9c, 0x31, 0xbd, 0xad, 0xa7, 0x69, 0xa1, 0x3a, 0x7a,
-  0x95, 0x67, 0x3f, 0x8b, 0xed, 0x9d, 0xe6, 0x37, 0x59, 0x59, 0xe4, 0x24,
-  0x19, 0x29, 0xa4, 0x7f, 0x21, 0x96, 0x27, 0x68, 0xdc, 0x2b, 0x87, 0x1f,
-  0xde, 0x9f, 0x7c, 0x3c, 0x3c, 0xf8, 0xf8, 0xd5, 0x87, 0x77, 0xaf, 0x4e,
-  0x8e, 0x56, 0xda, 0x89, 0x12, 0x97, 0x1c, 0xa4, 0x42, 0x5d, 0xbd, 0x42,
-  0x4f, 0x8c, 0x1a, 0x2a, 0x3c, 0x32, 0x27, 0x06, 0x91, 0xe3, 0x81, 0xd2,
-  0xd8, 0xe8, 0x6f, 0x24, 0x64, 0x85, 0xe0, 0xad, 0xe1, 0x2e, 0xe6, 0x68,
-  0xa2, 0x0e, 0x1a, 0x5e, 0x02, 0x3d, 0x83, 0xe2, 0x21, 0xd4, 0x09, 0x06,
-  0x05, 0xfd, 0xad, 0xa4, 0x74, 0x38, 0xde, 0x28, 0x27, 0xaf, 0x6d, 0x5e,
-  0x17, 0xb0, 0x47, 0x42, 0x46, 0x0a, 0xaf, 0x6b, 0x9e, 0x7e, 0x04, 0xf3,
-  0x09, 0x6c, 0x77, 0x65, 0x8d, 0xf0, 0x71, 0xb4, 0x82, 0x23, 0x01, 0xff,
-  0xc6, 0x32, 0xc9, 0x51, 0x59, 0xaf, 0xf4, 0xa3, 0x34, 0xa3, 0x13, 0xa7,
-  0xe9, 0xc6, 0x28, 0xec, 0x29, 0x08, 0xe0, 0x65, 0x2e, 0x60, 0x44, 0x3f,
-  0x61, 0xbe, 0x1e, 0xa4, 0x77, 0x29, 0x1d, 0x69, 0x79, 0xeb, 0x70, 0x5e,
-  0x92, 0x98, 0xf8, 0x16, 0xcc, 0x22, 0xbc, 0x91, 0x5e, 0x69, 0x0a, 0x80,
-  0x3e, 0x04, 0x6a, 0x69, 0xfb, 0xde, 0x28, 0x26, 0xa4, 0x23, 0x90, 0xd7,
-  0x96, 0x7c, 0xec, 0x67, 0x07, 0xe7, 0x6f, 0x42, 0x76, 0xbc, 0x93, 0xa6,
-  0x25, 0xac, 0x48, 0x3e, 0x89, 0xaa, 0x96, 0x03, 0xf2, 0x6e, 0x38, 0x8c,
-  0xa8, 0xc8, 0x62, 0x92, 0x5d, 0x94, 0x09, 0x7e, 0x13, 0x7f, 0x8c, 0x3f,
-  0x05, 0xb6, 0x6e, 0x0d, 0x77, 0xf6, 0x97, 0xc3, 0xe1, 0x1f, 0x36, 0x37,
-  0xd1, 0x81, 0x31, 0x07, 0xba, 0xac, 0xc2, 0x2b, 0x79, 0x05, 0x27, 0x73,
-  0x3a, 0xa8, 0x8a, 0x35, 0xc9, 0xdc, 0x62, 0xc3, 0x24, 0xb9, 0x01, 0xad,
-  0x9f, 0xf8, 0x48, 0x99, 0xba, 0x23, 0x9b, 0xc3, 0x54, 0x9e, 0x80, 0xbc,
-  0x00, 0xbb, 0x61, 0xe2, 0xfb, 0x22, 0x56, 0xb3, 0xd3, 0x21, 0xb3, 0xd5,
-  0x34, 0x19, 0xc1, 0x5f, 0xd1, 0x25, 0xb9, 0x66, 0xf2, 0xcf, 0xcc, 0x09,
-  0xd3, 0x55, 0x0d, 0xd9, 0x2e, 0xa6, 0x8c, 0x1b, 0x2a, 0x3b, 0xf1, 0xa5,
-  0x42, 0xde, 0x3e, 0x5c, 0x36, 0xf5, 0x80, 0xd8, 0xe1, 0x22, 0x19, 0x7d,
-  0xba, 0x4d, 0xca, 0x31, 0x47, 0x20, 0x80, 0x63, 0x2e, 0xb2, 0x49, 0x56,
-  0xdf, 0xb3, 0x9f, 0xaf, 0xad, 0x88, 0x70, 0x12, 0x31, 0x12, 0x10, 0xce,
-  0xd1, 0x55, 0x96, 0xa3, 0x63, 0x84, 0xbc, 0x1b, 0x59, 0xed, 0xba, 0xf8,
-  0xc8, 0x58, 0xb3, 0x7a, 0xba, 0xf9, 0x76, 0x40, 0x41, 0xa7, 0x73, 0x44,
-  0xd3, 0xb4, 0xbc, 0xab, 0x62, 0xd0, 0x15, 0x52, 0xca, 0x3e, 0x51, 0x75,
-  0x0f, 0x66, 0xc1, 0x34, 0x64, 0xaa, 0xd2, 0xed, 0x1f, 0xfd, 0x25, 0xbd,
-  0x1f, 0x5d, 0xa3, 0xb8, 0x33, 0x92, 0x92, 0xfd, 0x9d, 0x29, 0x3a, 0xb6,
-  0xd8, 0x28, 0xce, 0x34, 0x68, 0x97, 0x4a, 0xdc, 0x95, 0xaf, 0x28, 0x5f,
-  0x89, 0xe3, 0xf7, 0xd5, 0x1f, 0x80, 0x43, 0xac, 0x54, 0x0d, 0x91, 0x4c,
-  0x5f, 0xf2, 0x37, 0x71, 0x08, 0x3f, 0xcf, 0xf3, 0x74, 0x22, 0xdb, 0x77,
-  0xbe, 0x68, 0x03, 0xcc, 0xb3, 0x30, 0x65, 0x49, 0xd2, 0x6a, 0x0d, 0xf7,
-  0x9c, 0xb3, 0xe0, 0x93, 0x5a, 0x2f, 0x3b, 0xad, 0xbb, 0x79, 0x3e, 0x78,
-  0xb6, 0x61, 0x7e, 0x35, 0xe8, 0xfc, 0x8c, 0x77, 0x9a, 0x4a, 0xbb, 0xe9,
-  0xcd, 0x3d, 0xe7, 0x00, 0x0c, 0x6d, 0x32, 0xee, 0xb1, 0x6c, 0xf1, 0x9f,
-  0x8d, 0x29, 0x46, 0x81, 0xd2, 0xd6, 0x70, 0xae, 0xb5, 0xaf, 0x77, 0x98,
-  0xac, 0x63, 0x05, 0xb4, 0xce, 0x02, 0xdd, 0x36, 0x97, 0x51, 0x59, 0xc0,
-  0x5e, 0x37, 0xf6, 0x73, 0x95, 0xb5, 0x98, 0xf6, 0x31, 0x11, 0x69, 0xee,
-  0x10, 0x66, 0xed, 0x89, 0x0e, 0xbb, 0x4e, 0x87, 0xdb, 0xb2, 0x5a, 0xa7,
-  0xdc, 0xe2, 0x87, 0x07, 0x64, 0xa6, 0x3d, 0xc1, 0xd1, 0x36, 0x4a, 0xf8,
-  0x52, 0x40, 0xbd, 0xf2, 0x13, 0xea, 0x29, 0x40, 0x4f, 0x3a, 0xb8, 0x4d,
-  0x5d, 0x81, 0x1e, 0xda, 0x07, 0x81, 0xfa, 0xcb, 0x55, 0x05, 0x27, 0xb1,
-  0xca, 0xbf, 0x3d, 0xe5, 0x54, 0x34, 0x54, 0x86, 0xb7, 0xaa, 0x1b, 0xe0,
-  0x24, 0x2a, 0x72, 0x19, 0x5d, 0xa4, 0x6a, 0x9e, 0x91, 0x09, 0x20, 0x11,
-  0x34, 0xdf, 0x31, 0x42, 0x59, 0x93, 0x1c, 0x68, 0xd9, 0xeb, 0x45, 0xab,
-  0xe9, 0xe0, 0x0a, 0xc6, 0xeb, 0xe1, 0x38, 0x9b, 0x7b, 0xf8, 0xdf, 0x2d,
-  0xfa, 0xef, 0x76, 0x6f, 0x4d, 0x2a, 0xf3, 0x5c, 0x26, 0x40, 0xbd, 0xa2,
-  0x7d, 0x2b, 0x72, 0x06, 0x82, 0x55, 0x33, 0xfa, 0x1c, 0x59, 0xeb, 0x12,
-  0x81, 0x6c, 0x79, 0x9f, 0xf0, 0x7e, 0xfb, 0x1a, 0xa5, 0x92, 0x61, 0xca,
-  0x4e, 0xe1, 0x9b, 0x94, 0xbd, 0xd2, 0xb0, 0x32, 0xcc, 0xad, 0x4c, 0xc7,
-  0x4e, 0xd0, 0x64, 0xf4, 0xb1, 0x4c, 0xaf, 0x93, 0xea, 0x3a, 0x9a, 0xd7,
-  0x7c, 0x1c, 0xe0, 0x04, 0xb5, 0x87, 0x9b, 0x4d, 0x32, 0x1b, 0x03, 0x91,
-  0x4f, 0x0f, 0xd4, 0x13, 0x66, 0x77, 0x91, 0xe3, 0xbe, 0x93, 0xe2, 0x56,
-  0x9f, 0x89, 0xa5, 0x6e, 0x2e, 0xa4, 0xa0, 0xc0, 0x6e, 0x92, 0xf3, 0x1a,
-  0x1f, 0x73, 0x93, 0xcf, 0xa7, 0xa8, 0x30, 0x63, 0x51, 0x1f, 0x08, 0xdb,
-  0x4b, 0xa0, 0x18, 0xfa, 0xb8, 0x26, 0xb4, 0x6f, 0xe8, 0x60, 0x9c, 0x07,
-  0x12, 0x43, 0x0d, 0xaf, 0x66, 0x97, 0x12, 0xb0, 0x92, 0x7f, 0xd3, 0xcd,
-  0x2e, 0x7a, 0x60, 0xc5, 0x09, 0xea, 0x6d, 0x25, 0xf0, 0xe1, 0x43, 0xa6,
-  0xa2, 0xda, 0xe8, 0x5c, 0xb2, 0x58, 0x0e, 0x13, 0xeb, 0x09, 0x13, 0xff,
-  0x49, 0xc8, 0xa5, 0xcb, 0x91, 0x81, 0xdf, 0xfe, 0xb8, 0xd2, 0xac, 0xd6,
-  0xc9, 0x9d, 0xb2, 0x6e, 0x0f, 0xc2, 0xb2, 0x67, 0x96, 0x08, 0xf7, 0xc0,
-  0x99, 0x85, 0x47, 0x62, 0x0c, 0xac, 0xcd, 0xab, 0x47, 0x1c, 0x59, 0xe7,
-  0x36, 0xe2, 0x77, 0x34, 0x46, 0x2e, 0x19, 0x4c, 0xee, 0x7e, 0xb4, 0x0f,
-  0xc5, 0xbd, 0xc3, 0xa7, 0x87, 0xce, 0x41, 0x1f, 0xf2, 0x40, 0xef, 0xc5,
-  0x87, 0xbd, 0x9a, 0x7c, 0x4a, 0x06, 0xd1, 0xe9, 0xe1, 0xf0, 0x0c, 0x3f,
-  0x31, 0xc3, 0xac, 0xad, 0x35, 0x4c, 0xe9, 0x6a, 0x0d, 0x97, 0xde, 0xd5,
-  0x69, 0x5e, 0x35, 0x2a, 0x5d, 0x3b, 0x77, 0x5d, 0xc3, 0xb8, 0x9a, 0x87,
-  0xda, 0x48, 0xb7, 0xa2, 0x7c, 0x2f, 0xaa, 0xdf, 0x88, 0xf8, 0xe4, 0x7b,
-  0x1f, 0x9a, 0x01, 0xfd, 0xc7, 0x6b, 0xc6, 0x97, 0xde, 0x57, 0xd6, 0x34,
-  0x39, 0x1b, 0xd5, 0xfc, 0x0a, 0xad, 0xbe, 0x4a, 0x5d, 0x71, 0xe6, 0x0b,
-  0x40, 0x0d, 0x5f, 0x87, 0x92, 0x65, 0x9b, 0xe8, 0x12, 0xd8, 0xa9, 0x58,
-  0x87, 0x45, 0xba, 0x63, 0x5e, 0xd8, 0x51, 0x31, 0x9f, 0x8c, 0x0a, 0x52,
-  0x33, 0xca, 0x72, 0xe0, 0x02, 0x83, 0x80, 0x76, 0xc4, 0x9b, 0xa2, 0xa6,
-  0xea, 0xa5, 0x14, 0xa1, 0x76, 0x39, 0xe8, 0x47, 0xac, 0xbb, 0x9a, 0x58,
-  0x71, 0x86, 0x8c, 0x84, 0x96, 0x04, 0xfb, 0x07, 0x70, 0x3c, 0x23, 0x8e,
-  0xbe, 0xce, 0xe7, 0x98, 0xef, 0xe9, 0xab, 0x29, 0xa8, 0x6d, 0xe2, 0xfd,
-  0x8b, 0x04, 0x5c, 0x9a, 0xb7, 0x2d, 0xc3, 0x2d, 0x6b, 0xa1, 0x66, 0x20,
-  0x58, 0xc6, 0xb3, 0xf9, 0xc5, 0xa7, 0xf4, 0xbe, 0xe1, 0xd2, 0xd8, 0xd9,
-  0x6c, 0xba, 0x34, 0xe8, 0x13, 0x60, 0x80, 0xa5, 0xd1, 0x3e, 0xfe, 0xf7,
-  0xc1, 0xbb, 0x88, 0xb3, 0xf2, 0xf0, 0x79, 0xc9, 0x6d, 0xe1, 0x1b, 0x43,
-  0x7c, 0xf2, 0x51, 0xf3, 0x5a, 0xf2, 0xb4, 0x07, 0xe2, 0xea, 0x01, 0x4a,
-  0xfb, 0x7e, 0xf4, 0x0a, 0x0b, 0xcb, 0x8f, 0xde, 0x7d, 0x4d, 0xac, 0x76,
-  0xb6, 0xb9, 0x45, 0x59, 0x04, 0xc6, 0x7a, 0x1b, 0xd3, 0x47, 0xb8, 0x18,
-  0x83, 0x13, 0x81, 0xe0, 0xe2, 0xf3, 0xb4, 0x87, 0x0c, 0x79, 0x01, 0xef,
-  0x0e, 0x74, 0x7a, 0x51, 0x7d, 0xd3, 0xf8, 0x77, 0x57, 0x1f, 0x0c, 0x41,
-  0x71, 0x5e, 0xfc, 0x6f, 0x16, 0xc8, 0x4b, 0xed, 0xe0, 0x51, 0x5f, 0xde,
-  0xc5, 0x3f, 0x61, 0x13, 0xc5, 0x5b, 0x0f, 0x7f, 0xa3, 0xc1, 0x9d, 0x2d,
-  0x34, 0x4f, 0x46, 0xfb, 0x0e, 0xf1, 0xbf, 0x37, 0x3e, 0x8e, 0x1f, 0x9f,
-  0xa6, 0x5f, 0x84, 0x77, 0x14, 0x17, 0x12, 0x72, 0xc5, 0xda, 0x44, 0x64,
-  0x5a, 0x2a, 0x5d, 0x98, 0x8c, 0x11, 0x40, 0x48, 0x02, 0x78, 0x5e, 0x93,
-  0xdc, 0xa8, 0x9a, 0x31, 0xd7, 0xbe, 0x51, 0x42, 0x7a, 0x7b, 0x4f, 0x47,
-  0xc5, 0xc4, 0xd3, 0x1c, 0x1a, 0x0e, 0x09, 0xb2, 0xd3, 0xb6, 0x44, 0x5b,
-  0x20, 0x23, 0x9d, 0x65, 0xa5, 0x58, 0x47, 0xed, 0xd3, 0x6c, 0x6c, 0x25,
-  0xae, 0xc8, 0xb0, 0x8a, 0x06, 0xbe, 0xca, 0x6f, 0x52, 0xae, 0x14, 0xcd,
-  0x8d, 0x55, 0x60, 0xc7, 0x92, 0x09, 0x99, 0x75, 0xc0, 0x34, 0xc6, 0x7f,
-  0xa4, 0xf9, 0xdd, 0x4a, 0xb6, 0x46, 0xec, 0x01, 0x84, 0x74, 0x99, 0x89,
-  0xde, 0x2f, 0xd5, 0xb4, 0xed, 0xe1, 0x34, 0x6b, 0x8d, 0x33, 0x37, 0xb4,
-  0xb4, 0x8c, 0xf8, 0x55, 0x19, 0x96, 0xf9, 0x1a, 0x3d, 0x0c, 0x3d, 0x87,
-  0x24, 0xbd, 0xd0, 0x56, 0xa8, 0x07, 0x9d, 0x8f, 0x66, 0x76, 0x83, 0xa4,
-  0x53, 0xde, 0x21, 0x95, 0x87, 0xb7, 0xb4, 0x61, 0xd2, 0x14, 0x39, 0xfe,
-  0x99, 0x63, 0x90, 0xe4, 0x3f, 0x02, 0xdc, 0xe8, 0xb0, 0x97, 0xe1, 0x40,
-  0xaa, 0x4e, 0x92, 0x70, 0x3e, 0xa9, 0x83, 0x58, 0x01, 0x2a, 0xf5, 0xf9,
-  0x93, 0xfb, 0x47, 0x19, 0xea, 0xaa, 0xce, 0xa9, 0x3d, 0xee, 0x18, 0xe9,
-  0x9e, 0x15, 0xdb, 0x66, 0x10, 0xb8, 0x85, 0x6a, 0x4c, 0x49, 0x64, 0xde,
-  0xc5, 0xd0, 0x5e, 0x36, 0xfa, 0xc4, 0x15, 0x5c, 0x97, 0x6d, 0x43, 0xd2,
-  0x94, 0x2c, 0x72, 0xb9, 0x6d, 0x60, 0x0b, 0xc8, 0x47, 0x80, 0x61, 0x47,
-  0xe4, 0x49, 0xd4, 0x75, 0x80, 0x01, 0x4c, 0xf8, 0x21, 0xe8, 0x3d, 0x82,
-  0xb9, 0x7e, 0x7c, 0x75, 0xfc, 0x3e, 0x5a, 0x45, 0xcb, 0xaa, 0xed, 0xbc,
-  0x50, 0x65, 0x69, 0x3d, 0xad, 0x47, 0xeb, 0xb3, 0x4f, 0xd9, 0x7a, 0x5e,
-  0x55, 0xe3, 0x8b, 0x35, 0xc3, 0x52, 0xf4, 0x39, 0x64, 0x42, 0xe3, 0x70,
-  0x50, 0x8f, 0x03, 0xb9, 0x1c, 0xda, 0xfc, 0xe6, 0xb8, 0x20, 0x18, 0xfd,
-  0xc3, 0xf8, 0x1e, 0x24, 0x20, 0x4a, 0xfc, 0x4c, 0x59, 0x07, 0x9c, 0x61,
-  0x47, 0xc9, 0x0a, 0x29, 0x87, 0x3d, 0xef, 0x8b, 0x79, 0xfb, 0xac, 0x72,
-  0xe1, 0xa7, 0x38, 0xe8, 0xd8, 0x31, 0xa7, 0x5e, 0x7a, 0xb9, 0xed, 0xac,
-  0x2d, 0xd1, 0xc7, 0x3a, 0xd3, 0x84, 0x70, 0x42, 0xe0, 0x46, 0x1d, 0xa3,
-  0xdf, 0x38, 0x50, 0x58, 0x00, 0xca, 0xff, 0x60, 0xbd, 0x17, 0x99, 0xca,
-  0x5a, 0xa0, 0x32, 0x17, 0x90, 0x9b, 0x5c, 0x0e, 0x60, 0xb1, 0xcb, 0x79,
-  0x65, 0x1c, 0xdf, 0x89, 0xd9, 0xaf, 0x41, 0x48, 0x52, 0x3b, 0xdb, 0x69,
-  0x34, 0x58, 0xb0, 0x34, 0xe8, 0x60, 0xb9, 0x5e, 0x18, 0x99, 0x14, 0x6d,
-  0x55, 0xef, 0x87, 0x5e, 0xe4, 0xd4, 0x67, 0x36, 0x4e, 0x43, 0xed, 0xc6,
-  0xa9, 0xe5, 0x6a, 0x01, 0x75, 0xc2, 0x9c, 0xe0, 0x71, 0x3a, 0xc9, 0xa6,
-  0x19, 0x59, 0xd4, 0xad, 0xef, 0x7b, 0x82, 0x49, 0x67, 0xf3, 0x83, 0x3f,
-  0x1b, 0x2d, 0x75, 0x4e, 0xf0, 0xd7, 0x30, 0x1b, 0x72, 0x72, 0xf2, 0xe7,
-  0xdb, 0xb5, 0xb0, 0x8e, 0x21, 0x6d, 0xa7, 0x63, 0xaa, 0xa5, 0x17, 0x64,
-  0x47, 0x99, 0x73, 0xd4, 0x65, 0x14, 0x59, 0x37, 0x97, 0x1e, 0x78, 0x96,
-  0x67, 0xd1, 0xec, 0xd3, 0xa8, 0xda, 0xdc, 0x6c, 0xbb, 0x37, 0x2b, 0xcb,
-  0x4d, 0xe2, 0x93, 0x49, 0x0c, 0x53, 0x7e, 0x78, 0x7f, 0x1c, 0xad, 0x22,
-  0x7e, 0xc6, 0xf3, 0xdd, 0xcd, 0xad, 0x35, 0x35, 0x10, 0xc5, 0x3d, 0x4b,
-  0x87, 0xdf, 0x2b, 0x2b, 0x43, 0x1b, 0x33, 0x69, 0x5e, 0x17, 0xa8, 0x93,
-  0x8b, 0xb2, 0x64, 0x87, 0x1e, 0xa7, 0x18, 0x3b, 0x02, 0xa5, 0x44, 0x83,
-  0x54, 0x17, 0x29, 0x4c, 0xd2, 0x63, 0x7c, 0x5b, 0xc8, 0xcc, 0xb3, 0x07,
-  0x63, 0xd3, 0xd8, 0x1c, 0x58, 0x73, 0x00, 0xfb, 0x5f, 0x0b, 0xed, 0xdc,
-  0x59, 0x4b, 0x56, 0x55, 0xd2, 0xe1, 0xdd, 0xc3, 0x75, 0x31, 0xae, 0x08,
-  0xe9, 0x2d, 0x7d, 0x15, 0x36, 0x68, 0x3c, 0x09, 0xb1, 0x44, 0xec, 0x9a,
-  0x54, 0x28, 0xcc, 0x5e, 0x6c, 0xeb, 0x31, 0x32, 0xa7, 0x1e, 0xde, 0x21,
-  0x39, 0x69, 0x0c, 0x89, 0x1d, 0xd4, 0x50, 0xdf, 0x55, 0x06, 0x9a, 0xa3,
-  0xfa, 0x61, 0x15, 0xe2, 0x1c, 0xd0, 0x86, 0xc2, 0x43, 0xfe, 0x8b, 0x1c,
-  0x87, 0x4d, 0xd1, 0x29, 0xdb, 0x83, 0x7b, 0x2f, 0x9e, 0xe0, 0x8b, 0x54,
-  0x2a, 0x07, 0x59, 0xd6, 0x26, 0xfa, 0xb8, 0x77, 0x87, 0xc3, 0xeb, 0xeb,
-  0x7a, 0x01, 0xd1, 0x0d, 0xa4, 0x3e, 0x64, 0xf6, 0xe6, 0x61, 0x29, 0x0c,
-  0x7a, 0xef, 0x3e, 0x89, 0xf3, 0x8e, 0xf4, 0x79, 0x93, 0xa6, 0xe8, 0xfb,
-  0xff, 0xf5, 0xd2, 0x8f, 0xa9, 0x22, 0xb5, 0xe5, 0xfc, 0x40, 0x22, 0x38,
-  0x97, 0x1d, 0x1d, 0x63, 0xae, 0x09, 0x20, 0x69, 0x17, 0x8e, 0x4e, 0x20,
-  0xa7, 0x72, 0xc8, 0x64, 0x29, 0xf9, 0x17, 0xf2, 0x92, 0x92, 0xf8, 0x7b,
-  0x92, 0xf4, 0x7b, 0xc0, 0x8f, 0x78, 0xe8, 0xdd, 0xd6, 0x95, 0x51, 0x84,
-  0xac, 0x9e, 0x46, 0xe1, 0x5a, 0x22, 0x9c, 0x6f, 0x8c, 0x95, 0x5c, 0x90,
-  0x23, 0x05, 0x43, 0x2d, 0x55, 0x8e, 0x9c, 0x75, 0x70, 0x5c, 0x56, 0x4f,
-  0xa4, 0xc0, 0xe8, 0xec, 0xf5, 0x77, 0x4e, 0xbd, 0x9a, 0xe7, 0x0a, 0x21,
-  0xe7, 0xe2, 0x9f, 0x4d, 0x8a, 0x11, 0x18, 0x43, 0x98, 0xe9, 0x9c, 0x49,
-  0xc5, 0x00, 0xbb, 0xfe, 0x28, 0xd5, 0x6a, 0xcd, 0x26, 0xc3, 0x23, 0xa9,
-  0x7b, 0xfb, 0xf4, 0xbb, 0x76, 0x60, 0x52, 0xca, 0xc8, 0xbf, 0xf8, 0x81,
-  0x7f, 0x1d, 0x71, 0x66, 0xe5, 0x0f, 0xfb, 0xf5, 0xf5, 0x7c, 0x7a, 0x01,
-  0xfb, 0x99, 0xd7, 0x5f, 0xf4, 0x22, 0xce, 0xe3, 0xb9, 0x14, 0x7a, 0x2e,
-  0xb0, 0x98, 0x33, 0xcd, 0x0d, 0x52, 0x7f, 0x71, 0x83, 0x6a, 0x3c, 0x3b,
-  0x85, 0x4c, 0xb0, 0xf9, 0xdd, 0xb0, 0x79, 0x1c, 0x9f, 0xf0, 0xd4, 0xbc,
-  0x0f, 0xc0, 0x9e, 0x3f, 0xbc, 0xfd, 0xdb, 0x0f, 0x2f, 0xb7, 0x77, 0x92,
-  0xe7, 0xc9, 0xe8, 0xd9, 0xe5, 0x8b, 0x64, 0x77, 0xbc, 0xfb, 0xfc, 0xe5,
-  0xd6, 0x8b, 0xdd, 0xe4, 0xf9, 0xce, 0x65, 0xf2, 0x6c, 0x33, 0xdd, 0x7c,
-  0x79, 0xb9, 0xb5, 0x3d, 0x1e, 0x5f, 0xa6, 0x2f, 0xc6, 0xcf, 0x93, 0xde,
-  0x80, 0x2c, 0x47, 0x9d, 0xba, 0x2f, 0x6a, 0x35, 0x4a, 0x9b, 0x44, 0xc3,
-  0x37, 0x07, 0xf1, 0x66, 0x74, 0x9d, 0xde, 0xe9, 0x01, 0x6b, 0xa6, 0x6e,
-  0x21, 0x88, 0x13, 0x2d, 0xa7, 0x7b, 0xb1, 0x0a, 0x9f, 0x84, 0x15, 0x37,
-  0xe8, 0x75, 0x22, 0xed, 0x97, 0xa9, 0xa8, 0x64, 0xe5, 0x9c, 0x6c, 0xe3,
-  0x13, 0xde, 0xd3, 0x38, 0x0c, 0xae, 0xab, 0x7d, 0xf8, 0x4f, 0xd0, 0x73,
-  0xf2, 0x36, 0x19, 0x5d, 0x53, 0xc1, 0xba, 0x3c, 0x38, 0xe4, 0x10, 0x7f,
-  0x3f, 0x92, 0xbf, 0xa0, 0xe7, 0xdf, 0x19, 0xe3, 0xeb, 0xb2, 0x98, 0xcf,
-  0xce, 0x8a, 0x49, 0x36, 0xba, 0x5f, 0x34, 0x9c, 0xfb, 0x58, 0xe3, 0x17,
-  0x47, 0x2c, 0xc2, 0xb3, 0x2a, 0xfd, 0x77, 0xb0, 0xd7, 0x88, 0xd6, 0x24,
-  0x0e, 0x58, 0xbf, 0x85, 0xff, 0x2d, 0x6f, 0xb1, 0x59, 0x61, 0xff, 0xa0,
-  0xc9, 0x16, 0x8f, 0xb2, 0xd9, 0x35, 0xa6, 0x14, 0xed, 0x53, 0xf6, 0x39,
-  0x46, 0xf2, 0xf8, 0x07, 0x61, 0x53, 0x6d, 0x28, 0x87, 0xbd, 0x12, 0x56,
-  0xd1, 0xb7, 0x45, 0x91, 0xcb, 0x14, 0x77, 0x40, 0x7d, 0x89, 0x52, 0xf4,
-  0x90, 0x79, 0xce, 0x56, 0xfb, 0x21, 0x16, 0x24, 0xaa, 0xc4, 0xb3, 0x4b,
-  0x47, 0x7e, 0x35, 0x90, 0xfa, 0xf5, 0xf9, 0x8c, 0x91, 0x23, 0x28, 0xfc,
-  0xc3, 0xbf, 0x6b, 0x9f, 0x61, 0x9c, 0xbc, 0x30, 0x23, 0xa3, 0x1f, 0xc0,
-  0x66, 0x7d, 0x78, 0x7f, 0xb2, 0xd7, 0x26, 0x92, 0x21, 0x24, 0x45, 0x08,
-  0xab, 0x74, 0x7d, 0x5c, 0x8c, 0xaa, 0xf5, 0xaa, 0x9a, 0x28, 0x21, 0x08,
-  0x4f, 0xe9, 0xf7, 0x66, 0x04, 0xa1, 0xcc, 0xd1, 0xe1, 0xab, 0x37, 0x47,
-  0x31, 0xfc, 0x77, 0x78, 0x10, 0x1f, 0x1c, 0x0d, 0xb7, 0x76, 0x9f, 0xc5,
-  0x87, 0x87, 0x6f, 0x5f, 0x2c, 0xc9, 0x0c, 0xf5, 0xa4, 0xba, 0xd9, 0x1c,
-  0x6c, 0x37, 0x36, 0xbd, 0x98, 0x92, 0x44, 0x4e, 0xc7, 0x71, 0x55, 0x79,
-  0x29, 0xb5, 0x58, 0xc1, 0xca, 0xb9, 0x75, 0x47, 0x92, 0x3a, 0x4e, 0x57,
-  0x78, 0x0c, 0xbb, 0x8b, 0x45, 0xa7, 0xfa, 0xb2, 0xd6, 0x48, 0x70, 0x6a,
-  0x88, 0x49, 0x67, 0xed, 0x07, 0x62, 0x6d, 0x89, 0xdc, 0x45, 0x7f, 0x76,
-  0xdd, 0x6c, 0x68, 0x25, 0x14, 0xa5, 0xc1, 0x42, 0x20, 0x74, 0x97, 0xa5,
-  0x29, 0xd5, 0x58, 0x48, 0x54, 0x2d, 0x93, 0xba, 0xe6, 0xbc, 0xdc, 0xcc,
-  0xba, 0x7f, 0xd6, 0xf2, 0x4b, 0x99, 0xc7, 0xc2, 0xf9, 0x36, 0xea, 0x02,
-  0x4d, 0x22, 0xfb, 0xa4, 0xf5, 0x07, 0x2a, 0x56, 0x83, 0x31, 0x09, 0x4d,
-  0x1e, 0x59, 0xb5, 0x08, 0x13, 0x80, 0x15, 0xe7, 0x66, 0x2c, 0x1d, 0x81,
-  0x2f, 0xf8, 0x03, 0x2e, 0xa0, 0xc6, 0x20, 0x7a, 0xc3, 0xb9, 0x65, 0x6d,
-  0x55, 0x45, 0x80, 0xca, 0x3a, 0xd3, 0xe0, 0x3b, 0x98, 0xba, 0xcb, 0xdd,
-  0x1a, 0xcd, 0x73, 0x1b, 0x3f, 0x8c, 0xfc, 0x8b, 0x4a, 0x41, 0x39, 0x6c,
-  0x34, 0xb5, 0x4c, 0x19, 0x4c, 0x02, 0x94, 0xb6, 0xb2, 0x2c, 0xca, 0x41,
-  0x80, 0x57, 0x2c, 0x77, 0xc4, 0xde, 0xcd, 0xb2, 0x98, 0x5b, 0xc0, 0x56,
-  0xc2, 0x1f, 0x53, 0x96, 0xae, 0xb3, 0x91, 0x4f, 0xe6, 0x9f, 0x65, 0x25,
-  0x6c, 0x83, 0xf1, 0x1c, 0x76, 0xf9, 0x8b, 0x24, 0x40, 0x5e, 0x66, 0x57,
-  0xe1, 0xf4, 0x1b, 0x5b, 0x7d, 0x50, 0x63, 0xf9, 0x94, 0xe6, 0xd6, 0x60,
-  0xfd, 0xb1, 0xf8, 0x26, 0x34, 0x7f, 0xae, 0x62, 0x95, 0x50, 0xf3, 0x6a,
-  0x5a, 0xe0, 0x67, 0x0e, 0x06, 0x5a, 0xf3, 0x15, 0xcc, 0xf7, 0x8e, 0x4c,
-  0x16, 0xa4, 0xf9, 0x46, 0x23, 0xf3, 0x1f, 0x51, 0xf9, 0x88, 0x1d, 0xdb,
-  0x4e, 0x03, 0x8c, 0x15, 0x59, 0xf3, 0x21, 0x04, 0x15, 0xd7, 0x26, 0xca,
-  0xe9, 0xac, 0x01, 0x17, 0x91, 0x11, 0x72, 0x61, 0x42, 0x15, 0x86, 0x21,
-  0x25, 0xb1, 0x70, 0x52, 0x38, 0x68, 0x40, 0x5f, 0x7d, 0xaa, 0x4d, 0x2d,
-  0x89, 0x22, 0xfe, 0x90, 0x6e, 0x09, 0x37, 0x0e, 0x68, 0x50, 0x58, 0xfc,
-  0x86, 0xe8, 0x94, 0x93, 0xc2, 0xea, 0xea, 0x82, 0x89, 0x80, 0x19, 0xa1,
-  0x03, 0x4f, 0x05, 0xc0, 0xd3, 0x67, 0xab, 0xb5, 0x38, 0xc2, 0xc8, 0x3f,
-  0xa0, 0x43, 0x75, 0xa1, 0xe9, 0x33, 0x56, 0x71, 0x93, 0xdd, 0x0b, 0x7a,
-  0x18, 0xa5, 0x40, 0x90, 0xc1, 0xc2, 0x32, 0x82, 0xc2, 0x13, 0xe0, 0x34,
-  0xae, 0x77, 0xd4, 0x70, 0x53, 0x55, 0x48, 0x31, 0x0b, 0x4e, 0x14, 0xe7,
-  0xc9, 0x73, 0x6c, 0x9f, 0x19, 0x03, 0x8a, 0xd6, 0xb0, 0x6b, 0x93, 0xca,
-  0x96, 0x0d, 0x56, 0x7e, 0x32, 0x83, 0xa5, 0x66, 0xd0, 0x09, 0xe2, 0xd5,
-  0x60, 0xd2, 0x4c, 0xca, 0x54, 0x3f, 0x91, 0x17, 0xed, 0x59, 0xc9, 0x3c,
-  0x62, 0xdf, 0x25, 0x68, 0xca, 0x0c, 0x9d, 0x09, 0x68, 0xb9, 0xa1, 0xd9,
-  0xe6, 0xb0, 0x64, 0x49, 0xed, 0x03, 0xd6, 0x61, 0x61, 0xf7, 0x90, 0x7c,
-  0x56, 0x52, 0xbc, 0xcf, 0xf3, 0xde, 0x63, 0xb7, 0xe8, 0xe7, 0x6b, 0xfd,
-  0x60, 0x86, 0x99, 0x19, 0xcc, 0xe6, 0xd7, 0x23, 0x2c, 0xd0, 0xa4, 0xa8,
-  0x34, 0x2e, 0x0a, 0x1b, 0xc8, 0xe8, 0x75, 0x8c, 0x3e, 0x61, 0x30, 0xed,
-  0x5a, 0xc3, 0xf1, 0x33, 0xbc, 0x3d, 0x97, 0x46, 0x6b, 0x15, 0x9f, 0x87,
-  0x45, 0xdb, 0xa3, 0x8a, 0x74, 0xe3, 0x96, 0x80, 0xc9, 0xfd, 0xf0, 0x03,
-  0x28, 0x9e, 0x3f, 0xf4, 0xda, 0xb3, 0xfb, 0x01, 0xa4, 0xd8, 0x0f, 0xc0,
-  0x8b, 0x3f, 0x70, 0xdd, 0xf4, 0x0f, 0x37, 0xe8, 0x4f, 0xc0, 0x30, 0x4b,
-  0x35, 0xc1, 0x90, 0x2e, 0x5b, 0x6c, 0x4d, 0xdf, 0x2e, 0xe3, 0x0a, 0x72,
-  0xce, 0xb7, 0xe7, 0x6d, 0xc0, 0x18, 0x66, 0x17, 0x45, 0xb9, 0x7e, 0x04,
-  0x76, 0x6f, 0x3e, 0xcd, 0xc5, 0xec, 0x65, 0x5e, 0x25, 0x29, 0xc0, 0x98,
-  0xbc, 0xd1, 0xca, 0x1f, 0x56, 0x1c, 0xce, 0xea, 0x87, 0x3c, 0x8d, 0x65,
-  0xca, 0xba, 0x1e, 0x69, 0x2c, 0x99, 0xa3, 0xad, 0x28, 0x26, 0x1f, 0xf9,
-  0x32, 0x38, 0xbd, 0xc2, 0xbf, 0x93, 0x4f, 0x31, 0x02, 0xc5, 0xb5, 0xea,
-  0x85, 0xf5, 0x52, 0x60, 0xc9, 0xfe, 0xec, 0xfa, 0xbe, 0xc2, 0xcb, 0x4a,
-  0xe6, 0x63, 0xb4, 0x41, 0x9c, 0x62, 0x30, 0x4f, 0x4e, 0x85, 0x21, 0xef,
-  0x31, 0x3e, 0x42, 0x16, 0x3d, 0x0a, 0xc4, 0x86, 0x24, 0x85, 0xf9, 0xac,
-  0xc4, 0x2b, 0x26, 0x60, 0x2d, 0xe9, 0x75, 0x5e, 0x29, 0xa2, 0x4a, 0x0e,
-  0xa7, 0x66, 0xc2, 0xfb, 0xa4, 0x93, 0x7d, 0x5f, 0xb8, 0x45, 0x1a, 0x16,
-  0x34, 0x12, 0x61, 0x25, 0x34, 0xe9, 0xc7, 0x95, 0x05, 0xfd, 0x28, 0xe0,
-  0xc7, 0xa4, 0x62, 0x0e, 0xae, 0x01, 0xd2, 0xb5, 0xa0, 0xa7, 0xcd, 0x06,
-  0x4d, 0xe3, 0x98, 0xa0, 0x7c, 0x67, 0x0c, 0xbf, 0x8b, 0x2c, 0x42, 0x89,
-  0x4a, 0xf7, 0x58, 0xa0, 0x3e, 0x9b, 0x78, 0xf2, 0x57, 0x8a, 0x0d, 0x14,
-  0xc0, 0x10, 0x0f, 0x3c, 0xc2, 0xc0, 0xde, 0xe6, 0x02, 0xd4, 0x39, 0x2c,
-  0xc8, 0xe3, 0x37, 0xa2, 0x94, 0x27, 0xc9, 0xae, 0x93, 0x52, 0xf7, 0x80,
-  0x83, 0x01, 0x2f, 0x78, 0x4f, 0x07, 0xc6, 0xf9, 0x7c, 0xce, 0x48, 0x86,
-  0x9e, 0x26, 0xdc, 0xf3, 0x14, 0xe6, 0x3f, 0xc0, 0x0a, 0x62, 0xbd, 0x47,
-  0x23, 0x31, 0x4d, 0x62, 0xff, 0xa9, 0xda, 0x5c, 0xee, 0xc2, 0x37, 0xed,
-  0x47, 0xe4, 0xb3, 0xce, 0xfd, 0xda, 0x6b, 0x3f, 0x22, 0xd5, 0xfb, 0xf0,
-  0x14, 0x4e, 0x0a, 0x85, 0x96, 0xc0, 0x9b, 0x46, 0x7e, 0xc2, 0x55, 0x9c,
-  0x5c, 0xa1, 0x4f, 0xe2, 0x73, 0x04, 0xd4, 0xc1, 0x52, 0x18, 0xfc, 0xd7,
-  0xfa, 0xe6, 0x60, 0x23, 0xb4, 0x02, 0xa4, 0xba, 0x60, 0x87, 0x48, 0xe8,
-  0x07, 0x69, 0x5b, 0x17, 0xc5, 0xc3, 0x73, 0x64, 0xb2, 0xc0, 0xf5, 0x37,
-  0x83, 0x2f, 0x84, 0x67, 0x13, 0x9f, 0xb6, 0x7f, 0x42, 0x8e, 0x02, 0xf8,
-  0xca, 0xe7, 0x06, 0x2f, 0x32, 0x2f, 0x08, 0x7c, 0x04, 0xb4, 0x95, 0xc9,
-  0xa4, 0x81, 0x3c, 0xdb, 0xeb, 0xa0, 0x77, 0x4e, 0xf5, 0x27, 0x69, 0x9b,
-  0xec, 0x6d, 0x10, 0x15, 0xf2, 0xbc, 0x9b, 0x90, 0x86, 0x80, 0x83, 0x12,
-  0x87, 0xac, 0x4a, 0xaa, 0x75, 0xfc, 0x77, 0xce, 0x78, 0x66, 0x18, 0x00,
-  0xd1, 0xf2, 0xd6, 0xb8, 0xe0, 0xac, 0x0a, 0x64, 0x68, 0xd9, 0x6c, 0x59,
-  0xe7, 0xe0, 0xda, 0x7c, 0xd3, 0x8c, 0xa2, 0x55, 0xa4, 0x64, 0xc0, 0x79,
-  0x48, 0xe9, 0xe6, 0xa4, 0xb8, 0x1b, 0x1e, 0x58, 0x3f, 0x2b, 0x44, 0x8e,
-  0x8f, 0x7c, 0x96, 0xcd, 0xc1, 0xd0, 0xf8, 0x59, 0xc5, 0x33, 0x92, 0x18,
-  0x15, 0x1f, 0x3f, 0x3f, 0x1b, 0x53, 0x84, 0xf5, 0x6c, 0x42, 0x30, 0xc7,
-  0x5a, 0x4f, 0x4d, 0xb6, 0x85, 0xc7, 0xe6, 0x9b, 0x6b, 0x51, 0xef, 0xff,
-  0xa1, 0xbc, 0xda, 0x37, 0xa7, 0x6f, 0x8f, 0xd6, 0x07, 0x48, 0xa5, 0x72,
-  0xe4, 0xb1, 0xc7, 0x16, 0x3e, 0xf6, 0xdd, 0xab, 0xaf, 0x3f, 0x1e, 0x9e,
-  0xbe, 0x7b, 0x7d, 0xfc, 0x75, 0xf3, 0xe1, 0x68, 0xd5, 0xcd, 0xc1, 0xdf,
-  0x1e, 0x6c, 0xac, 0xb5, 0x5f, 0xdf, 0xc6, 0xd7, 0x17, 0x7e, 0x60, 0x67,
-  0x4d, 0xd3, 0xd2, 0xf6, 0xa2, 0xde, 0x1f, 0x3f, 0x0c, 0x8f, 0xde, 0x9f,
-  0xbd, 0x3f, 0x45, 0x7c, 0xb6, 0x3f, 0xfe, 0xd0, 0xf5, 0xca, 0x6e, 0xe3,
-  0x95, 0x83, 0xb3, 0xb3, 0x57, 0x07, 0xe7, 0x07, 0xdd, 0x8f, 0x3f, 0xeb,
-  0xfe, 0xc2, 0xc1, 0x0c, 0xb1, 0xf1, 0x38, 0xc9, 0xe0, 0x15, 0x70, 0x5f,
-  0xe7, 0x18, 0xcf, 0xd7, 0x40, 0x32, 0xe6, 0xf1, 0xad, 0x8e, 0x83, 0xe6,
-  0xfc, 0x55, 0x5a, 0xcf, 0x6e, 0xe7, 0xd9, 0x98, 0x6b, 0x2a, 0xc5, 0x2e,
-  0xb8, 0x2e, 0x34, 0xf9, 0x16, 0x3d, 0x93, 0xed, 0x61, 0x5e, 0xac, 0xc1,
-  0xf5, 0xa0, 0x09, 0xc2, 0x7d, 0x49, 0xbc, 0xc1, 0x77, 0x09, 0xc6, 0x4f,
-  0x3e, 0x2e, 0x5b, 0xae, 0x79, 0x95, 0x72, 0xe5, 0x46, 0x81, 0xa4, 0x3c,
-  0x06, 0xc6, 0x1a, 0x63, 0x9d, 0x78, 0x71, 0x83, 0x02, 0x18, 0x45, 0x1f,
-  0x71, 0xae, 0x84, 0x32, 0xd3, 0x76, 0x4e, 0xb0, 0x3a, 0x50, 0x27, 0x70,
-  0x76, 0xbc, 0xe1, 0x46, 0xf3, 0x5a, 0x4f, 0x01, 0xb1, 0xd0, 0x38, 0x9c,
-  0x72, 0x21, 0x37, 0x9a, 0xab, 0x92, 0x99, 0x14, 0x76, 0xb2, 0xf5, 0x91,
-  0x20, 0x5c, 0x8a, 0x6b, 0x7e, 0x2e, 0xdc, 0x1c, 0x28, 0x51, 0x5e, 0x3e,
-  0xd7, 0xc2, 0xb9, 0x30, 0x97, 0xce, 0xf9, 0x73, 0x4f, 0x7b, 0xd3, 0x8a,
-  0x95, 0x2a, 0x5b, 0x98, 0x3f, 0x6a, 0xb0, 0xfb, 0x97, 0x82, 0x39, 0x9f,
-  0x4c, 0x04, 0x69, 0xc7, 0x73, 0xf9, 0xbc, 0x4d, 0xee, 0xb2, 0xe9, 0x7c,
-  0x1a, 0xd1, 0x9a, 0x59, 0x3f, 0x96, 0x27, 0x35, 0x3a, 0x8c, 0x9e, 0x42,
-  0xce, 0x36, 0xc3, 0xa9, 0x63, 0x8a, 0xaa, 0xf1, 0xfc, 0x04, 0xee, 0x22,
-  0xb8, 0xb9, 0xd5, 0x61, 0x40, 0x49, 0x2c, 0x14, 0xed, 0xaa, 0x5a, 0x1e,
-  0x23, 0xd0, 0x21, 0x12, 0xcc, 0xd6, 0x51, 0x48, 0x1d, 0x96, 0x6d, 0x2e,
-  0x48, 0x69, 0x03, 0xab, 0x54, 0x15, 0x3f, 0x27, 0x0d, 0x3e, 0x2d, 0xb3,
-  0x62, 0x6c, 0x82, 0xdf, 0x5a, 0x8b, 0x16, 0xc5, 0x1c, 0xce, 0xa8, 0xf5,
-  0x37, 0x9e, 0x8f, 0x1a, 0xeb, 0xfb, 0xa2, 0x21, 0x95, 0x82, 0x6a, 0x62,
-  0xfb, 0xf3, 0xc1, 0xf6, 0x16, 0x42, 0xe8, 0xb9, 0x76, 0xb2, 0x40, 0xba,
-  0xa2, 0x35, 0x9e, 0x4d, 0x15, 0xab, 0xa4, 0x1a, 0xfc, 0x6b, 0x3c, 0x46,
-  0xd5, 0x02, 0x9e, 0x69, 0x6c, 0xef, 0xd6, 0x46, 0x90, 0x6d, 0x1e, 0xf7,
-  0xf2, 0xf6, 0x60, 0x73, 0x67, 0x39, 0xae, 0xa3, 0xaa, 0x9a, 0x69, 0x72,
-  0x47, 0x43, 0x04, 0xd9, 0xae, 0x88, 0xf6, 0xdf, 0x9c, 0x0e, 0xcf, 0x37,
-  0xf7, 0xce, 0x4e, 0xdf, 0xc3, 0x7f, 0xf1, 0xef, 0x5b, 0xf4, 0xf7, 0xad,
-  0x2f, 0xda, 0xc3, 0xbe, 0x96, 0x62, 0x01, 0xad, 0x8f, 0x66, 0x6c, 0x53,
-  0x14, 0x15, 0x62, 0xa9, 0x39, 0x03, 0xa1, 0x61, 0x90, 0xa1, 0x92, 0x3b,
-  0x32, 0x60, 0x16, 0x6d, 0xbe, 0x73, 0x3e, 0xa5, 0xf9, 0xc4, 0x83, 0xc8,
-  0xcf, 0x59, 0xce, 0x6a, 0xd5, 0x04, 0x05, 0x5e, 0x48, 0x81, 0x8b, 0xda,
-  0x7e, 0x15, 0x86, 0x87, 0x91, 0x8a, 0x68, 0xf6, 0x4e, 0xf4, 0x23, 0x4a,
-  0x3e, 0x6d, 0xfe, 0x6a, 0x34, 0x01, 0x3b, 0x25, 0xc5, 0xec, 0xb0, 0x71,
-  0xca, 0x71, 0x47, 0xfc, 0x49, 0xc8, 0xc8, 0x92, 0x82, 0xeb, 0x92, 0x41,
-  0x28, 0x5b, 0x33, 0xa3, 0xa3, 0xa2, 0xe1, 0x4e, 0x98, 0x4f, 0x42, 0xb8,
-  0x7f, 0x0a, 0xb6, 0xd1, 0x1e, 0x8e, 0x92, 0xfc, 0x5d, 0xff, 0xab, 0x82,
-  0xa8, 0xbe, 0x3b, 0x3d, 0x8f, 0x92, 0xcb, 0x4b, 0xc5, 0x5a, 0xa2, 0xc2,
-  0x2e, 0xd4, 0xb5, 0xd7, 0xc9, 0x47, 0x23, 0xe7, 0x39, 0x90, 0x25, 0x25,
-  0x17, 0xf2, 0xf9, 0xc9, 0x70, 0x1d, 0xdd, 0xaf, 0x9c, 0x65, 0x3b, 0x7c,
-  0x77, 0xdc, 0x6f, 0x84, 0x70, 0xdc, 0x64, 0xb6, 0x35, 0x34, 0xe3, 0x04,
-  0x6b, 0xbd, 0x4d, 0x3b, 0xe7, 0x36, 0x32, 0x60, 0xaa, 0x83, 0xa8, 0x47,
-  0x1b, 0xda, 0x63, 0x70, 0xb0, 0x1e, 0xed, 0x6b, 0x8f, 0x2b, 0x88, 0xc8,
-  0xca, 0xa3, 0xf9, 0x22, 0x56, 0xf2, 0xbd, 0x0f, 0x15, 0x42, 0x2e, 0x27,
-  0x04, 0x9c, 0x43, 0xb5, 0xa0, 0x87, 0x26, 0x16, 0x2e, 0x8c, 0x16, 0xd5,
-  0x93, 0x81, 0xb7, 0x78, 0x60, 0x1a, 0x17, 0xfe, 0x8e, 0xc3, 0x12, 0xd3,
-  0x5e, 0xa4, 0x21, 0x3b, 0x93, 0xbe, 0x63, 0x87, 0x36, 0x63, 0xc3, 0xc4,
-  0x28, 0x5a, 0xc7, 0x4f, 0x29, 0x73, 0x80, 0xc8, 0x43, 0xab, 0x35, 0xbb,
-  0xc2, 0xd4, 0x99, 0x76, 0xb5, 0xbe, 0x9d, 0x48, 0x9b, 0xc3, 0x0f, 0x40,
-  0x2f, 0x84, 0xdf, 0xf6, 0x1c, 0xbf, 0x48, 0xed, 0xd5, 0x22, 0x51, 0x86,
-  0x7c, 0xa9, 0xc6, 0x98, 0x4e, 0xa8, 0x2a, 0xfc, 0xe4, 0x07, 0x13, 0xfe,
-  0x9f, 0x26, 0xa8, 0xe3, 0x9a, 0xc0, 0xa8, 0x56, 0x45, 0xeb, 0x41, 0x22,
-  0x50, 0x6c, 0x41, 0x10, 0x15, 0x03, 0x9a, 0xa2, 0xa9, 0xed, 0xe1, 0xb8,
-  0x9b, 0x03, 0x5e, 0x0c, 0x52, 0x39, 0xd7, 0xdb, 0xdc, 0x7a, 0x3e, 0xd8,
-  0x80, 0xff, 0x07, 0xfb, 0x22, 0x3e, 0x17, 0x82, 0x8f, 0xb7, 0x20, 0xe1,
-  0xe6, 0xc9, 0xf4, 0xae, 0xcd, 0x92, 0x2c, 0x3e, 0x8a, 0xf2, 0xaa, 0xf7,
-  0xf8, 0xdb, 0x16, 0x37, 0xd2, 0xdc, 0xb4, 0xc9, 0x58, 0x7e, 0xa2, 0x67,
-  0xbc, 0x9c, 0x3f, 0xed, 0x56, 0x55, 0x49, 0xe4, 0x88, 0xb4, 0xbd, 0x9d,
-  0x9d, 0xed, 0x3d, 0xfd, 0x37, 0x9c, 0xa7, 0xbd, 0x17, 0xf0, 0x83, 0x5f,
-  0x02, 0x67, 0xf1, 0x06, 0x25, 0x21, 0x57, 0xfb, 0x36, 0xb3, 0x1d, 0x5f,
-  0x36, 0xbc, 0xca, 0xed, 0x3a, 0xe9, 0x68, 0xbf, 0xb8, 0xbc, 0xac, 0xd2,
-  0xba, 0x7d, 0x07, 0x1f, 0xca, 0x23, 0xeb, 0xef, 0xa5, 0xdd, 0x8a, 0xa9,
-  0x90, 0x6c, 0xa2, 0x82, 0x47, 0x49, 0xdd, 0x94, 0x91, 0x3c, 0xdc, 0x20,
-  0x54, 0xfb, 0xdc, 0x78, 0x82, 0x93, 0x42, 0x98, 0xf5, 0xef, 0x08, 0x78,
-  0xa7, 0x0d, 0xd9, 0xb7, 0x00, 0xd0, 0xa5, 0xfa, 0x94, 0xcd, 0x66, 0x68,
-  0x6f, 0x50, 0x8b, 0x05, 0x3c, 0x26, 0x26, 0x86, 0x4d, 0xa9, 0x14, 0x8c,
-  0x06, 0x2c, 0xb9, 0xc6, 0x54, 0x92, 0xac, 0xb1, 0xee, 0x8b, 0xf4, 0xd2,
-  0x8f, 0xc4, 0x4a, 0x8a, 0x8a, 0x0b, 0x4c, 0x28, 0x98, 0x6a, 0x63, 0x04,
-  0x21, 0xcc, 0x13, 0x11, 0x69, 0x97, 0x0e, 0x6a, 0x97, 0xa0, 0x3b, 0xf4,
-  0x03, 0xd2, 0xc6, 0x56, 0xcc, 0x1b, 0x0f, 0xe6, 0xf0, 0xf8, 0x7f, 0x1d,
-  0x59, 0x18, 0x74, 0x83, 0x33, 0xce, 0x75, 0x84, 0xa1, 0x72, 0xcf, 0xa8,
-  0x17, 0x1f, 0x46, 0x31, 0x21, 0xb3, 0x3a, 0x99, 0x5e, 0x45, 0xcb, 0x33,
-  0x4f, 0xca, 0x31, 0xde, 0x9c, 0x0c, 0x31, 0xb9, 0x8e, 0xb8, 0x4d, 0xfe,
-  0x45, 0x24, 0x1d, 0x73, 0x98, 0xd8, 0xa6, 0x3c, 0x1d, 0x0f, 0x64, 0x2d,
-  0x18, 0x06, 0x6e, 0x39, 0x1f, 0xdb, 0xc2, 0xeb, 0x59, 0x8e, 0x16, 0x31,
-  0xe9, 0x91, 0x5e, 0xad, 0x9b, 0x02, 0x9d, 0x30, 0x64, 0xdd, 0xbc, 0xfe,
-  0x57, 0x05, 0x30, 0xbb, 0xb4, 0x10, 0xa0, 0xd4, 0xe3, 0xb5, 0x8e, 0xc3,
-  0x68, 0x67, 0x63, 0x63, 0xb9, 0x93, 0x66, 0xc1, 0x06, 0x9c, 0x93, 0x34,
-  0xe2, 0x93, 0x84, 0xdd, 0x8a, 0xe2, 0x9f, 0x92, 0x92, 0x9d, 0xee, 0x9d,
-  0xd8, 0x48, 0x6b, 0xc6, 0xe5, 0x84, 0x15, 0x71, 0x14, 0xc3, 0x24, 0x86,
-  0x34, 0xa0, 0x86, 0xba, 0xc1, 0xec, 0xdf, 0xa2, 0x4c, 0x6e, 0x69, 0x85,
-  0xd4, 0x16, 0x6b, 0x04, 0x63, 0x44, 0xb9, 0x0c, 0x06, 0xc8, 0xc8, 0x82,
-  0x72, 0x0c, 0x30, 0x44, 0x6d, 0xc0, 0xe6, 0x13, 0x52, 0x44, 0x69, 0x14,
-  0xe9, 0x9f, 0xe1, 0xa9, 0x15, 0x59, 0x1e, 0x33, 0x4a, 0x90, 0x3c, 0x48,
-  0x51, 0x74, 0xec, 0x53, 0x21, 0x27, 0x80, 0x99, 0x82, 0x6d, 0xf1, 0x5a,
-  0x6b, 0xd9, 0x49, 0x71, 0xa0, 0x6f, 0x06, 0x21, 0x9c, 0x25, 0x03, 0x09,
-  0x0c, 0x2f, 0xf3, 0x75, 0x72, 0x6b, 0x7e, 0xca, 0x8b, 0xdb, 0x1c, 0x63,
-  0x2f, 0x1c, 0x3e, 0xd1, 0x2d, 0xc7, 0xc9, 0xd6, 0x69, 0x1e, 0xaa, 0xca,
-  0x6d, 0x44, 0x10, 0xe4, 0x39, 0xc7, 0xc7, 0xf5, 0x2e, 0xad, 0x25, 0x65,
-  0x8c, 0xe7, 0x2e, 0xf9, 0x2c, 0x52, 0xac, 0x0b, 0x93, 0xf0, 0x71, 0x9c,
-  0x29, 0xd3, 0xc8, 0xf8, 0xeb, 0xe8, 0x0e, 0xe1, 0xec, 0x0d, 0x6e, 0x0d,
-  0x80, 0x9e, 0xeb, 0x3e, 0x1c, 0xbe, 0x9e, 0xba, 0xd1, 0x79, 0xfa, 0x61,
-  0x31, 0xa4, 0x13, 0xb2, 0x08, 0xfe, 0xc1, 0x8b, 0x26, 0x00, 0x60, 0x2d,
-  0x25, 0xab, 0x08, 0x1a, 0x4b, 0x29, 0x9a, 0xec, 0xf2, 0xa3, 0x35, 0x68,
-  0xc6, 0x5a, 0xa8, 0xf8, 0xdc, 0x81, 0x15, 0xc1, 0xe4, 0xb9, 0x72, 0x6c,
-  0x80, 0x83, 0x64, 0xa2, 0x20, 0xfa, 0xc5, 0xd1, 0x74, 0x9b, 0x10, 0xab,
-  0x99, 0x4f, 0x84, 0x2a, 0xd9, 0x9c, 0xac, 0xe7, 0xf8, 0xc2, 0xb2, 0xb3,
-  0x05, 0x5e, 0x0c, 0x3a, 0x83, 0xe5, 0x21, 0xe4, 0x79, 0xdb, 0x37, 0x41,
-  0x40, 0x46, 0x0c, 0xe4, 0x7b, 0x4d, 0x50, 0x35, 0x45, 0x5f, 0xa4, 0xce,
-  0xed, 0x75, 0xe1, 0xf9, 0xc3, 0xd9, 0xc2, 0xb2, 0x70, 0x32, 0x02, 0x35,
-  0x85, 0x03, 0x62, 0x59, 0x02, 0x85, 0x09, 0x6e, 0xa8, 0xe2, 0xa1, 0x11,
-  0xce, 0x03, 0x6d, 0x36, 0x4d, 0xa8, 0x92, 0x34, 0x88, 0xcd, 0x73, 0x83,
-  0xeb, 0x00, 0x31, 0x73, 0x51, 0x54, 0xc2, 0x39, 0x88, 0xb0, 0x02, 0xcc,
-  0x96, 0x94, 0x74, 0x2b, 0x08, 0xc2, 0x2a, 0x5e, 0x1e, 0x54, 0xc7, 0xd9,
-  0xa5, 0x81, 0x32, 0x6c, 0x24, 0xe1, 0xe3, 0xdd, 0x64, 0x88, 0x77, 0x84,
-  0x8c, 0x05, 0xfa, 0x0e, 0x7a, 0xd8, 0x99, 0x91, 0x68, 0x5c, 0x86, 0x50,
-  0xbd, 0xce, 0x1c, 0x58, 0x24, 0x38, 0x92, 0xd7, 0x9e, 0x52, 0x56, 0x65,
-  0xf5, 0x3c, 0xa9, 0x1f, 0x57, 0x80, 0xd2, 0x25, 0x2b, 0x59, 0x58, 0xba,
-  0x09, 0xea, 0x81, 0x48, 0x11, 0x71, 0xf4, 0x2f, 0x11, 0xa6, 0x23, 0xce,
-  0xa3, 0x89, 0xc9, 0x0b, 0xda, 0xe5, 0x06, 0x78, 0xdc, 0x9b, 0xf1, 0x05,
-  0x39, 0xcb, 0x63, 0xee, 0xb5, 0xb7, 0x94, 0xc8, 0x75, 0xd8, 0xd1, 0x91,
-  0xb9, 0x2e, 0x93, 0xee, 0xa3, 0x0c, 0xf9, 0xdf, 0x0f, 0x08, 0xdd, 0xb3,
-  0x44, 0x82, 0xd6, 0x2e, 0x50, 0x2a, 0xc1, 0x52, 0xc8, 0x05, 0xad, 0x35,
-  0xda, 0x3c, 0xa6, 0xea, 0x4f, 0xc7, 0x81, 0xf4, 0x25, 0x0a, 0x42, 0x03,
-  0x3d, 0x27, 0xf7, 0x76, 0x40, 0x07, 0x35, 0xc2, 0xf4, 0xf4, 0xb0, 0x1d,
-  0x50, 0xcc, 0x17, 0xbc, 0x5c, 0xcc, 0xde, 0x10, 0x2c, 0x28, 0xfe, 0xe6,
-  0x5e, 0x4f, 0x82, 0xa9, 0x03, 0x55, 0x93, 0x78, 0x68, 0x83, 0x20, 0xa8,
-  0xf5, 0x81, 0x12, 0xaa, 0x20, 0xd9, 0xd6, 0x1e, 0x0e, 0x1b, 0x2f, 0x6e,
-  0x7e, 0xfe, 0xcd, 0xc1, 0xc9, 0x87, 0xa3, 0xcd, 0x3f, 0x47, 0xf8, 0xaf,
-  0x2d, 0xfe, 0xd7, 0x56, 0x2f, 0xc4, 0x6f, 0x20, 0x80, 0x57, 0x3e, 0x5f,
-  0x89, 0xaa, 0xfb, 0xe9, 0x45, 0x31, 0x31, 0x1c, 0x27, 0xa4, 0xd0, 0x90,
-  0x6e, 0x5f, 0x12, 0x87, 0x0d, 0x3a, 0x97, 0xc4, 0x68, 0xda, 0xd7, 0x51,
-  0x25, 0x69, 0xd4, 0x2a, 0x4a, 0x29, 0xa0, 0xec, 0xc2, 0x69, 0xd4, 0x84,
-  0x2e, 0xa4, 0x12, 0x9a, 0x02, 0xcb, 0xe7, 0x9d, 0xa9, 0xed, 0xb4, 0xfb,
-  0x2a, 0xb4, 0x2a, 0x57, 0xde, 0x88, 0x58, 0xe4, 0xbb, 0x93, 0x18, 0xdc,
-  0x0d, 0xc9, 0x90, 0x30, 0xcc, 0x02, 0xc9, 0x01, 0x04, 0xba, 0x6e, 0x9a,
-  0x0a, 0xf2, 0xdb, 0x92, 0x27, 0x8e, 0x88, 0x79, 0xf7, 0x0a, 0xd8, 0x85,
-  0xf7, 0x93, 0x5e, 0x2c, 0xb4, 0x6a, 0x7c, 0xb7, 0x3d, 0xdc, 0x85, 0xe8,
-  0x82, 0x0e, 0x60, 0xed, 0x09, 0xa1, 0x89, 0x69, 0xd2, 0x99, 0x29, 0x59,
-  0x20, 0x41, 0x38, 0x2e, 0x5c, 0x47, 0x9d, 0xd3, 0xe8, 0x4f, 0x65, 0x8c,
-  0x62, 0xb1, 0x47, 0x8d, 0xf0, 0x34, 0x7b, 0xd3, 0x07, 0x36, 0xf8, 0x36,
-  0xb1, 0x38, 0x33, 0xa4, 0x2b, 0x53, 0x12, 0xdd, 0xd4, 0xcb, 0x39, 0xcd,
-  0x41, 0x39, 0x5f, 0x85, 0xab, 0x6b, 0xcd, 0x4d, 0x86, 0xd0, 0xed, 0xa3,
-  0x6d, 0x71, 0xd2, 0x37, 0xaa, 0x45, 0xb1, 0xaa, 0x73, 0x13, 0xcf, 0xe2,
-  0x3a, 0x91, 0xc2, 0x99, 0x89, 0xc9, 0x19, 0x70, 0xf5, 0x0a, 0xe1, 0x55,
-  0x4c, 0x4a, 0x9f, 0x38, 0x30, 0xa7, 0xea, 0x09, 0xc1, 0x03, 0xa7, 0x50,
-  0x44, 0x98, 0xe8, 0x63, 0xb8, 0x1f, 0xbe, 0x7f, 0x3f, 0x49, 0xd7, 0xd4,
-  0xb8, 0xd3, 0xfb, 0x7c, 0xfd, 0x6d, 0xf1, 0x33, 0x4c, 0x3e, 0x91, 0x8f,
-  0x84, 0x94, 0x02, 0xb9, 0xe4, 0x3b, 0x67, 0x6e, 0xa5, 0x24, 0xc3, 0xa5,
-  0xb8, 0xa2, 0xa3, 0xe1, 0xdd, 0xc0, 0xd6, 0x2f, 0xa4, 0xec, 0x52, 0x05,
-  0x8a, 0xc7, 0x3f, 0xa2, 0xbe, 0x68, 0x83, 0x3a, 0xf7, 0xce, 0x57, 0x92,
-  0x00, 0x3f, 0x17, 0x92, 0x7c, 0x68, 0x18, 0x4d, 0xee, 0xd5, 0x76, 0x60,
-  0xa2, 0xad, 0x34, 0x76, 0xdf, 0xb4, 0x2e, 0xf4, 0xab, 0x43, 0x2f, 0x77,
-  0x57, 0x18, 0x44, 0xdf, 0xa9, 0xbe, 0xe1, 0xf4, 0xf3, 0xb1, 0x57, 0x50,
-  0x44, 0x60, 0xaa, 0x0d, 0xf8, 0x38, 0x51, 0x35, 0x34, 0xd7, 0x15, 0x03,
-  0x5a, 0x0c, 0x46, 0x47, 0xa2, 0x8d, 0xd1, 0x57, 0xd9, 0x5c, 0x49, 0xfd,
-  0x66, 0x06, 0x64, 0xed, 0xd3, 0xa2, 0xc1, 0x42, 0x96, 0xb4, 0x20, 0x82,
-  0x35, 0xa1, 0x8b, 0x56, 0xde, 0xc6, 0xa4, 0x2d, 0x3b, 0x6d, 0x49, 0x17,
-  0x59, 0x25, 0x08, 0xc2, 0x50, 0x91, 0x82, 0x10, 0x98, 0xf1, 0xc5, 0xd0,
-  0xac, 0xbf, 0x88, 0x79, 0xa0, 0x8a, 0x98, 0x83, 0x91, 0x0b, 0xb0, 0x9f,
-  0xdc, 0x9e, 0xa1, 0x8a, 0x32, 0x8b, 0x1f, 0x4b, 0x0a, 0x33, 0xc6, 0x63,
-  0x1c, 0xec, 0x21, 0x53, 0xac, 0xac, 0xb8, 0x3f, 0x99, 0x29, 0x1d, 0xb9,
-  0x00, 0x0d, 0x2b, 0x70, 0x06, 0x12, 0x1b, 0xb1, 0x92, 0xa6, 0x37, 0x7e,
-  0x0a, 0xf1, 0x58, 0xda, 0x01, 0xf1, 0x6b, 0xa4, 0x4b, 0x38, 0x68, 0xe3,
-  0x55, 0x21, 0x22, 0x88, 0xbe, 0xd0, 0x60, 0x59, 0xb2, 0xf1, 0x47, 0xa1,
-  0x40, 0x97, 0xe1, 0x25, 0x37, 0x20, 0xd1, 0x50, 0x39, 0x45, 0x05, 0x0d,
-  0xf0, 0xd9, 0x03, 0xaa, 0xc0, 0x85, 0xcc, 0xb4, 0x33, 0x13, 0xf4, 0xe1,
-  0xb7, 0x40, 0x29, 0x78, 0x60, 0x8c, 0x4e, 0x15, 0xa0, 0x7d, 0x56, 0x88,
-  0x04, 0x3f, 0xe1, 0x0f, 0x7f, 0x9a, 0xe7, 0x9f, 0x62, 0x69, 0xb5, 0x10,
-  0xab, 0xe6, 0xeb, 0x3a, 0x7f, 0xe9, 0xa6, 0x8a, 0xc7, 0x99, 0x97, 0x9c,
-  0xd6, 0x00, 0xed, 0x03, 0x49, 0xf8, 0x93, 0x82, 0x81, 0x59, 0x81, 0xde,
-  0x68, 0x92, 0x25, 0xd1, 0x73, 0x23, 0x4e, 0xdb, 0xe2, 0x81, 0x3e, 0x24,
-  0x87, 0x2a, 0x4f, 0xb1, 0xc0, 0x3e, 0xa1, 0xd6, 0x2e, 0xe8, 0xc4, 0x72,
-  0x0a, 0xb1, 0x33, 0xe0, 0xdd, 0x72, 0x74, 0x4d, 0x10, 0x31, 0xe8, 0x34,
-  0xe3, 0x88, 0xa4, 0x0f, 0x7b, 0x26, 0xec, 0x49, 0xa3, 0x8a, 0xde, 0x22,
-  0x83, 0x20, 0xbb, 0xe0, 0xad, 0x0c, 0xbf, 0x57, 0x91, 0x46, 0x1f, 0xc5,
-  0xe9, 0x9a, 0xf9, 0x06, 0x87, 0xeb, 0x93, 0x4a, 0x7d, 0x4d, 0xbe, 0xc4,
-  0x74, 0x52, 0xd9, 0x7b, 0xc5, 0xac, 0xd2, 0x5e, 0x30, 0xe4, 0x0a, 0xc8,
-  0x8b, 0x6e, 0x8c, 0x1b, 0x86, 0xac, 0xb9, 0xf4, 0xa6, 0x86, 0x18, 0x96,
-  0x3c, 0x3b, 0x34, 0x3a, 0xf1, 0x6c, 0xdc, 0x2b, 0x12, 0xe1, 0x82, 0xe1,
-  0x1c, 0xcb, 0xca, 0xa0, 0x14, 0xb6, 0xf9, 0xe1, 0x50, 0x0c, 0x0b, 0xdc,
-  0x4c, 0xba, 0xa4, 0xa7, 0x70, 0x8b, 0x30, 0x01, 0xa6, 0xe8, 0xe0, 0xde,
-  0x78, 0xbe, 0xbb, 0x81, 0xb7, 0x27, 0x62, 0x19, 0xf3, 0x6d, 0x22, 0xf2,
-  0x9f, 0xb2, 0xe0, 0xbd, 0xf8, 0xc8, 0x79, 0x61, 0x76, 0x4d, 0xc0, 0x14,
-  0xdd, 0x65, 0xdc, 0xda, 0x3e, 0x98, 0xe8, 0xc4, 0x41, 0x4c, 0x0e, 0x6a,
-  0xc4, 0x8c, 0xcd, 0x0b, 0xe3, 0xf8, 0xb2, 0xf6, 0xce, 0xb3, 0xc3, 0x69,
-  0x4b, 0xfb, 0x05, 0xed, 0xab, 0x76, 0x2b, 0x4c, 0x09, 0xff, 0xfa, 0x13,
-  0xb2, 0xaf, 0x71, 0x7e, 0xee, 0xa8, 0x9c, 0x7c, 0xcd, 0x23, 0xe3, 0x4f,
-  0x02, 0x47, 0x04, 0xbf, 0x12, 0x13, 0x1d, 0xf7, 0xf1, 0xbf, 0x9e, 0x16,
-  0x4d, 0xe8, 0x8f, 0x98, 0x97, 0x8b, 0x51, 0x5d, 0xc1, 0xbc, 0xd4, 0xfa,
-  0x1a, 0x8d, 0x0d, 0x08, 0x39, 0xb9, 0x04, 0x4f, 0xbb, 0x73, 0x05, 0xd1,
-  0x1a, 0xd0, 0xcf, 0x63, 0x5a, 0x0d, 0xd8, 0xa4, 0x4e, 0xa7, 0xbd, 0x59,
-  0x23, 0xe0, 0x85, 0x01, 0x3e, 0x3e, 0x05, 0x54, 0x2a, 0xe3, 0xf9, 0xb5,
-  0xf0, 0xbe, 0x61, 0x85, 0x6e, 0x05, 0x27, 0x4f, 0x69, 0x3a, 0x04, 0xde,
-  0x66, 0x53, 0xf9, 0xd0, 0x67, 0xc1, 0x18, 0x89, 0xf8, 0x43, 0x90, 0xf0,
-  0x7d, 0x07, 0x65, 0x33, 0x60, 0xf1, 0x69, 0x8a, 0xc0, 0xc6, 0xb3, 0x9d,
-  0x9d, 0x85, 0x57, 0x48, 0x4d, 0x96, 0x38, 0xa6, 0xf4, 0x8d, 0x6a, 0x38,
-  0xeb, 0xe2, 0xbb, 0x44, 0x65, 0x58, 0xd4, 0xe7, 0xdf, 0x3d, 0xa9, 0xbf,
-  0xbd, 0xc1, 0x1b, 0xcf, 0x9f, 0x3f, 0x8f, 0xe2, 0x73, 0x66, 0x31, 0x3e,
-  0x22, 0x7e, 0xd6, 0x72, 0x9e, 0xde, 0x3e, 0x9e, 0xc1, 0x16, 0x02, 0x05,
-  0x8e, 0xca, 0xc9, 0x25, 0xc3, 0xa5, 0x52, 0x8f, 0x1e, 0x86, 0x7d, 0xbf,
-  0xc1, 0x4a, 0x83, 0xe8, 0xe4, 0x35, 0x87, 0xd6, 0x0e, 0xdf, 0xe3, 0xdf,
-  0x50, 0x35, 0x61, 0x67, 0x2a, 0xc1, 0x8a, 0x50, 0x97, 0x71, 0x0a, 0xe3,
-  0xbc, 0xfd, 0xa6, 0x8d, 0xe2, 0xb0, 0x7a, 0x3a, 0x5c, 0xdf, 0x7e, 0xb9,
-  0xb1, 0x16, 0xa8, 0x1b, 0xc2, 0x36, 0x40, 0x89, 0xe3, 0xf5, 0xde, 0x08,
-  0xa4, 0x4c, 0x3c, 0x48, 0x31, 0x98, 0x31, 0x10, 0x88, 0x55, 0xac, 0x25,
-  0x12, 0xba, 0xbf, 0x12, 0x24, 0xbe, 0x38, 0xa9, 0x46, 0x59, 0xd6, 0x26,
-  0x02, 0x8e, 0xb6, 0x00, 0x0f, 0x4f, 0x3b, 0xca, 0x8a, 0xf6, 0xc0, 0xc2,
-  0xc7, 0x29, 0xd1, 0x96, 0x92, 0x29, 0x17, 0x02, 0xe3, 0x7d, 0x8a, 0x1d,
-  0x28, 0x83, 0x70, 0x5b, 0x27, 0x19, 0x55, 0x14, 0x27, 0x0c, 0x29, 0xac,
-  0x5a, 0x21, 0x42, 0xde, 0x34, 0xcb, 0x81, 0xe8, 0x91, 0x84, 0xbb, 0x2c,
-  0x5e, 0xa4, 0xa1, 0x30, 0x77, 0x85, 0x28, 0xa5, 0x94, 0x50, 0x4e, 0xa9,
-  0x3d, 0xbf, 0x3f, 0x3b, 0x33, 0x25, 0xcb, 0xf4, 0x27, 0x8c, 0xbf, 0x3f,
-  0x09, 0x93, 0xc8, 0x29, 0xe1, 0x66, 0xc8, 0x94, 0xc6, 0x56, 0xcd, 0x4b,
-  0xec, 0x33, 0xba, 0x6f, 0xd2, 0xe4, 0xa9, 0xb6, 0xe3, 0x31, 0xc0, 0x01,
-  0x1a, 0xe5, 0xb2, 0x01, 0x58, 0x1e, 0x0a, 0x59, 0x9c, 0x42, 0x77, 0xda,
-  0x28, 0x69, 0x38, 0x3c, 0xf1, 0x24, 0x98, 0x54, 0xa7, 0x99, 0xf8, 0x2a,
-  0xd5, 0x59, 0x27, 0x23, 0x34, 0x67, 0xc9, 0x16, 0x2d, 0xa8, 0x85, 0xfb,
-  0x8b, 0x9d, 0xad, 0xad, 0x7e, 0xb4, 0x3b, 0xd8, 0x74, 0x81, 0x8b, 0x92,
-  0x89, 0x07, 0x26, 0x29, 0x09, 0xfe, 0x1e, 0x9a, 0x11, 0x75, 0x71, 0xb7,
-  0x78, 0x46, 0x02, 0x61, 0xa4, 0xc5, 0xcb, 0xe8, 0x82, 0x08, 0x61, 0x99,
-  0xf4, 0xbe, 0xdb, 0xda, 0xdd, 0xdd, 0x7c, 0xb9, 0x77, 0x16, 0xef, 0x6e,
-  0x6d, 0x22, 0x9a, 0x11, 0x9b, 0x57, 0x36, 0x23, 0xd6, 0xad, 0x9f, 0x8d,
-  0xb2, 0x31, 0x43, 0x60, 0x4e, 0x26, 0xf7, 0xe1, 0x34, 0xaa, 0x5e, 0x31,
-  0x4b, 0xf3, 0xaa, 0x9a, 0x44, 0xd5, 0x47, 0xae, 0xc2, 0x5f, 0xaf, 0x3e,
-  0xb2, 0x8f, 0xa4, 0x27, 0x00, 0x44, 0x59, 0x40, 0x01, 0x37, 0x3b, 0x23,
-  0xd7, 0x41, 0x62, 0x4a, 0x7d, 0x05, 0x60, 0xc8, 0xec, 0x03, 0xfb, 0x03,
-  0xda, 0xa0, 0x42, 0xc1, 0x54, 0x65, 0xb5, 0xa2, 0x59, 0x87, 0x5a, 0x3d,
-  0x3a, 0x5c, 0xe3, 0x4d, 0xd3, 0xbd, 0xb4, 0xe5, 0xef, 0x3c, 0xd3, 0x3e,
-  0x57, 0x32, 0xfa, 0x37, 0x5a, 0x0e, 0xc6, 0x34, 0x55, 0x94, 0x26, 0x54,
-  0x38, 0xa9, 0xeb, 0x62, 0xcf, 0x8f, 0x02, 0x7a, 0x36, 0x1b, 0x16, 0x76,
-  0x9e, 0x1f, 0x41, 0x58, 0xa4, 0x29, 0xe9, 0x3d, 0xa4, 0xbc, 0x24, 0x3d,
-  0x3a, 0x04, 0xe2, 0x0f, 0x9b, 0xbd, 0x7a, 0xba, 0x1e, 0xd3, 0xb6, 0x05,
-  0x4a, 0xb4, 0xf4, 0x31, 0xe3, 0xcf, 0xf1, 0xc6, 0x2f, 0x7b, 0xc0, 0xb4,
-  0x78, 0xaa, 0x95, 0xba, 0xe6, 0x9e, 0x32, 0x74, 0x6d, 0xb1, 0x98, 0x64,
-  0xff, 0x5d, 0x87, 0xdb, 0x4e, 0x0b, 0x36, 0xa8, 0xb1, 0x01, 0x21, 0x4b,
-  0x65, 0x09, 0x67, 0x5e, 0xd9, 0x76, 0x35, 0xcb, 0x2e, 0xcd, 0xf9, 0xf4,
-  0x97, 0x4f, 0x50, 0xae, 0xe8, 0x75, 0xf4, 0xff, 0xa0, 0x12, 0x2c, 0xff,
-  0x2c, 0x93, 0x5b, 0x85, 0x10, 0xc7, 0x7f, 0xc2, 0x77, 0xb8, 0x3a, 0xd7,
-  0x5b, 0x31, 0xbf, 0xb7, 0x70, 0xc9, 0x02, 0xba, 0x83, 0xed, 0x16, 0xa5,
-  0xf1, 0x97, 0x71, 0xf5, 0x54, 0x6d, 0x67, 0x06, 0x36, 0xa6, 0x25, 0xb4,
-  0xfd, 0x00, 0x82, 0xb1, 0x34, 0x50, 0x25, 0x94, 0x9a, 0xaa, 0x40, 0x69,
-  0xdc, 0xe5, 0x5d, 0xe0, 0xf6, 0x49, 0xc6, 0x97, 0x69, 0x6c, 0x0a, 0xc9,
-  0x12, 0xff, 0xb2, 0xaf, 0xb0, 0x45, 0x75, 0xd3, 0x17, 0x99, 0x04, 0xdc,
-  0x31, 0xdc, 0xb6, 0xfc, 0x15, 0x75, 0x22, 0x26, 0x57, 0xb8, 0xa9, 0x79,
-  0xd7, 0x1c, 0xe1, 0x29, 0xd6, 0xf5, 0x92, 0x86, 0xe4, 0x74, 0x1c, 0xc2,
-  0x0c, 0x91, 0xbe, 0x97, 0x10, 0x85, 0x79, 0x4e, 0x7c, 0x43, 0x81, 0x3a,
-  0x82, 0x16, 0x6c, 0x25, 0x4d, 0x9a, 0xcb, 0x32, 0xc3, 0xc8, 0x54, 0x99,
-  0xd6, 0xf3, 0x52, 0xea, 0x3b, 0xb1, 0x18, 0x06, 0x4f, 0x1b, 0x47, 0x42,
-  0x02, 0xf7, 0x98, 0xa4, 0x54, 0xf1, 0xd3, 0xe4, 0xcd, 0xa0, 0xae, 0x08,
-  0x1e, 0x51, 0xa8, 0xe5, 0x3a, 0xcd, 0x4d, 0x27, 0x57, 0x37, 0x53, 0x46,
-  0xd1, 0x69, 0xc6, 0x85, 0xec, 0x0c, 0xcb, 0x5f, 0x34, 0x9c, 0xbc, 0x55,
-  0x77, 0xc6, 0xc9, 0xfa, 0x5d, 0x7c, 0x7b, 0x7b, 0x1b, 0xe3, 0x7d, 0x6e,
-  0x59, 0xc4, 0xc0, 0x53, 0x88, 0x57, 0x81, 0x0e, 0x3d, 0xf9, 0x7d, 0x51,
-  0x92, 0xf9, 0x29, 0x22, 0x4e, 0x7e, 0x7c, 0x79, 0x91, 0xd5, 0x84, 0x12,
-  0x22, 0x5c, 0x45, 0xaf, 0x89, 0xb8, 0x92, 0xe9, 0x90, 0xab, 0x47, 0x03,
-  0x5d, 0x01, 0xa2, 0xd8, 0xb5, 0x20, 0x0a, 0xf2, 0xa8, 0x4e, 0x11, 0x63,
-  0x09, 0x3b, 0x54, 0xee, 0x45, 0xf1, 0x9b, 0xa8, 0x77, 0x28, 0xab, 0x3d,
-  0x87, 0x27, 0xf6, 0x9a, 0x6b, 0xe1, 0x87, 0x83, 0xdd, 0x2d, 0x83, 0xae,
-  0xe6, 0x26, 0x90, 0x8b, 0x6d, 0xfa, 0x10, 0xd0, 0x13, 0x0a, 0xdc, 0x68,
-  0x9b, 0x6b, 0x1b, 0xea, 0xbb, 0x82, 0x55, 0x08, 0x1c, 0x39, 0x63, 0xc4,
-  0x78, 0x5a, 0x7a, 0x82, 0x39, 0x71, 0x9a, 0xb0, 0x09, 0x3c, 0xf7, 0x0b,
-  0x45, 0x84, 0x50, 0xf5, 0x4b, 0xe3, 0xd3, 0x7e, 0x82, 0x9c, 0xf0, 0x14,
-  0x41, 0x23, 0x2e, 0x1e, 0x94, 0x7a, 0x8e, 0x00, 0xb0, 0x5d, 0xb3, 0xb1,
-  0x2c, 0xc1, 0x9e, 0x1a, 0x0a, 0x5b, 0x69, 0x45, 0x50, 0xa8, 0x3f, 0x24,
-  0x4a, 0x8b, 0x64, 0x62, 0x41, 0x22, 0xd8, 0xfc, 0x11, 0x27, 0xee, 0x97,
-  0x0f, 0x77, 0x1f, 0xaa, 0x16, 0x12, 0x08, 0x97, 0xd1, 0xc3, 0x8e, 0x78,
-  0x45, 0x6f, 0x89, 0x5c, 0x3f, 0xfb, 0xea, 0x97, 0x49, 0x8d, 0xff, 0x7f,
-  0x49, 0xa8, 0x72, 0xbb, 0xa9, 0x8d, 0xec, 0x96, 0xd0, 0xfd, 0x62, 0x0e,
-  0xd9, 0x23, 0x04, 0xae, 0x25, 0x77, 0xdf, 0x88, 0x2a, 0x39, 0xda, 0x1c,
-  0x47, 0x75, 0xe8, 0x2e, 0xbd, 0xbe, 0x42, 0x1a, 0x05, 0xc5, 0xc5, 0x49,
-  0x70, 0x29, 0x6c, 0xb8, 0x04, 0x05, 0xd3, 0x12, 0xcf, 0x3d, 0xd5, 0x04,
-  0xc7, 0xda, 0x4c, 0xdc, 0x37, 0x2c, 0x49, 0x09, 0x3f, 0xfc, 0xfa, 0x98,
-  0xca, 0xfb, 0xe0, 0xae, 0xcb, 0x05, 0x77, 0x90, 0xe7, 0x4f, 0x7d, 0xbc,
-  0xad, 0x8b, 0xfd, 0x2a, 0xcb, 0x55, 0x8f, 0x49, 0x38, 0xde, 0x17, 0xcc,
-  0x57, 0x17, 0xb5, 0x2f, 0xb1, 0x25, 0x5d, 0x5c, 0xda, 0x69, 0x1a, 0xa2,
-  0xab, 0xbe, 0x9a, 0xd8, 0x82, 0xe9, 0x20, 0xbd, 0xe8, 0xeb, 0xaa, 0x51,
-  0x26, 0x95, 0x5a, 0xfd, 0xb8, 0xad, 0x5e, 0x91, 0xa9, 0x3d, 0xbe, 0xd5,
-  0x7d, 0x5e, 0x27, 0x77, 0xa9, 0x5f, 0x05, 0x22, 0x9f, 0x6f, 0xb3, 0x89,
-  0x63, 0x62, 0xb7, 0x82, 0x3b, 0x86, 0x74, 0x69, 0xa3, 0x9f, 0x3b, 0x81,
-  0x5e, 0x60, 0x78, 0x2f, 0x14, 0x28, 0x37, 0x0e, 0x07, 0x50, 0x5a, 0xff,
-  0x4b, 0x6a, 0x01, 0xe1, 0xfe, 0x20, 0xe3, 0x52, 0x81, 0x69, 0xdc, 0xc1,
-  0x4c, 0xb7, 0x45, 0xa9, 0x18, 0x0b, 0x0f, 0x87, 0xb9, 0x60, 0x9f, 0xa3,
-  0x57, 0xe8, 0x4b, 0x89, 0x9d, 0x61, 0xb9, 0xac, 0x9b, 0xa8, 0x24, 0x3e,
-  0x76, 0x56, 0x44, 0x05, 0x8c, 0x01, 0xc9, 0x10, 0x1e, 0x8e, 0xb3, 0xe6,
-  0x1c, 0xea, 0x31, 0xc7, 0x8d, 0x12, 0xf4, 0xc2, 0x5d, 0xa4, 0x40, 0xc8,
-  0xff, 0x68, 0x13, 0xef, 0xf3, 0x87, 0xa9, 0xb7, 0x2c, 0xf9, 0x16, 0x53,
-  0x8f, 0x7b, 0xac, 0x6a, 0x29, 0xd9, 0xe7, 0x4e, 0xcc, 0x90, 0x52, 0x9a,
-  0xd9, 0x5d, 0x6f, 0x62, 0x87, 0x41, 0xa1, 0x8b, 0x1c, 0xfa, 0xf9, 0xaf,
-  0xb5, 0xeb, 0xc4, 0x8c, 0x94, 0xaf, 0x89, 0x93, 0x0f, 0x0f, 0xc7, 0x01,
-  0x05, 0xda, 0x7b, 0xb7, 0xe5, 0x89, 0x76, 0x14, 0xc3, 0x11, 0x28, 0x92,
-  0x06, 0xfc, 0x5f, 0x33, 0x33, 0x5f, 0x50, 0xd1, 0x53, 0x1c, 0x1e, 0x4e,
-  0x11, 0x57, 0xc4, 0xaf, 0xe9, 0xad, 0xcf, 0xdc, 0x14, 0x8f, 0x5f, 0x1c,
-  0xe5, 0xf0, 0x73, 0xcf, 0x45, 0x8d, 0x16, 0x6b, 0x76, 0x1c, 0xa7, 0xb0,
-  0xac, 0xfa, 0xa1, 0x4c, 0x3d, 0x3e, 0xd2, 0x7f, 0x85, 0xfb, 0x27, 0xaa,
-  0x82, 0xb4, 0xd6, 0x6f, 0x12, 0x0c, 0x71, 0xe2, 0xe9, 0x6e, 0xd4, 0x5d,
-  0xce, 0x3a, 0xf7, 0x58, 0xf7, 0x0e, 0x7b, 0xa7, 0x06, 0xf7, 0xee, 0xff,
-  0xa4, 0xf5, 0x11, 0x3f, 0x5b, 0x36, 0xc0, 0x1c, 0x8e, 0x4a, 0xda, 0x57,
-  0x61, 0x45, 0x6a, 0x44, 0xb5, 0xbc, 0xa8, 0xf1, 0x74, 0xcc, 0x8e, 0x20,
-  0xde, 0x50, 0x47, 0xc4, 0x9c, 0xba, 0x09, 0xdb, 0xd2, 0x19, 0x57, 0xf8,
-  0x7e, 0x6e, 0x75, 0x3b, 0xf6, 0xba, 0x99, 0x3a, 0x79, 0x64, 0xc2, 0x05,
-  0x9c, 0x6a, 0x38, 0x33, 0xcc, 0x94, 0x9d, 0xec, 0xe7, 0x5f, 0xd6, 0xee,
-  0x55, 0x6b, 0x2f, 0x41, 0x9a, 0xdc, 0x0d, 0x2c, 0x6e, 0xd1, 0x65, 0x1d,
-  0x7e, 0xf5, 0x73, 0xfe, 0x93, 0xae, 0xb2, 0xe5, 0xdf, 0x36, 0xcc, 0xf3,
-  0x84, 0x77, 0xe9, 0x3d, 0x0a, 0xd2, 0x2e, 0xd2, 0x12, 0x02, 0xea, 0x81,
-  0x6b, 0x90, 0x81, 0xba, 0xe1, 0x28, 0x07, 0xf6, 0x91, 0x6e, 0xb5, 0x80,
-  0x7a, 0xd7, 0xaf, 0xc1, 0xb8, 0x58, 0x6c, 0xd2, 0x44, 0x83, 0xa4, 0x37,
-  0x19, 0xc6, 0x0b, 0xbb, 0x0c, 0x7b, 0x55, 0x02, 0xa1, 0x98, 0xb7, 0x66,
-  0xe9, 0xbb, 0xa1, 0x39, 0x4a, 0xcc, 0x22, 0xf7, 0x5b, 0x74, 0x51, 0x16,
-  0xb7, 0x15, 0x19, 0x24, 0x1a, 0x7b, 0x48, 0xd8, 0xd5, 0x7d, 0xed, 0xc1,
-  0x6d, 0x01, 0x39, 0x26, 0xa6, 0xd5, 0xd4, 0x9b, 0xf3, 0xb7, 0x27, 0xdc,
-  0x74, 0x96, 0x91, 0x9f, 0x10, 0x0f, 0x40, 0xa6, 0x3b, 0xbf, 0x98, 0x66,
-  0x35, 0x6a, 0x88, 0x35, 0x4b, 0x6f, 0xbd, 0x10, 0x3c, 0x78, 0x2a, 0x4a,
-  0x1a, 0x13, 0xcf, 0xc9, 0x2c, 0x94, 0x25, 0x23, 0xa6, 0x84, 0x83, 0x16,
-  0xed, 0xd8, 0x40, 0xcb, 0x5b, 0x3b, 0x87, 0x9c, 0x55, 0x4e, 0xaa, 0xec,
-  0x6b, 0xdc, 0x09, 0x7c, 0x22, 0xe0, 0xed, 0x31, 0x7a, 0x22, 0x3a, 0x97,
-  0x26, 0xd4, 0x0b, 0xcf, 0x90, 0x0e, 0x15, 0x5f, 0x73, 0x53, 0x13, 0xb4,
-  0x75, 0xd2, 0x54, 0x76, 0x3d, 0xc4, 0x26, 0xa3, 0xfc, 0xda, 0x0e, 0xc7,
-  0xae, 0xfe, 0x8b, 0x9a, 0x17, 0x6a, 0x80, 0x92, 0xcd, 0x33, 0x2f, 0x31,
-  0x72, 0xa1, 0x46, 0xbe, 0x5f, 0x73, 0x2b, 0x2a, 0x98, 0x46, 0x10, 0x4c,
-  0xee, 0x5c, 0xc3, 0x70, 0xd0, 0x2e, 0xae, 0x18, 0x69, 0x72, 0x64, 0x56,
-  0x80, 0x45, 0x18, 0x46, 0x9a, 0xca, 0xa9, 0x69, 0x33, 0x81, 0xcd, 0x60,
-  0x74, 0xb4, 0x09, 0xd1, 0x79, 0x8b, 0xa3, 0x77, 0x3b, 0x16, 0x1c, 0x0b,
-  0xcb, 0xf6, 0x39, 0xae, 0x6c, 0x5b, 0x5b, 0xf5, 0xc7, 0x12, 0x9a, 0x36,
-  0xe1, 0x67, 0x53, 0x5f, 0xdb, 0xa2, 0x19, 0x23, 0xf6, 0x13, 0x05, 0x24,
-  0x66, 0xdc, 0x77, 0x72, 0x9c, 0x32, 0x8c, 0x6b, 0x36, 0x5c, 0x10, 0xec,
-  0x62, 0x9a, 0xa6, 0xe5, 0x95, 0x7a, 0x24, 0x58, 0xcb, 0xf4, 0xa0, 0xc8,
-  0xc5, 0xdb, 0xf8, 0x3f, 0x62, 0x56, 0x1b, 0xa8, 0xfc, 0x65, 0x8e, 0x38,
-  0x4a, 0x82, 0x57, 0xba, 0x12, 0x8f, 0x59, 0x3c, 0x8d, 0x93, 0x1c, 0x16,
-  0x8f, 0x2d, 0x93, 0xab, 0x4f, 0x30, 0xfc, 0xe7, 0x93, 0x62, 0x5e, 0xdd,
-  0xaf, 0x78, 0x35, 0x26, 0xe4, 0x83, 0x88, 0xa4, 0x13, 0x2f, 0x06, 0x5e,
-  0x49, 0x05, 0x66, 0xaf, 0x09, 0xe3, 0x1a, 0xcc, 0xf3, 0x4f, 0x56, 0x05,
-  0xe0, 0x3a, 0xe5, 0x8a, 0xe1, 0x2a, 0x3e, 0xb5, 0xc9, 0xbf, 0xe2, 0x7c,
-  0xf9, 0x7f, 0xb8, 0x9f, 0x0d, 0x52, 0x99, 0xe0, 0xd4, 0xd8, 0x65, 0xf2,
-  0x38, 0x9f, 0x89, 0x4d, 0x89, 0x49, 0x3a, 0xfb, 0x87, 0x6a, 0x2e, 0x8d,
-  0x19, 0x10, 0xaf, 0x4b, 0x6e, 0x07, 0xa4, 0x79, 0x49, 0x36, 0x39, 0x98,
-  0x04, 0x4d, 0x47, 0xf1, 0xb9, 0xf8, 0x0e, 0xe8, 0xb6, 0x95, 0x9c, 0x9e,
-  0x28, 0x3a, 0x2b, 0xb8, 0x5b, 0xaa, 0xbd, 0x88, 0x93, 0x46, 0xc7, 0x93,
-  0xcb, 0xa2, 0xb8, 0x48, 0xca, 0x30, 0x95, 0xa9, 0xd3, 0xe3, 0x45, 0xca,
-  0x1d, 0x24, 0x39, 0x83, 0xc6, 0xca, 0xcf, 0x2f, 0xf9, 0xcd, 0x01, 0xc7,
-  0x03, 0x5d, 0x9f, 0x49, 0x28, 0xc7, 0x74, 0x32, 0xb6, 0x53, 0x8f, 0x1a,
-  0xf3, 0xa0, 0x9e, 0xcd, 0xb8, 0x55, 0xfd, 0x80, 0x73, 0x07, 0x0b, 0xd6,
-  0xd3, 0xdb, 0x38, 0x00, 0x3b, 0x62, 0x83, 0xc6, 0x58, 0x9c, 0x82, 0x85,
-  0x00, 0x94, 0x84, 0xae, 0x0e, 0x15, 0x49, 0x89, 0xb1, 0x7e, 0x95, 0x2f,
-  0x1d, 0x58, 0x02, 0x3f, 0x03, 0x36, 0x24, 0x47, 0xac, 0xdc, 0x70, 0x4e,
-  0x21, 0x09, 0x25, 0xa9, 0xe3, 0x5a, 0xd2, 0x70, 0x1e, 0x47, 0x3d, 0xd6,
-  0x82, 0xe1, 0x5f, 0x4b, 0x18, 0xcd, 0xcd, 0xd7, 0xf0, 0x9f, 0x75, 0x51,
-  0x4c, 0x3e, 0x1f, 0x4d, 0xc7, 0x48, 0x86, 0xa5, 0x06, 0x5a, 0xda, 0x9d,
-  0xc1, 0xf7, 0x6a, 0xdb, 0xf1, 0xe9, 0x5f, 0xd4, 0xad, 0xeb, 0x76, 0x41,
-  0x5a, 0x83, 0xed, 0xf4, 0x63, 0x2f, 0x00, 0x7e, 0xfd, 0x98, 0x06, 0xbe,
-  0x26, 0xfe, 0x20, 0xdd, 0x3e, 0x3e, 0xa7, 0x9f, 0x48, 0xaf, 0xc0, 0xc0,
-  0xf1, 0x69, 0xd8, 0xfc, 0xe9, 0x24, 0xbd, 0xe2, 0xdd, 0xda, 0x3f, 0x39,
-  0xfa, 0xe6, 0xe8, 0xc4, 0xbb, 0xd9, 0xbf, 0x1e, 0x0e, 0xd7, 0x3f, 0xa5,
-  0xe5, 0x45, 0x5a, 0x16, 0xd5, 0x1a, 0x2e, 0x0f, 0x83, 0x90, 0xf8, 0xa4,
-  0x29, 0xaf, 0x70, 0x2e, 0xbc, 0x5b, 0x8b, 0x99, 0x9a, 0xb0, 0x1d, 0xed,
-  0xf3, 0x8c, 0x7c, 0x52, 0x1a, 0x68, 0x12, 0x2c, 0x82, 0xd4, 0x0c, 0xd1,
-  0xf5, 0x3d, 0x2a, 0x53, 0x0a, 0x86, 0x24, 0x01, 0x6c, 0x75, 0x02, 0xb6,
-  0x8c, 0xa2, 0x57, 0xcc, 0xa4, 0x5c, 0xc4, 0x8a, 0x12, 0xdc, 0xae, 0xc2,
-  0x7b, 0x65, 0x46, 0xe8, 0x71, 0xd1, 0x2b, 0xf9, 0x28, 0x41, 0xe8, 0x20,
-  0x99, 0x18, 0x91, 0x9d, 0x4d, 0xc7, 0xd3, 0xbf, 0xc4, 0x07, 0xc3, 0xf8,
-  0xd5, 0xd1, 0xc9, 0xd1, 0xd7, 0x07, 0xe7, 0x47, 0xdc, 0xdb, 0x51, 0x83,
-  0x0a, 0x61, 0xdd, 0xd3, 0xa4, 0x94, 0xfe, 0x45, 0x28, 0x13, 0x99, 0xa6,
-  0x76, 0x51, 0x9d, 0x71, 0xe3, 0x6d, 0xdb, 0x3e, 0x26, 0x41, 0x6b, 0xb5,
-  0xa6, 0xf2, 0x9c, 0xf0, 0x70, 0x70, 0xba, 0x27, 0x53, 0x99, 0xaa, 0xb7,
-  0x82, 0x64, 0x02, 0x5a, 0x4f, 0x15, 0x7d, 0xc8, 0xb1, 0x8a, 0x37, 0x33,
-  0x18, 0x38, 0xbc, 0x7a, 0xd7, 0x6f, 0x69, 0x49, 0xeb, 0xb4, 0x5e, 0xff,
-  0xb5, 0x22, 0x8d, 0x9e, 0xf7, 0x4f, 0x55, 0x4f, 0xcb, 0x40, 0x3d, 0xdc,
-  0x9e, 0xde, 0x23, 0x75, 0xce, 0x46, 0x97, 0x04, 0x39, 0x08, 0x55, 0x35,
-  0x69, 0xf0, 0x26, 0xb5, 0x16, 0x0d, 0x3b, 0xa0, 0x14, 0xe4, 0x8c, 0x34,
-  0xc5, 0x57, 0xf4, 0x60, 0xab, 0x93, 0x9c, 0x83, 0x5c, 0x95, 0xdb, 0x2e,
-  0x73, 0x01, 0xa8, 0x51, 0xd2, 0x70, 0xaa, 0xd1, 0x75, 0x3a, 0x35, 0x00,
-  0xda, 0x98, 0x81, 0x4b, 0x69, 0x9e, 0x8c, 0x88, 0x23, 0x50, 0xbf, 0x24,
-  0x7d, 0x2f, 0x52, 0x72, 0xd0, 0xa0, 0x39, 0x5d, 0xf8, 0xd9, 0x7d, 0x35,
-  0x35, 0xda, 0x2a, 0xa9, 0x74, 0x94, 0x52, 0xed, 0x09, 0xcb, 0x69, 0x40,
-  0x45, 0x49, 0x4e, 0x6a, 0xac, 0x9f, 0x0a, 0x8b, 0x10, 0x32, 0x53, 0x2f,
-  0xf1, 0xdd, 0xf6, 0xa9, 0x33, 0xa9, 0x13, 0x9c, 0xa5, 0x41, 0x3f, 0xe2,
-  0x2e, 0xda, 0x62, 0xc4, 0xe1, 0x0c, 0x97, 0xf1, 0x21, 0xb7, 0x59, 0x80,
-  0xce, 0x83, 0x85, 0xab, 0xa1, 0x22, 0xfd, 0x50, 0x61, 0xe9, 0x2f, 0x6e,
-  0x98, 0xc7, 0xbb, 0xba, 0x9c, 0xff, 0xd2, 0x90, 0xa1, 0x6f, 0xba, 0xe7,
-  0xc9, 0x30, 0xcc, 0x38, 0xd2, 0x9b, 0x56, 0x2b, 0x84, 0xc3, 0xd9, 0xd1,
-  0x8e, 0x08, 0x6d, 0x74, 0xb0, 0xc5, 0xfe, 0x82, 0xfa, 0x57, 0xbf, 0x79,
-  0xb1, 0xa9, 0xcb, 0x8f, 0xd3, 0x99, 0xd7, 0x93, 0x6d, 0xf5, 0xb5, 0xf6,
-  0x6e, 0x34, 0xe6, 0x80, 0x62, 0x76, 0x48, 0xe6, 0x8d, 0x7a, 0xa7, 0x8e,
-  0xce, 0xde, 0x9f, 0xd3, 0x47, 0x4e, 0xf0, 0x2f, 0x92, 0x61, 0x58, 0x85,
-  0xa0, 0xf0, 0xa5, 0xd1, 0x34, 0x66, 0x71, 0xa7, 0x94, 0x48, 0x65, 0x12,
-  0x9d, 0xb5, 0x3c, 0x89, 0x2b, 0xe1, 0xa4, 0x97, 0x9e, 0x48, 0x07, 0xda,
-  0x35, 0xaf, 0xe8, 0xb9, 0xc6, 0xc2, 0x58, 0x53, 0xaa, 0x82, 0x73, 0x10,
-  0xc4, 0x62, 0x9a, 0x05, 0x97, 0xf3, 0x69, 0xd6, 0xc4, 0x29, 0xfe, 0x12,
-  0x8d, 0x04, 0xe1, 0xc9, 0x8e, 0x9b, 0xc8, 0x22, 0xd4, 0xe3, 0x90, 0xf8,
-  0x56, 0x54, 0x66, 0x57, 0xd7, 0xb0, 0x13, 0x30, 0x8f, 0x81, 0x5d, 0x27,
-  0x7f, 0x82, 0x01, 0x99, 0xa8, 0x81, 0x88, 0x9f, 0x23, 0x81, 0xaa, 0xb6,
-  0x2d, 0x13, 0xd7, 0x82, 0x5c, 0x2e, 0x01, 0x34, 0x79, 0x4d, 0x7d, 0x41,
-  0x29, 0x66, 0x04, 0x39, 0xaa, 0x94, 0xe6, 0xf4, 0x26, 0x2f, 0x1b, 0x80,
-  0x2a, 0xb1, 0xfb, 0xda, 0x3d, 0xfd, 0x5e, 0x5a, 0x91, 0xb0, 0x12, 0xaf,
-  0x7d, 0x4b, 0x13, 0xea, 0xd4, 0x43, 0x86, 0xe8, 0x05, 0x6b, 0x9d, 0x62,
-  0x51, 0xe6, 0x81, 0x83, 0x0c, 0x84, 0x57, 0x79, 0xcb, 0x0b, 0x95, 0x6d,
-  0x0b, 0x18, 0x5e, 0xc8, 0x1b, 0x6d, 0x94, 0xeb, 0xf4, 0x0e, 0xed, 0xba,
-  0x0c, 0xa3, 0x90, 0x32, 0x15, 0x26, 0x0e, 0xb5, 0xbd, 0x17, 0x7e, 0x2b,
-  0x42, 0x5c, 0xc5, 0x22, 0xcb, 0x09, 0xdb, 0x36, 0x58, 0xb0, 0xab, 0xb2,
-  0xc8, 0x04, 0xd3, 0x08, 0xec, 0xc0, 0x69, 0x56, 0x74, 0x7c, 0x76, 0xf3,
-  0xac, 0x99, 0x1c, 0xc6, 0xee, 0x56, 0xd2, 0xdd, 0x80, 0xaa, 0xed, 0x10,
-  0x22, 0xd7, 0x9b, 0xc3, 0xb7, 0x69, 0xba, 0xe8, 0xac, 0x34, 0xb9, 0x99,
-  0xc8, 0x3b, 0xde, 0xf7, 0x5f, 0xd1, 0xe4, 0xc8, 0x24, 0xa1, 0x37, 0x48,
-  0x92, 0x20, 0x14, 0xf1, 0x95, 0xd8, 0xd5, 0xc2, 0xcb, 0x17, 0x29, 0x7c,
-  0x31, 0x2b, 0xca, 0x56, 0xf0, 0xce, 0x4b, 0x4c, 0x03, 0xfe, 0x1b, 0x5d,
-  0xab, 0x65, 0x8d, 0x2f, 0x52, 0x06, 0x16, 0xbe, 0x40, 0xb0, 0x4d, 0x35,
-  0x5f, 0xfe, 0x9c, 0x1d, 0x12, 0x9f, 0x91, 0xae, 0x83, 0xb9, 0x55, 0x5c,
-  0x12, 0x5f, 0x94, 0x7e, 0x46, 0xf3, 0xc8, 0x40, 0x2f, 0xeb, 0xa3, 0x49,
-  0x75, 0xb3, 0x74, 0x78, 0xcb, 0xd9, 0x82, 0xa5, 0x12, 0x9c, 0x9c, 0x37,
-  0xab, 0x1b, 0xde, 0xf7, 0xb3, 0xbe, 0x33, 0xe7, 0xb0, 0xa8, 0xa9, 0x6e,
-  0x82, 0xa2, 0xe6, 0x91, 0xb2, 0x66, 0xf8, 0x8d, 0x49, 0x62, 0x16, 0x99,
-  0xe2, 0xc1, 0xad, 0x23, 0x20, 0x8f, 0xd0, 0xf7, 0xd1, 0x42, 0x46, 0xee,
-  0x06, 0x10, 0x2c, 0x7e, 0x4c, 0x14, 0x05, 0x8d, 0x91, 0x33, 0xf0, 0x7d,
-  0x11, 0x2e, 0x67, 0x07, 0xc3, 0x6f, 0x5a, 0x62, 0xc5, 0x13, 0x24, 0x3e,
-  0xb8, 0x3d, 0xa6, 0x8c, 0x32, 0xf3, 0xe2, 0x58, 0xc1, 0xf3, 0x06, 0xb4,
-  0x7c, 0xc4, 0x79, 0x83, 0x89, 0x78, 0xe7, 0xcd, 0x23, 0xed, 0xa2, 0xf3,
-  0x16, 0x60, 0x94, 0x63, 0x75, 0x86, 0x38, 0x27, 0x2e, 0xa7, 0x53, 0x46,
-  0xa5, 0xf5, 0x81, 0xa3, 0x46, 0x27, 0x0d, 0xf3, 0x0e, 0xe8, 0x68, 0xf9,
-  0x35, 0x40, 0x34, 0xcf, 0x65, 0x0e, 0x1a, 0xbd, 0xe0, 0x9d, 0x33, 0xdd,
-  0xcf, 0xa5, 0x0f, 0x9a, 0x1c, 0x50, 0xef, 0x9c, 0x91, 0xfd, 0xd6, 0xc1,
-  0xac, 0xcb, 0x9e, 0x1a, 0xd8, 0xaf, 0x27, 0x9e, 0x1a, 0xcd, 0x3b, 0xeb,
-  0x3a, 0x35, 0x2e, 0x78, 0x4e, 0x60, 0xab, 0x58, 0xdb, 0x49, 0x2a, 0x47,
-  0xb9, 0xb1, 0x49, 0x58, 0x01, 0xac, 0xcc, 0xbe, 0x01, 0x23, 0x2a, 0x47,
-  0x7e, 0xf4, 0xcd, 0x60, 0x5f, 0xb9, 0xf5, 0xe8, 0x64, 0x9c, 0x4b, 0x31,
-  0xe9, 0x78, 0x40, 0xab, 0x20, 0xd7, 0x96, 0x0b, 0x86, 0x87, 0x9c, 0x15,
-  0xc6, 0xe1, 0xd6, 0x49, 0x84, 0x10, 0xb6, 0xaa, 0x14, 0x53, 0xdf, 0xa3,
-  0x66, 0xbe, 0xdd, 0xa3, 0x48, 0xff, 0xf7, 0xe5, 0x34, 0x2c, 0x67, 0xaa,
-  0x6d, 0x81, 0x84, 0x76, 0x06, 0x29, 0x5f, 0xa8, 0xc9, 0x81, 0xca, 0x8e,
-  0xf6, 0xeb, 0xc2, 0x34, 0x9c, 0x9a, 0x32, 0xfc, 0x1c, 0xbf, 0x0b, 0xc2,
-  0xf4, 0xa0, 0xad, 0x25, 0x01, 0xd0, 0x84, 0x10, 0xdb, 0x24, 0x58, 0x48,
-  0xca, 0x4e, 0xa0, 0x35, 0x27, 0x27, 0xc5, 0xa8, 0x0a, 0x0f, 0xda, 0xc0,
-  0x05, 0x16, 0xb0, 0x44, 0xe4, 0xd3, 0x9c, 0x73, 0xa2, 0xeb, 0xad, 0xad,
-  0xc9, 0x41, 0x64, 0x38, 0x6e, 0x0f, 0x93, 0xfa, 0x79, 0x66, 0xb6, 0xb1,
-  0x02, 0xa2, 0x50, 0xe4, 0x04, 0x77, 0x83, 0x6e, 0x22, 0x09, 0x59, 0x3f,
-  0x85, 0xa7, 0x43, 0x34, 0x59, 0xbe, 0x09, 0x74, 0x5d, 0x34, 0xe2, 0xf1,
-  0xcf, 0x5a, 0xbd, 0xb5, 0xc6, 0x79, 0x15, 0x93, 0x47, 0xe5, 0x12, 0xa1,
-  0x37, 0xf7, 0xcd, 0x5f, 0x3d, 0x13, 0xfd, 0xd5, 0xbb, 0xa1, 0x5e, 0x0d,
-  0x96, 0xea, 0x55, 0xca, 0xf0, 0x06, 0xdc, 0xd9, 0x1e, 0x1e, 0x31, 0xd8,
-  0x38, 0x40, 0xb2, 0xb2, 0x98, 0x5f, 0x5d, 0xcb, 0x90, 0x7e, 0x4f, 0x4d,
-  0xf8, 0x84, 0x87, 0x68, 0x93, 0x30, 0x5c, 0x44, 0x5a, 0x52, 0xec, 0x07,
-  0x1d, 0xd1, 0xce, 0xdc, 0xa2, 0x55, 0xb6, 0x75, 0xc9, 0xc1, 0x1c, 0x80,
-  0x92, 0x56, 0x10, 0x1b, 0x9c, 0x86, 0x34, 0x76, 0xc4, 0x0c, 0x76, 0xea,
-  0x8e, 0x28, 0x28, 0xf6, 0x0a, 0x3a, 0x4b, 0x3d, 0xe2, 0x74, 0xdc, 0x40,
-  0xe0, 0x6c, 0x55, 0xc0, 0x87, 0xa5, 0x7a, 0x6a, 0x6d, 0xe9, 0xdd, 0x6b,
-  0x10, 0x35, 0xad, 0xaf, 0x37, 0x96, 0xcd, 0x51, 0xc1, 0x01, 0x66, 0x37,
-  0x3b, 0x31, 0xce, 0x40, 0x5d, 0x2e, 0xfa, 0xd3, 0x67, 0xf4, 0xd3, 0x81,
-  0xb7, 0x7b, 0x1e, 0xa8, 0xc4, 0xdf, 0xe7, 0x60, 0x25, 0x56, 0xb6, 0x61,
-  0x13, 0x16, 0x3c, 0xe5, 0x63, 0x6c, 0xf2, 0x4b, 0x8a, 0x94, 0xf6, 0x6c,
-  0xc5, 0x26, 0x1e, 0x9c, 0xb7, 0x88, 0x3b, 0xca, 0x49, 0xff, 0x91, 0x57,
-  0x0d, 0x02, 0x4a, 0x76, 0x33, 0x73, 0x70, 0x7b, 0x3b, 0xc0, 0x49, 0x66,
-  0xce, 0xfb, 0x42, 0xbb, 0x30, 0x1f, 0x35, 0x34, 0x8c, 0x0b, 0x02, 0x90,
-  0x2b, 0x80, 0x53, 0x66, 0xb1, 0xbe, 0xc5, 0xe7, 0x6e, 0x9a, 0x7c, 0x12,
-  0xe5, 0x72, 0x47, 0x98, 0x2b, 0xf6, 0x20, 0x5b, 0x91, 0xd9, 0xfa, 0x11,
-  0xa1, 0x82, 0xd9, 0x75, 0x36, 0x38, 0x51, 0x94, 0xfe, 0xda, 0xf4, 0x11,
-  0x42, 0x4e, 0xe3, 0xef, 0x84, 0x50, 0x50, 0xb4, 0x3e, 0xc0, 0xf5, 0x0f,
-  0x2b, 0xf8, 0x00, 0xcd, 0xc4, 0xbc, 0xfb, 0xfb, 0x26, 0x5c, 0x37, 0xe9,
-  0xbd, 0xb9, 0x31, 0xd8, 0x1c, 0x6c, 0x0d, 0xb6, 0x9f, 0xc2, 0x68, 0xf6,
-  0x88, 0x2d, 0x66, 0x34, 0xfd, 0xd8, 0xbf, 0x07, 0xa3, 0x3d, 0xfb, 0x4d,
-  0x18, 0xed, 0xd9, 0xbf, 0x0d, 0xa3, 0x3d, 0xfb, 0x37, 0x63, 0x34, 0xa1,
-  0xf7, 0x56, 0xb2, 0xb1, 0xb3, 0xb7, 0x93, 0xee, 0x6c, 0xed, 0xed, 0xed,
-  0x3e, 0xdb, 0xfc, 0x35, 0xd9, 0x6d, 0xc7, 0x63, 0xb7, 0x67, 0xff, 0x2e,
-  0xec, 0x26, 0x86, 0xbf, 0x61, 0xb6, 0xd4, 0x63, 0xb7, 0xa1, 0xe4, 0x72,
-  0x6a, 0xb3, 0x0c, 0x64, 0x0c, 0x7d, 0x8b, 0x53, 0x05, 0xa4, 0xa8, 0x51,
-  0x6b, 0x9b, 0xdc, 0x5e, 0x43, 0x1d, 0x3d, 0xa7, 0x0d, 0xe0, 0x80, 0x0e,
-  0x7a, 0x7c, 0x16, 0x99, 0x09, 0x38, 0x5c, 0x63, 0xc1, 0xd0, 0xc9, 0xfe,
-  0x09, 0x86, 0x0d, 0x61, 0x8d, 0x67, 0xb8, 0x7e, 0xae, 0x83, 0xaa, 0x2c,
-  0xd8, 0x59, 0x08, 0xf1, 0x1c, 0x08, 0xb7, 0xb7, 0x8f, 0xe4, 0x8a, 0xf9,
-  0xf1, 0x2f, 0x82, 0x08, 0x37, 0x69, 0x02, 0xb7, 0xb1, 0x9d, 0xd2, 0xbf,
-  0x03, 0x9b, 0x2a, 0xc5, 0x37, 0x5f, 0x6e, 0x0d, 0x36, 0x9f, 0xbd, 0x40,
-  0x5c, 0xb2, 0xbe, 0xfd, 0xfb, 0xd6, 0x72, 0xa1, 0x95, 0x36, 0xbb, 0x4a,
-  0x20, 0xa5, 0xc9, 0xac, 0xcd, 0xef, 0x86, 0xe4, 0x06, 0xf1, 0xaa, 0xc9,
-  0x23, 0x71, 0x18, 0x75, 0x21, 0x9f, 0x02, 0xa3, 0x12, 0x67, 0xb6, 0xf1,
-  0xe1, 0x16, 0xf0, 0x69, 0x71, 0xbd, 0xa0, 0xfb, 0xef, 0x90, 0xfc, 0xb8,
-  0x55, 0xab, 0x61, 0x2b, 0xda, 0xcc, 0x06, 0xc9, 0xef, 0x55, 0xf1, 0x86,
-  0xa4, 0x66, 0x8c, 0x4e, 0xcc, 0x98, 0x3a, 0x63, 0x2e, 0xaf, 0xf9, 0x34,
-  0x27, 0x21, 0x3f, 0x71, 0x15, 0x57, 0xf8, 0xb7, 0xc2, 0x1c, 0x2f, 0x2b,
-  0x3c, 0x60, 0x24, 0xd3, 0xf2, 0xb8, 0x51, 0xc3, 0xf0, 0xcc, 0xa7, 0x84,
-  0x3e, 0xd8, 0x45, 0x86, 0x66, 0x68, 0xe0, 0x37, 0xa1, 0x83, 0x19, 0xfd,
-  0xd7, 0x26, 0x02, 0x22, 0x92, 0x3d, 0xb4, 0x7e, 0xfc, 0xda, 0x3e, 0x58,
-  0x2c, 0xe1, 0x26, 0x13, 0x8c, 0x98, 0xc0, 0xea, 0x74, 0x73, 0xa5, 0x78,
-  0x71, 0x16, 0x6f, 0xd6, 0x9c, 0x78, 0x0f, 0x25, 0x51, 0x50, 0x1f, 0x63,
-  0xc4, 0xb2, 0x0b, 0x40, 0x19, 0x52, 0xf7, 0x04, 0xb7, 0x6c, 0xd3, 0x49,
-  0x49, 0x51, 0x7b, 0x93, 0xc2, 0x08, 0x32, 0x44, 0x19, 0x4d, 0x53, 0x74,
-  0x29, 0x64, 0xd5, 0x34, 0x74, 0x2d, 0xa2, 0x99, 0xa5, 0x8a, 0x3a, 0x4d,
-  0xc9, 0xc7, 0x86, 0x47, 0xa0, 0x61, 0xee, 0xf9, 0xa3, 0xd9, 0x14, 0x7c,
-  0xc0, 0x14, 0x3d, 0x0a, 0x77, 0x11, 0xfe, 0x5e, 0x5a, 0x10, 0x3c, 0xcd,
-  0x49, 0xa7, 0x54, 0xed, 0xb6, 0xcb, 0x03, 0xf6, 0xdb, 0x62, 0x2b, 0xd0,
-  0x4c, 0x31, 0x2b, 0x61, 0x3e, 0xab, 0xa8, 0x88, 0x94, 0x01, 0x81, 0xd9,
-  0xb5, 0x4f, 0x5f, 0x05, 0xb1, 0xfc, 0xa6, 0xb8, 0x4d, 0x6f, 0x3a, 0x20,
-  0xf4, 0x1b, 0x0d, 0xcc, 0x1a, 0xbd, 0x9c, 0x71, 0x6e, 0x18, 0xef, 0xaf,
-  0x4c, 0x0b, 0x96, 0x2c, 0xbf, 0x4e, 0x11, 0x89, 0x40, 0x8a, 0x23, 0xc8,
-  0xd7, 0x14, 0xc8, 0xc6, 0x2d, 0x0b, 0xca, 0x2d, 0x52, 0x39, 0x0f, 0x8b,
-  0xb8, 0xc9, 0x92, 0x36, 0x97, 0x89, 0x78, 0x6a, 0x1e, 0xc0, 0xdf, 0x5d,
-  0x28, 0xff, 0xf6, 0xa7, 0xff, 0xd9, 0x56, 0x83, 0xfb, 0x5f, 0x91, 0xa7,
-  0x66, 0x3e, 0x9d, 0x09, 0xd6, 0xe2, 0x03, 0xb0, 0x6f, 0x11, 0xb9, 0x3c,
-  0xbf, 0x25, 0x38, 0x08, 0xce, 0x0c, 0x11, 0x94, 0x20, 0x8d, 0x0d, 0x18,
-  0x54, 0x14, 0xc9, 0xba, 0xea, 0xec, 0xb1, 0xc1, 0x40, 0x23, 0x06, 0x57,
-  0x4d, 0x5f, 0x93, 0x8e, 0xd1, 0xdc, 0xed, 0xbb, 0xe9, 0x45, 0x6d, 0x7a,
-  0xf0, 0xc2, 0xc8, 0x05, 0x08, 0xaa, 0x45, 0xc0, 0xa3, 0xc1, 0x2e, 0x09,
-  0x0d, 0xb4, 0x04, 0x2e, 0x84, 0xbf, 0x4e, 0x5d, 0x78, 0x43, 0xd3, 0x6d,
-  0x88, 0xd3, 0x32, 0x38, 0x54, 0x02, 0x2c, 0x25, 0xc5, 0xa3, 0x6d, 0xf4,
-  0x1c, 0x8a, 0x3b, 0xf6, 0x64, 0xea, 0x3d, 0xe9, 0xdc, 0x32, 0x97, 0x46,
-  0x6d, 0x09, 0x92, 0x85, 0x1a, 0x86, 0xfc, 0xee, 0x5c, 0xe5, 0x6c, 0x2f,
-  0xb7, 0x08, 0x5c, 0xba, 0xda, 0xd4, 0x01, 0x91, 0x70, 0x45, 0x67, 0x7a,
-  0xc5, 0xb9, 0xa1, 0x8b, 0x0a, 0x82, 0x5b, 0xbd, 0x29, 0xa8, 0x1f, 0x64,
-  0x64, 0xba, 0x53, 0x90, 0x73, 0x1c, 0x8f, 0xec, 0xec, 0x3e, 0xfa, 0x3a,
-  0x41, 0x72, 0x91, 0x6b, 0x24, 0x49, 0xa7, 0x5e, 0xb0, 0xb0, 0x2a, 0x30,
-  0x88, 0x2f, 0xae, 0x0a, 0xfa, 0xbb, 0x5b, 0xb5, 0x5f, 0xa5, 0x4c, 0x6e,
-  0xcc, 0xd2, 0xca, 0xc7, 0x98, 0x36, 0xa4, 0xb8, 0x73, 0xd4, 0x21, 0xd0,
-  0xaf, 0x55, 0x75, 0x6a, 0x2a, 0x97, 0x25, 0xa8, 0x59, 0xf6, 0x3a, 0x7f,
-  0x6b, 0x9d, 0xda, 0xc2, 0x2c, 0x09, 0x76, 0x4a, 0x6f, 0xc6, 0xed, 0xe4,
-  0x0f, 0x99, 0xf4, 0x7e, 0xf0, 0x04, 0x0a, 0x3d, 0xd3, 0x89, 0xa2, 0x0f,
-  0x6b, 0xe9, 0xe8, 0xa8, 0xbc, 0x9f, 0xa1, 0xbb, 0x9d, 0x5f, 0x96, 0x5b,
-  0x08, 0xd7, 0xcd, 0x35, 0x8c, 0x0b, 0xa1, 0x0d, 0x3f, 0x54, 0x4e, 0xa7,
-  0x54, 0x52, 0x9d, 0x31, 0xce, 0x83, 0x2d, 0x0f, 0xc1, 0xbe, 0x52, 0x55,
-  0x1a, 0x15, 0xae, 0x31, 0x7b, 0xe9, 0x0c, 0xce, 0x41, 0x3b, 0x48, 0x45,
-  0x23, 0x54, 0xad, 0xbe, 0xd7, 0x92, 0x14, 0x12, 0xad, 0x52, 0x50, 0x5c,
-  0x21, 0xe5, 0x30, 0x2b, 0x61, 0x4d, 0xb5, 0x7a, 0x79, 0xd1, 0xd3, 0xc1,
-  0x49, 0xc3, 0xb6, 0xf5, 0xb8, 0x8e, 0xa7, 0x70, 0xe9, 0xfd, 0xe2, 0xc5,
-  0x5d, 0x4e, 0x92, 0x1b, 0xa0, 0xc9, 0x93, 0xaa, 0x40, 0xb5, 0xce, 0x9a,
-  0xea, 0x49, 0x1b, 0x1b, 0x56, 0x27, 0x57, 0xb1, 0x40, 0x0c, 0x77, 0x1c,
-  0x03, 0xa7, 0x1a, 0x4a, 0x4e, 0x3c, 0xe3, 0x1e, 0x52, 0xe9, 0x8a, 0x09,
-  0x67, 0x92, 0x78, 0xd5, 0x24, 0x5c, 0x81, 0x7d, 0x46, 0xe9, 0xe9, 0xa5,
-  0x47, 0x50, 0x4d, 0xf6, 0xd1, 0x79, 0x72, 0xc5, 0x4e, 0x6e, 0x93, 0x91,
-  0xee, 0x20, 0x5b, 0x62, 0x57, 0x94, 0x34, 0xe7, 0x6e, 0x39, 0x40, 0x04,
-  0x38, 0xf4, 0x53, 0x10, 0x3a, 0xf1, 0x3b, 0x20, 0x7b, 0xec, 0x81, 0xd3,
-  0x63, 0xc4, 0x41, 0xa4, 0x83, 0xd5, 0x44, 0x04, 0xe5, 0x0c, 0x3f, 0x33,
-  0x08, 0xe1, 0x8a, 0x8f, 0x8a, 0x52, 0xc0, 0xbd, 0x31, 0x6f, 0x1c, 0xa4,
-  0x15, 0x25, 0xcb, 0x57, 0x06, 0x45, 0xb5, 0x99, 0x6b, 0xcc, 0x49, 0xf2,
-  0xda, 0xbd, 0xc8, 0x43, 0xd1, 0x98, 0x30, 0xd0, 0x93, 0x18, 0xf3, 0x82,
-  0xad, 0xc4, 0x15, 0x41, 0x52, 0x3d, 0x5c, 0x65, 0x66, 0x36, 0xd1, 0x81,
-  0x2b, 0xe3, 0xfd, 0x8c, 0x08, 0xd8, 0x88, 0xca, 0x76, 0x60, 0xa6, 0x07,
-  0x83, 0xab, 0xf8, 0x20, 0xd9, 0xae, 0xb2, 0x25, 0xb2, 0x93, 0x28, 0xb6,
-  0x19, 0x11, 0x16, 0xa3, 0x12, 0xfc, 0x2f, 0x9c, 0x02, 0xd1, 0x5b, 0xf2,
-  0x11, 0x09, 0x52, 0xdd, 0x8b, 0x9d, 0xd3, 0xc5, 0xd1, 0x17, 0x2b, 0x9d,
-  0xeb, 0x66, 0xe6, 0x9a, 0x62, 0x62, 0x33, 0x45, 0x94, 0x53, 0xdc, 0x6e,
-  0xe9, 0x74, 0x55, 0xb4, 0x39, 0x1a, 0xbf, 0xc7, 0x05, 0xa7, 0xf3, 0x0b,
-  0xee, 0xec, 0x60, 0x90, 0xd4, 0x97, 0x66, 0x7f, 0x97, 0x45, 0xf1, 0x1f,
-  0x4f, 0x40, 0x1b, 0xb0, 0xc4, 0xa1, 0x83, 0xf0, 0x33, 0xde, 0x07, 0x78,
-  0x14, 0x31, 0x40, 0xd1, 0x6c, 0xfb, 0x47, 0xb6, 0x63, 0xfb, 0x80, 0xd0,
-  0x9b, 0x8f, 0x3d, 0x1d, 0xf8, 0x70, 0xc5, 0x79, 0xe1, 0x70, 0x24, 0x88,
-  0x12, 0x9a, 0xc3, 0xdd, 0xe0, 0x28, 0x10, 0x35, 0x07, 0x79, 0x88, 0x6e,
-  0xda, 0xc1, 0x69, 0x44, 0x9d, 0x49, 0xaf, 0x70, 0xbb, 0x26, 0x64, 0xf0,
-  0x0b, 0x9f, 0xf7, 0x4d, 0xef, 0x56, 0xce, 0xce, 0xd4, 0xda, 0xde, 0xae,
-  0x5d, 0xed, 0xc0, 0x1c, 0xe4, 0x3d, 0xaa, 0x38, 0xf3, 0xa8, 0x51, 0xb0,
-  0xda, 0x6f, 0x2a, 0x22, 0x84, 0x58, 0xd5, 0x81, 0x07, 0xf4, 0x98, 0xbd,
-  0x23, 0xea, 0xd1, 0x89, 0xfc, 0x05, 0x9b, 0x27, 0x0c, 0xb0, 0x78, 0xaf,
-  0xa8, 0x5c, 0x63, 0x73, 0x63, 0xc3, 0xb6, 0xb7, 0xe8, 0xe8, 0x69, 0x21,
-  0xdb, 0xa6, 0xad, 0x2d, 0xe8, 0x66, 0xc8, 0x72, 0xd3, 0xd7, 0xc2, 0xd8,
-  0x17, 0xb6, 0xab, 0x05, 0x81, 0x01, 0x27, 0x19, 0xcb, 0xb6, 0x76, 0x78,
-  0x09, 0x3f, 0x69, 0x3a, 0x4c, 0x58, 0x35, 0x8c, 0xdd, 0x8d, 0xdc, 0x85,
-  0x84, 0x7a, 0x5c, 0x00, 0x59, 0x8f, 0x68, 0x8e, 0xd5, 0x5e, 0xe3, 0x9d,
-  0xb6, 0x9d, 0xc5, 0xe2, 0x2c, 0xe3, 0xa6, 0x4f, 0x7a, 0x6c, 0xa2, 0xaf,
-  0xee, 0x6d, 0x44, 0x8f, 0x62, 0x32, 0x9c, 0x75, 0x41, 0xb3, 0x62, 0x30,
-  0x1f, 0x9e, 0xff, 0x20, 0x04, 0x94, 0xb3, 0xb8, 0x6f, 0xc5, 0x7f, 0x38,
-  0x58, 0x42, 0xb0, 0x53, 0x60, 0x0c, 0xe1, 0xa8, 0x84, 0x34, 0xef, 0x95,
-  0xf2, 0x34, 0xfb, 0x69, 0x98, 0x16, 0x82, 0x76, 0xd9, 0xd7, 0xe8, 0xe2,
-  0x48, 0x09, 0x2a, 0x96, 0x35, 0xe1, 0xa5, 0xb9, 0xc6, 0xdb, 0xc7, 0xad,
-  0xc1, 0xae, 0xc1, 0x82, 0x59, 0xb6, 0x43, 0x63, 0xa3, 0xa9, 0x45, 0xb3,
-  0x5c, 0xf5, 0x79, 0x93, 0x7f, 0x10, 0xe7, 0x36, 0x26, 0x34, 0xdb, 0xf6,
-  0x95, 0x81, 0x00, 0xb8, 0x28, 0x39, 0x28, 0xee, 0x68, 0x00, 0x8d, 0x4a,
-  0xee, 0x36, 0x2b, 0x25, 0x42, 0x6a, 0x7d, 0x72, 0x97, 0xcb, 0xa0, 0xf2,
-  0xde, 0xc6, 0x6a, 0x1a, 0x17, 0x0e, 0xe0, 0x9d, 0x41, 0x9f, 0x6c, 0x85,
-  0x90, 0x39, 0x86, 0xec, 0x63, 0xa4, 0xb3, 0x95, 0x5b, 0x9b, 0x44, 0x09,
-  0x86, 0xee, 0xa5, 0xa2, 0x02, 0x72, 0xd6, 0xf1, 0x85, 0x0a, 0x06, 0x76,
-  0x9f, 0x98, 0x03, 0x4e, 0x38, 0x16, 0xda, 0x33, 0x17, 0x05, 0x3d, 0x90,
-  0x36, 0x7f, 0x82, 0xe1, 0x2a, 0x78, 0x25, 0xba, 0xbf, 0x28, 0xf5, 0x4b,
-  0x49, 0x7e, 0xc2, 0x51, 0x2b, 0x53, 0x43, 0xe6, 0x77, 0xa3, 0x74, 0xe0,
-  0x71, 0xe1, 0x49, 0xec, 0x8e, 0x50, 0xcd, 0x29, 0x85, 0x88, 0x87, 0x47,
-  0x9a, 0x95, 0x53, 0xd2, 0xf5, 0xae, 0x53, 0x85, 0x11, 0xc6, 0x54, 0x01,
-  0x41, 0x0f, 0xf5, 0x54, 0x3d, 0x4c, 0x41, 0xc7, 0x9e, 0x67, 0x11, 0x6d,
-  0x0e, 0xe1, 0x11, 0xcf, 0x4b, 0x27, 0xf1, 0xbc, 0x77, 0x9d, 0xc1, 0xae,
-  0xe6, 0x3d, 0xd2, 0x1c, 0xec, 0x85, 0x23, 0x1f, 0xf5, 0x16, 0x3b, 0x9f,
-  0x38, 0xd9, 0x29, 0x9f, 0x05, 0x81, 0x8b, 0x1b, 0x49, 0x8e, 0xfd, 0xa8,
-  0x71, 0xe0, 0x2c, 0x86, 0x27, 0x4e, 0xcc, 0x22, 0x21, 0x17, 0x79, 0x67,
-  0x95, 0xbc, 0x61, 0x0e, 0x92, 0x2c, 0x38, 0x7f, 0xf2, 0xa1, 0x8c, 0x53,
-  0xaa, 0x60, 0xcb, 0x6b, 0x5b, 0x0f, 0x93, 0x4c, 0x31, 0x28, 0xca, 0x05,
-  0x32, 0x48, 0xe5, 0x20, 0x3a, 0x23, 0x6e, 0x84, 0xc0, 0xc3, 0x07, 0x5a,
-  0x73, 0x4a, 0x0d, 0x60, 0x72, 0x4f, 0x68, 0x6f, 0xe6, 0xd3, 0xc4, 0xdd,
-  0x5e, 0x0f, 0x38, 0xa0, 0xe2, 0x55, 0x41, 0x8e, 0x4a, 0xe1, 0x63, 0x24,
-  0xe1, 0xa8, 0xcc, 0x66, 0x35, 0x2b, 0x8d, 0x5d, 0x21, 0xed, 0x56, 0x30,
-  0xf7, 0x6a, 0x52, 0x5c, 0x24, 0x13, 0xc1, 0xc0, 0x94, 0x92, 0x20, 0x4d,
-  0xfa, 0x68, 0x34, 0xfe, 0x44, 0xf1, 0x89, 0xec, 0xe9, 0x07, 0xe8, 0x71,
-  0xc9, 0xf1, 0x5e, 0x9f, 0x92, 0x26, 0xef, 0x16, 0x23, 0x46, 0x9a, 0x4f,
-  0x50, 0xef, 0xbc, 0x28, 0xbe, 0xec, 0xcb, 0xe9, 0x55, 0x48, 0x59, 0x2a,
-  0xa8, 0xaa, 0x9c, 0x33, 0xe5, 0xf9, 0x81, 0x08, 0xd3, 0x7a, 0x3c, 0x4f,
-  0x9b, 0xf5, 0x55, 0x2b, 0x92, 0xff, 0x2b, 0x0e, 0x4d, 0x2a, 0xf2, 0x31,
-  0xbd, 0xe3, 0x25, 0xcf, 0x36, 0x58, 0x3c, 0x84, 0x6d, 0x36, 0xc5, 0x3d,
-  0xd5, 0x8f, 0xae, 0xd9, 0x61, 0x84, 0x33, 0x4c, 0x9d, 0xc9, 0x69, 0x99,
-  0xae, 0x43, 0xab, 0xac, 0xe2, 0xa3, 0x15, 0xfb, 0x39, 0x66, 0xa9, 0x2a,
-  0x9c, 0xbc, 0x27, 0x0b, 0x28, 0xf3, 0x80, 0x34, 0xb5, 0x52, 0x2d, 0x24,
-  0x3a, 0xcd, 0xcf, 0x60, 0x05, 0xea, 0xac, 0xe9, 0x16, 0xa7, 0x76, 0x2d,
-  0x6c, 0x50, 0xd0, 0xd8, 0xa8, 0xea, 0xc6, 0x17, 0xc5, 0xf8, 0xbe, 0xd9,
-  0x3f, 0x79, 0x2b, 0x20, 0x5c, 0xcd, 0xa3, 0x5d, 0x3d, 0x94, 0xbd, 0x13,
-  0x25, 0xae, 0x0d, 0x11, 0x45, 0xd4, 0x57, 0xc1, 0xa2, 0x46, 0x9b, 0x3b,
-  0xc7, 0x6f, 0x42, 0xcc, 0x70, 0xaa, 0xd4, 0x5c, 0x80, 0xc0, 0x7f, 0xaf,
-  0x48, 0x81, 0x29, 0xd7, 0x06, 0xd1, 0x71, 0x2e, 0x69, 0x68, 0x52, 0xda,
-  0xcd, 0x95, 0x7e, 0xb9, 0x5b, 0x22, 0x18, 0xe0, 0x95, 0x4a, 0xb2, 0xe1,
-  0xa9, 0xdd, 0x30, 0x42, 0xa5, 0x8c, 0x2c, 0x2c, 0xb3, 0x2d, 0x92, 0xe1,
-  0x5a, 0x40, 0xfd, 0x25, 0xb1, 0x91, 0x9f, 0x3d, 0x82, 0x41, 0x45, 0x4d,
-  0x6f, 0x60, 0x28, 0x53, 0xa9, 0xee, 0x50, 0xdc, 0x0c, 0x9c, 0x13, 0x37,
-  0x6b, 0x47, 0x69, 0xbb, 0x26, 0x07, 0x9a, 0x8a, 0x08, 0x02, 0xbe, 0xa3,
-  0xaa, 0xa6, 0x8b, 0xa0, 0xa1, 0xa9, 0x08, 0x7e, 0x21, 0x1d, 0x60, 0x36,
-  0x02, 0x12, 0x83, 0x9a, 0x42, 0xfe, 0x6f, 0xfa, 0x20, 0x39, 0x7a, 0x43,
-  0xc2, 0x56, 0xc8, 0xbf, 0xb5, 0x15, 0x3e, 0x85, 0xac, 0xa0, 0xd2, 0xb4,
-  0x6b, 0x4c, 0x58, 0xa1, 0x5c, 0x2f, 0xc7, 0x4a, 0x70, 0xd8, 0x44, 0x11,
-  0x9e, 0x15, 0x28, 0x3f, 0x74, 0x0a, 0x8d, 0xb5, 0x48, 0x65, 0x70, 0x59,
-  0x09, 0xc4, 0x03, 0xc2, 0x51, 0xf7, 0x55, 0x4d, 0xf3, 0x43, 0x1d, 0x00,
-  0x16, 0xd2, 0xaa, 0x7d, 0x7c, 0xd2, 0x49, 0x30, 0x2c, 0xb8, 0x9c, 0x22,
-  0x61, 0x96, 0xb4, 0xc8, 0x19, 0x6f, 0x1e, 0x0a, 0xb3, 0x37, 0xa9, 0x11,
-  0x15, 0x3a, 0x28, 0x31, 0xa5, 0x70, 0x35, 0xb7, 0xfb, 0x44, 0x5e, 0x86,
-  0x35, 0x87, 0xdf, 0x85, 0xe1, 0x25, 0xff, 0xdc, 0x4f, 0x2f, 0xa4, 0xb4,
-  0x25, 0x6c, 0x06, 0x5e, 0xb0, 0xc7, 0x44, 0xf2, 0x13, 0x55, 0x72, 0xa7,
-  0xf5, 0x88, 0x25, 0x2f, 0x65, 0x24, 0x8f, 0xd3, 0x64, 0xc2, 0x06, 0x29,
-  0xce, 0xcd, 0xc7, 0x0c, 0x67, 0x1d, 0xa2, 0x7a, 0xd4, 0xd1, 0x08, 0x1c,
-  0x86, 0x76, 0x12, 0x9a, 0x39, 0x1a, 0xd4, 0xc9, 0x45, 0x0f, 0x47, 0xe7,
-  0xe9, 0xc0, 0xf3, 0x20, 0xc7, 0x81, 0x4e, 0x43, 0x08, 0x82, 0xfc, 0x91,
-  0x27, 0x43, 0xcb, 0x2c, 0xf4, 0xbe, 0x46, 0x83, 0xb7, 0x6d, 0xae, 0x13,
-  0xc5, 0xa5, 0xb9, 0xaa, 0xa0, 0x36, 0xcb, 0x45, 0xfe, 0x00, 0xd3, 0x4f,
-  0x53, 0xe0, 0xc3, 0xb1, 0x0a, 0x71, 0xe2, 0xa5, 0x2a, 0xb9, 0x4c, 0xb5,
-  0xe3, 0xb5, 0xe8, 0x47, 0xc5, 0x08, 0x48, 0x47, 0x51, 0x0a, 0x96, 0x55,
-  0x79, 0x00, 0xcb, 0x8f, 0xd5, 0x12, 0x54, 0x43, 0x8c, 0xce, 0x8c, 0x12,
-  0x4b, 0xf4, 0x99, 0x6a, 0x92, 0xcd, 0x34, 0xa1, 0xaa, 0x1f, 0xa5, 0x52,
-  0x09, 0x87, 0xbd, 0x76, 0x69, 0x37, 0xe6, 0xb1, 0xaf, 0x6c, 0x99, 0x12,
-  0x15, 0xed, 0xfe, 0x39, 0x41, 0xef, 0xed, 0x6a, 0x6b, 0xf4, 0x9d, 0x8d,
-  0x4d, 0x9a, 0xec, 0xce, 0xc6, 0xf3, 0xb5, 0xa7, 0x1c, 0x9d, 0x65, 0xf1,
-  0x4f, 0x9b, 0x77, 0x43, 0xe3, 0x2a, 0x98, 0x54, 0x69, 0x4c, 0xd5, 0x9b,
-  0x61, 0x1f, 0xe1, 0x79, 0x2b, 0xdf, 0x8f, 0xfc, 0x81, 0xf8, 0x92, 0x94,
-  0x7c, 0x0a, 0x84, 0x1f, 0x8a, 0x02, 0x78, 0x81, 0x90, 0xe3, 0xab, 0x6b,
-  0xec, 0x2b, 0xe8, 0xe9, 0xed, 0xf6, 0x1d, 0xae, 0x9a, 0xc2, 0x8b, 0x81,
-  0x37, 0x26, 0xa1, 0x57, 0x19, 0x22, 0x4e, 0x08, 0x4f, 0xcf, 0xa9, 0xe7,
-  0x29, 0x80, 0x3a, 0x60, 0xbb, 0x96, 0x49, 0x81, 0xa7, 0xa4, 0x24, 0x53,
-  0xdc, 0xe7, 0xde, 0xf8, 0x9e, 0x54, 0x93, 0x78, 0x9d, 0xe5, 0x59, 0x75,
-  0x8d, 0x55, 0xbf, 0x98, 0x83, 0x7b, 0x95, 0xfa, 0x0d, 0xad, 0x41, 0xc5,
-  0x10, 0xa9, 0x06, 0xd6, 0x3b, 0x35, 0x6c, 0xc7, 0x0a, 0x4a, 0xde, 0x68,
-  0xc1, 0xaa, 0xe1, 0x5f, 0x72, 0x9b, 0x2d, 0xbb, 0xcc, 0x10, 0x83, 0x66,
-  0x24, 0x61, 0x4b, 0x16, 0x2e, 0x5c, 0x8c, 0x86, 0xbb, 0x84, 0x47, 0xcd,
-  0x42, 0x82, 0xbc, 0x1b, 0x0e, 0x89, 0x07, 0x86, 0x1c, 0x46, 0x8a, 0xce,
-  0x51, 0x43, 0xf2, 0xd6, 0x89, 0x31, 0xe9, 0x55, 0xe4, 0xa6, 0xd3, 0x21,
-  0x08, 0xb9, 0x0d, 0xbc, 0x40, 0xd1, 0x03, 0x51, 0x52, 0x2d, 0x2c, 0xfc,
-  0xec, 0x3b, 0xcc, 0x40, 0x7a, 0x69, 0x7e, 0xbc, 0x46, 0xd0, 0xd9, 0x58,
-  0xa4, 0xbf, 0x3c, 0x5b, 0x19, 0x4e, 0x58, 0x92, 0xbb, 0xea, 0xd1, 0x0c,
-  0xde, 0x46, 0x5b, 0x15, 0x5b, 0xd5, 0xb8, 0x46, 0x5d, 0x5b, 0xef, 0xc0,
-  0xd2, 0xf7, 0x34, 0x04, 0x4d, 0x6e, 0x72, 0x4c, 0x1b, 0xf8, 0x91, 0x54,
-  0x7d, 0x6f, 0xda, 0xc4, 0x83, 0x4e, 0xca, 0x16, 0x1a, 0xce, 0xd0, 0x96,
-  0x85, 0x57, 0x01, 0xa3, 0x87, 0x11, 0x77, 0x05, 0x31, 0x5c, 0x1b, 0x7f,
-  0xf3, 0x97, 0xf1, 0x47, 0x4e, 0xc4, 0x14, 0xb6, 0x76, 0x84, 0xa5, 0xfb,
-  0x9d, 0x08, 0x44, 0x0f, 0x51, 0xcd, 0x2e, 0x49, 0x0b, 0x37, 0x57, 0x68,
-  0x5a, 0x3f, 0x98, 0xfa, 0xd4, 0x15, 0xfc, 0xc9, 0x24, 0xfd, 0xfc, 0x4b,
-  0x2c, 0xd9, 0xec, 0xa1, 0x31, 0xb3, 0xb2, 0x1c, 0x81, 0x2d, 0x28, 0x80,
-  0x4b, 0xdc, 0x17, 0x9b, 0x01, 0xe2, 0x4a, 0xbe, 0x25, 0x39, 0xfd, 0x3f,
-  0xe7, 0x7f, 0x84, 0xa3, 0x6f, 0x04, 0x0b, 0x7b, 0xfc, 0xf6, 0x00, 0xdb,
-  0x2f, 0x59, 0x70, 0x27, 0xa7, 0xfc, 0x54, 0xd1, 0xe6, 0xdc, 0x64, 0x1f,
-  0x72, 0x50, 0x04, 0x3b, 0xfe, 0x49, 0x6c, 0x84, 0x8b, 0xdd, 0xa8, 0x86,
-  0xba, 0x81, 0x85, 0x49, 0x46, 0xf6, 0x24, 0xab, 0x31, 0x28, 0x35, 0x01,
-  0xdd, 0xf4, 0x04, 0xa8, 0x8f, 0x6f, 0xad, 0x7c, 0xd9, 0xae, 0xb1, 0xc6,
-  0x03, 0xb1, 0xb2, 0xbf, 0x62, 0xcb, 0x92, 0xab, 0xbe, 0x4a, 0xf5, 0x68,
-  0xe5, 0xcf, 0x08, 0xb0, 0x80, 0xed, 0x39, 0xf8, 0x9b, 0x72, 0x8e, 0x18,
-  0x2c, 0x40, 0xd2, 0xf0, 0x3b, 0x00, 0xbf, 0xa4, 0x67, 0x60, 0xb3, 0x56,
-  0x8f, 0xa1, 0xf3, 0xa9, 0xd1, 0x6d, 0x73, 0xed, 0x6a, 0x65, 0xaf, 0x78,
-  0xd8, 0x75, 0xf9, 0xbd, 0x84, 0x1e, 0x32, 0xaa, 0x35, 0xb2, 0x0e, 0x6a,
-  0x9e, 0x11, 0x4f, 0x85, 0xda, 0x24, 0x26, 0xa3, 0x11, 0xe1, 0x7e, 0xd2,
-  0x75, 0x81, 0xb2, 0xe4, 0xea, 0x2a, 0x58, 0x50, 0x08, 0x24, 0xc0, 0xc3,
-  0x8b, 0x6b, 0xbe, 0x04, 0xb5, 0x98, 0xac, 0x40, 0xb4, 0xbe, 0xba, 0x91,
-  0x20, 0x1e, 0xc3, 0x91, 0x32, 0x9f, 0x1e, 0xca, 0xc6, 0xde, 0x53, 0xb9,
-  0xcd, 0x32, 0x97, 0x25, 0xcd, 0xbe, 0x8b, 0x59, 0x14, 0x66, 0x2d, 0xe6,
-  0x2d, 0x61, 0x2e, 0xf4, 0xf0, 0xd3, 0x4f, 0x4d, 0x58, 0xf7, 0x32, 0x01,
-  0x76, 0xbb, 0x97, 0x42, 0x8a, 0x09, 0xa2, 0xcc, 0x88, 0x57, 0xce, 0xbb,
-  0x4d, 0x27, 0x14, 0x87, 0x15, 0x80, 0x8f, 0x18, 0x36, 0x8c, 0x37, 0x27,
-  0x17, 0x4d, 0x56, 0x10, 0x41, 0xc8, 0xc7, 0x25, 0x50, 0x1f, 0x63, 0x2d,
-  0xde, 0x20, 0xb0, 0x8f, 0x76, 0x90, 0x55, 0xa0, 0x3f, 0x44, 0x87, 0x10,
-  0xbb, 0xd4, 0xde, 0x6c, 0x04, 0x5e, 0x42, 0x97, 0x89, 0x0d, 0x5e, 0xb8,
-  0x78, 0x7f, 0xed, 0xb0, 0x92, 0xca, 0xa2, 0x75, 0xa2, 0x38, 0x23, 0xac,
-  0xb4, 0xe1, 0x69, 0xb7, 0xb6, 0x5f, 0xbc, 0x08, 0x46, 0x3d, 0x18, 0x96,
-  0x19, 0x18, 0x1b, 0xc9, 0xe4, 0xe1, 0x7c, 0xb3, 0x2d, 0x4a, 0x5c, 0x5b,
-  0xa9, 0xaf, 0x1f, 0xbb, 0x36, 0x25, 0xf8, 0x55, 0x3f, 0xfa, 0x46, 0x12,
-  0x71, 0x8a, 0x6a, 0x81, 0x5c, 0x6f, 0x64, 0x49, 0xe3, 0x75, 0x02, 0x54,
-  0xe8, 0x50, 0xa1, 0x52, 0xa9, 0xb1, 0x15, 0x84, 0x69, 0x69, 0x0b, 0x28,
-  0x48, 0x1d, 0x2c, 0x3f, 0x41, 0x73, 0x25, 0xb0, 0x0e, 0xae, 0xb2, 0x22,
-  0x66, 0xed, 0x40, 0x4c, 0x5c, 0x89, 0x34, 0x71, 0xfc, 0x22, 0x35, 0x3d,
-  0x1b, 0xf0, 0x78, 0x65, 0x77, 0xad, 0x46, 0x2d, 0x8c, 0x89, 0x91, 0x23,
-  0x4e, 0x58, 0x76, 0x45, 0x58, 0x20, 0xad, 0xe1, 0x08, 0xd8, 0xf4, 0x2a,
-  0xad, 0x7d, 0x6c, 0x2b, 0x07, 0x1f, 0x61, 0xc1, 0xe0, 0x81, 0x23, 0x26,
-  0xc8, 0x5c, 0xfb, 0xd2, 0xeb, 0x3c, 0xbb, 0xd4, 0x53, 0x0f, 0x3a, 0xf9,
-  0x2d, 0x3a, 0x47, 0xbf, 0xe4, 0x50, 0xcb, 0xbe, 0xe9, 0xbc, 0x98, 0xab,
-  0xd8, 0xfb, 0x32, 0xd8, 0x66, 0x0c, 0x23, 0x02, 0x1c, 0x88, 0xa2, 0x4e,
-  0x57, 0x75, 0x9d, 0x8c, 0xae, 0xed, 0xbd, 0x4e, 0x90, 0x1b, 0xa6, 0xf9,
-  0x8f, 0xd0, 0x97, 0xbc, 0x21, 0x93, 0x50, 0x7f, 0xd3, 0x7d, 0x13, 0xc3,
-  0xc3, 0x6a, 0x62, 0x81, 0x3a, 0xc1, 0xf9, 0x84, 0x28, 0x51, 0x89, 0x85,
-  0x86, 0x62, 0x07, 0x9e, 0xf6, 0xae, 0x3d, 0x7c, 0xd7, 0xa1, 0x93, 0xbf,
-  0xf7, 0xb6, 0x8c, 0xc0, 0x76, 0xab, 0x61, 0x1a, 0xdb, 0xa6, 0x37, 0xee,
-  0xfd, 0x98, 0x98, 0x30, 0x60, 0x08, 0xb6, 0x3e, 0xc6, 0x75, 0x5a, 0x94,
-  0x53, 0xe2, 0xac, 0xab, 0x22, 0xe5, 0x59, 0x52, 0xab, 0x0e, 0x26, 0xed,
-  0x3e, 0xa5, 0x3e, 0xd4, 0xe5, 0x1c, 0x01, 0xaa, 0xd9, 0xff, 0x4a, 0x5f,
-  0xf2, 0x8d, 0x29, 0xbc, 0x29, 0xfa, 0xcd, 0x15, 0x67, 0x68, 0x7b, 0xd2,
-  0x9e, 0x11, 0x89, 0xa5, 0x27, 0x1f, 0x3b, 0xf3, 0xa4, 0x4f, 0x24, 0xdb,
-  0x40, 0x81, 0x46, 0xbe, 0xe4, 0xd9, 0x44, 0xcf, 0x7d, 0x95, 0xfd, 0xcc,
-  0xe6, 0x81, 0xe0, 0x0a, 0x68, 0x04, 0x99, 0x7c, 0xe5, 0x29, 0x06, 0x9e,
-  0x5e, 0x01, 0x43, 0x71, 0xc1, 0x0a, 0x03, 0xfb, 0x79, 0xc2, 0xdf, 0x05,
-  0x0b, 0xe1, 0x3b, 0x0e, 0x0d, 0x8a, 0x32, 0xbd, 0x9a, 0xe3, 0xed, 0x49,
-  0x64, 0x5a, 0xd5, 0xa6, 0xab, 0xfa, 0xc4, 0x2c, 0x9b, 0x69, 0x35, 0x8a,
-  0x57, 0xa4, 0x07, 0x6f, 0xad, 0xd1, 0x92, 0x73, 0xa0, 0x56, 0x3d, 0xcf,
-  0x39, 0xc1, 0x88, 0xba, 0xce, 0xcc, 0x2f, 0x7e, 0xa2, 0xc0, 0x7c, 0x21,
-  0x2b, 0xa7, 0x69, 0xe5, 0x16, 0x60, 0x26, 0x4a, 0x2f, 0x3d, 0x37, 0x55,
-  0x4a, 0x75, 0x5e, 0x78, 0xd9, 0x70, 0xc5, 0x52, 0xad, 0x12, 0x80, 0x81,
-  0xb4, 0xd1, 0xe9, 0xfe, 0x67, 0x27, 0xdd, 0x8a, 0xd4, 0x58, 0xa2, 0x0a,
-  0x4d, 0xa1, 0x3d, 0x1c, 0x35, 0x24, 0x54, 0xa5, 0x5a, 0xea, 0x65, 0xd9,
-  0x77, 0x49, 0x1a, 0x22, 0xf6, 0xb4, 0xc1, 0xa5, 0x8e, 0x05, 0xd7, 0x96,
-  0x02, 0x57, 0xb0, 0x6e, 0x82, 0x99, 0x81, 0xfd, 0xba, 0x0f, 0x61, 0x3e,
-  0xb1, 0x7d, 0xf7, 0x93, 0xf1, 0x6d, 0xa2, 0xe8, 0xeb, 0xbc, 0xdd, 0xb8,
-  0xc4, 0x05, 0x0b, 0x46, 0xa6, 0x22, 0xd0, 0x9a, 0xc6, 0x6f, 0x5f, 0x6c,
-  0x87, 0x15, 0x90, 0x9d, 0x48, 0xfb, 0x15, 0x11, 0x9a, 0xa1, 0xa6, 0x6f,
-  0x06, 0x82, 0xb1, 0xc4, 0x34, 0x09, 0x3c, 0x23, 0xa6, 0xd5, 0xa4, 0x11,
-  0x20, 0xa4, 0x69, 0x97, 0x09, 0xc8, 0xcb, 0x9f, 0x66, 0x57, 0xb6, 0xab,
-  0x51, 0xe0, 0xc0, 0x52, 0x4b, 0x24, 0x0f, 0xbc, 0x51, 0xae, 0xdf, 0xd7,
-  0x91, 0xcc, 0xe7, 0xf3, 0x2f, 0x1b, 0x03, 0x06, 0xae, 0xe0, 0x75, 0xc1,
-  0xf6, 0x1f, 0x5d, 0x65, 0x9d, 0x44, 0x60, 0x2a, 0x50, 0x4a, 0x9d, 0x01,
-  0x04, 0xa8, 0xae, 0x8b, 0x54, 0x76, 0x2e, 0x27, 0x67, 0xa7, 0x95, 0x1b,
-  0x9a, 0x2c, 0x15, 0x2c, 0x9f, 0xee, 0x9e, 0x32, 0xdd, 0xe9, 0xff, 0x55,
-  0x5c, 0xe7, 0xf8, 0x0f, 0x1c, 0x1e, 0x47, 0xff, 0x7c, 0x33, 0x98, 0x64,
-  0xbe, 0xbe, 0x78, 0xc3, 0x68, 0xaa, 0x78, 0x09, 0x49, 0x21, 0xb6, 0x23,
-  0xd3, 0x1a, 0xde, 0xdd, 0x01, 0x21, 0x89, 0x45, 0x7e, 0x48, 0x2b, 0x21,
-  0xf1, 0x4a, 0xbd, 0xb2, 0x9c, 0x97, 0xb9, 0xca, 0x34, 0x28, 0x0c, 0x33,
-  0x73, 0x33, 0x50, 0xff, 0x86, 0x80, 0x25, 0xd0, 0xbd, 0xf0, 0x1e, 0x86,
-  0x42, 0xef, 0x3f, 0xdf, 0xbf, 0x9e, 0x5f, 0x51, 0x1b, 0x1e, 0x8c, 0x88,
-  0xf6, 0x1e, 0xb5, 0x6a, 0x75, 0x44, 0xb3, 0xb7, 0xb0, 0x76, 0xaa, 0xb3,
-  0x08, 0x25, 0xa5, 0xa1, 0x38, 0x44, 0x16, 0xf0, 0x1e, 0xd1, 0xe6, 0x43,
-  0x82, 0x74, 0x85, 0x35, 0xdb, 0x3e, 0x13, 0x4d, 0x10, 0xa1, 0x2d, 0xea,
-  0xea, 0x82, 0x15, 0xdc, 0xa6, 0x17, 0x9f, 0x7f, 0x89, 0xe1, 0x8b, 0xbb,
-  0xc1, 0x75, 0x3d, 0x9d, 0xb0, 0x8a, 0x8c, 0x84, 0x5b, 0xc7, 0x7f, 0xf6,
-  0xa2, 0x05, 0x3a, 0x5f, 0x51, 0x76, 0x0f, 0xeb, 0x20, 0x40, 0x39, 0x43,
-  0x5e, 0x16, 0xc5, 0xc2, 0x11, 0x91, 0x2a, 0xec, 0x9f, 0x27, 0xba, 0x38,
-  0x45, 0xbb, 0x5c, 0xca, 0x6a, 0x13, 0x3d, 0x99, 0x25, 0xec, 0x05, 0xc3,
-  0x67, 0x21, 0x84, 0xaf, 0x4a, 0x19, 0x28, 0xec, 0x25, 0xd2, 0x9b, 0xe6,
-  0xf3, 0xbe, 0x02, 0x24, 0x65, 0xd5, 0x02, 0xd2, 0xa8, 0xd5, 0x25, 0x5d,
-  0x3d, 0xfe, 0x6c, 0x5e, 0xc7, 0xff, 0xc0, 0x29, 0xa6, 0x7e, 0xdf, 0x0b,
-  0x56, 0x73, 0x7c, 0x69, 0xbe, 0xb8, 0x4e, 0xc9, 0x66, 0x9a, 0x76, 0x12,
-  0xad, 0xf4, 0x59, 0x69, 0xff, 0xf3, 0x0a, 0x39, 0x9d, 0x35, 0x6b, 0xf6,
-  0xef, 0xf3, 0x42, 0x44, 0x5b, 0x34, 0x2e, 0x3c, 0x75, 0x16, 0x0b, 0x5e,
-  0xe9, 0x89, 0x8a, 0x66, 0xff, 0xe0, 0xc4, 0x7f, 0xe8, 0xd1, 0xd4, 0xfb,
-  0xf8, 0xaf, 0x1f, 0x7a, 0x76, 0xf6, 0x3f, 0xd0, 0xe6, 0xfc, 0x39, 0xcb,
-  0xff, 0x8c, 0x2b, 0xf8, 0xa1, 0xf7, 0xd4, 0x3d, 0x16, 0xab, 0xd4, 0xf9,
-  0x8a, 0xf3, 0x91, 0xc6, 0x37, 0x7a, 0x2b, 0x51, 0x37, 0x90, 0x92, 0x9b,
-  0xa3, 0x95, 0x5d, 0x1a, 0xdd, 0xc8, 0x52, 0x0d, 0xe4, 0xb2, 0x25, 0x0c,
-  0xd0, 0xc5, 0xd2, 0x01, 0x4d, 0xbb, 0x7b, 0xcf, 0x65, 0x69, 0x1f, 0x40,
-  0x1a, 0x1b, 0xf3, 0x9d, 0xb4, 0xbb, 0xcc, 0x36, 0xb0, 0x21, 0x36, 0x52,
-  0xca, 0xb3, 0x05, 0x3e, 0xf6, 0x2f, 0x1e, 0xf3, 0xba, 0x77, 0xd1, 0xfc,
-  0x15, 0xbe, 0x40, 0x96, 0x2b, 0x8d, 0x21, 0x07, 0x99, 0x50, 0xdc, 0xa5,
-  0x76, 0x91, 0xb0, 0x08, 0x72, 0x4e, 0xcf, 0xe3, 0x7b, 0xee, 0x92, 0x01,
-  0x8d, 0x82, 0xb9, 0x47, 0x55, 0x3a, 0xcd, 0x40, 0x83, 0xa7, 0xa0, 0xd3,
-  0x84, 0xcd, 0xdb, 0x75, 0x14, 0xff, 0x54, 0xd2, 0x5d, 0xcd, 0x12, 0x74,
-  0xa1, 0xa3, 0x93, 0x46, 0x2c, 0x5f, 0x5e, 0x26, 0x13, 0x66, 0x01, 0x0f,
-  0xaf, 0xe0, 0x90, 0x65, 0xf5, 0x79, 0x0f, 0x94, 0x9f, 0x3f, 0x63, 0xe0,
-  0x24, 0xcd, 0xff, 0x0c, 0x8c, 0x34, 0x87, 0xad, 0xb2, 0xa7, 0xf2, 0x2e,
-  0x9e, 0xde, 0xc3, 0xa4, 0x57, 0x1e, 0x3a, 0x99, 0x23, 0xae, 0xac, 0xd4,
-  0x34, 0xae, 0x76, 0x7e, 0x2d, 0x1f, 0x49, 0x69, 0x88, 0xc1, 0x07, 0x4e,
-  0x9f, 0xf9, 0xbc, 0xef, 0x81, 0x8d, 0x7d, 0xf2, 0x42, 0x53, 0xae, 0x58,
-  0x25, 0xfb, 0xeb, 0xf3, 0xd3, 0xbf, 0xfc, 0x59, 0x07, 0xf8, 0xa1, 0xf7,
-  0x5d, 0xcc, 0x3f, 0x25, 0x94, 0xc4, 0xbd, 0xe8, 0xf4, 0x2f, 0xcb, 0x73,
-  0xee, 0xa2, 0x0f, 0x7c, 0xc9, 0x7f, 0x21, 0x36, 0x5e, 0x34, 0x2c, 0xd5,
-  0xf5, 0xe8, 0x4b, 0xa0, 0xe7, 0xa4, 0xf7, 0x04, 0x5d, 0x43, 0x65, 0x39,
-  0xb3, 0x19, 0x82, 0xfa, 0x28, 0x30, 0x60, 0xcd, 0xc0, 0x80, 0xa4, 0x34,
-  0x5e, 0x14, 0xe4, 0x5d, 0xa8, 0xfd, 0x9e, 0xd3, 0xd4, 0xe6, 0xf6, 0xef,
-  0xc2, 0x4b, 0x94, 0xe8, 0x2e, 0x0a, 0x6e, 0x33, 0x0f, 0x59, 0xd3, 0xeb,
-  0xf4, 0x78, 0xf4, 0xe1, 0xe2, 0xc4, 0xac, 0x9e, 0x20, 0x88, 0x9b, 0x86,
-  0x8f, 0x2b, 0x56, 0xb6, 0xa8, 0x69, 0x01, 0xda, 0x4d, 0x2b, 0x7f, 0x58,
-  0xa1, 0xe1, 0x30, 0xc4, 0x4c, 0xf7, 0x1f, 0xc5, 0x2d, 0xb9, 0x9f, 0xc5,
-  0x9f, 0x43, 0xa1, 0x5c, 0xc9, 0x5e, 0x11, 0x2c, 0x85, 0xcb, 0x62, 0x32,
-  0x96, 0xa8, 0x32, 0x70, 0x38, 0xef, 0xb0, 0x9a, 0x40, 0xa8, 0x47, 0x20,
-  0x21, 0x24, 0xd2, 0x2c, 0x9f, 0x0d, 0xe5, 0x12, 0x48, 0xba, 0x89, 0x38,
-  0x5f, 0x9d, 0x0c, 0xbb, 0x84, 0xd9, 0x1c, 0x26, 0x32, 0xbd, 0x48, 0xc9,
-  0x4f, 0xa5, 0xd0, 0x75, 0xb1, 0x04, 0x1e, 0x02, 0xbe, 0x9e, 0xf6, 0x11,
-  0xa1, 0x84, 0x67, 0xc1, 0xae, 0xc3, 0x32, 0xac, 0x37, 0xa8, 0xe3, 0x99,
-  0x20, 0x97, 0x66, 0xb0, 0x53, 0x48, 0x3e, 0x09, 0x2f, 0x96, 0xce, 0xab,
-  0x6a, 0x08, 0xfe, 0xc9, 0x8a, 0xfe, 0x20, 0x81, 0x0a, 0x7d, 0x2c, 0x11,
-  0x2d, 0x4a, 0xf6, 0x6b, 0xe0, 0xbd, 0xf0, 0x9d, 0x64, 0x3c, 0xc7, 0x9b,
-  0x7b, 0xc6, 0x3a, 0x4f, 0xe4, 0xf1, 0xf0, 0xf0, 0x2e, 0xda, 0xb7, 0x26,
-  0x10, 0x55, 0x42, 0xfe, 0x05, 0xe3, 0x6f, 0x99, 0xf1, 0x7d, 0x20, 0xb1,
-  0x44, 0x9a, 0x57, 0x87, 0x3f, 0x8b, 0x88, 0x9a, 0xa6, 0x80, 0xc9, 0x78,
-  0xcd, 0xad, 0xb7, 0xd4, 0xf5, 0x0d, 0x48, 0x3e, 0x38, 0xc3, 0x6f, 0x33,
-  0xb2, 0x6e, 0xc0, 0xa4, 0x1f, 0x73, 0xe2, 0x23, 0xaf, 0xc3, 0x03, 0xef,
-  0x8b, 0xf9, 0x12, 0x17, 0xbe, 0x2a, 0xa6, 0xd8, 0xf8, 0x73, 0xbc, 0xc7,
-  0x29, 0x24, 0x84, 0x16, 0x4c, 0x60, 0xc1, 0x99, 0x0b, 0xcb, 0x60, 0x1c,
-  0x7a, 0x51, 0xb8, 0xbf, 0x98, 0x69, 0xae, 0xeb, 0x7d, 0x8a, 0x6e, 0x15,
-  0x76, 0xf2, 0xb3, 0xed, 0x21, 0x87, 0x61, 0x75, 0x45, 0xbc, 0x25, 0xf8,
-  0xb1, 0x84, 0x03, 0x61, 0xec, 0xbe, 0x4e, 0x10, 0x1f, 0x91, 0x97, 0x1f,
-  0x07, 0x54, 0x8a, 0x3d, 0x12, 0xe3, 0xe6, 0x4c, 0x30, 0x22, 0x3c, 0x01,
-  0xc2, 0xab, 0x2d, 0xcc, 0xcd, 0x2c, 0x1a, 0x28, 0xf0, 0xbe, 0xe5, 0xeb,
-  0xd0, 0x57, 0x06, 0x63, 0x83, 0xd3, 0x16, 0x04, 0x26, 0xd1, 0xca, 0xe7,
-  0x6b, 0x2b, 0xdd, 0x8d, 0xcf, 0x8c, 0xea, 0xdc, 0x04, 0x88, 0xd7, 0x0c,
-  0x92, 0x8a, 0xb0, 0x76, 0x61, 0x68, 0x72, 0x16, 0x4d, 0x31, 0x31, 0x2e,
-  0xa5, 0x9d, 0xa4, 0x3a, 0x82, 0xaa, 0x0e, 0xc1, 0xbe, 0x30, 0x0c, 0x6e,
-  0x96, 0xd3, 0xb9, 0x64, 0x40, 0x6f, 0x66, 0x6f, 0x37, 0x3e, 0xcc, 0x0d,
-  0xb4, 0xaa, 0x3d, 0x57, 0xcd, 0xf6, 0x9d, 0xe8, 0x18, 0x21, 0xc4, 0x86,
-  0xcf, 0xea, 0xe0, 0x70, 0x5c, 0x14, 0x8b, 0x74, 0xea, 0x95, 0xcf, 0x57,
-  0xf9, 0x6e, 0xb2, 0x0e, 0x32, 0xe7, 0xdb, 0x2b, 0xd1, 0x0f, 0x41, 0x94,
-  0x3c, 0x7a, 0xd1, 0x99, 0x8e, 0x30, 0xeb, 0xc2, 0xc7, 0xa3, 0x7d, 0x8c,
-  0x66, 0x7d, 0x41, 0x91, 0x4c, 0x79, 0x7e, 0x7f, 0x9d, 0x7e, 0xd4, 0xd2,
-  0x82, 0x17, 0x8e, 0x02, 0x1b, 0x44, 0x7f, 0x7e, 0x89, 0x8f, 0xab, 0x11,
-  0xb0, 0x12, 0x0d, 0x06, 0x20, 0x7e, 0xaa, 0x69, 0x1b, 0xd5, 0xc4, 0x83,
-  0x6d, 0x41, 0xbe, 0x94, 0xed, 0x57, 0x3c, 0x6a, 0x72, 0xd1, 0xa8, 0xb9,
-  0xcc, 0xbe, 0x44, 0xfe, 0x55, 0xf9, 0x39, 0x26, 0x9a, 0x9a, 0x3c, 0xf4,
-  0x28, 0x0d, 0x74, 0x65, 0x1e, 0x9b, 0x3a, 0x25, 0xf1, 0xc5, 0x21, 0x27,
-  0xbc, 0xb8, 0xc8, 0xa4, 0xef, 0x0b, 0x43, 0x78, 0x52, 0x2e, 0x2a, 0xb6,
-  0xac, 0x64, 0x00, 0x5b, 0xb8, 0xd4, 0xc3, 0x7d, 0x41, 0x28, 0xb7, 0x1a,
-  0x03, 0x8f, 0xf4, 0x7b, 0x63, 0x93, 0xc8, 0xdc, 0xe2, 0x23, 0x09, 0x7a,
-  0x98, 0x64, 0xd6, 0xe7, 0xf8, 0x1d, 0x83, 0x12, 0xef, 0xe5, 0xde, 0x49,
-  0x8b, 0xb1, 0xe8, 0x45, 0x8c, 0xcf, 0x59, 0x17, 0xbd, 0x72, 0x7b, 0x33,
-  0xef, 0xae, 0x2f, 0x6a, 0x5f, 0x4c, 0x25, 0x00, 0x01, 0x00, 0x17, 0x5c,
-  0xd9, 0x45, 0x52, 0xa5, 0xcf, 0x76, 0xf8, 0x93, 0x4c, 0xa4, 0x4a, 0x0f,
-  0xbb, 0x75, 0xa6, 0x5a, 0x1c, 0xb1, 0xc6, 0x82, 0xda, 0x1a, 0x18, 0xa1,
-  0xfc, 0xa1, 0xfa, 0x05, 0x76, 0x53, 0xcd, 0x85, 0x9e, 0x78, 0x87, 0x82,
-  0xaa, 0x78, 0x55, 0x13, 0x14, 0xce, 0xf3, 0x67, 0xce, 0xa4, 0x07, 0x0f,
-  0x18, 0xdd, 0x6d, 0xf1, 0x29, 0x6b, 0x6c, 0xaf, 0xc9, 0xb0, 0xab, 0x17,
-  0x5a, 0x46, 0xb7, 0x05, 0xf7, 0x95, 0x90, 0x45, 0x1a, 0x47, 0xe1, 0x43,
-  0x07, 0xc8, 0x3d, 0x01, 0x7f, 0x56, 0xd6, 0x69, 0x7f, 0x78, 0x21, 0x53,
-  0x3b, 0x56, 0x8f, 0xbe, 0xcf, 0x93, 0x60, 0xc6, 0x7e, 0x98, 0xaf, 0x31,
-  0x1e, 0x70, 0x39, 0x2f, 0xe9, 0xce, 0x91, 0xc7, 0x58, 0x35, 0x50, 0x5c,
-  0x1b, 0xd1, 0xc4, 0xdf, 0x1e, 0xbc, 0xfb, 0x70, 0x70, 0xf2, 0x6b, 0xf5,
-  0x14, 0x7e, 0x44, 0x68, 0xa3, 0x09, 0xfc, 0x2a, 0x3f, 0xb2, 0xf1, 0x35,
-  0xbc, 0x10, 0x9e, 0xda, 0x3f, 0xa5, 0xdf, 0x8a, 0x9e, 0x48, 0x5e, 0x95,
-  0x8d, 0xf0, 0x39, 0x10, 0x84, 0xc1, 0x1e, 0x83, 0x0e, 0x08, 0x61, 0x0b,
-  0x75, 0xfd, 0xb8, 0xaf, 0x30, 0xae, 0xf4, 0xcf, 0xf3, 0xbe, 0xc5, 0x70,
-  0x6d, 0xd7, 0xed, 0x20, 0x08, 0x12, 0xb2, 0x3e, 0xa6, 0x1e, 0x86, 0xe1,
-  0xd8, 0xb9, 0x72, 0x4e, 0xf2, 0x41, 0x9c, 0x9a, 0xb3, 0xa4, 0xfa, 0xc4,
-  0x2e, 0x91, 0x9e, 0xbe, 0xcf, 0xe1, 0x1f, 0xae, 0x1a, 0x37, 0xa8, 0x92,
-  0x81, 0x53, 0x68, 0x10, 0x1c, 0x4d, 0xbe, 0xb0, 0xc2, 0xea, 0xc8, 0x15,
-  0xdb, 0xf0, 0xf3, 0x15, 0x97, 0x5a, 0x69, 0x1a, 0x10, 0x39, 0x07, 0x87,
-  0x87, 0xdd, 0x58, 0x7a, 0xff, 0xe2, 0x72, 0x35, 0x97, 0x94, 0xbd, 0x69,
-  0x39, 0x28, 0x8b, 0x8b, 0x02, 0x4c, 0xfe, 0x65, 0xa0, 0xaa, 0x0c, 0x38,
-  0xa5, 0xb7, 0x45, 0xf6, 0x4e, 0x8b, 0xeb, 0x82, 0x61, 0x3c, 0xf7, 0x65,
-  0xdd, 0xe1, 0x1d, 0x63, 0x48, 0x72, 0x07, 0xc6, 0x54, 0xd5, 0x7a, 0x5c,
-  0xef, 0x87, 0xe1, 0xd1, 0x7b, 0xda, 0x8a, 0xb3, 0x83, 0xe1, 0xd0, 0x40,
-  0x48, 0x4a, 0x7a, 0xaa, 0x67, 0x6a, 0x52, 0x40, 0x94, 0x82, 0x58, 0x42,
-  0x68, 0xcd, 0x6a, 0x36, 0xb5, 0x68, 0x2a, 0x35, 0xcf, 0xe7, 0x53, 0x90,
-  0x15, 0xa0, 0xe2, 0x8f, 0x31, 0xf5, 0x77, 0x18, 0x2a, 0xcd, 0xa6, 0xeb,
-  0x40, 0x55, 0x47, 0xce, 0x78, 0xe2, 0x92, 0xdb, 0xd7, 0x54, 0x96, 0xcc,
-  0x3b, 0x9d, 0x68, 0x7a, 0x86, 0x53, 0x65, 0xdb, 0x0f, 0xba, 0xb2, 0x7a,
-  0xc3, 0xe3, 0xf3, 0xa3, 0xe8, 0xe0, 0xc3, 0xf9, 0x9b, 0x1e, 0x6f, 0x5e,
-  0x1b, 0x46, 0x98, 0x02, 0x0f, 0x70, 0xc2, 0x52, 0xad, 0x88, 0x51, 0xa8,
-  0xa5, 0x60, 0x92, 0x10, 0xf9, 0xfb, 0xec, 0x37, 0x9f, 0xc4, 0x02, 0x81,
-  0xad, 0xea, 0x7d, 0xd8, 0xdd, 0x2e, 0x03, 0xac, 0xf0, 0x40, 0x8f, 0x57,
-  0xe5, 0x26, 0x3a, 0xc5, 0x9d, 0xbc, 0xd1, 0xdd, 0x65, 0x5b, 0xda, 0xbe,
-  0x32, 0x3f, 0xf0, 0x8e, 0xc9, 0x19, 0x96, 0x8e, 0xca, 0x98, 0x68, 0xbc,
-  0xce, 0xe9, 0xe3, 0x02, 0xb2, 0x8d, 0x6a, 0x17, 0xf9, 0x51, 0x02, 0xed,
-  0x68, 0x6c, 0x73, 0x1e, 0x93, 0x6d, 0x42, 0xbd, 0xa5, 0x0d, 0x9a, 0xbd,
-  0xb8, 0xca, 0x39, 0x44, 0x0d, 0x93, 0x4e, 0xca, 0xb1, 0x41, 0x90, 0xf3,
-  0xf5, 0x70, 0xcd, 0x89, 0xc7, 0xaa, 0x25, 0x4a, 0xaf, 0xfb, 0x20, 0x81,
-  0x50, 0x07, 0xd7, 0xcf, 0x34, 0xfc, 0x36, 0x51, 0x22, 0x9b, 0xf7, 0x1e,
-  0xae, 0xa4, 0xa5, 0x08, 0x04, 0xba, 0x3c, 0x6c, 0x3b, 0xe9, 0xa7, 0xec,
-  0x62, 0xa3, 0x2b, 0x74, 0x67, 0x2f, 0x5a, 0xee, 0xb2, 0x4c, 0x8e, 0x27,
-  0x6a, 0x14, 0xbd, 0xa8, 0x1c, 0x21, 0xd4, 0xa1, 0x9a, 0xbf, 0x25, 0xf9,
-  0x65, 0xfb, 0xfc, 0x67, 0xf8, 0x38, 0x1f, 0x72, 0x7d, 0x38, 0xfb, 0x7b,
-  0xe5, 0x05, 0x2e, 0xda, 0x60, 0x7c, 0x10, 0x53, 0xbe, 0x9f, 0x50, 0xac,
-  0x9a, 0xe6, 0x5b, 0xd0, 0x7e, 0xb7, 0xc3, 0xc1, 0xe7, 0x67, 0xab, 0x98,
-  0x69, 0xa5, 0x8e, 0xf1, 0x73, 0x8a, 0xfc, 0xd2, 0x78, 0x01, 0xa4, 0x1a,
-  0xaf, 0xa5, 0x54, 0xc8, 0x0a, 0x70, 0x38, 0xde, 0x37, 0x81, 0xe9, 0x0e,
-  0x1e, 0xdd, 0x8e, 0x3b, 0xba, 0xcc, 0xe0, 0x12, 0x88, 0xaf, 0x0c, 0x26,
-  0xce, 0xe1, 0xb7, 0xaf, 0x22, 0xcb, 0x92, 0x9a, 0x35, 0xae, 0x05, 0xb8,
-  0xdc, 0x2e, 0xa6, 0xab, 0x31, 0x94, 0xd3, 0xe0, 0x06, 0x38, 0x7b, 0x40,
-  0xb1, 0xef, 0x71, 0x9a, 0xce, 0x4c, 0xe7, 0xf7, 0x8c, 0x40, 0x3a, 0xb2,
-  0x4a, 0x82, 0xdd, 0x53, 0x4c, 0xb1, 0x08, 0x00, 0xa9, 0x98, 0xf8, 0x2b,
-  0x66, 0x36, 0x99, 0x24, 0xab, 0xeb, 0xe2, 0x96, 0xc2, 0xec, 0x9b, 0xcf,
-  0xb7, 0x5f, 0x80, 0xc2, 0x75, 0x4f, 0xed, 0xd6, 0x2d, 0xad, 0xa8, 0x9d,
-  0x61, 0x30, 0x6d, 0xd3, 0x06, 0x1c, 0x5d, 0xb0, 0x04, 0x41, 0x97, 0x8d,
-  0x2a, 0x34, 0x09, 0xc9, 0xb1, 0x28, 0x58, 0x8b, 0x3e, 0x54, 0x39, 0xd0,
-  0x4f, 0x1d, 0xfe, 0x44, 0x2c, 0x2a, 0x3d, 0x47, 0x42, 0x71, 0xfe, 0xe8,
-  0xc0, 0x39, 0x27, 0xa0, 0xb2, 0x0f, 0x8f, 0xff, 0xd7, 0x51, 0x3f, 0x7a,
-  0x7f, 0x74, 0xfe, 0xbe, 0x1f, 0x0d, 0xcf, 0x4f, 0xdf, 0x77, 0xb4, 0x53,
-  0xaa, 0x19, 0xb5, 0x18, 0xc9, 0xa5, 0x89, 0x66, 0x7c, 0xf2, 0x1b, 0x7d,
-  0x47, 0xa8, 0xea, 0x89, 0x45, 0x6a, 0x95, 0x3e, 0x9e, 0x56, 0xc4, 0x31,
-  0x70, 0xab, 0x2e, 0x5c, 0x18, 0xef, 0xf8, 0x23, 0x98, 0x03, 0xd9, 0x10,
-  0x97, 0x6b, 0x2e, 0x30, 0x9a, 0x2d, 0x58, 0xdf, 0x18, 0xa3, 0xd1, 0x93,
-  0x7e, 0xaf, 0xa9, 0x3b, 0x1d, 0xcc, 0x21, 0x65, 0x32, 0x55, 0xa3, 0x2f,
-  0x79, 0x4f, 0x81, 0x49, 0xb1, 0xf7, 0x2e, 0xb9, 0xf9, 0x2d, 0x20, 0xfb,
-  0x03, 0xac, 0x0b, 0x1a, 0xee, 0xda, 0xc0, 0x4d, 0x8c, 0xae, 0x8a, 0x69,
-  0xca, 0xf1, 0x18, 0x72, 0xea, 0xa9, 0x08, 0xac, 0x22, 0xd3, 0x4d, 0x2e,
-  0x04, 0x0f, 0xac, 0x31, 0x19, 0xda, 0xe5, 0x95, 0x46, 0xe2, 0xb3, 0x59,
-  0xe9, 0x2c, 0xcd, 0xe1, 0x90, 0x51, 0x7b, 0x91, 0x15, 0x9d, 0xd5, 0xca,
-  0x23, 0x3a, 0x10, 0x39, 0xd2, 0x45, 0x5f, 0x0b, 0x48, 0x31, 0x20, 0xe0,
-  0x26, 0xfe, 0x67, 0x8b, 0x65, 0x58, 0xf7, 0x18, 0xcc, 0x88, 0xbf, 0x60,
-  0x00, 0xb3, 0xe1, 0x0f, 0x0f, 0xe2, 0xc3, 0xbc, 0x4f, 0xf0, 0x02, 0xc4,
-  0xc2, 0xee, 0x18, 0x8d, 0xc5, 0xb6, 0x10, 0x45, 0x20, 0xde, 0xa0, 0xe4,
-  0xc4, 0x1c, 0xac, 0x06, 0xfc, 0xaf, 0x66, 0x9d, 0x93, 0x96, 0x69, 0xab,
-  0xe9, 0x07, 0xd1, 0x99, 0x3c, 0xa5, 0x79, 0x19, 0x9e, 0xa8, 0x23, 0x31,
-  0x37, 0xb1, 0x5d, 0x81, 0x95, 0xb1, 0xfb, 0x82, 0x2c, 0xd3, 0xba, 0xbe,
-  0x5a, 0xa8, 0xb2, 0x1d, 0x18, 0xe2, 0x78, 0xe1, 0x96, 0x29, 0x0c, 0x83,
-  0x38, 0x3a, 0x0d, 0x60, 0x52, 0x6d, 0x61, 0xf3, 0x34, 0xbd, 0x56, 0xea,
-  0x93, 0xc5, 0xd9, 0x4e, 0x60, 0xbb, 0x54, 0x2a, 0x18, 0x86, 0x62, 0x8f,
-  0xa2, 0x0f, 0x39, 0xc3, 0x85, 0x53, 0x11, 0x46, 0x4e, 0x59, 0x38, 0x63,
-  0x43, 0x38, 0xec, 0x2a, 0x80, 0x79, 0xa5, 0x7c, 0xff, 0x8f, 0x0b, 0xb2,
-  0x45, 0x71, 0xd1, 0x7e, 0x73, 0x1e, 0x0a, 0x70, 0x50, 0x56, 0x8b, 0x5e,
-  0xd9, 0x32, 0x9a, 0x04, 0x53, 0xb9, 0xfe, 0xba, 0xb5, 0x52, 0x2a, 0x2b,
-  0xf6, 0x16, 0x7a, 0xe6, 0x6e, 0x9b, 0xa4, 0x27, 0x51, 0x3d, 0x83, 0x91,
-  0x76, 0x35, 0x03, 0xdc, 0x36, 0x71, 0x8a, 0x79, 0xb5, 0xc1, 0xe2, 0xb4,
-  0x5c, 0x50, 0x84, 0xe7, 0xf9, 0x04, 0x8b, 0xd2, 0x5a, 0xa8, 0xb2, 0x42,
-  0xc9, 0xa7, 0xe8, 0x0b, 0xc8, 0x7e, 0x4f, 0xc7, 0x72, 0x36, 0xfe, 0xbe,
-  0x16, 0x59, 0x3a, 0x51, 0xef, 0x58, 0xa5, 0x7b, 0x8f, 0x3b, 0x5e, 0x31,
-  0x46, 0x9a, 0xd3, 0xac, 0x3a, 0xcb, 0x33, 0x44, 0x9e, 0x2f, 0xca, 0x75,
-  0x3c, 0x2d, 0xd8, 0xa3, 0x27, 0x02, 0xd5, 0x41, 0xb3, 0xfa, 0x03, 0x49,
-  0x55, 0xaa, 0xc3, 0x93, 0x78, 0x85, 0xa1, 0x07, 0x81, 0xa2, 0x7f, 0xe9,
-  0x33, 0x69, 0x20, 0xb8, 0x69, 0x53, 0x06, 0x51, 0xa8, 0xb6, 0x43, 0x52,
-  0x9a, 0x28, 0xb9, 0xb6, 0xa9, 0x89, 0xcb, 0x69, 0xa3, 0x38, 0x99, 0xde,
-  0x33, 0xac, 0xe9, 0xaf, 0x54, 0x9d, 0x88, 0x2b, 0x42, 0x03, 0x36, 0x1d,
-  0x81, 0x2a, 0x92, 0xdc, 0xd4, 0x3c, 0xd4, 0x64, 0x8d, 0x36, 0x3f, 0x56,
-  0xa5, 0xf5, 0x7c, 0xe6, 0x2b, 0x40, 0xc7, 0x67, 0x76, 0x48, 0xe9, 0x60,
-  0x58, 0x70, 0x8a, 0x2f, 0x5e, 0xe7, 0xce, 0x24, 0x11, 0x52, 0xd5, 0x6c,
-  0x80, 0xbd, 0xe7, 0x3d, 0x14, 0x00, 0xd4, 0x90, 0x3c, 0xb5, 0xa7, 0x0b,
-  0xae, 0x53, 0x2f, 0xdf, 0xc1, 0xd5, 0x20, 0xea, 0x21, 0x64, 0x68, 0x8f,
-  0xa6, 0x2a, 0x50, 0x23, 0xd2, 0xe6, 0x43, 0xdf, 0x05, 0xa2, 0x34, 0x66,
-  0xeb, 0x1f, 0x36, 0xad, 0xcc, 0x65, 0x54, 0x66, 0xda, 0x9f, 0xd5, 0x0f,
-  0x79, 0x76, 0x47, 0x87, 0x7f, 0xed, 0x33, 0x7f, 0xe9, 0x32, 0xd6, 0xa2,
-  0x59, 0x29, 0x92, 0x1a, 0x62, 0x4d, 0x36, 0x66, 0xc7, 0xcd, 0x55, 0x61,
-  0xff, 0xdd, 0x81, 0x02, 0x48, 0x51, 0x51, 0x77, 0x93, 0x42, 0xfe, 0xc2,
-  0xf4, 0x7e, 0x80, 0xcf, 0x0d, 0xc6, 0xc5, 0x14, 0x8e, 0xbd, 0xf7, 0x8d,
-  0x29, 0x95, 0xbf, 0x7b, 0xca, 0x74, 0x6c, 0x93, 0xe2, 0x54, 0x19, 0x9a,
-  0x65, 0xc8, 0x47, 0x5a, 0x41, 0x64, 0x67, 0xc5, 0x62, 0x82, 0x3a, 0xc7,
-  0x50, 0xb3, 0x3e, 0x3a, 0xd6, 0xe1, 0x19, 0xe9, 0x6d, 0x20, 0x00, 0x4c,
-  0xce, 0x85, 0xf0, 0x6b, 0x34, 0x3e, 0x51, 0xe1, 0xfa, 0x2a, 0xb3, 0x1e,
-  0x3b, 0xf6, 0xc6, 0xaa, 0x2d, 0x4a, 0xd1, 0x25, 0x6a, 0x09, 0xd0, 0x46,
-  0x95, 0x17, 0x90, 0x6e, 0x96, 0x9b, 0x4e, 0xb9, 0xaf, 0xb4, 0x3b, 0x33,
-  0x97, 0xbf, 0xd3, 0x05, 0xc2, 0xcd, 0xa5, 0xa3, 0x31, 0x35, 0x93, 0xae,
-  0x0d, 0xfc, 0x2f, 0xaf, 0xd1, 0x4d, 0xc7, 0xb2, 0x5d, 0x87, 0xc3, 0xd7,
-  0xfe, 0xf4, 0x27, 0x2b, 0x02, 0x5b, 0x49, 0x16, 0xda, 0xf1, 0xb9, 0xb7,
-  0xf7, 0x3d, 0x45, 0x3f, 0x7e, 0x8c, 0xbf, 0x87, 0x7f, 0xfe, 0xd8, 0xd3,
-  0xd3, 0xcc, 0x0d, 0x1c, 0xc4, 0x64, 0x90, 0xdd, 0xe8, 0x3b, 0x97, 0x5f,
-  0x6d, 0x90, 0x3a, 0x49, 0x53, 0x3a, 0x3f, 0x3c, 0xe3, 0xe3, 0x57, 0x72,
-  0xc2, 0x06, 0xad, 0x0e, 0xc5, 0x0f, 0x59, 0x39, 0x28, 0xf0, 0xa5, 0xe1,
-  0x97, 0x62, 0xf1, 0x24, 0x7c, 0x5c, 0x75, 0x38, 0x7a, 0xad, 0x1f, 0xd9,
-  0x9c, 0x9c, 0x5b, 0x3e, 0xfb, 0x09, 0x68, 0xfc, 0x57, 0xe8, 0x4d, 0x64,
-  0x64, 0xc3, 0x41, 0x74, 0xa0, 0xe6, 0x05, 0xff, 0x80, 0xba, 0x3f, 0x54,
-  0x18, 0x73, 0xba, 0x85, 0x09, 0x19, 0x97, 0x07, 0x37, 0xb6, 0xe3, 0xf2,
-  0xcd, 0x5a, 0xfb, 0x0f, 0xe5, 0x68, 0xba, 0x69, 0x63, 0xbf, 0x32, 0xab,
-  0x3e, 0xe1, 0xf2, 0xa4, 0x12, 0x59, 0x52, 0xdc, 0x04, 0x22, 0x88, 0xbc,
-  0x1a, 0xd3, 0xc4, 0xd0, 0x52, 0x30, 0xbd, 0x0d, 0x16, 0xcc, 0xc3, 0x1a,
-  0xdb, 0x19, 0x70, 0x39, 0xdd, 0x22, 0xdd, 0x1d, 0x1a, 0xcf, 0x18, 0x69,
-  0xf8, 0xc1, 0xa7, 0x5c, 0x40, 0x44, 0xef, 0xe1, 0xcf, 0xc2, 0x0e, 0x07,
-  0xba, 0xc5, 0x04, 0x61, 0x2c, 0xd8, 0x27, 0x42, 0x1e, 0x2b, 0xd3, 0x7a,
-  0x41, 0x4f, 0x01, 0x93, 0x24, 0xc9, 0x49, 0x75, 0xd1, 0x19, 0x98, 0x22,
-  0x86, 0x43, 0x1d, 0x30, 0x7f, 0x06, 0xd7, 0xc1, 0xab, 0x7b, 0xad, 0x1d,
-  0xf0, 0x3a, 0x4c, 0x4b, 0x0a, 0x95, 0x5a, 0x7f, 0x23, 0x41, 0xb5, 0x64,
-  0xa8, 0xd2, 0x8c, 0x4b, 0x98, 0x03, 0xf7, 0xfe, 0x24, 0xd8, 0x45, 0x2d,
-  0xd9, 0xc6, 0xf4, 0x09, 0xd5, 0xb9, 0xbd, 0xc8, 0x84, 0x54, 0xd4, 0x53,
-  0xdd, 0x80, 0x35, 0x18, 0x08, 0x27, 0x88, 0x43, 0x20, 0xcc, 0x09, 0xf8,
-  0x27, 0x5d, 0x1a, 0x58, 0xcd, 0x7c, 0x9b, 0xa3, 0xcb, 0xb4, 0xf2, 0xad,
-  0x4d, 0x9a, 0xfc, 0x34, 0xd4, 0x07, 0xf0, 0x31, 0x9a, 0x42, 0x99, 0x2e,
-  0xd7, 0xf5, 0xa1, 0xa5, 0x29, 0xb1, 0x9b, 0xd8, 0x6b, 0x3d, 0xc1, 0x3f,
-  0xab, 0x3e, 0x65, 0xfc, 0x8b, 0x38, 0x9b, 0x3d, 0xdc, 0x60, 0x06, 0xf9,
-  0x53, 0x9b, 0x27, 0x36, 0x84, 0xa7, 0xb9, 0x46, 0xab, 0xf9, 0xd5, 0x15,
-  0x81, 0xde, 0xfa, 0xd9, 0xb3, 0x75, 0xe5, 0x00, 0x5e, 0x48, 0x23, 0x6a,
-  0xb8, 0xb0, 0x88, 0x36, 0x8d, 0x8e, 0x11, 0x23, 0x81, 0x68, 0xcf, 0x29,
-  0x9a, 0xa3, 0x9a, 0x77, 0x27, 0xaa, 0x15, 0x16, 0x23, 0xb2, 0x10, 0xb3,
-  0x6a, 0x5e, 0x99, 0xc6, 0x3a, 0xcf, 0xb6, 0xa4, 0xcf, 0x28, 0x9b, 0xc6,
-  0xeb, 0x78, 0xa8, 0x52, 0xbf, 0x5a, 0x20, 0xe0, 0x7d, 0xc4, 0x41, 0x3a,
-  0xcc, 0xf4, 0xd9, 0xe7, 0x83, 0xe7, 0x3b, 0x83, 0x8d, 0xb6, 0xdc, 0xe7,
-  0x34, 0x76, 0x4e, 0x2d, 0x62, 0x65, 0xab, 0x23, 0xdf, 0x5d, 0x5e, 0x41,
-  0x07, 0xb7, 0x69, 0xd6, 0x80, 0x91, 0x65, 0x6e, 0x8d, 0xc3, 0xbd, 0x4d,
-  0x4a, 0xd3, 0xac, 0xc1, 0xc5, 0x8c, 0x6d, 0xab, 0x17, 0x97, 0x44, 0xd1,
-  0xc1, 0xf2, 0x7c, 0xe6, 0xb2, 0xc2, 0x72, 0x9a, 0x69, 0x27, 0x73, 0x55,
-  0x93, 0x78, 0x34, 0x1a, 0xc5, 0xa4, 0x70, 0xed, 0xb3, 0x1e, 0xb8, 0x2e,
-  0x5a, 0x58, 0x58, 0x43, 0x1d, 0xa6, 0xb2, 0xe3, 0x87, 0x87, 0x87, 0xa2,
-  0x30, 0x9e, 0x5f, 0xb7, 0x34, 0x37, 0xd3, 0xfd, 0x40, 0xd4, 0xd6, 0x60,
-  0x95, 0x7d, 0x75, 0x3d, 0xaf, 0xf1, 0x40, 0xb2, 0xa5, 0xa5, 0xb7, 0x9c,
-  0x81, 0x65, 0x69, 0xb5, 0x2e, 0x2b, 0x80, 0x2b, 0xfa, 0x36, 0x85, 0xd9,
-  0x6f, 0x0a, 0x52, 0xa6, 0x0c, 0x11, 0xc9, 0x2f, 0xca, 0xd8, 0x16, 0x91,
-  0xca, 0xf5, 0x8d, 0xb9, 0x0d, 0x2d, 0x74, 0x86, 0x55, 0x28, 0xed, 0x5f,
-  0x47, 0xa1, 0xcf, 0x26, 0x99, 0xe4, 0x8b, 0x26, 0xf2, 0xad, 0xf6, 0xd8,
-  0x4f, 0x10, 0x1c, 0x0d, 0xf2, 0xcb, 0xb4, 0x1a, 0xbf, 0xc1, 0x5d, 0xae,
-  0x96, 0xdb, 0x66, 0x79, 0xb3, 0x63, 0xa7, 0xc3, 0x32, 0x1e, 0x0d, 0x6a,
-  0xda, 0xd0, 0x68, 0xf5, 0x90, 0xfa, 0x92, 0x61, 0x4f, 0x59, 0x3a, 0xee,
-  0x87, 0xd7, 0x98, 0x4a, 0x3a, 0x81, 0x7d, 0x07, 0x62, 0x54, 0x24, 0x41,
-  0x69, 0xcd, 0xc3, 0xe1, 0xc9, 0xfa, 0xf9, 0xc9, 0xd0, 0x2b, 0xb8, 0xb9,
-  0xc7, 0x30, 0x12, 0x85, 0x8b, 0x9a, 0x81, 0x0a, 0xa6, 0x3c, 0x75, 0xef,
-  0x14, 0x4d, 0xc2, 0x1c, 0x5e, 0xfe, 0x42, 0x10, 0xfc, 0x78, 0x9e, 0x9b,
-  0x22, 0x4d, 0x13, 0xc6, 0xc9, 0xd3, 0x9c, 0x30, 0xe6, 0x50, 0x09, 0xa3,
-  0x93, 0x49, 0x09, 0xf9, 0x55, 0xf4, 0xee, 0xe0, 0x1c, 0xeb, 0x2e, 0x6b,
-  0xc9, 0x48, 0xbb, 0x2c, 0x3c, 0x09, 0xa2, 0x1d, 0xf1, 0x4c, 0x47, 0x9b,
-  0x64, 0xa4, 0xad, 0xe0, 0xac, 0x0b, 0x8f, 0xb9, 0xa2, 0x52, 0x86, 0xfe,
-  0x05, 0xbb, 0x1a, 0xdc, 0xbb, 0xce, 0xad, 0x83, 0x97, 0x9c, 0x8b, 0xc0,
-  0x65, 0x8c, 0xe0, 0x4e, 0x32, 0xf1, 0x82, 0xbb, 0xf9, 0x5e, 0xee, 0x50,
-  0xd9, 0x22, 0x73, 0x9a, 0x28, 0x72, 0x30, 0x29, 0xae, 0x32, 0xc2, 0x40,
-  0xe1, 0x6d, 0xe6, 0xa2, 0x3b, 0x89, 0xba, 0x7b, 0x90, 0xc5, 0x4c, 0xd8,
-  0x48, 0x60, 0x4a, 0x5b, 0x1d, 0xf4, 0xf8, 0xdc, 0xe2, 0x0d, 0x6d, 0x36,
-  0x44, 0x9a, 0x1c, 0x2b, 0x50, 0x87, 0x8f, 0x83, 0x81, 0x62, 0x33, 0x1b,
-  0x81, 0x71, 0x38, 0xba, 0x1f, 0x30, 0x12, 0x4f, 0xd5, 0xac, 0x0d, 0xc8,
-  0x1a, 0xdd, 0xaa, 0x4c, 0x74, 0x02, 0x73, 0x93, 0x82, 0x85, 0xad, 0xb2,
-  0xc6, 0x27, 0xef, 0x92, 0xf0, 0xe0, 0x32, 0x51, 0x9c, 0x66, 0x1b, 0xc2,
-  0xaf, 0xf1, 0x26, 0xbf, 0xf2, 0x74, 0xa7, 0x6f, 0x15, 0x74, 0x6d, 0xdc,
-  0x6f, 0xf7, 0xd8, 0xb3, 0xfd, 0xdc, 0xd1, 0x07, 0x4b, 0x14, 0x73, 0x1b,
-  0x00, 0x73, 0x3b, 0xd8, 0x60, 0xef, 0xe6, 0x7e, 0xbb, 0x1d, 0x72, 0xe9,
-  0xf7, 0x0c, 0x6d, 0x20, 0x96, 0x53, 0xca, 0x1b, 0x96, 0x3c, 0xb4, 0x86,
-  0xfb, 0xfa, 0xc8, 0x69, 0xb2, 0xdd, 0x02, 0x36, 0xa7, 0x22, 0x36, 0xfd,
-  0x1d, 0x27, 0x31, 0x62, 0x0c, 0xff, 0x36, 0x03, 0x11, 0x71, 0x1b, 0xb6,
-  0x97, 0xd9, 0x20, 0x3a, 0xb7, 0x9d, 0x7b, 0xf9, 0xa4, 0xb2, 0x59, 0x91,
-  0x9a, 0xbc, 0x7d, 0x84, 0x07, 0xd6, 0xac, 0xa6, 0xff, 0xb9, 0xa2, 0x98,
-  0xb8, 0x85, 0xc7, 0x76, 0xc7, 0x97, 0x66, 0xfe, 0x5e, 0x33, 0x44, 0x1b,
-  0x07, 0xef, 0xdb, 0xd9, 0x72, 0xb6, 0x87, 0xe2, 0xf9, 0x78, 0x69, 0x14,
-  0xb4, 0xba, 0xc5, 0xf3, 0x79, 0x73, 0x74, 0xf0, 0xaa, 0x13, 0xd2, 0xee,
-  0xb7, 0x68, 0x93, 0x68, 0x9c, 0xea, 0x17, 0x29, 0xf7, 0x0b, 0x9f, 0x8b,
-  0xab, 0x2e, 0xa1, 0xcd, 0x31, 0x8c, 0xcf, 0x50, 0x86, 0x29, 0xc1, 0xf9,
-  0x85, 0x7d, 0x73, 0xe2, 0xc4, 0xe8, 0xf4, 0xce, 0xb9, 0x69, 0x5b, 0xe2,
-  0xb2, 0x45, 0xf3, 0x8b, 0x4b, 0x57, 0x97, 0x6d, 0xb6, 0x8b, 0x9c, 0xfe,
-  0xf8, 0xd6, 0xb8, 0xf4, 0xb4, 0x6d, 0xad, 0x6b, 0x3a, 0xed, 0x26, 0x57,
-  0xe9, 0xe7, 0xc5, 0x64, 0xdc, 0x5b, 0x76, 0xa4, 0xe3, 0xf6, 0x60, 0x4f,
-  0xcb, 0xd2, 0x60, 0x31, 0xfb, 0x1d, 0xfe, 0xd3, 0xdb, 0xf2, 0xf8, 0x8a,
-  0xce, 0xf3, 0xa4, 0xb8, 0x28, 0x2e, 0x2f, 0x17, 0xa4, 0xa4, 0x70, 0x77,
-  0x2c, 0xaa, 0xb4, 0xe5, 0x63, 0xd3, 0x43, 0x6e, 0xc2, 0xf7, 0x2e, 0xb8,
-  0x77, 0x5a, 0x09, 0x22, 0xac, 0x27, 0x89, 0xbc, 0x02, 0x6e, 0xed, 0x69,
-  0x18, 0x4e, 0x50, 0xf4, 0x5e, 0xb2, 0xab, 0xd5, 0x28, 0x26, 0x4c, 0x2e,
-  0x03, 0xf4, 0x92, 0x48, 0xae, 0x0c, 0xb7, 0xc2, 0x06, 0xe6, 0xfb, 0xc7,
-  0x3f, 0xbf, 0xff, 0xd1, 0x43, 0x72, 0xe3, 0x00, 0x03, 0xd6, 0x31, 0x53,
-  0x0e, 0x20, 0x85, 0x62, 0xeb, 0x2a, 0x9d, 0x5c, 0xda, 0xc6, 0xcb, 0x38,
-  0xca, 0x74, 0xc0, 0x19, 0xf7, 0x5a, 0x7a, 0x5c, 0xd1, 0xb8, 0x81, 0xd2,
-  0x37, 0x0b, 0x76, 0x2d, 0x38, 0x22, 0xd8, 0xca, 0x75, 0x42, 0xc7, 0xc6,
-  0xd4, 0xcf, 0x98, 0x76, 0x8a, 0xca, 0x87, 0x5c, 0x5c, 0x16, 0x4a, 0x4b,
-  0xc3, 0x7c, 0x50, 0xb7, 0xba, 0x95, 0x8f, 0xe0, 0xb1, 0x89, 0xa9, 0x2c,
-  0x29, 0xc3, 0x11, 0xed, 0x38, 0x50, 0x66, 0xf3, 0x8f, 0xef, 0x7f, 0xfc,
-  0x27, 0xfc, 0x5f, 0xef, 0x51, 0xbd, 0xac, 0x98, 0x13, 0xdc, 0x0e, 0x61,
-  0xee, 0x5d, 0x7b, 0x0d, 0x02, 0xe3, 0x3e, 0x4e, 0xef, 0xd3, 0x0b, 0x10,
-  0xd4, 0x95, 0x82, 0xce, 0xc5, 0xd3, 0x2a, 0xda, 0x9f, 0x82, 0xac, 0xc9,
-  0x3a, 0xe0, 0x08, 0xdf, 0xe0, 0x6b, 0x30, 0x7b, 0x79, 0xcf, 0xf4, 0x8f,
-  0xbb, 0x2a, 0x4a, 0xd8, 0xa2, 0xa9, 0x20, 0x95, 0x08, 0x4c, 0x4b, 0xd3,
-  0x39, 0x49, 0x15, 0x8f, 0x9e, 0x83, 0x0f, 0x1b, 0xd7, 0x60, 0x9d, 0xaf,
-  0xd3, 0x58, 0x44, 0x6c, 0xa0, 0x68, 0x3c, 0x07, 0x3b, 0x09, 0x08, 0x38,
-  0xfa, 0xc4, 0x6e, 0x3a, 0x8c, 0x11, 0x5c, 0x65, 0xb4, 0xff, 0xfc, 0x7c,
-  0x30, 0xc7, 0x59, 0x30, 0x1a, 0x4c, 0x2b, 0x0b, 0x73, 0xfb, 0x88, 0x23,
-  0x05, 0x71, 0x12, 0x9c, 0x05, 0x0e, 0xb4, 0x87, 0x24, 0x8e, 0xd8, 0xe1,
-  0xc8, 0x05, 0xde, 0x15, 0xcf, 0x88, 0xac, 0x86, 0xc5, 0xac, 0xa9, 0xb8,
-  0x40, 0x56, 0x03, 0xfa, 0x49, 0x7f, 0xd1, 0x44, 0x8d, 0xc3, 0x60, 0x12,
-  0x94, 0x71, 0x8c, 0x61, 0x4c, 0x37, 0x19, 0x1b, 0x54, 0x2f, 0xb7, 0x85,
-  0x0f, 0x55, 0xdf, 0x27, 0x08, 0x06, 0x90, 0x4e, 0xf8, 0xea, 0x09, 0xb5,
-  0x38, 0xb5, 0x76, 0xa1, 0xdc, 0x8b, 0x70, 0xd6, 0xb1, 0x47, 0x1e, 0x01,
-  0x79, 0x48, 0x44, 0x93, 0x30, 0x77, 0xc4, 0xb5, 0x18, 0x8c, 0x14, 0x90,
-  0xde, 0x4a, 0xae, 0x2c, 0xa0, 0x8b, 0x18, 0xcf, 0xd4, 0x3d, 0x93, 0xba,
-  0x8c, 0x31, 0xe4, 0x22, 0xbe, 0x4c, 0x49, 0x83, 0x28, 0xda, 0x5b, 0x0c,
-  0xd0, 0x1a, 0x0e, 0xa3, 0xcd, 0xd1, 0xb3, 0xdd, 0xdd, 0xdd, 0x88, 0xe3,
-  0xcd, 0x51, 0xef, 0xb8, 0xa6, 0x1b, 0xe5, 0xfd, 0xd1, 0xe1, 0xe9, 0xdb,
-  0xb7, 0x47, 0xef, 0x5e, 0x1d, 0xbd, 0x32, 0x27, 0x5f, 0x67, 0x6f, 0xd8,
-  0xc5, 0xbb, 0x7b, 0x31, 0xe9, 0x7d, 0x1c, 0x6d, 0xee, 0x6e, 0xc4, 0x5b,
-  0xbb, 0x1b, 0x11, 0xf0, 0x66, 0x62, 0x0a, 0xa9, 0x93, 0x09, 0xe2, 0x2e,
-  0x45, 0xd7, 0x73, 0x50, 0xe4, 0xb1, 0x6d, 0x57, 0x8d, 0xa0, 0x5b, 0x0a,
-  0xf6, 0x1a, 0xe5, 0x69, 0x8d, 0x0e, 0x33, 0x4f, 0x45, 0x4e, 0xc6, 0x83,
-  0x9e, 0xed, 0xc4, 0x62, 0xd3, 0x42, 0x44, 0x3f, 0x26, 0x8e, 0xdd, 0xda,
-  0xc0, 0x4f, 0x0d, 0xa2, 0xd7, 0xa0, 0x66, 0x5e, 0x16, 0x77, 0x11, 0x1b,
-  0x0a, 0x60, 0x0e, 0xa5, 0x7e, 0x3e, 0x48, 0xf3, 0x75, 0x7c, 0x7b, 0x9b,
-  0xdf, 0xfe, 0x9d, 0x53, 0xbb, 0xba, 0x4f, 0xf7, 0xee, 0xc6, 0x92, 0x4d,
-  0xbf, 0xa6, 0x28, 0x40, 0xa6, 0xc9, 0x1d, 0x83, 0x52, 0x0b, 0x3a, 0xf3,
-  0x02, 0xa8, 0xca, 0xdd, 0x97, 0x4d, 0xe0, 0x0d, 0x98, 0x0a, 0x35, 0x2d,
-  0xd6, 0x22, 0xfe, 0x30, 0xb4, 0xc9, 0x90, 0x3d, 0x6f, 0x6f, 0x0e, 0xce,
-  0xf0, 0xe1, 0xe8, 0xec, 0xfd, 0xe9, 0x77, 0x7f, 0xb3, 0xa0, 0x08, 0x37,
-  0x9b, 0x5a, 0x28, 0x20, 0x80, 0x12, 0x40, 0x17, 0xd0, 0xf4, 0x73, 0x3f,
-  0xbd, 0xca, 0xa0, 0x13, 0xba, 0xfe, 0x19, 0x55, 0x47, 0x88, 0xe4, 0x58,
-  0xdf, 0x51, 0x50, 0x2f, 0x05, 0x54, 0x9c, 0x98, 0x8d, 0x04, 0x76, 0xda,
-  0x87, 0x18, 0xa3, 0x70, 0x15, 0xce, 0xe3, 0x2e, 0xe3, 0x36, 0xed, 0x59,
-  0x3e, 0xe6, 0x16, 0x0a, 0x8d, 0x48, 0x50, 0x5d, 0xce, 0x1b, 0x3e, 0x1e,
-  0x8d, 0xfc, 0x0c, 0x16, 0x43, 0x11, 0xce, 0xca, 0x6c, 0x9a, 0x94, 0xd9,
-  0xe4, 0xbe, 0xd1, 0xd5, 0x4f, 0x0b, 0x14, 0x28, 0x15, 0xc1, 0xf6, 0xad,
-  0x2b, 0x7c, 0x71, 0xa7, 0x6d, 0xd7, 0x39, 0x3d, 0x98, 0xe1, 0x5a, 0x99,
-  0xcd, 0x98, 0x5a, 0x4f, 0xe0, 0x9a, 0xc6, 0x56, 0x2d, 0xc7, 0x28, 0x77,
-  0xa6, 0x41, 0x75, 0x13, 0xfa, 0x76, 0xa3, 0xc1, 0x0f, 0x46, 0xc5, 0xed,
-  0xea, 0x7a, 0x10, 0xbd, 0x3e, 0x3e, 0x39, 0x5a, 0x8b, 0x5e, 0xa7, 0xb5,
-  0xd4, 0x1f, 0x6b, 0xa5, 0x10, 0xaa, 0x9f, 0xff, 0x41, 0x0a, 0xbf, 0xe9,
-  0x6b, 0x23, 0x90, 0x20, 0xc1, 0xd4, 0x6e, 0xb6, 0xf0, 0x49, 0xf7, 0xd5,
-  0x5a, 0x66, 0x66, 0x01, 0xa2, 0x25, 0xaa, 0x5c, 0x9a, 0x29, 0xae, 0x79,
-  0x2d, 0xc2, 0x62, 0xa1, 0xe2, 0x19, 0x45, 0x02, 0x1b, 0xb8, 0xc6, 0x4f,
-  0x44, 0xdd, 0x98, 0x4d, 0x7e, 0x1a, 0xce, 0x5b, 0x8a, 0x97, 0x38, 0x11,
-  0x24, 0xab, 0x66, 0x13, 0x14, 0x82, 0x21, 0xa8, 0xcd, 0x49, 0x6a, 0x6b,
-  0xee, 0xe9, 0xc4, 0x83, 0x2d, 0x6c, 0x3b, 0x72, 0x70, 0x97, 0xc6, 0x46,
-  0xd2, 0xc0, 0xa3, 0x76, 0xf0, 0x78, 0xb9, 0x1d, 0x53, 0xf3, 0x0e, 0xfe,
-  0xb8, 0xc1, 0xbf, 0x02, 0x4d, 0x2f, 0x08, 0x47, 0x83, 0x0e, 0x39, 0x98,
-  0xad, 0xa3, 0x34, 0x4e, 0xaa, 0x51, 0x96, 0x39, 0xfb, 0xf7, 0x46, 0xf7,
-  0x0f, 0x13, 0x3a, 0xf9, 0xcf, 0xf5, 0x2f, 0x17, 0xe0, 0x4d, 0x1f, 0xdd,
-  0xc1, 0x38, 0x4a, 0x5a, 0x3a, 0x40, 0xa3, 0xc9, 0x7c, 0x9c, 0x6a, 0x82,
-  0xb4, 0xda, 0x62, 0x0d, 0xce, 0x0f, 0x59, 0x75, 0xc4, 0xff, 0x36, 0x0b,
-  0x0c, 0xa3, 0x3c, 0x58, 0x94, 0xa6, 0x2a, 0x25, 0xe6, 0x45, 0xd9, 0x0b,
-  0x3e, 0x75, 0x3e, 0x5a, 0xb1, 0x46, 0x18, 0x42, 0x27, 0xcd, 0xb8, 0x45,
-  0xac, 0x28, 0x77, 0x58, 0xfb, 0x97, 0x34, 0xab, 0xff, 0xf8, 0xb1, 0x6b,
-  0x69, 0xa0, 0x4a, 0x9e, 0x5c, 0xae, 0x33, 0xaf, 0x02, 0x41, 0x55, 0x2b,
-  0x7b, 0x6c, 0xe2, 0x45, 0x91, 0x6b, 0x24, 0xfa, 0x56, 0xb3, 0xde, 0xfa,
-  0x52, 0x04, 0x7e, 0xc7, 0xcf, 0x4c, 0xee, 0x03, 0xda, 0xb3, 0x7c, 0xdd,
-  0xbd, 0x01, 0xda, 0x96, 0xac, 0xf9, 0x46, 0x61, 0x70, 0x54, 0xc5, 0x55,
-  0xe4, 0x5b, 0x51, 0x48, 0x3b, 0x8e, 0x42, 0xa6, 0x04, 0x83, 0x5b, 0x97,
-  0xd9, 0xe8, 0x53, 0x86, 0x39, 0xac, 0x55, 0x3d, 0x27, 0x15, 0x3f, 0xc9,
-  0xdd, 0x59, 0x9a, 0xde, 0xc7, 0xe3, 0x82, 0x28, 0x1d, 0x36, 0xca, 0x50,
-  0x25, 0x42, 0x5f, 0x21, 0x76, 0xa1, 0xd1, 0xd9, 0xf0, 0x6a, 0xcc, 0x91,
-  0x35, 0x6a, 0x3b, 0xe2, 0x25, 0xd0, 0xce, 0xce, 0x02, 0x3d, 0x37, 0x41,
-  0x6c, 0x61, 0xe2, 0x07, 0x85, 0x33, 0xa4, 0x3e, 0x9c, 0x62, 0x68, 0xa8,
-  0xa0, 0x93, 0xdd, 0x38, 0x88, 0xde, 0xa7, 0xd3, 0xe2, 0xc6, 0x36, 0xc8,
-  0xc4, 0x75, 0x0b, 0x8d, 0xbc, 0x92, 0x56, 0xd1, 0x10, 0x13, 0x9d, 0xdb,
-  0x94, 0x51, 0xd3, 0x78, 0x22, 0x5a, 0xc1, 0x24, 0x19, 0x55, 0x1c, 0xfc,
-  0x8b, 0xb0, 0xeb, 0x88, 0xd9, 0x3e, 0x4f, 0x90, 0x4c, 0xd0, 0x84, 0x41,
-  0xf0, 0xe8, 0x7c, 0x0f, 0xd8, 0x3f, 0xea, 0xbd, 0x01, 0x55, 0x74, 0xaf,
-  0x67, 0x1a, 0x0c, 0x4b, 0xba, 0x71, 0xda, 0xe2, 0x1c, 0xb2, 0xbd, 0x73,
-  0xaf, 0xf7, 0x34, 0x43, 0x20, 0xb1, 0x3d, 0x5b, 0xab, 0x9c, 0x36, 0x75,
-  0xba, 0x7e, 0x85, 0x94, 0xa9, 0x9b, 0xed, 0x13, 0x1a, 0xdf, 0xb5, 0x0f,
-  0x07, 0x80, 0x53, 0xfa, 0x2e, 0x3e, 0xa4, 0x8f, 0xc7, 0x6f, 0x68, 0xbc,
-  0x3f, 0xf7, 0x4c, 0x30, 0xab, 0xfd, 0x2b, 0x98, 0xf8, 0x67, 0xa1, 0xb4,
-  0x56, 0x71, 0x30, 0x30, 0x97, 0x50, 0x77, 0x01, 0xb9, 0x55, 0x12, 0xdb,
-  0xb4, 0x80, 0x60, 0xc6, 0xc7, 0xe3, 0x75, 0xb3, 0xe9, 0x9c, 0xf0, 0x1e,
-  0x30, 0xd5, 0x18, 0xe8, 0xa5, 0xc4, 0x04, 0x36, 0x30, 0x97, 0xc6, 0x71,
-  0x71, 0x19, 0x53, 0xc5, 0x15, 0xdc, 0x76, 0x9f, 0x30, 0xe1, 0xd6, 0x39,
-  0x75, 0x04, 0x2d, 0x47, 0xcd, 0x2b, 0xc6, 0xe3, 0x50, 0x0e, 0x6f, 0xc2,
-  0x09, 0xbe, 0xa5, 0xf1, 0xac, 0x6a, 0xd1, 0x26, 0xef, 0xe4, 0x9e, 0x84,
-  0x3f, 0xe9, 0xf5, 0x3c, 0xbd, 0xe5, 0x9a, 0x16, 0x44, 0x69, 0x96, 0xe2,
-  0x4a, 0xcf, 0x91, 0x4e, 0xa5, 0x96, 0x7d, 0xb6, 0xeb, 0x68, 0xd1, 0xe4,
-  0xd6, 0x98, 0x72, 0x1c, 0x89, 0x42, 0x6b, 0xf3, 0x99, 0x76, 0x6a, 0x7a,
-  0xb0, 0x70, 0x83, 0x1a, 0x31, 0xa1, 0x01, 0xa4, 0x99, 0xa8, 0x20, 0xd6,
-  0xbe, 0x34, 0xe5, 0xd7, 0x55, 0x7d, 0x8f, 0xb7, 0x81, 0x00, 0xa8, 0x06,
-  0x12, 0xfd, 0x60, 0xd2, 0x0c, 0x97, 0x23, 0x8b, 0x62, 0xbb, 0x87, 0x68,
-  0x4e, 0xf4, 0x12, 0x21, 0x49, 0x90, 0x1a, 0x82, 0xc4, 0xcf, 0x39, 0xc7,
-  0x5f, 0xc6, 0x21, 0x7c, 0x55, 0xda, 0x3d, 0x41, 0xa6, 0x4e, 0xc6, 0x2e,
-  0xb5, 0x38, 0x1d, 0xd8, 0x40, 0xd8, 0x34, 0x15, 0xb6, 0x5d, 0xf7, 0x82,
-  0x76, 0xa2, 0xe8, 0x84, 0x8a, 0x2c, 0x57, 0x7a, 0x6c, 0x25, 0x38, 0xf1,
-  0x55, 0xab, 0x48, 0x9a, 0x8e, 0x25, 0xb9, 0x9f, 0x78, 0x09, 0x49, 0x08,
-  0xe0, 0xc4, 0xd7, 0x0d, 0xb6, 0x9f, 0x07, 0x3e, 0x4d, 0x49, 0x54, 0x28,
-  0x2b, 0xc8, 0x5a, 0x02, 0x13, 0xc2, 0x2b, 0xc8, 0xda, 0x63, 0x20, 0x95,
-  0x14, 0x9d, 0x2c, 0x72, 0xda, 0xb8, 0xd3, 0x7b, 0xa8, 0xa1, 0x72, 0xa3,
-  0xdd, 0x87, 0x9c, 0x2a, 0xfd, 0x27, 0x56, 0xc3, 0xf5, 0x1d, 0x9f, 0x25,
-  0x27, 0x28, 0xa7, 0xb9, 0x02, 0x65, 0x05, 0xe2, 0x7e, 0x9c, 0x9d, 0x20,
-  0xdf, 0x8f, 0x3a, 0x71, 0xf1, 0xbe, 0x3d, 0x78, 0xff, 0xee, 0xf8, 0xdd,
-  0xd7, 0x7b, 0xb6, 0xe1, 0x12, 0x09, 0x46, 0xd3, 0x6c, 0xa3, 0xd5, 0x25,
-  0x9d, 0xba, 0x25, 0x12, 0xf7, 0x24, 0x93, 0x49, 0x67, 0x9b, 0xcf, 0x28,
-  0x66, 0x01, 0xce, 0x21, 0x88, 0x32, 0xe5, 0xb8, 0x30, 0x7b, 0x32, 0xb4,
-  0x52, 0x53, 0xb0, 0x1f, 0x88, 0x20, 0x75, 0x81, 0x3e, 0x8b, 0x00, 0xec,
-  0x53, 0x7c, 0xd2, 0x47, 0xd5, 0x1c, 0xab, 0xa0, 0x1c, 0x0d, 0x19, 0x19,
-  0x7a, 0x42, 0x8c, 0x53, 0xb8, 0xbc, 0xc3, 0xdd, 0x97, 0xa8, 0xb4, 0x05,
-  0xf1, 0x7a, 0xd1, 0x5f, 0x1a, 0xc8, 0xa1, 0xa9, 0xf8, 0x16, 0x21, 0xa3,
-  0x93, 0xfb, 0x8d, 0x4e, 0xa4, 0x25, 0x3c, 0x26, 0x61, 0xa0, 0x93, 0x2f,
-  0xe3, 0x34, 0x2c, 0x4b, 0x0f, 0xe3, 0x53, 0x09, 0xf8, 0x10, 0xa5, 0x65,
-  0x64, 0x32, 0xe7, 0xa3, 0xc6, 0x70, 0xd6, 0xf2, 0x53, 0x5b, 0x0a, 0x6a,
-  0x48, 0xb0, 0x38, 0xaa, 0xc9, 0xe9, 0x20, 0x9a, 0xdd, 0xd2, 0xaa, 0xb2,
-  0xa2, 0xec, 0x0b, 0x2b, 0xd5, 0x28, 0x45, 0xfe, 0x26, 0x8c, 0x66, 0x36,
-  0x49, 0x6d, 0x19, 0xf4, 0x72, 0xae, 0x45, 0x92, 0xd1, 0xaf, 0xd1, 0x88,
-  0x8f, 0xdf, 0x81, 0x64, 0xd8, 0x8b, 0xfe, 0xab, 0x48, 0x97, 0xf0, 0x10,
-  0xc2, 0xeb, 0x1f, 0x40, 0xf3, 0x89, 0x0f, 0xae, 0x48, 0xe4, 0xdd, 0xa7,
-  0x55, 0x0c, 0xcf, 0x27, 0x55, 0xba, 0x0e, 0xc6, 0xea, 0xc6, 0x72, 0x03,
-  0xf1, 0xf5, 0xb5, 0x9c, 0xa2, 0x78, 0xa0, 0xa5, 0x1c, 0x71, 0x72, 0x95,
-  0x6a, 0x7d, 0x47, 0xca, 0x3e, 0x46, 0x44, 0x9e, 0x72, 0x4b, 0x3c, 0xae,
-  0x59, 0x41, 0x9c, 0xcc, 0xa2, 0x7d, 0x34, 0x94, 0xae, 0x8a, 0xf2, 0xfe,
-  0x0b, 0x0f, 0xb8, 0x1e, 0x8b, 0xff, 0xf0, 0x19, 0xe1, 0x3c, 0xcc, 0x6a,
-  0x20, 0xfd, 0xc5, 0x96, 0xf6, 0x88, 0xb4, 0x77, 0x06, 0x19, 0x44, 0xda,
-  0xc5, 0xcc, 0x6b, 0x95, 0x8a, 0x88, 0x44, 0x0c, 0x73, 0xa7, 0x65, 0x59,
-  0x4e, 0x7e, 0x39, 0xab, 0xe1, 0x9c, 0xa8, 0x85, 0xc9, 0x5e, 0xd9, 0x14,
-  0x4d, 0x33, 0x4c, 0x40, 0x93, 0x8f, 0x05, 0x40, 0x06, 0x8c, 0x40, 0xaf,
-  0x06, 0x91, 0x3a, 0x88, 0x8c, 0x8c, 0xef, 0xc1, 0x44, 0x7b, 0xf4, 0x41,
-  0xfb, 0x3d, 0xe7, 0x16, 0x6d, 0x9b, 0x0e, 0xf2, 0x7d, 0x5a, 0x9e, 0x69,
-  0x0c, 0x68, 0x53, 0x6c, 0x02, 0xe3, 0xeb, 0x92, 0xe9, 0x23, 0x1d, 0x0d,
-  0xdd, 0x43, 0x4b, 0x24, 0x02, 0xf2, 0xbb, 0x99, 0xd4, 0x23, 0xc2, 0xc0,
-  0x59, 0xa9, 0xf8, 0x8e, 0x4b, 0x17, 0x96, 0xd0, 0x36, 0xc2, 0xa8, 0xdd,
-  0x9c, 0xe1, 0xda, 0x0d, 0x0d, 0xab, 0x1f, 0x28, 0x3d, 0x9b, 0x5f, 0x4c,
-  0xc7, 0xbb, 0xd1, 0x3e, 0xfc, 0xc7, 0x33, 0x0e, 0xa8, 0x98, 0x67, 0x78,
-  0x08, 0x06, 0x02, 0x8a, 0x7b, 0x54, 0x74, 0xb8, 0xa8, 0x50, 0x1c, 0xc2,
-  0xf8, 0xd7, 0xed, 0x2d, 0x60, 0x91, 0xbb, 0x44, 0xdb, 0x7f, 0xc0, 0x2a,
-  0xaf, 0xb2, 0x9a, 0x71, 0xa6, 0xbb, 0x50, 0x36, 0x1d, 0x37, 0x2d, 0x52,
-  0x74, 0x73, 0xeb, 0x45, 0x84, 0xa5, 0xb8, 0x6f, 0x5f, 0xed, 0x82, 0xc4,
-  0x4e, 0x47, 0x9f, 0xaa, 0xf9, 0x54, 0x19, 0x8b, 0x2b, 0x61, 0x48, 0x44,
-  0x79, 0x50, 0x66, 0x30, 0xf1, 0x49, 0x36, 0x42, 0xf0, 0x8b, 0x7e, 0x23,
-  0xa7, 0xe3, 0x52, 0x73, 0x3a, 0x1c, 0xe7, 0x95, 0x51, 0x77, 0x28, 0x91,
-  0x90, 0xd3, 0x74, 0x03, 0xd1, 0x76, 0xa0, 0x01, 0x7c, 0x1c, 0x5d, 0x7e,
-  0x60, 0xd6, 0x2e, 0xbd, 0x0d, 0x96, 0x98, 0xe9, 0xee, 0x68, 0x73, 0xb4,
-  0xf3, 0x72, 0x63, 0x6b, 0xe3, 0xd9, 0xce, 0x46, 0xb2, 0x9b, 0x5c, 0x6c,
-  0x5c, 0x6e, 0x6d, 0x6c, 0xef, 0xbc, 0xd8, 0xdd, 0x19, 0x6d, 0x6f, 0x6d,
-  0x26, 0x2f, 0xa2, 0x6a, 0xa9, 0xcc, 0x09, 0x19, 0xb9, 0xba, 0x4e, 0xb6,
-  0x76, 0x9f, 0x05, 0xf6, 0x8f, 0x7f, 0x11, 0xed, 0xf3, 0x9f, 0x4f, 0xd9,
-  0xc5, 0x24, 0xfa, 0x8a, 0x2a, 0x6b, 0x63, 0x2d, 0xff, 0x1e, 0xbe, 0x39,
-  0xc0, 0x21, 0xc1, 0xa8, 0xba, 0xf6, 0x7d, 0x37, 0xde, 0xce, 0x38, 0x7b,
-  0x31, 0x88, 0x0e, 0x17, 0xef, 0x45, 0x97, 0x22, 0xea, 0xec, 0x0c, 0xff,
-  0x1b, 0x3e, 0x9d, 0xfe, 0xb2, 0xad, 0x10, 0xba, 0xbc, 0x7b, 0xf5, 0xcd,
-  0xa7, 0xb7, 0xe7, 0x7f, 0xbd, 0x7b, 0xfb, 0xf5, 0x5f, 0x37, 0x4f, 0x5f,
-  0x8d, 0xa7, 0x6f, 0x7f, 0xfa, 0xeb, 0xf6, 0xdb, 0x9f, 0x46, 0x3f, 0xff,
-  0xed, 0xa7, 0x83, 0xfb, 0xd3, 0xf3, 0xbf, 0xed, 0xbe, 0x9d, 0xbe, 0xff,
-  0xf4, 0xf6, 0xa7, 0x6f, 0xa6, 0xef, 0x5e, 0xfd, 0xf5, 0xf3, 0xa7, 0xed,
-  0x0c, 0xec, 0x79, 0x13, 0xd6, 0x76, 0xa3, 0xe5, 0x5d, 0x43, 0xc1, 0xb9,
-  0x6f, 0x30, 0x1e, 0x83, 0x46, 0x38, 0xe1, 0x54, 0xbb, 0xf7, 0xa1, 0x82,
-  0x5b, 0xbe, 0x19, 0x9e, 0xdb, 0x00, 0xba, 0x89, 0x93, 0xab, 0x3c, 0xba,
-  0xf4, 0x01, 0x19, 0x49, 0xab, 0x9d, 0x81, 0x9a, 0xc5, 0x0e, 0x29, 0x4c,
-  0xbc, 0xbf, 0xe3, 0x84, 0x34, 0x1e, 0x0b, 0xfb, 0x40, 0xa5, 0xe2, 0x03,
-  0x21, 0xf3, 0x41, 0x71, 0xe2, 0x24, 0x30, 0xd8, 0x0e, 0xc1, 0x93, 0x1e,
-  0x43, 0xc0, 0x12, 0x48, 0x12, 0xb7, 0x37, 0x8d, 0x80, 0x1c, 0xd2, 0x78,
-  0x46, 0x43, 0xe2, 0x4e, 0x8f, 0xc5, 0xc2, 0xd9, 0x91, 0x0b, 0x58, 0xb0,
-  0x88, 0x4c, 0xb9, 0x2e, 0x3b, 0x57, 0x02, 0x6e, 0x54, 0x6d, 0x99, 0x98,
-  0x44, 0xbd, 0x9e, 0x83, 0x94, 0xb9, 0xfa, 0x73, 0x5a, 0x16, 0x52, 0x19,
-  0xbf, 0x46, 0x2b, 0xbd, 0x29, 0xb2, 0x71, 0x24, 0x48, 0xa0, 0xeb, 0x8a,
-  0x84, 0xed, 0x5d, 0x1d, 0x56, 0x89, 0x24, 0x74, 0x4a, 0x84, 0xc1, 0x86,
-  0x21, 0x89, 0x34, 0x06, 0x9a, 0xf1, 0x71, 0x11, 0xd8, 0x90, 0x77, 0xd8,
-  0x8a, 0x22, 0xf2, 0x5d, 0x6a, 0x98, 0xaa, 0x6d, 0x4e, 0x53, 0x66, 0xa9,
-  0xd4, 0x94, 0x32, 0x52, 0xa9, 0x3a, 0xb8, 0x82, 0xae, 0x65, 0x62, 0x00,
-  0x5e, 0xd1, 0xd2, 0x87, 0x01, 0x99, 0x8f, 0xf6, 0xe8, 0x09, 0xbd, 0xb2,
-  0xc8, 0xc9, 0xd8, 0x6c, 0x51, 0xb0, 0xd3, 0xe2, 0x6d, 0x18, 0x6f, 0x63,
-  0xf0, 0xb2, 0xa3, 0x8f, 0x59, 0x03, 0x0a, 0x1b, 0xa1, 0x4a, 0xb2, 0x5c,
-  0xf0, 0x53, 0x49, 0xe3, 0x47, 0xff, 0x20, 0x12, 0x13, 0xd1, 0xbf, 0x35,
-  0xeb, 0xcf, 0x5b, 0x1f, 0x3e, 0xb9, 0x8e, 0x4f, 0x64, 0x95, 0xc3, 0x85,
-  0xd8, 0x7e, 0x84, 0xd4, 0x3c, 0x92, 0x18, 0x26, 0x65, 0x50, 0xfb, 0xcd,
-  0x95, 0x9c, 0x10, 0x1a, 0xf0, 0xb3, 0x38, 0x59, 0xc7, 0x1a, 0xf6, 0x12,
-  0x21, 0xc4, 0x55, 0xa3, 0x98, 0x4e, 0xe2, 0x60, 0x34, 0x2a, 0x98, 0x10,
-  0x6e, 0x06, 0x21, 0xa5, 0x7a, 0xb6, 0xaa, 0x7c, 0xb9, 0xb2, 0x69, 0x7e,
-  0x0c, 0xff, 0xce, 0xcd, 0x64, 0xe8, 0xac, 0x60, 0xab, 0x31, 0x8e, 0x41,
-  0x14, 0xb7, 0xf9, 0x55, 0x89, 0x11, 0xa5, 0x18, 0xd9, 0x3f, 0x09, 0x25,
-  0x08, 0x85, 0x4e, 0x80, 0x9b, 0x42, 0xf8, 0xec, 0xd9, 0x60, 0xa3, 0xdf,
-  0xa0, 0x8a, 0x44, 0x0e, 0x17, 0x66, 0x10, 0x3e, 0xc4, 0x25, 0xbc, 0x8d,
-  0x4b, 0xb2, 0x07, 0x3e, 0xbd, 0x39, 0xd8, 0xec, 0xcb, 0x5f, 0xb7, 0xc4,
-  0x29, 0x89, 0x7f, 0xdf, 0x6e, 0xfa, 0x97, 0x9b, 0x5c, 0xb3, 0xd1, 0x37,
-  0x2f, 0x6f, 0x2c, 0x44, 0x51, 0x37, 0xbc, 0x83, 0x17, 0x49, 0x83, 0x65,
-  0xe0, 0x4d, 0xbf, 0x6b, 0x74, 0xe6, 0x1d, 0x34, 0xc7, 0xe7, 0xc5, 0xf9,
-  0x06, 0x88, 0xc0, 0xea, 0x0e, 0xf4, 0x14, 0x42, 0xe1, 0xb7, 0x97, 0xea,
-  0x06, 0xef, 0x10, 0x98, 0x39, 0xd4, 0x90, 0xce, 0x94, 0xfa, 0x19, 0xb9,
-  0x62, 0x11, 0x18, 0xbc, 0x0c, 0x1c, 0x79, 0xc7, 0xa1, 0xf2, 0x56, 0xfb,
-  0x28, 0xc2, 0xaf, 0x1f, 0x73, 0x14, 0x03, 0xe4, 0xdc, 0x7c, 0x1a, 0x25,
-  0x36, 0x9f, 0x44, 0x09, 0x7c, 0xcf, 0xa5, 0x04, 0x50, 0x66, 0xd0, 0x74,
-  0xdc, 0x38, 0x38, 0x14, 0x1b, 0xfd, 0x0e, 0x4a, 0x6c, 0x34, 0x28, 0xb1,
-  0xa8, 0xbf, 0x3d, 0x3d, 0x81, 0xb8, 0x23, 0x45, 0x19, 0xa3, 0x9b, 0x13,
-  0x0e, 0xcb, 0x55, 0xfa, 0x18, 0x42, 0xc1, 0xf1, 0xaa, 0xb0, 0x09, 0x1f,
-  0x25, 0x26, 0xa3, 0x68, 0xc0, 0x74, 0x36, 0xd3, 0x2d, 0x48, 0x2c, 0xfe,
-  0x20, 0x86, 0x00, 0x1d, 0xd0, 0x2d, 0x27, 0x2b, 0x82, 0x7e, 0x40, 0x0b,
-  0xff, 0x30, 0x23, 0x19, 0x80, 0x56, 0x45, 0xad, 0xf9, 0xe6, 0x14, 0x68,
-  0x02, 0x21, 0xdf, 0x35, 0x3b, 0x0b, 0xd3, 0xae, 0x39, 0xd4, 0x04, 0x95,
-  0x55, 0xe9, 0x77, 0x2a, 0x44, 0x21, 0x23, 0x47, 0x69, 0x72, 0x9b, 0x60,
-  0x6a, 0x9b, 0x74, 0x64, 0xd7, 0x49, 0x86, 0xba, 0xee, 0x89, 0x58, 0x43,
-  0xef, 0x9c, 0x8c, 0xd2, 0x28, 0xb2, 0x87, 0x71, 0xc4, 0x43, 0x0a, 0xc6,
-  0x0a, 0xa5, 0xa8, 0xda, 0xce, 0xd6, 0x81, 0x10, 0x1c, 0xc5, 0xcb, 0xf2,
-  0x50, 0x17, 0x8d, 0xe5, 0xf9, 0xca, 0xdb, 0xab, 0x27, 0x08, 0xa6, 0x96,
-  0x34, 0xea, 0x1c, 0xd9, 0xec, 0x40, 0xb0, 0x37, 0x1a, 0x57, 0xd4, 0xe4,
-  0x78, 0xd1, 0x50, 0x4b, 0x0e, 0x13, 0x97, 0x46, 0xd3, 0x12, 0x1b, 0x01,
-  0x93, 0xc3, 0x45, 0x81, 0xcb, 0x98, 0x8c, 0x83, 0x50, 0xb9, 0xb6, 0xcf,
-  0xd7, 0xcd, 0xf3, 0xec, 0xca, 0xc4, 0x26, 0x5f, 0x33, 0x63, 0x7b, 0x82,
-  0x0d, 0x9b, 0x53, 0xbc, 0x0c, 0xb0, 0xf9, 0x93, 0xce, 0xff, 0x56, 0x10,
-  0xe1, 0x9d, 0x99, 0x48, 0xf3, 0x07, 0xb9, 0x74, 0xc6, 0xde, 0x70, 0x4e,
-  0xf5, 0x90, 0xe1, 0x10, 0x65, 0x24, 0x2f, 0xb3, 0xdf, 0x67, 0x0b, 0xa7,
-  0x12, 0x9b, 0x86, 0x5f, 0x70, 0x79, 0x29, 0x02, 0x7f, 0xff, 0xc1, 0x89,
-  0xcc, 0xf9, 0x68, 0x35, 0xc2, 0x56, 0x5e, 0x91, 0xac, 0xcc, 0xd1, 0x42,
-  0xe4, 0xcb, 0x81, 0xdc, 0x33, 0xaf, 0x3c, 0x31, 0x34, 0x4b, 0x5c, 0xf7,
-  0xa4, 0x2b, 0xb4, 0xc9, 0xab, 0x3a, 0x94, 0x91, 0x0d, 0xe6, 0xf4, 0x13,
-  0x27, 0x7a, 0x4a, 0xc3, 0x3d, 0x23, 0x45, 0x3d, 0x92, 0x31, 0x3d, 0x56,
-  0xec, 0xbc, 0x68, 0x44, 0x44, 0x77, 0xb1, 0x66, 0xfb, 0x28, 0x0d, 0xba,
-  0x39, 0x35, 0x24, 0x90, 0xb7, 0xc3, 0x9c, 0x6a, 0xbc, 0xb2, 0xed, 0x32,
-  0x89, 0xbb, 0x59, 0x5a, 0x66, 0x53, 0xea, 0x47, 0x31, 0x88, 0x5e, 0xd9,
-  0x42, 0x13, 0x2c, 0xad, 0x07, 0xb9, 0xd4, 0xa6, 0xca, 0x78, 0x1e, 0xae,
-  0xc7, 0x08, 0x75, 0x03, 0x6a, 0x9c, 0x85, 0x6d, 0xa9, 0xe5, 0xb1, 0xc9,
-  0xfc, 0x64, 0x9c, 0x6a, 0xbe, 0x40, 0xdb, 0xa0, 0xe1, 0x80, 0xa6, 0xe6,
-  0x8b, 0x4a, 0x5a, 0x27, 0xd6, 0x86, 0x49, 0xce, 0x1a, 0x91, 0x7e, 0xdb,
-  0x4d, 0xf7, 0x36, 0xaa, 0x3d, 0x82, 0x3b, 0x84, 0x43, 0xa8, 0xe6, 0x8b,
-  0x14, 0x85, 0x42, 0xc5, 0x53, 0xdd, 0xa8, 0xf0, 0x99, 0x9b, 0x2c, 0x89,
-  0x0e, 0x26, 0x75, 0x3c, 0xbc, 0x19, 0xf5, 0xc5, 0x6e, 0x30, 0x94, 0xf2,
-  0xda, 0x5d, 0x51, 0xb8, 0x51, 0xfa, 0x4c, 0x60, 0xaa, 0x17, 0x35, 0x44,
-  0xa3, 0xae, 0x56, 0x6c, 0xfc, 0x69, 0x7a, 0x20, 0xee, 0xa2, 0x2b, 0xf3,
-  0x18, 0x07, 0xc1, 0xef, 0x45, 0x92, 0x7c, 0xaa, 0x74, 0x49, 0x12, 0xa0,
-  0x63, 0x68, 0x8c, 0x06, 0x8d, 0x1e, 0x70, 0xf5, 0xb6, 0x9c, 0xf9, 0xdc,
-  0xcd, 0x10, 0x71, 0x94, 0xff, 0xfa, 0xe1, 0xf8, 0xd0, 0x75, 0xdc, 0x98,
-  0xa4, 0xae, 0x76, 0x7b, 0x75, 0x9b, 0x45, 0xd5, 0x17, 0x24, 0x44, 0xee,
-  0xa2, 0x85, 0x74, 0x95, 0x32, 0x60, 0x2d, 0xdc, 0x6b, 0xec, 0x2d, 0x59,
-  0x6e, 0xde, 0x6d, 0x08, 0x5a, 0xf9, 0x53, 0xce, 0xfa, 0xf6, 0x2f, 0x3e,
-  0xeb, 0x5b, 0x03, 0x33, 0xd4, 0xaf, 0x7c, 0xd6, 0xb7, 0x97, 0x3d, 0xeb,
-  0x0b, 0x2f, 0xa1, 0xae, 0x53, 0xdf, 0x9e, 0x9d, 0x23, 0x05, 0x44, 0xf1,
-  0x6f, 0x76, 0xb4, 0x8b, 0x19, 0xe9, 0x35, 0x16, 0xb3, 0x38, 0x66, 0xeb,
-  0x3d, 0x04, 0x30, 0x24, 0x2d, 0xee, 0x8c, 0xe0, 0x3f, 0xe6, 0x1e, 0xb2,
-  0x6e, 0x43, 0x93, 0x13, 0x06, 0xc5, 0x13, 0x59, 0x6d, 0x31, 0x33, 0x02,
-  0x70, 0x99, 0xd9, 0x08, 0x1b, 0x1c, 0x4c, 0x08, 0xb9, 0x9c, 0x92, 0x78,
-  0xd8, 0xa0, 0x16, 0x0b, 0xaf, 0x9c, 0x53, 0x96, 0x52, 0x74, 0x30, 0x23,
-  0x57, 0xc6, 0xe6, 0xe0, 0x4e, 0xe3, 0x81, 0x01, 0x57, 0x71, 0x99, 0x12,
-  0x91, 0xc1, 0x22, 0x13, 0xd0, 0x81, 0xd6, 0x74, 0x70, 0x60, 0xb6, 0xe8,
-  0x27, 0x78, 0x82, 0xa8, 0xa3, 0x10, 0x9a, 0x9c, 0x5b, 0x18, 0xf5, 0xbe,
-  0x4a, 0x3c, 0x44, 0xed, 0xfb, 0x3a, 0x80, 0x25, 0x44, 0x97, 0x2f, 0x92,
-  0x61, 0x95, 0xcd, 0x4a, 0xb8, 0xea, 0x81, 0x90, 0x6b, 0xfd, 0x08, 0xeb,
-  0xaf, 0x88, 0x08, 0x08, 0xc4, 0x62, 0x12, 0x68, 0xa8, 0x45, 0xfb, 0x15,
-  0x06, 0x84, 0x05, 0xe0, 0xc3, 0x83, 0x44, 0xf9, 0x39, 0xd5, 0x1a, 0x49,
-  0xad, 0x40, 0x94, 0x4e, 0x60, 0xc1, 0x0e, 0x1b, 0xa1, 0xde, 0xa8, 0x98,
-  0xaa, 0x47, 0x8b, 0xa3, 0xf3, 0x04, 0xa7, 0xd5, 0xe7, 0x41, 0xc5, 0x88,
-  0x6f, 0x47, 0x9e, 0xee, 0x67, 0xcb, 0xdf, 0xa5, 0x41, 0x46, 0x59, 0xb6,
-  0x65, 0x5c, 0xab, 0x60, 0xcd, 0x61, 0xc4, 0x0c, 0x19, 0x5d, 0xd2, 0x5c,
-  0xda, 0xae, 0x1e, 0x49, 0x7e, 0x61, 0x31, 0xd8, 0x6c, 0x0c, 0x6a, 0x02,
-  0x63, 0x22, 0xe9, 0xb9, 0xfd, 0x1f, 0xa7, 0x7f, 0x4a, 0x0c, 0x33, 0xdc,
-  0x34, 0xdd, 0xbc, 0x38, 0xa2, 0xf4, 0x08, 0xfe, 0x82, 0x84, 0xb2, 0x39,
-  0x18, 0x68, 0x80, 0xcb, 0xd0, 0xb9, 0x85, 0xb1, 0x8a, 0xa2, 0xf8, 0x94,
-  0xa5, 0x1e, 0x70, 0xda, 0x98, 0x7a, 0x32, 0xb3, 0xf3, 0xcf, 0xb6, 0x46,
-  0x6c, 0xc8, 0x38, 0xed, 0x67, 0x38, 0x18, 0x0c, 0x02, 0x20, 0xbb, 0x37,
-  0x59, 0x7a, 0xdb, 0x50, 0x8f, 0x64, 0x66, 0x7d, 0x86, 0x64, 0xe5, 0x84,
-  0x9a, 0xb4, 0x95, 0x6c, 0xd4, 0x81, 0x19, 0xb2, 0x78, 0x0f, 0xb3, 0xe5,
-  0xb6, 0xab, 0x23, 0x4a, 0xf1, 0x89, 0x77, 0xaa, 0x0a, 0xc1, 0xbe, 0x61,
-  0x7f, 0xbf, 0xc8, 0xfa, 0xb7, 0x6d, 0x47, 0xf3, 0x3e, 0xc6, 0x60, 0xcb,
-  0x7b, 0xad, 0x1b, 0x72, 0x6f, 0x14, 0x9c, 0x1a, 0x83, 0x4f, 0x78, 0x92,
-  0x82, 0x1a, 0xef, 0x65, 0xb6, 0xcb, 0x30, 0xbf, 0x1c, 0x6a, 0x20, 0x52,
-  0xd3, 0x00, 0x14, 0x8b, 0x1c, 0x2c, 0xc6, 0x53, 0xd4, 0x76, 0x3b, 0x1c,
-  0xb5, 0xd6, 0xd3, 0xcb, 0x5f, 0x92, 0x44, 0xb2, 0xaa, 0x4e, 0xb9, 0x38,
-  0x18, 0x94, 0x98, 0x51, 0x2a, 0x01, 0x54, 0xe0, 0xac, 0xb6, 0xe3, 0x0a,
-  0x83, 0x23, 0xc1, 0x30, 0x36, 0x85, 0x91, 0x9b, 0xca, 0x92, 0xe8, 0x46,
-  0xec, 0x38, 0x34, 0xad, 0x99, 0x44, 0xe5, 0x05, 0xaa, 0x89, 0xa3, 0x12,
-  0xe7, 0x11, 0xfb, 0x1d, 0x78, 0x04, 0xfb, 0xc3, 0xb4, 0x1e, 0xa4, 0xd6,
-  0x86, 0x16, 0xc0, 0x4e, 0x49, 0x22, 0x48, 0xf2, 0xd8, 0xb8, 0xbd, 0xda,
-  0x33, 0xf7, 0x56, 0x7b, 0xda, 0xce, 0x7b, 0xa6, 0xf9, 0x80, 0xcd, 0xeb,
-  0xe1, 0xa6, 0x47, 0xd2, 0xd6, 0x95, 0x0b, 0x1a, 0x8c, 0xc6, 0x15, 0x82,
-  0x7c, 0x68, 0xe9, 0x59, 0xa2, 0x23, 0xc9, 0x8d, 0xe9, 0x7e, 0xcb, 0xf8,
-  0x95, 0x11, 0x5a, 0x59, 0xc1, 0x91, 0x0f, 0x0f, 0x16, 0xcc, 0x6e, 0x46,
-  0x6d, 0x74, 0x6a, 0x1d, 0x1d, 0x7f, 0x85, 0xdd, 0xeb, 0x4b, 0x34, 0xd4,
-  0x91, 0x4d, 0x99, 0xc4, 0x0c, 0x4b, 0x0c, 0x8f, 0x16, 0xf3, 0xd2, 0x03,
-  0xe2, 0x20, 0xe1, 0x2f, 0x90, 0xa3, 0x82, 0x32, 0xea, 0x1d, 0x0e, 0x3d,
-  0x14, 0xb8, 0x01, 0x83, 0x2a, 0x5d, 0x87, 0x53, 0x5c, 0xad, 0x57, 0xd5,
-  0x04, 0xbf, 0x57, 0x51, 0x03, 0x8c, 0xe0, 0x6d, 0x40, 0x6c, 0xce, 0x0a,
-  0x39, 0x30, 0x7b, 0xbf, 0xb1, 0xe1, 0x0e, 0x98, 0x8a, 0x61, 0x31, 0xea,
-  0x7e, 0xf3, 0x91, 0xa2, 0xfe, 0x41, 0x36, 0xd7, 0xac, 0x02, 0xf7, 0x41,
-  0x76, 0xb1, 0x4a, 0x33, 0x19, 0x93, 0x60, 0xc6, 0x44, 0x18, 0x1b, 0x0c,
-  0x2b, 0x7f, 0x47, 0x90, 0x47, 0x60, 0xcb, 0x10, 0xfe, 0xd0, 0x96, 0xc1,
-  0x0b, 0x19, 0x07, 0x55, 0x75, 0x8d, 0xdd, 0x80, 0xcc, 0x2f, 0x4c, 0x53,
-  0xed, 0x70, 0x13, 0x02, 0x83, 0xf5, 0xe1, 0xc6, 0x46, 0x6d, 0x80, 0xa9,
-  0xea, 0xce, 0xe2, 0xf0, 0xa1, 0x92, 0x98, 0x2e, 0xcd, 0xf2, 0x3e, 0x91,
-  0x24, 0x4b, 0xdf, 0x47, 0xf2, 0xde, 0xf2, 0x0e, 0xf4, 0xbb, 0x7b, 0xf3,
-  0x32, 0xd5, 0x7d, 0x24, 0xc4, 0x58, 0x92, 0xa3, 0x9d, 0x20, 0x38, 0x5a,
-  0x43, 0x41, 0x52, 0x98, 0x16, 0x6e, 0x53, 0xd7, 0x8e, 0x15, 0x9d, 0x71,
-  0x1b, 0x4f, 0x8c, 0xea, 0xb8, 0x08, 0x8b, 0x7c, 0x99, 0xdb, 0x32, 0x0a,
-  0x33, 0x8a, 0xd3, 0x6e, 0x1c, 0x1b, 0x77, 0x96, 0x5d, 0x80, 0x32, 0xe6,
-  0xda, 0x71, 0x12, 0xa4, 0x81, 0xeb, 0xcc, 0x66, 0x80, 0x52, 0x97, 0x1b,
-  0xe8, 0xfa, 0x11, 0x05, 0x70, 0x27, 0x70, 0x41, 0x05, 0x5a, 0x2a, 0x74,
-  0x81, 0x02, 0x3b, 0x2b, 0x43, 0xa8, 0x89, 0x3d, 0xeb, 0x38, 0xbc, 0xbd,
-  0xbd, 0x1d, 0x2c, 0x0a, 0xb8, 0xfd, 0xe2, 0xb4, 0xfc, 0xe6, 0x70, 0xa7,
-  0x79, 0x74, 0x02, 0x22, 0xeb, 0xce, 0x41, 0x50, 0x17, 0x2c, 0x2d, 0x9b,
-  0xa8, 0x1a, 0x7d, 0xf3, 0xfe, 0x75, 0xdf, 0x84, 0x64, 0x14, 0xc6, 0x9a,
-  0x92, 0xad, 0xaa, 0x80, 0xc1, 0x96, 0x66, 0x74, 0xe2, 0xb9, 0x81, 0xe3,
-  0xe1, 0xc1, 0xd9, 0xc7, 0x77, 0x47, 0xe7, 0x1f, 0xdf, 0x1f, 0x7c, 0x8b,
-  0x24, 0xe4, 0xbb, 0x04, 0x54, 0x4c, 0xcc, 0x92, 0x2b, 0x8b, 0x02, 0xb4,
-  0x85, 0xb7, 0x24, 0x3c, 0x73, 0x82, 0x30, 0xef, 0xa8, 0x3f, 0xa1, 0x96,
-  0x0c, 0x32, 0x4f, 0x9c, 0xcc, 0x9e, 0x23, 0x38, 0x90, 0x5e, 0x9f, 0xd2,
-  0x32, 0x4f, 0x27, 0x83, 0xa2, 0xbc, 0x42, 0xf9, 0xb1, 0xfe, 0x4a, 0x34,
-  0x81, 0xe0, 0x70, 0xeb, 0x52, 0x68, 0x81, 0x51, 0xb1, 0x9b, 0xf2, 0x12,
-  0xc3, 0x40, 0x4b, 0x33, 0xbf, 0xbb, 0x75, 0x4b, 0x1e, 0x81, 0x71, 0x5e,
-  0xd9, 0x01, 0x1c, 0x56, 0xdf, 0xa1, 0x8b, 0x7d, 0x76, 0xb3, 0xb3, 0xc8,
-  0x54, 0xac, 0x1b, 0x6e, 0x2b, 0x94, 0xba, 0x93, 0x9b, 0x54, 0xc4, 0x03,
-  0xfc, 0xc0, 0x2d, 0xc8, 0x49, 0x39, 0xfb, 0xbc, 0x1f, 0xc0, 0x06, 0x26,
-  0xdb, 0xb0, 0x30, 0x28, 0xd0, 0x04, 0xf0, 0x85, 0xa5, 0x44, 0x4b, 0x0b,
-  0x01, 0x98, 0xed, 0x52, 0xab, 0xef, 0x70, 0x77, 0x6f, 0x0d, 0xda, 0x16,
-  0xb1, 0x75, 0x0b, 0x46, 0xf1, 0x33, 0xdf, 0xdf, 0x0d, 0x1f, 0x76, 0x23,
-  0xff, 0xcf, 0x84, 0x74, 0xcf, 0x7e, 0x19, 0xe9, 0x9e, 0x3d, 0x9d, 0x74,
-  0x3b, 0x4f, 0x20, 0xdd, 0xb3, 0xdf, 0x9e, 0x74, 0x3b, 0x41, 0xd2, 0x39,
-  0x93, 0x8d, 0x7f, 0x42, 0xd2, 0xfd, 0x34, 0xcf, 0x3f, 0xc5, 0xb0, 0x6a,
-  0x54, 0x97, 0x63, 0x51, 0xb4, 0x3b, 0x9c, 0x51, 0x06, 0x6b, 0x84, 0xa2,
-  0x83, 0xdc, 0x02, 0x4c, 0x7a, 0x0e, 0xd2, 0x6b, 0x0a, 0x12, 0xc4, 0x4e,
-  0x10, 0x8d, 0xaa, 0x77, 0x79, 0x7f, 0xad, 0xe3, 0x23, 0x43, 0x88, 0xc9,
-  0x6a, 0x84, 0x7e, 0x76, 0x74, 0x5a, 0xf4, 0x64, 0x36, 0x3a, 0x6c, 0x4f,
-  0xd4, 0x4a, 0x16, 0x64, 0xde, 0xb1, 0xae, 0xe0, 0xfa, 0xa6, 0xab, 0x99,
-  0x24, 0x8e, 0x34, 0x0c, 0x25, 0xf8, 0x61, 0x41, 0x05, 0xc1, 0x54, 0xe8,
-  0x4b, 0x69, 0x22, 0xa1, 0x43, 0x67, 0xd2, 0x8b, 0xc5, 0x17, 0x89, 0xe7,
-  0xf7, 0x33, 0x1c, 0x30, 0xba, 0x28, 0x8b, 0xdb, 0x8a, 0x62, 0x9e, 0x93,
-  0x5b, 0x2c, 0x8a, 0xd0, 0x19, 0xb6, 0x26, 0x17, 0xb1, 0xd7, 0x48, 0xca,
-  0x2e, 0x13, 0x4f, 0x2d, 0x1f, 0x4d, 0x0a, 0x14, 0xa8, 0xe3, 0x27, 0xb8,
-  0x55, 0x42, 0x3b, 0x13, 0xc5, 0x17, 0xfa, 0xe5, 0xe5, 0x43, 0xd8, 0x17,
-  0x5c, 0x6b, 0x89, 0x6f, 0xf3, 0x9d, 0x3b, 0xb2, 0x3f, 0x88, 0x7f, 0x4a,
-  0x1a, 0xb8, 0xc7, 0x9f, 0xd2, 0x74, 0x96, 0x4c, 0x08, 0x62, 0x19, 0x6b,
-  0x3b, 0xf6, 0x3b, 0xca, 0x2b, 0x1b, 0xec, 0x57, 0x29, 0x18, 0x09, 0x57,
-  0x5e, 0xb9, 0xa6, 0x06, 0xdd, 0x16, 0xcc, 0x2f, 0x53, 0xca, 0x77, 0xc0,
-  0x3c, 0x83, 0x0b, 0xcf, 0x40, 0x24, 0x55, 0x5a, 0xab, 0x2a, 0xcc, 0x14,
-  0x50, 0x69, 0xbf, 0xb0, 0x3a, 0x50, 0xc4, 0xe3, 0x9b, 0x5e, 0x37, 0x54,
-  0xe3, 0x74, 0x93, 0x61, 0xf5, 0x65, 0xbb, 0xeb, 0x61, 0x6b, 0x04, 0x6a,
-  0x7f, 0xd1, 0x68, 0xe6, 0xcd, 0x2c, 0x82, 0x4f, 0x14, 0x46, 0x8b, 0xc0,
-  0xe4, 0xd1, 0x7b, 0x30, 0x44, 0xa6, 0x1e, 0xe3, 0x6a, 0xef, 0x46, 0x9e,
-  0xc5, 0xf9, 0xe1, 0xd9, 0xc7, 0xbf, 0x1c, 0x1d, 0x9d, 0x1d, 0xbf, 0x3a,
-  0x39, 0x92, 0x73, 0x69, 0x7e, 0xf4, 0xee, 0xfc, 0x9b, 0x13, 0xc4, 0x2b,
-  0x1d, 0x7d, 0xc2, 0x24, 0x5a, 0x49, 0xa2, 0x6b, 0x1f, 0x2b, 0xc9, 0x72,
-  0x93, 0xbb, 0xad, 0x0f, 0xb4, 0xc1, 0xde, 0xd5, 0xd1, 0xc1, 0xf1, 0x77,
-  0x60, 0xc5, 0x9e, 0xc5, 0x1f, 0xbe, 0x33, 0xe6, 0xeb, 0x5a, 0xd3, 0x83,
-  0xc5, 0xa8, 0x37, 0x6d, 0x7f, 0x93, 0xc1, 0xc0, 0x89, 0xe3, 0xbc, 0xb0,
-  0x1b, 0xd8, 0x59, 0x4a, 0xf9, 0x2b, 0xeb, 0x12, 0x08, 0x14, 0x90, 0x1b,
-  0xb5, 0x8b, 0x5f, 0x54, 0xc7, 0x89, 0x53, 0xad, 0xf8, 0x6c, 0x23, 0xd2,
-  0x4a, 0xd6, 0x25, 0xcf, 0x43, 0x8b, 0x25, 0xb7, 0x96, 0xbd, 0x7c, 0x1b,
-  0x44, 0x21, 0xfe, 0x6f, 0x94, 0x0a, 0x36, 0xb9, 0xff, 0x9e, 0xfa, 0x5a,
-  0x45, 0xfb, 0xf8, 0xdf, 0x2f, 0x02, 0xa6, 0xf6, 0x1a, 0xe8, 0x9f, 0x65,
-  0x76, 0x83, 0xb6, 0x12, 0x3c, 0xcc, 0x66, 0x02, 0x3e, 0x3b, 0x30, 0x29,
-  0x3a, 0x52, 0xc4, 0x85, 0xa3, 0x50, 0x01, 0x0d, 0x8d, 0x1a, 0x72, 0xce,
-  0x53, 0x7a, 0x24, 0x86, 0x3c, 0xcd, 0x68, 0x19, 0x70, 0xea, 0xab, 0xa3,
-  0xf7, 0xfd, 0xe8, 0xec, 0xe8, 0x2d, 0xc3, 0xec, 0x1c, 0xbd, 0xfb, 0x9a,
-  0xb2, 0xa6, 0xd5, 0xb1, 0x49, 0x98, 0x77, 0x9c, 0x5c, 0x5a, 0x87, 0x7a,
-  0x64, 0xf3, 0x16, 0xc0, 0xeb, 0x64, 0xc6, 0x54, 0x15, 0x68, 0x44, 0xbf,
-  0x3b, 0x7c, 0xbf, 0x21, 0x2a, 0x2c, 0x4d, 0xa8, 0x41, 0x2d, 0x3f, 0x97,
-  0xdb, 0x45, 0x4c, 0xac, 0x6b, 0xee, 0x54, 0xb4, 0x0f, 0xff, 0xf9, 0x22,
-  0xe8, 0x0e, 0x19, 0xbe, 0x59, 0xf3, 0xb7, 0x49, 0x74, 0x78, 0x53, 0x7c,
-  0x44, 0xad, 0xe9, 0x39, 0x4b, 0x95, 0x77, 0x6a, 0xe6, 0x3b, 0x02, 0xec,
-  0xd6, 0x88, 0x7b, 0x41, 0xf0, 0x32, 0x52, 0xa9, 0x72, 0xa0, 0x1e, 0xd0,
-  0xc3, 0x37, 0x7d, 0x3c, 0x7e, 0xd4, 0xf2, 0xd5, 0x6e, 0x42, 0x10, 0xc0,
-  0x93, 0xf2, 0x5d, 0x15, 0x3b, 0xd6, 0xa4, 0x87, 0xa3, 0x0e, 0x3e, 0xce,
-  0xc6, 0x84, 0xa1, 0x4c, 0x16, 0x66, 0x51, 0x62, 0x09, 0x4c, 0x14, 0xad,
-  0xfc, 0xbf, 0xeb, 0x68, 0x3b, 0xae, 0x67, 0xe3, 0x8f, 0x65, 0x95, 0xac,
-  0xb4, 0x6f, 0x76, 0xe7, 0xd7, 0x63, 0xfc, 0x75, 0xb4, 0x32, 0x30, 0x8f,
-  0xca, 0xdf, 0xf1, 0xe7, 0x21, 0x06, 0xd0, 0xfb, 0x9c, 0xbd, 0x96, 0x5a,
-  0x8f, 0x7c, 0x3a, 0x4b, 0xf3, 0xe1, 0xf0, 0x04, 0xfd, 0x9a, 0x65, 0x82,
-  0x66, 0xaa, 0x8a, 0xde, 0x34, 0xbf, 0xa2, 0x0e, 0x61, 0xb3, 0x4f, 0xa3,
-  0x6a, 0x73, 0xd3, 0xef, 0xf7, 0x6b, 0xd2, 0x84, 0x4d, 0x6d, 0xf9, 0xd9,
-  0x5f, 0x0e, 0x87, 0x7f, 0xd8, 0xdc, 0x24, 0x70, 0x81, 0x55, 0x2c, 0xb7,
-  0x7e, 0xbe, 0xbb, 0xb9, 0xb5, 0x16, 0xb2, 0x36, 0x3c, 0xe4, 0x73, 0xb2,
-  0x3e, 0xdc, 0x73, 0x41, 0xf9, 0xff, 0x82, 0xa5, 0x62, 0x06, 0x1e, 0xa7,
-  0x58, 0x53, 0x8a, 0x41, 0x26, 0x93, 0x56, 0x4b, 0xc5, 0xb6, 0x1e, 0x06,
-  0x2b, 0xfd, 0x8a, 0xeb, 0x19, 0x7a, 0x3c, 0xff, 0xbd, 0x9e, 0x61, 0x68,
-  0x03, 0xca, 0xc0, 0x8d, 0xb2, 0x1a, 0xf3, 0xa6, 0x0c, 0xc3, 0x76, 0xb2,
-  0x93, 0xbb, 0xae, 0xac, 0x6a, 0x34, 0xd8, 0x48, 0xd9, 0xda, 0x8f, 0x63,
-  0xa1, 0x56, 0xa0, 0x70, 0xc2, 0x4b, 0x93, 0x96, 0x19, 0xf5, 0x22, 0xe6,
-  0x20, 0x3c, 0x6a, 0x4e, 0xbe, 0xb6, 0xa1, 0xbf, 0x73, 0x8a, 0x9a, 0xa3,
-  0x7a, 0x95, 0xb6, 0xa4, 0xf7, 0xf4, 0x40, 0x6e, 0xf4, 0x82, 0x23, 0xfe,
-  0xde, 0xc2, 0x80, 0x0c, 0x7f, 0xd7, 0xe3, 0xf4, 0x4b, 0x04, 0x02, 0x13,
-  0x84, 0x44, 0xfa, 0x51, 0x5f, 0x06, 0x6f, 0x08, 0x89, 0xf2, 0x22, 0xda,
-  0x9f, 0xc0, 0x4a, 0x26, 0x61, 0x14, 0xb5, 0x23, 0xca, 0x2f, 0x8d, 0xfe,
-  0x92, 0x96, 0x17, 0x69, 0x59, 0x54, 0x2d, 0x68, 0x25, 0x1a, 0x58, 0x50,
-  0x33, 0x11, 0x9d, 0x03, 0x86, 0x91, 0x26, 0x93, 0x7e, 0x2c, 0x0e, 0xb9,
-  0x48, 0xb6, 0xcb, 0xc3, 0xf8, 0x5f, 0x21, 0x94, 0x27, 0x3c, 0x91, 0x55,
-  0x72, 0x99, 0xe2, 0x9f, 0x84, 0x7b, 0x31, 0xc6, 0x2f, 0x25, 0x13, 0xf8,
-  0x77, 0xd1, 0x76, 0x49, 0xac, 0x08, 0xf3, 0xaf, 0xc0, 0xad, 0xc2, 0xa3,
-  0xa1, 0xb8, 0x22, 0x8c, 0x60, 0x99, 0x87, 0xf4, 0xe9, 0xac, 0x18, 0x0a,
-  0xb3, 0x51, 0xd6, 0x59, 0xa5, 0xfd, 0xae, 0xe1, 0x9a, 0x0d, 0x1f, 0xba,
-  0x76, 0xf0, 0x5f, 0x7d, 0x3d, 0xc0, 0x26, 0x31, 0x0e, 0xd6, 0xe3, 0xf2,
-  0x8e, 0x8d, 0x4d, 0x9d, 0x22, 0x12, 0x8a, 0xd9, 0x28, 0x86, 0x84, 0x92,
-  0xf1, 0x7e, 0xbd, 0x40, 0xa2, 0xf2, 0x86, 0xcb, 0x56, 0xfa, 0xc2, 0x7e,
-  0xa8, 0x9c, 0xf8, 0x80, 0x61, 0x5c, 0x5d, 0x0a, 0x52, 0x06, 0x32, 0x02,
-  0x45, 0x8d, 0xd9, 0x87, 0x22, 0xb8, 0x8d, 0x82, 0x9c, 0x89, 0xbe, 0xd4,
-  0xbe, 0xe8, 0x91, 0x7e, 0xaa, 0x26, 0x27, 0x29, 0x61, 0xf0, 0x5b, 0xe7,
-  0x19, 0x4b, 0xcf, 0x9e, 0xc3, 0x88, 0xdd, 0xaf, 0x84, 0xea, 0x12, 0xdd,
-  0x96, 0xd8, 0xbc, 0x2f, 0x77, 0xb3, 0x8e, 0x3b, 0x3b, 0x8d, 0x48, 0x7f,
-  0x3f, 0xe0, 0x89, 0x09, 0xf7, 0x01, 0xe2, 0x62, 0x56, 0xba, 0x03, 0x65,
-  0x5a, 0x5c, 0x06, 0x69, 0xdd, 0x6b, 0xf8, 0xde, 0x7f, 0x7c, 0xb6, 0x18,
-  0x25, 0x00, 0x71, 0x77, 0x92, 0x89, 0x40, 0x7c, 0x4a, 0xc4, 0x8c, 0x4a,
-  0xf3, 0x24, 0x94, 0x60, 0x3c, 0x73, 0xda, 0x7a, 0xc2, 0x77, 0xa2, 0xe2,
-  0x5c, 0xe2, 0x3d, 0x3c, 0xca, 0x79, 0x7a, 0xf7, 0x08, 0x0c, 0xa8, 0x87,
-  0x78, 0xd3, 0x5a, 0xa4, 0x21, 0x3f, 0xfa, 0x2f, 0xe1, 0x5a, 0x03, 0xcd,
-  0x41, 0xd0, 0x0a, 0x83, 0xd1, 0xaf, 0x12, 0xe7, 0x89, 0x09, 0xbd, 0x24,
-  0x26, 0xfd, 0x62, 0x1f, 0xe8, 0x95, 0x7a, 0x3d, 0x4b, 0x86, 0x0d, 0x34,
-  0xe7, 0xbb, 0x6c, 0x3a, 0x9f, 0x5a, 0xbf, 0x2e, 0xbd, 0x87, 0x92, 0x82,
-  0x50, 0xab, 0x4d, 0x72, 0x07, 0x83, 0x21, 0xc7, 0x64, 0x65, 0xb5, 0x23,
-  0xaf, 0x05, 0xdc, 0x8a, 0x16, 0x8f, 0x95, 0x04, 0x1e, 0xb5, 0xb3, 0xd2,
-  0x86, 0x13, 0x0a, 0x5c, 0xc0, 0x84, 0xc6, 0xa8, 0xb1, 0xd4, 0xa2, 0x93,
-  0xd1, 0x9d, 0x78, 0xbe, 0x4f, 0x02, 0x5f, 0x89, 0x66, 0x99, 0x88, 0x65,
-  0x9a, 0x0c, 0x7b, 0x4a, 0x31, 0xbe, 0x47, 0x1c, 0x66, 0xa6, 0x4b, 0x92,
-  0xcb, 0xcc, 0x0f, 0x7f, 0xe7, 0x4b, 0x55, 0x44, 0xd0, 0xbb, 0x80, 0x91,
-  0x6e, 0xb3, 0x71, 0x7d, 0x3d, 0xc0, 0xd8, 0x9d, 0x7a, 0x0e, 0x2a, 0x81,
-  0x24, 0xc6, 0xc0, 0x72, 0x16, 0x82, 0x47, 0x0b, 0x42, 0xc8, 0x08, 0x47,
-  0x10, 0x6d, 0x23, 0x4e, 0xa3, 0xc2, 0x22, 0x62, 0x52, 0x2d, 0x28, 0x0c,
-  0xbd, 0xce, 0x46, 0x8a, 0x01, 0xb2, 0x4f, 0x40, 0x12, 0x5c, 0x5e, 0x66,
-  0x77, 0x7e, 0xa4, 0x4c, 0x81, 0xcc, 0x06, 0x7a, 0xe6, 0xf1, 0x54, 0xae,
-  0x7c, 0xe2, 0x8e, 0xd2, 0x7f, 0x11, 0x59, 0xcb, 0x6d, 0x86, 0xa8, 0x5d,
-  0x36, 0xe7, 0xc8, 0x50, 0x63, 0xf4, 0x4f, 0xd9, 0xa4, 0x08, 0x06, 0xc1,
-  0x41, 0x0e, 0xac, 0x4c, 0x79, 0x84, 0xb7, 0x2b, 0x1a, 0xa2, 0x43, 0xc0,
-  0xe6, 0xab, 0x44, 0x7e, 0xcf, 0x08, 0xed, 0x2b, 0x57, 0xfc, 0xd0, 0xd7,
-  0xf6, 0x21, 0xaf, 0xba, 0x5c, 0x5e, 0xe1, 0xdb, 0x8b, 0x17, 0x01, 0x0f,
-  0xae, 0x7e, 0xea, 0x47, 0x60, 0x5b, 0x7c, 0xdd, 0x8f, 0xce, 0xc1, 0x4e,
-  0x58, 0x23, 0xe3, 0x62, 0x73, 0x63, 0x6b, 0x87, 0x9a, 0xdb, 0x8d, 0x59,
-  0xa1, 0x0d, 0xb4, 0x12, 0x65, 0xc7, 0xd7, 0xe6, 0x27, 0xa4, 0x19, 0x3e,
-  0x3e, 0xb0, 0x85, 0x84, 0x88, 0x43, 0xf3, 0x97, 0x7e, 0xb4, 0x3d, 0xa5,
-  0x1d, 0xdf, 0xfc, 0xba, 0x03, 0xba, 0x07, 0x58, 0xd3, 0x36, 0xf4, 0x2b,
-  0xae, 0xb2, 0x91, 0x20, 0x45, 0xa3, 0xf8, 0xc6, 0xc3, 0x7b, 0xa5, 0x89,
-  0x68, 0x86, 0x3f, 0x78, 0x93, 0xbc, 0xcc, 0xb5, 0xbc, 0x30, 0xad, 0x7d,
-  0xb5, 0x3b, 0x12, 0x52, 0x18, 0xa4, 0xfd, 0x35, 0xfa, 0xa6, 0xa8, 0xe7,
-  0x55, 0x82, 0xf5, 0xfb, 0x59, 0x31, 0xe6, 0x4b, 0xd1, 0x14, 0x45, 0xa2,
-  0x05, 0x1a, 0x7b, 0x88, 0x08, 0xe3, 0x20, 0x0a, 0x8e, 0x94, 0xf6, 0xe3,
-  0x71, 0xd5, 0x0a, 0x9e, 0xf8, 0x6f, 0x78, 0x6c, 0x69, 0x5a, 0x7c, 0x52,
-  0x0d, 0x70, 0x18, 0x23, 0xf4, 0x59, 0xc5, 0xac, 0xad, 0xf6, 0x23, 0xcf,
-  0xce, 0xd0, 0xcc, 0x87, 0x4b, 0x5f, 0x7a, 0x11, 0x4f, 0x29, 0xf4, 0x37,
-  0xc2, 0x16, 0xb9, 0x82, 0x44, 0x8e, 0x34, 0x8a, 0x0d, 0x8d, 0xaa, 0x09,
-  0x3e, 0x30, 0xb9, 0xef, 0xfb, 0x14, 0xa0, 0x6a, 0x37, 0x34, 0x69, 0x95,
-  0x64, 0xee, 0x94, 0x2c, 0x6d, 0x43, 0x71, 0xd2, 0xdf, 0xe8, 0x6e, 0xaf,
-  0xba, 0xc5, 0xa4, 0x11, 0x68, 0x9b, 0xc0, 0x26, 0x4b, 0x60, 0xcd, 0x35,
-  0xdf, 0xdc, 0x78, 0xea, 0x9b, 0x6f, 0x97, 0x13, 0xcc, 0xde, 0x0e, 0x93,
-  0x6a, 0x71, 0x6f, 0x7f, 0xda, 0xf2, 0x18, 0x34, 0x5b, 0xa7, 0x04, 0xbb,
-  0x84, 0x9d, 0x9d, 0x9e, 0x6d, 0xaf, 0x19, 0x8c, 0x57, 0x46, 0x65, 0x11,
-  0x74, 0x6c, 0xd3, 0x35, 0xcc, 0x09, 0x0c, 0xb2, 0x95, 0x49, 0xc0, 0x76,
-  0xbe, 0x93, 0x8c, 0x5a, 0x2b, 0xd3, 0x55, 0x46, 0xdf, 0xa3, 0x44, 0x06,
-  0x0b, 0x1b, 0x94, 0xd2, 0x15, 0x4b, 0x4e, 0x51, 0x2b, 0xac, 0x6d, 0x6f,
-  0xb6, 0xf6, 0xed, 0x97, 0x60, 0x75, 0x94, 0x60, 0x6e, 0x50, 0x5f, 0x80,
-  0x98, 0x00, 0xf3, 0x22, 0x83, 0x0b, 0x4b, 0xd8, 0x72, 0x70, 0x80, 0xda,
-  0x93, 0xe4, 0x3a, 0x8f, 0x40, 0x72, 0xab, 0x64, 0xfb, 0xd9, 0x07, 0x29,
-  0xd1, 0xc2, 0x28, 0x03, 0xac, 0xc0, 0x9a, 0xdc, 0x6a, 0x0c, 0x9e, 0xa1,
-  0xa9, 0x4b, 0x2b, 0xf3, 0x40, 0x67, 0x93, 0x16, 0x86, 0x0d, 0x5d, 0x20,
-  0x48, 0x9c, 0x86, 0x87, 0x89, 0x60, 0x1b, 0x09, 0xda, 0xed, 0xdd, 0xc9,
-  0xf0, 0xdc, 0x49, 0x06, 0x6a, 0x4b, 0xd7, 0xd4, 0x14, 0x86, 0x3b, 0x09,
-  0xe4, 0x4e, 0xf1, 0xc4, 0xc9, 0xf1, 0xf0, 0xdc, 0xe3, 0x6e, 0xc4, 0x63,
-  0xd9, 0x8b, 0x86, 0x18, 0xd4, 0x75, 0xf0, 0xd2, 0x69, 0xf7, 0xa4, 0x09,
-  0x0c, 0x67, 0x39, 0x69, 0x54, 0x38, 0x2b, 0x9d, 0x34, 0x19, 0x7f, 0x12,
-  0x38, 0xc5, 0x3f, 0xb3, 0xc7, 0x58, 0xc0, 0x20, 0x34, 0x0b, 0xa6, 0x9a,
-  0x5f, 0xc4, 0x4e, 0x5f, 0x35, 0xb6, 0x23, 0xee, 0xa7, 0x17, 0x05, 0x46,
-  0x7c, 0x41, 0x15, 0xfb, 0xe4, 0x8b, 0xa8, 0x55, 0xe1, 0x2b, 0x26, 0x91,
-  0x74, 0xe2, 0x6b, 0xc4, 0x40, 0x47, 0xd2, 0x66, 0x98, 0xbc, 0xf3, 0xf8,
-  0xf4, 0xa3, 0x98, 0x0b, 0x09, 0xe1, 0x26, 0x55, 0x01, 0xe5, 0x66, 0x1c,
-  0x70, 0x6d, 0x62, 0xbb, 0x60, 0xf2, 0xd5, 0x92, 0x09, 0x67, 0x02, 0x2b,
-  0x4b, 0x69, 0x98, 0xcc, 0x7d, 0x84, 0xd2, 0x90, 0xb2, 0x9b, 0xde, 0xcc,
-  0xba, 0xa3, 0x09, 0x6b, 0x9c, 0x8d, 0xb9, 0x8a, 0xaf, 0x6a, 0xb6, 0xc5,
-  0x63, 0x5c, 0x68, 0x14, 0xc0, 0x94, 0xe2, 0x85, 0x8d, 0x05, 0xaa, 0x8e,
-  0x9d, 0xe4, 0x48, 0x46, 0xa3, 0x46, 0xbf, 0x81, 0x40, 0xd9, 0x0f, 0x35,
-  0x19, 0x0a, 0xb5, 0xb8, 0xa8, 0x8b, 0x48, 0x31, 0xf8, 0x3f, 0x1c, 0xbf,
-  0x3a, 0x69, 0x77, 0x89, 0x20, 0x2c, 0x01, 0xb3, 0x54, 0x84, 0xff, 0xd1,
-  0x2b, 0x84, 0x76, 0xc4, 0xab, 0xe3, 0x9d, 0xe7, 0x19, 0x7c, 0x3f, 0x62,
-  0x93, 0xf0, 0x32, 0x63, 0x55, 0xee, 0xda, 0x6a, 0x37, 0x95, 0x76, 0x91,
-  0x45, 0x1a, 0x38, 0x28, 0x39, 0x74, 0xb4, 0x3b, 0x40, 0x18, 0x96, 0x57,
-  0x68, 0x45, 0x88, 0x85, 0x3b, 0x48, 0x75, 0x63, 0x26, 0xff, 0x15, 0x09,
-  0x48, 0x5d, 0x6d, 0x17, 0x42, 0x7a, 0x12, 0x88, 0xc3, 0x44, 0xba, 0xef,
-  0x80, 0x32, 0xb4, 0x4e, 0x68, 0x7e, 0x9e, 0x7e, 0x8b, 0x86, 0x0e, 0xb6,
-  0xa2, 0x30, 0x85, 0x4a, 0xcd, 0xee, 0x12, 0x45, 0x29, 0x28, 0x80, 0xab,
-  0xaf, 0xdf, 0x9f, 0xbe, 0x8d, 0xcf, 0x4f, 0xd7, 0x90, 0x17, 0x69, 0xe8,
-  0xee, 0xc4, 0xe4, 0x4a, 0x53, 0x9c, 0x1d, 0xc4, 0x7a, 0x09, 0x50, 0xac,
-  0x56, 0xd8, 0x69, 0xcc, 0x22, 0x71, 0xd2, 0xf4, 0xf4, 0x2d, 0x0f, 0xb2,
-  0x27, 0x67, 0x65, 0x98, 0x94, 0x26, 0x60, 0xd8, 0x51, 0x82, 0xe6, 0x97,
-  0xa6, 0xc1, 0x38, 0x85, 0xa4, 0x17, 0xd8, 0xc2, 0xa9, 0xba, 0x8f, 0x04,
-  0x6f, 0xb1, 0x42, 0x76, 0xa8, 0x02, 0xe8, 0x9e, 0x26, 0x57, 0xc3, 0x34,
-  0xe9, 0x40, 0xc4, 0x37, 0x06, 0xfb, 0xaa, 0x0b, 0x10, 0x11, 0x49, 0x59,
-  0x16, 0xb7, 0xaa, 0x2a, 0x10, 0x42, 0x2d, 0xf0, 0x0a, 0x4c, 0x1d, 0xb9,
-  0xa1, 0xbc, 0xef, 0xc6, 0x59, 0xe4, 0x0e, 0x3d, 0xd2, 0x4a, 0x63, 0x69,
-  0x87, 0xbb, 0xb3, 0x53, 0x78, 0xf5, 0xc6, 0xdb, 0x1b, 0xcb, 0x62, 0xf1,
-  0xb9, 0xf8, 0xad, 0x6d, 0x1e, 0xc0, 0x09, 0xc6, 0x75, 0x39, 0x47, 0xfc,
-  0xc6, 0x8e, 0xc2, 0xb7, 0x13, 0x4a, 0x06, 0x6c, 0x81, 0x7f, 0xf4, 0xa5,
-  0x83, 0x1b, 0x16, 0x3b, 0xa0, 0xe3, 0xd4, 0xe2, 0xcf, 0x5d, 0x4b, 0x35,
-  0xec, 0x9f, 0x3c, 0x21, 0x24, 0xed, 0x70, 0xd1, 0x00, 0x9f, 0x4c, 0x2c,
-  0xfc, 0x87, 0x54, 0x11, 0x65, 0xd8, 0xd5, 0x12, 0x0e, 0xa7, 0xa6, 0x95,
-  0x53, 0x63, 0x22, 0x12, 0x68, 0xf8, 0x53, 0xcf, 0x58, 0xc2, 0x1f, 0xb2,
-  0xd0, 0xae, 0xcb, 0x62, 0x3c, 0x1f, 0x11, 0x0f, 0x60, 0x4e, 0x4b, 0x56,
-  0xdf, 0x47, 0x17, 0xdc, 0x20, 0x52, 0x91, 0xb3, 0x71, 0x68, 0x8b, 0x7b,
-  0xc2, 0xce, 0xe6, 0xb6, 0x4a, 0xcd, 0x4f, 0x21, 0x3e, 0x27, 0x45, 0x0c,
-  0xc8, 0x56, 0xa2, 0xaa, 0xc9, 0x94, 0x2d, 0xa7, 0xb2, 0xed, 0x8f, 0xc2,
-  0x74, 0x89, 0x68, 0x55, 0x5a, 0x19, 0x79, 0x12, 0x17, 0x9b, 0xae, 0x53,
-  0xc7, 0x69, 0xcd, 0xdd, 0x4a, 0xd8, 0x9e, 0xa6, 0xbc, 0xc8, 0xaf, 0x92,
-  0x0a, 0x24, 0x6b, 0x73, 0xbc, 0xb5, 0xa7, 0xf0, 0x85, 0xbb, 0x7b, 0x51,
-  0x4c, 0x4e, 0xa9, 0x72, 0xcf, 0xf6, 0x1d, 0x5e, 0x86, 0x49, 0x42, 0x7d,
-  0x57, 0x4f, 0xfa, 0xce, 0x77, 0x3a, 0xb8, 0xe3, 0xf8, 0xd2, 0x4d, 0xcd,
-  0x93, 0x64, 0x64, 0x67, 0x5f, 0x45, 0xf6, 0x50, 0x93, 0xb5, 0x2b, 0x4e,
-  0x82, 0x43, 0xa4, 0x94, 0x80, 0x0c, 0x4f, 0x40, 0x55, 0xc1, 0xd8, 0x1e,
-  0x6a, 0x06, 0xfa, 0xd1, 0x68, 0x55, 0xa1, 0x13, 0x0d, 0xb6, 0xd5, 0x89,
-  0xfc, 0x6a, 0xcf, 0x80, 0x3b, 0xa2, 0xe4, 0x6f, 0x0d, 0xb7, 0xfd, 0xdd,
-  0x77, 0xce, 0xe5, 0x8f, 0x3e, 0x99, 0xb5, 0xbe, 0x8f, 0x9f, 0xe3, 0x22,
-  0x1f, 0x8d, 0x0b, 0x77, 0xba, 0x9e, 0x59, 0xc2, 0x7c, 0x0d, 0xfa, 0x93,
-  0xa4, 0x58, 0x2a, 0x20, 0x77, 0x5d, 0x5c, 0xa5, 0x74, 0x39, 0xb0, 0x4b,
-  0x1b, 0xd3, 0x78, 0x6d, 0x1e, 0x2f, 0xeb, 0x53, 0xf1, 0x71, 0xa0, 0x5c,
-  0x90, 0xee, 0x25, 0x4d, 0xc1, 0x35, 0xc5, 0xd7, 0x4d, 0x62, 0x55, 0xd6,
-  0x59, 0x7d, 0x8d, 0x91, 0x6b, 0x69, 0x4f, 0x3d, 0x8f, 0x03, 0x8d, 0xc8,
-  0x2c, 0x5b, 0x56, 0x02, 0xb1, 0x4e, 0xeb, 0xa2, 0x2b, 0x04, 0x59, 0xb8,
-  0x92, 0x8a, 0xc1, 0x51, 0x99, 0x8a, 0xab, 0xb3, 0x32, 0x1d, 0xe0, 0xbd,
-  0x14, 0x2c, 0x6c, 0xff, 0x30, 0xe1, 0xc4, 0x37, 0x0e, 0x70, 0x25, 0xce,
-  0xa9, 0xb4, 0x99, 0x7d, 0xad, 0x3d, 0x63, 0xdc, 0x9e, 0xac, 0x0e, 0xf9,
-  0x75, 0xb4, 0x45, 0x10, 0xf5, 0x79, 0x2a, 0xd8, 0xcf, 0x3f, 0x4a, 0x67,
-  0xb5, 0xb9, 0x97, 0xff, 0xa4, 0x5c, 0x3b, 0x68, 0x24, 0x5c, 0xf8, 0x96,
-  0x79, 0x8b, 0xe9, 0xa9, 0x7e, 0x02, 0x3b, 0x96, 0x62, 0x25, 0xc9, 0x35,
-  0x0b, 0xee, 0x6b, 0x8c, 0xdc, 0x69, 0x96, 0x19, 0x1b, 0x0e, 0x84, 0x94,
-  0x32, 0x45, 0xf3, 0xdf, 0x47, 0x8f, 0xb0, 0x92, 0x81, 0x5b, 0x24, 0xa0,
-  0x34, 0x33, 0x0d, 0xa5, 0xd8, 0xdd, 0x8f, 0xd1, 0x49, 0x7a, 0xac, 0xea,
-  0x4a, 0x3c, 0xb6, 0x69, 0x19, 0x3c, 0x42, 0xe5, 0xd2, 0x8c, 0x94, 0x91,
-  0xcb, 0x46, 0x8e, 0x73, 0xc6, 0x08, 0x5e, 0x88, 0xd5, 0xde, 0x8f, 0x3a,
-  0x88, 0x66, 0x41, 0xe2, 0x5c, 0xec, 0xa2, 0x06, 0x24, 0x15, 0x02, 0xa3,
-  0xcb, 0xc8, 0x92, 0xed, 0xcd, 0x2c, 0xef, 0x59, 0x17, 0x55, 0xb4, 0xbd,
-  0xb1, 0xd9, 0x87, 0xff, 0x6c, 0xa1, 0x87, 0x1b, 0xfe, 0xdc, 0x36, 0x88,
-  0x0d, 0x8d, 0x63, 0x22, 0x90, 0x38, 0xe8, 0x21, 0x65, 0x2f, 0x0e, 0x9c,
-  0xa5, 0xbb, 0xbb, 0x00, 0x72, 0x75, 0x13, 0xe3, 0x24, 0x5e, 0x30, 0x55,
-  0x4b, 0x48, 0x4a, 0x08, 0x99, 0x7b, 0x31, 0x21, 0xc5, 0x59, 0x10, 0x2c,
-  0xf6, 0x20, 0xaa, 0x18, 0xc1, 0xa6, 0xb5, 0x9b, 0xfa, 0xc8, 0x86, 0xbb,
-  0xf0, 0xfc, 0xb4, 0x89, 0x48, 0x15, 0x69, 0xb8, 0x01, 0x2b, 0xbd, 0xeb,
-  0x2a, 0x90, 0xc7, 0x5d, 0x76, 0x7a, 0xae, 0x63, 0x67, 0x41, 0x95, 0x35,
-  0x0a, 0xb8, 0xc3, 0x3a, 0x4a, 0x52, 0xef, 0x61, 0xe6, 0x24, 0xf0, 0x37,
-  0x12, 0xd1, 0x3b, 0xcc, 0xfc, 0x0b, 0x2d, 0x49, 0xe1, 0x7f, 0x6d, 0x07,
-  0x1d, 0x2f, 0xda, 0x1f, 0x34, 0xad, 0xad, 0xbe, 0x6b, 0xf5, 0xb3, 0x46,
-  0xe6, 0x10, 0xb7, 0x66, 0xe5, 0xe7, 0x43, 0xc1, 0x4b, 0x76, 0xac, 0x59,
-  0x47, 0x5b, 0x95, 0x4e, 0x04, 0x30, 0x7b, 0x5e, 0x2d, 0x9b, 0x4b, 0x7a,
-  0xb2, 0x64, 0xb0, 0x47, 0x53, 0xb7, 0x78, 0xc1, 0xc9, 0xa4, 0x8e, 0xab,
-  0x9b, 0x51, 0x53, 0xb3, 0xc0, 0xd0, 0x9f, 0x12, 0x71, 0x5f, 0xfe, 0xe2,
-  0x85, 0x7d, 0x8e, 0xdf, 0x1e, 0x88, 0x49, 0x1e, 0x0d, 0xdf, 0x12, 0x9e,
-  0xaf, 0xe3, 0x50, 0xa5, 0x31, 0xcc, 0x46, 0x88, 0xce, 0x38, 0x9e, 0x97,
-  0x0c, 0x2b, 0x86, 0x97, 0x4d, 0xfb, 0x0a, 0x6f, 0xdc, 0xa7, 0x9d, 0x5c,
-  0x84, 0xc3, 0x78, 0x63, 0x6b, 0x9e, 0xa5, 0xc1, 0xb0, 0xb5, 0x06, 0x50,
-  0x47, 0xde, 0x08, 0xc7, 0x7c, 0x50, 0x0b, 0xb1, 0x10, 0x61, 0x32, 0xbb,
-  0xd6, 0x44, 0xa2, 0x83, 0xda, 0x64, 0x72, 0x93, 0x3c, 0xc6, 0x65, 0xb7,
-  0xb9, 0x88, 0x88, 0x80, 0xf4, 0x44, 0x42, 0x98, 0x78, 0x47, 0x63, 0x9e,
-  0xec, 0x0e, 0x9c, 0x3a, 0xa9, 0x9a, 0x4e, 0x6a, 0xa6, 0x87, 0xda, 0x70,
-  0x45, 0x91, 0x6b, 0x59, 0x61, 0xc4, 0xb8, 0x5f, 0x11, 0xd9, 0x77, 0x0c,
-  0xb7, 0xbd, 0xb5, 0xfd, 0x62, 0xa7, 0xcf, 0x7f, 0xdf, 0xdd, 0x78, 0xc9,
-  0xcc, 0x7b, 0x7c, 0x74, 0xfe, 0x3a, 0x1a, 0x97, 0x70, 0x74, 0xda, 0x81,
-  0x0a, 0xfc, 0x59, 0x9c, 0x26, 0xe5, 0x35, 0x58, 0x92, 0xd8, 0x59, 0x23,
-  0xae, 0xa6, 0xf5, 0x2c, 0xde, 0xd8, 0x08, 0xa5, 0x6e, 0xfe, 0x8b, 0x23,
-  0x56, 0x4d, 0x5e, 0x5b, 0x39, 0xf8, 0x70, 0xfe, 0xe6, 0xf3, 0xff, 0x5c,
-  0x89, 0xb2, 0x69, 0x32, 0x5b, 0x5e, 0xf7, 0x69, 0x94, 0xec, 0xb7, 0x80,
-  0x45, 0xd0, 0x58, 0x8c, 0x71, 0x6f, 0xbb, 0xfb, 0x95, 0x36, 0xb9, 0xd8,
-  0xf4, 0xfa, 0x96, 0xc7, 0x1b, 0x19, 0x74, 0xca, 0x33, 0x6c, 0xbd, 0xf2,
-  0x1b, 0x01, 0x27, 0x4e, 0x5b, 0xeb, 0xb4, 0x5d, 0x32, 0x57, 0xd9, 0x40,
-  0xad, 0xef, 0xd7, 0xe8, 0x16, 0x43, 0xd7, 0xf8, 0xc5, 0x14, 0xc3, 0x4e,
-  0x63, 0xb5, 0x4f, 0x83, 0xe0, 0xb5, 0x95, 0x20, 0xf3, 0x95, 0x29, 0x36,
-  0x26, 0x62, 0x6d, 0x3c, 0x67, 0x49, 0xff, 0xb4, 0x9e, 0x4d, 0x96, 0x2c,
-  0x48, 0xc1, 0x2f, 0x1d, 0x82, 0xa7, 0xd8, 0x52, 0x9e, 0x9c, 0x1e, 0xc8,
-  0x2d, 0x8f, 0x07, 0x31, 0xa2, 0x11, 0xcb, 0xd1, 0x4c, 0x73, 0xd2, 0xe9,
-  0xdf, 0xa8, 0x23, 0x79, 0xbb, 0x41, 0x8a, 0xd3, 0x13, 0x77, 0xc3, 0xaa,
-  0xa8, 0x1c, 0x85, 0xa0, 0x89, 0x1a, 0x2c, 0xb0, 0x40, 0xa5, 0x29, 0x9e,
-  0xdf, 0xe6, 0x2c, 0x96, 0x20, 0x10, 0xcd, 0xb4, 0x4d, 0xa0, 0x5f, 0x93,
-  0x3e, 0xb8, 0x03, 0x1e, 0x7d, 0xf0, 0xa1, 0x98, 0xec, 0x33, 0xb4, 0x3e,
-  0xab, 0x30, 0x81, 0xbe, 0x75, 0x41, 0x94, 0xb9, 0x5b, 0x51, 0x61, 0xbd,
-  0xf4, 0xa0, 0xc0, 0x64, 0x33, 0x8c, 0xaa, 0xc1, 0x99, 0xb5, 0x05, 0xf1,
-  0xc1, 0x1b, 0x89, 0x8c, 0xc1, 0x0b, 0x6a, 0x41, 0x84, 0x42, 0x0c, 0x2c,
-  0x60, 0x74, 0xd0, 0x89, 0x5a, 0x7a, 0x89, 0xf6, 0x37, 0x4a, 0xa1, 0x5a,
-  0x23, 0xf1, 0xea, 0x30, 0xd1, 0xf1, 0x3d, 0x45, 0x8f, 0x9c, 0x89, 0xef,
-  0x0f, 0xcf, 0xce, 0xa3, 0xf3, 0x53, 0xd7, 0x09, 0xc6, 0x68, 0xac, 0x84,
-  0x23, 0x05, 0x16, 0x79, 0x19, 0x0e, 0x2d, 0xe9, 0x44, 0x4d, 0xf7, 0x6a,
-  0xf5, 0x20, 0xb1, 0xd2, 0x40, 0xe5, 0x37, 0x33, 0xc1, 0x0c, 0x6d, 0x52,
-  0x2b, 0x80, 0x80, 0x43, 0xd4, 0x6b, 0x47, 0x63, 0xd9, 0x8e, 0x30, 0x55,
-  0x99, 0x8e, 0x35, 0xc1, 0xa5, 0x82, 0x11, 0x4f, 0xaf, 0x0a, 0xe4, 0x30,
-  0xbb, 0x75, 0x55, 0x8a, 0x5e, 0x26, 0xc8, 0x67, 0x37, 0xc9, 0x24, 0x1b,
-  0x3b, 0x54, 0x09, 0x46, 0x43, 0x08, 0x14, 0xd0, 0x3e, 0x43, 0xa9, 0x4c,
-  0x57, 0x54, 0xda, 0x49, 0xe4, 0x42, 0x7a, 0xa9, 0xbb, 0x41, 0x92, 0x56,
-  0x30, 0x7a, 0x38, 0x49, 0xae, 0x7c, 0x4b, 0xd5, 0xc9, 0x91, 0x72, 0xa0,
-  0x82, 0x6a, 0xbb, 0x97, 0xd4, 0xd9, 0xcc, 0xdb, 0x4f, 0x8e, 0x90, 0xfb,
-  0xde, 0x2e, 0xda, 0x19, 0xf2, 0xad, 0xe1, 0xda, 0x29, 0x99, 0x32, 0x43,
-  0xfc, 0x2d, 0x6e, 0x0c, 0x57, 0x58, 0xb1, 0xdf, 0xda, 0xd7, 0x27, 0x1d,
-  0xaa, 0x16, 0x7b, 0x37, 0x8e, 0x06, 0x28, 0x51, 0x75, 0xe3, 0xac, 0xf9,
-  0x67, 0xec, 0x31, 0x47, 0xac, 0x59, 0x3b, 0xfc, 0x32, 0x70, 0x23, 0xd0,
-  0xd7, 0x96, 0x95, 0x41, 0xec, 0x0b, 0x36, 0x8d, 0x63, 0xc9, 0x33, 0x49,
-  0x5e, 0x13, 0xbc, 0xe1, 0xe1, 0x57, 0x9c, 0x09, 0xe1, 0xd9, 0xa1, 0x9c,
-  0x34, 0xf7, 0x3e, 0x9d, 0xa5, 0x49, 0xa3, 0xc6, 0xbe, 0x79, 0xb9, 0x1a,
-  0xb8, 0x5d, 0xf2, 0x4d, 0x9a, 0x70, 0x9b, 0xbf, 0x59, 0x9d, 0x3c, 0xc6,
-  0x6e, 0x6c, 0xf1, 0x34, 0x33, 0x68, 0x99, 0x11, 0x9b, 0x8d, 0x4a, 0xc1,
-  0xd5, 0x6f, 0xde, 0xbf, 0xfe, 0x9b, 0xee, 0xe1, 0x5a, 0x5f, 0x78, 0xb9,
-  0xe3, 0x3b, 0x4e, 0x32, 0x8e, 0x4d, 0x3f, 0x10, 0x94, 0xf4, 0x06, 0x05,
-  0xf8, 0x5f, 0xfc, 0xcf, 0x00, 0x5e, 0x1a, 0xf7, 0x53, 0x8e, 0x56, 0x31,
-  0x91, 0x0a, 0x9e, 0x1b, 0x8a, 0x9b, 0x6d, 0x7b, 0xb0, 0x4b, 0xae, 0xf0,
-  0xd7, 0x87, 0xbb, 0xdb, 0x5b, 0x9b, 0x6b, 0x83, 0x68, 0xb5, 0x75, 0x99,
-  0xaf, 0x05, 0x97, 0xe9, 0xae, 0xb2, 0x41, 0x7b, 0xc4, 0x77, 0x40, 0x2e,
-  0x5f, 0x3d, 0xfa, 0xee, 0xec, 0x9d, 0xb7, 0x46, 0x58, 0x93, 0x97, 0x2a,
-  0xd7, 0xb5, 0x46, 0x6b, 0x01, 0x35, 0xc6, 0xd7, 0x0a, 0x27, 0x44, 0xe8,
-  0x8e, 0x02, 0xc9, 0x68, 0xaf, 0xcb, 0x0c, 0x2d, 0xf7, 0x1e, 0x92, 0xa4,
-  0x77, 0x52, 0xe4, 0x63, 0xb0, 0x7b, 0x4f, 0xb1, 0x59, 0x5c, 0xda, 0x03,
-  0xb3, 0xfc, 0xc1, 0xd5, 0x3d, 0xf6, 0x04, 0x35, 0xaf, 0xa5, 0x1c, 0x6c,
-  0x93, 0xa7, 0x1d, 0x15, 0xe7, 0x24, 0x3a, 0x87, 0xe4, 0x2d, 0x67, 0xf7,
-  0xe6, 0x7e, 0x5e, 0xf8, 0x5b, 0xfa, 0x21, 0xf5, 0x7f, 0x36, 0x50, 0xab,
-  0xd7, 0x73, 0x81, 0x78, 0x8d, 0xea, 0x50, 0xca, 0xc9, 0x83, 0x4b, 0xa2,
-  0xcf, 0x3c, 0x2a, 0xd1, 0xa3, 0xef, 0xa4, 0x8d, 0x38, 0x9d, 0x0b, 0x9a,
-  0xc7, 0xfb, 0x2e, 0xa6, 0x90, 0x12, 0x46, 0x32, 0xf6, 0x29, 0x7e, 0xff,
-  0x45, 0x17, 0x32, 0x40, 0xf4, 0xf6, 0xaf, 0xe7, 0xe7, 0x6b, 0xc1, 0x8c,
-  0x10, 0x7a, 0x7d, 0x55, 0x53, 0x1a, 0xd6, 0x58, 0x59, 0xe3, 0x94, 0xa0,
-  0xc2, 0xe3, 0x6c, 0x4e, 0xfe, 0x68, 0xa0, 0x29, 0x3a, 0x5e, 0xa1, 0xcc,
-  0xd4, 0xf0, 0x4b, 0xbc, 0x1d, 0xdd, 0x08, 0x04, 0x0e, 0xdf, 0x0f, 0x79,
-  0x72, 0x4c, 0xf0, 0xde, 0xf8, 0x60, 0xb8, 0xcb, 0x51, 0x92, 0x37, 0xbb,
-  0xce, 0x92, 0xd0, 0xa6, 0xbb, 0x28, 0xbd, 0xa3, 0x12, 0xda, 0x71, 0x1a,
-  0x3d, 0xf3, 0x2d, 0xd8, 0x03, 0xa9, 0xdb, 0x57, 0x83, 0x9d, 0x83, 0x29,
-  0xaa, 0xb6, 0x93, 0x75, 0x22, 0x2c, 0xd3, 0x0f, 0x26, 0x61, 0x84, 0xf4,
-  0x05, 0x4e, 0xc9, 0x60, 0x55, 0xa0, 0x9d, 0x94, 0xe1, 0x26, 0x61, 0x90,
-  0x58, 0xc0, 0x34, 0x0c, 0x2d, 0x5f, 0xf6, 0x5c, 0x26, 0x4e, 0x5a, 0x46,
-  0x77, 0x5e, 0x86, 0x9b, 0x89, 0xd1, 0xca, 0x99, 0x68, 0x7b, 0x10, 0x4d,
-  0x06, 0x45, 0xe3, 0xa4, 0xed, 0xbe, 0x08, 0x9c, 0xb4, 0x77, 0xa7, 0xe7,
-  0x47, 0x7b, 0xd2, 0x71, 0x49, 0x5b, 0x74, 0x48, 0xc9, 0xb3, 0xd4, 0xad,
-  0x50, 0x49, 0xab, 0x00, 0x6a, 0xa1, 0x54, 0xd6, 0x8d, 0xee, 0x87, 0xe4,
-  0x1b, 0x21, 0x41, 0xa0, 0x4c, 0xe0, 0x78, 0x66, 0xed, 0xd5, 0x1c, 0x68,
-  0x95, 0x01, 0xc1, 0x7a, 0x67, 0x0e, 0xa7, 0xd0, 0x86, 0xfb, 0x9d, 0x12,
-  0x08, 0x4e, 0x9f, 0x10, 0xea, 0x59, 0xf7, 0xf7, 0x78, 0x88, 0x35, 0x60,
-  0x72, 0x95, 0x0d, 0x1e, 0x71, 0xca, 0x9c, 0x63, 0xd1, 0x99, 0x47, 0xd0,
-  0x2d, 0x30, 0x6c, 0x46, 0x40, 0xfb, 0xb0, 0x89, 0x8b, 0x0d, 0x03, 0x52,
-  0x5f, 0x74, 0x35, 0xfc, 0xa9, 0xcd, 0xb9, 0xb2, 0x8d, 0x3b, 0xd4, 0xd1,
-  0xa6, 0xd6, 0xbc, 0x38, 0xa1, 0x4c, 0xc8, 0x3a, 0x3e, 0xf1, 0x9d, 0x36,
-  0xc6, 0xc3, 0x6c, 0x3a, 0x17, 0xf6, 0xd9, 0x16, 0x03, 0x53, 0x9d, 0xc0,
-  0x68, 0xc4, 0x9b, 0x87, 0x7a, 0x8b, 0xf5, 0x69, 0x61, 0x1c, 0x08, 0xa4,
-  0xcc, 0xbd, 0xe7, 0x52, 0x12, 0x17, 0xa2, 0xab, 0x23, 0x8b, 0x8d, 0x4b,
-  0xfe, 0x47, 0xca, 0x55, 0x97, 0x04, 0xab, 0xdd, 0x0d, 0xe7, 0x05, 0xaa,
-  0xe4, 0x5e, 0xd0, 0x06, 0x0f, 0xdf, 0x88, 0x37, 0x49, 0x23, 0x97, 0x54,
-  0xab, 0x79, 0xae, 0x5d, 0xb5, 0x7e, 0x67, 0xc3, 0xdb, 0xd9, 0xb1, 0x6d,
-  0x97, 0xa0, 0x4b, 0x71, 0x43, 0x23, 0xc4, 0xe0, 0xf0, 0x43, 0xb3, 0x7f,
-  0xd4, 0xfe, 0x65, 0xc9, 0x40, 0x45, 0xc9, 0x24, 0xea, 0xa8, 0x81, 0x7a,
-  0x2b, 0x5c, 0x21, 0x65, 0x49, 0xe8, 0xfd, 0x90, 0x27, 0xd9, 0xd0, 0xa3,
-  0x36, 0x14, 0x13, 0x6d, 0x77, 0x7b, 0x7b, 0x5d, 0x4c, 0xdc, 0x8c, 0x4a,
-  0x4f, 0x12, 0xd7, 0x04, 0x08, 0xe6, 0xf6, 0x80, 0xc2, 0x98, 0x39, 0x63,
-  0x17, 0x10, 0x7f, 0x20, 0x37, 0x50, 0x58, 0xe8, 0x02, 0x41, 0x02, 0xa2,
-  0x9f, 0x8a, 0x0b, 0xf1, 0xe3, 0x23, 0xa0, 0xd8, 0x95, 0xa7, 0x1a, 0xa0,
-  0x8f, 0x91, 0x7a, 0x1c, 0x80, 0x7a, 0x00, 0x04, 0x1b, 0xcf, 0x39, 0xc0,
-  0x88, 0xf3, 0x91, 0x62, 0x58, 0x2a, 0x6f, 0xa6, 0xec, 0x82, 0xe8, 0x8a,
-  0x5a, 0x12, 0x50, 0xb5, 0x9a, 0x40, 0x6d, 0xb6, 0x86, 0x83, 0x1b, 0x7f,
-  0x0b, 0x31, 0x37, 0xdd, 0xed, 0x4e, 0x46, 0xe8, 0x50, 0x87, 0xa1, 0x05,
-  0xf9, 0x9a, 0xbb, 0xb0, 0xd9, 0x9a, 0x61, 0x20, 0xe0, 0x5c, 0xb8, 0xc0,
-  0xcb, 0xba, 0xd2, 0x50, 0x1e, 0xbc, 0x5b, 0x92, 0xa3, 0x28, 0xa3, 0xf1,
-  0xe6, 0x40, 0xf5, 0x7b, 0xd5, 0xd0, 0xac, 0x3a, 0x23, 0xfd, 0xbb, 0x30,
-  0x5f, 0x82, 0x9e, 0xf6, 0x21, 0x2e, 0xcd, 0x24, 0x30, 0xcd, 0x2a, 0x0b,
-  0xa2, 0x5a, 0xfe, 0xab, 0x73, 0x9f, 0x0c, 0x2f, 0x6d, 0x2e, 0x93, 0xbd,
-  0x64, 0xde, 0xda, 0x1a, 0xbc, 0x5c, 0x16, 0x48, 0xad, 0xdd, 0xee, 0xcc,
-  0x15, 0x76, 0x69, 0x9d, 0xe0, 0x56, 0x2f, 0x48, 0xe1, 0xe5, 0x32, 0x81,
-  0x14, 0x2c, 0xd7, 0x79, 0xc5, 0x29, 0x44, 0xad, 0x82, 0x70, 0x1d, 0x23,
-  0x32, 0x31, 0xef, 0x76, 0x2d, 0xd8, 0x5b, 0xf3, 0x84, 0xfa, 0x13, 0x0d,
-  0x04, 0x85, 0x01, 0x68, 0xcd, 0x24, 0x6a, 0xa1, 0xa8, 0x3e, 0xcf, 0xe1,
-  0x7e, 0x13, 0x28, 0xa2, 0xd8, 0xef, 0xf8, 0x82, 0xb1, 0x55, 0xdc, 0x72,
-  0xf4, 0x46, 0x2e, 0x2b, 0x2d, 0x74, 0x32, 0x74, 0x51, 0x2d, 0x45, 0xc9,
-  0xff, 0x45, 0x2d, 0xc2, 0xb4, 0xb3, 0xa1, 0x43, 0x46, 0x03, 0xf2, 0xd7,
-  0xd1, 0x44, 0x4a, 0x00, 0xab, 0xdf, 0x19, 0x2c, 0xc0, 0xd5, 0xe1, 0xd9,
-  0xbb, 0xa3, 0xaf, 0x4f, 0xd7, 0x1e, 0xf2, 0x15, 0xbb, 0x1b, 0x61, 0xb2,
-  0xd7, 0x13, 0x2d, 0xc4, 0x91, 0xbc, 0x74, 0x52, 0x98, 0xbe, 0x1e, 0x0e,
-  0xe3, 0x83, 0xb3, 0x63, 0x52, 0x4f, 0x86, 0x43, 0xf8, 0x4b, 0x57, 0x5b,
-  0xe6, 0x81, 0x74, 0x14, 0x8f, 0xbf, 0x21, 0x97, 0xbf, 0x42, 0xe3, 0x48,
-  0xf2, 0x4a, 0x4a, 0x15, 0x27, 0x92, 0xf4, 0x4d, 0xfb, 0xa1, 0x68, 0x9a,
-  0xf8, 0x81, 0xb6, 0x1e, 0x76, 0x76, 0xbc, 0x4e, 0xdf, 0xc2, 0x72, 0x27,
-  0x5a, 0x50, 0xd8, 0x80, 0xf3, 0xe0, 0x27, 0xb8, 0x85, 0x0e, 0x55, 0x4d,
-  0x10, 0x65, 0xb5, 0xde, 0x0a, 0xd4, 0x51, 0xbc, 0x5c, 0xd0, 0x0f, 0x2a,
-  0x8e, 0xd0, 0x70, 0xb1, 0x30, 0x63, 0xc1, 0x61, 0xa5, 0xa6, 0xf6, 0xb2,
-  0x6b, 0x79, 0x27, 0x49, 0x73, 0xe4, 0x0e, 0x3e, 0x93, 0xfb, 0x01, 0xb5,
-  0xe7, 0x0b, 0x35, 0x57, 0x59, 0x89, 0xe7, 0xd1, 0xde, 0x0a, 0x25, 0xc9,
-  0xe5, 0xc5, 0xfc, 0xea, 0xda, 0x37, 0x02, 0xd9, 0xbd, 0x60, 0x22, 0xd9,
-  0x22, 0x59, 0x49, 0x4b, 0x84, 0x59, 0x7a, 0x97, 0x39, 0xbd, 0xa8, 0x72,
-  0x50, 0x1a, 0xb4, 0xb2, 0xbc, 0x93, 0xa3, 0xf3, 0x2f, 0x69, 0x60, 0xbc,
-  0xe4, 0x89, 0xb0, 0x10, 0x95, 0x48, 0x8e, 0x25, 0x85, 0xcb, 0x05, 0xa6,
-  0x10, 0x50, 0x6a, 0x7e, 0x3d, 0xa1, 0xbb, 0x12, 0x94, 0x12, 0x72, 0xc2,
-  0x4a, 0x10, 0x8a, 0x50, 0x3e, 0xcc, 0x17, 0x9a, 0x87, 0xa6, 0x2e, 0x47,
-  0xa4, 0xc0, 0x71, 0xc9, 0x44, 0x08, 0xd4, 0xa3, 0x55, 0x4b, 0x50, 0x81,
-  0xc2, 0x01, 0x3a, 0x23, 0xe9, 0x22, 0x79, 0x5f, 0xc7, 0xe8, 0x83, 0xb6,
-  0x2f, 0x31, 0x5c, 0xd3, 0x7c, 0x4b, 0x38, 0x2a, 0xe4, 0xc8, 0x46, 0x5c,
-  0x11, 0x38, 0x9a, 0xc9, 0x45, 0x55, 0x4c, 0xe6, 0xb5, 0xc4, 0xc6, 0xd1,
-  0x0b, 0x8d, 0x85, 0xbf, 0x6b, 0x91, 0x3a, 0x87, 0x68, 0x68, 0x5b, 0x31,
-  0x11, 0x72, 0x34, 0x8a, 0x89, 0x4d, 0xc5, 0x40, 0x1a, 0xd5, 0xe1, 0x40,
-  0xb7, 0x08, 0x47, 0xdc, 0x22, 0x67, 0x1c, 0x74, 0x12, 0x80, 0xa0, 0xbb,
-  0x31, 0x5a, 0x86, 0xcf, 0x0a, 0xba, 0xe5, 0x0d, 0xf2, 0x98, 0xae, 0x1b,
-  0x65, 0xda, 0xac, 0x2c, 0x6b, 0x5e, 0x49, 0x7e, 0x72, 0x63, 0x98, 0xe3,
-  0x34, 0x5d, 0xe6, 0x02, 0x8f, 0x1c, 0xa8, 0x89, 0xfa, 0x2d, 0xfe, 0x4c,
-  0x42, 0x19, 0x79, 0xe6, 0x92, 0x5d, 0x9e, 0x99, 0xcc, 0xb4, 0x79, 0xe5,
-  0x4b, 0xb1, 0x93, 0xbb, 0xa9, 0x36, 0x1a, 0xc2, 0xbc, 0xe4, 0xf4, 0x06,
-  0x6e, 0x21, 0x1d, 0xb4, 0x85, 0x84, 0x05, 0x92, 0xb5, 0xe3, 0xf9, 0x9c,
-  0xa7, 0xcb, 0xf5, 0x10, 0xc5, 0x99, 0xc7, 0x48, 0xc6, 0x34, 0x26, 0xd4,
-  0xc2, 0x93, 0x74, 0x30, 0x74, 0x06, 0xbc, 0xd4, 0x79, 0x20, 0xd8, 0x61,
-  0x88, 0xaa, 0x90, 0x11, 0xe8, 0xbc, 0x49, 0x28, 0x0d, 0x56, 0x84, 0x8d,
-  0xf3, 0x0d, 0x17, 0x5a, 0xee, 0x69, 0x84, 0x37, 0x9f, 0x5b, 0xb2, 0x18,
-  0xda, 0xec, 0xda, 0xa0, 0x0b, 0x6b, 0x3a, 0x48, 0x4a, 0xfb, 0x43, 0x4f,
-  0x0b, 0xb6, 0xb8, 0x4b, 0x23, 0xc9, 0xc8, 0x17, 0x2a, 0x45, 0xab, 0x1f,
-  0xe5, 0x2f, 0x28, 0xed, 0xbe, 0xcd, 0x72, 0xd0, 0x2f, 0xab, 0x35, 0xc5,
-  0x56, 0x5a, 0x88, 0xa4, 0x44, 0x40, 0x4a, 0x36, 0x8f, 0x18, 0xd5, 0x03,
-  0x0e, 0x30, 0x72, 0xef, 0x04, 0x74, 0x68, 0x9b, 0xec, 0x0d, 0xd5, 0x98,
-  0xeb, 0xfb, 0x59, 0xe6, 0xe7, 0x6e, 0xa8, 0x3c, 0xa6, 0x31, 0xa8, 0x03,
-  0x66, 0x1e, 0x7d, 0xc8, 0xb3, 0x3b, 0x9b, 0x50, 0x63, 0xb0, 0xf8, 0x5d,
-  0x7f, 0xb4, 0xf4, 0x9e, 0x08, 0xcc, 0xce, 0x0b, 0xfb, 0x12, 0x79, 0x69,
-  0xa1, 0xab, 0xbb, 0x6b, 0x34, 0xb7, 0xcb, 0x7a, 0xb6, 0xba, 0xb9, 0x46,
-  0x5f, 0x14, 0x04, 0x2c, 0xc9, 0xe7, 0x09, 0xb5, 0xd7, 0xe4, 0xb8, 0xaa,
-  0xdb, 0x34, 0x84, 0x12, 0x0d, 0x10, 0xe3, 0x5f, 0x3a, 0x44, 0x90, 0x54,
-  0xa2, 0x67, 0x29, 0x95, 0x9a, 0x0b, 0x67, 0xb0, 0x00, 0x27, 0x24, 0xf4,
-  0xa4, 0x55, 0xe0, 0x0c, 0x3b, 0xf4, 0x11, 0x84, 0x04, 0x05, 0xee, 0x5c,
-  0x2f, 0x61, 0x2e, 0x50, 0x3d, 0x40, 0xbd, 0xc9, 0x38, 0xc6, 0xa4, 0xed,
-  0xe8, 0xaa, 0x2c, 0x7c, 0x1d, 0x02, 0x21, 0x3e, 0x90, 0x06, 0x6b, 0x5c,
-  0x42, 0x92, 0xe6, 0x37, 0x59, 0x59, 0xe4, 0xd4, 0xf9, 0xe7, 0x26, 0x29,
-  0x33, 0xca, 0xac, 0xe9, 0xbd, 0x39, 0x7d, 0x7b, 0xd4, 0x33, 0xba, 0x34,
-  0x59, 0xc2, 0x99, 0xf4, 0x1f, 0xf0, 0x40, 0xad, 0xdc, 0x2d, 0x0d, 0xb9,
-  0x7a, 0x40, 0xeb, 0xc1, 0x16, 0xda, 0x74, 0x11, 0x53, 0xeb, 0x00, 0x0c,
-  0x68, 0x08, 0xe6, 0x0a, 0xd8, 0xdc, 0x92, 0x73, 0xc3, 0xb9, 0x8d, 0x89,
-  0x32, 0x19, 0xe7, 0xf6, 0x15, 0xb7, 0xa1, 0x66, 0x81, 0xf0, 0x3b, 0xdc,
-  0x71, 0x91, 0xf3, 0x92, 0xe5, 0xce, 0x49, 0x46, 0xec, 0xd1, 0x25, 0x37,
-  0x3d, 0xed, 0xbf, 0xeb, 0xff, 0x5d, 0x99, 0xde, 0x7b, 0x09, 0xc8, 0xe9,
-  0xe4, 0x72, 0xa5, 0xc1, 0x77, 0xd1, 0x4a, 0x85, 0xa6, 0x4b, 0xbd, 0xe2,
-  0x40, 0x41, 0x39, 0xd7, 0x96, 0x0f, 0x01, 0xd5, 0xf1, 0xf9, 0xf6, 0x63,
-  0xcc, 0xe6, 0xd3, 0x7b, 0xfc, 0x62, 0xfb, 0x77, 0xe6, 0xdb, 0xfc, 0xe9,
-  0xde, 0x53, 0x04, 0xc7, 0x93, 0xe5, 0x45, 0x3f, 0xd0, 0xb4, 0x3d, 0x94,
-  0xc2, 0x67, 0xca, 0xf7, 0x82, 0x98, 0xc3, 0x2e, 0xfa, 0x76, 0x62, 0xab,
-  0xe9, 0xad, 0x5d, 0xac, 0x39, 0xba, 0xd6, 0x03, 0x22, 0x10, 0x77, 0x5e,
-  0xbf, 0xc5, 0xaa, 0x18, 0x65, 0x6e, 0xea, 0x8c, 0xd7, 0x5d, 0xd4, 0xc9,
-  0xd3, 0x36, 0xd7, 0x2d, 0x8d, 0xd6, 0xd9, 0xb8, 0xae, 0x2f, 0x4d, 0x0d,
-  0x35, 0x4a, 0x96, 0x95, 0x88, 0x8b, 0x6b, 0x33, 0x33, 0xe4, 0x4b, 0x7d,
-  0x17, 0x0e, 0xa8, 0xdf, 0xd1, 0xef, 0xd2, 0xa6, 0xa9, 0x19, 0x25, 0x93,
-  0x1b, 0x3e, 0x72, 0x47, 0x42, 0x93, 0x3d, 0xa4, 0xd5, 0x90, 0xde, 0x89,
-  0xb0, 0x94, 0x54, 0xaf, 0x29, 0x55, 0x77, 0x53, 0x5b, 0x15, 0xcc, 0x77,
-  0x36, 0xa9, 0x16, 0x74, 0x60, 0xb8, 0x1e, 0x41, 0x6a, 0x30, 0xa9, 0x9f,
-  0x6b, 0x30, 0xc1, 0xcb, 0x80, 0xe5, 0xc0, 0xd2, 0xa4, 0x6b, 0x7a, 0x35,
-  0x2f, 0x6f, 0x08, 0x09, 0xe5, 0x86, 0xe1, 0x91, 0xb9, 0xbc, 0xc2, 0xee,
-  0x87, 0xec, 0x43, 0x40, 0xd8, 0x38, 0x33, 0xc4, 0xcc, 0xf7, 0x52, 0xd0,
-  0xa6, 0xa3, 0xaf, 0x79, 0x16, 0x66, 0x82, 0x26, 0x39, 0x11, 0xfd, 0xe1,
-  0x6c, 0x8a, 0x78, 0xe5, 0x6f, 0xe2, 0x20, 0x27, 0x97, 0x78, 0xbf, 0xd9,
-  0xd5, 0x57, 0x34, 0x4c, 0xf4, 0xf3, 0x63, 0x46, 0x48, 0xa0, 0xdb, 0xb0,
-  0x54, 0xad, 0xc9, 0x7e, 0xd0, 0xde, 0xe3, 0x5d, 0x34, 0x2e, 0xb8, 0xc2,
-  0x91, 0xb3, 0xd6, 0x28, 0x6b, 0x93, 0x53, 0xb7, 0x08, 0x48, 0x40, 0x02,
-  0x63, 0xc0, 0xff, 0x7e, 0xf1, 0x09, 0x76, 0x3b, 0x86, 0xc3, 0xda, 0x01,
-  0xe4, 0x76, 0x7b, 0x7b, 0xbb, 0x39, 0x68, 0x44, 0xd5, 0x99, 0x08, 0x31,
-  0x22, 0x3f, 0x57, 0x35, 0xa9, 0x0e, 0xf0, 0xcc, 0xd6, 0x60, 0xc1, 0x19,
-  0x5b, 0xec, 0x3d, 0x08, 0x1c, 0xd2, 0x47, 0x7d, 0x24, 0x78, 0xf0, 0x8f,
-  0x17, 0x0d, 0xd7, 0xfe, 0x15, 0x1c, 0xf8, 0xf5, 0x47, 0x1a, 0xc6, 0x01,
-  0x6d, 0xcd, 0x8d, 0x10, 0xb5, 0x60, 0x8f, 0xf3, 0x22, 0x4e, 0x26, 0xb3,
-  0xbc, 0xa3, 0xf1, 0xd3, 0x2b, 0x76, 0x0f, 0x10, 0x5b, 0x1d, 0x9c, 0x9c,
-  0xbd, 0x23, 0xbc, 0x4d, 0xec, 0x3d, 0x9c, 0x57, 0x9c, 0xd1, 0x84, 0x3f,
-  0x23, 0xf3, 0x8d, 0xbd, 0x08, 0x94, 0x49, 0x37, 0xf6, 0x81, 0x84, 0x38,
-  0x02, 0x8f, 0x96, 0xad, 0x86, 0x5a, 0x38, 0xbd, 0xd0, 0x31, 0xa0, 0x81,
-  0x31, 0x1c, 0x8c, 0x0b, 0xbe, 0x5d, 0xd5, 0xf8, 0x6d, 0x5f, 0x4a, 0xf0,
-  0x55, 0xfb, 0x6d, 0x6d, 0xcb, 0x9e, 0x98, 0xb1, 0x1b, 0xef, 0x9a, 0x06,
-  0x12, 0x45, 0x24, 0xcd, 0x00, 0xbc, 0x2a, 0x4a, 0xdb, 0x1c, 0x40, 0xfd,
-  0x23, 0x26, 0x1e, 0x2f, 0xd9, 0xcc, 0x92, 0xd0, 0x45, 0xbb, 0xa2, 0x98,
-  0x53, 0xcb, 0x6b, 0x88, 0x4c, 0xea, 0xa5, 0xdb, 0x92, 0xc0, 0x7b, 0xf9,
-  0x2c, 0x6f, 0x63, 0x73, 0xeb, 0x68, 0xa1, 0xa2, 0x7a, 0x0f, 0x70, 0x5e,
-  0x7b, 0x44, 0x2c, 0x2c, 0xaa, 0x87, 0xbd, 0x5d, 0xc4, 0x2a, 0xef, 0xfa,
-  0xfc, 0xd5, 0x8b, 0x39, 0x4a, 0xd0, 0xd6, 0x17, 0x84, 0x51, 0x58, 0xa3,
-  0xe6, 0x27, 0xf0, 0x7b, 0x02, 0x07, 0xcc, 0x60, 0xc4, 0x08, 0x08, 0x92,
-  0x26, 0x53, 0x50, 0xf1, 0x72, 0xad, 0x49, 0x23, 0xe8, 0xe6, 0x2a, 0xf3,
-  0x6a, 0x30, 0xe6, 0x89, 0x48, 0xf4, 0x46, 0x7b, 0xe1, 0x56, 0xa5, 0x1a,
-  0x7f, 0x06, 0x6f, 0x1a, 0x77, 0xf8, 0x50, 0x7d, 0x3d, 0xbd, 0x4e, 0x32,
-  0x96, 0x32, 0x12, 0x38, 0x68, 0xc2, 0x69, 0x50, 0x22, 0xc5, 0x65, 0x08,
-  0xc2, 0x2e, 0xc6, 0xcc, 0x17, 0x74, 0x87, 0x61, 0x93, 0x56, 0x98, 0x82,
-  0x8f, 0xe9, 0xa3, 0xa5, 0x1e, 0x19, 0xca, 0x76, 0xd8, 0x45, 0x69, 0x40,
-  0xad, 0xc8, 0x63, 0x3c, 0x02, 0x36, 0x10, 0xbe, 0xc1, 0xf0, 0x92, 0xf4,
-  0xdc, 0xed, 0x46, 0xc2, 0xd7, 0x26, 0x8c, 0x72, 0xd2, 0x60, 0x56, 0x86,
-  0x80, 0xc1, 0x8a, 0x29, 0xdd, 0x69, 0xd1, 0xaf, 0xc9, 0x56, 0xbe, 0x72,
-  0xae, 0x5c, 0xd1, 0x97, 0x14, 0x83, 0x99, 0x6a, 0xa1, 0xd1, 0x3c, 0x46,
-  0xe1, 0xeb, 0x5d, 0x17, 0x73, 0x3a, 0x40, 0xe8, 0x48, 0xa0, 0x6f, 0x22,
-  0x3f, 0xa4, 0x39, 0x95, 0x9d, 0x35, 0xb7, 0xf2, 0x09, 0xcc, 0x2e, 0x23,
-  0x2e, 0xa5, 0xd9, 0xfc, 0xa1, 0xcf, 0x4e, 0x8b, 0x2b, 0x4c, 0x31, 0x88,
-  0x2f, 0x9a, 0x28, 0x68, 0x2e, 0x64, 0x54, 0x17, 0xff, 0x99, 0xc2, 0x4a,
-  0x4a, 0x86, 0xb3, 0x08, 0x53, 0x92, 0x0a, 0x67, 0xaa, 0xd4, 0xce, 0x0f,
-  0xcf, 0x9c, 0xd2, 0x9c, 0x41, 0x48, 0x4f, 0xb5, 0x39, 0xb5, 0xda, 0xf1,
-  0x0e, 0x7e, 0x30, 0x5d, 0xd4, 0x0d, 0xe4, 0xb7, 0xdb, 0x1d, 0xbb, 0x10,
-  0x67, 0x83, 0xcc, 0x0f, 0x9f, 0xb0, 0x39, 0x76, 0xc0, 0x65, 0xf1, 0x5d,
-  0x5c, 0xd8, 0xaf, 0xd6, 0xee, 0xe4, 0x8f, 0xba, 0x48, 0xde, 0xf9, 0xf7,
-  0xc8, 0xbb, 0xe6, 0x35, 0x62, 0x49, 0xec, 0x81, 0x10, 0x05, 0x44, 0xd8,
-  0x83, 0xd7, 0x07, 0x0e, 0x8f, 0xf5, 0x64, 0x67, 0xef, 0x7c, 0x88, 0x24,
-  0x71, 0xf5, 0xe1, 0xbd, 0xf5, 0xf0, 0x05, 0xd2, 0x6e, 0x26, 0xd3, 0x36,
-  0x47, 0x7e, 0xe3, 0xdb, 0x23, 0x9f, 0xe5, 0xcb, 0x83, 0xac, 0xd1, 0x25,
-  0xe1, 0xdf, 0x1d, 0xb9, 0x77, 0x75, 0x68, 0x43, 0xa1, 0xdf, 0xe4, 0xf2,
-  0xc0, 0x4f, 0x9a, 0x63, 0x3d, 0x4d, 0x7d, 0xbc, 0xdf, 0x53, 0x13, 0xe5,
-  0xe4, 0x42, 0x58, 0x84, 0xf7, 0xd3, 0x3e, 0xf0, 0xf4, 0x56, 0x44, 0x6f,
-  0xa9, 0xa0, 0xd6, 0xde, 0x55, 0xd3, 0x39, 0x05, 0xe0, 0xbc, 0xaa, 0x30,
-  0x7b, 0x76, 0x13, 0xc6, 0x14, 0x84, 0x87, 0x6e, 0x93, 0x32, 0x97, 0xc6,
-  0x8b, 0x6e, 0xe2, 0x34, 0x5c, 0x43, 0x46, 0x38, 0x30, 0xde, 0x7d, 0x5c,
-  0xf9, 0x9e, 0xe5, 0x2a, 0x23, 0x54, 0x96, 0xa0, 0x67, 0x88, 0x8e, 0xbd,
-  0x21, 0x22, 0x57, 0xde, 0x76, 0x9e, 0x7c, 0xf7, 0xe0, 0x8b, 0xd3, 0xb2,
-  0xfb, 0xd8, 0x37, 0x49, 0xc6, 0x67, 0xdf, 0x9c, 0xa3, 0x16, 0x65, 0x08,
-  0x2d, 0xec, 0x09, 0x5c, 0xd5, 0xfa, 0x46, 0x5c, 0x30, 0xaa, 0xf6, 0xd3,
-  0xa1, 0x53, 0x98, 0xdb, 0xaa, 0xbe, 0xa1, 0x5a, 0x33, 0x77, 0xee, 0xb9,
-  0xc7, 0x18, 0x72, 0x24, 0xb2, 0x71, 0x10, 0xd9, 0x4f, 0x45, 0x07, 0xce,
-  0x78, 0xa5, 0x52, 0x3c, 0x1a, 0x3c, 0xec, 0x8a, 0xc6, 0x79, 0xfc, 0x8a,
-  0xda, 0x48, 0xe2, 0x2d, 0x15, 0x21, 0xd4, 0x7e, 0x87, 0xf0, 0xa0, 0x64,
-  0x49, 0x4d, 0x85, 0x61, 0x6f, 0x2e, 0xb6, 0xb9, 0x71, 0xb2, 0xb2, 0xb8,
-  0x19, 0xa5, 0x23, 0xc6, 0x39, 0x7f, 0x04, 0xd3, 0xa2, 0x7d, 0x53, 0x4b,
-  0x5c, 0x37, 0x68, 0xc1, 0x12, 0x12, 0xd0, 0xf5, 0x1c, 0x8e, 0x01, 0xea,
-  0xa1, 0xdc, 0xf3, 0x89, 0xab, 0x49, 0x0a, 0xb4, 0x6a, 0xe9, 0x36, 0xc2,
-  0x09, 0x3b, 0x33, 0xf6, 0x58, 0x8c, 0x5a, 0x43, 0x62, 0x04, 0x68, 0x2a,
-  0xf5, 0xdd, 0x17, 0x65, 0xf1, 0x29, 0x65, 0xa9, 0x46, 0x5e, 0x17, 0x42,
-  0x51, 0x66, 0xd3, 0x4d, 0x6a, 0x09, 0x41, 0x71, 0x10, 0x88, 0xf9, 0x69,
-  0xe2, 0x67, 0x22, 0xd0, 0xd9, 0x56, 0x44, 0x3d, 0xab, 0x5e, 0x64, 0xf4,
-  0x3a, 0x41, 0xd9, 0x91, 0x91, 0x2b, 0x0f, 0x80, 0xb5, 0x8c, 0x99, 0xa8,
-  0xff, 0xc2, 0x2b, 0xcd, 0xec, 0xba, 0x7b, 0xa5, 0x05, 0xb6, 0x74, 0x79,
-  0x8e, 0xb6, 0x23, 0x2f, 0xc5, 0xc3, 0x8d, 0x7e, 0x0e, 0x4d, 0x16, 0xa5,
-  0x30, 0x4a, 0xb4, 0xcf, 0xa7, 0xe5, 0xee, 0x9e, 0xca, 0xb2, 0xdb, 0xb1,
-  0x92, 0x43, 0x4c, 0x0c, 0x8c, 0xd5, 0x77, 0x32, 0x8e, 0x24, 0xb7, 0x8f,
-  0x5c, 0x64, 0xea, 0x51, 0xe0, 0x2c, 0x61, 0xf4, 0x14, 0x1a, 0x67, 0x0b,
-  0x0d, 0x88, 0x48, 0x85, 0x5e, 0xa9, 0x21, 0xe5, 0x0e, 0xd9, 0x40, 0x00,
-  0xb9, 0xfb, 0xc8, 0x9f, 0x80, 0xfb, 0x4e, 0xe8, 0xb7, 0x52, 0x3c, 0x26,
-  0x26, 0x73, 0xf4, 0x9f, 0xd8, 0x8a, 0x21, 0xc1, 0x0c, 0x89, 0xb4, 0x6c,
-  0xb3, 0x17, 0x7f, 0xd9, 0x74, 0x32, 0xe0, 0xc3, 0x40, 0x13, 0x13, 0x94,
-  0x2b, 0x83, 0xbd, 0x8a, 0xcd, 0x40, 0x5d, 0x6d, 0x9e, 0x26, 0xd8, 0x56,
-  0x90, 0x8e, 0xd0, 0x1f, 0x43, 0xdb, 0xae, 0x10, 0x8c, 0xb4, 0xda, 0x4c,
-  0xfa, 0x22, 0x73, 0x3e, 0xa7, 0x78, 0x34, 0x13, 0x4d, 0xd4, 0x94, 0x39,
-  0x80, 0xda, 0xe5, 0x65, 0x0b, 0x53, 0xef, 0x05, 0xbe, 0x81, 0x70, 0x52,
-  0x92, 0x10, 0x59, 0x94, 0x91, 0xe9, 0xb9, 0xc0, 0x1f, 0xab, 0xd1, 0x01,
-  0xd7, 0x4a, 0x31, 0x0b, 0xd5, 0x06, 0x4e, 0xd8, 0x87, 0x48, 0x27, 0x94,
-  0x66, 0xc4, 0xde, 0x19, 0xfc, 0x69, 0xdf, 0xfe, 0x75, 0xef, 0xc5, 0x06,
-  0x83, 0x29, 0xa2, 0xc9, 0x3e, 0xb0, 0x4f, 0xb4, 0xbd, 0x20, 0x70, 0xd1,
-  0x50, 0xa3, 0x19, 0x78, 0x08, 0xfe, 0x34, 0xcf, 0x75, 0x74, 0x43, 0xc5,
-  0xec, 0xb0, 0x6d, 0xcc, 0xca, 0x68, 0xe2, 0xf1, 0x5a, 0x5f, 0x7e, 0xdd,
-  0xe1, 0xb7, 0x0d, 0x96, 0x16, 0x8d, 0x1d, 0xcd, 0x89, 0xd9, 0x70, 0x75,
-  0x25, 0x2f, 0x3e, 0xd2, 0x5f, 0xd9, 0xf7, 0xb9, 0xf2, 0xee, 0xf4, 0xe3,
-  0xd9, 0xfb, 0xd3, 0xef, 0xfe, 0xb6, 0xb2, 0x36, 0x30, 0x75, 0xb8, 0x65,
-  0xba, 0xe2, 0x27, 0x9c, 0x47, 0x8d, 0xcf, 0x5a, 0x7f, 0x31, 0x7f, 0x83,
-  0x33, 0x5f, 0x85, 0x1f, 0xd5, 0x59, 0xc3, 0x30, 0x3e, 0x28, 0x03, 0x63,
-  0xbf, 0x95, 0x3c, 0x4c, 0x86, 0xb6, 0x1d, 0x98, 0xb9, 0xd7, 0xc3, 0xff,
-  0xea, 0x1a, 0x61, 0xa3, 0x96, 0x3f, 0xb7, 0x3c, 0x60, 0xcf, 0x01, 0xdd,
-  0xef, 0x2d, 0x77, 0x80, 0xef, 0xfa, 0x1a, 0xf1, 0x6c, 0x9c, 0xde, 0x7a,
-  0x32, 0x8d, 0x6f, 0x2f, 0x1e, 0x48, 0x0d, 0x38, 0x3f, 0x79, 0x0b, 0xca,
-  0x04, 0x96, 0x70, 0x0b, 0x8a, 0x45, 0x7d, 0x3f, 0x49, 0xe5, 0x6d, 0xba,
-  0xf5, 0x39, 0xfe, 0x84, 0x4d, 0x02, 0x69, 0x95, 0x8f, 0x29, 0xd1, 0x31,
-  0xb0, 0x26, 0xe2, 0x4e, 0x15, 0xb0, 0x7e, 0x1c, 0x92, 0x43, 0xb4, 0xb3,
-  0xd9, 0x24, 0x0b, 0x16, 0x55, 0x6b, 0x89, 0x4e, 0x7a, 0x07, 0xc2, 0x88,
-  0x6a, 0x9e, 0xd1, 0xb8, 0x44, 0xd8, 0xb6, 0x27, 0x44, 0x04, 0x79, 0xfd,
-  0xbf, 0xb0, 0x2c, 0x9c, 0x09, 0xd1, 0x08, 0x2a, 0xc3, 0x0f, 0xda, 0x74,
-  0x6e, 0x93, 0x95, 0xe9, 0xea, 0x85, 0x66, 0xb8, 0x32, 0x23, 0xf4, 0x3b,
-  0x2f, 0x97, 0x93, 0xea, 0x1e, 0x51, 0xe3, 0x84, 0x83, 0x63, 0xda, 0xa5,
-  0xbc, 0xcd, 0x46, 0x65, 0x51, 0x15, 0x97, 0x52, 0x51, 0x6b, 0x7d, 0x40,
-  0xc7, 0xc7, 0xc3, 0xe8, 0x36, 0xbd, 0x50, 0x4c, 0x98, 0x81, 0x1f, 0x7a,
-  0xa5, 0x3e, 0x22, 0x98, 0x99, 0x50, 0x66, 0x69, 0x8d, 0xbb, 0xa1, 0x95,
-  0x7e, 0x08, 0xf8, 0x8c, 0xef, 0xa4, 0x82, 0x13, 0x4a, 0x9e, 0x05, 0x18,
-  0x72, 0x34, 0xa1, 0x1b, 0x3e, 0x9a, 0xa5, 0xfe, 0x09, 0x98, 0xb0, 0xae,
-  0x63, 0xae, 0x67, 0x27, 0x8f, 0x86, 0x80, 0xbb, 0xc4, 0xd8, 0xcc, 0x4a,
-  0x94, 0xae, 0x68, 0x4b, 0x88, 0x33, 0xfc, 0x13, 0x06, 0x63, 0x8a, 0x4b,
-  0x2f, 0x60, 0x2c, 0x05, 0x2a, 0xa2, 0x59, 0x48, 0xad, 0x74, 0x9a, 0x8f,
-  0x8b, 0x92, 0xd2, 0x12, 0xf1, 0x4c, 0x6a, 0x5d, 0x52, 0x9a, 0x8f, 0x8a,
-  0x79, 0x89, 0x95, 0xf4, 0xdc, 0x50, 0xc8, 0xef, 0xd7, 0x77, 0x7b, 0xcd,
-  0x20, 0x6e, 0xba, 0x0b, 0x56, 0xb5, 0xa6, 0x7a, 0x6d, 0x69, 0x5c, 0xc2,
-  0xb8, 0x80, 0x7a, 0x71, 0x3b, 0xbb, 0x11, 0x6c, 0xff, 0x20, 0xfb, 0x61,
-  0x01, 0x55, 0xf0, 0xc4, 0xc0, 0xe6, 0xbc, 0xca, 0xae, 0x42, 0xe0, 0x26,
-  0xc7, 0x97, 0x16, 0xf8, 0xce, 0xea, 0xae, 0x34, 0x1b, 0x51, 0x3d, 0x4a,
-  0x11, 0x23, 0x2d, 0x36, 0xe0, 0x2c, 0xe6, 0x3c, 0x00, 0x45, 0x18, 0xe6,
-  0xbe, 0x7f, 0xa3, 0x64, 0x0e, 0x3c, 0x05, 0xbf, 0xe8, 0xa8, 0x35, 0x97,
-  0x68, 0x4e, 0x96, 0xb5, 0xd6, 0xc2, 0xfd, 0x5f, 0x3d, 0xd0, 0x3f, 0xc7,
-  0xcf, 0x1a, 0xb6, 0xd6, 0x3a, 0x02, 0xcd, 0x9c, 0x52, 0x12, 0x28, 0x56,
-  0x72, 0x33, 0x55, 0xf8, 0xdf, 0x63, 0xda, 0x76, 0x2d, 0xff, 0xe5, 0xc4,
-  0x13, 0x57, 0x24, 0x14, 0xf8, 0x83, 0xad, 0xf8, 0x22, 0x05, 0x5d, 0xbb,
-  0x8c, 0xf6, 0x6b, 0x54, 0x68, 0xc3, 0xc5, 0xbf, 0xa6, 0xf6, 0x57, 0xda,
-  0xeb, 0xb9, 0xf9, 0xf3, 0x5f, 0xf1, 0xeb, 0xd1, 0x39, 0xe9, 0xc3, 0x9c,
-  0x3d, 0x79, 0x8a, 0xe5, 0x9d, 0x51, 0xb4, 0xe5, 0x75, 0xe9, 0xd6, 0x5e,
-  0x65, 0x41, 0x91, 0x23, 0x23, 0xf1, 0x40, 0x2a, 0x36, 0xf0, 0xc4, 0x16,
-  0xf9, 0x4f, 0xf3, 0x7c, 0x14, 0xf4, 0xcd, 0x89, 0x29, 0x6f, 0x53, 0x92,
-  0xa4, 0x47, 0x10, 0x17, 0x91, 0x35, 0xea, 0x57, 0x10, 0x5e, 0xc9, 0x16,
-  0xb4, 0xc5, 0xb1, 0x9f, 0xb1, 0x02, 0x53, 0x77, 0xd2, 0x2a, 0x34, 0x42,
-  0x16, 0xac, 0x5b, 0x6b, 0xad, 0x5a, 0x50, 0x6f, 0x65, 0x0e, 0x68, 0xbb,
-  0xb0, 0x01, 0x4b, 0x87, 0x76, 0x34, 0x22, 0x14, 0x53, 0x4c, 0x4b, 0xc6,
-  0xb2, 0x97, 0xd6, 0x70, 0xcf, 0x9e, 0xef, 0x6e, 0xfc, 0xde, 0x39, 0xc2,
-  0x4d, 0x4e, 0xe8, 0x4d, 0x5f, 0x7f, 0x7c, 0x39, 0xf8, 0x6a, 0xf7, 0x32,
-  0xde, 0x19, 0x6c, 0xfe, 0xd7, 0xdf, 0xdf, 0xf6, 0x7e, 0x49, 0xd2, 0x53,
-  0x83, 0x17, 0x17, 0xf6, 0xda, 0x66, 0xdf, 0x01, 0x42, 0x7a, 0x45, 0xfb,
-  0xf0, 0x9f, 0x2f, 0x16, 0x65, 0xfb, 0xe9, 0xc6, 0xb2, 0xb6, 0xd6, 0xe8,
-  0x1d, 0xa5, 0x7a, 0xac, 0xa0, 0x8c, 0xa9, 0x44, 0xf6, 0x51, 0x9f, 0xa9,
-  0x39, 0x55, 0x9f, 0xef, 0xee, 0xf8, 0x94, 0x01, 0x98, 0xa6, 0x60, 0x4f,
-  0xc5, 0x5a, 0xdf, 0x14, 0x17, 0x7d, 0x33, 0x2d, 0xda, 0xd3, 0x20, 0x69,
-  0x1d, 0x84, 0x4c, 0x75, 0x7f, 0x38, 0xf3, 0xa9, 0x6c, 0x1e, 0x05, 0xea,
-  0xf4, 0x1f, 0xde, 0x9f, 0x70, 0xa9, 0x9f, 0x3c, 0x19, 0x6e, 0xfe, 0x66,
-  0xdc, 0xa0, 0x5a, 0x4d, 0xc9, 0x70, 0xb7, 0xf3, 0x19, 0x08, 0x94, 0x3a,
-  0x9b, 0x38, 0x82, 0x71, 0x31, 0xee, 0x6b, 0x2b, 0x1f, 0x98, 0x1a, 0xb3,
-  0x3a, 0x93, 0x33, 0x18, 0x73, 0x84, 0x10, 0xc6, 0xec, 0x64, 0x83, 0x98,
-  0x21, 0x37, 0x38, 0x35, 0x5c, 0x15, 0x90, 0xcf, 0x38, 0xc6, 0xb4, 0x62,
-  0x20, 0x17, 0xa5, 0x96, 0x53, 0x0c, 0x99, 0x61, 0x1f, 0x1f, 0x9d, 0xf1,
-  0x6e, 0x6a, 0xde, 0xda, 0xec, 0x6c, 0xe7, 0x4c, 0x93, 0xf5, 0x48, 0x84,
-  0x93, 0xff, 0x45, 0xec, 0x6e, 0x39, 0xad, 0x57, 0x4f, 0x67, 0x3d, 0xd8,
-  0xfe, 0xe5, 0x58, 0xdc, 0xe3, 0x16, 0x62, 0xf2, 0xff, 0x12, 0x94, 0x08,
-  0xfa, 0x31, 0x83, 0xc6, 0xc4, 0x5c, 0x0a, 0xd8, 0xdd, 0xdf, 0xf8, 0x79,
-  0xf3, 0x10, 0xb8, 0x1c, 0x17, 0x44, 0x4a, 0xfe, 0xb6, 0x44, 0xfc, 0x23,
-  0x8d, 0x87, 0x14, 0xf2, 0x90, 0x8b, 0x31, 0x57, 0xd5, 0x63, 0x4c, 0x63,
-  0xd6, 0xdb, 0x9d, 0xf9, 0x16, 0xa5, 0xcf, 0x3f, 0xfe, 0xe9, 0x3b, 0xe2,
-  0xbe, 0xff, 0x91, 0xd0, 0x54, 0x52, 0xd4, 0x3b, 0xcc, 0x76, 0xa8, 0xc2,
-  0x51, 0x35, 0x74, 0x1a, 0x46, 0x2b, 0x73, 0xdb, 0xe7, 0xf9, 0xc0, 0xcb,
-  0xd4, 0x2f, 0x8c, 0xfc, 0x29, 0x2b, 0x7f, 0x58, 0x91, 0x28, 0xb8, 0x86,
-  0xff, 0xa4, 0x0e, 0x44, 0x14, 0x78, 0x99, 0xb7, 0xee, 0x74, 0x89, 0xf7,
-  0x9d, 0x17, 0x18, 0x32, 0x16, 0x90, 0x6e, 0x76, 0x99, 0x12, 0xae, 0x8f,
-  0x53, 0x91, 0x2b, 0xdd, 0x49, 0x0c, 0x9a, 0xfd, 0xa5, 0x1a, 0xa5, 0x38,
-  0x4b, 0x4f, 0x83, 0xc3, 0x47, 0x68, 0xb1, 0x68, 0xb0, 0x13, 0x60, 0x56,
-  0x96, 0x77, 0x84, 0xab, 0x7b, 0xc8, 0x10, 0xc0, 0x0f, 0xff, 0x00, 0xd9,
-  0xda, 0xaf, 0x6f, 0x8b, 0x7f, 0xba, 0x21, 0xe3, 0x1e, 0xfa, 0xe1, 0x7a,
-  0xb8, 0x84, 0x8f, 0x7f, 0xd8, 0x44, 0x70, 0x05, 0x2f, 0xab, 0xa4, 0xa0,
-  0xce, 0xce, 0x46, 0x60, 0x1b, 0x1b, 0x72, 0x51, 0xab, 0x33, 0xf3, 0x49,
-  0xc4, 0xb8, 0xea, 0xa3, 0x55, 0xfd, 0xcf, 0x01, 0xfe, 0xf7, 0xfb, 0xcd,
-  0x78, 0xf7, 0x47, 0xfb, 0xd9, 0x3f, 0x6c, 0x7e, 0xfc, 0xc3, 0x56, 0x2f,
-  0x84, 0x9b, 0xe1, 0xa0, 0xe6, 0x39, 0x05, 0x07, 0x15, 0x95, 0xc2, 0x48,
-  0xcd, 0xa9, 0x64, 0xd5, 0xd9, 0xa2, 0x1c, 0x92, 0x48, 0xfe, 0x4e, 0x62,
-  0x38, 0xae, 0x65, 0xc8, 0x0b, 0x88, 0xb1, 0x66, 0x6f, 0x02, 0x4d, 0xf8,
-  0x65, 0x91, 0x55, 0xd2, 0x47, 0x48, 0x44, 0x96, 0xa7, 0xef, 0xa0, 0x00,
-  0xbb, 0x77, 0xb0, 0x3d, 0x10, 0x75, 0x55, 0xd1, 0x29, 0x7d, 0x7a, 0xc8,
-  0x49, 0x05, 0x4d, 0x38, 0x89, 0x1a, 0xf1, 0xf7, 0x22, 0xba, 0xb8, 0x88,
-  0x9c, 0xb0, 0xfb, 0x67, 0x01, 0x4d, 0x48, 0x04, 0x19, 0xf9, 0xd0, 0x34,
-  0xc6, 0x09, 0x2f, 0x9a, 0x3c, 0x51, 0x81, 0xc0, 0xa1, 0xc9, 0x1b, 0x19,
-  0x48, 0x97, 0xb5, 0xe7, 0x97, 0xf9, 0x09, 0x93, 0xb0, 0x4d, 0xe8, 0x56,
-  0x64, 0x6e, 0x81, 0x12, 0xcc, 0xa4, 0xdc, 0xd0, 0xcf, 0xf4, 0x48, 0xa0,
-  0x82, 0x48, 0xfa, 0x71, 0x15, 0xc4, 0x6c, 0x4a, 0x2e, 0x40, 0x93, 0x6b,
-  0x48, 0x75, 0xa2, 0x07, 0x09, 0x95, 0x0b, 0x8b, 0x47, 0x9e, 0x54, 0x1d,
-  0x04, 0x71, 0x49, 0xe1, 0x56, 0x82, 0x32, 0xa1, 0x88, 0x38, 0x0b, 0x62,
-  0xd5, 0x0c, 0x92, 0xe4, 0x4a, 0x6d, 0x5b, 0xbc, 0xc4, 0x3f, 0x15, 0x44,
-  0x97, 0x91, 0xc5, 0x23, 0xf5, 0xf2, 0xdb, 0xf0, 0xce, 0x1d, 0xdf, 0x83,
-  0x58, 0xe3, 0x4e, 0x52, 0xa6, 0x85, 0x8b, 0x3a, 0x69, 0xf5, 0xba, 0xac,
-  0xa2, 0x95, 0x78, 0x25, 0x5a, 0x75, 0xfc, 0x5f, 0xe3, 0xa4, 0xba, 0x5e,
-  0x0b, 0xde, 0x2a, 0x26, 0x9e, 0x69, 0xe5, 0x9a, 0x34, 0x39, 0x27, 0xad,
-  0x98, 0x05, 0x5a, 0xa0, 0x25, 0x2d, 0xc7, 0x74, 0x18, 0x67, 0xc3, 0x81,
-  0x0b, 0x2a, 0xc6, 0x19, 0x95, 0x17, 0xde, 0x8b, 0x93, 0xd3, 0xd6, 0x71,
-  0x99, 0x1b, 0xda, 0xaf, 0x24, 0x5a, 0x1f, 0xa7, 0x37, 0xeb, 0xf9, 0x7c,
-  0x32, 0xd9, 0x7b, 0x04, 0xed, 0x81, 0xd2, 0xe6, 0xf9, 0xf6, 0xe3, 0xa7,
-  0xec, 0xb8, 0x95, 0xcc, 0x4d, 0xe2, 0x75, 0x78, 0x6c, 0xef, 0x51, 0x83,
-  0xc2, 0x83, 0x4b, 0x16, 0xcc, 0x14, 0xdd, 0x85, 0x1a, 0xbf, 0x86, 0x54,
-  0xfb, 0xe5, 0x62, 0x6a, 0xc9, 0x59, 0xeb, 0xef, 0xb6, 0x42, 0x39, 0x36,
-  0x8f, 0xbf, 0x90, 0x5b, 0xff, 0xc4, 0x9a, 0xe7, 0xc0, 0x1d, 0xed, 0x41,
-  0x44, 0xdb, 0x2b, 0xdb, 0xd1, 0x4b, 0x35, 0x73, 0x27, 0xce, 0xa6, 0x53,
-  0xe0, 0x23, 0xbf, 0x8e, 0x85, 0xab, 0x17, 0xc7, 0x54, 0x0d, 0x16, 0x99,
-  0x3c, 0x1f, 0x1b, 0xcb, 0x08, 0x40, 0xda, 0x69, 0xe6, 0x57, 0xb0, 0xdf,
-  0x8d, 0x64, 0x3e, 0xc8, 0xbd, 0x2b, 0xa8, 0xa6, 0x0c, 0xee, 0x89, 0xea,
-  0x19, 0x45, 0xc9, 0x40, 0x17, 0x24, 0x88, 0x21, 0x1b, 0x24, 0xa7, 0xc0,
-  0x01, 0x7c, 0x3d, 0xf6, 0xe3, 0x2a, 0x98, 0x75, 0x84, 0x46, 0xc2, 0x28,
-  0x6d, 0x60, 0xa4, 0xde, 0x26, 0x8c, 0x9a, 0x6d, 0x01, 0x65, 0x11, 0x39,
-  0xcf, 0x86, 0x60, 0xd8, 0x88, 0x6a, 0x0f, 0x47, 0x0a, 0x3c, 0x5e, 0x2a,
-  0xa2, 0x2e, 0xdc, 0xa1, 0x5d, 0x42, 0xb9, 0x1d, 0x8c, 0x4b, 0x2e, 0x28,
-  0x35, 0x6e, 0xf4, 0xfe, 0xf7, 0x6e, 0x81, 0xf0, 0x80, 0x3a, 0xe8, 0x6f,
-  0x70, 0x14, 0xff, 0xaf, 0x45, 0xcc, 0xb9, 0xb9, 0x90, 0x73, 0x97, 0x4a,
-  0x04, 0xb3, 0x1f, 0x9f, 0x26, 0x77, 0xcd, 0x48, 0xdc, 0x8b, 0xa6, 0x79,
-  0xe4, 0x3e, 0x18, 0xac, 0xbd, 0x65, 0x36, 0x4c, 0xaa, 0x4f, 0x4c, 0xba,
-  0x71, 0x61, 0x79, 0xd1, 0x61, 0x45, 0xd6, 0x05, 0x9b, 0x53, 0x59, 0xd4,
-  0x79, 0x10, 0x31, 0xad, 0x4b, 0x6c, 0x01, 0xed, 0xd6, 0xca, 0x33, 0x46,
-  0x1f, 0xdd, 0xad, 0x86, 0x5b, 0xf8, 0x93, 0x55, 0x86, 0x7c, 0x91, 0xe4,
-  0x81, 0xe2, 0xc5, 0x2a, 0x90, 0x83, 0xf8, 0xdb, 0xb3, 0x82, 0x6f, 0xac,
-  0x29, 0xe4, 0x0c, 0x7c, 0x2f, 0x60, 0x79, 0x3f, 0x96, 0x57, 0x70, 0x17,
-  0x36, 0x37, 0x36, 0xba, 0x38, 0xe5, 0x72, 0x09, 0xa4, 0xa0, 0x66, 0xe1,
-  0x5c, 0x83, 0x07, 0x9a, 0x61, 0xfa, 0xc6, 0x83, 0xdd, 0x25, 0x05, 0x02,
-  0x95, 0x41, 0x48, 0x92, 0x76, 0x7f, 0x58, 0x3a, 0x08, 0xeb, 0x11, 0x4a,
-  0x0e, 0xfc, 0x53, 0xd2, 0xcf, 0x7d, 0x4d, 0xa5, 0x4c, 0xaf, 0x10, 0x88,
-  0x1a, 0x1d, 0x36, 0x08, 0x32, 0x09, 0xfa, 0x4a, 0x9e, 0x96, 0xff, 0x6d,
-  0x4e, 0xf2, 0x6f, 0x71, 0x78, 0x6d, 0xda, 0x2e, 0x1d, 0xdc, 0x46, 0x37,
-  0x92, 0x05, 0x7b, 0x16, 0xa3, 0x97, 0x31, 0xda, 0x9f, 0x5d, 0x97, 0x49,
-  0xe5, 0x37, 0xc7, 0x1b, 0x0e, 0xdf, 0x44, 0x14, 0x46, 0x3f, 0x83, 0xa7,
-  0xf8, 0x19, 0xa3, 0x59, 0x3a, 0xcd, 0xbc, 0x7e, 0x6f, 0xff, 0x10, 0xad,
-  0x81, 0xf3, 0xe7, 0xa5, 0xf7, 0xd4, 0xf2, 0xe5, 0xa1, 0xf4, 0x5a, 0x67,
-  0x02, 0x7c, 0x8c, 0x75, 0x67, 0x71, 0x52, 0xc5, 0x9e, 0x1c, 0x3a, 0x6f,
-  0xc3, 0x49, 0x62, 0x90, 0x07, 0xe1, 0x1b, 0x30, 0x17, 0x3c, 0x47, 0xfc,
-  0x75, 0x60, 0x99, 0xf5, 0xc1, 0x60, 0x1d, 0x6d, 0xae, 0x75, 0xf8, 0x43,
-  0x8b, 0x64, 0xc4, 0x2b, 0xd3, 0x1a, 0x8e, 0x52, 0xd9, 0xa9, 0x79, 0x36,
-  0x46, 0xcf, 0xa5, 0x53, 0xb9, 0x03, 0xa9, 0xf4, 0xf7, 0x39, 0xa8, 0xa9,
-  0x84, 0xef, 0x93, 0x96, 0x84, 0x52, 0x9a, 0x4e, 0x1b, 0x1e, 0x3c, 0xcf,
-  0x8b, 0xc4, 0xe9, 0x8e, 0x95, 0x00, 0x2d, 0x93, 0x59, 0xea, 0x02, 0xfe,
-  0x70, 0x49, 0x3b, 0x61, 0x62, 0x66, 0xb5, 0xc6, 0x96, 0x09, 0xc5, 0x36,
-  0x79, 0x02, 0x7b, 0x2b, 0x8d, 0x42, 0xa4, 0x47, 0x1a, 0xc0, 0xff, 0x07,
-  0xf3, 0x76, 0x9d, 0x3c, 0xdb, 0xe3, 0x85, 0xd0, 0x90, 0x94, 0x48, 0x1f,
-  0xb3, 0x4f, 0xa8, 0xc1, 0xbf, 0x3b, 0x5b, 0x2d, 0xfe, 0xcd, 0xe0, 0xe8,
-  0x8f, 0x67, 0xf3, 0x0b, 0xea, 0x1e, 0x78, 0x0d, 0xd4, 0x09, 0xe0, 0xab,
-  0x10, 0x0f, 0x37, 0x8b, 0x15, 0xd8, 0x0f, 0xc0, 0x96, 0xa1, 0x39, 0xf8,
-  0x1a, 0xd7, 0xa0, 0x0e, 0x75, 0x52, 0xd3, 0xb4, 0xea, 0x79, 0x25, 0xf8,
-  0x23, 0x5c, 0x6c, 0xc8, 0x40, 0x46, 0xec, 0x6a, 0x9e, 0xa5, 0xec, 0x28,
-  0xc8, 0x54, 0x37, 0xc1, 0x40, 0x09, 0xd6, 0x2b, 0x52, 0xc8, 0x84, 0x46,
-  0x23, 0xe7, 0x9f, 0x8f, 0xf1, 0xcd, 0x11, 0x6c, 0x93, 0xbe, 0x6e, 0xdb,
-  0xc2, 0xe3, 0x9a, 0xb1, 0xf3, 0x23, 0x6c, 0x38, 0x76, 0x5a, 0x64, 0xaf,
-  0x2d, 0x61, 0xaf, 0xa2, 0xcd, 0xcc, 0x66, 0xb2, 0x8f, 0x45, 0x8b, 0xe1,
-  0xa3, 0x67, 0x3b, 0x14, 0xe5, 0x41, 0xba, 0x55, 0xd7, 0xc9, 0xd6, 0xee,
-  0x33, 0x99, 0xb6, 0xf6, 0x2c, 0x21, 0xb7, 0xc7, 0x0a, 0xff, 0x6a, 0x7d,
-  0x9d, 0x63, 0xc1, 0x18, 0x6b, 0xf4, 0x2c, 0x2a, 0x4a, 0x47, 0xc0, 0x67,
-  0xff, 0xbc, 0x12, 0x2e, 0x10, 0x56, 0xbf, 0x3e, 0x47, 0x80, 0x31, 0x37,
-  0x8f, 0x1a, 0x28, 0x9e, 0x38, 0x3a, 0x56, 0x5f, 0x29, 0x2d, 0xfe, 0x75,
-  0xc1, 0x12, 0x6e, 0x57, 0xf4, 0xba, 0x3d, 0xe4, 0x22, 0x81, 0x6c, 0x26,
-  0xad, 0x15, 0xaf, 0x0a, 0x05, 0x2a, 0xc4, 0xee, 0x80, 0x2e, 0x81, 0x30,
-  0xce, 0x59, 0x53, 0xda, 0x82, 0x87, 0x80, 0x42, 0x68, 0x61, 0xb4, 0x1d,
-  0xce, 0xc0, 0x02, 0xa3, 0x9b, 0xd5, 0xae, 0x83, 0x91, 0xb3, 0x70, 0x39,
-  0xd6, 0xcf, 0x75, 0xa6, 0xf3, 0x0b, 0x0f, 0xc1, 0x4d, 0x19, 0xc3, 0x74,
-  0xf2, 0xa3, 0x10, 0xad, 0x53, 0x17, 0x6d, 0xcf, 0xa9, 0x05, 0x3d, 0xb3,
-  0x44, 0xf0, 0xdc, 0x3d, 0x8d, 0x0e, 0xb9, 0x06, 0xe6, 0x8c, 0x93, 0xcc,
-  0xee, 0x29, 0x0f, 0xd8, 0x23, 0x38, 0xf0, 0xc2, 0x3a, 0x32, 0x82, 0x84,
-  0x62, 0x3c, 0x63, 0xf0, 0xf9, 0x60, 0xfb, 0xe5, 0x60, 0x63, 0x4f, 0x9b,
-  0x3e, 0xf6, 0xa3, 0xaf, 0xf3, 0x39, 0xee, 0x08, 0x2e, 0xfa, 0xeb, 0xe1,
-  0x5f, 0xb2, 0xda, 0x7f, 0x61, 0x67, 0x1b, 0x5f, 0x78, 0x37, 0xe4, 0x87,
-  0x6e, 0x8b, 0xc9, 0x25, 0xbc, 0x18, 0x78, 0xec, 0x39, 0x3e, 0x06, 0xfc,
-  0x36, 0xae, 0x3d, 0x08, 0x40, 0x61, 0xb0, 0xee, 0x49, 0xed, 0xec, 0x04,
-  0x26, 0xd5, 0x5f, 0xf6, 0xa3, 0x6d, 0x4b, 0x96, 0x14, 0x79, 0x64, 0xb4,
-  0x8b, 0x64, 0xf4, 0x89, 0x38, 0x8a, 0xc0, 0x89, 0x4c, 0x57, 0xd5, 0xdf,
-  0x1b, 0x2c, 0xa2, 0x21, 0x9a, 0xe0, 0x7f, 0x4b, 0x99, 0xc2, 0xad, 0xd7,
-  0xcd, 0x49, 0x1d, 0xa5, 0x9b, 0x9b, 0x2f, 0x2e, 0x76, 0x37, 0x5f, 0xbc,
-  0x7c, 0x7e, 0xb9, 0xb3, 0xb3, 0xbb, 0x35, 0x1e, 0xad, 0x2c, 0x79, 0xd1,
-  0xa1, 0x31, 0x0c, 0xa3, 0xf2, 0x80, 0xcd, 0x90, 0x47, 0x0b, 0x99, 0x4e,
-  0xb0, 0x8a, 0xc3, 0xc9, 0x0f, 0xe7, 0xed, 0x3e, 0xec, 0x33, 0xf4, 0x60,
-  0x50, 0x57, 0xd0, 0xad, 0xed, 0xcd, 0xf5, 0x67, 0x83, 0x9d, 0xc1, 0x96,
-  0xa9, 0x9b, 0x65, 0xd4, 0xbf, 0x9a, 0x2a, 0x75, 0x02, 0xb9, 0x66, 0x54,
-  0x34, 0x95, 0xe5, 0x02, 0xba, 0x6c, 0x7e, 0x42, 0xb1, 0x0f, 0x5b, 0x34,
-  0x86, 0x30, 0xcc, 0x9b, 0x2e, 0x4c, 0x0f, 0x65, 0x35, 0x79, 0xad, 0xa4,
-  0xf2, 0x18, 0x27, 0x61, 0xe2, 0xe1, 0xb8, 0xcd, 0x17, 0xd9, 0xdf, 0xe7,
-  0x59, 0x0d, 0x3a, 0x3e, 0xae, 0x13, 0x43, 0xfc, 0xda, 0x11, 0x9c, 0xba,
-  0x7a, 0xd0, 0x1a, 0xb4, 0x8b, 0x9e, 0x2f, 0x9c, 0x15, 0x64, 0xc1, 0xc1,
-  0xad, 0x24, 0x20, 0x9d, 0x8c, 0xc4, 0x36, 0x3e, 0x51, 0x65, 0x55, 0x0d,
-  0xc2, 0x16, 0x44, 0xd3, 0x9b, 0xe2, 0x16, 0xb9, 0xa9, 0x4f, 0x75, 0x70,
-  0x01, 0x74, 0x61, 0x6e, 0x4d, 0xc0, 0xc9, 0x75, 0x52, 0xb7, 0x64, 0x1b,
-  0x69, 0xcb, 0x0f, 0x18, 0x73, 0x5a, 0xf1, 0xdc, 0xa2, 0xc6, 0x82, 0x17,
-  0x2b, 0xb8, 0xd2, 0x84, 0x1a, 0x31, 0x66, 0x38, 0xd5, 0xcb, 0xe2, 0x37,
-  0x74, 0x41, 0xe4, 0x3c, 0xf2, 0x66, 0x67, 0x46, 0x70, 0xf1, 0x79, 0xe2,
-  0x71, 0xd4, 0x43, 0x11, 0xb5, 0x6c, 0xf4, 0x4d, 0x60, 0xae, 0xfb, 0x16,
-  0xe3, 0x9a, 0xb5, 0xae, 0x2e, 0x08, 0x1f, 0x7d, 0xe1, 0xc9, 0x4c, 0xb8,
-  0xfd, 0xeb, 0x33, 0xe1, 0xd6, 0x7f, 0x7f, 0x26, 0x34, 0x5c, 0xa8, 0xf8,
-  0xf1, 0x5d, 0x7c, 0xc8, 0x49, 0x1a, 0xff, 0x3e, 0x4c, 0xb8, 0xf5, 0xeb,
-  0x31, 0xe1, 0xe6, 0xb2, 0x4c, 0xb8, 0xfd, 0x18, 0x26, 0x84, 0xfd, 0x9e,
-  0xa0, 0x9e, 0xd1, 0x60, 0xc2, 0x9d, 0xa5, 0x98, 0x90, 0xb9, 0x90, 0xd8,
-  0xb0, 0x93, 0x0f, 0x71, 0xce, 0x2e, 0x62, 0x19, 0x08, 0xf2, 0x70, 0x32,
-  0xc3, 0xe3, 0x45, 0x4e, 0xd2, 0x18, 0xd4, 0x03, 0x9f, 0x62, 0x56, 0xff,
-  0x57, 0xee, 0xf5, 0xf6, 0x6f, 0x22, 0x70, 0x36, 0x1f, 0xda, 0xeb, 0x32,
-  0xe5, 0xb4, 0xa2, 0xef, 0x35, 0xbb, 0x0b, 0xbe, 0xf5, 0x23, 0xb9, 0x90,
-  0xf7, 0x50, 0xb3, 0xf8, 0xb1, 0x6d, 0xb2, 0x85, 0x0c, 0x89, 0xe1, 0xe9,
-  0xe1, 0x5f, 0x86, 0x92, 0x9e, 0x24, 0x9a, 0x9e, 0x6a, 0x82, 0xec, 0xd2,
-  0x04, 0x03, 0x81, 0x10, 0x1f, 0x3d, 0xeb, 0x82, 0x6a, 0x5e, 0x1a, 0xe9,
-  0x88, 0x58, 0xf2, 0x26, 0xc7, 0x90, 0x1a, 0xc0, 0x70, 0x6a, 0x0e, 0x47,
-  0x76, 0x74, 0xd4, 0xce, 0x3e, 0x1c, 0x3c, 0x11, 0x93, 0x28, 0x25, 0xf1,
-  0xa7, 0xdc, 0x79, 0x71, 0xb5, 0xbe, 0x2e, 0x09, 0x3f, 0x87, 0x1e, 0x5d,
-  0xd3, 0xc4, 0xc3, 0x45, 0xb3, 0x93, 0x79, 0xbd, 0xa1, 0xce, 0x87, 0xb3,
-  0xd2, 0xa4, 0xf9, 0x06, 0xdc, 0x59, 0xe6, 0xb7, 0x1a, 0x03, 0x0d, 0x41,
-  0x9b, 0x4a, 0x1f, 0x0a, 0x87, 0xde, 0xf8, 0x9e, 0x57, 0x08, 0x9a, 0xdd,
-  0x35, 0x80, 0xce, 0xd1, 0x79, 0x0c, 0x7c, 0x9b, 0x13, 0xf6, 0x8b, 0x59,
-  0xa2, 0x0e, 0x52, 0x09, 0x56, 0x52, 0x55, 0x8c, 0x3e, 0x55, 0x3b, 0x30,
-  0x64, 0x3b, 0x78, 0xc6, 0xbf, 0x48, 0xf0, 0x37, 0xfc, 0xf7, 0x5d, 0xfc,
-  0x2e, 0x06, 0x68, 0xf9, 0x5f, 0xd7, 0xf8, 0x4f, 0x49, 0xc2, 0x97, 0xce,
-  0x0a, 0xee, 0x2e, 0x8f, 0xc2, 0x84, 0x76, 0x21, 0x99, 0x0c, 0xa8, 0xe5,
-  0xbb, 0xc2, 0xf6, 0x04, 0x70, 0x57, 0xed, 0xe2, 0x3d, 0x7b, 0x85, 0x33,
-  0x46, 0xca, 0xd3, 0xc8, 0x3b, 0x5d, 0x19, 0x14, 0x4e, 0x7b, 0x2b, 0x85,
-  0x8b, 0xb4, 0x9f, 0x90, 0x70, 0xb6, 0xbb, 0x01, 0xd4, 0x28, 0x24, 0xd0,
-  0xde, 0x0d, 0x6c, 0xf2, 0xf9, 0xd4, 0x38, 0xc3, 0x36, 0x37, 0x5e, 0xf8,
-  0xce, 0xc7, 0x0f, 0x0a, 0xe7, 0x62, 0xbb, 0x30, 0x51, 0xfd, 0x00, 0xc1,
-  0x53, 0x5c, 0x58, 0x78, 0x9b, 0xd0, 0x67, 0x31, 0xd2, 0x1f, 0xf0, 0x75,
-  0x8c, 0x53, 0xb6, 0x51, 0x2f, 0xd8, 0xcb, 0xe1, 0xd7, 0xfb, 0xd7, 0x05,
-  0x7d, 0x0d, 0x87, 0x94, 0x56, 0x88, 0x9a, 0xa7, 0xee, 0xe5, 0x5d, 0xa0,
-  0x1b, 0x51, 0x73, 0x0a, 0xbf, 0xb4, 0xcd, 0x57, 0xfe, 0xb8, 0xb3, 0x81,
-  0xbb, 0xaa, 0xa3, 0xc0, 0x21, 0x2a, 0x26, 0x85, 0x20, 0x95, 0xfe, 0x71,
-  0x3b, 0xf9, 0xdd, 0x9d, 0x57, 0x2a, 0x6e, 0x0c, 0x0f, 0xf2, 0x61, 0x52,
-  0x94, 0x8c, 0xf8, 0x2e, 0x92, 0x88, 0x16, 0xfe, 0x61, 0x7e, 0xfc, 0xc4,
-  0xdc, 0x66, 0xed, 0xab, 0x4d, 0xdf, 0x6a, 0x28, 0xff, 0xbb, 0x4d, 0xc7,
-  0x8a, 0x57, 0x4b, 0x19, 0x70, 0xe8, 0x8a, 0xd2, 0xa2, 0xc8, 0xbb, 0x8a,
-  0x13, 0x6b, 0x4a, 0x8b, 0x12, 0xf6, 0x69, 0xd0, 0x7c, 0xcd, 0x0f, 0x61,
-  0x28, 0xf8, 0xa0, 0x07, 0xc6, 0xa1, 0xf9, 0x21, 0x9c, 0x3e, 0xcd, 0x5e,
-  0xab, 0xbe, 0xd7, 0xa7, 0x22, 0x99, 0xf4, 0xb9, 0x60, 0x29, 0xec, 0xeb,
-  0x6d, 0x7c, 0x64, 0x5c, 0x26, 0xb7, 0x8e, 0x53, 0x85, 0xf1, 0xd6, 0x2f,
-  0x29, 0xf5, 0xc3, 0x56, 0x3a, 0xa0, 0x17, 0x02, 0xd3, 0x81, 0xab, 0x40,
-  0x4a, 0x76, 0x35, 0x2a, 0x11, 0xe5, 0x4e, 0x1a, 0xc0, 0xd3, 0x58, 0x33,
-  0x6c, 0x38, 0x04, 0x2a, 0xd7, 0x55, 0xaa, 0x88, 0xa9, 0xb6, 0xb5, 0xad,
-  0xe0, 0xb5, 0x12, 0x48, 0xeb, 0x20, 0x00, 0x66, 0x60, 0x7d, 0xdd, 0x5a,
-  0x7f, 0x96, 0x08, 0xa2, 0x2b, 0xbe, 0xda, 0x97, 0x1a, 0x1e, 0xa9, 0x56,
-  0xbe, 0x20, 0x41, 0x93, 0x60, 0x41, 0x40, 0x75, 0x9d, 0xcd, 0xda, 0x8a,
-  0x47, 0xfc, 0x79, 0xf1, 0x79, 0xbc, 0x66, 0xfa, 0x87, 0x14, 0x37, 0x69,
-  0x45, 0x56, 0x30, 0x43, 0xd5, 0x80, 0x44, 0xb8, 0x26, 0x87, 0x9f, 0x5c,
-  0xca, 0x04, 0x33, 0x43, 0x85, 0xc9, 0xd2, 0xb7, 0xa1, 0x03, 0xe1, 0x97,
-  0x13, 0xce, 0x58, 0x16, 0xa3, 0x6b, 0x10, 0xa8, 0x75, 0xc9, 0xd5, 0x7b,
-  0xe8, 0x3b, 0x8a, 0x30, 0x85, 0x5a, 0x5a, 0x58, 0x72, 0x5a, 0x45, 0x31,
-  0xfb, 0x77, 0x77, 0xb9, 0xff, 0x61, 0xe9, 0xdc, 0xa9, 0x98, 0x72, 0xf7,
-  0xc7, 0x92, 0xe5, 0xd4, 0xd4, 0x0b, 0x40, 0x82, 0xc7, 0x2a, 0x97, 0xf7,
-  0x55, 0xa0, 0x7f, 0xf1, 0x20, 0x26, 0x8a, 0x11, 0xfd, 0x97, 0xe2, 0xb7,
-  0x43, 0xc1, 0x47, 0x48, 0x3e, 0xdc, 0xda, 0x73, 0x74, 0x9d, 0x4e, 0xb9,
-  0xdd, 0x9d, 0x8f, 0xa0, 0x83, 0x09, 0x4b, 0x39, 0x73, 0x09, 0x63, 0x9a,
-  0xe7, 0xc6, 0xbf, 0x61, 0xaf, 0x3a, 0xed, 0x72, 0xc0, 0x68, 0xf9, 0x87,
-  0x30, 0xfc, 0xd1, 0xc7, 0x0f, 0xef, 0x86, 0x1f, 0xce, 0x62, 0xaf, 0x3f,
-  0xcc, 0xfb, 0xf3, 0xa3, 0x57, 0x58, 0xef, 0x71, 0x7e, 0x7a, 0x78, 0x7a,
-  0x12, 0xad, 0x6e, 0xae, 0x2d, 0xdc, 0x41, 0xb3, 0x67, 0xa6, 0x29, 0x96,
-  0x8d, 0x4f, 0xb1, 0x38, 0x31, 0x53, 0x58, 0x45, 0x2a, 0xfb, 0xa3, 0x7d,
-  0x2b, 0xac, 0xde, 0xf2, 0x3a, 0x8b, 0xaf, 0xec, 0x0a, 0xae, 0xd5, 0x8a,
-  0x7c, 0x92, 0x32, 0x8a, 0x9b, 0xf8, 0x4e, 0x85, 0x3b, 0x01, 0xe8, 0xfa,
-  0x3e, 0x85, 0x83, 0x29, 0x41, 0xd6, 0x85, 0x63, 0x5a, 0x5e, 0xee, 0xba,
-  0xdb, 0xc9, 0xe5, 0xb5, 0x97, 0x56, 0xc0, 0x3e, 0xa4, 0x55, 0xe2, 0xdb,
-  0xb6, 0xa2, 0x01, 0x46, 0x22, 0xbd, 0xb9, 0xe9, 0xaa, 0xde, 0x6d, 0xb9,
-  0x53, 0xec, 0x73, 0x96, 0x7d, 0xaa, 0x30, 0xff, 0x18, 0x06, 0x62, 0xe4,
-  0x5f, 0xea, 0x85, 0x6a, 0x5e, 0xa1, 0xfe, 0xe1, 0x92, 0x4b, 0x45, 0xd8,
-  0x92, 0xac, 0xb1, 0x0f, 0xa2, 0xb3, 0xb2, 0xf0, 0xb3, 0x11, 0xe9, 0x8d,
-  0x71, 0x9a, 0x67, 0x7c, 0xcd, 0x9a, 0xb9, 0x0b, 0xc2, 0xa1, 0x24, 0x6f,
-  0xc3, 0x03, 0xf8, 0x5b, 0x67, 0x9f, 0x08, 0x54, 0x38, 0xf5, 0xfb, 0x54,
-  0xd1, 0xdb, 0x48, 0x78, 0x04, 0x6f, 0xb2, 0x73, 0xc2, 0xf1, 0xf0, 0x2a,
-  0xa3, 0x16, 0x45, 0xdd, 0xd7, 0x60, 0x5f, 0xf0, 0x73, 0x49, 0x34, 0x91,
-  0x8e, 0x89, 0x44, 0x64, 0xb5, 0xd2, 0x59, 0x4b, 0x47, 0x0e, 0x5a, 0x93,
-  0x88, 0x98, 0x37, 0xd1, 0xc7, 0x9d, 0xeb, 0xf3, 0xf6, 0xc9, 0x3d, 0xb9,
-  0x60, 0x07, 0xbf, 0x6a, 0xf6, 0x1e, 0x11, 0xf8, 0x06, 0x9c, 0x0a, 0xcf,
-  0x8a, 0x21, 0xc3, 0x68, 0x36, 0x7d, 0xc2, 0x99, 0xc2, 0xc9, 0xbd, 0x36,
-  0x73, 0xf3, 0xaa, 0x9b, 0x39, 0x6d, 0x67, 0x55, 0x71, 0x4f, 0x9f, 0xed,
-  0x0e, 0xb6, 0xd6, 0x1a, 0x39, 0x47, 0x98, 0xd9, 0x01, 0xa4, 0xfa, 0x13,
-  0xfe, 0xa9, 0x40, 0x00, 0xf8, 0x77, 0x5e, 0x86, 0x67, 0xe7, 0xb3, 0x60,
-  0x75, 0x80, 0xa0, 0xb5, 0x33, 0x24, 0x6d, 0xd5, 0x55, 0x51, 0x8c, 0x05,
-  0x56, 0x95, 0x61, 0x54, 0x9f, 0xc6, 0xf3, 0x4c, 0xbc, 0xcf, 0x5b, 0x84,
-  0x5b, 0xc2, 0xa2, 0xc2, 0x51, 0x3c, 0xc6, 0x7e, 0x24, 0x4b, 0x93, 0x42,
-  0xcd, 0x4c, 0xbd, 0x80, 0xab, 0x2f, 0xdd, 0xfb, 0xb2, 0x7d, 0x99, 0x9e,
-  0x35, 0x78, 0x2e, 0x45, 0xc8, 0x23, 0x0a, 0x52, 0x4c, 0xd2, 0x4b, 0xd2,
-  0x97, 0x09, 0x2e, 0xad, 0x4f, 0xbf, 0xa4, 0x5c, 0x36, 0x53, 0x43, 0x15,
-  0x06, 0x4a, 0x4f, 0xa8, 0xc9, 0x4a, 0xc2, 0xde, 0x36, 0x23, 0x89, 0x34,
-  0xcb, 0x7a, 0x05, 0x76, 0x6b, 0xa5, 0x6f, 0x90, 0x00, 0x27, 0xf7, 0x94,
-  0xea, 0x92, 0xdd, 0xf1, 0x61, 0xfa, 0x39, 0x2d, 0x0b, 0x3f, 0xb5, 0x92,
-  0xb4, 0x16, 0x85, 0xb7, 0x47, 0xcb, 0xfc, 0x06, 0x04, 0x14, 0x65, 0x8a,
-  0x9a, 0x1f, 0xe2, 0x57, 0x3d, 0x1e, 0xff, 0x13, 0xac, 0x0d, 0x31, 0xde,
-  0x44, 0x5c, 0x9a, 0xb9, 0x64, 0xd4, 0x37, 0x23, 0xd3, 0x64, 0x38, 0xe7,
-  0xcc, 0x4d, 0x10, 0xd0, 0xed, 0x9e, 0x91, 0xe1, 0x3c, 0x8b, 0x9d, 0x74,
-  0xe2, 0x31, 0xda, 0x77, 0xb6, 0xf6, 0xd6, 0x64, 0x17, 0x5c, 0x22, 0x02,
-  0xbc, 0x81, 0xe0, 0x17, 0x25, 0xd7, 0x97, 0xdf, 0x71, 0x14, 0xbd, 0x4a,
-  0xb1, 0x8d, 0x1f, 0x57, 0xc6, 0xd8, 0x7a, 0x27, 0xf4, 0x20, 0x14, 0x14,
-  0xac, 0xc8, 0x6a, 0x8d, 0xb4, 0xa4, 0xd2, 0x46, 0xfb, 0xd2, 0x4e, 0xd1,
-  0x9f, 0x52, 0x73, 0xce, 0x21, 0x49, 0xf1, 0xb9, 0x21, 0x83, 0xd4, 0xd9,
-  0xb8, 0xb4, 0x58, 0xa5, 0xb6, 0x38, 0x9a, 0xce, 0x47, 0xdf, 0xd3, 0x11,
-  0x17, 0x92, 0x61, 0x8d, 0x62, 0x50, 0x64, 0xe7, 0x56, 0xf3, 0x8b, 0x9f,
-  0xa4, 0xcb, 0x1d, 0x7a, 0x6a, 0x4a, 0x21, 0x83, 0xf8, 0x19, 0x60, 0x57,
-  0xe1, 0x01, 0x0e, 0xdf, 0xd6, 0x70, 0x66, 0x43, 0xc3, 0x51, 0x9a, 0x61,
-  0xe6, 0x24, 0xc1, 0x5b, 0x16, 0xa3, 0x29, 0x05, 0xc1, 0xac, 0x52, 0x3d,
-  0x9b, 0x1d, 0x22, 0x35, 0xbe, 0xc4, 0xa3, 0xc8, 0x45, 0x57, 0xad, 0x8b,
-  0x96, 0x69, 0xc9, 0x45, 0x84, 0xa6, 0xbc, 0x16, 0x1f, 0xef, 0x1c, 0x4b,
-  0x25, 0x63, 0xd5, 0xff, 0x13, 0xfe, 0xe1, 0xaf, 0xa1, 0x59, 0x2d, 0x0c,
-  0x64, 0x56, 0xe9, 0x84, 0x8f, 0x93, 0xd8, 0xa3, 0xd7, 0xbb, 0x3e, 0xe0,
-  0x48, 0x8f, 0xc5, 0x63, 0x93, 0xcc, 0x58, 0xe2, 0x03, 0x1f, 0x72, 0xed,
-  0x72, 0xa0, 0x4c, 0x3e, 0x33, 0x9d, 0x79, 0x15, 0x84, 0xc1, 0x20, 0x88,
-  0x8a, 0x9d, 0x88, 0x9a, 0x7a, 0x36, 0x63, 0x1f, 0x88, 0xd7, 0x65, 0xfc,
-  0x12, 0x6b, 0x92, 0x11, 0x22, 0x16, 0x11, 0x5d, 0x25, 0xc9, 0x5a, 0x3b,
-  0x88, 0x6a, 0x79, 0xec, 0xac, 0xa8, 0xb9, 0x9d, 0x29, 0x96, 0x2f, 0xa3,
-  0xa6, 0x53, 0xa2, 0x9b, 0x76, 0xd6, 0x75, 0x9b, 0xf6, 0x8d, 0x06, 0x8f,
-  0xc3, 0x72, 0xbe, 0x1b, 0xea, 0x35, 0x52, 0x1f, 0xa5, 0x59, 0xde, 0xa8,
-  0x9a, 0xdb, 0x56, 0x80, 0x21, 0xc5, 0x9b, 0x4b, 0xab, 0xc8, 0xdb, 0x67,
-  0x7a, 0xa1, 0xde, 0x14, 0xd9, 0x78, 0x51, 0x57, 0x2a, 0xaf, 0x99, 0x79,
-  0xb0, 0x58, 0xc1, 0x14, 0x4c, 0x93, 0xc7, 0xc8, 0x02, 0x17, 0xf9, 0x18,
-  0x26, 0xa6, 0xa5, 0x26, 0x65, 0xdd, 0xe4, 0x18, 0x23, 0xcd, 0x93, 0x5a,
-  0x0f, 0x98, 0x23, 0x9d, 0x71, 0x96, 0x54, 0xe9, 0x96, 0xa3, 0x7d, 0x36,
-  0x22, 0x8c, 0x9c, 0x80, 0xd5, 0xd4, 0xd1, 0xda, 0xf4, 0x31, 0x37, 0x93,
-  0xcb, 0x55, 0xfd, 0x0a, 0xf8, 0xfb, 0x29, 0x17, 0x93, 0x5c, 0x6f, 0xae,
-  0x6a, 0xe6, 0x21, 0xee, 0x68, 0x91, 0x9c, 0x54, 0x9d, 0x2d, 0xd6, 0xc0,
-  0x66, 0x88, 0x60, 0x89, 0x8d, 0xf1, 0xb2, 0x9a, 0x98, 0xa5, 0x55, 0xa8,
-  0xab, 0x55, 0xa6, 0xd2, 0x87, 0x7e, 0xea, 0x35, 0xd6, 0xcd, 0x35, 0x8c,
-  0x6d, 0xaa, 0x02, 0xb8, 0x1c, 0x87, 0x94, 0x1f, 0xf1, 0xa4, 0x71, 0x87,
-  0x6a, 0x86, 0xf9, 0x94, 0xa6, 0xe0, 0x54, 0x70, 0x8d, 0x91, 0xed, 0xb0,
-  0x97, 0x78, 0xdd, 0x64, 0x14, 0x03, 0xaf, 0xe6, 0xe3, 0x18, 0x64, 0xd2,
-  0xec, 0x09, 0x44, 0xb7, 0x44, 0x30, 0xff, 0xa6, 0x42, 0x31, 0x5b, 0x81,
-  0x38, 0x46, 0x0f, 0x04, 0x2b, 0xfb, 0x4f, 0xf4, 0x39, 0x98, 0xbf, 0x70,
-  0xe9, 0x55, 0xa3, 0x0e, 0x78, 0xdc, 0xaa, 0xfd, 0x6c, 0x3c, 0xf9, 0x80,
-  0x1a, 0x81, 0x64, 0xea, 0xec, 0x84, 0xed, 0x6c, 0x88, 0x6e, 0x40, 0x57,
-  0x75, 0x1e, 0x6f, 0x87, 0xec, 0xc4, 0x07, 0xc6, 0xb3, 0xa2, 0x11, 0xc9,
-  0x28, 0xcd, 0xa5, 0xb8, 0xdd, 0xf9, 0x12, 0x9b, 0xc8, 0xde, 0xbe, 0x4c,
-  0x09, 0xc9, 0x45, 0xfa, 0x1d, 0xf3, 0x93, 0x54, 0x42, 0xea, 0x0a, 0xf3,
-  0x30, 0xf3, 0x04, 0xfc, 0x7f, 0x74, 0x0d, 0xd0, 0x87, 0x70, 0x62, 0x59,
-  0x5a, 0x3d, 0x6d, 0x73, 0x79, 0x21, 0xff, 0x82, 0xad, 0x0d, 0x21, 0x87,
-  0x77, 0x6d, 0xee, 0x28, 0xc1, 0x84, 0x8c, 0x70, 0x05, 0xd1, 0x50, 0x44,
-  0x51, 0xac, 0x4f, 0xe1, 0x9d, 0xa7, 0xa5, 0x96, 0x8e, 0xf7, 0x99, 0xd2,
-  0x66, 0x9e, 0x92, 0x83, 0xe7, 0xce, 0xe0, 0xf0, 0x80, 0x61, 0x93, 0x6b,
-  0xc4, 0x60, 0xbc, 0x33, 0x44, 0x78, 0x02, 0x49, 0xcc, 0xb8, 0x98, 0xf0,
-  0xd3, 0x37, 0xb3, 0xa7, 0x74, 0x6e, 0xfe, 0xa1, 0x38, 0xdf, 0x91, 0x78,
-  0x16, 0x68, 0xa0, 0x65, 0xed, 0x77, 0x7a, 0xe3, 0x1a, 0xc3, 0x4b, 0xfd,
-  0x61, 0x37, 0xdd, 0xe8, 0xa1, 0xdf, 0x88, 0x6e, 0x34, 0xf6, 0x3a, 0x15,
-  0x61, 0xac, 0xdb, 0x5a, 0xbd, 0xa7, 0x12, 0xaf, 0x55, 0xb4, 0x6c, 0x89,
-  0xe6, 0x50, 0x49, 0xeb, 0x87, 0xf9, 0xdb, 0xd6, 0xc2, 0xf6, 0xb2, 0x45,
-  0x3a, 0x68, 0x06, 0x23, 0xc6, 0xf5, 0xfd, 0x2c, 0x8d, 0xf6, 0xf1, 0xbf,
-  0x0b, 0xe8, 0x66, 0x1e, 0xfc, 0x6d, 0x48, 0x67, 0x86, 0xc7, 0x84, 0x2e,
-  0xf7, 0xa7, 0x9c, 0x1a, 0xf6, 0xeb, 0xf0, 0x5f, 0x5a, 0xd6, 0x83, 0x47,
-  0xf0, 0x11, 0x1d, 0x3f, 0xfc, 0xef, 0xf7, 0x22, 0x09, 0x7e, 0xec, 0xa4,
-  0xcb, 0x51, 0x5f, 0x68, 0xf3, 0xdb, 0x91, 0xe5, 0x57, 0x26, 0x00, 0x51,
-  0xf9, 0x31, 0x54, 0xc8, 0x66, 0xd7, 0x68, 0x8a, 0xed, 0x87, 0x00, 0x79,
-  0x1c, 0xbe, 0x90, 0xc7, 0x7e, 0x9b, 0xe5, 0xcb, 0xe0, 0x47, 0x87, 0xaf,
-  0xde, 0x1c, 0xc5, 0xf0, 0xdf, 0xe1, 0x41, 0x7c, 0x70, 0x34, 0xdc, 0xda,
-  0x7d, 0x16, 0x1f, 0x1e, 0xbe, 0x7d, 0xf1, 0x4b, 0x89, 0x22, 0xc3, 0xd3,
-  0x16, 0xce, 0xcb, 0x1b, 0x69, 0xe4, 0xd9, 0x08, 0x2e, 0x3e, 0x4c, 0xa6,
-  0x72, 0x62, 0xfb, 0x3c, 0x2c, 0x20, 0x93, 0x3c, 0xf6, 0xdb, 0x90, 0x49,
-  0x06, 0x2f, 0xd3, 0x9f, 0xa8, 0xdf, 0xd5, 0xaf, 0x20, 0xb0, 0x75, 0xc8,
-  0xe5, 0x09, 0xc2, 0xd7, 0xda, 0x83, 0x6e, 0x5f, 0x52, 0x18, 0x5e, 0x09,
-  0xc8, 0x41, 0x40, 0x37, 0x79, 0xb2, 0x72, 0x22, 0xc0, 0x09, 0xbe, 0x76,
-  0x22, 0x1f, 0xc3, 0x77, 0xdb, 0x3e, 0x0e, 0x55, 0x4f, 0x48, 0x3b, 0x79,
-  0xd2, 0x16, 0xc8, 0x57, 0x7f, 0x27, 0x55, 0x82, 0xf4, 0x18, 0x7f, 0x2b,
-  0xb8, 0x26, 0x2a, 0xda, 0xe7, 0x3f, 0xd7, 0xbf, 0x0c, 0xb1, 0xa8, 0xa2,
-  0xca, 0xa0, 0x2e, 0x2d, 0x45, 0x54, 0xb8, 0x45, 0x0a, 0x60, 0x2d, 0x66,
-  0xbc, 0xc6, 0x78, 0x6f, 0xdd, 0x3e, 0xc6, 0x44, 0x56, 0xcf, 0x04, 0x54,
-  0x9c, 0x23, 0x86, 0xe0, 0x43, 0x97, 0x95, 0xe9, 0xa7, 0x64, 0x92, 0x72,
-  0xd1, 0x09, 0x92, 0x3a, 0x5f, 0xac, 0x4c, 0x4f, 0x83, 0x80, 0xc9, 0x84,
-  0xd9, 0x19, 0x37, 0x09, 0x41, 0x04, 0x3a, 0xfd, 0xda, 0xde, 0x20, 0x45,
-  0x64, 0xbe, 0x78, 0xa8, 0xa4, 0xaa, 0x53, 0xee, 0x44, 0x61, 0x1e, 0x1f,
-  0xbc, 0x8a, 0xa1, 0x4b, 0x18, 0x3a, 0x9c, 0x11, 0x09, 0x61, 0x85, 0x87,
-  0xa7, 0xef, 0xde, 0x1d, 0x1d, 0xb6, 0xb3, 0x9a, 0x0c, 0xbc, 0x8a, 0xf5,
-  0x5f, 0x04, 0x6b, 0xce, 0xb8, 0x6b, 0xb5, 0xe4, 0x05, 0xf0, 0xf7, 0xe1,
-  0x1f, 0xb7, 0x02, 0x33, 0xa4, 0xbf, 0x14, 0x18, 0x23, 0x6e, 0x10, 0x26,
-  0xfc, 0xe6, 0xf5, 0x0b, 0x08, 0x70, 0x9f, 0x0b, 0xd2, 0x4b, 0xd1, 0x70,
-  0x44, 0x2f, 0x57, 0x48, 0x44, 0xf2, 0xcb, 0xc9, 0x2c, 0xa8, 0x5e, 0x7c,
-  0x3c, 0x5e, 0x97, 0x32, 0x6b, 0xfd, 0x76, 0xd7, 0xc9, 0xe1, 0x0e, 0x42,
-  0x88, 0x80, 0x13, 0x17, 0x97, 0xdc, 0x6e, 0x79, 0x9a, 0x94, 0x9f, 0x30,
-  0x31, 0xca, 0xa9, 0x1b, 0x27, 0x4c, 0x39, 0xea, 0xf4, 0x33, 0x1e, 0x87,
-  0xd0, 0x7f, 0x29, 0x86, 0xa9, 0xd8, 0x1c, 0x14, 0x95, 0xe0, 0xc9, 0x90,
-  0x38, 0xcb, 0xeb, 0x3d, 0x4c, 0x96, 0xd7, 0xd7, 0xf3, 0xf4, 0x16, 0x3f,
-  0xc3, 0x90, 0xf0, 0x08, 0xe1, 0xeb, 0x77, 0x14, 0xe1, 0x36, 0x99, 0x1c,
-  0x3f, 0xbe, 0x77, 0xdc, 0xcf, 0x53, 0xee, 0x25, 0x0e, 0x4c, 0x47, 0x1d,
-  0x16, 0x05, 0xe0, 0xc6, 0xa3, 0xd5, 0x1b, 0x66, 0xa6, 0x76, 0xea, 0x84,
-  0x57, 0xc0, 0x27, 0xe8, 0x3f, 0xc2, 0xe3, 0x63, 0x2e, 0x3a, 0xe8, 0x42,
-  0xc8, 0xb7, 0x2d, 0x72, 0x28, 0x1e, 0x59, 0x35, 0x86, 0xd0, 0xdd, 0x4d,
-  0x3a, 0x72, 0x3c, 0x86, 0xd8, 0x0b, 0x94, 0x93, 0xb4, 0x73, 0x52, 0xc2,
-  0x76, 0xdb, 0x2d, 0xe5, 0xa8, 0x83, 0x08, 0xee, 0x2b, 0x96, 0x12, 0x97,
-  0x57, 0x54, 0xbb, 0x8f, 0x0f, 0xd3, 0x61, 0x8d, 0x03, 0x01, 0x1e, 0x86,
-  0xcf, 0x52, 0xdf, 0x37, 0x65, 0xab, 0x00, 0x75, 0x71, 0x1f, 0x84, 0xf6,
-  0x1a, 0x2c, 0xe4, 0x98, 0xae, 0x1c, 0x60, 0xf8, 0x73, 0x36, 0xaf, 0x03,
-  0xdd, 0x38, 0x06, 0x82, 0xa1, 0xfc, 0x65, 0xdc, 0xee, 0xb0, 0x8d, 0x6e,
-  0x43, 0x77, 0x4f, 0xb9, 0x77, 0x07, 0xfa, 0x32, 0xab, 0x7a, 0x9c, 0x75,
-  0x54, 0x06, 0x1a, 0x74, 0x20, 0x2a, 0xdd, 0xbd, 0x48, 0xa3, 0x90, 0x03,
-  0x86, 0x28, 0x66, 0x59, 0x75, 0x9d, 0x9c, 0xa5, 0x6d, 0x5e, 0x30, 0xaf,
-  0xa8, 0x88, 0x58, 0x3a, 0xc1, 0xd8, 0x95, 0x81, 0xbd, 0xef, 0xe2, 0xd7,
-  0x98, 0x12, 0x14, 0xbf, 0x03, 0x12, 0xee, 0x45, 0xff, 0x55, 0xa4, 0x3d,
-  0x27, 0x77, 0xa0, 0x5b, 0x34, 0x3f, 0x66, 0x68, 0x4c, 0xfc, 0x88, 0x0f,
-  0xae, 0x88, 0xdf, 0xe1, 0x70, 0xce, 0xca, 0xac, 0xfa, 0x15, 0x47, 0x7f,
-  0x03, 0x52, 0x61, 0xef, 0x71, 0xc3, 0x3d, 0x06, 0xbd, 0xad, 0x91, 0xd1,
-  0xfc, 0x3c, 0x74, 0x81, 0x2b, 0x4c, 0x63, 0x97, 0x2e, 0xd3, 0xc0, 0x72,
-  0xfc, 0x6d, 0x14, 0x1a, 0x33, 0xfa, 0x2f, 0xd3, 0x62, 0xda, 0x89, 0x1d,
-  0x4d, 0x14, 0xca, 0x87, 0x55, 0x99, 0x4f, 0xe9, 0xfd, 0xa3, 0x6c, 0x23,
-  0xf3, 0xdc, 0x6f, 0x42, 0x0c, 0x33, 0x3a, 0x96, 0x36, 0x38, 0x3f, 0x8c,
-  0x28, 0x23, 0xe2, 0x57, 0xb1, 0x0b, 0x4c, 0x75, 0xd7, 0x52, 0x9a, 0x1e,
-  0xd5, 0x14, 0xc1, 0x7f, 0x16, 0x12, 0xe6, 0x37, 0xa3, 0xc9, 0xaf, 0xbb,
-  0x7c, 0xa6, 0xf0, 0xf2, 0x34, 0xe8, 0x6a, 0x8f, 0xd8, 0xa1, 0xf0, 0xda,
-  0x36, 0x89, 0xb6, 0x4f, 0xa2, 0x87, 0x6d, 0x78, 0xeb, 0xc3, 0xb3, 0x35,
-  0x94, 0xe1, 0x85, 0xea, 0xaf, 0xc5, 0x11, 0x73, 0x35, 0xe0, 0x40, 0x9e,
-  0x62, 0xa8, 0x65, 0xa3, 0x64, 0xb7, 0xfc, 0x62, 0x6d, 0xd8, 0x69, 0xbb,
-  0xf7, 0xeb, 0x2a, 0xc4, 0xcb, 0xeb, 0xc0, 0x08, 0x63, 0xf5, 0xc8, 0xbd,
-  0x09, 0x60, 0x26, 0x46, 0xbf, 0xd0, 0x18, 0x21, 0x10, 0xad, 0x86, 0x29,
-  0x42, 0x5f, 0x69, 0xd0, 0xf9, 0x31, 0x5a, 0xe0, 0xe3, 0xa8, 0x4e, 0xf8,
-  0x78, 0x0b, 0x08, 0xfe, 0xf4, 0x0b, 0xc4, 0xdb, 0x57, 0x97, 0xf2, 0x01,
-  0x74, 0x3a, 0xfe, 0xc5, 0xa2, 0xea, 0x59, 0x2b, 0x24, 0xe8, 0xa9, 0xdf,
-  0x44, 0x4a, 0x34, 0x2b, 0x5f, 0x7f, 0x55, 0xc9, 0xe1, 0xe5, 0x0c, 0x9a,
-  0xd1, 0x1f, 0x21, 0x34, 0x7e, 0xe7, 0xaa, 0x4c, 0xb7, 0x28, 0xd3, 0x09,
-  0xb0, 0xfc, 0xdf, 0xaa, 0xcc, 0xff, 0x5b, 0x95, 0xf9, 0x5b, 0x54, 0x65,
-  0xfe, 0xcb, 0x0b, 0x0b, 0xfd, 0x33, 0xf6, 0x84, 0xf2, 0x42, 0x7f, 0x90,
-  0x5f, 0xb1, 0xc8, 0xb0, 0x31, 0xee, 0x42, 0xa5, 0xe3, 0x65, 0x48, 0x7e,
-  0x20, 0x4b, 0x66, 0x23, 0x41, 0xaf, 0xdb, 0x7f, 0xa8, 0xb9, 0x6c, 0x33,
-  0x5d, 0xdc, 0xc9, 0x55, 0x94, 0x61, 0xd8, 0xaa, 0x74, 0x9c, 0x27, 0x3e,
-  0xfe, 0x87, 0x1c, 0x96, 0x27, 0x05, 0xae, 0xdb, 0xf3, 0xed, 0x55, 0xd7,
-  0xe5, 0xfc, 0x02, 0x64, 0xc0, 0x7d, 0xef, 0xa9, 0x4a, 0x40, 0x63, 0xbc,
-  0x45, 0xe4, 0xdb, 0xd9, 0x0e, 0x92, 0xaf, 0x9a, 0xc4, 0x44, 0x14, 0xc4,
-  0xcc, 0xf4, 0x5c, 0x95, 0xf6, 0x62, 0x6a, 0x3d, 0xf7, 0xdb, 0xdc, 0x51,
-  0xed, 0x8f, 0xfc, 0x42, 0x85, 0xb6, 0x3d, 0xdc, 0xf2, 0x1a, 0x2d, 0x8d,
-  0x30, 0xaf, 0x8b, 0x78, 0x34, 0xc9, 0x40, 0x7a, 0x51, 0xcc, 0x60, 0x31,
-  0x89, 0x5a, 0x0f, 0xff, 0x86, 0x74, 0x6a, 0x7f, 0xe9, 0x17, 0x07, 0xd6,
-  0x82, 0xa3, 0x06, 0x42, 0x91, 0x1a, 0x7d, 0x0c, 0x05, 0xd6, 0x9e, 0x07,
-  0xad, 0xe8, 0x7a, 0x52, 0x6d, 0x6e, 0xdb, 0x20, 0x8a, 0xfc, 0x65, 0x8e,
-  0x00, 0x90, 0xa1, 0x80, 0x0a, 0x5f, 0xf7, 0x43, 0x83, 0x8c, 0x2a, 0xe9,
-  0x29, 0xf4, 0x16, 0x25, 0x57, 0xb0, 0xd7, 0x84, 0xc0, 0xf7, 0xf2, 0x96,
-  0x90, 0x0e, 0x24, 0xf6, 0x10, 0xfc, 0xb3, 0x4b, 0x7b, 0x52, 0x63, 0x11,
-  0xc3, 0x42, 0x35, 0xb8, 0x8a, 0x6e, 0xbd, 0xcd, 0xc1, 0x36, 0x37, 0x3f,
-  0xd0, 0xd4, 0x34, 0x99, 0xa7, 0xd7, 0x7d, 0x87, 0x26, 0x40, 0x5d, 0xcd,
-  0xd5, 0x9b, 0x7b, 0x93, 0x4c, 0xb2, 0xb1, 0x3e, 0x3f, 0x88, 0xde, 0xa3,
-  0xb7, 0x68, 0x3e, 0xe3, 0xce, 0xb7, 0x38, 0x34, 0x8e, 0x1d, 0xc9, 0xef,
-  0x43, 0xc3, 0x35, 0x1b, 0xc5, 0x82, 0xb8, 0xfa, 0xf0, 0xfe, 0xc4, 0xcf,
-  0x6b, 0xd5, 0x0d, 0xa5, 0xf2, 0x97, 0x2a, 0x5d, 0x1f, 0x17, 0xa3, 0x6a,
-  0x1d, 0x77, 0x4d, 0x3f, 0x7c, 0x5d, 0x4f, 0x27, 0x8b, 0x3d, 0x51, 0x19,
-  0x67, 0x45, 0x20, 0xd2, 0x24, 0x7a, 0x7d, 0xe7, 0x9c, 0x43, 0xad, 0xf5,
-  0x78, 0xc4, 0x64, 0x99, 0x83, 0xe3, 0x0c, 0xbf, 0xf7, 0xfa, 0xe7, 0x50,
-  0x65, 0x3e, 0x2c, 0x08, 0xfe, 0x1f, 0x5e, 0x7a, 0x94, 0x17, 0x17, 0x00,
-  0xe9, 0x4c, 0x9c, 0x16, 0x98, 0x4e, 0xe5, 0xbd, 0xbf, 0x37, 0xec, 0x1e,
-  0xab, 0xcb, 0x7b, 0xcc, 0xf6, 0x26, 0x75, 0x41, 0x36, 0xa3, 0xb5, 0xe3,
-  0xa6, 0x4a, 0x87, 0xd1, 0xff, 0x98, 0xb3, 0xda, 0x0a, 0x88, 0xb0, 0x58,
-  0x47, 0x66, 0xd1, 0xbf, 0xbc, 0x5e, 0xc7, 0x67, 0x7e, 0x58, 0xdb, 0xc7,
-  0x83, 0xa3, 0xe1, 0xc7, 0xcd, 0xad, 0x17, 0x1f, 0xbf, 0x3e, 0x7c, 0xfb,
-  0x71, 0xf8, 0xe6, 0x00, 0x75, 0xbb, 0x27, 0x0a, 0xff, 0xe6, 0xd8, 0x12,
-  0xfc, 0xa6, 0xe8, 0x5d, 0x13, 0xc9, 0x67, 0xb3, 0xe3, 0x54, 0xa2, 0xa9,
-  0xf2, 0x18, 0xa7, 0x8e, 0xfb, 0xe8, 0x6f, 0x22, 0xd1, 0xdc, 0x0f, 0x0c,
-  0xdf, 0x9f, 0xfd, 0x36, 0x06, 0x09, 0x7c, 0x84, 0xc0, 0x7a, 0x1e, 0x96,
-  0xfb, 0xf0, 0xa4, 0x29, 0x5c, 0xdb, 0xe7, 0xaa, 0xb4, 0x85, 0xc4, 0x31,
-  0x0f, 0xff, 0x56, 0xc4, 0x31, 0x1f, 0x68, 0x1a, 0xb0, 0xbf, 0x23, 0x7d,
-  0xc8, 0xa6, 0x0e, 0xea, 0x5b, 0x0d, 0xca, 0xd0, 0x63, 0xbf, 0x15, 0x55,
-  0x68, 0xf0, 0x6a, 0x8a, 0x0e, 0x84, 0xdf, 0x8a, 0x20, 0xb6, 0xd1, 0xf8,
-  0x63, 0x88, 0x72, 0xb3, 0xd9, 0x45, 0x0b, 0xaa, 0x20, 0xa7, 0x27, 0x7e,
-  0x33, 0x6a, 0xc0, 0xd0, 0xbf, 0x16, 0x15, 0x16, 0xad, 0xf6, 0x43, 0xbf,
-  0xe9, 0x57, 0xd9, 0x6f, 0xb4, 0x20, 0xf0, 0x98, 0xc1, 0x01, 0xd8, 0x77,
-  0x70, 0xe5, 0x1b, 0x95, 0xa1, 0x85, 0x49, 0xe4, 0xf7, 0x9a, 0x34, 0x84,
-  0x40, 0xc5, 0x83, 0xed, 0x18, 0xf0, 0x22, 0xe1, 0x46, 0x47, 0x8a, 0x57,
-  0x3a, 0x1c, 0x9e, 0x1d, 0xc7, 0xda, 0xe9, 0x8f, 0x7b, 0x65, 0x70, 0x5f,
-  0x14, 0x2e, 0x31, 0xd3, 0xae, 0x41, 0xef, 0x3a, 0x14, 0x7c, 0x4a, 0xe9,
-  0x27, 0x07, 0x55, 0xcb, 0x0b, 0x56, 0x6b, 0x3c, 0x94, 0xae, 0x2d, 0x17,
-  0xd3, 0x0b, 0xfb, 0x84, 0xfb, 0x89, 0xb3, 0x0b, 0x56, 0x4e, 0x06, 0x2e,
-  0xa9, 0x27, 0x6e, 0xbf, 0x9c, 0x0b, 0x13, 0x25, 0xa6, 0x7b, 0xb4, 0xad,
-  0x2f, 0x68, 0xdf, 0x62, 0x53, 0x99, 0xea, 0x5c, 0x69, 0x7b, 0x51, 0x2f,
-  0xfe, 0x10, 0xed, 0xf5, 0x3c, 0x12, 0x9d, 0x62, 0x39, 0x5e, 0x55, 0xa7,
-  0x53, 0x8a, 0xe7, 0x96, 0x84, 0x5a, 0x8c, 0x4d, 0x51, 0x2b, 0xd7, 0xe8,
-  0xbd, 0xc6, 0x8e, 0x3a, 0xd6, 0x79, 0xa7, 0x26, 0x53, 0x79, 0xe5, 0x25,
-  0xaa, 0x72, 0x5f, 0x1f, 0x9a, 0x3e, 0xee, 0x19, 0xb6, 0x29, 0x25, 0xad,
-  0x09, 0x83, 0x92, 0x26, 0x7c, 0xcd, 0xa6, 0x79, 0x4e, 0x89, 0xf4, 0x52,
-  0x8b, 0x80, 0xb9, 0xf4, 0xa3, 0x40, 0x71, 0x0c, 0xa7, 0x54, 0x57, 0x3c,
-  0xe2, 0xac, 0xa8, 0xaa, 0xec, 0x02, 0x74, 0x92, 0x2b, 0xd1, 0x07, 0xaa,
-  0x94, 0x2b, 0x8e, 0x18, 0x8f, 0x13, 0x69, 0x49, 0x8a, 0x92, 0x05, 0x6b,
-  0x6e, 0x93, 0x88, 0x56, 0x4a, 0x01, 0x59, 0x0e, 0x9e, 0x4a, 0xc8, 0x18,
-  0xe6, 0xa7, 0x05, 0x93, 0x37, 0x19, 0x7e, 0x22, 0x95, 0x04, 0xec, 0x24,
-  0x9a, 0x16, 0x4c, 0x7a, 0xb2, 0xe9, 0xdb, 0x4a, 0xc5, 0x04, 0xbb, 0x09,
-  0x80, 0x04, 0x18, 0x62, 0xc5, 0x70, 0x85, 0xbd, 0x24, 0xa9, 0x8c, 0x9c,
-  0xea, 0x24, 0x6d, 0x8d, 0x7a, 0x99, 0x62, 0xb2, 0xff, 0x4d, 0x2a, 0xdb,
-  0x2a, 0x0e, 0xa3, 0xce, 0xfa, 0xd5, 0xd2, 0xb4, 0x8b, 0x27, 0xbc, 0x07,
-  0x6a, 0xfe, 0x62, 0xfa, 0x44, 0xe0, 0x17, 0xa3, 0x9a, 0x3b, 0x6b, 0x53,
-  0x19, 0xb2, 0xc5, 0x59, 0x1e, 0xfc, 0x3b, 0xe8, 0x34, 0x86, 0x9f, 0xf7,
-  0x66, 0xbf, 0xd4, 0x7d, 0x8d, 0x87, 0xc1, 0x91, 0x2e, 0x8e, 0x24, 0x5e,
-  0x02, 0x54, 0xa1, 0xd9, 0x1f, 0xa0, 0x1b, 0x62, 0xa0, 0x59, 0x67, 0xee,
-  0xf5, 0xd6, 0x08, 0x83, 0x0b, 0x5c, 0x66, 0x77, 0x58, 0x97, 0xef, 0xb7,
-  0xa5, 0x6a, 0x57, 0xe9, 0x17, 0xa5, 0x7a, 0x95, 0x0d, 0x89, 0x6b, 0x42,
-  0xa3, 0x26, 0x98, 0x59, 0x37, 0x89, 0xfb, 0x83, 0xa7, 0x57, 0x5b, 0xec,
-  0x81, 0x6e, 0xb4, 0x01, 0x07, 0x6c, 0x80, 0x70, 0x39, 0x38, 0x0d, 0x25,
-  0xc1, 0x19, 0xf8, 0x8a, 0x30, 0x36, 0xac, 0x67, 0xa0, 0x01, 0xc5, 0x19,
-  0x70, 0x60, 0x06, 0x3e, 0xeb, 0xc6, 0x6a, 0x30, 0xb5, 0x09, 0x37, 0x59,
-  0x62, 0x36, 0xd4, 0xae, 0x96, 0xe9, 0x21, 0x6d, 0xb5, 0x93, 0x4e, 0x3b,
-  0x10, 0xef, 0x0c, 0x3a, 0x5b, 0x21, 0x78, 0xb1, 0x77, 0xc3, 0xa1, 0x0f,
-  0x18, 0x90, 0x97, 0xe9, 0xa8, 0xb8, 0xca, 0xb3, 0x9f, 0x71, 0x44, 0x32,
-  0x3a, 0xdb, 0x05, 0xac, 0x0d, 0xc8, 0x06, 0x4d, 0x7e, 0xd7, 0xf2, 0x07,
-  0x5f, 0x4a, 0x52, 0x99, 0x1d, 0xdd, 0x5d, 0x58, 0x07, 0x86, 0xd0, 0x3a,
-  0x42, 0x88, 0x8a, 0x12, 0x71, 0xa8, 0x38, 0x28, 0x15, 0x67, 0xa1, 0x29,
-  0xbd, 0xe0, 0x0f, 0x7b, 0xbb, 0xa3, 0xdb, 0x2a, 0xdd, 0x09, 0x3a, 0x1a,
-  0x02, 0xe1, 0x48, 0x4b, 0x43, 0x2c, 0x64, 0xf5, 0x93, 0x00, 0x16, 0xc2,
-  0x4d, 0x75, 0xa8, 0xff, 0x05, 0xb2, 0x76, 0xb0, 0xff, 0x9a, 0x69, 0xe9,
-  0x03, 0x86, 0x56, 0xa8, 0xaf, 0x98, 0xd0, 0x98, 0xef, 0xe3, 0x81, 0xa0,
-  0x46, 0x60, 0x83, 0x37, 0xa2, 0x72, 0xa0, 0x91, 0x9c, 0xb1, 0xd8, 0x92,
-  0x50, 0xcf, 0xb6, 0x66, 0x73, 0x37, 0x93, 0x0c, 0xf4, 0x70, 0x07, 0xb7,
-  0x03, 0x4c, 0x75, 0xd1, 0xee, 0x1d, 0x92, 0x73, 0x82, 0x86, 0xa5, 0xc0,
-  0xc1, 0xa6, 0xdc, 0x19, 0xcd, 0xe0, 0xa2, 0x88, 0x51, 0x8f, 0x27, 0x8e,
-  0x0a, 0x01, 0xbd, 0xf6, 0x59, 0x89, 0x9a, 0xbb, 0x17, 0xa9, 0x22, 0x24,
-  0x11, 0x4f, 0xc1, 0x34, 0x70, 0x80, 0x01, 0xf6, 0xeb, 0x42, 0x7c, 0x1a,
-  0x4d, 0x6f, 0x81, 0x5f, 0x23, 0xe2, 0x8d, 0x72, 0x45, 0x9b, 0xb5, 0x04,
-  0xd4, 0xc3, 0x9d, 0x22, 0xd7, 0x63, 0x48, 0x1e, 0x4c, 0xa2, 0x35, 0x7c,
-  0xcd, 0x9b, 0x90, 0x1b, 0x7f, 0x7a, 0xac, 0x25, 0xcd, 0x08, 0x48, 0x99,
-  0x98, 0xe7, 0x39, 0x62, 0x1c, 0x0b, 0xc8, 0x8a, 0xe1, 0x95, 0x3e, 0x8a,
-  0x0f, 0x16, 0xdc, 0x12, 0x5d, 0x8b, 0x67, 0x2a, 0x26, 0xdb, 0x8b, 0xbd,
-  0x97, 0x41, 0x3a, 0x2c, 0xe0, 0xdf, 0x00, 0x97, 0xe3, 0x49, 0xc0, 0x1c,
-  0xbf, 0x2d, 0x2e, 0xc7, 0xb9, 0x99, 0x39, 0x5e, 0x1b, 0xbe, 0x9c, 0x37,
-  0x85, 0x4c, 0xb7, 0x20, 0x08, 0x12, 0xa7, 0xfd, 0x24, 0x37, 0x2e, 0xf4,
-  0x42, 0x28, 0xde, 0x41, 0x42, 0x64, 0x14, 0x4a, 0x98, 0x6a, 0x17, 0x3f,
-  0xa9, 0x7c, 0x5c, 0x15, 0x89, 0xb1, 0x16, 0xa8, 0x22, 0xa5, 0x3c, 0x3e,
-  0x44, 0x2a, 0x44, 0xa2, 0xd1, 0x4d, 0xfa, 0x27, 0xb3, 0x1d, 0xff, 0x16,
-  0x2e, 0x8b, 0x46, 0x6c, 0xf4, 0x69, 0x30, 0x22, 0x02, 0x1b, 0xf2, 0x88,
-  0xa0, 0xf4, 0x26, 0x5c, 0x14, 0xfb, 0xce, 0xed, 0xfe, 0xc5, 0x83, 0xd7,
-  0x3b, 0x1d, 0x7a, 0x7c, 0x4d, 0x31, 0x8f, 0x1a, 0xc2, 0x57, 0xa5, 0x2f,
-  0xb9, 0xba, 0xe0, 0xdc, 0x85, 0x4f, 0x2f, 0x16, 0xf8, 0x66, 0xdc, 0xa5,
-  0x4f, 0x64, 0x2d, 0xd6, 0x17, 0xe3, 0xfb, 0x1d, 0xd2, 0x36, 0xd5, 0x44,
-  0x49, 0xf5, 0x6a, 0xc1, 0xf5, 0x72, 0x91, 0xd6, 0xb7, 0xa8, 0x9a, 0xd2,
-  0x06, 0x69, 0x33, 0x0e, 0x47, 0x24, 0xc9, 0x9e, 0x81, 0x4e, 0x13, 0x2a,
-  0x8d, 0xa4, 0x6e, 0xac, 0x2a, 0xdd, 0xb8, 0x97, 0xaf, 0x71, 0x6b, 0x6a,
-  0x12, 0xa6, 0x27, 0x0a, 0x58, 0x95, 0x0d, 0xae, 0xe9, 0xde, 0x08, 0x44,
-  0xa1, 0x8d, 0x56, 0x04, 0x37, 0x00, 0x53, 0xb4, 0xba, 0x48, 0x1e, 0xdc,
-  0x7c, 0x12, 0x83, 0xe0, 0x07, 0x7e, 0xa5, 0x1c, 0xac, 0xbe, 0xcf, 0x2b,
-  0x69, 0xbb, 0xb5, 0xa6, 0x11, 0x76, 0x22, 0xdc, 0xc2, 0x70, 0xf1, 0xb9,
-  0xa4, 0x72, 0x08, 0xa1, 0xf4, 0xa4, 0x34, 0xbe, 0xe5, 0x65, 0x3f, 0x62,
-  0x86, 0x5f, 0x28, 0xc9, 0xb4, 0x4b, 0x14, 0xb3, 0x83, 0x58, 0x7e, 0x9b,
-  0xcc, 0xe0, 0x67, 0x09, 0x17, 0xdd, 0x4f, 0x93, 0x71, 0x1a, 0x85, 0xf2,
-  0xa9, 0x89, 0x33, 0xdd, 0x89, 0xb5, 0x12, 0x6c, 0x69, 0xd9, 0xcd, 0x0e,
-  0xe9, 0x76, 0xb7, 0x93, 0x89, 0x17, 0xc4, 0x44, 0xa1, 0x2a, 0x60, 0x02,
-  0xe2, 0xf5, 0xd6, 0x74, 0x5b, 0xc9, 0x54, 0x71, 0x55, 0x10, 0xe9, 0xa3,
-  0x9e, 0x33, 0x67, 0xd5, 0x7e, 0xd3, 0xf5, 0xc6, 0x22, 0x8b, 0x60, 0x6b,
-  0x12, 0xdb, 0x99, 0xa4, 0x3d, 0x7f, 0xa9, 0x2a, 0x94, 0x9c, 0xc4, 0xa6,
-  0x0b, 0x99, 0xfa, 0xb9, 0x7a, 0x05, 0xef, 0xdc, 0xb3, 0x44, 0x5f, 0x90,
-  0xfe, 0xcc, 0x32, 0x7e, 0x2c, 0xcb, 0x89, 0x1f, 0xc8, 0x71, 0x5c, 0xc8,
-  0x99, 0xb2, 0x33, 0xbf, 0x56, 0x82, 0xa0, 0x2b, 0xac, 0x24, 0x43, 0x21,
-  0x90, 0xe3, 0xb5, 0x3a, 0x44, 0xfc, 0x87, 0xe1, 0xe1, 0xd9, 0x5a, 0x74,
-  0x66, 0x03, 0xdb, 0x64, 0xfe, 0x71, 0xd7, 0xac, 0x83, 0xe6, 0x5d, 0xc8,
-  0x77, 0xac, 0xb4, 0xa5, 0x0c, 0xc7, 0xa9, 0x25, 0x75, 0x80, 0xf8, 0xd5,
-  0xf4, 0x75, 0xa5, 0x14, 0xd5, 0x5f, 0xfd, 0x82, 0x68, 0xad, 0xe5, 0x80,
-  0x60, 0xc8, 0x19, 0xe1, 0x55, 0x9c, 0x03, 0xae, 0x74, 0xc2, 0x00, 0x11,
-  0x02, 0x2c, 0x51, 0xcf, 0x1c, 0x8d, 0xdc, 0x33, 0xc7, 0xd2, 0xd2, 0x5b,
-  0xc3, 0x11, 0x21, 0xb4, 0xe4, 0xdf, 0xc1, 0x81, 0xa7, 0xb5, 0x10, 0x9a,
-  0x25, 0xde, 0x7c, 0x7c, 0x8b, 0x36, 0x16, 0x01, 0xc6, 0x7f, 0x9e, 0x86,
-  0x5a, 0x80, 0xdc, 0x93, 0x32, 0x25, 0x07, 0x66, 0x3c, 0x68, 0x37, 0x0e,
-  0x77, 0x32, 0x0b, 0x64, 0x72, 0x19, 0xc1, 0x64, 0xf0, 0xf9, 0xea, 0x68,
-  0x5e, 0xc9, 0x7a, 0x36, 0x58, 0xd7, 0xd8, 0x71, 0x82, 0xfa, 0xdb, 0x93,
-  0x5d, 0x35, 0x2a, 0x66, 0xf7, 0x48, 0x0c, 0x78, 0xac, 0xaa, 0xae, 0xb7,
-  0x40, 0x5c, 0x6e, 0x0d, 0x5e, 0x30, 0xb8, 0xce, 0x35, 0x28, 0x4c, 0x81,
-  0xe6, 0xbc, 0x9c, 0xe6, 0xce, 0xdd, 0xa3, 0xdb, 0xe3, 0x89, 0x25, 0x34,
-  0x58, 0x5b, 0x96, 0xaf, 0x99, 0xf1, 0x68, 0xf3, 0xe1, 0xef, 0x51, 0xb5,
-  0x4c, 0x47, 0x86, 0xb6, 0x79, 0xfd, 0x57, 0xe4, 0x6d, 0x6e, 0x80, 0xb6,
-  0x2f, 0x5e, 0x05, 0x8f, 0x9b, 0x91, 0x99, 0x23, 0x64, 0xe9, 0x35, 0x1c,
-  0x29, 0x1f, 0x73, 0x36, 0xf6, 0x45, 0x06, 0xd4, 0x2c, 0xef, 0x8d, 0x2f,
-  0xa2, 0x29, 0x74, 0x5e, 0x13, 0x02, 0x20, 0xbd, 0x15, 0xc4, 0x96, 0x1c,
-  0x44, 0x7f, 0xa5, 0x8f, 0xca, 0xdb, 0x8c, 0xc7, 0x41, 0x09, 0xe3, 0x5f,
-  0x1d, 0xbd, 0x3e, 0x7d, 0x7f, 0xd4, 0x04, 0xc8, 0xaa, 0xa9, 0x05, 0x44,
-  0x44, 0x09, 0xd1, 0xed, 0xd9, 0x51, 0x23, 0x2b, 0x45, 0xbe, 0x95, 0x6c,
-  0xee, 0x0c, 0xbd, 0x47, 0xd1, 0xd9, 0xb7, 0xaf, 0xcc, 0xec, 0x50, 0x4b,
-  0xcc, 0x69, 0x56, 0x3a, 0x68, 0x9f, 0x77, 0xb9, 0x35, 0x1c, 0x65, 0x8e,
-  0xac, 0x0d, 0x50, 0xd0, 0x71, 0xb2, 0xb7, 0xce, 0x8f, 0xd2, 0xd0, 0xb9,
-  0x78, 0x40, 0x21, 0x2f, 0xa9, 0x75, 0x7d, 0x55, 0x21, 0x84, 0xa5, 0x19,
-  0xd4, 0xb3, 0x7b, 0x48, 0xfb, 0x23, 0xac, 0x7d, 0x71, 0x26, 0x60, 0xb3,
-  0x28, 0xec, 0x20, 0x15, 0xf8, 0x86, 0xe6, 0xcc, 0xf3, 0x07, 0x02, 0x95,
-  0xbd, 0xd7, 0x58, 0x68, 0x4f, 0x39, 0x0a, 0xac, 0x5b, 0xa0, 0xc7, 0x0e,
-  0xcf, 0x8a, 0xa9, 0xa6, 0xec, 0x73, 0x5f, 0x2f, 0x49, 0x45, 0x69, 0xd0,
-  0x10, 0xbe, 0xe2, 0x79, 0xed, 0xe0, 0xab, 0xab, 0x15, 0xc2, 0x5b, 0xa8,
-  0x15, 0xef, 0xb6, 0x66, 0x94, 0xf9, 0xae, 0xfc, 0x69, 0xc5, 0xe2, 0x80,
-  0x90, 0xca, 0x63, 0xac, 0xf0, 0x76, 0x7a, 0x0e, 0x6c, 0x38, 0x72, 0xc9,
-  0x43, 0xc5, 0x2d, 0xba, 0xde, 0xc1, 0xa3, 0x20, 0x76, 0xaa, 0xba, 0x98,
-  0xa1, 0x32, 0xc6, 0xa0, 0x95, 0xd8, 0xa7, 0x91, 0xf2, 0x93, 0xf1, 0x26,
-  0xe2, 0x92, 0x0f, 0x2e, 0x02, 0x09, 0x35, 0x77, 0xcf, 0xf2, 0x39, 0xb7,
-  0x29, 0xce, 0x15, 0x72, 0x4d, 0xd7, 0x86, 0xc3, 0x80, 0x14, 0xb4, 0xdb,
-  0xd3, 0x5a, 0x35, 0x76, 0x2a, 0x0b, 0x18, 0x23, 0x59, 0xf5, 0x29, 0x5a,
-  0xfd, 0x4f, 0x58, 0x20, 0x01, 0x88, 0xdf, 0x66, 0x15, 0x37, 0x8f, 0xd3,
-  0x7c, 0x91, 0xb4, 0xd4, 0x22, 0x0d, 0x9d, 0x27, 0xd1, 0x04, 0x45, 0x6c,
-  0x18, 0xf0, 0x40, 0x29, 0xd1, 0x97, 0xd6, 0xec, 0x35, 0x22, 0xad, 0x1a,
-  0x33, 0xd2, 0xc8, 0x65, 0x4a, 0x3e, 0x0a, 0xe8, 0xee, 0xdc, 0x19, 0x8f,
-  0xe2, 0xce, 0x78, 0x2c, 0xab, 0xfb, 0xbc, 0x46, 0xf9, 0xc6, 0xa2, 0x78,
-  0x54, 0x94, 0xa4, 0x14, 0x20, 0xcf, 0xdb, 0x53, 0x56, 0x11, 0xb8, 0xec,
-  0xcb, 0xdd, 0x97, 0x40, 0x69, 0x1f, 0x24, 0x33, 0xe7, 0x40, 0x3a, 0xbe,
-  0x22, 0x9d, 0xac, 0x29, 0x35, 0xad, 0x60, 0xf8, 0x3b, 0x3a, 0x5c, 0x66,
-  0x28, 0xf2, 0xef, 0xa6, 0xd4, 0x7f, 0x14, 0xe1, 0x8f, 0xfc, 0xcb, 0x7d,
-  0xe8, 0x0c, 0xf3, 0x44, 0x30, 0x0a, 0xbf, 0x64, 0x84, 0x64, 0x11, 0xf5,
-  0xd2, 0x16, 0xe7, 0xbd, 0xea, 0xb5, 0x83, 0xe8, 0x43, 0x4e, 0x35, 0x4b,
-  0xc2, 0x85, 0x72, 0x55, 0x65, 0x39, 0x6c, 0x1b, 0x6c, 0x33, 0x5c, 0x56,
-  0x01, 0x59, 0xf4, 0xf7, 0xa6, 0x0c, 0x12, 0x39, 0xdd, 0x4a, 0xe4, 0xa2,
-  0xc3, 0x6b, 0x8a, 0x94, 0x54, 0x7c, 0x45, 0xaf, 0x41, 0xfe, 0x06, 0x2a,
-  0x50, 0xd8, 0x99, 0x04, 0xcb, 0xa1, 0xb1, 0x31, 0x57, 0x2f, 0x9d, 0x4c,
-  0x18, 0x19, 0x8e, 0x5a, 0x51, 0xa3, 0x9d, 0xc7, 0xf0, 0x7c, 0x54, 0xeb,
-  0xe3, 0xda, 0xbf, 0xde, 0xe5, 0x46, 0x28, 0x83, 0xd8, 0xab, 0x50, 0x91,
-  0x7b, 0x05, 0x73, 0x43, 0xf3, 0x11, 0x10, 0x0d, 0xca, 0xba, 0xc4, 0x98,
-  0x36, 0xbc, 0xa4, 0xae, 0xd3, 0xee, 0x37, 0x24, 0x4c, 0x90, 0xd0, 0xe8,
-  0xba, 0x66, 0x75, 0x22, 0x8c, 0xc8, 0x42, 0xe6, 0x0e, 0x3f, 0x69, 0x0e,
-  0x4a, 0x95, 0xd6, 0x95, 0x55, 0x23, 0x12, 0x12, 0x85, 0xb4, 0x6b, 0xca,
-  0x2a, 0xdd, 0xc3, 0x21, 0x9d, 0xc6, 0x0c, 0x19, 0xc6, 0x8f, 0x31, 0xcf,
-  0xe7, 0x63, 0xd6, 0xa6, 0xf7, 0x69, 0x36, 0xe9, 0x1d, 0x69, 0x81, 0xc0,
-  0x20, 0x5f, 0x98, 0x82, 0x99, 0xcf, 0x3a, 0x70, 0x62, 0xd0, 0x97, 0x8f,
-  0x6d, 0xce, 0x29, 0x59, 0x92, 0x17, 0xc3, 0x2e, 0x8a, 0x8a, 0x11, 0xdf,
-  0xa4, 0x9f, 0xe6, 0xe4, 0xe3, 0x55, 0x5a, 0xe3, 0x6f, 0x57, 0xb7, 0xd7,
-  0x90, 0x1c, 0xe1, 0xe1, 0x66, 0x08, 0xd1, 0x48, 0xe8, 0x70, 0xcd, 0x69,
-  0x18, 0xb4, 0x38, 0xd0, 0x89, 0x6c, 0x30, 0x0c, 0xdb, 0x9c, 0x7a, 0x37,
-  0xf8, 0xe8, 0xfa, 0xaa, 0x9c, 0x45, 0x57, 0xa0, 0x46, 0xcf, 0x1e, 0xa0,
-  0x2a, 0x3f, 0xe9, 0xd1, 0x94, 0x5f, 0x3d, 0x7e, 0xe5, 0xd2, 0x52, 0xc8,
-  0x06, 0x74, 0x0b, 0x0f, 0x47, 0xec, 0xc9, 0x29, 0xae, 0x42, 0x4e, 0xbd,
-  0x93, 0xcd, 0x68, 0xd6, 0x66, 0x16, 0xe2, 0xd3, 0x6f, 0xc2, 0xc3, 0x35,
-  0xb6, 0x84, 0x47, 0xd0, 0x61, 0xe9, 0xfc, 0x8d, 0x61, 0xa8, 0x69, 0xc2,
-  0x27, 0xec, 0x0a, 0x24, 0x9f, 0x7e, 0xc4, 0x2f, 0xd2, 0xbb, 0x9e, 0x16,
-  0x63, 0x04, 0x4a, 0x4a, 0x1f, 0xa4, 0x05, 0x3e, 0xa8, 0xb4, 0x10, 0x80,
-  0xa9, 0xca, 0x5d, 0x17, 0x0d, 0x02, 0x27, 0x5f, 0x77, 0xda, 0xc7, 0x2c,
-  0x6e, 0x5b, 0xf5, 0x52, 0xc6, 0x85, 0xc3, 0xd3, 0xcb, 0xee, 0x12, 0xf2,
-  0xa8, 0x18, 0xd5, 0xce, 0x0a, 0xf0, 0x81, 0x0e, 0x86, 0xa5, 0xbb, 0x2b,
-  0xb0, 0x32, 0x84, 0x1b, 0x22, 0x8f, 0xcd, 0x43, 0x2b, 0xc3, 0x07, 0xbd,
-  0x5d, 0x86, 0x1f, 0xf2, 0x8d, 0xd8, 0xda, 0x62, 0xde, 0x9c, 0xf0, 0x70,
-  0xcd, 0x0d, 0xd6, 0x1d, 0xa6, 0x39, 0x84, 0x36, 0x58, 0xfa, 0x7d, 0xfb,
-  0x9a, 0xb3, 0x9e, 0x1d, 0xdd, 0x61, 0xf3, 0x60, 0xe7, 0x06, 0xcb, 0x37,
-  0x3c, 0x2a, 0x4c, 0x72, 0x38, 0x7c, 0xf3, 0x72, 0x94, 0x7e, 0xa4, 0xb9,
-  0x71, 0xe3, 0x9d, 0x8f, 0x8b, 0x09, 0x32, 0x11, 0x6c, 0xd4, 0xfb, 0x29,
-  0x2a, 0xc5, 0x56, 0x02, 0x4b, 0xb3, 0xce, 0x44, 0xb0, 0x42, 0x41, 0x71,
-  0xa7, 0xdf, 0xb3, 0x0d, 0xdc, 0xc1, 0xf6, 0xf6, 0x7b, 0x51, 0x64, 0x20,
-  0xbf, 0xc1, 0xea, 0x85, 0x79, 0x53, 0xae, 0xb1, 0x90, 0xc8, 0x9d, 0x23,
-  0x3e, 0xd6, 0x41, 0x90, 0xa0, 0x97, 0x74, 0xfa, 0x09, 0x71, 0x81, 0x8c,
-  0x96, 0xf5, 0x31, 0xf7, 0x63, 0x8c, 0xce, 0xe2, 0xf8, 0x69, 0xdd, 0x6d,
-  0x5e, 0x52, 0xbb, 0x9d, 0x77, 0x43, 0x04, 0xc2, 0xcf, 0x3b, 0x66, 0xe3,
-  0x7e, 0xd0, 0x9c, 0x48, 0x6f, 0x76, 0x8f, 0x16, 0xe1, 0xfc, 0x64, 0x58,
-  0x82, 0x37, 0x90, 0xcc, 0x1c, 0x39, 0xbe, 0x80, 0x0d, 0x97, 0x96, 0xe3,
-  0xa3, 0x2e, 0x99, 0x8b, 0x4a, 0x0e, 0x5e, 0x66, 0x24, 0xc4, 0xe1, 0xbb,
-  0xbf, 0xbf, 0x08, 0xc7, 0x38, 0xa6, 0x7a, 0x8e, 0x6f, 0xad, 0x54, 0x52,
-  0xfd, 0x0e, 0xa7, 0x93, 0x5c, 0x54, 0xc5, 0x64, 0x8e, 0x1e, 0x96, 0xa4,
-  0xbe, 0xe6, 0x1d, 0xba, 0xd4, 0x79, 0x76, 0xee, 0x67, 0x5e, 0xfb, 0x5a,
-  0xbb, 0xb7, 0xa3, 0xf0, 0x18, 0x15, 0xb3, 0x12, 0xcb, 0x0a, 0x87, 0x77,
-  0x6f, 0xab, 0x3c, 0x6d, 0xa7, 0xc8, 0x7a, 0x88, 0xdd, 0x94, 0x32, 0xc0,
-  0x78, 0xdd, 0x77, 0x88, 0x7c, 0xb5, 0x75, 0x87, 0x8c, 0x53, 0x0c, 0x24,
-  0x31, 0x77, 0x50, 0x0d, 0x84, 0xb9, 0x8d, 0xa2, 0x87, 0xce, 0x66, 0x27,
-  0xe3, 0x96, 0xd3, 0x07, 0x18, 0x16, 0x1e, 0xb0, 0xab, 0x62, 0xa8, 0x62,
-  0xb3, 0x2a, 0x4f, 0xd4, 0x09, 0x03, 0x76, 0x50, 0xbe, 0x6b, 0x06, 0x8d,
-  0x83, 0xbd, 0x68, 0x26, 0xee, 0x99, 0x76, 0x27, 0x63, 0x49, 0x8b, 0x0a,
-  0x3c, 0xfe, 0x61, 0x66, 0xd6, 0xc1, 0xeb, 0xf7, 0xad, 0xf7, 0x84, 0x3c,
-  0x7d, 0x27, 0xd8, 0x42, 0x6e, 0x03, 0xf4, 0xb1, 0xf8, 0xbc, 0xa1, 0x32,
-  0x73, 0x29, 0x99, 0x8b, 0x0e, 0x80, 0x89, 0x23, 0xd7, 0x3c, 0x17, 0x83,
-  0xf8, 0x16, 0x58, 0x7b, 0xec, 0xbd, 0x3a, 0x3a, 0x39, 0x22, 0x7a, 0xf6,
-  0x02, 0xed, 0x1e, 0x2f, 0x8b, 0xc2, 0x8c, 0x63, 0x1d, 0x0b, 0xdf, 0xf5,
-  0x6d, 0xf3, 0x35, 0xd7, 0x4d, 0x86, 0x2b, 0x03, 0x5d, 0x74, 0x01, 0x0c,
-  0x88, 0x93, 0x10, 0x64, 0x18, 0x8b, 0x7a, 0xb7, 0x67, 0x94, 0xd6, 0x42,
-  0xb5, 0x34, 0x54, 0xd8, 0x87, 0xde, 0x14, 0x35, 0x89, 0xa8, 0x6b, 0xc9,
-  0x38, 0x2d, 0x3d, 0x22, 0x83, 0x85, 0xc3, 0x9f, 0xe4, 0x7a, 0x0b, 0xee,
-  0x8b, 0x89, 0x89, 0x19, 0xa2, 0x96, 0x93, 0x95, 0xc1, 0x7d, 0x61, 0xd9,
-  0x86, 0xd6, 0xc7, 0x61, 0xf7, 0xae, 0xc0, 0x00, 0x0a, 0xd8, 0xb4, 0xcd,
-  0xd2, 0x17, 0x10, 0x1e, 0x66, 0xd5, 0x9c, 0x79, 0x9a, 0x5e, 0x8d, 0x63,
-  0x61, 0xbe, 0xa7, 0x94, 0x01, 0xb8, 0x14, 0xc2, 0xe4, 0xff, 0xac, 0xba,
-  0x5e, 0x32, 0xb6, 0xa2, 0x13, 0x70, 0xe8, 0x5e, 0xf6, 0x79, 0x64, 0x90,
-  0x83, 0xfb, 0xf4, 0x47, 0x10, 0xda, 0x82, 0x2c, 0x3d, 0xb2, 0x1b, 0x5e,
-  0x1f, 0x9f, 0x1c, 0xad, 0x45, 0xef, 0x25, 0x65, 0x05, 0xcd, 0xab, 0xfb,
-  0x1a, 0x7b, 0xea, 0xe2, 0x00, 0xab, 0xd9, 0x00, 0x54, 0x28, 0x86, 0x32,
-  0x40, 0x5b, 0x65, 0x5c, 0x8c, 0x82, 0x09, 0x40, 0x6b, 0x92, 0xe8, 0xc2,
-  0x51, 0x87, 0xf5, 0xcd, 0xc1, 0x66, 0xdf, 0xf5, 0x03, 0xd9, 0x6a, 0x21,
-  0x4e, 0xb1, 0x91, 0x76, 0xdc, 0xf4, 0xe9, 0xb6, 0xd7, 0xf1, 0x3d, 0x7e,
-  0xb8, 0xf2, 0x03, 0x75, 0x14, 0xec, 0xb3, 0x9e, 0x84, 0xdb, 0xe4, 0xde,
-  0xb7, 0x11, 0x37, 0xe2, 0x9d, 0x97, 0x2f, 0x1b, 0x5a, 0x60, 0xe5, 0xf4,
-  0x33, 0xdf, 0xdd, 0xd8, 0xa0, 0xb5, 0x79, 0xe8, 0x91, 0xf0, 0x8b, 0xf8,
-  0x25, 0xbd, 0xd8, 0x7c, 0xad, 0x4a, 0x61, 0xef, 0xc7, 0xdd, 0xef, 0xc5,
-  0xf8, 0x9b, 0xc0, 0xe7, 0xe8, 0x52, 0xed, 0x7c, 0xeb, 0x25, 0x7e, 0x2e,
-  0xf0, 0x16, 0x3d, 0xcc, 0x74, 0x2c, 0x2e, 0x2f, 0xd1, 0x69, 0x8e, 0x4f,
-  0x2a, 0x36, 0xfb, 0x6d, 0x52, 0x8e, 0xfd, 0xe5, 0x6e, 0xf4, 0xe3, 0xcd,
-  0xae, 0xe5, 0x52, 0x96, 0x10, 0xd5, 0x67, 0xe0, 0x7e, 0xa2, 0xfb, 0x66,
-  0xf5, 0x3f, 0xd7, 0x18, 0xd6, 0xa4, 0x3d, 0xd0, 0x26, 0xcc, 0x68, 0xf3,
-  0xe5, 0xcb, 0x3e, 0xce, 0x6c, 0xf7, 0xe5, 0xcb, 0x4e, 0x6c, 0x4e, 0xe7,
-  0x33, 0xb7, 0x85, 0x75, 0x46, 0xe3, 0xeb, 0x96, 0x69, 0x2a, 0xf8, 0x4c,
-  0x14, 0xfe, 0x0e, 0xfe, 0x26, 0xfa, 0x3c, 0x7a, 0x77, 0x7a, 0x7e, 0xe4,
-  0xf8, 0x69, 0xe9, 0x60, 0x73, 0x0a, 0x87, 0xe3, 0x4e, 0xa1, 0xb4, 0x96,
-  0x19, 0xa6, 0xa3, 0xb3, 0x33, 0x6a, 0x3a, 0x9f, 0xf8, 0x5e, 0x1e, 0x82,
-  0xd8, 0xd0, 0xe8, 0x83, 0x62, 0x3f, 0xa8, 0xa0, 0xe0, 0x0b, 0x9b, 0x32,
-  0x6e, 0xb0, 0xbb, 0x24, 0x5e, 0x57, 0x78, 0xee, 0xfe, 0x23, 0x8a, 0xce,
-  0x92, 0xb2, 0xf2, 0x0b, 0x56, 0xd1, 0xdd, 0xa1, 0xce, 0x1d, 0x71, 0x9e,
-  0x15, 0xe5, 0xd4, 0x38, 0xa4, 0x4d, 0x90, 0x43, 0x4c, 0x71, 0xf9, 0x77,
-  0x76, 0x91, 0x4d, 0xb2, 0xfa, 0xbe, 0xc3, 0xcb, 0x83, 0x9d, 0x5b, 0xcb,
-  0x40, 0x0a, 0x1e, 0x42, 0x86, 0x66, 0x57, 0x59, 0xed, 0xf6, 0x14, 0x58,
-  0x05, 0x2e, 0x5c, 0x23, 0x6f, 0x28, 0xd7, 0x10, 0x48, 0xdc, 0x7d, 0xa5,
-  0x42, 0xb0, 0x0c, 0xae, 0xea, 0xc3, 0x7f, 0x14, 0xb3, 0x15, 0xcf, 0x7b,
-  0x93, 0x4e, 0xc6, 0x6c, 0x17, 0xd9, 0x17, 0x62, 0x7a, 0x52, 0xce, 0x31,
-  0xf9, 0x87, 0xee, 0x28, 0x3e, 0x9a, 0x50, 0x9f, 0x29, 0xf7, 0xe3, 0x01,
-  0x6f, 0x17, 0xa1, 0xf0, 0x53, 0xe6, 0x9f, 0x02, 0xdd, 0xe0, 0x30, 0x7d,
-  0x67, 0x7f, 0x56, 0x1c, 0x82, 0x98, 0x20, 0x42, 0x8e, 0x0c, 0xe2, 0xb5,
-  0x00, 0xe2, 0x10, 0xeb, 0x38, 0x9d, 0x69, 0x79, 0x5c, 0xde, 0x1c, 0x07,
-  0x0e, 0xd9, 0x65, 0x76, 0x35, 0x2f, 0xc3, 0x95, 0x54, 0xe4, 0xe9, 0x92,
-  0xd4, 0x3a, 0x12, 0x7a, 0xa8, 0x30, 0xde, 0x26, 0xa5, 0x78, 0xfa, 0xa7,
-  0xe8, 0x60, 0x54, 0xa1, 0xa3, 0x3e, 0x27, 0x85, 0x57, 0xb9, 0x4e, 0x3c,
-  0xf8, 0x0c, 0xda, 0xca, 0x4b, 0xd0, 0xcb, 0xd1, 0x45, 0x27, 0x29, 0xa1,
-  0x14, 0x7c, 0xa0, 0xd1, 0x0c, 0xc0, 0x8d, 0xc4, 0x39, 0x90, 0x0b, 0x51,
-  0x8d, 0xa1, 0x8e, 0x6a, 0x44, 0x82, 0x40, 0xd1, 0x82, 0x69, 0x7e, 0x8e,
-  0xb1, 0x55, 0x7c, 0x9a, 0xfc, 0xb3, 0xd7, 0x05, 0xf6, 0x4f, 0x00, 0x79,
-  0x89, 0xf2, 0xd1, 0x87, 0xf6, 0x45, 0xa1, 0x48, 0x3b, 0xca, 0xf2, 0x91,
-  0xb7, 0x09, 0x9e, 0xbf, 0xcd, 0x27, 0x45, 0x32, 0x6e, 0xba, 0x5b, 0x99,
-  0x5c, 0xdc, 0x11, 0x43, 0x36, 0xd7, 0x4b, 0x24, 0xc4, 0xbd, 0xe6, 0x5d,
-  0x8e, 0x56, 0x1d, 0xd8, 0x69, 0x3a, 0x3c, 0x8e, 0x13, 0x8f, 0x05, 0x28,
-  0xf2, 0x0a, 0xc3, 0x28, 0xaf, 0x0d, 0x68, 0x2e, 0x81, 0x06, 0x0a, 0xbc,
-  0x5f, 0x95, 0xee, 0x56, 0x7a, 0x57, 0xc3, 0x3f, 0xd3, 0xb1, 0xeb, 0x54,
-  0x8c, 0x86, 0xc7, 0xff, 0xeb, 0xe8, 0xf7, 0x4e, 0x53, 0x60, 0xca, 0x6d,
-  0x6d, 0xc5, 0x3b, 0x3b, 0xcb, 0xdd, 0x9d, 0x87, 0x84, 0x6f, 0x56, 0xe4,
-  0xe4, 0x2b, 0x8e, 0x13, 0xa9, 0x09, 0x4b, 0xf0, 0xa7, 0xc9, 0x0c, 0xd7,
-  0xde, 0xd4, 0x65, 0x6e, 0x0d, 0x26, 0xd4, 0xb7, 0xdc, 0xaf, 0x4a, 0xf2,
-  0x06, 0x0c, 0xb2, 0x72, 0x32, 0x11, 0x9f, 0x23, 0x50, 0x9e, 0xa3, 0xbc,
-  0x94, 0x0d, 0x43, 0x1c, 0x7f, 0x19, 0x74, 0x52, 0x13, 0x74, 0x93, 0x85,
-  0x2c, 0xe7, 0x22, 0x5f, 0x02, 0xf3, 0xe1, 0xb8, 0x05, 0x73, 0xd4, 0x94,
-  0x22, 0x20, 0xe4, 0x8a, 0xc4, 0x08, 0x0e, 0x77, 0x3a, 0x88, 0xfc, 0xf8,
-  0x2d, 0xb5, 0x35, 0xc2, 0x49, 0xc1, 0x5c, 0x97, 0x27, 0xe2, 0xed, 0xb2,
-  0xe5, 0x26, 0x65, 0xac, 0xd3, 0x75, 0xe8, 0x94, 0xb2, 0x2a, 0x88, 0x59,
-  0x11, 0x65, 0xb4, 0xff, 0xe1, 0xfd, 0x49, 0x07, 0xac, 0xd6, 0x90, 0x58,
-  0x0b, 0x79, 0xa0, 0xf7, 0x3e, 0xa5, 0x1e, 0x22, 0x25, 0x08, 0xe5, 0x2b,
-  0x50, 0x3a, 0x9d, 0xb6, 0x2d, 0x8d, 0x9e, 0x52, 0xe2, 0x7c, 0x0d, 0xf9,
-  0x92, 0x51, 0x55, 0x50, 0xc9, 0x80, 0xd7, 0xa6, 0x4d, 0x8d, 0x72, 0xc1,
-  0xb0, 0x2e, 0x27, 0x89, 0x6c, 0xc4, 0xbc, 0xc4, 0x94, 0x36, 0xda, 0x46,
-  0x9f, 0xef, 0xc7, 0x02, 0x5c, 0x40, 0xad, 0xbe, 0xdc, 0x4e, 0x62, 0xb6,
-  0x3e, 0x29, 0x62, 0xf6, 0x88, 0x7a, 0x7f, 0xc6, 0x08, 0x68, 0x4f, 0xa7,
-  0x19, 0xa7, 0x7e, 0x6e, 0x87, 0x92, 0x02, 0x93, 0xa3, 0xea, 0xc2, 0x01,
-  0x11, 0x6a, 0xc6, 0x4e, 0x71, 0xd6, 0x9a, 0x77, 0x97, 0xde, 0x64, 0x08,
-  0x23, 0x8d, 0xaf, 0xb4, 0x01, 0x15, 0x28, 0xb9, 0x21, 0x23, 0xa8, 0x68,
-  0x81, 0xb0, 0x4e, 0xa2, 0x13, 0x99, 0xdf, 0x9e, 0x84, 0xd2, 0x59, 0xed,
-  0xd5, 0xa9, 0x35, 0xb2, 0x5b, 0x43, 0x8b, 0x4d, 0x26, 0x70, 0xfe, 0xfa,
-  0x26, 0x50, 0x82, 0x6b, 0x14, 0xd9, 0x89, 0x73, 0x4a, 0x72, 0x13, 0x51,
-  0x6b, 0x6c, 0xed, 0xef, 0x5e, 0xcb, 0xac, 0x74, 0xed, 0x29, 0xd3, 0x5e,
-  0x02, 0x65, 0x35, 0x3d, 0xa9, 0xb7, 0x44, 0x3d, 0xf3, 0xc2, 0x81, 0x84,
-  0x88, 0xf1, 0xc9, 0x53, 0x06, 0x5c, 0xfc, 0x72, 0xe7, 0xc1, 0x3a, 0xd0,
-  0x3e, 0xe2, 0x71, 0x72, 0x45, 0x01, 0x41, 0x14, 0x4a, 0x0e, 0x1f, 0x3b,
-  0x87, 0xed, 0xbf, 0x78, 0x47, 0x30, 0xe8, 0x2a, 0xbf, 0x8c, 0x03, 0xde,
-  0x29, 0x6d, 0x37, 0xe8, 0x6c, 0x4f, 0x4d, 0xe8, 0x09, 0xc4, 0xb3, 0xa7,
-  0xce, 0x18, 0xe2, 0x69, 0xd2, 0xa3, 0x27, 0xfa, 0x58, 0x30, 0x86, 0x1b,
-  0x3b, 0x38, 0x0b, 0x87, 0x8c, 0x69, 0x16, 0xbf, 0xca, 0x40, 0x1d, 0xa8,
-  0xb8, 0xdf, 0x00, 0x59, 0x70, 0x34, 0x9e, 0x11, 0x63, 0x8c, 0x6d, 0x17,
-  0xfb, 0x4d, 0x84, 0x46, 0x82, 0x36, 0x60, 0x5e, 0x31, 0x49, 0x02, 0x70,
-  0x04, 0xba, 0xfa, 0x97, 0x89, 0x92, 0x68, 0x15, 0xd2, 0xc4, 0xfa, 0xa5,
-  0x88, 0x66, 0xf2, 0x6f, 0x39, 0xcc, 0x9c, 0xeb, 0x1a, 0xa0, 0x8e, 0xe9,
-  0x02, 0x40, 0xe9, 0xb2, 0xd4, 0x44, 0x51, 0xfd, 0x38, 0x61, 0x87, 0x0d,
-  0x55, 0x4b, 0x58, 0xa4, 0xb3, 0xb6, 0x0a, 0x09, 0x93, 0xba, 0x2d, 0xf1,
-  0x66, 0x65, 0x2f, 0xa7, 0xa6, 0x24, 0x0b, 0x66, 0xdb, 0x08, 0x86, 0x1d,
-  0x38, 0x29, 0xc2, 0x6a, 0x15, 0x11, 0x7a, 0x41, 0x67, 0x86, 0xda, 0x7d,
-  0x63, 0x71, 0x54, 0x73, 0xe2, 0x1e, 0x36, 0x8c, 0x0c, 0xe7, 0x85, 0x20,
-  0xb5, 0x87, 0xd2, 0xd5, 0x28, 0x6d, 0x17, 0x1f, 0x71, 0xb5, 0x1a, 0xce,
-  0xd4, 0x8c, 0xfe, 0x18, 0xdb, 0x96, 0xf3, 0xab, 0xf7, 0x29, 0x18, 0x72,
-  0x36, 0xdb, 0x93, 0x1c, 0x12, 0x9f, 0x75, 0x38, 0xff, 0x44, 0x67, 0xb2,
-  0xd3, 0x40, 0x23, 0xdb, 0x49, 0x67, 0x61, 0xc2, 0x83, 0x4e, 0x47, 0x75,
-  0x1a, 0x79, 0x7a, 0x87, 0x3d, 0x56, 0xbb, 0x87, 0xf3, 0x6d, 0xb9, 0x6f,
-  0x0f, 0xde, 0xbf, 0x3b, 0x7e, 0xf7, 0xf5, 0x1e, 0x0a, 0x83, 0xb4, 0x1c,
-  0xa1, 0x4e, 0x1e, 0xfd, 0x34, 0x1f, 0x67, 0x23, 0x16, 0x8f, 0xd2, 0xe3,
-  0xa9, 0x81, 0xd9, 0x90, 0x4a, 0x48, 0x8d, 0x40, 0xfb, 0xbd, 0x96, 0x42,
-  0x54, 0x0a, 0x84, 0x88, 0x13, 0x65, 0x71, 0x35, 0x37, 0x1c, 0x34, 0x22,
-  0xc5, 0x92, 0x82, 0xa8, 0x94, 0x93, 0x83, 0xdb, 0xc2, 0x8c, 0x8b, 0x51,
-  0x06, 0x50, 0xfb, 0x5e, 0x9d, 0x9c, 0x44, 0x7e, 0x47, 0x43, 0xae, 0x3f,
-  0x61, 0x0f, 0x0c, 0x25, 0x0a, 0x6b, 0xe9, 0x07, 0x6a, 0x6f, 0x28, 0x57,
-  0x1b, 0xf2, 0x1d, 0x4c, 0x0f, 0x2d, 0x45, 0xa2, 0xdc, 0xfd, 0x69, 0x40,
-  0x2b, 0xa5, 0x82, 0xbe, 0xb2, 0xc6, 0x8e, 0x6e, 0x97, 0x35, 0xea, 0xb7,
-  0x4b, 0xde, 0xe1, 0xa7, 0xff, 0x15, 0x12, 0x34, 0xeb, 0xe4, 0x18, 0xea,
-  0x94, 0x36, 0xed, 0xe3, 0xdf, 0x50, 0x79, 0xec, 0x8f, 0xb1, 0x74, 0x7e,
-  0x51, 0x14, 0xf7, 0x9a, 0x6d, 0xf6, 0x06, 0x64, 0x39, 0x67, 0xdb, 0x50,
-  0xf3, 0x2a, 0x60, 0x7d, 0x36, 0x26, 0xe0, 0x40, 0x53, 0x94, 0xd9, 0x3f,
-  0x38, 0xe3, 0x14, 0xd4, 0x17, 0x31, 0xf5, 0x2a, 0xbc, 0x89, 0x7c, 0xc9,
-  0x74, 0x9b, 0x96, 0xe2, 0xc3, 0x31, 0x48, 0x7e, 0x70, 0x8f, 0x0c, 0xa2,
-  0x61, 0x01, 0xcf, 0x87, 0xd4, 0xf2, 0x84, 0x31, 0x08, 0xb5, 0x5d, 0x03,
-  0xed, 0x13, 0xcd, 0xc7, 0xe6, 0x6d, 0xe3, 0xbd, 0xcc, 0x29, 0x17, 0xcd,
-  0xf5, 0xfa, 0xb9, 0x46, 0x74, 0xcc, 0x2e, 0x52, 0xa3, 0xf9, 0xe1, 0x17,
-  0x28, 0xfe, 0x8e, 0x8c, 0xd8, 0x8b, 0x81, 0x96, 0x3d, 0xdc, 0xdb, 0x38,
-  0xce, 0x8b, 0x30, 0x41, 0x1f, 0xa9, 0x88, 0x35, 0x89, 0x1e, 0xf2, 0xc1,
-  0xc1, 0x86, 0x6e, 0x76, 0xfc, 0x7c, 0xeb, 0x49, 0x3b, 0xdd, 0xfe, 0x55,
-  0xfb, 0xe4, 0x94, 0x58, 0x95, 0xae, 0x09, 0x7b, 0x84, 0x7f, 0xc3, 0xee,
-  0x1b, 0x27, 0x10, 0x40, 0xe1, 0x77, 0x27, 0x07, 0x88, 0x01, 0x72, 0x52,
-  0xb4, 0x86, 0xbc, 0xac, 0xb2, 0x53, 0x6e, 0xcf, 0x22, 0x0f, 0xb9, 0x20,
-  0x99, 0xee, 0xcb, 0xa2, 0x42, 0xf4, 0xad, 0x73, 0x90, 0xeb, 0xd5, 0x6b,
-  0x0f, 0x22, 0xe7, 0xd2, 0x4f, 0xa3, 0x3a, 0x37, 0x71, 0x43, 0xd5, 0x32,
-  0xaa, 0xe4, 0xc6, 0x66, 0xb2, 0x77, 0x0a, 0x77, 0xad, 0x5d, 0x6f, 0x2b,
-  0x5e, 0xc4, 0x49, 0xc6, 0xfb, 0xac, 0x43, 0x25, 0x91, 0x53, 0xd7, 0xee,
-  0x26, 0xe2, 0x34, 0x00, 0x49, 0xfd, 0xe1, 0x04, 0x6a, 0x44, 0x92, 0x2a,
-  0x3a, 0x2f, 0x1a, 0xc9, 0x45, 0xc8, 0xf2, 0x9b, 0x82, 0x7e, 0x23, 0x79,
-  0x31, 0x81, 0xac, 0xd2, 0xac, 0xb3, 0xca, 0xfd, 0xbc, 0x45, 0x55, 0x75,
-  0xb0, 0x6a, 0x91, 0x25, 0xac, 0x85, 0x41, 0x79, 0xaa, 0xc8, 0x42, 0xef,
-  0x68, 0x35, 0x9f, 0x7f, 0xf9, 0xf3, 0x29, 0xc6, 0x53, 0xd3, 0xa7, 0xeb,
-  0xea, 0x9a, 0x5e, 0x4e, 0x27, 0xe8, 0x7b, 0x71, 0xc0, 0x78, 0xf4, 0x52,
-  0x95, 0x3b, 0x35, 0x33, 0xbe, 0xdb, 0xee, 0xdb, 0xd2, 0xa0, 0x06, 0x18,
-  0x5a, 0x5b, 0x37, 0x10, 0x96, 0x6a, 0xd0, 0x09, 0x26, 0xd1, 0x31, 0xba,
-  0x2e, 0x0a, 0x81, 0x7b, 0xea, 0xba, 0x4c, 0x22, 0x52, 0xc2, 0x08, 0x0e,
-  0xb7, 0x43, 0x47, 0x32, 0x6d, 0x4e, 0x6c, 0xfa, 0x89, 0x57, 0xb9, 0xe4,
-  0x36, 0x4f, 0x6a, 0x34, 0x38, 0x6b, 0xaa, 0x20, 0x3c, 0x1f, 0xa3, 0x80,
-  0xc8, 0xe5, 0x11, 0x4a, 0xf5, 0x07, 0xf1, 0xc3, 0xea, 0x49, 0x98, 0x3c,
-  0x52, 0x32, 0xe2, 0x12, 0x25, 0x78, 0x99, 0x73, 0x11, 0x89, 0xed, 0x83,
-  0x4a, 0x5c, 0x43, 0x26, 0x7e, 0xde, 0x8c, 0x26, 0xd3, 0x4c, 0xb3, 0x9a,
-  0x24, 0xd7, 0x1f, 0xb7, 0x36, 0xba, 0x2e, 0x31, 0x1c, 0x48, 0xe1, 0xa5,
-  0xf0, 0x34, 0x56, 0xc6, 0x57, 0x40, 0xd7, 0xbc, 0x85, 0x9c, 0xc5, 0x3b,
-  0x12, 0x91, 0x2c, 0xd8, 0x9d, 0x06, 0x7f, 0x74, 0xd1, 0xbf, 0x23, 0x5b,
-  0x49, 0xba, 0x74, 0xb9, 0x4a, 0x43, 0x52, 0xb1, 0x03, 0x87, 0xe1, 0x4f,
-  0xa5, 0xfc, 0xc2, 0x3a, 0x79, 0xe9, 0xbe, 0xf0, 0x0f, 0x10, 0xba, 0x75,
-  0x96, 0xbd, 0x1d, 0x3b, 0x2f, 0x47, 0x92, 0x78, 0xdd, 0x76, 0x6e, 0x4b,
-  0x20, 0x3b, 0x62, 0xf3, 0xbd, 0xc3, 0x5a, 0x38, 0xff, 0x50, 0x2a, 0xba,
-  0x8a, 0x30, 0xf5, 0x72, 0x3a, 0x06, 0xa0, 0x55, 0xc5, 0xc8, 0xf9, 0x95,
-  0xa2, 0x80, 0x15, 0x99, 0x80, 0xa3, 0xf9, 0x1e, 0x1e, 0x98, 0x76, 0x14,
-  0x90, 0x94, 0x7d, 0x3d, 0x78, 0x9a, 0x72, 0x9a, 0xd8, 0xbe, 0x61, 0x89,
-  0x48, 0xe5, 0x89, 0xdf, 0x34, 0x4e, 0xe5, 0x37, 0xfb, 0xab, 0xe0, 0x4d,
-  0x2a, 0x82, 0xa1, 0x7d, 0xc0, 0x2f, 0x3d, 0xf1, 0xde, 0xa2, 0xe0, 0x71,
-  0x8c, 0x8d, 0xfe, 0x8a, 0xe5, 0xcc, 0x1e, 0xef, 0xb6, 0x27, 0xbb, 0xe7,
-  0x67, 0xaa, 0x94, 0x47, 0x6a, 0xa0, 0x23, 0xbe, 0xa9, 0x9c, 0x50, 0xb8,
-  0x29, 0x96, 0x30, 0xe3, 0x3e, 0xde, 0x10, 0x5f, 0x3c, 0xa6, 0xd1, 0xba,
-  0x14, 0x0a, 0xba, 0x3d, 0xa0, 0x7b, 0x3c, 0x48, 0x2f, 0x5a, 0xc5, 0x51,
-  0xd6, 0x8c, 0xc9, 0xe2, 0x83, 0xb1, 0x49, 0x0d, 0x92, 0x98, 0xea, 0x09,
-  0x2b, 0x2b, 0xed, 0x3a, 0x29, 0xb4, 0x5a, 0xd0, 0xc3, 0x0c, 0xca, 0xdf,
-  0x7c, 0x92, 0x94, 0x13, 0xe2, 0xfa, 0xcb, 0xf9, 0x24, 0x64, 0xcd, 0xa3,
-  0xb4, 0x93, 0xd6, 0xde, 0x59, 0x55, 0xcd, 0xc5, 0xd7, 0x61, 0x5b, 0xba,
-  0x6b, 0xc7, 0xa8, 0x68, 0x02, 0xf3, 0xa1, 0x4f, 0x57, 0x13, 0x4c, 0x22,
-  0xed, 0x3a, 0xcb, 0x1c, 0xef, 0x12, 0x73, 0xc7, 0x60, 0xa2, 0xb1, 0xbb,
-  0x40, 0x18, 0xe7, 0x0a, 0x27, 0x45, 0x87, 0x7e, 0x86, 0x3c, 0x58, 0x82,
-  0xde, 0x8c, 0xb7, 0x77, 0x6b, 0xb8, 0xde, 0xe9, 0xd9, 0xf9, 0xf1, 0xe9,
-  0xbb, 0x61, 0xf4, 0x9f, 0xbd, 0xe5, 0x59, 0xa1, 0xb1, 0x35, 0xbd, 0xff,
-  0x04, 0x23, 0xf8, 0xbb, 0x48, 0xc7, 0x5b, 0x8a, 0x2b, 0x1a, 0x91, 0xc5,
-  0x06, 0x0e, 0x41, 0xb3, 0x49, 0xa6, 0xfb, 0x5c, 0xb4, 0xcf, 0xed, 0x71,
-  0xba, 0x3c, 0x4f, 0x8e, 0xc5, 0x38, 0x02, 0xfd, 0x0d, 0x2e, 0x3a, 0x7d,
-  0x51, 0xda, 0xea, 0x08, 0x93, 0xb4, 0x3a, 0x01, 0x79, 0x5e, 0x6d, 0xdc,
-  0x0c, 0x35, 0x2e, 0x9b, 0x3e, 0x2a, 0xba, 0x75, 0xad, 0x81, 0xdc, 0x1a,
-  0x3e, 0x7c, 0x15, 0xca, 0x15, 0xd4, 0xa8, 0xcf, 0x91, 0x17, 0x6c, 0x4c,
-  0x42, 0xfc, 0x53, 0xab, 0x7c, 0x79, 0xa9, 0xaa, 0x1d, 0x6a, 0x60, 0xf6,
-  0xf5, 0xd1, 0x39, 0x7a, 0x76, 0x09, 0x7c, 0xc8, 0xce, 0x8f, 0x3c, 0xe4,
-  0xa2, 0xfa, 0x26, 0x46, 0x3d, 0x57, 0xbc, 0x21, 0x3c, 0x71, 0x60, 0xa6,
-  0x4d, 0x92, 0x3c, 0x08, 0xb5, 0x00, 0xa6, 0xd3, 0x21, 0x50, 0xa3, 0xb0,
-  0x5d, 0x05, 0xd5, 0xcd, 0x69, 0xd8, 0x55, 0xc1, 0xf1, 0xcf, 0x3e, 0x9c,
-  0x8b, 0x73, 0x1b, 0xa3, 0xc9, 0xe7, 0x47, 0x7d, 0xaf, 0x81, 0x19, 0xf5,
-  0x40, 0xa3, 0x6a, 0xe8, 0x3a, 0x1d, 0x5d, 0xe7, 0xc5, 0xa4, 0xb8, 0xc2,
-  0x2d, 0x21, 0x35, 0xf2, 0xdb, 0xf4, 0xe2, 0xd5, 0xc1, 0x37, 0xa8, 0xd8,
-  0xa1, 0xa3, 0xfa, 0xec, 0xfd, 0xe9, 0xd9, 0xeb, 0xe3, 0x77, 0xaf, 0xfa,
-  0xd1, 0xe1, 0xe9, 0xd9, 0xdf, 0xfa, 0xd1, 0xdb, 0xd3, 0x6f, 0x8e, 0x3e,
-  0xf3, 0x12, 0x99, 0xa8, 0x79, 0xa2, 0xc7, 0xa8, 0xef, 0xd0, 0x93, 0x88,
-  0xf6, 0x97, 0xe3, 0xd6, 0xe2, 0x3e, 0xc2, 0xee, 0x75, 0x7e, 0x60, 0xb2,
-  0x4f, 0xe8, 0x88, 0x03, 0xe9, 0x40, 0x99, 0x79, 0x73, 0x74, 0xf0, 0xaa,
-  0xef, 0xf5, 0xc1, 0x1d, 0x9e, 0xd3, 0xc7, 0x70, 0x7d, 0x66, 0xd1, 0xd4,
-  0xc1, 0x94, 0xcd, 0x5c, 0x52, 0xd5, 0x38, 0x2b, 0x81, 0x05, 0x05, 0xf0,
-  0x2b, 0x01, 0x15, 0x8e, 0xbb, 0x92, 0x32, 0xa5, 0xbf, 0xf4, 0x8c, 0x09,
-  0xbc, 0xb0, 0xb0, 0x17, 0xb5, 0x66, 0xd7, 0xd0, 0x12, 0xc8, 0x7c, 0x2a,
-  0xdc, 0x54, 0xb0, 0x00, 0xb7, 0xc2, 0xa8, 0x03, 0xb7, 0xbd, 0xdf, 0x40,
-  0x4b, 0x24, 0x31, 0xc8, 0xf1, 0x8a, 0xe4, 0x5e, 0x90, 0x31, 0x52, 0xbc,
-  0x5e, 0x2b, 0xb2, 0xab, 0x2e, 0x6d, 0x03, 0xc2, 0xc5, 0x36, 0x16, 0xdd,
-  0x34, 0x89, 0x82, 0xe7, 0x23, 0xf1, 0x94, 0x40, 0x7d, 0x21, 0x05, 0x88,
-  0x00, 0xfa, 0xb1, 0xe0, 0x2f, 0x04, 0x7c, 0x1d, 0xf3, 0x4b, 0x60, 0xcb,
-  0x94, 0x33, 0xc8, 0xb5, 0xdb, 0xb3, 0xc6, 0x04, 0xe3, 0x63, 0xf5, 0x80,
-  0x2d, 0xd2, 0x74, 0xf5, 0xc4, 0xa8, 0xdb, 0x93, 0x11, 0xfb, 0xd5, 0x23,
-  0xdc, 0x94, 0x12, 0xae, 0xfb, 0x11, 0xd7, 0x19, 0xb0, 0xf8, 0x74, 0x8b,
-  0x4d, 0x3f, 0x55, 0xd6, 0x50, 0x5d, 0xa2, 0x10, 0xf0, 0xa8, 0xe7, 0x29,
-  0x06, 0x4d, 0xc7, 0xbb, 0x6e, 0xe9, 0x49, 0x10, 0x25, 0xb9, 0x84, 0x51,
-  0x30, 0x85, 0x21, 0x66, 0x9f, 0x8d, 0x5b, 0x2e, 0xd5, 0xee, 0x9d, 0x2c,
-  0x73, 0xf0, 0x42, 0xee, 0xb4, 0xce, 0x64, 0x34, 0x82, 0xdd, 0x97, 0xfb,
-  0xc3, 0x9c, 0xf2, 0xed, 0x8d, 0x3b, 0x1b, 0x9a, 0x43, 0xb5, 0xae, 0x8a,
-  0x62, 0x4e, 0xb9, 0x63, 0x90, 0x09, 0x8f, 0x74, 0xab, 0xaf, 0x3b, 0x04,
-  0xa3, 0x1b, 0xea, 0x31, 0x20, 0x6b, 0x46, 0x44, 0x9d, 0x1c, 0xc3, 0x71,
-  0x08, 0x60, 0x32, 0x8f, 0x0b, 0x9c, 0x11, 0x27, 0xdb, 0x91, 0x82, 0x4b,
-  0xd4, 0x87, 0xb1, 0xfc, 0x0f, 0x9f, 0x9d, 0x9e, 0x6d, 0x07, 0xbf, 0x8c,
-  0xbf, 0x78, 0xe8, 0xd3, 0xde, 0x9e, 0xbd, 0x3f, 0x3a, 0x7f, 0xef, 0x7f,
-  0xe3, 0xf8, 0xed, 0x41, 0x78, 0x75, 0xf8, 0x8b, 0xae, 0x6f, 0x90, 0x24,
-  0xc0, 0xaf, 0xf8, 0x35, 0x51, 0x0e, 0x4c, 0xfc, 0x46, 0x20, 0x79, 0x6c,
-  0x75, 0xf8, 0xb6, 0x83, 0x9a, 0xf8, 0x8b, 0x05, 0x6b, 0x7a, 0x73, 0x74,
-  0x72, 0xe6, 0xaf, 0xe9, 0x9b, 0xf7, 0xaf, 0xff, 0xd6, 0x4c, 0x59, 0xdb,
-  0xde, 0x09, 0x7c, 0xf5, 0x5f, 0xec, 0x7f, 0xff, 0x8e, 0xf3, 0x84, 0xce,
-  0x8f, 0x96, 0x70, 0xb5, 0x7f, 0x17, 0xbd, 0x3b, 0x81, 0x5d, 0x5b, 0xaa,
-  0x62, 0xa9, 0xa9, 0x4a, 0x34, 0xf5, 0xbf, 0xaa, 0x98, 0x80, 0xee, 0xb6,
-  0xff, 0xfd, 0x9f, 0x08, 0x0f, 0x84, 0x0a, 0x86, 0xf7, 0xe0, 0x66, 0x2a,
-  0xbf, 0xef, 0xe3, 0x7f, 0x7f, 0x1c, 0x0c, 0x06, 0x5f, 0xf8, 0x1d, 0x80,
-  0xc9, 0x3b, 0x69, 0x76, 0x04, 0x1f, 0xc4, 0xd4, 0xf5, 0x96, 0x53, 0x88,
-  0x0a, 0xc5, 0xa9, 0x30, 0x1e, 0x63, 0xaf, 0xb3, 0x04, 0x1b, 0x74, 0x47,
-  0x1f, 0xaa, 0xa0, 0x06, 0x80, 0x54, 0xb7, 0xe0, 0x06, 0x46, 0xe1, 0x96,
-  0x46, 0x11, 0x2c, 0x3f, 0x56, 0xab, 0x35, 0xc1, 0x23, 0xb2, 0x4a, 0x41,
-  0x32, 0xf6, 0x80, 0x6f, 0x68, 0x2a, 0xf4, 0xd9, 0x12, 0xc3, 0x31, 0x6c,
-  0x05, 0xdb, 0xcb, 0x3f, 0xd7, 0xcb, 0x4c, 0x96, 0x3e, 0x36, 0xd3, 0x0f,
-  0x3a, 0xd4, 0x68, 0x5b, 0xc9, 0x39, 0x4f, 0xc9, 0x52, 0x14, 0x37, 0x4a,
-  0xe8, 0x9e, 0x43, 0x66, 0x5b, 0x4f, 0xeb, 0xd1, 0x3a, 0xae, 0xb3, 0x6a,
-  0x68, 0xc2, 0x46, 0x95, 0xf5, 0xdc, 0xa7, 0x6e, 0x9d, 0x0c, 0x41, 0xcf,
-  0x70, 0x7a, 0xa4, 0x53, 0x5f, 0x6a, 0xd1, 0x6f, 0x1c, 0x1b, 0x8e, 0x15,
-  0x16, 0x5f, 0xbc, 0xba, 0x58, 0xcd, 0x23, 0x17, 0x74, 0x43, 0x3b, 0xb8,
-  0x7b, 0xf2, 0xd9, 0x41, 0x66, 0xf0, 0x0d, 0x42, 0xba, 0x2e, 0x94, 0xd9,
-  0x31, 0x15, 0x8f, 0x3a, 0xed, 0x5e, 0x36, 0xae, 0x28, 0xf5, 0x4d, 0xbb,
-  0x9b, 0xae, 0xc5, 0xff, 0x01, 0xa8, 0x71, 0xe9, 0x9a, 0xab, 0xee, 0x1d,
-  0x5c, 0x69, 0xb0, 0x6a, 0xc9, 0xc5, 0x67, 0x5a, 0xf9, 0xcf, 0x15, 0x34,
-  0x08, 0xe8, 0xf5, 0x20, 0x2a, 0x94, 0x72, 0x2d, 0x9a, 0xbc, 0x81, 0x3e,
-  0xf5, 0x24, 0xa4, 0x95, 0x28, 0x86, 0xf9, 0x4c, 0x16, 0xb3, 0xc3, 0x3c,
-  0xb4, 0x84, 0x41, 0xf4, 0x6d, 0x36, 0x19, 0x8f, 0x92, 0x92, 0xb2, 0xb6,
-  0xfd, 0xfb, 0x5e, 0xd8, 0x84, 0x8f, 0x7c, 0x55, 0xd0, 0x57, 0xed, 0xc9,
-  0x91, 0xb4, 0x9a, 0x0e, 0xae, 0x0f, 0x94, 0x96, 0x9b, 0xcd, 0xc0, 0xec,
-  0xa2, 0x2e, 0x9c, 0x05, 0x66, 0x1f, 0xa5, 0x31, 0xde, 0xbd, 0xcd, 0xf6,
-  0xf0, 0xcd, 0x7d, 0xd5, 0xb0, 0x63, 0xbc, 0xe3, 0x87, 0x4e, 0xb3, 0xd9,
-  0xcd, 0x0e, 0x79, 0x54, 0x9f, 0xf5, 0xf9, 0x5f, 0xcf, 0x6c, 0x2d, 0xb1,
-  0x63, 0x47, 0xb3, 0x3d, 0xc7, 0xd6, 0xcf, 0xf1, 0x99, 0xe2, 0xba, 0x0c,
-  0xfc, 0x8d, 0xe2, 0x82, 0x2f, 0x05, 0x69, 0x10, 0x1e, 0x33, 0x65, 0x6e,
-  0xde, 0x09, 0xe6, 0x84, 0x4e, 0x4e, 0x86, 0xf6, 0x9c, 0x8e, 0xb6, 0x4a,
-  0x6f, 0xa5, 0x32, 0x1e, 0x6f, 0x7c, 0x16, 0x6d, 0xb5, 0xd5, 0xcd, 0x68,
-  0x9a, 0xe5, 0xf3, 0x3a, 0x45, 0x0d, 0x9c, 0x4a, 0x52, 0xc5, 0x1e, 0xe3,
-  0x66, 0xd8, 0x01, 0xca, 0x32, 0x9a, 0x80, 0x38, 0x0d, 0xd3, 0x5c, 0x7c,
-  0x73, 0x93, 0x02, 0xe6, 0x5a, 0xce, 0x73, 0xca, 0x80, 0xc4, 0x4c, 0xab,
-  0xc9, 0x24, 0xb5, 0xe5, 0x86, 0x95, 0xce, 0x7e, 0x52, 0xf8, 0x2e, 0x51,
-  0xba, 0x7d, 0x81, 0x3f, 0x8e, 0x73, 0x86, 0xd0, 0x40, 0xac, 0x91, 0x4a,
-  0xea, 0xd5, 0xfc, 0x5b, 0xc2, 0x16, 0xdc, 0xd1, 0x92, 0x0b, 0x2f, 0x23,
-  0x99, 0x19, 0x86, 0x0f, 0x2d, 0xb3, 0x09, 0x79, 0xad, 0x8c, 0x44, 0xba,
-  0xa5, 0x93, 0x5f, 0x20, 0x0e, 0x02, 0xd5, 0x1d, 0x0a, 0x21, 0xd0, 0xef,
-  0xe4, 0x47, 0xfc, 0x66, 0x54, 0xab, 0xeb, 0x09, 0x7d, 0xc9, 0x74, 0x11,
-  0xe4, 0x37, 0x60, 0x23, 0xdd, 0x29, 0xd8, 0x54, 0x65, 0x27, 0x5c, 0x31,
-  0xdc, 0x81, 0xdf, 0x5f, 0x94, 0x08, 0x20, 0x5a, 0x57, 0x3f, 0x12, 0xf4,
-  0x10, 0x21, 0x0f, 0x79, 0xb2, 0x19, 0x8d, 0xc4, 0x06, 0x00, 0x6d, 0xeb,
-  0x43, 0xad, 0x2f, 0x99, 0xe2, 0x33, 0xfb, 0x39, 0xc4, 0x57, 0xa7, 0xa4,
-  0x0c, 0xa4, 0xca, 0xe2, 0x0f, 0xbd, 0x5c, 0xf0, 0xa1, 0x4b, 0x42, 0x03,
-  0x47, 0x12, 0x9a, 0x16, 0x15, 0xb7, 0x7a, 0x6c, 0xcd, 0xa8, 0x82, 0xcd,
-  0xb9, 0xf3, 0xc0, 0x38, 0x94, 0xdd, 0x05, 0xdc, 0x2a, 0xc5, 0x8b, 0xf8,
-  0x7a, 0x6b, 0x88, 0xe7, 0xbb, 0x83, 0x8d, 0xc7, 0x57, 0xdc, 0x59, 0xd7,
-  0x1b, 0x77, 0x1e, 0xe2, 0x9f, 0xd0, 0x16, 0x4b, 0x22, 0x79, 0xd1, 0x25,
-  0x57, 0x96, 0xf7, 0x0a, 0x30, 0x17, 0x39, 0x37, 0xff, 0xde, 0xce, 0xce,
-  0xf6, 0xde, 0xe6, 0x16, 0xee, 0xd2, 0x06, 0x58, 0xa6, 0x4b, 0x36, 0xe2,
-  0x13, 0x84, 0x00, 0x9c, 0x38, 0x81, 0x45, 0xc0, 0x3d, 0x16, 0x57, 0x37,
-  0xa3, 0xa6, 0x92, 0x00, 0x5b, 0x87, 0x5e, 0xbb, 0x98, 0x82, 0xb0, 0x6d,
-  0x7f, 0x25, 0xa6, 0xbc, 0x52, 0x7b, 0x6f, 0x5c, 0x34, 0x37, 0xce, 0x6e,
-  0x90, 0x4a, 0xcf, 0x47, 0x5d, 0x80, 0xf2, 0x81, 0xf2, 0x85, 0xcd, 0x08,
-  0x1e, 0x76, 0xf0, 0x20, 0xb8, 0x2e, 0x65, 0xb7, 0x54, 0x93, 0x74, 0x7c,
-  0x05, 0x16, 0xd5, 0x74, 0x9a, 0x96, 0x3d, 0x3c, 0x99, 0xf4, 0x32, 0x75,
-  0x23, 0x7f, 0xc5, 0x06, 0xa9, 0xba, 0x44, 0xdb, 0x87, 0x78, 0xa6, 0x7d,
-  0xe5, 0x55, 0xbe, 0xac, 0xa6, 0x57, 0x04, 0x08, 0x07, 0xf4, 0x2c, 0x47,
-  0x6b, 0x7d, 0x06, 0x64, 0x32, 0xb9, 0xcd, 0xd6, 0xb2, 0xc0, 0xfc, 0xe8,
-  0x90, 0xed, 0x47, 0x31, 0x5e, 0x03, 0xa9, 0x13, 0xc4, 0xaa, 0x1f, 0xcf,
-  0x67, 0x13, 0x46, 0xd6, 0xe7, 0x0c, 0x6a, 0x3b, 0xc5, 0x50, 0x6f, 0x0f,
-  0x6a, 0x99, 0x4d, 0x51, 0x5d, 0xee, 0xa2, 0x45, 0x09, 0x94, 0x14, 0x25,
-  0x22, 0x23, 0x6e, 0x85, 0x94, 0x81, 0x29, 0x7e, 0xef, 0x22, 0xad, 0xa9,
-  0x46, 0x1b, 0x6c, 0x7a, 0xf4, 0xde, 0x7a, 0xa9, 0x4b, 0xe3, 0x89, 0x9a,
-  0x6b, 0x18, 0x2b, 0xce, 0x60, 0xb2, 0x78, 0x34, 0x2f, 0x26, 0x88, 0x51,
-  0x88, 0x48, 0x41, 0x58, 0x48, 0x29, 0xed, 0xda, 0x07, 0xd1, 0xd9, 0x24,
-  0xc5, 0xee, 0xe4, 0xa6, 0x0d, 0x97, 0x2f, 0x62, 0xd8, 0x36, 0xa3, 0xe2,
-  0xd4, 0xee, 0xb0, 0xf2, 0x6b, 0x0c, 0x7f, 0x68, 0x0c, 0x78, 0x3a, 0x03,
-  0x05, 0x48, 0x12, 0x39, 0x3d, 0x9c, 0x03, 0xda, 0xb2, 0x88, 0xea, 0x7a,
-  0xfd, 0x00, 0xf6, 0x24, 0xf9, 0x74, 0x1f, 0x39, 0x52, 0x99, 0x1a, 0xa2,
-  0x4f, 0x30, 0x42, 0x81, 0xae, 0x41, 0x86, 0x2f, 0xa4, 0x90, 0xcb, 0x35,
-  0x7b, 0xe0, 0xee, 0x39, 0x8e, 0x49, 0x59, 0x7c, 0xe9, 0x38, 0xe4, 0x19,
-  0xa9, 0x1d, 0xa0, 0x28, 0x33, 0x40, 0x98, 0xe0, 0x94, 0x4e, 0xad, 0x24,
-  0xc7, 0x15, 0xf9, 0x25, 0xed, 0x48, 0x8a, 0xbe, 0xe9, 0x50, 0x60, 0xd8,
-  0x8f, 0xf4, 0x41, 0xad, 0x65, 0x90, 0xd0, 0x1e, 0xf9, 0x0e, 0x15, 0xb0,
-  0x30, 0xb4, 0x58, 0xcd, 0x02, 0xb7, 0xc5, 0xf9, 0x94, 0x33, 0x89, 0x52,
-  0x48, 0x72, 0x1e, 0x50, 0x15, 0xc5, 0x0c, 0x29, 0x19, 0x51, 0x4a, 0xf0,
-  0xa2, 0x37, 0xc5, 0x2d, 0x2a, 0x67, 0xa1, 0xc0, 0x95, 0x22, 0x62, 0x95,
-  0xf3, 0x54, 0xaa, 0x7f, 0x12, 0x77, 0x9d, 0x14, 0x6e, 0xfc, 0xdf, 0x70,
-  0x69, 0xcc, 0xa8, 0x98, 0xe5, 0x0b, 0x71, 0x79, 0x87, 0x7a, 0x6f, 0xa0,
-  0x23, 0x86, 0xf1, 0x20, 0x40, 0x49, 0x00, 0xdd, 0x88, 0xaa, 0x88, 0xe0,
-  0x0e, 0xa5, 0x3c, 0xca, 0x2b, 0x6a, 0x43, 0xe9, 0xf8, 0x81, 0x70, 0x31,
-  0x68, 0x92, 0x23, 0x05, 0x11, 0x6e, 0xae, 0x1c, 0x87, 0x01, 0x4a, 0x08,
-  0xfb, 0xce, 0xcc, 0x88, 0x0e, 0x60, 0x31, 0xbd, 0xd0, 0x72, 0x98, 0x36,
-  0xe8, 0x66, 0x5f, 0xd0, 0xe6, 0x7c, 0x15, 0x15, 0xcf, 0x29, 0x1f, 0xb4,
-  0xb4, 0x7d, 0xcc, 0x1e, 0x55, 0x0b, 0x4f, 0x00, 0x9a, 0x94, 0x4a, 0x42,
-  0x02, 0x4b, 0x3d, 0x6f, 0x8e, 0x99, 0x2f, 0x01, 0x00, 0xff, 0x70, 0xd1,
-  0xa7, 0x2a, 0xf3, 0x12, 0x8d, 0x62, 0x8a, 0xd7, 0xcd, 0x5e, 0xe2, 0x36,
-  0x5a, 0x58, 0x83, 0x01, 0x9d, 0x0f, 0xe4, 0x1f, 0xef, 0xfe, 0x9e, 0x70,
-  0xe5, 0x7b, 0x62, 0xeb, 0xde, 0x61, 0x35, 0x30, 0xfe, 0xce, 0xc6, 0x0e,
-  0xaa, 0x3b, 0xf0, 0xe2, 0x9c, 0x32, 0x5f, 0xb4, 0xc6, 0x82, 0x92, 0xb8,
-  0x29, 0xc2, 0x08, 0xe3, 0x4e, 0xee, 0x3d, 0xed, 0x82, 0x68, 0xc2, 0x6e,
-  0xca, 0x5c, 0x55, 0x25, 0xe1, 0x0a, 0x4d, 0x9f, 0x19, 0x70, 0x34, 0x45,
-  0x44, 0xaf, 0x15, 0xcc, 0x81, 0x86, 0x50, 0x86, 0x60, 0xa5, 0x4a, 0x77,
-  0x4c, 0xb7, 0x08, 0x90, 0xab, 0x52, 0x7a, 0x8d, 0xa5, 0x49, 0x09, 0x52,
-  0xc2, 0xbb, 0xea, 0x32, 0x8a, 0xed, 0xb2, 0x47, 0x8d, 0x2f, 0x91, 0xbe,
-  0x1c, 0xd2, 0xc4, 0x71, 0xa3, 0xa9, 0xe3, 0x73, 0x8a, 0x37, 0xe7, 0xce,
-  0x9d, 0xf5, 0xbf, 0x78, 0xed, 0x61, 0xf0, 0xbb, 0x2a, 0x82, 0x81, 0x60,
-  0xad, 0xb0, 0x67, 0x61, 0x67, 0xcd, 0xa5, 0xcd, 0x66, 0xc6, 0xfc, 0x6a,
-  0x28, 0xa4, 0xe8, 0xac, 0xc0, 0x9d, 0x66, 0xb4, 0x8a, 0xf3, 0xc0, 0x5d,
-  0xd8, 0xbd, 0xbb, 0x5b, 0x63, 0xe2, 0x32, 0xe7, 0x8a, 0x30, 0x89, 0x2f,
-  0x7d, 0x9d, 0x1b, 0x4f, 0xfd, 0xf2, 0x17, 0x3b, 0xce, 0x78, 0x37, 0x70,
-  0xdd, 0x2e, 0x79, 0xa3, 0xf3, 0xb5, 0xea, 0x7a, 0xf9, 0x9f, 0xb7, 0xb0,
-  0xca, 0xf9, 0x03, 0x78, 0xf3, 0x83, 0xfe, 0x83, 0x1c, 0xd0, 0xf6, 0x82,
-  0xe4, 0xad, 0xa0, 0xad, 0xd8, 0xcf, 0x78, 0x25, 0xf2, 0x8f, 0x11, 0xe3,
-  0x56, 0x2d, 0xe2, 0x23, 0x44, 0x2f, 0x7a, 0x7f, 0xf4, 0xfa, 0xc3, 0xf0,
-  0xe8, 0x15, 0xe1, 0xc3, 0x26, 0x7e, 0x6e, 0x5a, 0x2e, 0x0c, 0xc0, 0x27,
-  0x0f, 0x06, 0x2d, 0x58, 0x71, 0x34, 0xb3, 0x5d, 0xa4, 0x2f, 0x84, 0xee,
-  0xcc, 0x2e, 0xed, 0xe1, 0x31, 0x44, 0x76, 0x57, 0x6e, 0x08, 0xff, 0x04,
-  0x1a, 0x8b, 0xc2, 0xd4, 0xde, 0xae, 0x85, 0xb0, 0xd6, 0xfc, 0xf0, 0x38,
-  0x9d, 0x80, 0x18, 0xdb, 0xe7, 0xba, 0x18, 0xaf, 0x35, 0xd3, 0x5b, 0x63,
-  0x94, 0x81, 0xd6, 0x93, 0xce, 0x04, 0x0b, 0x6d, 0x0a, 0xe2, 0x80, 0x33,
-  0x3c, 0xd0, 0x96, 0xd2, 0x7b, 0x88, 0xd2, 0x77, 0xf4, 0x66, 0xe5, 0xc4,
-  0xd6, 0x20, 0xf9, 0x51, 0x32, 0x91, 0x21, 0x21, 0x37, 0x92, 0x5a, 0x3d,
-  0x76, 0x6f, 0x78, 0x6b, 0x56, 0xb3, 0xba, 0x95, 0x86, 0xe4, 0x41, 0x5c,
-  0x90, 0x40, 0xc5, 0xd6, 0x03, 0xa8, 0x85, 0xd0, 0x64, 0x92, 0xc9, 0x55,
-  0x01, 0x17, 0xd7, 0xf5, 0xd4, 0xc0, 0xb7, 0x31, 0x70, 0x6f, 0x85, 0x96,
-  0x5b, 0x5b, 0x9f, 0x0b, 0xda, 0x6c, 0x94, 0xef, 0x9d, 0x32, 0xce, 0x26,
-  0xda, 0xb1, 0x56, 0x40, 0x11, 0xc1, 0xd9, 0x09, 0x33, 0x14, 0x64, 0x4c,
-  0xa2, 0x07, 0x93, 0xd0, 0x33, 0xb2, 0x7e, 0x4e, 0xcb, 0xa2, 0x1d, 0x22,
-  0x56, 0xe7, 0xb7, 0x5e, 0x06, 0xee, 0xdc, 0x7f, 0xf7, 0xac, 0x7b, 0x87,
-  0x1f, 0x76, 0x7f, 0x09, 0x33, 0xfa, 0x4c, 0x36, 0x4d, 0xee, 0x38, 0x8e,
-  0xdc, 0xc5, 0x67, 0x9c, 0xd4, 0xa2, 0xe6, 0x79, 0xc9, 0xce, 0x0f, 0x72,
-  0x35, 0x58, 0xec, 0x1b, 0x2e, 0x81, 0x32, 0x2c, 0x24, 0xea, 0x1c, 0x85,
-  0xc4, 0xfc, 0x14, 0x54, 0xbc, 0xbd, 0x24, 0x2e, 0x71, 0x91, 0x72, 0x2e,
-  0x45, 0x82, 0xf4, 0xc3, 0xf8, 0xca, 0x2a, 0x56, 0x20, 0xcb, 0xd4, 0xd6,
-  0xf0, 0xc7, 0x64, 0x96, 0x4b, 0xa6, 0x02, 0x7d, 0x3f, 0x00, 0xd4, 0xc3,
-  0x6a, 0x08, 0xb0, 0xb8, 0xc6, 0x9a, 0x38, 0x71, 0x66, 0x92, 0x4d, 0xb3,
-  0x9a, 0x60, 0xaa, 0xb2, 0x91, 0x5e, 0xd7, 0x97, 0x36, 0xe4, 0xcf, 0x9c,
-  0xde, 0x76, 0x6d, 0xa1, 0xae, 0xa2, 0x63, 0x09, 0x04, 0x08, 0x8c, 0xd2,
-  0x6f, 0xb6, 0x9f, 0x96, 0x9d, 0x24, 0xe4, 0x39, 0x82, 0xb2, 0xb9, 0xa6,
-  0xdc, 0x2a, 0xbf, 0xf6, 0x5f, 0x2a, 0x9a, 0x28, 0x0a, 0x84, 0x2a, 0x09,
-  0x61, 0x1b, 0xe1, 0x92, 0x58, 0x9b, 0xcb, 0xd5, 0x4b, 0x21, 0x99, 0x3e,
-  0x8c, 0xfb, 0x01, 0xe3, 0x64, 0x05, 0x7a, 0x13, 0xcf, 0x0b, 0x0f, 0x35,
-  0x6b, 0x9a, 0x71, 0x75, 0x8c, 0x60, 0x91, 0xcb, 0x8c, 0x56, 0x30, 0xaf,
-  0xe3, 0x2e, 0x9b, 0xce, 0xa7, 0x34, 0x44, 0x9f, 0xf1, 0xdd, 0xa6, 0xe8,
-  0xc9, 0xd1, 0xed, 0xa5, 0x73, 0xd1, 0x9d, 0xca, 0x84, 0x02, 0x9c, 0x0e,
-  0x45, 0xcd, 0xfa, 0x9a, 0x3a, 0x15, 0xe4, 0x84, 0xfe, 0x7b, 0xf0, 0xbf,
-  0x61, 0xd5, 0xed, 0x0d, 0x73, 0x06, 0x36, 0x37, 0x7e, 0x95, 0x63, 0x10,
-  0xed, 0xe7, 0xf3, 0xe9, 0x17, 0xfe, 0x22, 0x7d, 0xd1, 0x47, 0xec, 0x2f,
-  0x95, 0x6e, 0x36, 0x90, 0x24, 0x5c, 0x8d, 0x0a, 0xb9, 0x60, 0xe5, 0x76,
-  0x4b, 0xd8, 0x3e, 0x57, 0x15, 0x38, 0x6a, 0x13, 0x91, 0xd2, 0xe6, 0xe1,
-  0xb0, 0x8f, 0x40, 0x8e, 0xd7, 0x15, 0xdb, 0x8a, 0xf3, 0xd9, 0xc0, 0x5b,
-  0x93, 0xca, 0x39, 0xe3, 0xff, 0x85, 0xcf, 0x6f, 0x48, 0x01, 0x8b, 0x84,
-  0xb7, 0x30, 0x75, 0x49, 0xf6, 0xd0, 0x04, 0xb2, 0xb3, 0x2a, 0x94, 0xce,
-  0x25, 0x62, 0x8f, 0x64, 0xb1, 0x77, 0x13, 0xb3, 0x27, 0x98, 0x71, 0xfb,
-  0xf7, 0x90, 0x28, 0xcc, 0x1e, 0x7d, 0x85, 0xfa, 0x02, 0xe5, 0xc7, 0x77,
-  0x63, 0x39, 0xba, 0x72, 0x61, 0x31, 0x83, 0x77, 0x36, 0x5e, 0xf4, 0xa3,
-  0x9d, 0xad, 0x97, 0x7d, 0x2c, 0xd9, 0xc4, 0xff, 0x6c, 0xe1, 0x7f, 0xb6,
-  0xf1, 0x91, 0x5d, 0x50, 0x69, 0x17, 0xa8, 0x72, 0xe1, 0x1e, 0x7a, 0x82,
-  0x4a, 0x85, 0x77, 0xc0, 0x45, 0x31, 0x77, 0xb4, 0xba, 0xc4, 0x21, 0xb8,
-  0x26, 0x7d, 0xb1, 0x9c, 0xba, 0x4d, 0x32, 0x62, 0x49, 0x2f, 0xd7, 0x9e,
-  0xea, 0x4f, 0x45, 0x95, 0xb6, 0xc9, 0xb4, 0xf0, 0x67, 0x7d, 0x0d, 0x4c,
-  0x85, 0xc4, 0x56, 0x5a, 0xea, 0x80, 0x40, 0xe2, 0x39, 0xe7, 0xca, 0x79,
-  0x04, 0xc5, 0xaf, 0x70, 0xd0, 0x02, 0x59, 0x16, 0x6e, 0xe5, 0x6c, 0xc2,
-  0x56, 0x20, 0x0a, 0x97, 0x0a, 0x19, 0x97, 0xfd, 0x96, 0x95, 0xdb, 0x43,
-  0xdb, 0xa0, 0x97, 0x07, 0xf6, 0x67, 0x42, 0xbe, 0x07, 0x05, 0x3e, 0xa5,
-  0x8a, 0x48, 0x27, 0x97, 0x93, 0xcf, 0x29, 0x3b, 0xc9, 0x25, 0x6f, 0xa6,
-  0x71, 0x6f, 0x84, 0xda, 0xff, 0x98, 0x64, 0x5d, 0x11, 0x43, 0xe9, 0x1d,
-  0xd0, 0x9e, 0x3b, 0x02, 0x44, 0xe6, 0xfe, 0xb3, 0xf7, 0xf6, 0xc0, 0x69,
-  0x5b, 0x15, 0xa8, 0xbd, 0x69, 0x1c, 0x51, 0xd8, 0x06, 0x96, 0x56, 0x24,
-  0xb8, 0x8b, 0x5a, 0x84, 0x02, 0x83, 0x13, 0x4b, 0x52, 0x71, 0x97, 0x70,
-  0x19, 0x92, 0x51, 0x47, 0xfb, 0xfa, 0x7c, 0xf0, 0xec, 0x99, 0x41, 0x43,
-  0xe4, 0xca, 0xd5, 0x62, 0x6a, 0xca, 0x54, 0x59, 0x98, 0x93, 0x63, 0x29,
-  0x3e, 0x40, 0x27, 0xf1, 0x5e, 0x28, 0x10, 0xaf, 0x3a, 0xbd, 0x54, 0x26,
-  0xc1, 0x1d, 0x40, 0xe2, 0x88, 0x72, 0x89, 0x52, 0x6d, 0x9d, 0x8e, 0x4d,
-  0xd5, 0xf9, 0x3c, 0x9b, 0xe4, 0x20, 0x3a, 0x58, 0xe9, 0x5d, 0xed, 0x77,
-  0x87, 0x0f, 0x68, 0x94, 0xbf, 0x87, 0x40, 0x8c, 0x9e, 0x3f, 0x45, 0xf6,
-  0xd9, 0x2b, 0xc1, 0x11, 0x82, 0x55, 0xc2, 0x2d, 0xc8, 0xae, 0x7f, 0xce,
-  0xc6, 0xd1, 0xbe, 0x36, 0x8c, 0x0c, 0x23, 0x02, 0xe3, 0x51, 0x83, 0x27,
-  0x81, 0x27, 0x2a, 0x36, 0xcb, 0xf5, 0xf1, 0x68, 0x55, 0x46, 0x58, 0xeb,
-  0x83, 0xd1, 0x4d, 0x39, 0x01, 0xc3, 0x83, 0xe1, 0x49, 0x74, 0x76, 0x72,
-  0x70, 0xfc, 0x0e, 0xde, 0x89, 0xfd, 0xb0, 0x94, 0x69, 0xee, 0x41, 0xb8,
-  0xce, 0x9e, 0x3d, 0xd1, 0x6a, 0x00, 0xd2, 0xfc, 0x90, 0x8f, 0xbc, 0x3f,
-  0x26, 0x95, 0xa1, 0x81, 0x57, 0x11, 0xcf, 0xb5, 0xc2, 0xa7, 0xab, 0xb6,
-  0xc5, 0xee, 0x58, 0x03, 0x33, 0xde, 0xad, 0xbe, 0xe5, 0xad, 0x02, 0xe6,
-  0xc9, 0x8c, 0x63, 0x3e, 0xb4, 0x1a, 0xa4, 0x9d, 0x4d, 0xe6, 0xa5, 0xc9,
-  0xc3, 0x9c, 0xd8, 0x82, 0x05, 0xae, 0x73, 0x86, 0xa6, 0x46, 0x28, 0xad,
-  0x0a, 0xdd, 0x60, 0xe5, 0x4f, 0x44, 0x65, 0xa8, 0x58, 0xd3, 0x2a, 0x54,
-  0x12, 0x45, 0xc2, 0xc1, 0x57, 0x10, 0x40, 0x30, 0x13, 0x96, 0x21, 0xf8,
-  0xa0, 0x95, 0xca, 0xf3, 0x9c, 0x5f, 0x14, 0x77, 0x7d, 0x1b, 0x1b, 0xe1,
-  0xf4, 0x26, 0xd1, 0xf6, 0x29, 0xd1, 0xfe, 0x0a, 0xa4, 0x25, 0x35, 0x4c,
-  0x10, 0x80, 0xb1, 0x82, 0x9b, 0xa5, 0x62, 0x0f, 0x54, 0x1f, 0xfc, 0x61,
-  0x0a, 0xe6, 0x01, 0x0c, 0xe8, 0x66, 0x67, 0x2c, 0xcb, 0xc2, 0x0d, 0x96,
-  0xc3, 0xff, 0x65, 0xd3, 0x64, 0x89, 0x60, 0x35, 0xe6, 0x30, 0xe5, 0xb1,
-  0xe6, 0xf2, 0x34, 0x7a, 0x6e, 0x3d, 0x6b, 0x1a, 0x53, 0xf4, 0xa1, 0xac,
-  0xad, 0x38, 0x1e, 0x51, 0x31, 0xb2, 0x29, 0xb8, 0xb3, 0xe5, 0xe6, 0x39,
-  0x33, 0x6d, 0x93, 0xf5, 0x9e, 0xb4, 0xb8, 0xac, 0x5c, 0x72, 0x4d, 0x2e,
-  0x49, 0x1a, 0x4b, 0xda, 0x6e, 0x99, 0xe6, 0xbf, 0x55, 0xeb, 0x4d, 0xee,
-  0xc0, 0xdd, 0x9d, 0x9f, 0x40, 0x1f, 0xb7, 0xed, 0x97, 0xbd, 0xa9, 0x70,
-  0x37, 0x0d, 0xc2, 0xf3, 0xe1, 0x28, 0x55, 0x14, 0xea, 0xe9, 0x40, 0xcf,
-  0xac, 0x4b, 0x69, 0xdb, 0x53, 0xca, 0x36, 0x1a, 0xdf, 0x74, 0x47, 0x5b,
-  0x52, 0x1e, 0x86, 0x1b, 0x49, 0xbb, 0xa3, 0x2f, 0xea, 0xe3, 0x39, 0x24,
-  0x04, 0xed, 0xeb, 0xe2, 0x36, 0x0e, 0xf5, 0xc1, 0x30, 0x09, 0xc9, 0xe2,
-  0x89, 0xa8, 0xe8, 0x69, 0xcc, 0x80, 0xae, 0xe5, 0x14, 0x1b, 0x35, 0x0d,
-  0xc7, 0xb0, 0xb5, 0x6b, 0x70, 0x51, 0x54, 0xc9, 0x55, 0xa0, 0x59, 0x41,
-  0xc6, 0xa0, 0x9c, 0x8b, 0x13, 0xd7, 0xd0, 0xfa, 0x99, 0x14, 0x17, 0xc0,
-  0xd1, 0xdc, 0x6c, 0x49, 0x5c, 0x66, 0x9a, 0xe1, 0xd5, 0xc0, 0xf8, 0xd0,
-  0xc2, 0x9e, 0x40, 0x39, 0x3a, 0xa8, 0x15, 0xf1, 0x5e, 0x9f, 0x48, 0xb4,
-  0x7c, 0x5f, 0x2c, 0x4b, 0x13, 0xb3, 0xe4, 0x65, 0x37, 0xa6, 0xc0, 0xbd,
-  0xb8, 0x22, 0x70, 0xea, 0x69, 0x5a, 0x37, 0xea, 0x30, 0x1d, 0x42, 0x7a,
-  0x7a, 0x03, 0x7d, 0x8a, 0x9c, 0xcc, 0x7f, 0x9f, 0x67, 0x29, 0x41, 0x6d,
-  0xa5, 0x26, 0xae, 0x42, 0x64, 0xd6, 0x61, 0x23, 0x1a, 0x16, 0x1f, 0x35,
-  0x54, 0xf7, 0xf4, 0x06, 0xd8, 0x05, 0x90, 0x2c, 0x6f, 0x69, 0xa3, 0x0e,
-  0x71, 0x69, 0x53, 0x50, 0xd7, 0x28, 0x33, 0x42, 0xf0, 0x52, 0xa9, 0xca,
-  0x50, 0x0a, 0x75, 0x08, 0x5d, 0x8c, 0xd2, 0x81, 0x49, 0xb5, 0x4a, 0xaa,
-  0x4f, 0xbe, 0x2d, 0xd8, 0x8f, 0x66, 0x45, 0xcd, 0xfa, 0x15, 0x42, 0x38,
-  0xdf, 0xa4, 0xe6, 0xa2, 0x83, 0xb9, 0x80, 0x36, 0x98, 0x4c, 0xd6, 0xab,
-  0x7a, 0x8c, 0x5a, 0xec, 0x3c, 0x9f, 0xe0, 0x24, 0x71, 0x28, 0x75, 0x86,
-  0xb7, 0x19, 0xa2, 0x0e, 0xb5, 0x98, 0xf0, 0xb8, 0x92, 0xf2, 0x14, 0xcd,
-  0xb5, 0x2a, 0xe8, 0x9a, 0xae, 0xab, 0x05, 0x7f, 0x22, 0x6a, 0xa0, 0xdf,
-  0x4a, 0xc4, 0x25, 0x15, 0xde, 0x62, 0xbc, 0x64, 0x22, 0x64, 0x83, 0x59,
-  0x97, 0x85, 0x0c, 0x5f, 0xd2, 0x59, 0x79, 0x83, 0x6b, 0x82, 0xe3, 0x7d,
-  0x51, 0x54, 0x54, 0x17, 0x0d, 0x44, 0x82, 0xcf, 0xcb, 0xa1, 0x5d, 0xc4,
-  0x2b, 0x0c, 0x70, 0xbf, 0xb3, 0x64, 0x9b, 0x03, 0x6a, 0xde, 0xb3, 0xe3,
-  0x34, 0x39, 0xa8, 0x5b, 0xc9, 0x37, 0xae, 0xae, 0xe0, 0x63, 0xbb, 0x3e,
-  0xd0, 0xe1, 0x00, 0x3e, 0x68, 0xdc, 0x53, 0x24, 0xbc, 0xa8, 0x1a, 0x1d,
-  0xdb, 0x2f, 0x76, 0x62, 0xe2, 0x87, 0x92, 0x02, 0x9a, 0x4d, 0xcd, 0xd4,
-  0x10, 0xd4, 0xd8, 0xbd, 0x51, 0xa1, 0x42, 0xed, 0x61, 0x1e, 0xd9, 0xd2,
-  0x06, 0xe3, 0xb4, 0xa6, 0x40, 0x5e, 0x85, 0x82, 0x8b, 0xe9, 0x6f, 0xda,
-  0x7c, 0x05, 0x42, 0x43, 0x70, 0x54, 0xe6, 0x02, 0x54, 0x3e, 0x9a, 0x80,
-  0x3d, 0x12, 0x08, 0x61, 0x37, 0x5c, 0x7e, 0x98, 0x6c, 0x32, 0x47, 0xd3,
-  0x79, 0x32, 0xc7, 0xcf, 0x99, 0xb8, 0x0e, 0x77, 0xb1, 0x31, 0x85, 0xb9,
-  0xb2, 0x9f, 0x34, 0x81, 0xa0, 0xc3, 0xd7, 0xe9, 0x62, 0xa5, 0xdd, 0x50,
-  0x4d, 0x83, 0xa7, 0x76, 0xaf, 0x90, 0x0e, 0xc3, 0x83, 0xdd, 0xb1, 0x7d,
-  0xa7, 0x23, 0x42, 0x23, 0x8c, 0x8f, 0x90, 0x56, 0x66, 0x3e, 0xdc, 0xe7,
-  0x49, 0x5a, 0x06, 0x04, 0x5b, 0xfb, 0x50, 0xa1, 0x07, 0xdb, 0x3e, 0xee,
-  0xe4, 0xd4, 0x40, 0x50, 0x14, 0x64, 0xc2, 0x54, 0x71, 0x9a, 0x41, 0x61,
-  0x36, 0x89, 0x97, 0xb2, 0x8b, 0x81, 0x0c, 0xca, 0x2e, 0x61, 0xb6, 0x60,
-  0x6b, 0x56, 0x42, 0xf3, 0x95, 0x8a, 0x92, 0xc6, 0x94, 0xd4, 0x96, 0x0d,
-  0xe0, 0x61, 0xf0, 0x4b, 0xab, 0xda, 0x83, 0x80, 0x5e, 0x5b, 0x6b, 0xa4,
-  0xb6, 0x16, 0x8d, 0xe6, 0xbd, 0xbf, 0xb7, 0xc9, 0x23, 0x5b, 0x8f, 0xcc,
-  0x4f, 0xfd, 0xcf, 0x76, 0x36, 0x5e, 0x3e, 0x7b, 0x4a, 0x6b, 0x94, 0x9d,
-  0xc4, 0xeb, 0x7c, 0xc1, 0xff, 0x88, 0x75, 0x68, 0x5f, 0x80, 0x24, 0x4f,
-  0x92, 0x20, 0xc9, 0xe3, 0x44, 0x48, 0x07, 0x82, 0xcf, 0x22, 0x11, 0xc2,
-  0x7d, 0x7e, 0xaa, 0x4f, 0x55, 0xbb, 0x7d, 0x54, 0x57, 0xfe, 0x88, 0xcd,
-  0xc2, 0x0a, 0xea, 0x5b, 0x4d, 0xef, 0xfb, 0x12, 0x22, 0x80, 0x3d, 0xb3,
-  0xbf, 0x44, 0x00, 0x3c, 0xe5, 0xfc, 0x27, 0x4f, 0x11, 0x00, 0xc9, 0xef,
-  0x24, 0x01, 0x4c, 0xa5, 0xd7, 0x63, 0xcf, 0xbf, 0x72, 0xcd, 0xff, 0x95,
-  0x00, 0x41, 0x09, 0x90, 0xfc, 0x0a, 0x22, 0x60, 0x69, 0x09, 0xb0, 0xcb,
-  0x3d, 0x94, 0xda, 0x0c, 0xec, 0xd5, 0xba, 0xa1, 0x4d, 0x8d, 0x03, 0xac,
-  0x9b, 0x2e, 0x5f, 0x2d, 0x17, 0x86, 0xd4, 0x39, 0x71, 0x36, 0x55, 0x30,
-  0xc5, 0xb9, 0x50, 0xa6, 0xda, 0x35, 0x8c, 0xa0, 0xb0, 0xc1, 0x0b, 0x47,
-  0xf6, 0x62, 0x66, 0xda, 0x81, 0xd5, 0x26, 0x35, 0x0d, 0x44, 0x47, 0xd4,
-  0x35, 0x5d, 0x81, 0xf2, 0x36, 0xcb, 0x48, 0x6e, 0x80, 0x76, 0x0a, 0x8c,
-  0x1f, 0x7d, 0x3d, 0x1c, 0xc6, 0x07, 0x67, 0xc7, 0xd1, 0x03, 0xde, 0x1a,
-  0x7c, 0xc5, 0x99, 0x63, 0xb6, 0xb4, 0x02, 0xd8, 0xa0, 0xaa, 0xdd, 0x8c,
-  0x5f, 0xbc, 0xb3, 0xbb, 0x8b, 0xea, 0xd6, 0x9a, 0xcb, 0x06, 0xd3, 0xa6,
-  0xbd, 0x9f, 0x07, 0x55, 0xd4, 0xa8, 0x90, 0x57, 0x6a, 0xa8, 0x9d, 0x48,
-  0xc6, 0xb4, 0xb6, 0x53, 0x25, 0x14, 0x0e, 0x74, 0x6e, 0xa3, 0x28, 0xa7,
-  0x07, 0xbc, 0xc4, 0x28, 0x6c, 0x25, 0x40, 0x6d, 0x00, 0x36, 0x5f, 0x3e,
-  0xdb, 0x04, 0x41, 0x70, 0xcf, 0xf9, 0x55, 0xf2, 0xf2, 0xce, 0x60, 0x7b,
-  0x7d, 0x67, 0xb0, 0x83, 0x82, 0x5e, 0xb2, 0xb9, 0xa9, 0xf6, 0x5a, 0x86,
-  0x0f, 0x67, 0x2b, 0xb1, 0xbc, 0x7f, 0x77, 0x74, 0x18, 0x71, 0xd5, 0x35,
-  0x75, 0xc3, 0x6a, 0x39, 0x89, 0x1c, 0x80, 0x13, 0xe1, 0x1d, 0x3e, 0x9f,
-  0x9e, 0xcb, 0xd6, 0x23, 0x87, 0x7a, 0x0a, 0x08, 0xcf, 0x3a, 0x37, 0x13,
-  0x41, 0x11, 0xce, 0x4e, 0x03, 0xed, 0x4d, 0x00, 0xbf, 0xf2, 0xe1, 0xb5,
-  0x1c, 0x92, 0x38, 0x04, 0x7b, 0x22, 0x63, 0x38, 0x93, 0xfa, 0x35, 0xb9,
-  0xa3, 0x93, 0x19, 0xd4, 0x15, 0xd2, 0xe1, 0x4c, 0xb1, 0x61, 0x61, 0xcf,
-  0x67, 0x22, 0xf7, 0x8b, 0x71, 0xd8, 0x55, 0x51, 0x39, 0x9a, 0x1a, 0xf7,
-  0xc6, 0xe5, 0xdf, 0xc7, 0xf9, 0x60, 0x59, 0xdf, 0x4c, 0x56, 0x2f, 0x72,
-  0xc1, 0x18, 0x7a, 0xb0, 0x7c, 0x10, 0xcf, 0x4b, 0xd7, 0x82, 0xc4, 0xdd,
-  0xd2, 0xbe, 0x2b, 0x99, 0xdf, 0x50, 0x64, 0xb1, 0xff, 0xc4, 0x19, 0xca,
-  0x8c, 0x1f, 0xf8, 0x99, 0x8e, 0x1e, 0x70, 0x56, 0xe2, 0xc7, 0x78, 0xac,
-  0x32, 0x4d, 0x26, 0x32, 0x2b, 0xe7, 0x3b, 0xfe, 0x2f, 0xa9, 0x03, 0x30,
-  0x25, 0x4b, 0xfb, 0xc5, 0xba, 0x12, 0x58, 0x76, 0xa6, 0x60, 0x7c, 0x19,
-  0xd3, 0xa4, 0x1e, 0x69, 0x63, 0x30, 0xb8, 0xae, 0xb3, 0x19, 0x5c, 0x35,
-  0x4f, 0xf2, 0x22, 0x05, 0xe9, 0xc5, 0x0e, 0xac, 0x7f, 0x05, 0xcf, 0x05,
-  0x2f, 0x13, 0x31, 0xf8, 0x50, 0x24, 0x23, 0xd1, 0x54, 0x02, 0x2d, 0xb8,
-  0x45, 0xa4, 0x20, 0xad, 0x1d, 0x6d, 0x0c, 0x5c, 0x21, 0x1d, 0x83, 0x21,
-  0x00, 0xb2, 0xbd, 0x2a, 0x94, 0xd1, 0xdb, 0x85, 0x56, 0xd9, 0x65, 0x64,
-  0x5a, 0x8c, 0x61, 0x0c, 0xc6, 0xa6, 0x87, 0xe8, 0xb0, 0x02, 0x9f, 0xb8,
-  0xd6, 0xbe, 0x65, 0x42, 0x37, 0x67, 0x5d, 0xc8, 0x8d, 0xf3, 0xe0, 0xb5,
-  0xf6, 0x6b, 0xdd, 0x34, 0x72, 0xd7, 0xfd, 0x8b, 0xaf, 0x1a, 0xfd, 0xca,
-  0x53, 0xec, 0x07, 0xd9, 0xbc, 0x68, 0x95, 0xaa, 0x80, 0x04, 0xe8, 0x52,
-  0x75, 0x7d, 0xd7, 0x23, 0x10, 0xaa, 0xa7, 0xa1, 0x13, 0xb1, 0x36, 0x88,
-  0x1e, 0x72, 0x5f, 0x04, 0x6c, 0x0d, 0xef, 0x16, 0x5b, 0xd8, 0x9e, 0xf1,
-  0xbf, 0x95, 0xe7, 0x80, 0xb7, 0x3d, 0x0e, 0x74, 0x93, 0x31, 0xbd, 0x6c,
-  0x17, 0xd9, 0x10, 0xdc, 0x01, 0xfa, 0xff, 0x7a, 0x11, 0xfe, 0xbb, 0xdb,
-  0x10, 0xce, 0xb9, 0x6c, 0x74, 0x5a, 0xdd, 0x7b, 0xbe, 0xb1, 0xb1, 0xf1,
-  0x4b, 0xda, 0xad, 0x8a, 0x85, 0xe2, 0x0b, 0x82, 0x07, 0xcf, 0x7f, 0xa3,
-  0x46, 0xaf, 0x2d, 0x01, 0x62, 0xa9, 0xe1, 0x0f, 0x98, 0xf2, 0x61, 0xb0,
-  0x91, 0xc9, 0xc3, 0x7e, 0x4b, 0x3e, 0xf8, 0x94, 0x89, 0xc2, 0xf0, 0x32,
-  0xec, 0x67, 0xf0, 0xf9, 0xef, 0x81, 0xc3, 0xff, 0xdf, 0xc6, 0x6b, 0xa0,
-  0xfa, 0xd2, 0x52, 0x5e, 0x83, 0xdd, 0xff, 0xeb, 0x34, 0xf8, 0xb7, 0x3b,
-  0xf0, 0xdd, 0xec, 0xb0, 0x8a, 0xb5, 0x11, 0x58, 0xbc, 0x02, 0x7f, 0xea,
-  0x61, 0x5c, 0xb3, 0x8a, 0x23, 0x82, 0x7e, 0x31, 0xed, 0x8e, 0xcf, 0xbe,
-  0x79, 0xd6, 0x27, 0x28, 0xe6, 0xa1, 0x8f, 0x4a, 0x7e, 0xf2, 0xea, 0xe0,
-  0x6c, 0xf0, 0x14, 0xa9, 0xf2, 0x6b, 0x09, 0x13, 0x2b, 0x9d, 0xba, 0xa4,
-  0xca, 0xdf, 0xc8, 0x81, 0x31, 0x4b, 0xd3, 0x71, 0xcc, 0x59, 0x36, 0xfb,
-  0xf4, 0x8f, 0x60, 0x02, 0x9b, 0x82, 0x5c, 0xd3, 0x61, 0xc1, 0xe4, 0x1b,
-  0x49, 0x3d, 0x74, 0x32, 0x25, 0xe9, 0x65, 0x50, 0xf1, 0x72, 0x41, 0xc5,
-  0xc7, 0x42, 0xbc, 0xca, 0x77, 0x4c, 0x16, 0xf9, 0x78, 0x8d, 0x71, 0xcc,
-  0xe8, 0xcb, 0xc4, 0x9e, 0x92, 0x34, 0x8a, 0x72, 0xe4, 0x0a, 0xbb, 0xdc,
-  0x68, 0x07, 0x3d, 0xf7, 0x19, 0x12, 0x30, 0x95, 0x97, 0x7e, 0xc8, 0x27,
-  0xef, 0xde, 0x2e, 0x85, 0x13, 0x84, 0xb8, 0x2b, 0xd2, 0xf6, 0x06, 0x86,
-  0x3c, 0x05, 0x19, 0xf7, 0x77, 0xbf, 0x34, 0x1c, 0x4a, 0x6f, 0x6f, 0x6c,
-  0x34, 0x27, 0xbc, 0x6c, 0x06, 0x62, 0x6b, 0xc1, 0xf8, 0x2f, 0x1a, 0x39,
-  0x2e, 0x4d, 0x20, 0xba, 0x99, 0xb9, 0x69, 0xb7, 0xbd, 0x4d, 0xab, 0xae,
-  0x94, 0xdd, 0x85, 0xfb, 0xee, 0x2e, 0xa6, 0xb1, 0xdd, 0x98, 0xfc, 0xc6,
-  0x69, 0x3b, 0x6d, 0xc1, 0xec, 0x6e, 0x26, 0x67, 0xa7, 0x32, 0x71, 0xcd,
-  0x27, 0x9a, 0x5b, 0x7f, 0x7c, 0xe9, 0xbe, 0xe0, 0xf9, 0xa5, 0x18, 0xa5,
-  0x4b, 0x22, 0xa6, 0x62, 0x55, 0x37, 0x66, 0x65, 0x93, 0x83, 0x37, 0x35,
-  0x10, 0x6a, 0x61, 0x45, 0xfe, 0xe6, 0xd7, 0x51, 0x38, 0xef, 0x2e, 0x2e,
-  0xc6, 0x2c, 0xf2, 0xba, 0x2c, 0x10, 0x8b, 0xd7, 0xd4, 0x8f, 0xb1, 0xa4,
-  0x9b, 0x57, 0x0e, 0x50, 0x0a, 0xd6, 0x1b, 0x23, 0x4e, 0x48, 0x44, 0x54,
-  0xf3, 0xf2, 0x10, 0x45, 0x6a, 0x46, 0x69, 0x3d, 0x1a, 0x58, 0x46, 0xa4,
-  0x3e, 0x5e, 0x23, 0xac, 0xc9, 0x2d, 0x39, 0x71, 0x10, 0x2e, 0xa1, 0x3e,
-  0x17, 0xf8, 0x52, 0xe7, 0x92, 0x0e, 0x8f, 0x9f, 0xa6, 0xd9, 0x76, 0xa0,
-  0xac, 0xfc, 0x77, 0x66, 0x73, 0x4f, 0x44, 0xb1, 0x2c, 0xb3, 0xac, 0xde,
-  0x50, 0x92, 0x30, 0xef, 0x05, 0x3d, 0x21, 0xf1, 0x45, 0x9a, 0x78, 0x85,
-  0xfa, 0x3e, 0x98, 0xb2, 0xba, 0x5c, 0x8d, 0x54, 0x4f, 0x4a, 0x2e, 0x83,
-  0x42, 0x3e, 0x06, 0x16, 0xae, 0xef, 0xb1, 0x54, 0xf0, 0x56, 0x30, 0xc2,
-  0xda, 0x73, 0x1c, 0x9e, 0x6c, 0xd3, 0x6c, 0xce, 0x4f, 0x86, 0x6e, 0xc3,
-  0xf6, 0x8a, 0x92, 0x00, 0x09, 0x25, 0xef, 0xab, 0xa3, 0x83, 0xe1, 0xf9,
-  0x20, 0xb4, 0x01, 0x3e, 0x92, 0x8e, 0xc5, 0xcd, 0xc4, 0xf6, 0x35, 0x93,
-  0xe4, 0x1e, 0x1b, 0xdc, 0x09, 0xf8, 0x1e, 0xce, 0x8d, 0xa7, 0xa6, 0x83,
-  0xa3, 0x93, 0x87, 0xd1, 0x69, 0xa8, 0x98, 0xc1, 0xef, 0xa2, 0x04, 0x3b,
-  0x2b, 0x95, 0x91, 0xa6, 0x26, 0x93, 0x18, 0x9f, 0xea, 0xaa, 0x8a, 0x09,
-  0x66, 0x30, 0xe2, 0x77, 0x9a, 0x2e, 0xbf, 0x05, 0x78, 0xbe, 0xee, 0xfc,
-  0x27, 0x88, 0x9d, 0x28, 0x3d, 0xb5, 0x70, 0x10, 0x25, 0x16, 0x27, 0xa4,
-  0x19, 0x1c, 0xa5, 0x40, 0x7d, 0x2c, 0xc1, 0xb9, 0x53, 0xa7, 0x86, 0xea,
-  0x93, 0x26, 0x7d, 0x8d, 0x6a, 0x42, 0x16, 0x4d, 0x96, 0xcf, 0x0f, 0x69,
-  0xee, 0xf6, 0x92, 0x77, 0xa4, 0x24, 0xe9, 0xb4, 0xc6, 0x20, 0xee, 0xfa,
-  0x44, 0xd8, 0x05, 0x39, 0x2d, 0xcb, 0xe7, 0xaf, 0x79, 0x5d, 0xc4, 0xa3,
-  0x09, 0xe6, 0x35, 0xc7, 0x70, 0x4c, 0xeb, 0x80, 0xfb, 0xc5, 0x6d, 0x4b,
-  0xdd, 0x84, 0x14, 0x26, 0xb4, 0x21, 0x96, 0xce, 0x8c, 0x2d, 0x12, 0xf1,
-  0x48, 0xf0, 0x27, 0x0c, 0x05, 0xca, 0xb4, 0xaf, 0x84, 0xd7, 0xe2, 0xe1,
-  0x6a, 0xfa, 0x33, 0xfa, 0xec, 0xbb, 0x91, 0xc4, 0x7d, 0xdb, 0x53, 0xcb,
-  0x82, 0x99, 0xd1, 0x76, 0x85, 0x20, 0xc1, 0xfc, 0xb6, 0xc0, 0x9c, 0xb3,
-  0x85, 0x4e, 0x43, 0x6c, 0xbd, 0xbe, 0xca, 0x28, 0x92, 0x04, 0x2d, 0xa2,
-  0xf8, 0xc7, 0xb8, 0xcb, 0xb0, 0xaa, 0xf6, 0x70, 0x17, 0xd8, 0x50, 0x7a,
-  0x6d, 0x10, 0x9d, 0x81, 0x2c, 0xa7, 0xb4, 0xf1, 0xe7, 0x83, 0xe7, 0xcf,
-  0xe1, 0x28, 0x30, 0x74, 0x62, 0xd2, 0xc4, 0x16, 0x26, 0x88, 0xaa, 0x8c,
-  0x53, 0x49, 0x84, 0x40, 0xa1, 0x9b, 0x5c, 0xe7, 0x31, 0x10, 0x7d, 0xd8,
-  0x05, 0xed, 0x4c, 0xcc, 0x8a, 0xc9, 0x38, 0x10, 0x9a, 0x11, 0x8d, 0x90,
-  0x81, 0x3c, 0x8d, 0x95, 0xd6, 0x57, 0x59, 0x22, 0xb7, 0x7c, 0x42, 0x8a,
-  0xfd, 0x77, 0x3a, 0x6c, 0x0c, 0x55, 0xd5, 0x84, 0xe0, 0x5a, 0x7b, 0x32,
-  0x5b, 0x90, 0x52, 0x12, 0xee, 0x83, 0x3e, 0xba, 0x8f, 0x60, 0x39, 0x13,
-  0x71, 0xe7, 0xe3, 0x8e, 0x1a, 0xbc, 0xec, 0x27, 0x71, 0x72, 0x8b, 0xaf,
-  0x9e, 0xce, 0xce, 0xad, 0x81, 0x9a, 0xc5, 0x79, 0xcf, 0x5b, 0xfe, 0x25,
-  0x78, 0x81, 0xb0, 0x8f, 0x11, 0x03, 0xcd, 0x03, 0x45, 0x92, 0xad, 0x58,
-  0x5b, 0x20, 0x3a, 0x35, 0xf5, 0xdb, 0x25, 0x20, 0x8e, 0x36, 0x0a, 0xc2,
-  0xd1, 0x45, 0xa3, 0xeb, 0x14, 0x94, 0xd0, 0xc1, 0x53, 0x04, 0x4b, 0x9b,
-  0xf7, 0x5c, 0x31, 0xf3, 0xeb, 0x0b, 0x16, 0x43, 0x94, 0x65, 0x11, 0x0e,
-  0xca, 0x09, 0x97, 0x4f, 0xbb, 0x09, 0x7f, 0x3b, 0x3e, 0xd1, 0x81, 0x8f,
-  0xc7, 0xa1, 0xbe, 0xed, 0x84, 0x6f, 0x45, 0x40, 0x5a, 0x84, 0x3c, 0x85,
-  0x46, 0x04, 0xb6, 0xf9, 0xfa, 0xfb, 0x1c, 0x3b, 0x4d, 0x03, 0x4d, 0xd6,
-  0xe1, 0xb6, 0x11, 0x97, 0xb7, 0xb4, 0x77, 0xd6, 0x3e, 0x67, 0x9e, 0x45,
-  0xc3, 0xb9, 0x60, 0x75, 0x5a, 0x79, 0x8f, 0x52, 0x1e, 0x60, 0x07, 0x98,
-  0xbd, 0x39, 0x37, 0xfe, 0x75, 0x87, 0xdf, 0x7e, 0xc8, 0x8e, 0x06, 0x8e,
-  0x19, 0x4f, 0x78, 0xe1, 0x38, 0x77, 0xb1, 0xa5, 0x05, 0xe0, 0x05, 0x68,
-  0xf1, 0x02, 0x53, 0x50, 0x31, 0xf7, 0x0d, 0x37, 0x2d, 0x50, 0x59, 0x6c,
-  0x85, 0x92, 0x76, 0x2a, 0xa4, 0xe6, 0xa9, 0xf9, 0x64, 0x9c, 0xcc, 0xa8,
-  0x96, 0x20, 0x95, 0xda, 0x8a, 0x32, 0xfd, 0x89, 0xa3, 0x4a, 0xda, 0x19,
-  0x37, 0xcd, 0x41, 0xa5, 0x6c, 0x3b, 0x88, 0x1b, 0xaf, 0x65, 0x97, 0x04,
-  0x95, 0x98, 0x8d, 0x40, 0x8d, 0x40, 0x32, 0x52, 0x0d, 0x0e, 0x51, 0x76,
-  0xbc, 0x70, 0x59, 0x28, 0xc9, 0xb0, 0x16, 0x27, 0x45, 0x58, 0x50, 0x73,
-  0xb9, 0xc7, 0xf1, 0x65, 0x3d, 0x33, 0x7b, 0xf9, 0x14, 0x1e, 0xc3, 0xf7,
-  0x7c, 0x68, 0xad, 0x45, 0x76, 0x5d, 0x35, 0x79, 0xc4, 0x0d, 0xc5, 0x7c,
-  0x0b, 0x17, 0x5a, 0x55, 0x23, 0x56, 0x9d, 0xbf, 0x95, 0x8f, 0x3a, 0xd8,
-  0xd9, 0x55, 0x8e, 0x62, 0xd0, 0x3d, 0xd7, 0x0f, 0x1f, 0x6c, 0x29, 0x7d,
-  0x40, 0xc0, 0x04, 0xa9, 0xfc, 0x1c, 0xcf, 0xa9, 0x88, 0x63, 0x9a, 0x51,
-  0x72, 0xd9, 0x7a, 0x71, 0x79, 0x49, 0xe0, 0x89, 0x20, 0x36, 0xea, 0x32,
-  0xbb, 0x98, 0x07, 0x02, 0x8a, 0xd4, 0x08, 0xd6, 0x22, 0x3d, 0xf1, 0x37,
-  0xed, 0x37, 0x18, 0x9e, 0xee, 0x69, 0xe4, 0x6e, 0xd3, 0xe5, 0x69, 0x67,
-  0x3b, 0xb4, 0x05, 0x0d, 0x19, 0xbb, 0xe1, 0x1d, 0xf7, 0x45, 0x87, 0xfb,
-  0x9c, 0xe0, 0x7b, 0x48, 0x1f, 0xd0, 0xf3, 0xad, 0x6b, 0xef, 0x3e, 0xdc,
-  0xef, 0x51, 0x77, 0xaf, 0xa5, 0x54, 0x8c, 0x9b, 0x83, 0xf1, 0x4c, 0xdc,
-  0x53, 0xde, 0xec, 0x74, 0x6f, 0xfc, 0x17, 0x70, 0xc4, 0xe2, 0x90, 0x73,
-  0x4e, 0x4f, 0xb8, 0xbb, 0x64, 0x65, 0x71, 0xb1, 0x79, 0xd4, 0x93, 0x60,
-  0x98, 0x97, 0x5a, 0x95, 0x5e, 0x7a, 0xc9, 0x8b, 0x0c, 0xbf, 0x35, 0x81,
-  0x49, 0x4e, 0x08, 0x98, 0x3a, 0xcd, 0x47, 0xe5, 0x3d, 0x73, 0xd9, 0xa3,
-  0x4e, 0xdc, 0xaf, 0x2a, 0x48, 0x44, 0x40, 0x04, 0xa5, 0x88, 0xb0, 0xb9,
-  0x2b, 0x6d, 0x1e, 0x16, 0x24, 0xde, 0xd4, 0x05, 0xdc, 0x04, 0xa9, 0x2b,
-  0x15, 0xa2, 0x06, 0x67, 0x01, 0x55, 0x78, 0x46, 0x16, 0x69, 0x6e, 0xa8,
-  0x6e, 0x0e, 0x86, 0xb8, 0xfd, 0x03, 0xc5, 0xfc, 0xee, 0xec, 0xd8, 0x68,
-  0x94, 0xfe, 0x32, 0x21, 0x45, 0xb1, 0x3b, 0xac, 0xd9, 0x50, 0x3f, 0x6b,
-  0xa0, 0x67, 0x00, 0x79, 0x3b, 0x6b, 0x17, 0xea, 0x0b, 0xfd, 0xc5, 0xb6,
-  0x31, 0x1f, 0xe2, 0x8e, 0x08, 0x86, 0xfe, 0xe5, 0x9c, 0x5a, 0xb1, 0x19,
-  0xe0, 0xae, 0xa5, 0x4f, 0x23, 0xb0, 0xdc, 0x6c, 0xfb, 0xd1, 0x25, 0x0d,
-  0x8d, 0xc3, 0x26, 0x4c, 0x38, 0xca, 0x66, 0xd7, 0xf0, 0x79, 0xe7, 0xa4,
-  0x6d, 0xf5, 0x79, 0xec, 0x9b, 0x2d, 0x4f, 0xe0, 0x0d, 0x4f, 0x9a, 0xb2,
-  0x4e, 0xfd, 0xca, 0x40, 0x2b, 0xd0, 0x18, 0x14, 0x4e, 0xcb, 0x1e, 0xc3,
-  0x9b, 0xad, 0xbe, 0x64, 0x2a, 0x07, 0xfa, 0xb6, 0x51, 0xdd, 0x78, 0xae,
-  0x95, 0x65, 0x56, 0xe3, 0x45, 0x5c, 0xc8, 0x72, 0x3e, 0x52, 0x0e, 0x16,
-  0xd6, 0x1a, 0xf0, 0x78, 0x11, 0xc3, 0x88, 0x8d, 0x53, 0x8f, 0x53, 0x6d,
-  0x6b, 0xd4, 0xc8, 0x2c, 0x91, 0x0a, 0x98, 0x31, 0xe5, 0xe3, 0xd9, 0xe6,
-  0xf3, 0x67, 0x6b, 0x4f, 0xa0, 0x2f, 0x7c, 0xf0, 0x91, 0xc2, 0x8d, 0x49,
-  0x8c, 0x40, 0xad, 0xf0, 0x3c, 0x82, 0x0d, 0x0b, 0x7d, 0xf1, 0x9f, 0x5b,
-  0x03, 0x97, 0xaa, 0x7a, 0x76, 0x2b, 0x6d, 0x03, 0xe9, 0xc1, 0x17, 0xe6,
-  0x63, 0x64, 0x3f, 0xa4, 0x8f, 0x9a, 0x40, 0xc8, 0x96, 0x17, 0xf3, 0x6c,
-  0x42, 0xd5, 0x71, 0xda, 0x19, 0x8f, 0xa4, 0x8c, 0xef, 0xf6, 0x6f, 0xd3,
-  0x99, 0xc3, 0x00, 0xf1, 0xb6, 0x4e, 0x80, 0xcd, 0xed, 0x78, 0x93, 0xf0,
-  0xc5, 0x27, 0xd5, 0xcd, 0xa6, 0xcc, 0x94, 0xfe, 0x3e, 0x68, 0xfe, 0x6b,
-  0xcb, 0xe1, 0x0b, 0x3b, 0xc0, 0x2f, 0xe7, 0x8b, 0xed, 0x5f, 0x99, 0x2f,
-  0xb6, 0x9f, 0xc8, 0x17, 0xcf, 0x77, 0x9f, 0xbd, 0x78, 0x12, 0x5f, 0x6c,
-  0xff, 0x5a, 0x7c, 0xe1, 0x6c, 0xcb, 0xef, 0xc3, 0x17, 0x0e, 0x63, 0x3e,
-  0x8d, 0x2f, 0xb4, 0x00, 0x20, 0xd8, 0xe6, 0xf8, 0xbd, 0x82, 0x07, 0x51,
-  0xf1, 0x2e, 0x42, 0x25, 0x31, 0xb2, 0x9a, 0xbc, 0xe3, 0xc1, 0x3b, 0x72,
-  0xff, 0x13, 0x46, 0x86, 0x45, 0xdf, 0x65, 0x20, 0x1a, 0x63, 0x5b, 0x5d,
-  0x90, 0x9f, 0x6f, 0x36, 0x49, 0x80, 0x5b, 0x56, 0xe2, 0x15, 0x0d, 0x9c,
-  0x2b, 0xae, 0xac, 0x83, 0xcb, 0xc4, 0x75, 0x1c, 0xbf, 0x7f, 0xa9, 0xce,
-  0xbf, 0xda, 0x85, 0xc8, 0x44, 0x16, 0x90, 0xac, 0xfa, 0xae, 0x7e, 0x7a,
-  0xa1, 0x07, 0xef, 0xbe, 0x53, 0xed, 0xd3, 0x64, 0x80, 0x7b, 0xd0, 0x31,
-  0x62, 0xfe, 0x4e, 0xb0, 0xb2, 0xaf, 0x32, 0x45, 0x98, 0xec, 0xc6, 0x51,
-  0x5a, 0x5d, 0x14, 0x13, 0x24, 0x67, 0x8e, 0xa2, 0xe0, 0x7e, 0x92, 0x8a,
-  0xe6, 0x8b, 0x3b, 0x87, 0x5c, 0x8e, 0x81, 0xab, 0x76, 0x3a, 0x05, 0x95,
-  0x0d, 0x57, 0xed, 0x4a, 0x9d, 0x81, 0x24, 0xb9, 0x80, 0xbd, 0xd9, 0x98,
-  0x0c, 0x29, 0x76, 0xd5, 0x6d, 0x86, 0x39, 0x4a, 0xd4, 0x46, 0x32, 0xd0,
-  0x41, 0xe7, 0xdf, 0xbe, 0x80, 0xab, 0xb1, 0xa0, 0xf8, 0x78, 0xb9, 0x4d,
-  0xb4, 0xe0, 0xe1, 0xb4, 0x83, 0xee, 0x9e, 0x36, 0xeb, 0x34, 0xdb, 0x45,
-  0x8d, 0x20, 0x4c, 0xa8, 0x8a, 0x47, 0x9d, 0xe5, 0x42, 0xf9, 0x50, 0x61,
-  0x5d, 0x3c, 0x33, 0x51, 0xd1, 0x7a, 0x4e, 0xde, 0x2f, 0xe5, 0x6c, 0xee,
-  0x46, 0x87, 0x60, 0x43, 0x47, 0x87, 0x06, 0x37, 0x1e, 0x7f, 0x4b, 0x68,
-  0x1d, 0x40, 0xd0, 0x10, 0xe2, 0x87, 0xac, 0x94, 0xa3, 0x9f, 0xf6, 0x5d,
-  0x29, 0x09, 0x95, 0x79, 0x78, 0xf0, 0x43, 0x88, 0x8a, 0x50, 0xfb, 0x89,
-  0x4d, 0xaa, 0x83, 0x71, 0xbc, 0xe2, 0x15, 0x4e, 0x74, 0x3c, 0x9f, 0xce,
-  0xb4, 0x33, 0x26, 0x7a, 0x00, 0xe2, 0x8c, 0x30, 0xcc, 0x15, 0xc8, 0x4a,
-  0x10, 0x00, 0x30, 0x02, 0x1e, 0x6a, 0x54, 0x80, 0xe2, 0x44, 0x6a, 0xd7,
-  0x38, 0x0e, 0xad, 0x2c, 0x29, 0x6e, 0x30, 0x85, 0xa4, 0x3b, 0xae, 0x9b,
-  0xdd, 0xe9, 0x7c, 0x5c, 0xe1, 0x71, 0x7a, 0x31, 0xbf, 0x52, 0x00, 0x7c,
-  0x83, 0x8c, 0xd5, 0x3c, 0x76, 0x54, 0xb5, 0x87, 0xbd, 0x89, 0xd2, 0x3e,
-  0xf7, 0x0f, 0xcf, 0xef, 0xa9, 0x1f, 0x4a, 0x9d, 0x55, 0xbe, 0xbe, 0x3b,
-  0x5a, 0xde, 0xa0, 0xeb, 0xd8, 0x65, 0x87, 0x1c, 0xf1, 0x9d, 0xec, 0xc4,
-  0x52, 0x6c, 0xd7, 0x26, 0x74, 0x9f, 0xa8, 0x6c, 0x47, 0x25, 0x66, 0x6c,
-  0xb3, 0x4d, 0xdb, 0x3c, 0x73, 0x33, 0xba, 0x5a, 0xce, 0x9f, 0x7a, 0x34,
-  0x8b, 0x2f, 0x13, 0x6c, 0xfd, 0xeb, 0xc1, 0xa0, 0x49, 0x2d, 0xb1, 0x9c,
-  0xbb, 0xf3, 0xc3, 0xb3, 0xe8, 0x35, 0x0a, 0xd3, 0x53, 0x78, 0x32, 0x5a,
-  0x85, 0x4b, 0xff, 0xf9, 0xce, 0xe6, 0xf6, 0xd2, 0x77, 0xbe, 0xfb, 0xbd,
-  0x25, 0xed, 0xdd, 0x4b, 0xf8, 0x33, 0x8d, 0x49, 0xd5, 0x69, 0xfa, 0xb3,
-  0x5e, 0xfa, 0x4b, 0xca, 0x8b, 0x10, 0x3c, 0xc4, 0xf9, 0xbc, 0xcc, 0xb5,
-  0xc3, 0x11, 0xac, 0xe7, 0xe3, 0xbb, 0xd3, 0x57, 0x47, 0x27, 0x07, 0x7f,
-  0x33, 0x5d, 0x1c, 0xf0, 0x63, 0x8a, 0xbc, 0xfd, 0x11, 0x6c, 0xa8, 0xfb,
-  0x8f, 0x55, 0x0a, 0x33, 0xad, 0x57, 0xb7, 0xd7, 0xa8, 0xd5, 0x82, 0x07,
-  0x65, 0x78, 0x95, 0x36, 0xbb, 0x5f, 0x30, 0x56, 0xc7, 0x82, 0x5e, 0x5a,
-  0xec, 0x44, 0xc6, 0x7d, 0xd8, 0x18, 0x80, 0xc2, 0x20, 0x95, 0xb2, 0x18,
-  0x67, 0x74, 0xef, 0x33, 0x07, 0xb0, 0x33, 0x91, 0x9e, 0x82, 0x22, 0x29,
-  0x3d, 0x6c, 0x46, 0xf6, 0x1f, 0xa1, 0xfb, 0x9c, 0x85, 0x33, 0x62, 0x80,
-  0x5c, 0x5e, 0xb6, 0xda, 0xb0, 0x12, 0x30, 0x1c, 0xa1, 0x83, 0x3c, 0x65,
-  0xbb, 0x84, 0x96, 0xcb, 0xed, 0xd6, 0xbb, 0x3e, 0xdf, 0x22, 0x17, 0x73,
-  0x44, 0xbf, 0x76, 0xb6, 0xa7, 0x26, 0xb5, 0x28, 0x9d, 0xe4, 0x69, 0x2d,
-  0x75, 0xee, 0xd1, 0x3e, 0xfc, 0xf9, 0xf9, 0x4d, 0x32, 0xf1, 0xb0, 0xd6,
-  0x93, 0xaa, 0x32, 0xc7, 0xda, 0x5c, 0x54, 0xf8, 0xa6, 0x11, 0x1a, 0x03,
-  0x85, 0xb6, 0x4d, 0xc7, 0xe6, 0x49, 0x90, 0x37, 0x7b, 0xde, 0x5d, 0x74,
-  0xfe, 0xb7, 0xb3, 0xa3, 0xcf, 0xf7, 0xf1, 0x9a, 0xfb, 0x02, 0x31, 0x66,
-  0xaa, 0xc6, 0xad, 0x47, 0x85, 0x8a, 0x1e, 0x69, 0xbe, 0x7b, 0x75, 0x3c,
-  0x3c, 0x3b, 0x39, 0x3d, 0xfc, 0x7c, 0xff, 0x3b, 0x74, 0x10, 0x81, 0x7e,
-  0x74, 0xef, 0xbc, 0x6b, 0x7e, 0x16, 0x69, 0xcf, 0x06, 0xbf, 0x75, 0xc8,
-  0xd1, 0xb7, 0x1f, 0x8f, 0xde, 0x7d, 0xf3, 0xf9, 0xfe, 0x4d, 0x52, 0xf6,
-  0x71, 0x7d, 0xfc, 0x36, 0xd6, 0x44, 0xe7, 0x37, 0x59, 0x59, 0xe4, 0x18,
-  0xe9, 0x8a, 0xe0, 0x97, 0x19, 0x1e, 0xb4, 0x25, 0xb7, 0xa6, 0x96, 0x35,
-  0xdd, 0xd4, 0x9b, 0x1b, 0x1b, 0x42, 0x96, 0x47, 0x1b, 0xb0, 0x7f, 0x91,
-  0xb6, 0xd5, 0x97, 0xd9, 0xd5, 0xc0, 0x39, 0x38, 0x68, 0x9c, 0x5f, 0x4c,
-  0x3e, 0x55, 0xd9, 0xcf, 0x69, 0x04, 0x93, 0x9e, 0xcc, 0x3d, 0x35, 0x74,
-  0xf5, 0x9c, 0xfb, 0x3c, 0xc0, 0x16, 0xe0, 0xdf, 0xa2, 0xaf, 0x4e, 0xfe,
-  0x82, 0xfd, 0xbb, 0x4d, 0xaa, 0x0a, 0x75, 0x33, 0x84, 0xab, 0xe2, 0x8b,
-  0xdd, 0xcd, 0xad, 0x35, 0xb9, 0x5a, 0x04, 0xc6, 0xf6, 0x02, 0xe8, 0xf4,
-  0xc9, 0x83, 0x46, 0xfc, 0x59, 0x7b, 0x5f, 0xb6, 0xf0, 0xa3, 0x6d, 0xfb,
-  0x1c, 0x0d, 0x6b, 0x13, 0xf2, 0x06, 0xd5, 0x22, 0xc3, 0x6f, 0xe1, 0xd0,
-  0x21, 0x24, 0x85, 0x17, 0xd2, 0xa7, 0x49, 0x69, 0xd4, 0xc9, 0xc1, 0xc0,
-  0x84, 0xe9, 0x48, 0x5a, 0xc0, 0x42, 0x3d, 0xf0, 0x5f, 0xac, 0x57, 0x36,
-  0x08, 0xbe, 0xb9, 0xb1, 0xb5, 0x13, 0xd5, 0xe1, 0x9e, 0x8c, 0x8b, 0x7a,
-  0x68, 0xe3, 0x18, 0x70, 0xd0, 0xbc, 0xfe, 0x2f, 0xde, 0xaf, 0xc2, 0x5b,
-  0xe9, 0x54, 0xfb, 0x10, 0x44, 0x56, 0xc1, 0x7d, 0x4c, 0x89, 0x90, 0x7a,
-  0xa2, 0xb4, 0x09, 0xc1, 0x62, 0x15, 0x6f, 0x8a, 0x48, 0xd8, 0x88, 0x22,
-  0xc4, 0x21, 0x60, 0x27, 0xc0, 0x3b, 0x49, 0xaf, 0x30, 0x3e, 0x25, 0x1b,
-  0x53, 0xd9, 0xde, 0x52, 0x21, 0xad, 0x25, 0x19, 0xa1, 0xbb, 0x88, 0x20,
-  0x8f, 0xb9, 0xe8, 0x9d, 0x1b, 0xc2, 0x80, 0x88, 0x33, 0xd1, 0xe1, 0xc6,
-  0xec, 0x04, 0xd7, 0xb3, 0x1b, 0xfe, 0x58, 0x77, 0xb1, 0x45, 0x6f, 0xc7,
-  0xf4, 0x7d, 0xca, 0xb6, 0x59, 0xba, 0xea, 0xa6, 0x6d, 0xbe, 0xdc, 0x1a,
-  0x6c, 0x3e, 0x7b, 0x81, 0x38, 0xd4, 0xeb, 0x0f, 0x6d, 0x98, 0x4c, 0xa2,
-  0x79, 0x8f, 0xbd, 0x68, 0xdc, 0x63, 0xcd, 0xbe, 0x65, 0xd1, 0x3e, 0xfe,
-  0x35, 0xd8, 0x8f, 0x2a, 0xa2, 0x7d, 0x7c, 0xaf, 0x91, 0x48, 0xa7, 0xa1,
-  0xac, 0x41, 0x41, 0x99, 0x16, 0x63, 0xd6, 0xad, 0xb1, 0x5f, 0x92, 0x05,
-  0x69, 0xeb, 0x68, 0xcd, 0xc8, 0xe9, 0x4d, 0xa4, 0xa8, 0xc3, 0xe3, 0xa4,
-  0x2f, 0x21, 0xa7, 0x77, 0x0c, 0x69, 0x00, 0xf3, 0xfc, 0x94, 0x3f, 0x42,
-  0x68, 0xc3, 0x1c, 0xfd, 0x7d, 0x1c, 0x08, 0x6f, 0x2b, 0xd4, 0x91, 0x80,
-  0x66, 0x5f, 0x68, 0x12, 0x61, 0x62, 0xfa, 0x26, 0x31, 0x6e, 0x6f, 0x2a,
-  0x6d, 0x77, 0xaa, 0x40, 0x77, 0x32, 0x0c, 0x12, 0x65, 0x6e, 0x4b, 0x32,
-  0x2e, 0x99, 0x40, 0x4d, 0x8e, 0x58, 0x0e, 0x05, 0x39, 0xcc, 0xb3, 0x52,
-  0xfb, 0x15, 0x61, 0xe9, 0xc8, 0xeb, 0xc8, 0x24, 0x09, 0xe6, 0x47, 0x53,
-  0xa6, 0x0c, 0x61, 0x5f, 0x01, 0xe3, 0x5f, 0x49, 0x36, 0x3a, 0x2f, 0x4d,
-  0xbc, 0xfc, 0x34, 0xa9, 0xd5, 0x29, 0xae, 0x65, 0x4d, 0x60, 0x70, 0x82,
-  0x06, 0xba, 0xb1, 0xb5, 0xd9, 0x5b, 0x61, 0xd4, 0x08, 0x18, 0x14, 0x87,
-  0x40, 0x15, 0x02, 0x34, 0x08, 0xd2, 0x19, 0x38, 0x9a, 0xd0, 0x22, 0x89,
-  0xa7, 0xd3, 0xd6, 0x41, 0x54, 0x8c, 0x21, 0xaa, 0x3f, 0x1c, 0xc8, 0x6e,
-  0xbe, 0xaf, 0xa0, 0x96, 0x63, 0x6c, 0xed, 0xb6, 0x1a, 0xaf, 0x99, 0x0e,
-  0x07, 0x84, 0xce, 0xc5, 0xbc, 0x11, 0x68, 0x51, 0x84, 0xe4, 0x1c, 0xcd,
-  0xa7, 0xdc, 0x2a, 0x84, 0x7b, 0xff, 0x71, 0x3a, 0x86, 0x64, 0xd3, 0xa5,
-  0xc2, 0x14, 0xf8, 0xb5, 0x75, 0xce, 0xec, 0x52, 0x99, 0x8a, 0x5e, 0x03,
-  0xaf, 0x6d, 0x4f, 0x6b, 0xac, 0x3c, 0xbd, 0x75, 0xc7, 0xb2, 0x46, 0x9e,
-  0x19, 0xef, 0xf7, 0x6e, 0x03, 0xff, 0x73, 0xd4, 0xfb, 0x16, 0x86, 0xdf,
-  0xd8, 0x84, 0x7d, 0x9b, 0x45, 0x5b, 0x1b, 0x5b, 0x9b, 0xd1, 0xe6, 0xd6,
-  0xde, 0xe6, 0x8b, 0xbd, 0x8d, 0x8d, 0x25, 0x1a, 0xd3, 0xc0, 0x28, 0xf1,
-  0xaf, 0x32, 0x0c, 0x1d, 0xde, 0xe5, 0xf4, 0x62, 0xe0, 0x94, 0xab, 0x98,
-  0xe0, 0xc7, 0xd5, 0x19, 0xdd, 0xee, 0x2a, 0xd9, 0xb8, 0x14, 0x26, 0x15,
-  0x26, 0xe1, 0x45, 0xfb, 0xdf, 0x1c, 0xbd, 0x1f, 0x1e, 0x9f, 0xbe, 0xfb,
-  0x22, 0xe8, 0x84, 0x94, 0x5f, 0xe2, 0x5e, 0x67, 0x70, 0xa4, 0x0c, 0x10,
-  0xa3, 0x0d, 0x63, 0x60, 0x60, 0x48, 0xfd, 0xed, 0x74, 0xc6, 0x41, 0x93,
-  0xc2, 0x47, 0xda, 0x0c, 0x36, 0x1a, 0xa5, 0xb3, 0x9a, 0xe1, 0xd8, 0x34,
-  0x5a, 0xa2, 0x99, 0x93, 0x12, 0xe5, 0x20, 0x47, 0xd8, 0x46, 0x5f, 0xff,
-  0xb6, 0x69, 0xfe, 0xb6, 0xe5, 0xcb, 0x00, 0xfe, 0xc5, 0x76, 0x17, 0xea,
-  0x95, 0x1b, 0xd0, 0xa8, 0x18, 0x84, 0x53, 0xbb, 0x1f, 0xc2, 0x7c, 0xfb,
-  0x0d, 0xc6, 0x62, 0x44, 0x58, 0xec, 0x68, 0x9e, 0x06, 0x22, 0x46, 0xa3,
-  0x5a, 0xb5, 0x17, 0x36, 0xb4, 0xaa, 0xe8, 0xaf, 0x1f, 0x8e, 0x0f, 0x63,
-  0x8e, 0xf1, 0x93, 0xd8, 0x5d, 0x87, 0x13, 0x6d, 0x52, 0xee, 0xbc, 0x09,
-  0x85, 0xeb, 0x8d, 0x9c, 0xd4, 0xf8, 0xf9, 0x8c, 0x41, 0xfd, 0xb0, 0x21,
-  0x0e, 0x63, 0xee, 0xbb, 0x14, 0x6d, 0x0f, 0x87, 0x19, 0x5d, 0x8d, 0x17,
-  0xe1, 0xe1, 0x1b, 0xf2, 0x34, 0xb4, 0x9f, 0xdb, 0x0c, 0x3d, 0xb7, 0xe9,
-  0x3f, 0xb7, 0x15, 0x7a, 0x6e, 0xcb, 0x7f, 0x6e, 0x3b, 0xf4, 0x9c, 0xb3,
-  0x01, 0xfe, 0xf1, 0xd2, 0x5b, 0x52, 0x18, 0x0d, 0x3f, 0xb5, 0xe8, 0x00,
-  0x78, 0x8f, 0x6f, 0x5b, 0xef, 0xe8, 0xc2, 0x93, 0xd0, 0xf0, 0x0a, 0x1b,
-  0x2e, 0x32, 0x7e, 0xd6, 0xbe, 0x33, 0x8c, 0xeb, 0x72, 0xdd, 0x1e, 0x38,
-  0x5f, 0x73, 0x80, 0x05, 0x5a, 0x3e, 0xe3, 0xe5, 0xbc, 0xc4, 0x72, 0x8f,
-  0x3b, 0x0d, 0x80, 0x03, 0xa6, 0xf6, 0xa4, 0xda, 0xdc, 0xd6, 0x38, 0x51,
-  0xb4, 0x2f, 0x7f, 0x99, 0x63, 0x63, 0x6c, 0x0c, 0x22, 0xfb, 0xaa, 0xf6,
-  0xc9, 0x10, 0xcc, 0x4e, 0xdb, 0x04, 0x4c, 0xda, 0x0d, 0xd3, 0x6b, 0x11,
-  0xbd, 0x57, 0xd9, 0x16, 0x60, 0x7e, 0x3c, 0xcf, 0x43, 0xd6, 0x31, 0xf5,
-  0xab, 0xf0, 0x1e, 0xf2, 0x1a, 0x91, 0xe2, 0xfc, 0x9a, 0xbf, 0x8e, 0xf7,
-  0xaf, 0x4e, 0x4d, 0xc6, 0xe6, 0xd6, 0xe4, 0x9a, 0xdf, 0xdf, 0x1a, 0x0e,
-  0xac, 0x03, 0xc4, 0x85, 0xd3, 0xa8, 0x97, 0xb4, 0x89, 0x04, 0x1e, 0x81,
-  0x6f, 0xcb, 0xe0, 0x8d, 0xa9, 0x1a, 0x1b, 0xb9, 0x08, 0xaa, 0x6a, 0x1f,
-  0xde, 0x9f, 0x78, 0x36, 0x9b, 0xd9, 0x7c, 0xa4, 0xfd, 0xa0, 0x4a, 0xd7,
-  0xe1, 0x76, 0xa9, 0xd6, 0x29, 0xfc, 0x2b, 0x5f, 0xbd, 0xae, 0xa7, 0x93,
-  0x07, 0xbc, 0x8e, 0xd2, 0x1a, 0x9b, 0x1b, 0xa8, 0x8e, 0x39, 0xd3, 0xcc,
-  0x02, 0x9c, 0x92, 0x24, 0xe2, 0x1d, 0xd5, 0xe2, 0xc4, 0xd6, 0x70, 0xe8,
-  0xed, 0xc0, 0xdc, 0x1f, 0x3c, 0x43, 0x9b, 0xa8, 0x09, 0x91, 0x06, 0x65,
-  0x20, 0xd7, 0x13, 0x6a, 0x27, 0xcf, 0xa5, 0x15, 0xb6, 0xd1, 0x13, 0xbe,
-  0x20, 0xc1, 0xd9, 0x00, 0x40, 0x25, 0x75, 0x74, 0x02, 0x23, 0xa7, 0x12,
-  0xa8, 0xd3, 0x10, 0xb9, 0x2a, 0x37, 0xa1, 0x28, 0xb5, 0xe1, 0xc5, 0xa0,
-  0x86, 0xfb, 0xbb, 0x9b, 0x31, 0x0d, 0xc6, 0x86, 0xe5, 0x7c, 0x3c, 0x38,
-  0x1a, 0x7e, 0xdc, 0xdc, 0x7a, 0xf1, 0xf1, 0xeb, 0xc3, 0xb7, 0x1f, 0x87,
-  0x6f, 0x0e, 0xb6, 0x76, 0x97, 0xad, 0x45, 0xd4, 0xc1, 0x24, 0xb6, 0x3a,
-  0x2f, 0xa9, 0x9b, 0xe4, 0x02, 0x37, 0x2b, 0xcc, 0x01, 0xd3, 0xe9, 0x08,
-  0x71, 0x68, 0x1f, 0xff, 0xfb, 0x85, 0x0f, 0x2c, 0x1b, 0x11, 0xa9, 0xbd,
-  0x52, 0x4c, 0xb4, 0xfd, 0x11, 0x09, 0x8b, 0xf9, 0x84, 0xe9, 0xd2, 0xca,
-  0x48, 0xec, 0x48, 0x5d, 0x24, 0xf6, 0xe9, 0x0d, 0xdf, 0x9f, 0xf5, 0xfa,
-  0x92, 0x04, 0x05, 0x1f, 0x88, 0xe1, 0xdf, 0x11, 0x39, 0xc8, 0xa2, 0x68,
-  0x77, 0x63, 0x77, 0x47, 0xca, 0x15, 0x79, 0x8e, 0x8c, 0x4e, 0xe8, 0xa7,
-  0x8f, 0xd1, 0x2f, 0x4d, 0xb1, 0x28, 0xb1, 0x95, 0x03, 0xf8, 0x88, 0xee,
-  0xea, 0xc6, 0x0a, 0x39, 0x65, 0xb7, 0xcf, 0xe5, 0x2c, 0xdd, 0x96, 0x8f,
-  0x69, 0xee, 0x0a, 0xbc, 0x4d, 0xd3, 0x6c, 0x3a, 0x7b, 0x31, 0x8f, 0x57,
-  0x92, 0x2f, 0x25, 0xfc, 0x2f, 0x32, 0x2f, 0x08, 0xe1, 0xa0, 0x42, 0xd0,
-  0x3d, 0x33, 0x8c, 0x57, 0x6a, 0x16, 0x2d, 0x04, 0xeb, 0xab, 0xeb, 0x57,
-  0x03, 0x71, 0x1d, 0x67, 0x0a, 0x08, 0xf6, 0x75, 0x3e, 0xc7, 0x3d, 0xa1,
-  0x71, 0x74, 0x18, 0x19, 0xe5, 0x09, 0x5c, 0x68, 0xe8, 0x83, 0xc3, 0x2c,
-  0xc7, 0x70, 0xb2, 0x37, 0x2d, 0x96, 0x32, 0x3b, 0xb2, 0xcf, 0x66, 0x49,
-  0x88, 0xa9, 0xcc, 0x33, 0xc8, 0x00, 0xe4, 0xb5, 0xe0, 0x7e, 0x1e, 0x29,
-  0x71, 0x5b, 0x3b, 0xc7, 0xd3, 0x74, 0x17, 0xed, 0x42, 0xd9, 0x52, 0x88,
-  0x7f, 0x67, 0x39, 0x03, 0xcd, 0xb8, 0x93, 0xdb, 0xc9, 0x72, 0x12, 0x4d,
-  0x1e, 0x83, 0x27, 0xe9, 0xe2, 0xa0, 0x5c, 0xa0, 0x58, 0x48, 0x6f, 0x80,
-  0xe5, 0xa9, 0x6c, 0x16, 0x3c, 0xbb, 0x1d, 0x3b, 0x73, 0xa1, 0xff, 0xfc,
-  0x1a, 0x44, 0xa7, 0x81, 0x82, 0x88, 0x05, 0x74, 0x86, 0xb5, 0xb6, 0x3a,
-  0x7a, 0x14, 0xc1, 0x85, 0xde, 0x4f, 0x24, 0xb7, 0x38, 0x2a, 0xda, 0xa7,
-  0x93, 0x74, 0x0e, 0xef, 0xd0, 0xfd, 0xf7, 0xdd, 0x04, 0x1d, 0xac, 0xb5,
-  0x11, 0xa8, 0x50, 0x85, 0x95, 0x92, 0xd7, 0x58, 0xe5, 0xde, 0xc4, 0x88,
-  0x71, 0xb4, 0x57, 0xd2, 0x56, 0xf5, 0xaa, 0x7c, 0x10, 0x1b, 0x86, 0xa0,
-  0x61, 0xa4, 0x17, 0x3d, 0x0e, 0x22, 0xde, 0xbb, 0xcf, 0xfc, 0xbe, 0x1c,
-  0x18, 0xe3, 0x94, 0x4f, 0x90, 0xbf, 0x80, 0x3f, 0xdf, 0x88, 0xcf, 0xa3,
-  0x86, 0x66, 0xac, 0x50, 0x02, 0xbb, 0x2f, 0x22, 0x46, 0xa3, 0x68, 0x0d,
-  0xf7, 0x11, 0xc5, 0xde, 0x47, 0xd9, 0x80, 0x0d, 0x4d, 0x47, 0x32, 0x49,
-  0xe1, 0x38, 0x0e, 0x68, 0xfe, 0x98, 0xf2, 0x50, 0x21, 0xb6, 0xe1, 0x43,
-  0xb8, 0xb6, 0x38, 0x0e, 0x08, 0x48, 0x4c, 0x40, 0xd7, 0x10, 0xaa, 0xaa,
-  0x98, 0xad, 0x16, 0x92, 0x68, 0xf7, 0x24, 0xc6, 0x9e, 0x12, 0xaa, 0xf9,
-  0x2d, 0x63, 0x9e, 0xe0, 0xaa, 0xe7, 0x0d, 0x5b, 0x7e, 0xf7, 0x59, 0x27,
-  0x6e, 0x75, 0x87, 0xf5, 0x59, 0x61, 0xf3, 0x89, 0xac, 0xb0, 0xf9, 0xdf,
-  0x8a, 0x15, 0x36, 0xff, 0xcf, 0x61, 0x85, 0xcd, 0xdf, 0x8c, 0x15, 0xb6,
-  0x9e, 0xc8, 0x0a, 0x5b, 0xff, 0xad, 0x58, 0x61, 0xeb, 0xff, 0x1c, 0x56,
-  0xd8, 0xfa, 0xcd, 0x58, 0x61, 0xfb, 0x89, 0xac, 0xb0, 0xfd, 0xeb, 0xb3,
-  0xc2, 0xbf, 0x9b, 0x0b, 0xe8, 0x9d, 0x49, 0xbf, 0x55, 0x0b, 0x2f, 0x33,
-  0x19, 0xcf, 0x36, 0x17, 0x18, 0x3d, 0xe0, 0xf8, 0x7b, 0xb1, 0x17, 0xab,
-  0xa7, 0x6d, 0xf0, 0xf6, 0x93, 0x36, 0x78, 0x6b, 0x51, 0xbb, 0x26, 0xeb,
-  0x40, 0x09, 0x7a, 0x08, 0x03, 0x30, 0x71, 0x09, 0xe6, 0x58, 0xa3, 0x41,
-  0xd9, 0xdc, 0xea, 0x3b, 0xde, 0x61, 0xf5, 0x3e, 0x84, 0xb6, 0x58, 0x7c,
-  0xd7, 0xfe, 0x26, 0x4b, 0x96, 0x30, 0x77, 0xea, 0x60, 0xf3, 0xcd, 0x78,
-  0x11, 0xc9, 0x27, 0xe6, 0x79, 0x08, 0xaf, 0xb3, 0x2b, 0x6c, 0x9b, 0xf5,
-  0x04, 0x22, 0xfe, 0x5a, 0x99, 0x88, 0x4e, 0xe2, 0xdf, 0xef, 0x93, 0x89,
-  0x18, 0xce, 0x34, 0x6c, 0x39, 0xc1, 0xdc, 0x93, 0x5c, 0xc6, 0x29, 0x48,
-  0xb5, 0xb1, 0x5f, 0x23, 0x4d, 0x5c, 0xee, 0xc6, 0x96, 0xd0, 0xcd, 0x4c,
-  0x7d, 0x6d, 0xc7, 0xdc, 0x4f, 0x05, 0x18, 0x3f, 0x3e, 0x92, 0x77, 0x6d,
-  0x6a, 0x11, 0x1f, 0x11, 0xbf, 0x17, 0x89, 0x00, 0xad, 0x99, 0xd6, 0x1b,
-  0x8a, 0x14, 0x2e, 0x95, 0x71, 0x7d, 0xa9, 0x5b, 0xd3, 0x8f, 0xb8, 0xf0,
-  0xd3, 0xd4, 0x8c, 0x28, 0xd8, 0xf6, 0x8f, 0xd2, 0x5c, 0x97, 0xb7, 0x16,
-  0xed, 0x9a, 0x97, 0x6e, 0x1a, 0xab, 0x24, 0x68, 0xd2, 0x30, 0x19, 0xa5,
-  0x71, 0x52, 0x8d, 0xb2, 0x2c, 0x1c, 0x1f, 0xd2, 0xfc, 0xbd, 0x84, 0xca,
-  0x03, 0x22, 0x7a, 0x3e, 0xc2, 0xc4, 0x1e, 0xa4, 0x0a, 0x0a, 0x01, 0xbc,
-  0x58, 0xa8, 0x1b, 0x0b, 0x12, 0x01, 0xc4, 0xd5, 0x55, 0xa1, 0x01, 0xef,
-  0x7e, 0xa0, 0x21, 0x23, 0x4a, 0x24, 0xfa, 0x7d, 0xca, 0x2d, 0x4d, 0xb1,
-  0x3c, 0x32, 0xcb, 0x31, 0xe3, 0x5e, 0x0a, 0x32, 0x25, 0x5f, 0x82, 0xa3,
-  0x37, 0xad, 0x56, 0x9a, 0x1f, 0x3c, 0x37, 0x57, 0x2f, 0xee, 0x61, 0xa4,
-  0x0c, 0x7f, 0x4f, 0xb6, 0x15, 0xf6, 0x1a, 0x4d, 0x04, 0x95, 0x45, 0x5e,
-  0xd6, 0x9e, 0x22, 0x8b, 0x72, 0x40, 0xb1, 0x28, 0x3f, 0x9b, 0x66, 0x93,
-  0x84, 0x32, 0x52, 0x4d, 0xc2, 0x15, 0x3a, 0x30, 0x40, 0x32, 0x48, 0x9b,
-  0x50, 0x86, 0x7a, 0x49, 0xef, 0x18, 0x94, 0x90, 0x56, 0x9b, 0xfb, 0xf5,
-  0x12, 0xd7, 0x0a, 0xd9, 0x77, 0x30, 0x3c, 0x3c, 0x3e, 0x6e, 0x00, 0x18,
-  0x22, 0xd5, 0xb8, 0x95, 0x3b, 0x81, 0x98, 0x57, 0xd8, 0x40, 0x3a, 0x2d,
-  0x6d, 0xb7, 0xcd, 0x40, 0x28, 0x72, 0x0a, 0x52, 0x81, 0x12, 0x13, 0x40,
-  0x3e, 0x65, 0xdc, 0x53, 0x88, 0x7a, 0xbf, 0x92, 0x09, 0x99, 0xc3, 0x34,
-  0x33, 0xec, 0x7c, 0x74, 0x3d, 0x9f, 0x26, 0x79, 0xf5, 0xff, 0xbb, 0xf4,
-  0x56, 0x97, 0x77, 0x27, 0xc5, 0xd5, 0xd2, 0x09, 0xae, 0x94, 0x6a, 0xe7,
-  0xe4, 0xda, 0x71, 0x29, 0x8b, 0x8c, 0x3b, 0xe8, 0x44, 0xd4, 0xf1, 0x5d,
-  0x60, 0x74, 0x26, 0xfc, 0xf4, 0x4a, 0xef, 0x98, 0x21, 0x01, 0xda, 0xb9,
-  0x42, 0x25, 0xa9, 0x62, 0x15, 0x85, 0x34, 0x39, 0x80, 0x5d, 0xd5, 0x30,
-  0x75, 0xdc, 0x14, 0xea, 0x13, 0xc8, 0x83, 0xc3, 0x8e, 0xe8, 0x2c, 0xa9,
-  0xf0, 0xcb, 0xe4, 0x9e, 0x78, 0xfd, 0x4e, 0x29, 0xb7, 0xe7, 0xdf, 0xbf,
-  0x2b, 0x81, 0x25, 0x48, 0x6b, 0x23, 0xe5, 0x30, 0x2c, 0xa9, 0x16, 0x3c,
-  0x72, 0x07, 0xfe, 0xbb, 0x8a, 0x38, 0x42, 0x68, 0x33, 0x42, 0xee, 0x11,
-  0x52, 0x8e, 0xb4, 0xf6, 0xde, 0x1f, 0x51, 0x38, 0x7a, 0xce, 0xa3, 0x47,
-  0x89, 0x4a, 0xe0, 0xf5, 0xff, 0x7f, 0xca, 0x93, 0x65, 0x25, 0x89, 0x8d,
-  0xe4, 0x39, 0x4c, 0x2c, 0x2a, 0x8b, 0xe1, 0xf1, 0x41, 0x18, 0x9a, 0xaf,
-  0x2d, 0x49, 0xfc, 0x84, 0x7b, 0x77, 0x54, 0x97, 0x9b, 0xe7, 0x79, 0x76,
-  0x17, 0x4b, 0xbb, 0x82, 0xfd, 0x59, 0x52, 0x5f, 0x7f, 0x11, 0xd6, 0x80,
-  0x0e, 0xd9, 0xaa, 0x88, 0x14, 0x20, 0x8a, 0xc8, 0xf9, 0x01, 0x5e, 0x86,
-  0x2d, 0x9b, 0x62, 0xdd, 0x04, 0x8f, 0xd1, 0x37, 0x45, 0x13, 0xb0, 0x21,
-  0xa4, 0x05, 0x05, 0xea, 0x2e, 0xf2, 0xb4, 0x46, 0x0f, 0xe0, 0xb2, 0x54,
-  0x75, 0xa7, 0xca, 0x7f, 0xc4, 0x38, 0xe1, 0x25, 0x4f, 0x78, 0x72, 0x51,
-  0x21, 0x29, 0x6a, 0x77, 0xb8, 0x66, 0x16, 0x52, 0xb3, 0x5c, 0xf4, 0x9c,
-  0x1a, 0x4d, 0xcd, 0x10, 0x0f, 0x27, 0xa6, 0xdc, 0x84, 0xe0, 0xc9, 0x67,
-  0x09, 0xef, 0x34, 0x30, 0x6f, 0xe1, 0xbe, 0x61, 0x8a, 0xe4, 0x44, 0x12,
-  0x93, 0x0a, 0xa9, 0xa3, 0x25, 0x55, 0xff, 0xc3, 0xfb, 0x93, 0x70, 0x75,
-  0x4a, 0x29, 0x41, 0x0e, 0x7e, 0x89, 0x6e, 0xff, 0xac, 0x9d, 0x43, 0x02,
-  0x2f, 0xbb, 0x3d, 0xd4, 0x92, 0x19, 0xde, 0x00, 0x01, 0x2d, 0xdb, 0xf9,
-  0x3a, 0x77, 0xbf, 0x79, 0x77, 0x7a, 0x7e, 0xc4, 0xa2, 0x1f, 0x6d, 0x70,
-  0x0a, 0x73, 0x32, 0xfe, 0x05, 0x2a, 0x02, 0xd4, 0x46, 0x7e, 0x5d, 0xd3,
-  0x84, 0x27, 0x3e, 0x70, 0x0b, 0x17, 0xe2, 0x14, 0x9c, 0xa6, 0x88, 0xc0,
-  0xaf, 0x13, 0x42, 0x35, 0xb9, 0xa1, 0xb5, 0x1d, 0xb2, 0xf7, 0x81, 0xb5,
-  0xfd, 0xe6, 0x22, 0x58, 0xe6, 0x78, 0x06, 0x8b, 0x93, 0xf9, 0x78, 0x9d,
-  0xe5, 0x9f, 0xcc, 0xbc, 0x4a, 0x3e, 0x8c, 0xf6, 0x6b, 0x5a, 0xaa, 0xe3,
-  0x90, 0xef, 0xd2, 0x57, 0x8a, 0x55, 0x26, 0xcd, 0xab, 0x54, 0xac, 0x27,
-  0xee, 0x08, 0x8b, 0xd0, 0x7a, 0x93, 0xec, 0x53, 0x3a, 0xb9, 0x17, 0xa8,
-  0x16, 0x8a, 0xf7, 0xd0, 0xc6, 0x62, 0x2d, 0x6a, 0xa9, 0xb8, 0xa4, 0x5e,
-  0xc7, 0xdb, 0x6c, 0x32, 0x70, 0x01, 0x81, 0x24, 0x8c, 0xaa, 0x40, 0x6d,
-  0xab, 0x60, 0xed, 0xb3, 0xad, 0xc6, 0x02, 0xe4, 0xec, 0xc3, 0x39, 0x1a,
-  0x09, 0x53, 0x6a, 0x20, 0x0a, 0x1f, 0x6e, 0xc3, 0x24, 0x74, 0x48, 0x14,
-  0x05, 0x0b, 0xb5, 0x84, 0x42, 0x71, 0xbd, 0x9a, 0x68, 0x4b, 0x50, 0xcc,
-  0x6a, 0x5a, 0x53, 0x3b, 0x13, 0xc4, 0x2a, 0xf0, 0x82, 0x73, 0xd2, 0xbc,
-  0x3c, 0x24, 0x49, 0x64, 0x93, 0xbb, 0x20, 0x3a, 0x98, 0x50, 0x7a, 0x58,
-  0x9d, 0x62, 0x78, 0xaf, 0xfd, 0x9d, 0x81, 0xfb, 0x1d, 0xc6, 0x81, 0x5a,
-  0x0b, 0xf4, 0x5d, 0x6f, 0x48, 0x62, 0xe7, 0xdb, 0x38, 0x4f, 0xc5, 0xb5,
-  0x95, 0x99, 0x51, 0x77, 0x1a, 0xac, 0x81, 0xa6, 0x94, 0x57, 0x5f, 0x08,
-  0x10, 0x98, 0xb4, 0xf5, 0x41, 0x51, 0x6b, 0x56, 0xba, 0xe9, 0xb4, 0x4a,
-  0x57, 0xae, 0x11, 0x6e, 0xc0, 0x2a, 0xab, 0xc5, 0xb4, 0x3b, 0x6e, 0x99,
-  0x19, 0x7b, 0xec, 0x9d, 0x8c, 0x03, 0x24, 0xfd, 0x5b, 0x0b, 0x30, 0x10,
-  0xa5, 0xba, 0x7f, 0x9c, 0xf5, 0x4e, 0xc1, 0xc3, 0x44, 0x2d, 0xc3, 0x05,
-  0x9b, 0xc1, 0x6b, 0xd9, 0x4e, 0x3b, 0x4a, 0x4a, 0x13, 0x50, 0xf4, 0x08,
-  0xdf, 0xf0, 0x07, 0xfb, 0x13, 0x8d, 0x32, 0x4b, 0xb2, 0xd2, 0xd0, 0x0a,
-  0xd3, 0x16, 0xf0, 0x30, 0xb4, 0xf9, 0x4a, 0x38, 0x8f, 0xf2, 0xef, 0x0a,
-  0x86, 0x46, 0x1e, 0xf0, 0x51, 0x20, 0x41, 0x65, 0xc0, 0x52, 0x7a, 0x78,
-  0x3b, 0x5e, 0xc0, 0xc2, 0x7b, 0x64, 0x3e, 0xf2, 0xf4, 0xe0, 0xcb, 0x9e,
-  0xf2, 0xe8, 0xce, 0x23, 0x4a, 0xca, 0x2b, 0xf2, 0xf5, 0xf5, 0xd9, 0x75,
-  0xc0, 0x10, 0xf4, 0xe4, 0x49, 0xd0, 0x00, 0xbc, 0x7c, 0x7f, 0x3a, 0x9f,
-  0xd4, 0xd9, 0xcc, 0x3b, 0x44, 0x38, 0x4a, 0xc5, 0x8e, 0x27, 0x61, 0x0c,
-  0x5c, 0x58, 0x23, 0x24, 0x4f, 0x58, 0x86, 0xf8, 0x53, 0x9d, 0x20, 0x57,
-  0x5e, 0x45, 0x5d, 0xf5, 0xec, 0x2c, 0x5f, 0xf1, 0x4d, 0x94, 0x79, 0xe1,
-  0xa6, 0x9f, 0x3c, 0x29, 0x03, 0x98, 0x9f, 0x73, 0x5d, 0x3e, 0x33, 0xc5,
-  0x9e, 0x73, 0x60, 0x39, 0x7f, 0x2e, 0xe9, 0x46, 0xb7, 0x65, 0xcd, 0x01,
-  0x43, 0xd0, 0xbb, 0xdb, 0x5b, 0x5b, 0x11, 0xeb, 0x4c, 0x8c, 0x62, 0xc6,
-  0x29, 0x9c, 0x88, 0x54, 0x9c, 0x26, 0x54, 0x34, 0xcd, 0x57, 0x12, 0x76,
-  0xc7, 0x4b, 0x38, 0x29, 0x01, 0xe8, 0xdc, 0x51, 0x2c, 0xc6, 0x8a, 0x3d,
-  0x76, 0xc9, 0x83, 0x93, 0x5c, 0x8c, 0xef, 0xed, 0xc0, 0xc0, 0x31, 0x25,
-  0xca, 0x29, 0x90, 0x2e, 0x52, 0xdf, 0xce, 0xf1, 0xc9, 0x2a, 0x0a, 0x02,
-  0xeb, 0x4c, 0x24, 0xd9, 0x18, 0x2f, 0x0c, 0x6a, 0xa5, 0x9a, 0x23, 0x1b,
-  0xe6, 0xf4, 0x57, 0x6c, 0x08, 0x36, 0x2f, 0xa9, 0xe9, 0x1f, 0xd6, 0x76,
-  0xe7, 0xf7, 0xd1, 0x6d, 0x72, 0xbf, 0x6c, 0x56, 0xdf, 0x79, 0x77, 0x22,
-  0x5d, 0xc7, 0xf3, 0xbd, 0x6c, 0x7a, 0xf5, 0xfd, 0x66, 0xbc, 0xb9, 0xb1,
-  0xb1, 0xf1, 0xe3, 0x60, 0x86, 0xfc, 0xc6, 0x59, 0xbd, 0xf0, 0xdf, 0x41,
-  0x23, 0xa9, 0xbe, 0xe3, 0x76, 0x76, 0xd8, 0xaf, 0xf7, 0x0f, 0xfc, 0x63,
-  0xb3, 0x8f, 0xff, 0xdd, 0xfa, 0x67, 0x6f, 0xb9, 0x1b, 0xfa, 0x6b, 0x3c,
-  0x54, 0x98, 0x89, 0x4a, 0x7a, 0x8b, 0xa9, 0x3a, 0x6b, 0x28, 0x2d, 0xf0,
-  0xc5, 0x7d, 0xf8, 0x8f, 0x17, 0x1e, 0x35, 0x48, 0x9c, 0xc8, 0x97, 0xb4,
-  0xc5, 0xf5, 0xe8, 0xda, 0x2b, 0xf0, 0xa2, 0xbb, 0x00, 0x1b, 0x8f, 0x23,
-  0xa6, 0x81, 0xe9, 0x9c, 0x0e, 0x07, 0xc3, 0x6b, 0xf5, 0x2a, 0x5a, 0xac,
-  0x0c, 0x0b, 0x83, 0xae, 0x56, 0x6b, 0x5c, 0x70, 0xcf, 0xb5, 0x03, 0x2c,
-  0x60, 0x03, 0xda, 0xa6, 0xa3, 0x97, 0xe3, 0x54, 0xb0, 0xaa, 0x8c, 0x11,
-  0x37, 0xf0, 0x40, 0x8d, 0xae, 0xd3, 0xa9, 0x08, 0xdf, 0x55, 0x2d, 0xd6,
-  0xea, 0x21, 0x8d, 0x80, 0x44, 0x3d, 0xff, 0x7e, 0xec, 0x5d, 0xca, 0x6f,
-  0x60, 0x31, 0x6b, 0x02, 0xe0, 0x69, 0xae, 0x4c, 0xca, 0x70, 0x4d, 0xa2,
-  0xab, 0x39, 0xba, 0x8b, 0x2e, 0x12, 0xb9, 0x9b, 0x14, 0x4b, 0x96, 0x32,
-  0x2f, 0x42, 0xc0, 0xc3, 0x20, 0x60, 0xd3, 0x92, 0xae, 0x44, 0x38, 0xae,
-  0x17, 0xb1, 0xe8, 0x70, 0x72, 0x43, 0x53, 0x5a, 0x31, 0x1c, 0xff, 0x57,
-  0xc7, 0x87, 0x20, 0xe1, 0x5e, 0x9f, 0x9f, 0xf5, 0x09, 0x29, 0xa3, 0x4f,
-  0xc0, 0x0f, 0x6d, 0xc1, 0x43, 0xf0, 0x19, 0x88, 0x57, 0x85, 0x27, 0x55,
-  0xd2, 0x31, 0x12, 0x5b, 0x9f, 0x62, 0x41, 0xff, 0x14, 0x20, 0x90, 0xda,
-  0x59, 0xde, 0x66, 0x78, 0x5b, 0x04, 0xca, 0x32, 0x1b, 0x6a, 0xb7, 0x81,
-  0x60, 0xdd, 0xd9, 0x1d, 0x6c, 0xf0, 0x1a, 0x91, 0x84, 0x92, 0x3a, 0x2d,
-  0x50, 0x47, 0xe4, 0x44, 0xd6, 0x54, 0xa2, 0x24, 0x9c, 0x85, 0x68, 0xa6,
-  0xd3, 0x8f, 0xb8, 0x13, 0x39, 0xfd, 0x3b, 0xd6, 0xdf, 0x3a, 0x25, 0x4c,
-  0x0b, 0x6d, 0x15, 0xb7, 0x45, 0x27, 0x9e, 0xcb, 0x56, 0x6f, 0x67, 0xea,
-  0xed, 0x1d, 0x29, 0x1e, 0xa1, 0xe0, 0xdd, 0x87, 0x9a, 0x73, 0x13, 0x4f,
-  0x20, 0x53, 0x48, 0x65, 0x71, 0xdf, 0x74, 0xa9, 0x8f, 0x0b, 0xe4, 0x77,
-  0xb9, 0xfe, 0x04, 0x75, 0x24, 0x3e, 0x75, 0xb2, 0x59, 0x43, 0xca, 0x8e,
-  0x57, 0xf9, 0xd0, 0x06, 0x8b, 0x3b, 0xcd, 0x15, 0x39, 0xac, 0x4f, 0x9a,
-  0x64, 0x36, 0x9a, 0xa3, 0x87, 0x0a, 0x99, 0x17, 0x81, 0x70, 0xa5, 0x37,
-  0x28, 0x86, 0xfb, 0x91, 0xb4, 0xb4, 0x59, 0x01, 0x88, 0x58, 0x44, 0x38,
-  0x61, 0xa3, 0x4c, 0x14, 0x78, 0xfb, 0x9e, 0x85, 0xf4, 0x40, 0x35, 0x0a,
-  0xaf, 0x82, 0x7b, 0xd0, 0x0f, 0xa6, 0x83, 0xe8, 0xab, 0xf4, 0x36, 0x29,
-  0xd3, 0xff, 0x58, 0x56, 0xd3, 0x87, 0xff, 0x2e, 0x25, 0x33, 0x8c, 0xe5,
-  0xc7, 0x42, 0xa3, 0x51, 0xdd, 0x63, 0xc4, 0xc6, 0x57, 0xd2, 0x32, 0x96,
-  0x8d, 0xa0, 0x10, 0xd8, 0x93, 0x20, 0xc0, 0x48, 0xdd, 0x1f, 0xfb, 0xdd,
-  0x54, 0xa7, 0x1f, 0x60, 0x48, 0x87, 0x0f, 0x03, 0xed, 0x21, 0x52, 0x4a,
-  0xb3, 0x4f, 0xd2, 0x3c, 0xd0, 0x21, 0x7e, 0x94, 0x3a, 0xd8, 0x7b, 0x22,
-  0x91, 0xe8, 0x06, 0x66, 0x2f, 0x0d, 0x67, 0x0e, 0xf5, 0xfe, 0x8c, 0x09,
-  0x17, 0x9f, 0x1f, 0xf4, 0x5a, 0x5e, 0x22, 0x0f, 0x09, 0x64, 0x8e, 0x64,
-  0xa6, 0x3b, 0xaf, 0x69, 0xa0, 0xcb, 0x4d, 0x87, 0x37, 0x2b, 0x2e, 0x9f,
-  0x34, 0x2b, 0x64, 0xe7, 0xdb, 0x2c, 0xdf, 0xde, 0x92, 0x6d, 0x58, 0x36,
-  0xa4, 0xf2, 0x95, 0x0f, 0x82, 0xb4, 0xfe, 0xfe, 0xe8, 0xe0, 0xd5, 0xdb,
-  0xa3, 0x07, 0xc0, 0x78, 0xc4, 0xd4, 0xc4, 0x69, 0x7a, 0x96, 0xe6, 0x81,
-  0x36, 0xec, 0x8d, 0x93, 0x2b, 0x5c, 0x41, 0x30, 0xbf, 0x45, 0x8c, 0x4d,
-  0x95, 0xe3, 0xa4, 0x2c, 0xe0, 0x2b, 0x07, 0xf4, 0x0a, 0xa7, 0x20, 0x99,
-  0x0a, 0x1d, 0x17, 0x9c, 0x58, 0x43, 0x62, 0xad, 0xb3, 0x5b, 0xe8, 0x9d,
-  0x7a, 0x31, 0x49, 0xf2, 0x4f, 0xa6, 0xb2, 0x96, 0x07, 0x02, 0x59, 0x30,
-  0x2f, 0x19, 0x60, 0xd2, 0xfe, 0x50, 0xf6, 0x85, 0x95, 0x9e, 0xd6, 0x70,
-  0x7f, 0x9f, 0xa3, 0xc9, 0x01, 0x52, 0xa0, 0x24, 0xc8, 0x34, 0xda, 0x2f,
-  0xa9, 0xfe, 0x75, 0xb9, 0xc1, 0x80, 0x9a, 0xd2, 0xe1, 0x7d, 0xa3, 0x17,
-  0x58, 0x5a, 0xfa, 0x98, 0xc4, 0x9c, 0xda, 0xc8, 0x58, 0x71, 0x5a, 0x47,
-  0xdc, 0x71, 0x98, 0x25, 0xdf, 0x12, 0xef, 0x14, 0x2a, 0xa0, 0x9b, 0xce,
-  0xea, 0x7b, 0xa3, 0xe6, 0x91, 0xb3, 0xb9, 0x4d, 0xe1, 0xd5, 0x5e, 0x6f,
-  0xad, 0x6f, 0x7a, 0xd2, 0x7b, 0xa1, 0x03, 0x44, 0x8f, 0xd1, 0xce, 0x83,
-  0xb2, 0x08, 0xec, 0xc1, 0x9d, 0xa2, 0x91, 0xc0, 0x75, 0x1e, 0x6c, 0x67,
-  0x51, 0xe4, 0xc3, 0xe4, 0x7b, 0xce, 0xa8, 0x3f, 0x8d, 0x27, 0x67, 0x89,
-  0xbe, 0x91, 0x56, 0xe8, 0x1a, 0xa8, 0xee, 0x94, 0xaa, 0x2e, 0x5d, 0x35,
-  0xb2, 0x9a, 0xa1, 0x6b, 0x64, 0xb5, 0x17, 0xf5, 0xd6, 0x7e, 0x67, 0x2f,
-  0xcd, 0x41, 0xd4, 0x63, 0xb6, 0xda, 0xd8, 0x78, 0xbe, 0xa4, 0x8a, 0xe2,
-  0xec, 0x69, 0xa3, 0xc5, 0x2c, 0xff, 0xc8, 0x61, 0x7a, 0xd3, 0xa5, 0x1a,
-  0xd4, 0x15, 0xf8, 0xef, 0x9e, 0xe6, 0x19, 0x75, 0x29, 0x2e, 0x46, 0x6f,
-  0x6c, 0x74, 0x81, 0xa4, 0x34, 0x27, 0x31, 0xfd, 0x08, 0xa7, 0x99, 0x8d,
-  0x24, 0x9b, 0xe8, 0x15, 0xca, 0xcd, 0x1c, 0x44, 0xa7, 0x06, 0xb9, 0x3d,
-  0xce, 0x59, 0x3e, 0xd6, 0xe5, 0x48, 0xbb, 0x6b, 0xe2, 0xdf, 0xa5, 0x7e,
-  0x2b, 0x99, 0x04, 0x35, 0x18, 0xea, 0x77, 0x5a, 0x65, 0xd4, 0x96, 0xdd,
-  0xa8, 0x40, 0x4e, 0x8b, 0x69, 0x9c, 0xa2, 0xeb, 0x7d, 0x00, 0x12, 0x00,
-  0x4f, 0x32, 0x36, 0xa6, 0x57, 0x27, 0xdc, 0x4e, 0xaf, 0x32, 0x97, 0x6b,
-  0xd7, 0x7a, 0x2b, 0x49, 0x01, 0x9d, 0x00, 0xff, 0xcc, 0x67, 0x91, 0xb5,
-  0xcc, 0x18, 0xe6, 0x1c, 0x78, 0x75, 0x52, 0xe4, 0x7d, 0xaf, 0xc1, 0x0c,
-  0xd5, 0xdb, 0x73, 0x54, 0x84, 0x8a, 0xa0, 0xa6, 0xb3, 0x02, 0x74, 0x86,
-  0x8b, 0x49, 0x6a, 0x42, 0xb4, 0xfc, 0xa6, 0x4a, 0x02, 0xfb, 0x71, 0x3c,
-  0xb1, 0xa1, 0xbb, 0x5a, 0x4b, 0xa3, 0x71, 0xaa, 0x66, 0x33, 0x80, 0xb9,
-  0xfb, 0x0c, 0xcd, 0xe4, 0x2d, 0x09, 0xee, 0x5a, 0x91, 0xba, 0xd2, 0xef,
-  0x26, 0xe3, 0x7c, 0xb7, 0xca, 0xa5, 0xd5, 0x35, 0x6c, 0x8b, 0xeb, 0xba,
-  0x95, 0xa6, 0x41, 0x70, 0x9a, 0x3d, 0xab, 0x93, 0x80, 0x32, 0xb9, 0xec,
-  0x0a, 0x28, 0x4c, 0x3d, 0xbc, 0x31, 0x5d, 0x1d, 0x4b, 0xc4, 0x6c, 0x79,
-  0x29, 0xda, 0x12, 0x69, 0xce, 0x8e, 0xb9, 0x42, 0x5b, 0x4d, 0x45, 0x23,
-  0xbf, 0x6b, 0xe0, 0x98, 0xdb, 0xd4, 0x56, 0x3c, 0xa2, 0x10, 0xe7, 0x1e,
-  0x0b, 0xbf, 0xf8, 0xda, 0xc6, 0xc2, 0x36, 0xb8, 0xb4, 0xb8, 0xe5, 0x38,
-  0x12, 0xa7, 0xb2, 0x94, 0xaf, 0x7c, 0x84, 0x2a, 0x5e, 0xa9, 0xed, 0xfb,
-  0xa1, 0x78, 0xcb, 0x8c, 0x5a, 0x45, 0x8a, 0xc4, 0x4d, 0xc6, 0xf4, 0xe7,
-  0xf4, 0xe0, 0x04, 0x6e, 0x28, 0x5a, 0x12, 0x17, 0xcd, 0x79, 0x0e, 0xef,
-  0x34, 0x61, 0x24, 0x1e, 0xd4, 0x8a, 0x11, 0x7a, 0x32, 0x23, 0xa7, 0x37,
-  0xdf, 0x7b, 0xd7, 0x0a, 0xf8, 0x89, 0xfd, 0xee, 0xb3, 0x14, 0xb1, 0xaf,
-  0x68, 0x15, 0x89, 0x62, 0xbd, 0x78, 0xe9, 0x22, 0xec, 0xa2, 0x28, 0x4d,
-  0x48, 0x0e, 0x19, 0x2c, 0x47, 0x69, 0xc2, 0x82, 0x05, 0xb1, 0x81, 0xf0,
-  0x8b, 0x7c, 0x75, 0x8a, 0x5a, 0xcf, 0x9e, 0x1b, 0x32, 0xf3, 0xc3, 0x26,
-  0x2a, 0xdd, 0xe7, 0xd1, 0x5f, 0xd2, 0x12, 0x54, 0xbf, 0x02, 0xd6, 0xfd,
-  0xcd, 0xae, 0x46, 0xef, 0x15, 0x9d, 0x95, 0xd5, 0x70, 0x39, 0xa5, 0x78,
-  0x8c, 0x78, 0xea, 0x5e, 0xd8, 0x9f, 0x01, 0x0c, 0x90, 0xb6, 0xfa, 0xa6,
-  0xe8, 0xe1, 0xec, 0xe8, 0x6a, 0x71, 0x68, 0x9f, 0xbc, 0x2a, 0xc0, 0x7d,
-  0x18, 0xe9, 0xf3, 0x0b, 0xd9, 0x1a, 0xe8, 0x91, 0x14, 0x39, 0x27, 0xe5,
-  0x8c, 0xa0, 0xd8, 0xa2, 0xe2, 0xa2, 0x4e, 0x68, 0x7d, 0x66, 0xda, 0xe7,
-  0x19, 0x3b, 0x3e, 0x8f, 0xb5, 0x4e, 0xde, 0xaf, 0x44, 0x35, 0xd9, 0xd5,
-  0xb6, 0x9d, 0x7a, 0x2b, 0xb7, 0x14, 0xed, 0xa7, 0xea, 0x1a, 0x2d, 0x10,
-  0xd4, 0x8c, 0xc9, 0x53, 0xf6, 0x59, 0xb8, 0x5f, 0x36, 0xd2, 0xec, 0xdd,
-  0xf9, 0xc9, 0xdb, 0x7e, 0xeb, 0xd4, 0x89, 0x2a, 0x6f, 0x1d, 0x4b, 0x46,
-  0xe2, 0x08, 0x4b, 0xf9, 0xae, 0xfe, 0x32, 0x12, 0x72, 0x98, 0xb4, 0x16,
-  0xc6, 0x2c, 0x47, 0xca, 0xf5, 0x25, 0x8f, 0xbb, 0x14, 0x48, 0x1f, 0x75,
-  0x9e, 0x31, 0x59, 0xfd, 0xac, 0x73, 0xe4, 0xc1, 0x8a, 0xb6, 0x9e, 0xfc,
-  0x8d, 0x70, 0x5f, 0x81, 0xac, 0x11, 0xb8, 0x52, 0xba, 0x06, 0x3e, 0xf3,
-  0x35, 0x8a, 0xca, 0x91, 0xd5, 0xee, 0x7e, 0xa1, 0x74, 0x49, 0x33, 0x3a,
-  0x38, 0xaf, 0x8a, 0xdb, 0x3c, 0x3e, 0x41, 0xb4, 0xbd, 0xe8, 0xa4, 0xb8,
-  0xc2, 0x03, 0xf4, 0x2e, 0xec, 0xfa, 0xfc, 0x70, 0xf6, 0x2e, 0x5a, 0x45,
-  0x0d, 0x07, 0x21, 0x7b, 0xa5, 0xe7, 0x15, 0x3e, 0xba, 0x26, 0x8e, 0x85,
-  0x8a, 0xb5, 0x4e, 0x99, 0x4d, 0x3f, 0x3a, 0xfa, 0xee, 0xe0, 0xed, 0xd9,
-  0xc9, 0xd1, 0x0f, 0xec, 0x5b, 0xf0, 0x96, 0x83, 0x3f, 0xfe, 0xd2, 0xb9,
-  0xc1, 0x28, 0x21, 0x01, 0x73, 0x81, 0x60, 0x26, 0xf7, 0x5d, 0x1a, 0x05,
-  0x4b, 0x45, 0x8b, 0x2c, 0x7c, 0x76, 0x1c, 0x6b, 0xdf, 0x28, 0x12, 0x58,
-  0x17, 0x59, 0x8e, 0x7e, 0x11, 0xf2, 0x7c, 0x60, 0x4f, 0x0e, 0x98, 0x18,
-  0xb1, 0xbf, 0x07, 0x3e, 0xac, 0xc7, 0xa1, 0x1f, 0xbd, 0xd3, 0x3a, 0x9b,
-  0x3e, 0x6d, 0x3a, 0x1e, 0xc1, 0x57, 0xd9, 0x15, 0x25, 0x50, 0xb4, 0x4a,
-  0x0f, 0x90, 0x3b, 0x44, 0x5b, 0xf0, 0x1a, 0xcf, 0x81, 0x04, 0xd1, 0xe4,
-  0x9a, 0x2a, 0x9d, 0x70, 0xf0, 0xa1, 0xf3, 0x7a, 0x64, 0x09, 0x49, 0xbb,
-  0x48, 0xe0, 0x02, 0x5e, 0x66, 0x88, 0x80, 0x0d, 0xa0, 0xad, 0xc8, 0x1b,
-  0x28, 0xc6, 0x38, 0x73, 0x08, 0x5f, 0x0a, 0xa2, 0xb5, 0x19, 0xa9, 0xbf,
-  0x17, 0xf5, 0xe2, 0x79, 0xb4, 0xd7, 0xfb, 0x9d, 0x35, 0x15, 0xda, 0xa3,
-  0x72, 0xaf, 0x4a, 0x41, 0xa0, 0x2f, 0x19, 0xd0, 0x6c, 0x5f, 0xfc, 0x61,
-  0xcb, 0xc8, 0x0d, 0x17, 0xb5, 0x86, 0xe2, 0x36, 0xe9, 0x52, 0x2c, 0x64,
-  0xe2, 0xdb, 0xdc, 0x4f, 0xc0, 0xb5, 0xf9, 0xf0, 0x8a, 0x04, 0x46, 0x06,
-  0x71, 0x23, 0xd6, 0xf4, 0xc5, 0xfc, 0xea, 0x2a, 0xd0, 0x73, 0x20, 0x47,
-  0x2a, 0x91, 0x1f, 0x17, 0xdd, 0xa2, 0x2b, 0x55, 0xc4, 0x21, 0x50, 0x20,
-  0x62, 0x8f, 0x72, 0x81, 0xb4, 0x15, 0x76, 0x31, 0x46, 0x93, 0xe8, 0x80,
-  0x1d, 0xae, 0x11, 0xe3, 0xbb, 0xf9, 0xc3, 0xb1, 0xb2, 0xbe, 0xf2, 0xc5,
-  0x8a, 0xc9, 0x90, 0xea, 0x89, 0x5a, 0x46, 0x77, 0x46, 0x8f, 0x8d, 0x25,
-  0xd8, 0x73, 0x9c, 0x7f, 0x3f, 0x5a, 0xd9, 0x5f, 0x91, 0xe7, 0x7a, 0x41,
-  0x8d, 0x9c, 0xdf, 0xe1, 0xac, 0x1a, 0xb6, 0xde, 0x46, 0x26, 0x9a, 0x81,
-  0xba, 0x7e, 0x36, 0x86, 0xfb, 0x53, 0x9c, 0xdb, 0x70, 0x3c, 0x27, 0xd2,
-  0xe6, 0xae, 0x2f, 0x7e, 0xc1, 0xb6, 0xda, 0x43, 0x53, 0xd7, 0x99, 0xf3,
-  0x5c, 0x57, 0xfe, 0x53, 0x67, 0xa0, 0xcd, 0xdb, 0x93, 0x09, 0xc5, 0x74,
-  0x29, 0x80, 0x92, 0x8d, 0xed, 0x57, 0xbb, 0x8e, 0x2b, 0x17, 0x70, 0xa1,
-  0x67, 0x8a, 0x0c, 0x9f, 0x20, 0x66, 0x50, 0x1b, 0x23, 0x87, 0x92, 0x3f,
-  0xfc, 0x40, 0x44, 0x6d, 0x7a, 0x48, 0x9a, 0x52, 0xae, 0x49, 0x51, 0xa0,
-  0xbf, 0x1e, 0xf7, 0xb0, 0x6b, 0x02, 0x1a, 0xa4, 0xb1, 0xec, 0xcf, 0xb7,
-  0xbd, 0x09, 0xdd, 0x92, 0x89, 0x82, 0x4f, 0x8a, 0x46, 0x22, 0x9e, 0x95,
-  0x7e, 0x07, 0x9c, 0x9e, 0xdc, 0x0e, 0x1a, 0x35, 0xb5, 0x38, 0x45, 0x12,
-  0x02, 0xd5, 0xba, 0xf2, 0xdf, 0x3d, 0x88, 0x4c, 0xf9, 0xab, 0x0e, 0x70,
-  0x99, 0x29, 0x30, 0x27, 0x26, 0x91, 0x38, 0xd8, 0xdf, 0xe7, 0x59, 0xba,
-  0x74, 0x0e, 0x83, 0x9e, 0xab, 0xe5, 0x72, 0x4e, 0x1a, 0x60, 0x53, 0xdd,
-  0x59, 0x26, 0x36, 0x67, 0x21, 0x5c, 0x76, 0x15, 0x8c, 0x0b, 0x7f, 0x23,
-  0x12, 0x21, 0x50, 0x98, 0xff, 0x4a, 0x32, 0x43, 0xdc, 0x54, 0x04, 0x01,
-  0xfe, 0xe1, 0xf0, 0x85, 0xd8, 0xd3, 0x9a, 0xcf, 0xa7, 0xe9, 0x8a, 0x19,
-  0xc5, 0x18, 0xab, 0x41, 0xc0, 0x04, 0x50, 0xa5, 0x9e, 0xcf, 0xba, 0xc9,
-  0x36, 0xa5, 0x38, 0x15, 0x26, 0x52, 0xe8, 0x10, 0x92, 0xdc, 0xdc, 0x37,
-  0x63, 0xfb, 0x0b, 0x62, 0xcd, 0x75, 0x1b, 0xeb, 0x42, 0xe0, 0xdc, 0xdd,
-  0x4b, 0xf6, 0x31, 0x86, 0x61, 0x60, 0xf0, 0x4f, 0x5a, 0xee, 0x82, 0x23,
-  0xa7, 0x77, 0xe9, 0x68, 0x5e, 0x07, 0x81, 0x67, 0xce, 0xaf, 0xb5, 0x03,
-  0x0e, 0x4f, 0x69, 0x95, 0x0e, 0xb1, 0x74, 0x6c, 0xe8, 0x9d, 0x69, 0x63,
-  0x89, 0xbd, 0xde, 0x9a, 0xa4, 0x69, 0x51, 0x72, 0x87, 0xed, 0x38, 0xe1,
-  0xa9, 0x66, 0x98, 0x18, 0x2a, 0x53, 0x2e, 0x53, 0x8e, 0xeb, 0xd8, 0xe4,
-  0xc6, 0xe0, 0xe7, 0xe1, 0x7c, 0x95, 0xc1, 0xaf, 0xbf, 0xe6, 0xa8, 0x85,
-  0xf3, 0x71, 0x61, 0xed, 0x91, 0x06, 0x34, 0x2a, 0x4f, 0x0c, 0x79, 0x5f,
-  0x2e, 0x08, 0x93, 0x28, 0x3a, 0xb8, 0x81, 0x83, 0x49, 0xbe, 0x2e, 0x7d,
-  0x55, 0x89, 0xef, 0xd5, 0xa2, 0x26, 0x93, 0x3a, 0xae, 0x6e, 0x46, 0xe1,
-  0x72, 0x6e, 0x81, 0x20, 0x32, 0x38, 0xc9, 0x07, 0xf0, 0xf0, 0xf0, 0x66,
-  0xb4, 0xa7, 0x8e, 0x05, 0xe0, 0x4b, 0x15, 0x6f, 0xde, 0x62, 0x0f, 0xaa,
-  0xfb, 0x7c, 0x74, 0xfd, 0xea, 0xdd, 0x30, 0x3c, 0x34, 0x31, 0x35, 0x4d,
-  0x9f, 0x3c, 0x60, 0x09, 0x3d, 0x0d, 0x97, 0x39, 0xf6, 0x05, 0x63, 0x6f,
-  0xb5, 0xf4, 0x4f, 0x43, 0x8f, 0xcc, 0x81, 0xf3, 0xdb, 0xf0, 0x70, 0xcd,
-  0x57, 0x8c, 0x27, 0x19, 0x2f, 0x68, 0x16, 0x43, 0xa2, 0xc1, 0x51, 0x22,
-  0x75, 0x9c, 0x20, 0x45, 0x78, 0x4d, 0xe1, 0xe1, 0xea, 0x6b, 0x8c, 0x5c,
-  0xa6, 0x63, 0x1d, 0xb1, 0xec, 0xce, 0x62, 0xbe, 0x00, 0xe6, 0x98, 0x64,
-  0x0d, 0x52, 0x59, 0x10, 0x43, 0xf9, 0xa5, 0x66, 0x56, 0x6a, 0x6e, 0x87,
-  0x06, 0x98, 0xbd, 0xc1, 0x0e, 0xaf, 0x93, 0xf2, 0xb0, 0xc8, 0x6f, 0xc2,
-  0xb3, 0x6a, 0xa5, 0xd1, 0x32, 0x0c, 0x8d, 0xf3, 0xdd, 0x11, 0xbc, 0x9d,
-  0x8c, 0x6a, 0x6a, 0x0f, 0x44, 0x1d, 0xc3, 0xb4, 0x7a, 0x20, 0x3c, 0xdc,
-  0x2a, 0x46, 0xcd, 0xa3, 0xa3, 0xaf, 0x0e, 0x5f, 0x1d, 0x1f, 0xae, 0xb5,
-  0x67, 0xf2, 0x8a, 0xa0, 0xe7, 0x44, 0xf6, 0xb0, 0x96, 0xc0, 0x1b, 0x65,
-  0xd8, 0xce, 0x99, 0x04, 0x3d, 0x2c, 0x56, 0x2b, 0xeb, 0x98, 0x1d, 0x9f,
-  0x9c, 0x22, 0xa0, 0x0a, 0xc8, 0xaf, 0xa2, 0x24, 0xf9, 0xf4, 0x49, 0x53,
-  0xa6, 0xa6, 0xe9, 0x14, 0x13, 0x01, 0x8c, 0x76, 0x21, 0xed, 0x7a, 0x5e,
-  0x53, 0xc7, 0x59, 0xf8, 0x58, 0x1c, 0x1e, 0x6e, 0x8c, 0xaa, 0x38, 0x2a,
-  0x2a, 0x5c, 0xec, 0xe9, 0xb9, 0xa3, 0xaf, 0xaa, 0x04, 0x31, 0xc1, 0x49,
-  0x14, 0xd1, 0x74, 0x63, 0xbc, 0xe3, 0x87, 0x07, 0xc3, 0x13, 0xaf, 0xa9,
-  0xaa, 0xca, 0x26, 0xb8, 0x20, 0xd0, 0x3c, 0x65, 0x60, 0xae, 0xf0, 0x57,
-  0x95, 0xe4, 0xc3, 0xc3, 0xf7, 0x07, 0x6f, 0x81, 0xcd, 0x38, 0xeb, 0xc0,
-  0x4f, 0x73, 0x26, 0xd2, 0xc0, 0x8f, 0x69, 0x16, 0xde, 0x56, 0x4b, 0x1b,
-  0xd6, 0xf0, 0x27, 0xb4, 0x47, 0x2b, 0x37, 0xcc, 0xe3, 0x28, 0xab, 0x37,
-  0xc2, 0x9b, 0xe1, 0xf9, 0x50, 0xff, 0xd0, 0x39, 0xd1, 0x89, 0x4c, 0xab,
-  0x06, 0xfc, 0xa6, 0x3e, 0x0e, 0x3c, 0xb7, 0xc5, 0x7f, 0xac, 0x6f, 0x99,
-  0x17, 0x0c, 0xec, 0x8d, 0xd2, 0x67, 0x10, 0x78, 0x6d, 0x5b, 0x5e, 0xdb,
-  0x5e, 0xf4, 0x5a, 0xe0, 0xbd, 0x61, 0x1c, 0x6a, 0xe1, 0xe7, 0x49, 0x80,
-  0x2c, 0x90, 0x18, 0xbe, 0xb0, 0x25, 0xdd, 0xab, 0x77, 0xcd, 0x01, 0x4c,
-  0x50, 0x1d, 0x7f, 0x13, 0x2b, 0x68, 0x8e, 0x68, 0x61, 0x8e, 0x2d, 0x17,
-  0xf0, 0xbe, 0x9e, 0xdd, 0x3c, 0x73, 0x52, 0x0a, 0x70, 0x23, 0xe9, 0x47,
-  0xc6, 0x62, 0xf0, 0xde, 0x50, 0x4b, 0x3b, 0xbc, 0x28, 0x63, 0x87, 0x7f,
-  0xb3, 0x1b, 0xe8, 0xdb, 0xdb, 0xbd, 0x97, 0x27, 0x49, 0x79, 0x95, 0x06,
-  0x92, 0x5e, 0x3c, 0x5a, 0x99, 0xa5, 0xda, 0x9c, 0x24, 0xb8, 0x3d, 0x27,
-  0xf8, 0x3a, 0x07, 0xf7, 0xfb, 0x12, 0xe3, 0xa7, 0x1f, 0x95, 0x5d, 0xe2,
-  0x0d, 0xd6, 0xba, 0xf5, 0xf5, 0x57, 0xde, 0x34, 0x80, 0x5b, 0x7f, 0x46,
-  0xd9, 0x6d, 0x04, 0xd8, 0x38, 0x75, 0x65, 0xd7, 0xea, 0x4d, 0x96, 0x44,
-  0x57, 0x3f, 0x67, 0x33, 0xc2, 0xca, 0xc1, 0x22, 0x97, 0x35, 0xba, 0xbb,
-  0x4d, 0xe2, 0x78, 0xf8, 0x73, 0x3c, 0x21, 0x23, 0xf8, 0x16, 0x53, 0xe2,
-  0x2d, 0x26, 0x2e, 0x0c, 0x87, 0x27, 0x8f, 0x26, 0x84, 0x66, 0x3a, 0x2c,
-  0x2e, 0x36, 0x21, 0x7b, 0x55, 0xfe, 0x58, 0x66, 0x63, 0xf0, 0x85, 0x8f,
-  0xdf, 0x7e, 0x15, 0x9e, 0x0d, 0x8d, 0x36, 0x4e, 0x11, 0x05, 0x4c, 0x9b,
-  0x1f, 0xdf, 0x66, 0x39, 0x18, 0xd6, 0x63, 0xb8, 0x21, 0x27, 0x33, 0xbe,
-  0x21, 0xbb, 0xc7, 0x3e, 0xc3, 0x6e, 0x3f, 0xfc, 0x07, 0x3e, 0x77, 0xad,
-  0x72, 0xfc, 0x6c, 0x7e, 0x31, 0x01, 0xda, 0x0f, 0xe7, 0x97, 0x97, 0xd9,
-  0x5d, 0x74, 0x92, 0x49, 0xbf, 0x24, 0xb1, 0x84, 0x38, 0xd8, 0x14, 0xa8,
-  0x8d, 0x77, 0x6f, 0x09, 0x2e, 0x00, 0xa2, 0x13, 0xda, 0x28, 0x69, 0xb7,
-  0x08, 0x64, 0xac, 0xd9, 0xf5, 0x66, 0xfc, 0xad, 0x6a, 0x7e, 0x19, 0x77,
-  0x6d, 0xde, 0x5d, 0x5a, 0xf9, 0x96, 0xf2, 0xf0, 0xec, 0xdd, 0xd1, 0xd7,
-  0xa7, 0xfa, 0xc7, 0x32, 0x14, 0x1d, 0xf2, 0xaa, 0xf1, 0x0f, 0xb7, 0xba,
-  0x0d, 0xd1, 0x02, 0xf1, 0xf2, 0xb7, 0xed, 0xbd, 0xc8, 0x51, 0xac, 0xc3,
-  0xf4, 0x19, 0xfe, 0xd4, 0x4f, 0x57, 0x75, 0xc5, 0x0d, 0x05, 0xb5, 0xe1,
-  0xbf, 0x18, 0xbb, 0x1e, 0xb2, 0x4d, 0x5a, 0x84, 0xb0, 0x21, 0xd1, 0x19,
-  0xa2, 0x7f, 0x2c, 0x9c, 0xab, 0x54, 0xee, 0x77, 0x68, 0x47, 0x04, 0x87,
-  0x30, 0x64, 0xc0, 0xf0, 0xf7, 0x9c, 0xb7, 0x76, 0x26, 0x7e, 0x8b, 0xb5,
-  0x45, 0x24, 0xe9, 0x20, 0x34, 0xec, 0x7c, 0xb0, 0xf1, 0x0b, 0x5e, 0x94,
-  0x6f, 0xe9, 0x82, 0x0c, 0xbf, 0xc8, 0x57, 0xb5, 0x5c, 0xa1, 0xe6, 0x5a,
-  0x5d, 0xb8, 0xae, 0x0f, 0x79, 0x86, 0xe1, 0xb3, 0x0e, 0x10, 0x1f, 0xfe,
-  0xa5, 0x11, 0xc5, 0x85, 0x89, 0x32, 0x87, 0xc6, 0xb9, 0x1b, 0x52, 0xaa,
-  0x65, 0xd5, 0x39, 0xd6, 0x9d, 0x24, 0x75, 0x56, 0xcd, 0x4b, 0xaa, 0x43,
-  0x6d, 0xfc, 0xb9, 0xaa, 0xc7, 0x0f, 0x49, 0x20, 0x7c, 0x66, 0x8d, 0xb3,
-  0xa6, 0x9c, 0xb2, 0x1d, 0x16, 0x33, 0xe1, 0x69, 0x3c, 0x24, 0x7b, 0x3c,
-  0x3b, 0xce, 0x1a, 0x70, 0x64, 0x29, 0x7d, 0xe6, 0x39, 0x60, 0xae, 0x39,
-  0x54, 0x34, 0x99, 0xb1, 0xff, 0xe5, 0x2d, 0xb7, 0x80, 0xcc, 0xe7, 0x6e,
-  0xd0, 0x25, 0xbe, 0xc5, 0x9f, 0x12, 0xa4, 0x39, 0x86, 0xfe, 0xa3, 0x7d,
-  0xb6, 0xab, 0xbe, 0x08, 0xb8, 0x62, 0xf8, 0x83, 0x0a, 0xbc, 0xe9, 0x5a,
-  0x60, 0x64, 0x87, 0x53, 0x44, 0x38, 0xb9, 0x44, 0xd5, 0x2e, 0x31, 0xe1,
-  0xbc, 0x31, 0xdf, 0x01, 0x81, 0xa6, 0x20, 0x1c, 0xd5, 0xe0, 0x31, 0xc4,
-  0x61, 0x2a, 0x21, 0x56, 0x94, 0x1d, 0xd4, 0x2a, 0xa3, 0xc8, 0xc9, 0x73,
-  0x2c, 0xe0, 0xe8, 0xec, 0x29, 0x8f, 0xa6, 0x70, 0xd6, 0xc7, 0x41, 0x57,
-  0x0c, 0xa1, 0x0a, 0xdb, 0xb4, 0x08, 0x85, 0xf6, 0xac, 0x1a, 0x5f, 0xf2,
-  0x9c, 0xbe, 0x49, 0x15, 0xf0, 0x9d, 0xd4, 0xe4, 0x4a, 0xeb, 0xf1, 0x8c,
-  0x7a, 0x04, 0xc2, 0xa7, 0x71, 0x45, 0x4a, 0x37, 0x57, 0xab, 0x7b, 0x2c,
-  0x71, 0x21, 0x1e, 0x5b, 0x1c, 0x81, 0x49, 0x20, 0x9f, 0xcd, 0xc4, 0xdc,
-  0xbf, 0xd4, 0xd4, 0xf5, 0x9e, 0xa6, 0xdf, 0x35, 0x9c, 0x8d, 0x66, 0x4c,
-  0x19, 0x32, 0x80, 0xb3, 0xc9, 0x29, 0x89, 0x54, 0xbf, 0x8a, 0xbb, 0x06,
-  0x43, 0xc6, 0xbd, 0xa0, 0x19, 0x67, 0x08, 0xa0, 0xea, 0x56, 0xd3, 0x51,
-  0xa3, 0x9f, 0xb0, 0x49, 0x32, 0xd5, 0xfc, 0xa2, 0xaa, 0xb3, 0x7a, 0xee,
-  0x1f, 0x7f, 0xd3, 0x10, 0x85, 0x70, 0x49, 0xc9, 0x2c, 0xc1, 0xcd, 0xb0,
-  0xe0, 0xa1, 0xe4, 0x98, 0xc1, 0x12, 0xa6, 0x9a, 0x5a, 0x31, 0x73, 0xd5,
-  0xc0, 0x05, 0x01, 0x14, 0x4e, 0x8a, 0x5b, 0x0f, 0x12, 0x19, 0xed, 0x6a,
-  0x33, 0xbb, 0x26, 0xde, 0x0a, 0xbc, 0xfd, 0xc7, 0x7f, 0xe8, 0x2f, 0x3f,
-  0x22, 0xa5, 0xfe, 0xa9, 0x94, 0xd2, 0x2a, 0x83, 0xc4, 0x8b, 0x17, 0xb0,
-  0x43, 0xec, 0x8f, 0x44, 0x95, 0x9f, 0x30, 0xa3, 0x98, 0x49, 0x83, 0x58,
-  0xe9, 0x34, 0xe0, 0x1f, 0x07, 0x46, 0x7d, 0x92, 0x41, 0x12, 0x44, 0xc7,
-  0x23, 0x13, 0xf7, 0xe2, 0xde, 0xf3, 0xc6, 0x20, 0x1b, 0xfe, 0x90, 0xf7,
-  0xa9, 0xc5, 0x71, 0x09, 0x33, 0xb9, 0xa2, 0xb8, 0x0f, 0xe2, 0x17, 0xd3,
-  0x2e, 0xfe, 0x50, 0x0a, 0x24, 0x38, 0x58, 0xf0, 0x12, 0x54, 0xe6, 0x9f,
-  0x87, 0xcd, 0x69, 0x4d, 0x28, 0x15, 0x27, 0x6c, 0x03, 0xd1, 0x1f, 0xc6,
-  0x49, 0xca, 0xb1, 0x71, 0x9d, 0x5d, 0x28, 0x82, 0xb1, 0x26, 0xc3, 0xb4,
-  0xf7, 0x9e, 0x70, 0x86, 0x05, 0xbf, 0x5b, 0x5f, 0x26, 0x5b, 0xc5, 0xa6,
-  0x7b, 0xfc, 0xf1, 0x1f, 0x5c, 0xf9, 0xf0, 0x4f, 0x5f, 0x4f, 0x38, 0x3d,
-  0x3f, 0xda, 0xa3, 0x29, 0xfd, 0x31, 0xae, 0xee, 0xa7, 0x17, 0xc5, 0x44,
-  0x0e, 0x1e, 0x12, 0x1f, 0x08, 0xa8, 0x3f, 0x63, 0x2e, 0xa1, 0x2c, 0x8e,
-  0xd8, 0x01, 0xcb, 0xf5, 0x23, 0x9e, 0x18, 0xeb, 0x40, 0xef, 0x43, 0x31,
-  0x62, 0xa4, 0x27, 0xac, 0x3a, 0x86, 0x93, 0xf7, 0xc7, 0x48, 0x91, 0x68,
-  0x41, 0x26, 0x90, 0x33, 0xff, 0xd6, 0x46, 0x62, 0x4c, 0x75, 0x78, 0x30,
-  0x70, 0xbc, 0x98, 0x8f, 0x13, 0xe3, 0x33, 0x08, 0xc1, 0x0c, 0xa3, 0xbc,
-  0x80, 0x69, 0x7e, 0x24, 0x10, 0x1a, 0xb1, 0xa8, 0x0e, 0xf9, 0x67, 0xf1,
-  0x39, 0xfd, 0x4c, 0x73, 0x58, 0x6d, 0xab, 0x44, 0xad, 0x4b, 0xef, 0xfb,
-  0x98, 0x5d, 0x51, 0x28, 0x2d, 0x1e, 0x2d, 0x27, 0x90, 0x33, 0xde, 0x3c,
-  0x69, 0x0f, 0xa6, 0xd5, 0x95, 0x33, 0x6d, 0xde, 0x96, 0x29, 0xa6, 0x76,
-  0x5e, 0xa5, 0x83, 0x68, 0xd5, 0xed, 0x0a, 0xb5, 0x3b, 0xd8, 0xf0, 0xac,
-  0xd9, 0xf4, 0x0e, 0xf6, 0x96, 0x92, 0x93, 0xcd, 0x10, 0x20, 0xcc, 0xb0,
-  0xfd, 0x10, 0x6c, 0x8d, 0xf9, 0xa5, 0x54, 0xe1, 0xd9, 0xcc, 0x20, 0x33,
-  0xee, 0xe2, 0xe9, 0x77, 0x7c, 0x54, 0xa5, 0xd1, 0x47, 0x86, 0x77, 0xcf,
-  0x6e, 0xd2, 0xc5, 0xc3, 0x10, 0x51, 0x51, 0x99, 0x9d, 0x72, 0x33, 0x4a,
-  0x5b, 0xcd, 0x63, 0x71, 0x84, 0xb9, 0x3d, 0x06, 0xe7, 0x07, 0x0d, 0x1e,
-  0x1a, 0x8e, 0x63, 0xc8, 0xe4, 0x58, 0x96, 0x64, 0x61, 0x74, 0xe3, 0x67,
-  0x97, 0xc6, 0xea, 0xaa, 0x11, 0x62, 0x00, 0xd3, 0xb5, 0x69, 0xdc, 0x07,
-  0xf6, 0x88, 0x1a, 0x60, 0x35, 0x04, 0x2e, 0xa7, 0x2c, 0x9f, 0x92, 0xbb,
-  0x52, 0xd2, 0xd8, 0x38, 0x6f, 0xad, 0xc4, 0x7c, 0xb7, 0xc5, 0xc3, 0xd9,
-  0x64, 0x38, 0x89, 0xc3, 0x1f, 0x63, 0xd0, 0x80, 0x32, 0x17, 0xe7, 0x1c,
-  0x6e, 0xc0, 0x6b, 0x09, 0xae, 0x3a, 0x0c, 0x53, 0x05, 0x32, 0xa7, 0xa2,
-  0xc0, 0x2d, 0x45, 0x59, 0x37, 0xff, 0xe5, 0x24, 0xd5, 0xb1, 0x9b, 0x2a,
-  0x76, 0x92, 0xe9, 0x3c, 0xe6, 0xba, 0xac, 0x67, 0x1f, 0x81, 0x47, 0xcb,
-  0xfb, 0x8f, 0x54, 0x73, 0x72, 0xee, 0x04, 0x45, 0xe9, 0x07, 0x44, 0x2a,
-  0x86, 0x31, 0x9c, 0xcf, 0x70, 0x4e, 0x74, 0xdc, 0x26, 0x05, 0xbb, 0x29,
-  0x1e, 0x9a, 0x56, 0xb3, 0x26, 0xc4, 0x81, 0x70, 0x6e, 0x4f, 0x03, 0x3d,
-  0xc4, 0x1f, 0x2d, 0x87, 0x36, 0x19, 0xd4, 0x94, 0x1f, 0xd3, 0x03, 0xc4,
-  0x0d, 0xdc, 0x85, 0x0a, 0x53, 0x9c, 0x82, 0x3d, 0x73, 0x5b, 0xff, 0x47,
-  0xc1, 0x2a, 0x1b, 0x5d, 0xd7, 0xf2, 0x06, 0xce, 0x7b, 0xc3, 0xd4, 0x57,
-  0xc3, 0xf2, 0x1d, 0xf3, 0xe2, 0x1a, 0xa1, 0xf6, 0xbc, 0xba, 0xa7, 0xa3,
-  0x5f, 0x8c, 0x17, 0xcf, 0x4b, 0x96, 0xb5, 0x2a, 0xe1, 0x7e, 0xb2, 0xf6,
-  0xd7, 0x38, 0xad, 0x88, 0xe8, 0xde, 0x6a, 0x0b, 0x11, 0x9e, 0x9d, 0x29,
-  0x9b, 0xe7, 0x03, 0x84, 0x3f, 0x73, 0x6a, 0xe9, 0xd9, 0x5a, 0x22, 0x9c,
-  0x0c, 0x73, 0x0c, 0x31, 0x0c, 0x1d, 0xea, 0x4d, 0xdf, 0xf6, 0x8f, 0xb9,
-  0x10, 0x02, 0x1b, 0x81, 0x03, 0xfe, 0x53, 0x45, 0x9f, 0x35, 0x37, 0x6f,
-  0xf4, 0x5f, 0xc3, 0xd3, 0x77, 0x51, 0x71, 0x81, 0x0d, 0x13, 0x25, 0x77,
-  0x00, 0xab, 0x77, 0x8c, 0x60, 0xfd, 0x94, 0x06, 0xea, 0x2e, 0xa9, 0x86,
-  0xe7, 0x63, 0x36, 0x73, 0x85, 0xc0, 0x31, 0x18, 0x16, 0xc9, 0x78, 0x4c,
-  0xa5, 0xe2, 0x22, 0x94, 0xb8, 0xd4, 0x07, 0xd3, 0xe3, 0xe4, 0x07, 0x74,
-  0x54, 0x1e, 0xa4, 0xf0, 0x88, 0x21, 0x02, 0xc9, 0x11, 0xea, 0x00, 0x48,
-  0xc4, 0xaa, 0xab, 0xa9, 0x5f, 0x14, 0xbd, 0x1e, 0x3b, 0x81, 0x40, 0x76,
-  0xe4, 0xbb, 0x4b, 0x3a, 0x56, 0x40, 0x9a, 0xbd, 0x59, 0x01, 0x4f, 0x97,
-  0xfb, 0xdd, 0x39, 0xd9, 0xb4, 0x76, 0xde, 0xce, 0xc4, 0x1e, 0x58, 0x81,
-  0xd3, 0x9b, 0xcf, 0xcb, 0xa1, 0x61, 0xc8, 0x31, 0x87, 0x74, 0xb4, 0xfb,
-  0xf2, 0x73, 0xcd, 0x05, 0x69, 0x7d, 0x95, 0xed, 0x80, 0x87, 0x49, 0x27,
-  0xf9, 0x71, 0x8d, 0xbb, 0x65, 0x2b, 0xc0, 0x05, 0xb0, 0xbc, 0x8f, 0xb6,
-  0xcf, 0x78, 0xf4, 0x8e, 0x57, 0x8b, 0xcb, 0x05, 0x2d, 0xc8, 0x76, 0x20,
-  0xa7, 0x7e, 0x26, 0x32, 0x1b, 0x99, 0x48, 0x50, 0x7d, 0x8f, 0x7c, 0x6d,
-  0x3e, 0xf4, 0x45, 0x53, 0xb9, 0x60, 0x0e, 0xa5, 0xd0, 0xb8, 0xdd, 0x06,
-  0x25, 0x40, 0x81, 0xc5, 0x5f, 0x54, 0x4c, 0xe5, 0x55, 0x4c, 0xa1, 0x48,
-  0x28, 0x35, 0x18, 0x8e, 0x50, 0x20, 0xb2, 0xe6, 0xbf, 0xc8, 0x25, 0x5d,
-  0x6b, 0x03, 0x07, 0x21, 0x84, 0x33, 0x30, 0x93, 0x7a, 0x5e, 0x71, 0xd0,
-  0xe3, 0x78, 0x88, 0xaa, 0x12, 0x1c, 0x70, 0xc9, 0xa9, 0x6b, 0xd2, 0x77,
-  0xbb, 0x83, 0xbe, 0x3a, 0x74, 0x65, 0xe8, 0x4b, 0x2b, 0xd5, 0x1f, 0xb2,
-  0x0c, 0x42, 0x1d, 0xe2, 0xb2, 0xc0, 0xc2, 0x23, 0xbb, 0xef, 0x8f, 0xdc,
-  0xe5, 0xf6, 0x37, 0x81, 0x2b, 0x49, 0xc3, 0x70, 0x38, 0x8b, 0x12, 0x4a,
-  0x84, 0x87, 0x8d, 0xb6, 0x4c, 0xda, 0x56, 0x4e, 0x89, 0x74, 0xd7, 0xd8,
-  0x09, 0x50, 0xfb, 0xbd, 0x3e, 0x70, 0x2b, 0x88, 0xb4, 0x8d, 0x44, 0xf3,
-  0x45, 0xe3, 0x35, 0xe1, 0xc2, 0xaa, 0x9f, 0xd3, 0xb2, 0x10, 0x8d, 0x27,
-  0xfa, 0x85, 0xea, 0x07, 0x49, 0xd3, 0x8f, 0x55, 0x35, 0x41, 0x09, 0x99,
-  0x5d, 0xde, 0x03, 0x11, 0xab, 0x4e, 0xe0, 0xde, 0xd6, 0x4a, 0x31, 0x79,
-  0x5e, 0xd6, 0xea, 0x38, 0x62, 0x57, 0xb8, 0x41, 0xf5, 0x2c, 0xc5, 0x9c,
-  0xd2, 0x70, 0x1f, 0xed, 0xf6, 0xe1, 0x45, 0x4d, 0x86, 0x3e, 0x6f, 0x33,
-  0x43, 0xe4, 0xba, 0x30, 0x7a, 0xe2, 0x20, 0xda, 0x10, 0xd7, 0xd6, 0x83,
-  0x84, 0x6b, 0x8c, 0x84, 0x83, 0xd8, 0x64, 0xa8, 0x26, 0x23, 0xed, 0x86,
-  0x0e, 0xaa, 0xf2, 0xcb, 0x47, 0x72, 0x90, 0x71, 0x06, 0x93, 0x14, 0xfb,
-  0x19, 0xa6, 0xc7, 0x41, 0xe9, 0xa4, 0x6a, 0x0e, 0x52, 0x7c, 0x82, 0xfa,
-  0xc4, 0x24, 0xd0, 0x8e, 0x35, 0xf2, 0x55, 0x6c, 0x2a, 0x4d, 0x21, 0x0e,
-  0x74, 0x98, 0x73, 0xb5, 0x10, 0x24, 0x20, 0x74, 0x10, 0xdc, 0xc5, 0xf4,
-  0x8b, 0x2a, 0xea, 0xf2, 0xde, 0x39, 0xb2, 0x6d, 0x4d, 0x32, 0xd2, 0x55,
-  0x47, 0x67, 0x2b, 0x87, 0x5a, 0x0b, 0x11, 0x13, 0x26, 0xa3, 0x7a, 0x8e,
-  0x42, 0x96, 0x8a, 0x0e, 0x92, 0xcf, 0x1e, 0x75, 0x36, 0xa3, 0x5b, 0x4a,
-  0xb6, 0x23, 0x43, 0xfb, 0x8a, 0xb0, 0xef, 0x8b, 0x81, 0x4f, 0x27, 0x44,
-  0x7b, 0x6d, 0x30, 0x7f, 0xf4, 0x9e, 0x7f, 0xb6, 0x67, 0x52, 0x81, 0x4d,
-  0x3e, 0x96, 0x6a, 0xed, 0x4b, 0x70, 0xeb, 0xb3, 0xe0, 0xe6, 0xa0, 0x8a,
-  0x64, 0xee, 0xc1, 0x73, 0xab, 0x35, 0xc1, 0x65, 0xd8, 0xba, 0x0b, 0xb9,
-  0xbe, 0xc5, 0xdc, 0x21, 0x4b, 0x5d, 0x22, 0xf6, 0xea, 0x93, 0x9b, 0x8f,
-  0x2e, 0xbe, 0xa2, 0x0c, 0x5f, 0x6d, 0x32, 0x2b, 0xbd, 0xdb, 0x88, 0x14,
-  0x32, 0xad, 0xdf, 0xf6, 0x6a, 0x53, 0x29, 0x2e, 0x3a, 0xe1, 0x6f, 0xa1,
-  0x0f, 0x1a, 0x29, 0xb4, 0xea, 0xb7, 0x33, 0xed, 0x19, 0x7d, 0x34, 0x90,
-  0xce, 0x2d, 0x75, 0x4e, 0x0d, 0xfe, 0x20, 0x1e, 0x94, 0x5f, 0xac, 0x62,
-  0x6b, 0x0c, 0x4a, 0x95, 0x02, 0x52, 0x4f, 0xd0, 0x44, 0x55, 0x9f, 0xee,
-  0x5a, 0x08, 0xc1, 0xa4, 0xad, 0xc9, 0xc3, 0xe7, 0x5d, 0x4d, 0x8d, 0x0b,
-  0x86, 0x1e, 0x3c, 0xdc, 0xd8, 0x74, 0xe2, 0xe3, 0x18, 0xa6, 0x4f, 0xd5,
-  0x8f, 0x1c, 0x6a, 0x2f, 0x6a, 0x4c, 0x1c, 0x99, 0x02, 0x59, 0x48, 0x9a,
-  0x71, 0x9b, 0x14, 0x51, 0x08, 0x91, 0x75, 0x23, 0x7d, 0xfe, 0x41, 0x55,
-  0xd0, 0x6d, 0xf7, 0x42, 0x3d, 0x36, 0x64, 0xc7, 0xb1, 0x56, 0x70, 0x9d,
-  0x5b, 0xb7, 0xe8, 0x2e, 0x3c, 0xf2, 0x52, 0x2f, 0xd1, 0xa5, 0x9d, 0xde,
-  0x29, 0x14, 0x84, 0xf6, 0x2c, 0x0b, 0x2e, 0x4b, 0x53, 0x9f, 0x16, 0x2d,
-  0x4b, 0x11, 0x64, 0xcc, 0x8a, 0x68, 0xc8, 0x07, 0xe6, 0xd1, 0xf9, 0x45,
-  0x15, 0x87, 0xb2, 0xbb, 0xfc, 0xc9, 0x30, 0x29, 0x89, 0x92, 0x8e, 0x07,
-  0x6c, 0xf1, 0x17, 0x5d, 0x61, 0x1b, 0xfe, 0xb4, 0xd4, 0xaf, 0x76, 0x2c,
-  0x56, 0xbe, 0xdc, 0xd8, 0x45, 0x2d, 0x1d, 0xfd, 0xb7, 0xdd, 0x43, 0xb8,
-  0x30, 0xc7, 0x96, 0x37, 0x71, 0x59, 0x09, 0xe6, 0x13, 0x5e, 0xd9, 0xed,
-  0xe2, 0x67, 0x1c, 0x43, 0x1f, 0x2e, 0xc4, 0x6a, 0x5e, 0x72, 0x56, 0xd3,
-  0x83, 0xbe, 0x13, 0xe3, 0x11, 0x36, 0xe3, 0x61, 0x8b, 0x20, 0xa4, 0xd3,
-  0x8c, 0x72, 0x01, 0x30, 0xe1, 0xa5, 0x63, 0x56, 0x86, 0xda, 0xb4, 0xcf,
-  0x3a, 0x2d, 0x2d, 0x22, 0xfe, 0x95, 0x66, 0xc5, 0xa3, 0x3d, 0x66, 0x4e,
-  0xbf, 0x54, 0x59, 0x69, 0xab, 0x27, 0xdc, 0x4e, 0x5d, 0xd5, 0x86, 0x47,
-  0xdd, 0xe0, 0x8b, 0xf5, 0x93, 0x86, 0x0a, 0xf2, 0xb0, 0x20, 0x73, 0xf4,
-  0x93, 0xcf, 0x7c, 0x57, 0x33, 0xb6, 0xde, 0xd4, 0xff, 0x7b, 0xcd, 0x85,
-  0x39, 0x18, 0x1a, 0xc1, 0xbe, 0xec, 0x11, 0xc1, 0xc0, 0x90, 0x7f, 0xe5,
-  0x96, 0xfc, 0x2b, 0x36, 0x8a, 0x10, 0x05, 0xbb, 0x68, 0x46, 0x81, 0x72,
-  0x4b, 0x32, 0xf0, 0xd4, 0x25, 0xca, 0x8d, 0x2e, 0xd5, 0xaf, 0xc9, 0x2a,
-  0xe6, 0x12, 0x97, 0xf6, 0xb3, 0x90, 0x6a, 0x2e, 0x81, 0x89, 0xdf, 0x7a,
-  0x0d, 0xdd, 0x5e, 0xdd, 0x41, 0xe3, 0x58, 0x2f, 0x1e, 0x4e, 0x8a, 0x42,
-  0xd9, 0x11, 0x2c, 0x3a, 0x00, 0x99, 0x88, 0x8d, 0x16, 0xa0, 0x18, 0x40,
-  0x8e, 0x38, 0xd4, 0xf2, 0x80, 0xef, 0x82, 0x5e, 0xd0, 0xba, 0x35, 0xc6,
-  0xc3, 0x69, 0xfa, 0x0c, 0x82, 0x24, 0xc3, 0x7b, 0xf1, 0x63, 0x32, 0x9b,
-  0xc9, 0xdd, 0xff, 0x08, 0x8f, 0x20, 0xf7, 0xa6, 0x41, 0x24, 0x16, 0x3a,
-  0x34, 0xdc, 0x05, 0xa8, 0x2e, 0x8a, 0x4f, 0xb6, 0x98, 0x8b, 0xec, 0xb4,
-  0x68, 0x9e, 0x3f, 0xc8, 0xe0, 0x13, 0x3d, 0x25, 0xeb, 0xc3, 0xe1, 0x9b,
-  0xf5, 0xb4, 0x1e, 0xa9, 0x0e, 0xb2, 0x6e, 0x53, 0xfe, 0xc5, 0x67, 0xf5,
-  0xb0, 0xe9, 0x44, 0x6a, 0x10, 0x56, 0x23, 0x13, 0xab, 0x9b, 0xa8, 0xd4,
-  0x20, 0xb8, 0xe4, 0xa6, 0x0f, 0xe9, 0x37, 0x58, 0x14, 0xb6, 0x71, 0xd4,
-  0x8f, 0x34, 0xdd, 0x6e, 0x34, 0x45, 0xd4, 0xc2, 0xd9, 0xbf, 0xf4, 0xf0,
-  0xa9, 0x7d, 0x60, 0x29, 0xe8, 0x4e, 0xc4, 0x7c, 0xda, 0xf9, 0xec, 0x77,
-  0xd9, 0x3d, 0xf2, 0x66, 0x72, 0x5e, 0x1a, 0xa5, 0x1f, 0x3f, 0x3c, 0xe1,
-  0x19, 0xba, 0xfe, 0x58, 0xd9, 0x7b, 0x78, 0xc6, 0x8f, 0x9e, 0xf0, 0xe3,
-  0x66, 0xac, 0xc5, 0x5d, 0xe8, 0x35, 0x36, 0x1a, 0x27, 0xce, 0x99, 0x42,
-  0x49, 0xd2, 0x57, 0x12, 0x33, 0x79, 0xaf, 0xfc, 0xd4, 0xa3, 0xe0, 0x05,
-  0xae, 0x89, 0x5a, 0x09, 0x95, 0xa6, 0xa5, 0xb1, 0x19, 0x54, 0x4a, 0x7c,
-  0x2a, 0xa9, 0x06, 0xba, 0x2a, 0x1e, 0x9c, 0x5d, 0x22, 0x5d, 0xce, 0x50,
-  0xe4, 0x3b, 0x81, 0xb2, 0x91, 0xf2, 0x8f, 0x53, 0x52, 0x0d, 0xac, 0xf3,
-  0xd0, 0x70, 0xa8, 0xe0, 0x32, 0x8c, 0xc0, 0x0d, 0xa6, 0x0c, 0x76, 0xec,
-  0x85, 0x31, 0xc4, 0x1e, 0x22, 0x36, 0xe6, 0x11, 0x4e, 0x26, 0xc6, 0x70,
-  0x7b, 0xf0, 0xba, 0x81, 0xab, 0x6a, 0xa6, 0xe4, 0x41, 0xbe, 0x20, 0x36,
-  0x61, 0x36, 0xed, 0xeb, 0xc1, 0xe8, 0x47, 0x8f, 0x66, 0x05, 0xee, 0x1f,
-  0x26, 0xa4, 0x95, 0x4e, 0x68, 0xba, 0x97, 0x98, 0x55, 0xc5, 0xbf, 0x4c,
-  0x46, 0x06, 0x87, 0xf8, 0xa1, 0xd9, 0x91, 0x27, 0x69, 0xd0, 0xa6, 0x82,
-  0x45, 0x43, 0x34, 0xda, 0x02, 0xe5, 0xef, 0x3e, 0xea, 0xaa, 0x46, 0x6c,
-  0x38, 0xa4, 0x93, 0xc9, 0x00, 0x72, 0x88, 0x55, 0x85, 0xc9, 0x4f, 0xf3,
-  0xf8, 0xdd, 0x0f, 0x03, 0x25, 0x45, 0xa3, 0x26, 0x1b, 0x3c, 0x09, 0x4b,
-  0xa8, 0x9f, 0x6d, 0x1c, 0xdf, 0xf6, 0x71, 0xd7, 0x02, 0x86, 0x49, 0x55,
-  0x3c, 0xac, 0xaf, 0x09, 0xba, 0x20, 0x2d, 0x8a, 0xeb, 0xcd, 0x30, 0xcf,
-  0x9e, 0x03, 0xa2, 0x60, 0xc8, 0xe1, 0x41, 0xe0, 0xb8, 0xef, 0x23, 0x1c,
-  0xfb, 0xb0, 0x23, 0xe1, 0x0d, 0x10, 0x53, 0xa2, 0xa1, 0xde, 0xfb, 0x54,
-  0x36, 0xae, 0x43, 0x4a, 0x13, 0xe7, 0x5a, 0x94, 0xc7, 0xb0, 0x04, 0x1a,
-  0xb6, 0x81, 0x93, 0xc7, 0x0e, 0x9f, 0xc6, 0xce, 0x9a, 0xb2, 0x7d, 0xb2,
-  0x9c, 0x53, 0x8a, 0xfc, 0x3e, 0x22, 0x90, 0x08, 0x23, 0x81, 0x1d, 0xee,
-  0x8d, 0x94, 0xe5, 0xe3, 0xf4, 0xae, 0xe1, 0x0d, 0xc8, 0x6c, 0x86, 0x5e,
-  0x3f, 0xda, 0x88, 0xe9, 0x81, 0x07, 0x4d, 0x94, 0x57, 0x69, 0x4c, 0xa0,
-  0x3b, 0x0c, 0x01, 0x86, 0x29, 0x61, 0x89, 0xe0, 0xd8, 0x10, 0x28, 0x8f,
-  0x7c, 0x46, 0xbf, 0x13, 0x3d, 0x74, 0xe8, 0x28, 0x1f, 0xa1, 0xcc, 0x40,
-  0xb2, 0x46, 0xce, 0xb0, 0x8f, 0x5b, 0xa5, 0x0d, 0x5a, 0x76, 0xd3, 0x8b,
-  0xc8, 0x6d, 0x8b, 0x55, 0xc9, 0xfd, 0x81, 0x9a, 0xf2, 0x03, 0x3b, 0x65,
-  0xe3, 0x90, 0x98, 0x52, 0xc0, 0x10, 0x83, 0x18, 0x88, 0xd4, 0x3c, 0x0d,
-  0xf1, 0xa0, 0x99, 0xf6, 0xb3, 0x7b, 0x8b, 0x87, 0xeb, 0x32, 0xbb, 0xfe,
-  0xb5, 0xb5, 0x5c, 0xb7, 0xd1, 0xca, 0x1f, 0xff, 0x61, 0xbc, 0x26, 0xff,
-  0xfc, 0x21, 0x5f, 0x59, 0xae, 0xa0, 0xcb, 0x47, 0xf6, 0x0b, 0x22, 0xe4,
-  0xdc, 0x25, 0x20, 0xbd, 0x82, 0xf5, 0xab, 0x55, 0x42, 0xea, 0x80, 0xc5,
-  0x8a, 0x2d, 0xa4, 0x80, 0xb6, 0x89, 0x0c, 0x5e, 0x37, 0xc0, 0xad, 0xab,
-  0x3a, 0x50, 0xac, 0x0b, 0xa6, 0x13, 0xe6, 0x04, 0xd1, 0x9d, 0x3d, 0x4d,
-  0xeb, 0x84, 0x11, 0x99, 0x72, 0x4e, 0x8d, 0x1e, 0x6b, 0xa6, 0x15, 0xb0,
-  0x1f, 0x4c, 0x25, 0x03, 0x65, 0x9a, 0x52, 0xf4, 0x6d, 0x9b, 0xa1, 0x40,
-  0xfd, 0xaa, 0x40, 0xe5, 0xd0, 0xd7, 0x8c, 0x6b, 0xfe, 0x6e, 0x7c, 0x35,
-  0x60, 0xee, 0x1c, 0x50, 0xc9, 0x87, 0x8e, 0x86, 0xab, 0xef, 0x93, 0x5c,
-  0x47, 0x67, 0x41, 0x68, 0x38, 0x49, 0x46, 0x88, 0xb4, 0x63, 0x50, 0x73,
-  0xdc, 0x29, 0x89, 0x19, 0xca, 0x49, 0x30, 0x63, 0x0e, 0x0c, 0x78, 0x4f,
-  0x30, 0x7f, 0x48, 0xcb, 0x9d, 0x4d, 0x81, 0x91, 0x66, 0xaa, 0x99, 0x25,
-  0xdb, 0xb5, 0x62, 0xe6, 0xca, 0x6d, 0x52, 0xe6, 0x9c, 0x63, 0xd7, 0xae,
-  0xfd, 0xad, 0xaa, 0xf9, 0xf2, 0xb0, 0x92, 0xb4, 0xa9, 0x51, 0xcc, 0xdb,
-  0x81, 0xf6, 0xf7, 0x52, 0x9c, 0xd3, 0xee, 0x89, 0xd8, 0xf7, 0xf2, 0xce,
-  0x42, 0xb0, 0xa7, 0xaf, 0x8f, 0x4f, 0x8e, 0x4c, 0x69, 0xc6, 0xff, 0xbb,
-  0x3e, 0xc0, 0xa9, 0x94, 0x23, 0xaf, 0x08, 0x80, 0x71, 0x74, 0x1c, 0x50,
-  0x24, 0x01, 0xda, 0x71, 0xea, 0x0d, 0x5b, 0x28, 0x3b, 0x47, 0xef, 0xbe,
-  0x39, 0x7e, 0x7f, 0xfa, 0xee, 0xed, 0xd1, 0xbb, 0xf3, 0xcf, 0xdc, 0x8c,
-  0x8d, 0x40, 0x63, 0xe8, 0xca, 0xcf, 0x18, 0xcb, 0x30, 0xb6, 0x7e, 0x4b,
-  0xc0, 0x1b, 0xdc, 0xdb, 0x1e, 0x36, 0x42, 0xfe, 0x35, 0x70, 0x87, 0x73,
-  0x1e, 0xd2, 0x50, 0x2f, 0x66, 0xbc, 0xce, 0xd0, 0xfb, 0x3a, 0xc6, 0x64,
-  0x99, 0x01, 0x07, 0x87, 0xb9, 0x31, 0x7d, 0xc6, 0xbd, 0xa9, 0xef, 0xb0,
-  0x63, 0x23, 0x55, 0x35, 0x81, 0xbc, 0x32, 0xa6, 0x97, 0xa6, 0x48, 0xd8,
-  0x38, 0x6d, 0x63, 0x12, 0x76, 0x33, 0x3f, 0x30, 0xe2, 0x4b, 0xb8, 0xc9,
-  0xb5, 0xf6, 0x3a, 0x20, 0xbd, 0x91, 0x3e, 0x4a, 0x68, 0x64, 0x46, 0x74,
-  0xb3, 0x38, 0x75, 0x65, 0xb6, 0xd3, 0x04, 0xed, 0xce, 0xb4, 0xb9, 0xf7,
-  0xd2, 0x14, 0x9c, 0x55, 0x7c, 0xaf, 0x6e, 0x54, 0xe0, 0x8c, 0x1f, 0xf7,
-  0xd1, 0xaa, 0xf9, 0xe2, 0xfb, 0x3d, 0x64, 0xd3, 0x1f, 0xfd, 0x6e, 0x42,
-  0x95, 0x33, 0x11, 0xb9, 0xcc, 0x1d, 0xa0, 0x09, 0x3c, 0x58, 0x86, 0x9c,
-  0x14, 0xe0, 0xf9, 0x78, 0xf6, 0xfe, 0xf4, 0xbb, 0xbf, 0xfd, 0xca, 0x9f,
-  0x70, 0x72, 0x59, 0xbf, 0xc7, 0x22, 0x0e, 0x1d, 0xfc, 0xc7, 0x27, 0x7d,
-  0x6d, 0xe1, 0xe7, 0x9a, 0xe3, 0xf7, 0x25, 0x7f, 0x4a, 0xde, 0xf0, 0xb2,
-  0xa1, 0x08, 0xc0, 0x8a, 0xd2, 0xb3, 0x0c, 0x9c, 0x95, 0x75, 0x72, 0x99,
-  0xc4, 0x72, 0x56, 0x9d, 0x2a, 0x17, 0xee, 0x93, 0x92, 0x52, 0x12, 0xbf,
-  0xc5, 0xdf, 0x80, 0x01, 0x84, 0x6c, 0xf6, 0xb1, 0x22, 0x6b, 0x21, 0x7a,
-  0x96, 0xe0, 0x6b, 0x51, 0x4d, 0x8b, 0x21, 0xc8, 0xc1, 0xc9, 0xc9, 0xd3,
-  0xa9, 0x20, 0x64, 0x68, 0xd1, 0x01, 0x2e, 0xd4, 0xbc, 0x30, 0x2b, 0x8a,
-  0x8d, 0x35, 0xa3, 0x67, 0x60, 0x51, 0x57, 0xa7, 0x77, 0xa7, 0x32, 0x9b,
-  0x7d, 0x32, 0xa3, 0xe2, 0x2a, 0x05, 0xe3, 0x27, 0xc1, 0xd8, 0xaf, 0xf6,
-  0x50, 0xc4, 0x89, 0x55, 0xeb, 0x5c, 0x4c, 0x51, 0x7d, 0xe1, 0x65, 0x75,
-  0xda, 0x87, 0xb8, 0xd2, 0x82, 0x09, 0x2a, 0xd8, 0x0e, 0x54, 0x3d, 0x5a,
-  0x18, 0x8c, 0x59, 0x4c, 0x26, 0xe5, 0xca, 0x0e, 0x92, 0xca, 0x30, 0x11,
-  0x1f, 0xe5, 0x0f, 0x71, 0x77, 0x40, 0x28, 0x97, 0x59, 0xf5, 0x89, 0x8a,
-  0x6b, 0xf1, 0x88, 0x92, 0xf6, 0xad, 0x20, 0x66, 0x68, 0x1c, 0xd1, 0x9c,
-  0x06, 0x0c, 0xda, 0x68, 0xb1, 0x15, 0xb2, 0x2a, 0x34, 0x3b, 0x54, 0x50,
-  0x12, 0x56, 0x5b, 0x30, 0xc2, 0xc0, 0xc1, 0x9f, 0xa4, 0x51, 0xe9, 0x2f,
-  0x7d, 0x28, 0x39, 0x35, 0xb6, 0x32, 0x60, 0x6b, 0x21, 0x6c, 0xae, 0xbe,
-  0xa2, 0xfc, 0xe0, 0x03, 0xfc, 0xe9, 0xba, 0x4a, 0x27, 0x97, 0xe1, 0x6a,
-  0xd6, 0x86, 0xc4, 0xb0, 0x22, 0x43, 0x91, 0xce, 0x2a, 0x2d, 0x52, 0xb5,
-  0x1c, 0x9e, 0x22, 0x7c, 0x08, 0x46, 0x0d, 0x7d, 0xaf, 0xad, 0xb0, 0xa2,
-  0xcd, 0x78, 0xba, 0x23, 0xe7, 0x9a, 0xb0, 0x84, 0xa6, 0x53, 0x49, 0x7f,
-  0x09, 0xfc, 0xb8, 0xee, 0xed, 0xe7, 0x63, 0xbf, 0x7a, 0x1e, 0x7b, 0x81,
-  0xb8, 0xc0, 0x02, 0x52, 0x3d, 0x10, 0xdf, 0xb1, 0xe4, 0x01, 0x96, 0xe4,
-  0x8d, 0x6a, 0x3c, 0x23, 0xbf, 0x79, 0xcc, 0x70, 0x16, 0x81, 0x8c, 0xf8,
-  0x36, 0xaa, 0xb1, 0x2a, 0xa5, 0x8e, 0x24, 0x60, 0x24, 0x18, 0xb0, 0x04,
-  0x5e, 0x1a, 0xa8, 0xf9, 0x74, 0x26, 0xee, 0x8f, 0xfc, 0x88, 0x99, 0x06,
-  0xb2, 0x85, 0xe0, 0x31, 0x8c, 0x4e, 0x31, 0x2c, 0xa7, 0x3b, 0x9e, 0x99,
-  0x28, 0x65, 0x00, 0xf2, 0x2c, 0x59, 0xe7, 0x55, 0x5c, 0xe4, 0x34, 0x14,
-  0x5f, 0x0f, 0x26, 0x55, 0x32, 0xc3, 0x51, 0xb8, 0x82, 0x0e, 0x84, 0x9c,
-  0x88, 0x06, 0x98, 0x94, 0x96, 0x70, 0xdb, 0xa8, 0x1e, 0xc5, 0x39, 0x3d,
-  0x5c, 0x17, 0x4a, 0x6e, 0x97, 0x06, 0x12, 0x54, 0x99, 0x64, 0x6a, 0x26,
-  0xe4, 0x6c, 0x11, 0xd4, 0xc2, 0x85, 0x22, 0xce, 0x68, 0xd8, 0x1a, 0xf1,
-  0xb1, 0x26, 0x45, 0x15, 0x6a, 0x49, 0x72, 0x81, 0x15, 0x02, 0x69, 0xdd,
-  0x55, 0x0b, 0x65, 0x27, 0xa4, 0x61, 0x57, 0x49, 0x23, 0x96, 0x46, 0xcc,
-  0x74, 0x7c, 0xa4, 0x97, 0x79, 0x1f, 0xeb, 0x2b, 0x08, 0x1f, 0x26, 0x80,
-  0x44, 0xc5, 0x79, 0x87, 0xd4, 0xc9, 0x5c, 0x9a, 0x30, 0x96, 0xa9, 0x24,
-  0x4b, 0x8b, 0xe3, 0x45, 0x8d, 0x1b, 0xba, 0x22, 0xf7, 0xa2, 0xa8, 0xb7,
-  0xb7, 0xb7, 0xd9, 0x63, 0x9e, 0xf5, 0xc9, 0x4d, 0xd7, 0x28, 0x86, 0x26,
-  0xf7, 0xf6, 0x36, 0xf0, 0x31, 0x4e, 0xe7, 0x4d, 0x31, 0xce, 0x6a, 0x7b,
-  0xa6, 0x3b, 0xf2, 0xf5, 0xec, 0xec, 0xd5, 0xc1, 0xf9, 0x41, 0xb4, 0x0f,
-  0xbc, 0xf3, 0x85, 0x0f, 0xe5, 0x63, 0x71, 0xf3, 0x5a, 0x31, 0x76, 0x35,
-  0x13, 0x28, 0x62, 0x5f, 0x97, 0xf7, 0xe2, 0xe0, 0xbd, 0xcc, 0xa4, 0xfa,
-  0xf9, 0xba, 0xf0, 0xc0, 0x72, 0x0c, 0x90, 0xf1, 0x40, 0x5b, 0xf5, 0xcc,
-  0xca, 0x6c, 0x8a, 0xd8, 0x1a, 0xf8, 0xb0, 0x1d, 0x3a, 0x91, 0x8c, 0xde,
-  0x79, 0xde, 0x10, 0xbd, 0x87, 0xa7, 0x27, 0x1f, 0xde, 0xbe, 0x1b, 0x46,
-  0xfb, 0x88, 0xdc, 0x48, 0xbe, 0x95, 0xdb, 0x6c, 0xec, 0xe3, 0x75, 0xc3,
-  0xd0, 0x55, 0xca, 0xd8, 0x2d, 0x8e, 0x14, 0xb0, 0x26, 0xa7, 0x29, 0xfe,
-  0xac, 0x1a, 0x66, 0x4c, 0x17, 0xe0, 0x8a, 0xf9, 0x18, 0x7f, 0x4d, 0xc1,
-  0x32, 0xb9, 0x8b, 0x89, 0x94, 0xcf, 0xdd, 0x90, 0x34, 0xba, 0x42, 0x1e,
-  0x88, 0x2f, 0x92, 0x52, 0x8a, 0x94, 0x6e, 0xf3, 0x00, 0xb0, 0x35, 0x29,
-  0xcd, 0x38, 0x3d, 0x07, 0xf4, 0x99, 0x71, 0xa4, 0x41, 0x43, 0x9c, 0x33,
-  0x5a, 0x12, 0xf2, 0xa5, 0x34, 0x50, 0x21, 0xe1, 0x7b, 0xdb, 0x68, 0x43,
-  0x70, 0x08, 0xa7, 0xed, 0xe3, 0xe1, 0xc1, 0xc7, 0xaf, 0x3e, 0xbc, 0x7b,
-  0x75, 0x72, 0x14, 0x46, 0xe3, 0x56, 0x1a, 0x34, 0x16, 0x28, 0x6a, 0x16,
-  0xa8, 0xa3, 0x09, 0x9a, 0x2e, 0x9c, 0x46, 0xdf, 0x1a, 0xf7, 0xcd, 0xe9,
-  0xdb, 0xa3, 0x20, 0x2b, 0xe8, 0x88, 0x12, 0x17, 0x64, 0xd7, 0x8c, 0xd9,
-  0x31, 0x5a, 0x0c, 0x5c, 0x19, 0xa3, 0x4f, 0x95, 0xd2, 0x87, 0x39, 0x82,
-  0x42, 0x06, 0xc8, 0x13, 0x5e, 0x2f, 0xe2, 0x2a, 0xe2, 0x5d, 0x6f, 0x71,
-  0x85, 0xa1, 0x4f, 0x46, 0xda, 0x74, 0x9d, 0xe5, 0x73, 0xc6, 0xe1, 0xa5,
-  0xd1, 0xa3, 0xef, 0x5e, 0x7d, 0xfd, 0xf1, 0xf0, 0xf4, 0x5d, 0xfb, 0xb8,
-  0xbe, 0x3e, 0xfe, 0x9a, 0xa6, 0xde, 0x5a, 0xcd, 0x70, 0x78, 0xf2, 0xf1,
-  0xab, 0x83, 0xc3, 0xbf, 0x1c, 0xbd, 0x7b, 0x15, 0xed, 0x3b, 0x55, 0x6f,
-  0x81, 0xc5, 0x3d, 0x54, 0x32, 0xdc, 0xd3, 0x72, 0xbb, 0x5e, 0xbf, 0x0d,
-  0x28, 0x9c, 0xb5, 0x6f, 0x65, 0x2e, 0x29, 0x33, 0x65, 0xb4, 0xee, 0x30,
-  0x54, 0xd7, 0x4b, 0x55, 0x85, 0x68, 0x46, 0x3b, 0x53, 0x12, 0xe3, 0x73,
-  0x11, 0x72, 0x8b, 0xa5, 0xb6, 0x18, 0x03, 0xa9, 0x71, 0xe0, 0x93, 0x7e,
-  0x0f, 0x57, 0xb1, 0x01, 0x8c, 0xe2, 0x4c, 0xde, 0xa0, 0x25, 0xe7, 0x38,
-  0x6b, 0xf5, 0xe3, 0x91, 0x6a, 0x46, 0xb6, 0x2f, 0x32, 0x39, 0xcb, 0x6e,
-  0x8a, 0x4f, 0x04, 0x46, 0xa5, 0xd8, 0xa2, 0x34, 0x6c, 0xa8, 0xb6, 0x5f,
-  0x10, 0xb8, 0x12, 0xbb, 0x6a, 0xf7, 0x6c, 0x58, 0x9c, 0x56, 0xd6, 0x1b,
-  0xeb, 0xe4, 0xde, 0x26, 0x46, 0x87, 0xf1, 0x4a, 0xc3, 0xc5, 0x70, 0x66,
-  0xba, 0x72, 0x4f, 0xac, 0xe2, 0xba, 0x63, 0x67, 0xdd, 0x6b, 0x7b, 0x40,
-  0x98, 0xa4, 0xac, 0xaa, 0x49, 0x3f, 0xba, 0xca, 0xe7, 0xf5, 0x04, 0xe4,
-  0xd6, 0x55, 0xf5, 0x29, 0xf3, 0xca, 0x06, 0x40, 0x18, 0x8c, 0xe9, 0xb7,
-  0x30, 0x4e, 0x82, 0xc0, 0x08, 0xfd, 0x28, 0xaf, 0xe0, 0x9f, 0xc5, 0x0c,
-  0x86, 0xc2, 0xb7, 0xcb, 0x79, 0x45, 0xbf, 0xaf, 0x40, 0x5c, 0xe4, 0x79,
-  0x4a, 0xb8, 0xa9, 0x58, 0xbf, 0x16, 0x07, 0x7d, 0x8e, 0xdc, 0xf3, 0xf6,
-  0xb6, 0x98, 0x5c, 0xc2, 0xcb, 0x66, 0xea, 0x8b, 0x0e, 0x13, 0x33, 0xb9,
-  0xd4, 0x21, 0xe0, 0xff, 0xe8, 0x88, 0xb6, 0x05, 0xa8, 0x83, 0xfd, 0x7e,
-  0x6b, 0x90, 0x65, 0x3d, 0xb5, 0x8d, 0xbd, 0x8f, 0x83, 0xe8, 0x04, 0xcb,
-  0xd4, 0x25, 0xed, 0xda, 0xa0, 0x98, 0x70, 0xb6, 0x83, 0xd8, 0xa7, 0x62,
-  0xbd, 0x0e, 0x9c, 0xc3, 0xee, 0x6b, 0x13, 0x72, 0xc6, 0xf4, 0x4c, 0xb1,
-  0xe3, 0x89, 0x61, 0x0f, 0xc9, 0x60, 0x34, 0xeb, 0xfb, 0xeb, 0xc9, 0xe9,
-  0xd7, 0xaf, 0x8e, 0xdf, 0xd3, 0x12, 0x1d, 0x84, 0xfa, 0xd0, 0x6a, 0x43,
-  0xc7, 0xab, 0x59, 0x29, 0xdd, 0x37, 0x10, 0xb6, 0xe6, 0x20, 0x08, 0xe3,
-  0x7b, 0x7d, 0xc7, 0xad, 0x21, 0x99, 0x48, 0xfe, 0xac, 0x43, 0xa6, 0x26,
-  0xaf, 0xa1, 0x5c, 0x1e, 0xcf, 0x11, 0xfa, 0xe3, 0xef, 0x93, 0xe2, 0xaa,
-  0x8a, 0xfc, 0x00, 0x2e, 0x9f, 0x61, 0x33, 0x40, 0xdf, 0x00, 0x9c, 0xb1,
-  0xc7, 0x83, 0x39, 0x0d, 0xff, 0x3b, 0x96, 0xba, 0x32, 0xa6, 0x27, 0x02,
-  0xd0, 0x85, 0x62, 0xdb, 0x6e, 0xf3, 0xb9, 0x71, 0xb4, 0x0a, 0x27, 0xe1,
-  0x3a, 0xbd, 0x5b, 0x1b, 0x44, 0xaf, 0xe8, 0xf2, 0x4d, 0x6d, 0x55, 0x6a,
-  0x5a, 0xa5, 0x5a, 0xf0, 0xab, 0x75, 0x36, 0x23, 0xff, 0xca, 0x04, 0xd3,
-  0x02, 0x6f, 0x00, 0xaa, 0x51, 0x1e, 0x44, 0xdf, 0x52, 0xbb, 0x66, 0x22,
-  0xde, 0x05, 0x5c, 0x0d, 0xd4, 0x8d, 0x2e, 0x50, 0xc9, 0x3b, 0x7c, 0x73,
-  0x74, 0x72, 0x42, 0x70, 0x2d, 0x63, 0xc6, 0x0d, 0xfc, 0xe6, 0xed, 0x30,
-  0x6a, 0xca, 0x65, 0xa0, 0xdd, 0x38, 0x25, 0x8c, 0xbc, 0xec, 0xd2, 0x20,
-  0xb4, 0xbe, 0x3a, 0xa4, 0x8e, 0xcc, 0x09, 0x22, 0x11, 0x65, 0x77, 0x3d,
-  0xaf, 0x1f, 0x53, 0xea, 0xa2, 0xfd, 0xa1, 0x6c, 0x3d, 0x3c, 0x7a, 0x7f,
-  0xfe, 0x51, 0x39, 0x60, 0xd9, 0x3b, 0x88, 0xaa, 0x06, 0x5a, 0x77, 0x90,
-  0x19, 0x14, 0xbd, 0x2e, 0xe1, 0x76, 0x1c, 0x4f, 0xb9, 0xda, 0x60, 0xd8,
-  0xbf, 0x1c, 0xfd, 0x0d, 0xb8, 0x95, 0x87, 0x35, 0xd0, 0xff, 0x5f, 0x84,
-  0x01, 0x7e, 0xd8, 0x3d, 0xd1, 0x64, 0xc2, 0x16, 0xdb, 0x99, 0x21, 0xfa,
-  0xaa, 0x5f, 0x07, 0x14, 0x3b, 0x72, 0xb7, 0x49, 0x2f, 0x3b, 0x44, 0xae,
-  0x12, 0xd0, 0x41, 0xbc, 0xfb, 0x2c, 0x9b, 0x48, 0xde, 0x31, 0x96, 0xd9,
-  0xe1, 0x98, 0xb4, 0x4b, 0x22, 0x79, 0x7d, 0x63, 0x8f, 0x31, 0x23, 0x18,
-  0x85, 0x08, 0x4d, 0xbf, 0x64, 0x72, 0xff, 0x73, 0x6a, 0x1a, 0x1f, 0x83,
-  0x68, 0xba, 0x44, 0x3b, 0x16, 0x06, 0x44, 0x30, 0x1e, 0x0e, 0x53, 0xf0,
-  0xe6, 0xe6, 0xa9, 0x67, 0x9d, 0x31, 0x80, 0x31, 0x0d, 0xc1, 0x1c, 0x81,
-  0xa5, 0xc4, 0x8a, 0xc6, 0xfd, 0x2d, 0xf6, 0xac, 0x03, 0x45, 0xe9, 0x93,
-  0x78, 0xad, 0x6f, 0x2d, 0xe7, 0x71, 0x61, 0xe0, 0xc4, 0xef, 0x41, 0x70,
-  0xab, 0xad, 0xec, 0x95, 0x23, 0xf7, 0xb4, 0xcf, 0x37, 0xe1, 0xd5, 0xa0,
-  0x76, 0x04, 0x62, 0xf4, 0xab, 0x02, 0x35, 0x62, 0xfa, 0xa1, 0xf4, 0xfe,
-  0x86, 0xbf, 0xbc, 0x1b, 0x0e, 0x03, 0x38, 0x59, 0x28, 0x4f, 0xe1, 0x41,
-  0xc7, 0xb1, 0x34, 0x3c, 0x7a, 0x0f, 0x86, 0x0e, 0xef, 0xe2, 0xef, 0xa1,
-  0xaf, 0x92, 0x3e, 0xd6, 0x57, 0xb5, 0xb5, 0xef, 0x58, 0xa8, 0xa8, 0xb3,
-  0x32, 0x08, 0x0e, 0x6b, 0xad, 0x01, 0xdc, 0xf1, 0x96, 0xda, 0xa7, 0x88,
-  0xd7, 0x74, 0x0e, 0x7a, 0xff, 0x8f, 0xb3, 0xb6, 0x1f, 0x0e, 0x66, 0xb3,
-  0x89, 0x66, 0xef, 0xbe, 0x42, 0x48, 0x2e, 0x4b, 0x82, 0xb6, 0x70, 0xee,
-  0xba, 0x5e, 0xac, 0x80, 0x37, 0x3d, 0x27, 0x59, 0x29, 0x6e, 0xd1, 0x84,
-  0xd4, 0x2a, 0x25, 0x8b, 0x5c, 0x1b, 0x3e, 0x46, 0x20, 0xda, 0xff, 0xcd,
-  0x2b, 0x44, 0x81, 0xdf, 0xd9, 0x19, 0x02, 0xff, 0x3d, 0x3f, 0x05, 0xfd,
-  0x1c, 0xfe, 0x72, 0xf4, 0xfa, 0xf8, 0x3b, 0xeb, 0x30, 0x3d, 0xb7, 0xae,
-  0x28, 0x2e, 0xac, 0xf5, 0x1a, 0x69, 0x08, 0x74, 0xa4, 0xe3, 0xdb, 0xa1,
-  0xbb, 0x26, 0xbb, 0xe3, 0x6c, 0x13, 0x86, 0xaa, 0xd3, 0xe1, 0x5a, 0x1a,
-  0xf7, 0xdd, 0xbd, 0xad, 0x82, 0xb7, 0x24, 0xc2, 0xe5, 0x63, 0x47, 0x4f,
-  0xe3, 0xb2, 0xca, 0xaa, 0xa6, 0xe3, 0xb4, 0x6e, 0x4f, 0x0a, 0x16, 0x28,
-  0x96, 0x97, 0xfc, 0x00, 0xfd, 0xdb, 0x9f, 0x39, 0x1a, 0x3b, 0x5b, 0x67,
-  0x89, 0xd3, 0xb7, 0x13, 0xd4, 0xb7, 0xbe, 0x33, 0x90, 0x4a, 0xa3, 0x1a,
-  0x0e, 0x5e, 0x2d, 0x05, 0xbd, 0x92, 0x31, 0xdd, 0x32, 0x7f, 0x09, 0x5a,
-  0xc9, 0x0c, 0xd3, 0x5c, 0x84, 0xac, 0x5c, 0xec, 0x48, 0xca, 0x54, 0xc5,
-  0x08, 0x4f, 0xb5, 0xd7, 0xf0, 0x72, 0x02, 0x89, 0x82, 0x18, 0x75, 0x8c,
-  0x2f, 0x85, 0x7f, 0x78, 0x5f, 0xa7, 0xaf, 0xea, 0x0e, 0xb2, 0xfb, 0x4b,
-  0x93, 0x53, 0x67, 0x7e, 0x8c, 0x12, 0x89, 0x2f, 0xc7, 0xa5, 0xe9, 0x5f,
-  0xad, 0x16, 0x7c, 0xda, 0x5f, 0xb9, 0x87, 0x4a, 0x82, 0xe5, 0xed, 0xd5,
-  0xce, 0xa2, 0x31, 0xd0, 0xff, 0xfd, 0xf7, 0x79, 0x06, 0xe2, 0x3b, 0xe5,
-  0x34, 0xc6, 0x38, 0xe6, 0x97, 0x5a, 0x63, 0x24, 0x4f, 0x1a, 0x24, 0x69,
-  0x8e, 0xb2, 0xfb, 0x94, 0x41, 0x76, 0x5b, 0x63, 0x5c, 0x3f, 0x69, 0x90,
-  0x58, 0xbd, 0x61, 0x9f, 0x7d, 0x76, 0xf4, 0xdd, 0xf1, 0x39, 0x98, 0xb6,
-  0xaf, 0x1a, 0x67, 0xa6, 0x14, 0x89, 0x82, 0x0a, 0x75, 0x0e, 0x9c, 0x07,
-  0xaf, 0x8e, 0xb3, 0x4b, 0x52, 0xc0, 0x6a, 0x29, 0x7a, 0xc0, 0xe8, 0x59,
-  0xa5, 0x58, 0x63, 0x59, 0xc9, 0xed, 0x37, 0x30, 0xdd, 0x99, 0x92, 0x1a,
-  0x1c, 0x74, 0x4a, 0xa7, 0x00, 0xb4, 0xb2, 0x75, 0xed, 0xd8, 0x2a, 0x29,
-  0x29, 0xb9, 0xfd, 0xa8, 0x19, 0x31, 0x67, 0x44, 0x3e, 0x42, 0x92, 0xaa,
-  0x1b, 0xb1, 0x6e, 0xdb, 0x10, 0x84, 0x24, 0x08, 0x86, 0x4c, 0x08, 0x40,
-  0x9c, 0x71, 0xc4, 0xc8, 0x56, 0x1b, 0x33, 0xdb, 0x5a, 0x5e, 0xdd, 0x14,
-  0xa1, 0x9d, 0x37, 0xd8, 0x9d, 0x18, 0x5d, 0x6e, 0x15, 0x54, 0x06, 0xc7,
-  0xa6, 0x63, 0x33, 0x9a, 0x4d, 0x79, 0xd1, 0x30, 0x97, 0x02, 0x3e, 0x4a,
-  0x33, 0x84, 0xf9, 0xce, 0x96, 0xd8, 0x80, 0x49, 0x36, 0x61, 0x15, 0x5a,
-  0xea, 0x12, 0xb3, 0x9f, 0x1d, 0x15, 0x60, 0xdb, 0xb8, 0xa0, 0x61, 0xf9,
-  0x13, 0x4a, 0xe4, 0x1e, 0xf3, 0xb1, 0xa8, 0xee, 0xf3, 0x3a, 0xb9, 0x23,
-  0xe5, 0x14, 0x8f, 0xba, 0xb4, 0x31, 0xb1, 0x6f, 0xee, 0x68, 0xd1, 0x9a,
-  0xb6, 0x4b, 0x29, 0x4a, 0x13, 0x23, 0xd4, 0x38, 0xaf, 0x8d, 0xff, 0x2b,
-  0x40, 0x28, 0x37, 0x2e, 0x4d, 0xab, 0x0c, 0x1d, 0x41, 0x81, 0x3c, 0x00,
-  0x49, 0x1b, 0xd6, 0xaf, 0x2a, 0xe0, 0xa8, 0xb4, 0x98, 0x4e, 0xef, 0xf0,
-  0x02, 0xc8, 0x28, 0x3b, 0x5e, 0x9b, 0x3c, 0x60, 0x1b, 0x6a, 0xa4, 0x17,
-  0xb7, 0x41, 0xf3, 0x61, 0x59, 0xad, 0xd2, 0xab, 0x6a, 0xca, 0xb8, 0x20,
-  0x02, 0xf6, 0x05, 0xb7, 0xbc, 0xb8, 0x48, 0x10, 0xea, 0x98, 0x30, 0x01,
-  0x93, 0x9c, 0x5d, 0x0b, 0xba, 0x03, 0x61, 0xc4, 0x34, 0x4b, 0x84, 0x5d,
-  0xb1, 0xaa, 0xc9, 0x93, 0x46, 0x33, 0x56, 0xc4, 0x2f, 0x57, 0xc2, 0xb0,
-  0x6b, 0x4d, 0xa2, 0x3a, 0xe8, 0xd0, 0x1b, 0x19, 0xaf, 0xf6, 0x45, 0x28,
-  0x19, 0xa2, 0x6a, 0xe5, 0xff, 0x3c, 0x73, 0xbf, 0x82, 0x6f, 0xe9, 0x37,
-  0xb8, 0x95, 0x87, 0xfd, 0x84, 0x9b, 0xb0, 0x66, 0xbf, 0x41, 0x69, 0x9c,
-  0x0f, 0x7f, 0xe5, 0x79, 0x9b, 0x5f, 0x9c, 0x6c, 0x38, 0xfa, 0x90, 0x79,
-  0xf2, 0x85, 0xc4, 0x8d, 0x53, 0x84, 0xa2, 0x93, 0x18, 0x42, 0x99, 0xce,
-  0x26, 0xb2, 0x5c, 0xf9, 0x09, 0xe5, 0x74, 0x53, 0xec, 0x97, 0xdd, 0x20,
-  0x66, 0x3e, 0x60, 0x69, 0xbb, 0x61, 0xb1, 0x97, 0xf2, 0x5d, 0x2c, 0xaa,
-  0x63, 0x2f, 0x2a, 0xc1, 0x51, 0x67, 0x86, 0x11, 0x79, 0x38, 0xfe, 0x11,
-  0x56, 0xce, 0xc2, 0x55, 0x55, 0x98, 0x7f, 0xcb, 0x1b, 0x1e, 0xd6, 0x56,
-  0x2b, 0xff, 0x0a, 0x29, 0x36, 0x2f, 0x19, 0x46, 0xd2, 0x5a, 0x45, 0xda,
-  0x68, 0x9c, 0xd7, 0x8b, 0xda, 0x21, 0x76, 0x85, 0x89, 0xde, 0x16, 0x5e,
-  0x6b, 0xb3, 0xe2, 0xb2, 0x96, 0x5e, 0x30, 0x11, 0x56, 0xc1, 0x32, 0x7d,
-  0xc0, 0x04, 0xbe, 0x12, 0xc5, 0xd7, 0x69, 0x7d, 0x86, 0xcc, 0x6f, 0x02,
-  0xc1, 0x20, 0x04, 0x28, 0x37, 0x20, 0x30, 0xbb, 0x76, 0x25, 0xef, 0xe6,
-  0x86, 0xa1, 0x03, 0x2e, 0x0a, 0x21, 0xd3, 0x69, 0x2b, 0xc0, 0xbe, 0xa1,
-  0x76, 0x57, 0xb7, 0x09, 0x09, 0x17, 0x63, 0xbc, 0xda, 0xe0, 0x8d, 0xc9,
-  0x8d, 0x44, 0x0d, 0xd3, 0x07, 0x02, 0xc0, 0x90, 0x53, 0x8e, 0xd5, 0x3e,
-  0xa8, 0x1e, 0x70, 0x0d, 0x31, 0x83, 0xa1, 0xc8, 0x65, 0xd6, 0xa7, 0x98,
-  0xa4, 0x91, 0x9e, 0x9c, 0x78, 0x4c, 0x92, 0xf9, 0x26, 0x2d, 0x3b, 0xc2,
-  0xe7, 0xd8, 0xc7, 0xc4, 0xb1, 0xe9, 0x2c, 0x96, 0xb6, 0xb3, 0x9e, 0x4d,
-  0xb3, 0x9e, 0x5b, 0xe2, 0x94, 0xb3, 0x83, 0xe1, 0x50, 0xf9, 0xe4, 0x30,
-  0xc0, 0x12, 0xea, 0xe3, 0x9d, 0xdc, 0x9b, 0x5e, 0x16, 0xbe, 0x23, 0x44,
-  0x06, 0x69, 0x15, 0x00, 0x6c, 0xb2, 0xb0, 0x7b, 0xc5, 0xf0, 0xb3, 0xb8,
-  0x1e, 0x5d, 0x2f, 0xf3, 0x95, 0xae, 0xf8, 0x76, 0x31, 0x25, 0xc3, 0x46,
-  0x2b, 0xe7, 0xf4, 0x22, 0x9d, 0x09, 0x63, 0xb2, 0x96, 0xbc, 0x2e, 0x74,
-  0x47, 0x82, 0x40, 0x42, 0x49, 0xe6, 0x4c, 0x64, 0xdb, 0x5f, 0xf4, 0x37,
-  0xbc, 0xa8, 0xfe, 0x2f, 0x5a, 0xf4, 0x37, 0x81, 0x45, 0xef, 0xd8, 0x83,
-  0xc3, 0x1f, 0x8b, 0xb6, 0xb6, 0x9e, 0x2b, 0xe2, 0x09, 0xe7, 0x54, 0x20,
-  0x14, 0x6d, 0xe0, 0x83, 0xf0, 0x5c, 0x2c, 0x6d, 0x5e, 0x3d, 0x3f, 0xb9,
-  0x3d, 0xbd, 0xce, 0xa7, 0x76, 0xcd, 0xa7, 0xc0, 0x28, 0xc7, 0xb1, 0x50,
-  0xa5, 0x62, 0xf1, 0xe3, 0x8b, 0x25, 0x8d, 0x6b, 0x61, 0x48, 0xe2, 0x16,
-  0xeb, 0xc4, 0x3a, 0x6a, 0x3b, 0x74, 0x16, 0xce, 0x77, 0x9e, 0x99, 0x90,
-  0xf2, 0xfa, 0x96, 0xe6, 0x98, 0x1f, 0x90, 0x90, 0x9e, 0xa4, 0x53, 0xe2,
-  0x4c, 0xb6, 0xcf, 0xad, 0xc6, 0xca, 0xb0, 0x74, 0x97, 0x65, 0x42, 0xfd,
-  0x53, 0x27, 0xc9, 0x7d, 0xa0, 0xdd, 0x87, 0x76, 0x60, 0xa6, 0xc8, 0x0d,
-  0x1c, 0xcf, 0xab, 0x34, 0xc7, 0x18, 0x05, 0xa9, 0x09, 0xe2, 0x35, 0x44,
-  0xbf, 0x23, 0xee, 0x68, 0x71, 0x69, 0x32, 0x7c, 0xe4, 0xab, 0x1e, 0x40,
-  0x2d, 0x26, 0x30, 0xd4, 0x6d, 0x10, 0x89, 0x70, 0xaf, 0xa0, 0xcd, 0xe7,
-  0x76, 0x8b, 0x46, 0xce, 0x25, 0x81, 0xa6, 0x34, 0xe3, 0x67, 0xbb, 0xf4,
-  0x53, 0x81, 0xa2, 0xc9, 0x77, 0x52, 0x87, 0xec, 0xf1, 0xa5, 0xbc, 0x69,
-  0xbf, 0xc2, 0x02, 0xf9, 0x0c, 0xc5, 0x9d, 0xf4, 0x73, 0x1c, 0x80, 0xd1,
-  0x87, 0x39, 0x09, 0x8d, 0xf6, 0xd0, 0x6c, 0x49, 0x27, 0x36, 0xb3, 0xac,
-  0xc9, 0xba, 0x2f, 0xed, 0x1e, 0x9b, 0x29, 0x69, 0x41, 0xc8, 0xba, 0xca,
-  0x59, 0x73, 0xd7, 0x68, 0x6a, 0x50, 0x1a, 0xbd, 0x3f, 0x3a, 0x7f, 0x4f,
-  0xf9, 0xd1, 0x28, 0x02, 0x3c, 0xfb, 0x37, 0x29, 0xd7, 0x0c, 0x7a, 0xbe,
-  0x08, 0x34, 0xab, 0xa2, 0x58, 0x11, 0xc1, 0x3d, 0x54, 0xcc, 0x8e, 0xf3,
-  0x3f, 0xf5, 0x3d, 0x53, 0xe6, 0xca, 0x24, 0xb7, 0xb9, 0x93, 0xcd, 0xee,
-  0x2e, 0x5b, 0x5b, 0xb6, 0x46, 0x08, 0x16, 0x7e, 0x95, 0x0a, 0x57, 0x0a,
-  0x6e, 0xc1, 0x40, 0x0a, 0x3e, 0x14, 0x5f, 0x44, 0x7d, 0x6f, 0xf8, 0x10,
-  0xd7, 0xbe, 0x15, 0x65, 0xe0, 0x9e, 0x94, 0x4f, 0xab, 0x6a, 0xc0, 0x53,
-  0x30, 0x26, 0xbf, 0x7c, 0x4d, 0x2a, 0x6e, 0xb9, 0xda, 0x8e, 0xfb, 0x11,
-  0x46, 0x3b, 0x1b, 0x1b, 0x81, 0x8a, 0xf8, 0xe4, 0x02, 0xc4, 0xaa, 0x28,
-  0x7a, 0x02, 0x5c, 0xc3, 0xe0, 0x21, 0xb4, 0x5f, 0xa4, 0x7e, 0x56, 0x68,
-  0x8b, 0xc4, 0x97, 0x98, 0xd4, 0x81, 0x14, 0xf3, 0x8d, 0x8e, 0x2d, 0x96,
-  0x32, 0xdf, 0x12, 0x90, 0x8e, 0x12, 0xad, 0x25, 0x5d, 0x18, 0x65, 0x87,
-  0xeb, 0x92, 0xac, 0x47, 0x90, 0x3c, 0x6b, 0x9c, 0xad, 0xe4, 0xcd, 0xcc,
-  0x93, 0xe0, 0x5b, 0xbb, 0x01, 0x8e, 0x18, 0x9e, 0x9f, 0xbe, 0x17, 0x16,
-  0xf3, 0x6f, 0x67, 0xa2, 0x08, 0x3d, 0x61, 0xf1, 0xbf, 0xfb, 0x3e, 0xa0,
-  0x32, 0x83, 0x2d, 0xe3, 0xb8, 0xa6, 0xb1, 0x9f, 0xf3, 0x55, 0x96, 0x01,
-  0xef, 0x11, 0x6d, 0x49, 0x96, 0xf6, 0x8d, 0x60, 0xbb, 0x69, 0x3b, 0x48,
-  0x3d, 0x99, 0xce, 0x4b, 0x7c, 0xd0, 0x4e, 0xf9, 0x04, 0x33, 0x96, 0x19,
-  0xf2, 0x91, 0xa0, 0x9a, 0x61, 0x3b, 0x49, 0x71, 0x1c, 0x68, 0x69, 0x9a,
-  0xc7, 0x8b, 0x7c, 0x88, 0x4e, 0x6d, 0xc7, 0x4f, 0x96, 0xf1, 0xb2, 0x4c,
-  0x63, 0x28, 0xe3, 0x8f, 0x29, 0x2b, 0x8a, 0x3b, 0x62, 0x4a, 0xad, 0x4f,
-  0xc2, 0x89, 0x01, 0x23, 0xaf, 0x55, 0x73, 0x51, 0x8e, 0xc5, 0xa5, 0x22,
-  0x57, 0xa7, 0xda, 0x12, 0x56, 0x05, 0xb7, 0xf7, 0xfe, 0xd9, 0xe9, 0xfb,
-  0x73, 0x73, 0xeb, 0xe3, 0x67, 0xe9, 0x07, 0xad, 0xd3, 0x83, 0xc5, 0xf1,
-  0xe2, 0x53, 0x91, 0xbb, 0x0d, 0x77, 0xc0, 0xcb, 0xce, 0x10, 0x73, 0x81,
-  0xb7, 0x84, 0xc6, 0xd1, 0x81, 0xfa, 0x14, 0x5a, 0x1b, 0x17, 0xec, 0xdd,
-  0x34, 0xd2, 0x86, 0x3d, 0x62, 0x74, 0xd5, 0x74, 0xb4, 0xcc, 0xb0, 0xf8,
-  0xa8, 0xdb, 0x9b, 0x01, 0xce, 0xc0, 0x2b, 0xe1, 0xfd, 0xd1, 0xf0, 0x9c,
-  0xa7, 0x8e, 0x7f, 0xf3, 0xa6, 0xce, 0xf0, 0x8b, 0xf2, 0x43, 0xcf, 0x86,
-  0x31, 0x9c, 0x81, 0x45, 0x59, 0xe8, 0x59, 0xc6, 0xf1, 0x0d, 0x4e, 0xa5,
-  0x43, 0xb1, 0x6d, 0xa7, 0x16, 0x90, 0x44, 0xa6, 0xf0, 0x09, 0x9d, 0x6f,
-  0xfa, 0x41, 0x4f, 0x3e, 0xd2, 0x03, 0xcd, 0x4c, 0xce, 0x43, 0xa3, 0xb3,
-  0xf0, 0xf6, 0x8e, 0x1d, 0x62, 0x86, 0x57, 0x95, 0x8c, 0x70, 0xcc, 0xd0,
-  0x9f, 0x13, 0xfa, 0x61, 0xac, 0xbc, 0x42, 0xf7, 0x05, 0x73, 0x05, 0x3f,
-  0x67, 0xc7, 0xd9, 0x35, 0x61, 0x18, 0xd5, 0x16, 0x9c, 0xb9, 0xe0, 0x8f,
-  0xb5, 0x30, 0x86, 0x14, 0x8e, 0x16, 0xcf, 0x6d, 0x33, 0xab, 0x7f, 0x95,
-  0x8c, 0x6d, 0x25, 0x1f, 0xaf, 0xbd, 0x71, 0x2d, 0x48, 0xbc, 0x8f, 0xd4,
-  0xb4, 0xa4, 0x9c, 0x64, 0x98, 0x78, 0x72, 0xc1, 0x96, 0x23, 0xbe, 0x16,
-  0x6a, 0x7b, 0xea, 0x7c, 0x43, 0xae, 0x20, 0x74, 0x0e, 0x8e, 0x9c, 0xab,
-  0x1a, 0x3e, 0xc5, 0xa7, 0xd8, 0x2a, 0xfc, 0x18, 0xe5, 0x31, 0x17, 0xc5,
-  0x20, 0x3a, 0xc3, 0x10, 0x2f, 0xe9, 0x4d, 0xd5, 0xff, 0xb4, 0xc3, 0xf1,
-  0x31, 0xc1, 0x8c, 0x24, 0x55, 0x05, 0x10, 0xaf, 0x72, 0xc0, 0x3f, 0x21,
-  0xe8, 0x4a, 0xdb, 0x34, 0xd7, 0x5b, 0xef, 0x4b, 0xfb, 0x72, 0x05, 0x4b,
-  0x01, 0x13, 0xbe, 0xfd, 0xc8, 0x8e, 0x70, 0x16, 0xd8, 0xf7, 0x34, 0x84,
-  0x11, 0xce, 0x78, 0x9a, 0x71, 0x3f, 0xc8, 0x72, 0xa4, 0x11, 0x2e, 0xf5,
-  0x99, 0x86, 0x10, 0x77, 0x86, 0xe2, 0xeb, 0xe0, 0x40, 0x48, 0x85, 0xf8,
-  0xf9, 0x70, 0x6a, 0x50, 0x99, 0x83, 0xb1, 0x72, 0x94, 0xb5, 0xc6, 0x9b,
-  0xd8, 0xc8, 0x1f, 0x26, 0xda, 0x9a, 0x1e, 0x06, 0x6d, 0xea, 0x26, 0xcd,
-  0xfc, 0xba, 0x1d, 0xe6, 0x45, 0xc3, 0x37, 0xe6, 0x06, 0x6b, 0xcc, 0x4e,
-  0xea, 0x98, 0xc5, 0xa9, 0x77, 0x91, 0x10, 0x0a, 0x79, 0x02, 0xf7, 0xbb,
-  0x6b, 0x00, 0xec, 0xec, 0xda, 0xa1, 0x2e, 0x09, 0x97, 0x5d, 0x06, 0xc3,
-  0x76, 0x07, 0x4e, 0x0e, 0x99, 0xe9, 0x0f, 0x9f, 0x99, 0x27, 0x5d, 0x83,
-  0x32, 0x70, 0xa8, 0x9c, 0x6f, 0x3c, 0x17, 0xbb, 0x18, 0x0d, 0xe3, 0xfc,
-  0xde, 0xc2, 0x0c, 0x0c, 0x38, 0x0d, 0x98, 0x3d, 0x6b, 0x38, 0xb8, 0xf9,
-  0x8d, 0x38, 0x67, 0xaf, 0xc5, 0x73, 0x33, 0x4d, 0xee, 0xbc, 0x4b, 0x7e,
-  0x3a, 0x9f, 0x4a, 0x8d, 0xad, 0xf3, 0xa5, 0x17, 0xe2, 0xe6, 0xe0, 0xa2,
-  0x70, 0x83, 0x3f, 0xef, 0x2c, 0x04, 0x6d, 0x2e, 0x35, 0xa9, 0xb5, 0x10,
-  0x61, 0x4c, 0x35, 0x97, 0x95, 0x69, 0xf6, 0x1c, 0xe8, 0x18, 0x85, 0x82,
-  0x56, 0x14, 0x5e, 0x75, 0x38, 0x14, 0x4e, 0x43, 0x06, 0xa4, 0xb7, 0x3c,
-  0xc6, 0xbf, 0x52, 0x64, 0xe5, 0x40, 0x4c, 0xaf, 0x4c, 0x7f, 0x22, 0x65,
-  0x72, 0xc0, 0xd7, 0x0d, 0x23, 0x34, 0xf1, 0x2a, 0x11, 0x8a, 0xd1, 0x0a,
-  0xbc, 0x9d, 0x97, 0xe2, 0xc3, 0x12, 0x1f, 0x09, 0xe6, 0x41, 0xe7, 0x69,
-  0xed, 0xa5, 0x5b, 0xee, 0x6e, 0x5a, 0xff, 0x6e, 0x9a, 0x96, 0x82, 0x78,
-  0xe1, 0x56, 0x93, 0x62, 0x4b, 0xcc, 0xe1, 0x9b, 0xe8, 0xed, 0xab, 0x5d,
-  0x74, 0xb2, 0x5f, 0xa5, 0xe5, 0xac, 0xc4, 0x5a, 0x47, 0xe5, 0xe1, 0xd3,
-  0xbf, 0x38, 0x83, 0x6d, 0xd9, 0x94, 0x20, 0xed, 0xe0, 0xa3, 0xe2, 0x8c,
-  0x4d, 0x06, 0xd8, 0x42, 0x44, 0xf7, 0xbb, 0xea, 0x4b, 0xee, 0x99, 0x76,
-  0xb8, 0xd1, 0x1e, 0x0a, 0xa4, 0xb7, 0x84, 0xe0, 0xd0, 0x9c, 0x8f, 0x6c,
-  0x5b, 0x09, 0x56, 0xde, 0xcf, 0x28, 0x9a, 0x72, 0x85, 0xa6, 0x41, 0xe0,
-  0x44, 0xed, 0xb2, 0xd4, 0x3c, 0xe4, 0x73, 0x8f, 0x4a, 0xac, 0xff, 0x1a,
-  0xa9, 0xe8, 0xad, 0x60, 0xf5, 0xee, 0xae, 0xeb, 0x5a, 0xc0, 0x26, 0x7d,
-  0x12, 0x7c, 0xa1, 0x60, 0x0b, 0xea, 0x28, 0xce, 0xb3, 0xcf, 0xcc, 0xb3,
-  0x94, 0xf7, 0x91, 0x4b, 0xdf, 0x8d, 0x05, 0x6f, 0x88, 0xfa, 0xab, 0x46,
-  0x82, 0xaa, 0x66, 0xac, 0xf1, 0x38, 0xb4, 0x37, 0x8a, 0xe2, 0xee, 0xcb,
-  0x96, 0x43, 0x85, 0x9a, 0x67, 0x1b, 0xc6, 0xa4, 0x45, 0x65, 0xb3, 0x6b,
-  0xf7, 0x70, 0x3e, 0xe3, 0x5b, 0xfa, 0xac, 0x5d, 0x1c, 0xac, 0x32, 0x30,
-  0x75, 0x01, 0x5b, 0xf5, 0xa8, 0x33, 0xeb, 0x1f, 0x1e, 0x44, 0x5d, 0x70,
-  0x27, 0xc4, 0xeb, 0xce, 0x47, 0x36, 0xe5, 0xcc, 0xc0, 0x92, 0x8b, 0xab,
-  0x3c, 0xfb, 0x39, 0x75, 0x8a, 0xa8, 0xa8, 0x63, 0x61, 0x43, 0x53, 0x7a,
-  0xb6, 0x25, 0x02, 0xe3, 0x26, 0x99, 0x64, 0x22, 0x14, 0x1b, 0x3d, 0x94,
-  0x9f, 0x6d, 0x0b, 0xd7, 0xde, 0x65, 0x78, 0x44, 0x49, 0xff, 0xa7, 0xd2,
-  0x75, 0x4c, 0x65, 0x4e, 0x1b, 0xf0, 0xa9, 0xcf, 0x76, 0x44, 0xeb, 0x52,
-  0xed, 0x18, 0xef, 0x5e, 0x24, 0xc4, 0x84, 0xda, 0x15, 0xb5, 0xc5, 0xf4,
-  0x33, 0xb9, 0xf7, 0x64, 0x2b, 0x29, 0xf8, 0x8b, 0xaa, 0xa6, 0x48, 0x68,
-  0x4c, 0x8d, 0x2d, 0xd3, 0x5b, 0x0e, 0x22, 0x25, 0xbe, 0xb2, 0xf5, 0xec,
-  0x59, 0x87, 0x6f, 0xb2, 0xe2, 0x4b, 0xf3, 0x88, 0x78, 0xc9, 0x79, 0xfe,
-  0xb9, 0x3d, 0x09, 0x8d, 0x56, 0x4f, 0xda, 0xe7, 0xa7, 0xef, 0xb6, 0xf3,
-  0xd2, 0xb3, 0xc4, 0x6e, 0x94, 0x94, 0x9b, 0x69, 0x07, 0xda, 0x2d, 0x5f,
-  0x9a, 0xcf, 0x4f, 0x0a, 0x94, 0xa6, 0xce, 0xf7, 0x98, 0xa5, 0x5e, 0x53,
-  0x38, 0xd3, 0x9a, 0x07, 0x79, 0x74, 0x1e, 0xc2, 0x60, 0x7b, 0xf6, 0x52,
-  0x78, 0x43, 0xef, 0x4b, 0x63, 0xb0, 0x76, 0xbd, 0xf1, 0x7c, 0xc3, 0x55,
-  0x57, 0xc7, 0x98, 0xa4, 0xca, 0x58, 0x95, 0x9d, 0x2f, 0x30, 0x67, 0x1c,
-  0x4f, 0x10, 0x2b, 0x7a, 0xc2, 0xcf, 0xd8, 0x0e, 0x3b, 0xf6, 0xb1, 0xad,
-  0x86, 0xd0, 0x3d, 0x77, 0x15, 0xa8, 0xe8, 0xf8, 0x95, 0xf3, 0xe0, 0xb6,
-  0x5d, 0x60, 0x32, 0x41, 0x6d, 0xe0, 0x9e, 0x7d, 0x55, 0x55, 0xb4, 0x8a,
-  0x6f, 0x39, 0xa8, 0x1d, 0xcf, 0x99, 0x33, 0xde, 0x15, 0x1c, 0x05, 0x25,
-  0xf2, 0x7b, 0xcf, 0x30, 0x3b, 0x1c, 0x9a, 0x06, 0x02, 0xb6, 0x79, 0x80,
-  0xb7, 0xf7, 0xcf, 0x9f, 0x2d, 0x78, 0x56, 0x2e, 0xcd, 0xca, 0x5c, 0xf5,
-  0xce, 0x7b, 0xcf, 0x1b, 0xc7, 0x5c, 0x6d, 0x01, 0x2d, 0xdb, 0x87, 0x53,
-  0x46, 0x31, 0xee, 0x55, 0x0c, 0x1c, 0xfe, 0x4f, 0xf5, 0x0b, 0x96, 0xd8,
-  0xe1, 0xa6, 0xfa, 0x9f, 0xee, 0x54, 0x5f, 0xb8, 0xb5, 0xff, 0xec, 0x14,
-  0x34, 0x49, 0x1c, 0x6e, 0x2b, 0xf2, 0x96, 0x13, 0xcf, 0x19, 0x81, 0xb7,
-  0x1b, 0x54, 0x88, 0x79, 0x6e, 0x85, 0x06, 0x5b, 0x80, 0x82, 0xb6, 0x39,
-  0x76, 0x3b, 0x21, 0xa1, 0xb8, 0x17, 0x07, 0x94, 0xe3, 0x43, 0xdd, 0x68,
-  0x9d, 0x80, 0xea, 0x7a, 0xce, 0xe6, 0xb6, 0x59, 0x51, 0x08, 0xde, 0xe5,
-  0xc5, 0x56, 0x4b, 0x72, 0x91, 0xce, 0x78, 0x08, 0xb3, 0x65, 0x7b, 0x5c,
-  0xbb, 0x49, 0xa3, 0x89, 0x5a, 0x16, 0xec, 0xe3, 0x42, 0x67, 0x90, 0x1d,
-  0x40, 0xf4, 0x15, 0x2c, 0x34, 0x29, 0x25, 0x7b, 0xac, 0xbd, 0x43, 0x2f,
-  0x76, 0x0c, 0x89, 0xc8, 0x2a, 0x01, 0x03, 0xbf, 0xd3, 0x84, 0x7f, 0xc1,
-  0x3b, 0xff, 0x36, 0xab, 0x38, 0x18, 0x08, 0xec, 0xfc, 0xfe, 0x7c, 0x78,
-  0x16, 0x1d, 0x0e, 0xd3, 0xbf, 0x4b, 0x76, 0xa1, 0x23, 0xe0, 0x5e, 0x3c,
-  0x0b, 0x3f, 0x3d, 0x14, 0xff, 0xdc, 0x31, 0xf5, 0x21, 0x04, 0x7a, 0x36,
-  0x5e, 0x7a, 0x2e, 0x4c, 0xad, 0x0e, 0x7c, 0xf6, 0x63, 0xe1, 0xd4, 0x48,
-  0xa2, 0x4d, 0x1a, 0xbb, 0xf3, 0xe2, 0x85, 0x35, 0x4d, 0xae, 0xe7, 0xf9,
-  0x27, 0xa3, 0xf4, 0x49, 0x9f, 0x13, 0xdd, 0x2a, 0xe7, 0x8d, 0x97, 0xca,
-  0xe0, 0x8e, 0x47, 0xd3, 0x54, 0x73, 0x48, 0xc6, 0xa4, 0x3a, 0x10, 0x25,
-  0xa0, 0x09, 0x52, 0xb2, 0x51, 0xa8, 0xf3, 0x72, 0xc3, 0xdc, 0xa2, 0x82,
-  0x88, 0xfe, 0x89, 0x52, 0x4b, 0x85, 0x83, 0x34, 0x73, 0x7c, 0x96, 0xe5,
-  0xe8, 0x4b, 0xb0, 0x8f, 0x38, 0x23, 0x6c, 0x36, 0x84, 0x79, 0x5b, 0x6d,
-  0x60, 0x0c, 0x34, 0xe7, 0x71, 0x66, 0x84, 0x21, 0xc6, 0x17, 0xa7, 0xc2,
-  0x7c, 0x59, 0xae, 0x9e, 0xb3, 0x96, 0x3b, 0xcc, 0xbc, 0xb4, 0xad, 0x9c,
-  0x8b, 0xcd, 0x21, 0x42, 0x1a, 0x2a, 0x67, 0x62, 0x90, 0xf2, 0x40, 0x08,
-  0xbb, 0xa2, 0x2f, 0xdb, 0x11, 0x76, 0x74, 0x84, 0x16, 0x3e, 0xb9, 0x19,
-  0xcc, 0xf8, 0x6a, 0x12, 0xcf, 0x58, 0x7a, 0xb9, 0x2b, 0x21, 0xa3, 0x87,
-  0xfc, 0x79, 0xeb, 0xdb, 0x91, 0x4c, 0x5d, 0x13, 0xe0, 0xf1, 0x7f, 0xea,
-  0xbe, 0x6b, 0x37, 0xe9, 0x10, 0x67, 0x1e, 0xd7, 0x5b, 0x68, 0xa3, 0xea,
-  0x45, 0xfe, 0xbc, 0xa6, 0x07, 0xcf, 0x03, 0x05, 0x5c, 0xe0, 0xcf, 0x7b,
-  0xc9, 0xfc, 0x4b, 0x09, 0x46, 0x0e, 0xb3, 0x18, 0x93, 0x0f, 0x93, 0x63,
-  0xd8, 0x2b, 0xc8, 0xf1, 0x7c, 0x6a, 0xed, 0x41, 0xa6, 0x07, 0xf9, 0xa4,
-  0x29, 0x5b, 0x6f, 0xe2, 0x69, 0x01, 0xd8, 0x89, 0xe8, 0x5e, 0x07, 0xa1,
-  0xb1, 0x33, 0x53, 0x1c, 0xc3, 0x01, 0x70, 0x63, 0x19, 0x0b, 0x75, 0x02,
-  0x46, 0xf1, 0x77, 0xdf, 0xf1, 0xd1, 0x32, 0x1d, 0x52, 0x24, 0xf6, 0x48,
-  0x1c, 0x2b, 0x61, 0x4d, 0x56, 0x0f, 0x71, 0xb3, 0x28, 0x62, 0x57, 0xa6,
-  0x93, 0x14, 0xfb, 0x94, 0xb1, 0xb1, 0x4a, 0x52, 0x2e, 0x94, 0xf0, 0x0d,
-  0xa4, 0xe4, 0xc8, 0x3b, 0x26, 0x78, 0xd6, 0xdc, 0xe7, 0xfb, 0x86, 0x84,
-  0x07, 0x9a, 0xda, 0x30, 0x83, 0xaf, 0x3e, 0x7c, 0x3d, 0xfc, 0xac, 0x99,
-  0x2b, 0x94, 0xde, 0xa1, 0x7b, 0x04, 0x45, 0xaa, 0x56, 0x6b, 0x10, 0xe9,
-  0x15, 0xf9, 0x95, 0x3d, 0xe9, 0x08, 0x6a, 0x3d, 0xc5, 0x3e, 0xc4, 0x48,
-  0x1b, 0x2a, 0x7d, 0xe3, 0x02, 0x19, 0xc7, 0x53, 0x0c, 0x2f, 0xa2, 0x86,
-  0xbe, 0x82, 0x41, 0xd1, 0x2b, 0x06, 0xa7, 0xc7, 0x74, 0xe5, 0x3c, 0xfa,
-  0x3a, 0xab, 0xdf, 0xcc, 0x2f, 0xf6, 0x4c, 0xfc, 0xfd, 0x0a, 0xc6, 0x9d,
-  0x5f, 0x50, 0x4b, 0x6a, 0x1c, 0x9c, 0xff, 0x43, 0x63, 0x56, 0x9f, 0x7d,
-  0x76, 0xf0, 0xe1, 0xfc, 0xcd, 0xe9, 0xfb, 0x61, 0xb4, 0x8e, 0x88, 0xa0,
-  0xe7, 0xef, 0x8f, 0xbf, 0xfa, 0x70, 0x0e, 0xff, 0xd4, 0x6f, 0xbc, 0x4a,
-  0xf2, 0x0c, 0x54, 0x1c, 0x38, 0x4b, 0x69, 0x0e, 0xe2, 0xea, 0x4a, 0xa9,
-  0xcf, 0xbd, 0x21, 0x81, 0xcd, 0x8b, 0x52, 0xd1, 0x9f, 0x31, 0x11, 0xa9,
-  0x10, 0x91, 0xc3, 0x9d, 0x2b, 0x72, 0xae, 0xeb, 0x2b, 0xac, 0x03, 0x26,
-  0x6b, 0x41, 0x99, 0x6a, 0x29, 0x4c, 0x74, 0xfe, 0xe6, 0xe0, 0xdd, 0x5f,
-  0x86, 0x9a, 0x21, 0xf2, 0xed, 0xb7, 0xdf, 0xb6, 0x73, 0x08, 0xc8, 0x10,
-  0xaa, 0xd2, 0xcf, 0x3e, 0x1b, 0x1e, 0x1d, 0x45, 0x07, 0x27, 0xc3, 0x53,
-  0x7d, 0xe0, 0xb2, 0x9e, 0xad, 0x6e, 0xae, 0x81, 0x92, 0x7f, 0x95, 0xd6,
-  0xf0, 0x97, 0xcf, 0x3e, 0xfb, 0xff, 0x00, 0x02, 0x81, 0x3b, 0x56, 0x1d,
-  0x64, 0x03, 0x00,
+  0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xec, 0xfd,
+  0x7b, 0x7b, 0xdb, 0xc6, 0xb5, 0x37, 0x0c, 0xff, 0x9f, 0x4f, 0x81, 0xcd,
+  0xbe, 0xbd, 0x25, 0xb5, 0x04, 0x75, 0xf2, 0x21, 0x51, 0x95, 0x3c, 0x51,
+  0x64, 0x39, 0x76, 0x2b, 0x5b, 0xaa, 0x29, 0x37, 0xe9, 0x4e, 0x72, 0xf9,
+  0x02, 0x49, 0x50, 0x42, 0x4c, 0x12, 0x2c, 0x00, 0xea, 0x90, 0xee, 0x3e,
+  0x9f, 0xfd, 0x5d, 0xc7, 0x99, 0x01, 0x66, 0x40, 0x8a, 0xb2, 0x5d, 0x77,
+  0xbf, 0xef, 0xdd, 0xbd, 0x63, 0x49, 0x24, 0x30, 0xc7, 0x35, 0x6b, 0xd6,
+  0xf1, 0xb7, 0xa2, 0x68, 0xd5, 0xff, 0xde, 0xd1, 0x7f, 0xef, 0xe0, 0x7f,
+  0xf0, 0xf3, 0x8b, 0x28, 0x3a, 0x2f, 0xf2, 0x5f, 0xd3, 0x61, 0x15, 0x7e,
+  0xf6, 0xdd, 0xbb, 0xff, 0x89, 0xf8, 0xff, 0xe0, 0x9d, 0x9f, 0xe1, 0xe7,
+  0x17, 0x4b, 0xdb, 0xde, 0x8e, 0xec, 0x0b, 0xff, 0xf3, 0x6e, 0x2b, 0x5a,
+  0xf5, 0xc2, 0xff, 0x44, 0x9b, 0xf4, 0xc2, 0x3b, 0xe9, 0xe1, 0x10, 0x7f,
+  0x7f, 0xf7, 0x6e, 0x79, 0x27, 0x3f, 0xe3, 0xa8, 0xf0, 0x9f, 0x6d, 0x7c,
+  0xef, 0xe7, 0x77, 0xf8, 0x2b, 0x7c, 0xf2, 0xc5, 0x17, 0xaf, 0x8f, 0x5e,
+  0x9d, 0xe8, 0xab, 0xc3, 0x45, 0x31, 0x89, 0xe2, 0xa8, 0x2a, 0x92, 0x59,
+  0x39, 0x4e, 0x8b, 0x28, 0x89, 0xde, 0xbe, 0x39, 0xfd, 0xe2, 0x8b, 0xfe,
+  0xdf, 0x5f, 0x9f, 0x9d, 0xf7, 0x5f, 0xf6, 0x6b, 0x8f, 0xfd, 0x94, 0xcf,
+  0xab, 0x2c, 0x9f, 0x95, 0x30, 0x7c, 0x78, 0xa8, 0xfc, 0xe5, 0x8b, 0x2f,
+  0x9e, 0x9d, 0xf4, 0x8f, 0xdf, 0xbc, 0x3c, 0xbf, 0x78, 0x79, 0xf6, 0xba,
+  0xf6, 0x64, 0x94, 0x95, 0x11, 0x34, 0x55, 0xe5, 0xf9, 0x24, 0x1a, 0xe7,
+  0x85, 0x69, 0xbe, 0xc8, 0x66, 0x97, 0xd1, 0x28, 0xa9, 0x92, 0x68, 0x5c,
+  0xe4, 0xd3, 0x08, 0xbf, 0xc9, 0xe1, 0xb9, 0x32, 0x2d, 0xae, 0xd3, 0xa2,
+  0x17, 0xbd, 0xac, 0xa2, 0x72, 0x31, 0x9f, 0xe7, 0x45, 0x55, 0x6a, 0x73,
+  0xd5, 0x55, 0x5a, 0xa6, 0xd1, 0xbc, 0xc8, 0xab, 0x7c, 0x98, 0x4f, 0xca,
+  0x83, 0xe8, 0xd9, 0xcb, 0xe3, 0x8b, 0x6e, 0xf4, 0xfc, 0xe5, 0xe9, 0x09,
+  0xfc, 0x7b, 0x71, 0x4e, 0xff, 0xf4, 0xbb, 0xd1, 0xf7, 0x67, 0xe7, 0x2f,
+  0x4e, 0xde, 0xe8, 0x4f, 0xf8, 0x20, 0x7a, 0x71, 0x81, 0xdf, 0xd2, 0x8f,
+  0x7e, 0x57, 0x9b, 0x7b, 0xf9, 0xea, 0x08, 0x3f, 0xc4, 0x1f, 0xf8, 0xcc,
+  0xe9, 0x33, 0xfa, 0x13, 0x7f, 0xc0, 0x9f, 0xaf, 0xfe, 0x7a, 0x01, 0x4d,
+  0x9f, 0x9f, 0x9d, 0xef, 0xf3, 0xbf, 0xf0, 0xd1, 0x9b, 0x8b, 0x57, 0xe7,
+  0xfc, 0x2f, 0xfd, 0xd1, 0x87, 0x3f, 0xfa, 0xc7, 0xe7, 0xa6, 0xb9, 0x3e,
+  0x8d, 0xa0, 0xff, 0xea, 0x3b, 0xfa, 0xa7, 0x8f, 0xff, 0xf2, 0x07, 0x34,
+  0xa6, 0x8b, 0x93, 0xd3, 0xd7, 0x27, 0xd0, 0xe2, 0x05, 0x3d, 0xf5, 0x43,
+  0x3f, 0x4a, 0x66, 0x23, 0xf8, 0xd1, 0xef, 0x45, 0x17, 0x57, 0x69, 0x34,
+  0xcc, 0xa7, 0x53, 0xfc, 0x00, 0xd6, 0x4a, 0x9b, 0x1b, 0xa5, 0x65, 0x76,
+  0x39, 0x4b, 0x47, 0xb8, 0x2a, 0x37, 0x79, 0xf1, 0x3e, 0xba, 0xc9, 0xaa,
+  0xab, 0x7c, 0x51, 0x45, 0x0b, 0x58, 0xa1, 0x28, 0x9b, 0x55, 0x69, 0x91,
+  0x0c, 0x71, 0x0b, 0x7a, 0x5f, 0xd4, 0x96, 0x3b, 0x1f, 0xc3, 0xda, 0x96,
+  0xb0, 0x90, 0x83, 0x45, 0x39, 0xc9, 0x93, 0x11, 0x7c, 0x80, 0xaf, 0x8c,
+  0x17, 0x13, 0x58, 0xf9, 0x6c, 0xf8, 0xbe, 0x8c, 0x26, 0xd9, 0x7b, 0x5a,
+  0xc5, 0xdb, 0x3b, 0x5d, 0xe1, 0x2e, 0x37, 0x9a, 0x2c, 0x60, 0x85, 0x67,
+  0xb1, 0x59, 0xee, 0x6c, 0x98, 0x60, 0x07, 0xb4, 0xac, 0xd1, 0x62, 0x8e,
+  0xad, 0x75, 0x69, 0x0d, 0xa3, 0x79, 0x5e, 0xc2, 0x4b, 0xfd, 0xfe, 0x29,
+  0x8c, 0x7c, 0x36, 0x4b, 0x69, 0x1c, 0x65, 0x17, 0xfe, 0xc8, 0xdf, 0x67,
+  0x29, 0xfc, 0x32, 0xce, 0x26, 0x69, 0xc4, 0x3b, 0x6d, 0x9a, 0x43, 0x8a,
+  0x2a, 0xd2, 0x72, 0x31, 0x4d, 0x69, 0xee, 0xd3, 0xbc, 0x48, 0x7b, 0xd1,
+  0x51, 0x19, 0xdd, 0xe5, 0x0b, 0x98, 0xdb, 0x64, 0x02, 0x3b, 0x9f, 0x46,
+  0x83, 0x74, 0x92, 0xdf, 0x74, 0x71, 0xa7, 0xa3, 0xd9, 0x62, 0x3a, 0x80,
+  0x57, 0x60, 0xf8, 0xe3, 0x34, 0xa9, 0x16, 0xf0, 0x2a, 0x3d, 0xa6, 0xcd,
+  0x4d, 0x13, 0x98, 0x05, 0xbc, 0x5b, 0x44, 0x57, 0x29, 0xcc, 0xb2, 0x9c,
+  0x67, 0xcd, 0x95, 0x00, 0xba, 0x9b, 0xe7, 0x37, 0x69, 0x01, 0x6b, 0x38,
+  0xb8, 0x8b, 0x60, 0xda, 0x03, 0xa6, 0x47, 0x24, 0xc2, 0x28, 0x81, 0x0e,
+  0x0d, 0x29, 0xc6, 0x45, 0x3a, 0x49, 0x2a, 0x78, 0xce, 0x74, 0xd5, 0x83,
+  0xfd, 0x4c, 0x53, 0x6d, 0x4e, 0x5e, 0xdd, 0xdc, 0xdf, 0xa2, 0x97, 0x47,
+  0x69, 0x95, 0x64, 0x93, 0x12, 0xba, 0xc3, 0xf3, 0x21, 0xcf, 0xe0, 0x36,
+  0xe2, 0x51, 0x88, 0xa2, 0xf2, 0x6e, 0x56, 0x25, 0xb7, 0xd4, 0xbd, 0x90,
+  0x6a, 0x3c, 0x4a, 0xe7, 0xe9, 0x6c, 0x94, 0xce, 0xaa, 0x5e, 0xf4, 0x77,
+  0x98, 0xee, 0x38, 0x83, 0x05, 0x48, 0xa4, 0x1d, 0xe8, 0x16, 0xf6, 0x7a,
+  0x58, 0x64, 0x74, 0xa0, 0xb4, 0xb9, 0x6c, 0x16, 0xbd, 0x79, 0x7e, 0x1c,
+  0xed, 0x7f, 0xf5, 0xe5, 0x13, 0x3b, 0x2d, 0x7c, 0x77, 0x98, 0xcc, 0x60,
+  0xb2, 0xe9, 0x30, 0x1b, 0xdf, 0x45, 0xd3, 0xc5, 0xa4, 0xca, 0xe6, 0xb0,
+  0xd4, 0x78, 0x04, 0xf1, 0x04, 0xcd, 0x13, 0x38, 0x2e, 0xb8, 0x64, 0xf4,
+  0x01, 0x4d, 0xfb, 0xa6, 0xc8, 0x2a, 0x3c, 0x69, 0xf4, 0x1d, 0x0c, 0x2e,
+  0xb5, 0xe7, 0x09, 0x29, 0x0a, 0xfa, 0x19, 0x00, 0x21, 0xc1, 0xe2, 0xe2,
+  0xa6, 0xfc, 0x63, 0x91, 0xd3, 0xc3, 0xb8, 0xfe, 0x38, 0x97, 0xa4, 0x84,
+  0x81, 0x1c, 0x7c, 0x61, 0x79, 0x4b, 0xe7, 0xaa, 0xaa, 0xe6, 0x07, 0xdb,
+  0xdb, 0x65, 0x56, 0xa5, 0xbd, 0x7f, 0xe6, 0xb3, 0xb4, 0x5b, 0xdd, 0xe4,
+  0xdd, 0xea, 0xaa, 0x48, 0xd3, 0x7f, 0xf5, 0x80, 0x8a, 0x3b, 0xe6, 0x59,
+  0x18, 0xcd, 0x9d, 0x0c, 0xf7, 0x32, 0x85, 0xb3, 0x9c, 0xfe, 0x63, 0x91,
+  0xce, 0xb0, 0x1f, 0x18, 0x5d, 0x32, 0x99, 0x5f, 0x25, 0xb0, 0xbf, 0x29,
+  0x10, 0x24, 0x1e, 0x78, 0xa0, 0x19, 0x1c, 0xeb, 0xa2, 0xc4, 0xbe, 0x7f,
+  0xfa, 0x25, 0xd0, 0xed, 0x98, 0x7a, 0x85, 0x7f, 0x7b, 0xe9, 0x6d, 0x32,
+  0x85, 0x29, 0x63, 0x67, 0xdb, 0x48, 0x66, 0x3f, 0xed, 0xc6, 0xbb, 0x3b,
+  0x3b, 0xbf, 0xf4, 0xaa, 0xdb, 0xaa, 0x73, 0xcf, 0x37, 0x76, 0x76, 0x9c,
+  0x77, 0xf0, 0xe1, 0x4d, 0x5c, 0x89, 0x68, 0x02, 0x74, 0x84, 0x03, 0xf8,
+  0x2d, 0x2d, 0xf2, 0x72, 0xeb, 0x9e, 0x6d, 0x25, 0xf1, 0x6f, 0x8d, 0xbe,
+  0x5f, 0xa7, 0x25, 0x91, 0x92, 0x9d, 0x71, 0x94, 0x14, 0x40, 0xce, 0xb9,
+  0x61, 0x68, 0x29, 0x1c, 0xa3, 0x01, 0x9c, 0x64, 0x5d, 0x1f, 0x38, 0x7c,
+  0xf0, 0x34, 0x70, 0xbd, 0x04, 0x8e, 0xef, 0x0c, 0x5e, 0x98, 0xa5, 0xb7,
+  0x95, 0x39, 0x85, 0x79, 0x94, 0x26, 0xc3, 0xab, 0x28, 0x87, 0x3d, 0x29,
+  0x42, 0x5b, 0xe1, 0x0e, 0x29, 0x29, 0x86, 0x57, 0xd9, 0x35, 0xac, 0xc9,
+  0x57, 0x5f, 0x3d, 0x89, 0xe1, 0x9f, 0xaf, 0x7e, 0xd9, 0xbe, 0xce, 0x27,
+  0xb0, 0x44, 0x8f, 0x7e, 0xd9, 0xc6, 0xfd, 0xff, 0x67, 0xd2, 0x1d, 0x74,
+  0x87, 0xff, 0xea, 0x5d, 0x55, 0xd3, 0x49, 0xa7, 0x95, 0xac, 0x92, 0x19,
+  0xfc, 0x37, 0xcd, 0x17, 0xb3, 0xca, 0x90, 0x52, 0x3e, 0x23, 0x9a, 0x50,
+  0x3e, 0x35, 0xc9, 0x66, 0x70, 0x78, 0x91, 0xe6, 0x91, 0xc2, 0xf0, 0xf0,
+  0xc2, 0xc9, 0xb5, 0x07, 0xbd, 0x1a, 0x5e, 0xe1, 0x0a, 0x00, 0x6d, 0x25,
+  0xb2, 0x0c, 0x55, 0x06, 0x73, 0x83, 0x57, 0x67, 0xc4, 0xbb, 0xa8, 0x2d,
+  0xee, 0x2d, 0x83, 0x07, 0xf3, 0x62, 0x84, 0x1c, 0xbf, 0x31, 0x0c, 0x73,
+  0x96, 0x9d, 0x3e, 0x23, 0xbd, 0x75, 0xf0, 0x03, 0x1a, 0xd8, 0x34, 0xbb,
+  0x85, 0x16, 0xf0, 0x4f, 0xec, 0x0d, 0x06, 0xce, 0xad, 0x45, 0x38, 0x62,
+  0xea, 0x46, 0xdf, 0xb7, 0x67, 0x19, 0x86, 0x5e, 0x9b, 0x3a, 0x75, 0x6a,
+  0x27, 0x1f, 0xc1, 0xf6, 0xcd, 0xe1, 0xad, 0x05, 0xb2, 0x58, 0xbe, 0xb1,
+  0xa0, 0x19, 0xe0, 0x14, 0x97, 0xb0, 0x33, 0xb0, 0x1b, 0x48, 0xcd, 0xb8,
+  0x59, 0x77, 0xd1, 0x6b, 0x20, 0x1a, 0xe6, 0x52, 0x0e, 0xd1, 0x4f, 0xd2,
+  0xaa, 0x5a, 0xbd, 0x51, 0x96, 0x72, 0x0f, 0x76, 0x03, 0xc4, 0xdb, 0xf6,
+  0x06, 0x50, 0xdb, 0xc1, 0x5e, 0xe3, 0xf1, 0x1f, 0x80, 0x67, 0xdb, 0xa3,
+  0x03, 0x23, 0xf8, 0xe7, 0xbf, 0x1c, 0xda, 0xbb, 0xc1, 0x6f, 0xb3, 0xd9,
+  0x75, 0xfe, 0x1e, 0x96, 0x89, 0x2e, 0xda, 0xa4, 0xbe, 0xa2, 0xc8, 0xa4,
+  0xa6, 0xf3, 0xca, 0x5c, 0x63, 0x48, 0x94, 0xf0, 0xd1, 0x20, 0x19, 0x4c,
+  0xee, 0xa2, 0xab, 0xe4, 0x3a, 0xc5, 0x39, 0xcf, 0x81, 0x5a, 0x71, 0x15,
+  0xe0, 0x16, 0x99, 0x10, 0x63, 0x10, 0xd6, 0x31, 0xca, 0x17, 0x03, 0x60,
+  0x3f, 0xc8, 0x36, 0x78, 0x71, 0x92, 0xeb, 0x3c, 0x1b, 0xe1, 0xa3, 0xda,
+  0x5c, 0x79, 0x95, 0xc2, 0x2b, 0xd4, 0x31, 0xdd, 0x59, 0xc0, 0x6d, 0x71,
+  0xa4, 0x74, 0xe0, 0xb2, 0x0a, 0x6f, 0x3f, 0xe0, 0x93, 0xc9, 0xa4, 0xcc,
+  0xa3, 0xe8, 0x32, 0xc7, 0xb3, 0x42, 0xdc, 0x99, 0x88, 0x1d, 0x36, 0xe6,
+  0x2a, 0xc1, 0x4b, 0x0e, 0xee, 0x33, 0x73, 0x1a, 0x8a, 0x94, 0x18, 0x35,
+  0xed, 0x56, 0x32, 0xe9, 0xf2, 0x65, 0x86, 0xef, 0xc8, 0x5a, 0x45, 0x1b,
+  0xff, 0x67, 0xa3, 0x1b, 0x6d, 0xfc, 0x3f, 0x1b, 0x44, 0x13, 0x1b, 0x7f,
+  0xd8, 0xb0, 0x7b, 0x0d, 0x42, 0xdb, 0x75, 0x36, 0x4a, 0x99, 0x2c, 0x5e,
+  0x9e, 0x5f, 0x3f, 0x89, 0x7e, 0x83, 0xd3, 0x06, 0xc3, 0x1a, 0xa5, 0xb7,
+  0x4a, 0x94, 0x3a, 0x37, 0x78, 0x3b, 0x02, 0xa6, 0x9c, 0xcc, 0xa1, 0xaf,
+  0x79, 0x5a, 0x0c, 0x81, 0x82, 0x93, 0x4b, 0xa0, 0x59, 0xb8, 0x92, 0xb5,
+  0x39, 0x6c, 0x1f, 0x5f, 0xe1, 0x69, 0x01, 0x0b, 0x8d, 0x66, 0xc9, 0x14,
+  0x4e, 0xc5, 0x29, 0x8e, 0x28, 0x9b, 0x05, 0xb6, 0xf3, 0xa7, 0x71, 0xfa,
+  0xe5, 0xce, 0xc1, 0xc1, 0xfe, 0xef, 0xf7, 0x1e, 0xa7, 0xd5, 0xd5, 0xce,
+  0x2f, 0xdb, 0x76, 0x13, 0x5f, 0x8e, 0x69, 0xe1, 0x95, 0x08, 0x75, 0x18,
+  0x78, 0xdf, 0xeb, 0x25, 0x02, 0x0d, 0xc0, 0xef, 0xe9, 0x38, 0xbb, 0xed,
+  0xaa, 0x64, 0xc5, 0x27, 0x2f, 0x01, 0x82, 0x83, 0x1d, 0x44, 0x56, 0xa1,
+  0xcd, 0x5d, 0x2e, 0xd2, 0x12, 0xd6, 0xf2, 0xe6, 0x2a, 0xa9, 0x22, 0xd3,
+  0x00, 0xef, 0xed, 0x34, 0xbb, 0xbc, 0xaa, 0xa2, 0x9b, 0x04, 0xef, 0x22,
+  0x90, 0xb1, 0xa8, 0x09, 0xbc, 0xf6, 0xe1, 0x12, 0x1a, 0x27, 0x70, 0x9f,
+  0xe0, 0x2e, 0xd2, 0x1d, 0x0f, 0x1c, 0xca, 0xae, 0xfa, 0x9d, 0x6c, 0x89,
+  0x11, 0xbe, 0xa2, 0x41, 0x52, 0xe2, 0xd1, 0x9d, 0x01, 0x8b, 0xa8, 0x40,
+  0x68, 0x58, 0xe0, 0x5f, 0x57, 0x20, 0x16, 0xd0, 0x2a, 0xc8, 0x40, 0xe9,
+  0x1e, 0x7d, 0x8e, 0x1b, 0x8a, 0xbb, 0x63, 0x24, 0x01, 0xd8, 0xa6, 0xae,
+  0x6c, 0xb4, 0x79, 0xa3, 0x84, 0x63, 0x07, 0x0c, 0xca, 0xd0, 0x06, 0xf2,
+  0xdc, 0x5e, 0x87, 0xe7, 0x49, 0x63, 0x4c, 0x4a, 0x12, 0x1d, 0x48, 0x5a,
+  0x80, 0xc1, 0x3b, 0x93, 0x85, 0x45, 0x4b, 0xde, 0xa3, 0x8c, 0xd2, 0xb8,
+  0xff, 0xe9, 0xb5, 0x51, 0x0e, 0x64, 0x06, 0xa3, 0x05, 0xa6, 0x8c, 0x33,
+  0x43, 0x56, 0x4b, 0xab, 0x42, 0x64, 0x0e, 0x6d, 0xe2, 0x87, 0x59, 0x85,
+  0x37, 0x0e, 0x49, 0xbb, 0x30, 0x5e, 0x58, 0x14, 0x12, 0x59, 0x81, 0x61,
+  0x3b, 0xf3, 0xa7, 0x2b, 0x14, 0x9e, 0x8d, 0xae, 0x93, 0x49, 0x06, 0x52,
+  0x6b, 0x6a, 0xde, 0xa2, 0xeb, 0x7e, 0x88, 0xc2, 0xd2, 0x04, 0x4e, 0xcc,
+  0x30, 0x2f, 0x0a, 0xd4, 0x0c, 0x70, 0x07, 0x07, 0xcc, 0x4a, 0xa7, 0x29,
+  0x48, 0x19, 0xee, 0x72, 0x42, 0xeb, 0xe3, 0x24, 0x2b, 0xe0, 0x69, 0x10,
+  0x2c, 0x88, 0xeb, 0xd3, 0x94, 0x69, 0x5c, 0xd8, 0xea, 0x70, 0x98, 0xce,
+  0xab, 0x32, 0x34, 0x1b, 0xdd, 0x6a, 0x18, 0x48, 0x91, 0xe2, 0x9a, 0xbb,
+  0xf2, 0x17, 0xad, 0xa8, 0x11, 0x09, 0x48, 0x04, 0x53, 0x01, 0x07, 0x44,
+  0xb2, 0x32, 0xb7, 0x62, 0x34, 0x52, 0x05, 0xb0, 0x31, 0x5a, 0xed, 0x29,
+  0x0e, 0x11, 0x1f, 0x2e, 0xf9, 0x94, 0x12, 0x6b, 0xc6, 0x2d, 0x64, 0x41,
+  0x9c, 0xfb, 0xc5, 0xcb, 0x0b, 0x56, 0xd2, 0x34, 0x0e, 0xbd, 0x9a, 0xdd,
+  0xc4, 0xee, 0x51, 0x0d, 0x80, 0x1b, 0x7d, 0x54, 0x5e, 0x81, 0x54, 0x56,
+  0xca, 0xa9, 0xce, 0xa6, 0x40, 0x2d, 0xd7, 0xb8, 0xb3, 0xf3, 0x34, 0x1d,
+  0xf5, 0xa2, 0xb3, 0x31, 0x72, 0xd5, 0x02, 0x06, 0x5d, 0xd1, 0xd7, 0x78,
+  0xab, 0xc0, 0x1a, 0x8c, 0xf0, 0x10, 0x5a, 0xc1, 0x87, 0x87, 0xe2, 0xdc,
+  0x0e, 0xc4, 0xc9, 0x13, 0xf8, 0x04, 0x46, 0x3b, 0xa9, 0x5f, 0x41, 0x74,
+  0x06, 0x81, 0x7b, 0xe3, 0xf0, 0x06, 0x69, 0x44, 0x34, 0x38, 0x48, 0xab,
+  0x9b, 0x34, 0x35, 0xcd, 0x95, 0x29, 0xdc, 0x7b, 0xb8, 0x5d, 0x2c, 0x12,
+  0x02, 0x23, 0x64, 0xa1, 0x16, 0x97, 0xf7, 0xec, 0xed, 0xc5, 0xf9, 0xdb,
+  0x0b, 0xe7, 0x08, 0x62, 0x3b, 0x55, 0x3e, 0x19, 0x31, 0xb1, 0xdf, 0x64,
+  0x25, 0xd0, 0x29, 0x2f, 0x3e, 0x08, 0x51, 0xc8, 0xe0, 0xf0, 0x22, 0x48,
+  0x87, 0x29, 0x5c, 0xb1, 0x23, 0x56, 0x5d, 0x60, 0x23, 0xca, 0x0a, 0xb8,
+  0x20, 0x1f, 0x26, 0x1c, 0x8b, 0x36, 0x07, 0xe3, 0x81, 0xee, 0xca, 0xaa,
+  0x58, 0x0c, 0x49, 0x1c, 0x40, 0xda, 0xc1, 0xbf, 0x49, 0x58, 0x25, 0xb6,
+  0x8a, 0xdb, 0x40, 0x8d, 0x00, 0x07, 0x41, 0xcd, 0x67, 0x02, 0x43, 0x9b,
+  0xd0, 0xfc, 0xbb, 0xc2, 0xcf, 0x1d, 0x3e, 0x1a, 0xc7, 0xd0, 0x09, 0xb2,
+  0x61, 0xd8, 0xe3, 0x18, 0xe4, 0xd5, 0x29, 0x70, 0xdc, 0x98, 0x8e, 0x9a,
+  0x5c, 0x89, 0x3d, 0x9c, 0x80, 0xca, 0xbd, 0x97, 0x30, 0x42, 0x58, 0x35,
+  0xb3, 0x5f, 0x22, 0x0f, 0xda, 0x33, 0x63, 0x74, 0x3c, 0x73, 0x4f, 0xba,
+  0xeb, 0xda, 0x45, 0x32, 0x2c, 0xb3, 0x69, 0x36, 0x49, 0x90, 0x4a, 0x67,
+  0xb0, 0x7d, 0xa5, 0x6d, 0x4c, 0xef, 0x60, 0x20, 0x37, 0x23, 0x49, 0xc2,
+  0x72, 0xd1, 0x45, 0x21, 0x33, 0x4b, 0xa7, 0x0d, 0xea, 0x1d, 0x21, 0x6f,
+  0xc7, 0xe5, 0x85, 0xdd, 0x00, 0x02, 0x80, 0x49, 0x98, 0x25, 0x8e, 0x3a,
+  0x0b, 0xe0, 0xc0, 0x05, 0x1c, 0xff, 0xd9, 0xa8, 0x23, 0x43, 0x01, 0x96,
+  0x3a, 0xc3, 0x63, 0xc8, 0x74, 0x5a, 0xe2, 0xc5, 0x6a, 0xba, 0xe2, 0xad,
+  0xc0, 0xb3, 0x17, 0xf1, 0x92, 0xf0, 0x99, 0x95, 0x1e, 0x22, 0xb8, 0xf6,
+  0x72, 0x12, 0xe3, 0x48, 0x50, 0xe7, 0xdf, 0x61, 0x3d, 0x67, 0x13, 0xe4,
+  0x88, 0xe9, 0xed, 0x7c, 0x92, 0x0d, 0xb3, 0x6a, 0x62, 0xa4, 0x8b, 0xa4,
+  0x7c, 0x2f, 0x3a, 0x16, 0x1e, 0xc1, 0x51, 0x3a, 0x42, 0xa5, 0x07, 0x3e,
+  0x09, 0x49, 0x1d, 0x30, 0xa7, 0xf3, 0x37, 0x67, 0x17, 0x67, 0xc7, 0x67,
+  0xa7, 0x75, 0x65, 0x58, 0x15, 0xd5, 0x88, 0x64, 0xda, 0x7c, 0x61, 0x25,
+  0x7f, 0x38, 0x78, 0x28, 0x96, 0xc3, 0xbe, 0xc1, 0x05, 0x43, 0xda, 0x01,
+  0x5c, 0x16, 0x53, 0x50, 0x5d, 0xa3, 0x12, 0x64, 0xa4, 0x29, 0x31, 0x48,
+  0x90, 0x41, 0xcc, 0xec, 0x50, 0x48, 0xcb, 0x86, 0x0b, 0x58, 0x77, 0x60,
+  0x18, 0x19, 0x50, 0xe2, 0x34, 0xb9, 0x73, 0x45, 0x47, 0x5a, 0x5b, 0x54,
+  0x5e, 0xec, 0xfa, 0xa2, 0x12, 0x0c, 0x3f, 0x4e, 0x71, 0x9d, 0x90, 0xab,
+  0x4d, 0x40, 0x09, 0x5b, 0xcc, 0x51, 0x67, 0x84, 0x4d, 0x63, 0x3a, 0x82,
+  0x73, 0x86, 0xd3, 0x80, 0xb9, 0xe1, 0x3c, 0x12, 0x94, 0xb7, 0xed, 0xfb,
+  0xa8, 0x3e, 0xc3, 0x8f, 0x37, 0x48, 0x98, 0x38, 0x58, 0x5e, 0xe1, 0x48,
+  0xc8, 0x91, 0xcf, 0x63, 0x4f, 0x6f, 0x1c, 0xb3, 0x8f, 0x3a, 0x1e, 0x64,
+  0x56, 0x25, 0x76, 0xd2, 0xb0, 0x3f, 0xe0, 0x6b, 0x78, 0x63, 0xe1, 0x9c,
+  0x99, 0x5a, 0x27, 0x77, 0x2c, 0xf5, 0x92, 0x44, 0x52, 0x2c, 0x66, 0x33,
+  0x1e, 0x59, 0xf4, 0x2a, 0x1b, 0x82, 0xbc, 0x0d, 0xb7, 0x48, 0xf4, 0x03,
+  0x5c, 0xc5, 0xf9, 0x0d, 0xec, 0xeb, 0xc2, 0x6a, 0x8d, 0x46, 0x1d, 0x62,
+  0xa5, 0x64, 0x06, 0x87, 0x17, 0x28, 0xec, 0xed, 0xeb, 0xe3, 0x28, 0x99,
+  0xc3, 0x22, 0xa3, 0x64, 0x4c, 0x1c, 0x0a, 0x55, 0x64, 0x67, 0x4e, 0x17,
+  0xe7, 0x9b, 0xfd, 0x2d, 0x19, 0xb3, 0xd9, 0x1d, 0x96, 0x07, 0x9f, 0x23,
+  0x63, 0xbc, 0x50, 0xfa, 0x3f, 0xd7, 0xcb, 0x91, 0x6f, 0x7d, 0x98, 0x35,
+  0x09, 0xbd, 0xc0, 0x43, 0x92, 0xf7, 0x65, 0x63, 0x10, 0x44, 0x0f, 0x28,
+  0xfa, 0xc1, 0x7a, 0xfc, 0x80, 0x8f, 0xe7, 0x85, 0xa3, 0x95, 0xe3, 0x10,
+  0x2f, 0x4e, 0xfb, 0x76, 0x10, 0x6c, 0x7e, 0x80, 0x71, 0x34, 0x9a, 0x79,
+  0x93, 0x82, 0x22, 0x0e, 0xcd, 0xc8, 0xd2, 0x9a, 0xe7, 0xf1, 0xd6, 0xf5,
+  0x9f, 0xae, 0x13, 0x18, 0xdd, 0xcc, 0x34, 0x54, 0x43, 0x6a, 0xae, 0x48,
+  0x7c, 0x0d, 0x7b, 0x9b, 0x28, 0x3b, 0xa8, 0xf3, 0xa3, 0xda, 0x65, 0x49,
+  0xcd, 0xe0, 0x44, 0xe0, 0xd1, 0x68, 0xa7, 0xf7, 0x55, 0x37, 0xda, 0xed,
+  0xed, 0xe0, 0x3f, 0xbb, 0xdd, 0x68, 0x8f, 0x5a, 0xda, 0x8f, 0x58, 0x67,
+  0x95, 0x4d, 0x62, 0x62, 0xcc, 0xe7, 0xcd, 0x7d, 0xb1, 0x5d, 0xf3, 0xc1,
+  0xe5, 0xcb, 0xaf, 0xe5, 0xf0, 0x38, 0x76, 0x17, 0x7f, 0x9e, 0x6f, 0x95,
+  0xe3, 0x01, 0xc9, 0x67, 0x13, 0xa0, 0x19, 0x56, 0xc6, 0xf4, 0x20, 0x09,
+  0x23, 0x46, 0x51, 0xbd, 0x03, 0x44, 0x32, 0x43, 0x63, 0x44, 0x27, 0x4a,
+  0xf1, 0x59, 0x16, 0x1a, 0x1b, 0xcd, 0xc1, 0x49, 0xb8, 0xd7, 0x26, 0xa1,
+  0xb9, 0xa7, 0x65, 0xd1, 0xb1, 0x2f, 0xb8, 0xf4, 0x46, 0x19, 0xce, 0x29,
+  0x07, 0x11, 0x88, 0x4f, 0x16, 0xdf, 0xb3, 0xd0, 0x7e, 0x97, 0x37, 0xc2,
+  0x69, 0xbf, 0xd6, 0x32, 0x5a, 0x90, 0xbc, 0xfd, 0xa3, 0x0f, 0x75, 0xe1,
+  0xf7, 0x7b, 0xd1, 0x33, 0x99, 0x0a, 0x2d, 0x33, 0x5e, 0xb7, 0xf4, 0x00,
+  0x48, 0xef, 0x20, 0x12, 0x47, 0x9d, 0x72, 0x31, 0x68, 0x2e, 0x38, 0x1a,
+  0x0a, 0x06, 0x69, 0x87, 0x6d, 0x65, 0x55, 0x3e, 0x07, 0x05, 0xfa, 0xe6,
+  0x0a, 0x29, 0x9a, 0xed, 0x33, 0xd0, 0xce, 0x36, 0x1a, 0x67, 0xb0, 0x3d,
+  0x6d, 0x65, 0x0e, 0x32, 0x7a, 0x56, 0x5e, 0x75, 0x70, 0x1f, 0x93, 0xe6,
+  0xfe, 0x61, 0x0b, 0x3d, 0xee, 0x95, 0xfa, 0x87, 0x29, 0xe0, 0x05, 0x52,
+  0xd3, 0x56, 0xa3, 0xcd, 0xbb, 0xb4, 0xda, 0x72, 0x04, 0xe9, 0xb3, 0xf3,
+  0x7d, 0x7f, 0xcd, 0xdc, 0xa9, 0xb0, 0x28, 0x81, 0xb7, 0xf6, 0x3c, 0x9f,
+  0xef, 0x47, 0x2a, 0x4b, 0xb0, 0x24, 0xa4, 0x92, 0x47, 0x42, 0x3b, 0x6d,
+  0x76, 0xa9, 0xd1, 0xdc, 0x92, 0x3d, 0x43, 0x13, 0x9c, 0xdf, 0x3f, 0x1a,
+  0x60, 0x80, 0x89, 0xc1, 0x25, 0x05, 0x97, 0xe2, 0x2b, 0x60, 0x4a, 0xc9,
+  0x25, 0xbe, 0x69, 0x0e, 0x38, 0x09, 0x75, 0xf3, 0x22, 0x9b, 0xc2, 0x19,
+  0x81, 0x4b, 0x8d, 0xa5, 0x05, 0xba, 0x96, 0x79, 0x74, 0xcd, 0x85, 0x46,
+  0x55, 0x63, 0x4a, 0x12, 0x12, 0x5c, 0x0a, 0x09, 0x8b, 0x1a, 0x96, 0x2c,
+  0x78, 0xae, 0xa8, 0xc2, 0x38, 0xc3, 0xea, 0x9f, 0x7b, 0x1b, 0x4e, 0x1f,
+  0xc2, 0xe1, 0x32, 0xaf, 0x38, 0x07, 0xa1, 0x7f, 0x7c, 0xee, 0x9f, 0xf0,
+  0x7e, 0xff, 0x85, 0x21, 0x90, 0x3d, 0xd8, 0xee, 0xb9, 0x15, 0xe2, 0x9c,
+  0x37, 0xd1, 0x22, 0xe7, 0xbd, 0x89, 0x1f, 0x6e, 0x8e, 0x8a, 0x04, 0x58,
+  0xe9, 0xe3, 0x2d, 0x91, 0xab, 0x70, 0xd9, 0x6b, 0x4d, 0x3a, 0x8d, 0xbc,
+  0xfa, 0xce, 0x30, 0x49, 0xdb, 0xc8, 0xab, 0xef, 0xcc, 0xb3, 0xbb, 0x44,
+  0xe9, 0x4c, 0x58, 0x34, 0x7f, 0x9d, 0x83, 0xdb, 0x46, 0x88, 0x67, 0xbd,
+  0x9d, 0x1b, 0x42, 0x90, 0xbb, 0xbc, 0xe4, 0x95, 0x46, 0x45, 0x1b, 0x5f,
+  0xa9, 0x13, 0x44, 0x29, 0x7c, 0x06, 0x75, 0x2e, 0x22, 0x89, 0x46, 0x73,
+  0x3f, 0x2c, 0x3b, 0x66, 0x6c, 0x58, 0x8d, 0x2e, 0x40, 0xcd, 0xc4, 0x36,
+  0x68, 0x36, 0xd0, 0x15, 0x19, 0x21, 0xf0, 0x88, 0xa4, 0x93, 0x59, 0xca,
+  0xe2, 0x38, 0x29, 0x18, 0xc8, 0xac, 0xac, 0xf5, 0xf4, 0x1a, 0xc5, 0xdc,
+  0xb2, 0x74, 0xec, 0x6e, 0x35, 0x81, 0x86, 0x04, 0x10, 0x1c, 0x9d, 0xd1,
+  0xa5, 0xf0, 0x03, 0x64, 0x4d, 0x25, 0x09, 0x4e, 0x20, 0xfa, 0x91, 0xd5,
+  0x61, 0x24, 0x92, 0x48, 0xc9, 0x4f, 0x39, 0x62, 0x9b, 0x91, 0x42, 0x69,
+  0xba, 0xdc, 0x94, 0x4b, 0x33, 0x17, 0xce, 0x46, 0x0a, 0xbf, 0xa1, 0x8f,
+  0x0c, 0xb5, 0x50, 0xeb, 0xbc, 0x05, 0x22, 0x7f, 0x7c, 0xff, 0xe6, 0xa4,
+  0xdf, 0x8f, 0x5e, 0x9d, 0x5c, 0x9c, 0xbc, 0xa9, 0x09, 0x21, 0xb3, 0xbc,
+  0x98, 0x92, 0x0a, 0x32, 0xca, 0xca, 0xf9, 0x24, 0xb9, 0x43, 0xdd, 0x04,
+  0xb8, 0xe7, 0x65, 0x81, 0x82, 0xcf, 0x34, 0x45, 0x63, 0xc6, 0x68, 0x41,
+  0xca, 0x37, 0xb0, 0x64, 0x98, 0xbe, 0xd8, 0x6c, 0x51, 0xff, 0x25, 0x43,
+  0xaf, 0xbd, 0xc2, 0xe9, 0x9a, 0x14, 0x03, 0x10, 0x5e, 0x86, 0xd6, 0x64,
+  0x8f, 0x27, 0x06, 0x45, 0xd6, 0xae, 0x23, 0x41, 0x92, 0x74, 0xcf, 0xe3,
+  0x04, 0x25, 0x0b, 0x8e, 0x17, 0x72, 0x0c, 0x3c, 0x84, 0xc6, 0xe2, 0x92,
+  0x8e, 0xab, 0x6e, 0x04, 0xfb, 0xc1, 0xb6, 0xee, 0xe6, 0x98, 0x74, 0xb4,
+  0xd6, 0xde, 0x3b, 0xb8, 0xab, 0xc4, 0x1e, 0xc9, 0x43, 0xe1, 0x1e, 0x8c,
+  0xc4, 0x46, 0x1b, 0x33, 0x8b, 0xe4, 0xb1, 0x39, 0xad, 0x2b, 0x90, 0xd9,
+  0x88, 0x9b, 0x2f, 0x17, 0x63, 0xd2, 0x3c, 0xa3, 0xcd, 0xf7, 0xdd, 0xe8,
+  0x55, 0x37, 0xfa, 0xbe, 0x1b, 0xa1, 0x21, 0x7f, 0x8b, 0xde, 0xdb, 0xdd,
+  0xd9, 0x7b, 0xc4, 0x9a, 0xab, 0xa1, 0xb1, 0xe7, 0x8e, 0xed, 0x60, 0xf7,
+  0x3d, 0x32, 0x09, 0x7e, 0x08, 0x1b, 0xef, 0x45, 0xbb, 0xaf, 0xf8, 0x93,
+  0x47, 0x5f, 0x3e, 0x7e, 0xfa, 0x44, 0x3e, 0x6c, 0x48, 0xb6, 0x3a, 0x7e,
+  0x52, 0x6a, 0x54, 0x29, 0xc0, 0x71, 0xa3, 0xa4, 0x97, 0xcd, 0x40, 0x86,
+  0x02, 0x3d, 0x50, 0x94, 0x6b, 0x54, 0xc3, 0x60, 0xf0, 0x63, 0x56, 0xc5,
+  0xc5, 0x2e, 0x53, 0xf7, 0x96, 0xc0, 0xcb, 0x40, 0x04, 0x40, 0x0a, 0x66,
+  0x93, 0xd8, 0xba, 0x55, 0xe1, 0x40, 0x92, 0x01, 0xd2, 0x3f, 0x4a, 0xab,
+  0x24, 0xa3, 0x85, 0x7a, 0x33, 0x86, 0x1c, 0x78, 0x03, 0xc6, 0x96, 0x0c,
+  0x26, 0xa2, 0xb8, 0x34, 0xd6, 0x1d, 0xe4, 0x67, 0x2b, 0x82, 0xc3, 0xb3,
+  0x37, 0xf9, 0x02, 0xc5, 0x4d, 0x7c, 0x00, 0xa4, 0x47, 0x7c, 0x81, 0x69,
+  0xda, 0xd8, 0xdb, 0xb3, 0x5b, 0xb9, 0x8f, 0x6b, 0xad, 0xc0, 0xd0, 0xe0,
+  0xcf, 0x39, 0x90, 0x12, 0x0f, 0xa7, 0xd7, 0x34, 0x69, 0x90, 0xb2, 0xee,
+  0x51, 0x22, 0x32, 0x16, 0x12, 0x42, 0xce, 0xcf, 0xfa, 0x17, 0x78, 0xb6,
+  0x41, 0x11, 0x83, 0x86, 0xfe, 0xb1, 0x00, 0x12, 0x02, 0xa2, 0xc4, 0x17,
+  0x51, 0xeb, 0x70, 0x34, 0x16, 0xa0, 0x3d, 0xba, 0x88, 0x45, 0x09, 0x93,
+  0x2e, 0x45, 0x29, 0x22, 0xde, 0x12, 0x89, 0xee, 0x24, 0x57, 0x86, 0x98,
+  0x9e, 0xec, 0x8b, 0xd1, 0xe6, 0x37, 0x5b, 0xdd, 0x90, 0x3e, 0x25, 0x9a,
+  0x8e, 0x73, 0x2a, 0x71, 0x2b, 0x59, 0xd6, 0xa5, 0x9b, 0x10, 0x44, 0x4d,
+  0x38, 0x57, 0xd0, 0x89, 0x75, 0x84, 0xe0, 0xfa, 0x91, 0x06, 0x67, 0xb7,
+  0xc9, 0xca, 0xc6, 0x73, 0x58, 0xcf, 0xdc, 0x2e, 0x1d, 0x6a, 0xd8, 0xb5,
+  0x45, 0x6a, 0xee, 0x59, 0x6d, 0xd1, 0x98, 0x34, 0xd0, 0x80, 0x82, 0xea,
+  0x59, 0x12, 0xd9, 0xa5, 0x8b, 0x3a, 0x83, 0xa4, 0xe8, 0x58, 0x35, 0x92,
+  0xcf, 0x26, 0x9e, 0x90, 0x22, 0xbd, 0x24, 0x9d, 0x21, 0xe2, 0xe5, 0x75,
+  0x66, 0xa9, 0x2f, 0xc7, 0x03, 0xfc, 0x3a, 0x2b, 0xd9, 0x65, 0x32, 0x06,
+  0x01, 0x14, 0x0f, 0x8c, 0x9a, 0x5c, 0xc9, 0x00, 0x27, 0xd4, 0x12, 0x20,
+  0x16, 0xc7, 0x14, 0x0b, 0xc7, 0x04, 0x45, 0x79, 0x16, 0x7d, 0xf0, 0xc9,
+  0x38, 0x2e, 0x61, 0xd5, 0xd1, 0x54, 0x3c, 0x17, 0x6f, 0xd4, 0x19, 0xf9,
+  0x00, 0x8d, 0x86, 0x74, 0x26, 0xf2, 0x29, 0xb1, 0x5f, 0x11, 0x99, 0x66,
+  0xa4, 0x02, 0x56, 0x37, 0xd0, 0x69, 0x02, 0xdb, 0x04, 0x07, 0xed, 0x15,
+  0x2e, 0x12, 0x0a, 0xde, 0x38, 0x1d, 0x15, 0x69, 0x89, 0x22, 0x32, 0x3c,
+  0xef, 0x56, 0x8e, 0x4d, 0x46, 0xa3, 0x8c, 0xb4, 0x98, 0x09, 0x9a, 0x62,
+  0x16, 0x29, 0x19, 0xcb, 0x65, 0x41, 0xa7, 0xee, 0x16, 0x22, 0xe3, 0xb8,
+  0x42, 0x15, 0x05, 0xe4, 0x28, 0x32, 0x1d, 0xc4, 0xd8, 0x57, 0x87, 0x84,
+  0xc5, 0x69, 0xa4, 0x7d, 0x49, 0x57, 0xdd, 0x28, 0x1e, 0xb9, 0x66, 0xc4,
+  0x2e, 0x29, 0x5e, 0xd6, 0xa6, 0x4d, 0xc2, 0x42, 0x53, 0xdc, 0x4b, 0x60,
+  0xa7, 0xd1, 0xee, 0x27, 0x26, 0x07, 0xb2, 0xdd, 0xd0, 0x51, 0x2d, 0x79,
+  0x68, 0x5d, 0x58, 0x57, 0x7c, 0xf2, 0xf2, 0x4a, 0x1f, 0x75, 0x2c, 0x40,
+  0x09, 0x5a, 0x12, 0x40, 0x4e, 0x46, 0xbf, 0xd0, 0x48, 0xcd, 0x14, 0x79,
+  0xc1, 0x4c, 0x6c, 0x92, 0x03, 0x01, 0x77, 0xd8, 0xba, 0x2a, 0xc3, 0xc6,
+  0x51, 0xc3, 0x28, 0x63, 0xf6, 0x98, 0xd2, 0x48, 0x8d, 0x6c, 0x28, 0x43,
+  0x96, 0xd5, 0x2a, 0x57, 0x0e, 0xcc, 0xb9, 0xbf, 0x69, 0x85, 0xf4, 0xc2,
+  0xd7, 0x75, 0x67, 0xd3, 0x44, 0x4e, 0xc4, 0x4c, 0xc7, 0x90, 0x0c, 0xeb,
+  0xce, 0xca, 0x73, 0x33, 0xa5, 0x98, 0xce, 0x1b, 0xcb, 0x14, 0x65, 0x53,
+  0x12, 0x99, 0x88, 0x4e, 0xcc, 0xf6, 0x58, 0x27, 0x46, 0xc0, 0x68, 0x7b,
+  0x17, 0x36, 0xfd, 0x27, 0x6c, 0x9b, 0x34, 0xe3, 0x8a, 0xcf, 0x60, 0x05,
+  0x4e, 0x69, 0x2e, 0xf1, 0x75, 0x84, 0x87, 0x6f, 0x06, 0xb3, 0x4c, 0xf0,
+  0x8b, 0xd3, 0x6b, 0xe7, 0x10, 0xa1, 0xcb, 0x69, 0x86, 0x86, 0xb5, 0x2e,
+  0x35, 0x31, 0xc8, 0xf3, 0x49, 0x9a, 0xd8, 0xe9, 0xe1, 0x4d, 0x90, 0xce,
+  0x90, 0xd6, 0x65, 0x4f, 0x81, 0x19, 0xcc, 0x0d, 0xa7, 0x05, 0x59, 0x37,
+  0x4a, 0x2e, 0x93, 0xcc, 0x50, 0x9c, 0x9c, 0x8b, 0x11, 0xcb, 0xa4, 0x78,
+  0xa8, 0x66, 0xb9, 0xbc, 0x40, 0x3e, 0x10, 0xb4, 0xda, 0x09, 0xcf, 0x5a,
+  0x94, 0xa9, 0x35, 0xa0, 0x49, 0x9b, 0x64, 0xa4, 0x71, 0xac, 0x7f, 0x6c,
+  0x1a, 0x25, 0x96, 0x4b, 0x86, 0x4e, 0x68, 0xac, 0xd3, 0x8b, 0x5e, 0xe4,
+  0x37, 0xa8, 0x59, 0x76, 0xd9, 0x10, 0x9d, 0xa1, 0x97, 0xb6, 0x84, 0x27,
+  0x80, 0x88, 0xa7, 0x20, 0xce, 0xe3, 0x42, 0x92, 0xb1, 0x8c, 0x3f, 0x8e,
+  0x1c, 0x7f, 0x06, 0xd0, 0xf8, 0x8d, 0x1c, 0x44, 0xe9, 0xd0, 0xec, 0xe6,
+  0xb8, 0x71, 0x26, 0xe2, 0x38, 0x19, 0x80, 0x58, 0x0b, 0x82, 0x4f, 0xbc,
+  0x98, 0x65, 0xb7, 0x71, 0x99, 0x0f, 0xdf, 0xc3, 0x64, 0x0f, 0xe7, 0x49,
+  0x75, 0xf5, 0x4d, 0x43, 0x62, 0xd9, 0x44, 0xee, 0xbc, 0x15, 0x45, 0xc7,
+  0x6c, 0x5f, 0x44, 0x3e, 0x53, 0x30, 0x25, 0xc3, 0x2a, 0x49, 0x2b, 0xd1,
+  0x5b, 0x68, 0x05, 0xe8, 0x04, 0x64, 0x36, 0xd8, 0x3a, 0x6a, 0xac, 0xab,
+  0xcc, 0xa9, 0xd1, 0x1c, 0x39, 0xa1, 0x8d, 0x12, 0x0f, 0x64, 0x89, 0xea,
+  0x7a, 0x14, 0xbd, 0xce, 0xab, 0xf4, 0x00, 0xff, 0x06, 0xe6, 0x50, 0xd1,
+  0x54, 0xe4, 0xae, 0x4a, 0x70, 0xa1, 0x91, 0xbd, 0x21, 0x7d, 0x25, 0xbe,
+  0x16, 0xc4, 0xfd, 0x4b, 0xa7, 0xba, 0xa6, 0x76, 0x8b, 0x36, 0xbe, 0xdd,
+  0xe8, 0x46, 0x57, 0xbc, 0xa4, 0xd4, 0x20, 0xcf, 0x11, 0x76, 0xfe, 0x12,
+  0xd4, 0xe6, 0x59, 0xd5, 0x6c, 0xee, 0x8a, 0x2e, 0x3f, 0x24, 0x77, 0xf6,
+  0x78, 0xd0, 0x06, 0x88, 0x06, 0x6a, 0x9c, 0x10, 0xbd, 0x2f, 0x1a, 0xaf,
+  0x01, 0xb3, 0x6e, 0x59, 0x52, 0xf6, 0xfd, 0xa2, 0xb7, 0x61, 0x64, 0x3c,
+  0x7b, 0x24, 0x13, 0xa1, 0xc0, 0x45, 0x2c, 0x6e, 0x92, 0x94, 0xde, 0x28,
+  0xe0, 0x45, 0x66, 0x69, 0x64, 0xd1, 0x10, 0x83, 0xa6, 0xd7, 0xeb, 0x09,
+  0x9f, 0x99, 0x83, 0x66, 0xc0, 0x07, 0x47, 0x6f, 0x84, 0xc7, 0xc3, 0x3f,
+  0x68, 0x55, 0xd1, 0x17, 0x51, 0xd6, 0x7d, 0x4b, 0xcd, 0x1e, 0xfa, 0x69,
+  0xca, 0x37, 0x42, 0xec, 0x36, 0xd2, 0x8b, 0x8e, 0x46, 0x38, 0x1f, 0xd8,
+  0xeb, 0xa7, 0xbd, 0xc7, 0xfb, 0xbd, 0x9d, 0x1a, 0x61, 0x4d, 0xaa, 0xb8,
+  0xbc, 0x1e, 0x46, 0x87, 0x64, 0x76, 0x46, 0x92, 0x0f, 0x12, 0x14, 0xa8,
+  0x1b, 0x72, 0xb9, 0x0a, 0xad, 0xf2, 0x31, 0xe4, 0x4d, 0xd7, 0x36, 0xc8,
+  0x44, 0x48, 0x6e, 0x42, 0x9c, 0x12, 0xd9, 0x35, 0x7d, 0x89, 0xda, 0xf4,
+  0x03, 0x1a, 0x66, 0x86, 0xfa, 0x45, 0x45, 0x42, 0x53, 0x7a, 0x9b, 0xb1,
+  0xf2, 0xab, 0x8d, 0x0d, 0x81, 0xed, 0xa4, 0x22, 0x18, 0x10, 0x5b, 0x93,
+  0xb5, 0x6d, 0x34, 0x47, 0x2b, 0x1d, 0x1d, 0x8d, 0x49, 0xa6, 0x31, 0xf7,
+  0xdc, 0xc8, 0x48, 0xb9, 0x1c, 0x92, 0xc0, 0x8d, 0xe9, 0xee, 0xa0, 0xad,
+  0x73, 0x24, 0x37, 0x4f, 0xeb, 0xe8, 0x88, 0x93, 0xa0, 0xc4, 0x97, 0x21,
+  0x6d, 0xa1, 0x23, 0x02, 0xf8, 0xf1, 0x34, 0x1f, 0x91, 0x6d, 0xdb, 0xdb,
+  0xdb, 0xbe, 0x71, 0x42, 0x76, 0x3a, 0x4e, 0x23, 0x9b, 0xe8, 0x92, 0x06,
+  0x82, 0x9c, 0x5d, 0x56, 0x57, 0x5b, 0xd6, 0xcd, 0xa6, 0x0a, 0x3f, 0x0c,
+  0x84, 0xd5, 0xa7, 0xe6, 0xa9, 0xa3, 0x18, 0x09, 0xa2, 0x8b, 0x5f, 0x17,
+  0x65, 0x45, 0x16, 0x7a, 0xb9, 0xdf, 0x79, 0x26, 0x30, 0xb2, 0x69, 0x3a,
+  0xcd, 0x8b, 0xbb, 0x10, 0x69, 0xf3, 0x29, 0xd0, 0x8d, 0x42, 0x92, 0x26,
+  0xee, 0xae, 0xe4, 0x2c, 0xd4, 0x6c, 0x7d, 0x13, 0x24, 0x15, 0xa9, 0xba,
+  0xd7, 0x5c, 0x0f, 0x72, 0x3c, 0x0a, 0x37, 0x67, 0x0b, 0xff, 0x40, 0x5c,
+  0x8a, 0x78, 0x10, 0x48, 0x20, 0x70, 0x89, 0x9e, 0x2e, 0x07, 0x9e, 0x96,
+  0x37, 0x34, 0x4b, 0x6c, 0x78, 0x63, 0xe8, 0x0b, 0xb5, 0x61, 0xb1, 0xe7,
+  0xd9, 0xb5, 0x42, 0xad, 0x7b, 0x88, 0xa4, 0x07, 0xf8, 0x0f, 0x9d, 0xad,
+  0x6b, 0x1e, 0x1a, 0xb8, 0x82, 0xf3, 0xc9, 0x35, 0x7b, 0x27, 0xe2, 0x58,
+  0x3c, 0x34, 0x71, 0x95, 0xd7, 0x4e, 0xd0, 0x93, 0x47, 0xbd, 0xdd, 0xda,
+  0x09, 0x9a, 0xdd, 0x61, 0xfc, 0x4d, 0x98, 0x0d, 0xa3, 0x76, 0x5b, 0x5a,
+  0xdd, 0x36, 0xbb, 0x5c, 0x14, 0x24, 0xfb, 0x4a, 0xc8, 0x8e, 0x46, 0xea,
+  0xa0, 0xb4, 0x76, 0x95, 0x53, 0xb8, 0x0b, 0xdc, 0xf5, 0xe9, 0x64, 0xdc,
+  0x0d, 0x58, 0x30, 0xe9, 0x92, 0x62, 0x43, 0x1b, 0x3a, 0xdf, 0x40, 0x77,
+  0xa2, 0xc6, 0x66, 0xa9, 0x48, 0xd6, 0x68, 0xab, 0x8d, 0x30, 0xbe, 0x23,
+  0x1a, 0x4e, 0x92, 0x6c, 0x4a, 0x27, 0x4b, 0xcc, 0x03, 0x3d, 0xcf, 0xe4,
+  0xc2, 0x7e, 0x1c, 0x32, 0x35, 0x0c, 0xd0, 0x8d, 0x54, 0x94, 0x28, 0x38,
+  0xb0, 0x75, 0x47, 0xc4, 0x79, 0xb6, 0x9c, 0x5c, 0xa5, 0xc3, 0xf7, 0xca,
+  0xff, 0x55, 0x16, 0x6e, 0x72, 0x75, 0x0c, 0xe4, 0x21, 0x5f, 0x15, 0x3c,
+  0xb5, 0x40, 0x63, 0x4d, 0x0e, 0xaa, 0x39, 0xba, 0xa1, 0x51, 0x47, 0x5d,
+  0x0c, 0x49, 0xa8, 0xa7, 0x33, 0x0e, 0xa7, 0x52, 0x2f, 0x91, 0x08, 0x6e,
+  0xa5, 0xd9, 0x28, 0xae, 0x8a, 0x6c, 0xde, 0x36, 0x3a, 0x95, 0x4a, 0x5c,
+  0xa9, 0xb9, 0x14, 0x1b, 0x14, 0x39, 0x96, 0xd8, 0xd5, 0x34, 0x8c, 0x1a,
+  0xab, 0xd9, 0x3c, 0x4c, 0xb4, 0xb6, 0x5d, 0xb4, 0x04, 0x64, 0x20, 0xca,
+  0xb0, 0x98, 0x4e, 0xf2, 0xcf, 0x28, 0x57, 0x31, 0x02, 0x54, 0xcb, 0x6c,
+  0x48, 0x52, 0x5a, 0x76, 0x99, 0x62, 0x88, 0x14, 0xc8, 0x0a, 0xd5, 0x04,
+  0xe4, 0x36, 0xff, 0x6c, 0xc2, 0x37, 0xe9, 0x65, 0x5e, 0xa1, 0x98, 0xe4,
+  0x91, 0x38, 0xdb, 0x42, 0x0d, 0x4d, 0xa8, 0x41, 0xce, 0x15, 0x18, 0x33,
+  0xd6, 0xae, 0xa0, 0x6b, 0x31, 0x0e, 0xf0, 0x19, 0x23, 0x8b, 0x44, 0x73,
+  0xd7, 0xa1, 0xb5, 0xa1, 0x18, 0x33, 0x50, 0xaa, 0x55, 0xa1, 0x5a, 0x35,
+  0x11, 0x64, 0x65, 0x28, 0xc0, 0x57, 0x37, 0xd9, 0x30, 0x55, 0x5b, 0xae,
+  0xc4, 0x7b, 0x4c, 0x32, 0xff, 0xb6, 0x9c, 0x22, 0x2f, 0x81, 0x97, 0x58,
+  0x59, 0x40, 0x4f, 0xe4, 0x4d, 0x86, 0xca, 0x04, 0xf3, 0x69, 0x16, 0x18,
+  0xe5, 0x46, 0x4d, 0x8a, 0x8c, 0x1c, 0xae, 0xe8, 0x8c, 0x32, 0x06, 0xca,
+  0x10, 0x6f, 0xe0, 0x71, 0xd3, 0xfb, 0xa2, 0x5f, 0x59, 0xbd, 0x8a, 0x18,
+  0xc3, 0x98, 0xec, 0x42, 0xde, 0x3a, 0x11, 0x03, 0xbe, 0x4c, 0xc9, 0x37,
+  0xcd, 0x7b, 0xb0, 0xc0, 0x45, 0xc7, 0x70, 0x36, 0xef, 0x69, 0xf6, 0xff,
+  0xd7, 0x57, 0xd6, 0x38, 0xb5, 0x98, 0x6f, 0x20, 0x87, 0x46, 0x1f, 0x12,
+  0x51, 0x58, 0x3a, 0x1e, 0xc3, 0xb9, 0x5d, 0xfb, 0xfe, 0x95, 0x96, 0x79,
+  0x10, 0x40, 0x35, 0x07, 0xf3, 0x9b, 0xd1, 0x9a, 0x0c, 0x84, 0x82, 0xf3,
+  0xb4, 0xa5, 0xae, 0xd2, 0x95, 0xf0, 0x13, 0x26, 0x2d, 0x87, 0x75, 0x24,
+  0xf8, 0x04, 0xa8, 0xa8, 0xa9, 0x47, 0x63, 0x9b, 0xa8, 0xaf, 0xa2, 0x59,
+  0x70, 0x4b, 0xa3, 0x44, 0x52, 0x89, 0x93, 0x31, 0xe1, 0x7c, 0xc4, 0xe4,
+  0xf1, 0x9e, 0x10, 0xf6, 0xc2, 0xed, 0x84, 0x6f, 0x35, 0x50, 0xe0, 0x30,
+  0xf8, 0x85, 0xee, 0x25, 0x3d, 0x4d, 0x70, 0x98, 0xd0, 0xc6, 0xa8, 0x51,
+  0x66, 0x18, 0xd2, 0x21, 0x74, 0x20, 0x9c, 0x44, 0x62, 0x01, 0x51, 0x39,
+  0x6e, 0x34, 0x87, 0x24, 0x4d, 0xf7, 0x75, 0x97, 0x85, 0x61, 0x66, 0xff,
+  0x43, 0x8e, 0xf0, 0xe8, 0x91, 0x6c, 0xc8, 0x57, 0x36, 0x8d, 0x71, 0x3c,
+  0x49, 0x2e, 0xf1, 0x20, 0x64, 0x97, 0xb3, 0x9c, 0x43, 0xfa, 0x9a, 0x54,
+  0x9e, 0xc3, 0x4d, 0x49, 0x36, 0x50, 0xb6, 0xb6, 0x95, 0xd1, 0x26, 0xd0,
+  0xfd, 0x64, 0x41, 0x3b, 0x7e, 0x06, 0xb3, 0xea, 0xf7, 0x5f, 0x6c, 0x2d,
+  0x27, 0x0a, 0x9e, 0xfb, 0x3d, 0x68, 0x02, 0xcd, 0xdd, 0xac, 0x15, 0x34,
+  0xfd, 0x54, 0xa2, 0x3b, 0x28, 0x43, 0x00, 0xe1, 0x9e, 0x5b, 0x5d, 0x97,
+  0x8c, 0x78, 0x7f, 0x62, 0x5a, 0x3c, 0xf6, 0xc4, 0x99, 0xf1, 0x8d, 0xbd,
+  0xd8, 0xa0, 0x76, 0x52, 0x2a, 0x90, 0x36, 0x28, 0x76, 0x89, 0xa9, 0xe7,
+  0xb8, 0xcb, 0x37, 0x12, 0x6c, 0xd6, 0x22, 0x8d, 0x93, 0xaa, 0x76, 0x03,
+  0xdd, 0x94, 0xa0, 0xcb, 0x5f, 0x5e, 0x3f, 0x02, 0x69, 0x99, 0x85, 0xd7,
+  0x62, 0xf7, 0xa7, 0x03, 0xfd, 0x75, 0xef, 0xa7, 0x83, 0x22, 0xbd, 0x84,
+  0xf3, 0xf8, 0xd3, 0x01, 0xae, 0x2f, 0xb0, 0x8a, 0x5f, 0x7e, 0xf9, 0xe5,
+  0x1b, 0xff, 0x40, 0x46, 0x47, 0x3f, 0xf4, 0xa3, 0xbf, 0x3d, 0xa2, 0x50,
+  0x19, 0x8a, 0xa5, 0x6c, 0xde, 0x51, 0x12, 0x69, 0xa3, 0x92, 0x95, 0xb7,
+  0x30, 0xa4, 0xb9, 0x6b, 0xaf, 0x46, 0x62, 0x67, 0x95, 0x19, 0x44, 0x5b,
+  0xbe, 0x44, 0x48, 0xe7, 0x12, 0x87, 0xff, 0x9d, 0x48, 0x8f, 0x97, 0x39,
+  0x10, 0xe1, 0xd5, 0xd4, 0xb7, 0xe4, 0xce, 0x98, 0xa8, 0xc8, 0xc7, 0xb2,
+  0xa8, 0x2e, 0xf9, 0x7a, 0xaa, 0x0f, 0x4a, 0xae, 0x9e, 0xe0, 0x60, 0x78,
+  0xda, 0x4b, 0x46, 0xe2, 0x48, 0xa0, 0xa0, 0x78, 0xe6, 0x97, 0x45, 0x32,
+  0xbf, 0xc2, 0xe3, 0x0a, 0x9d, 0xfa, 0x6a, 0x10, 0x5d, 0x8c, 0x65, 0xbe,
+  0x28, 0x30, 0x3a, 0x6b, 0x98, 0x4f, 0x26, 0x1c, 0xbd, 0x11, 0x6d, 0x72,
+  0x37, 0xb0, 0x39, 0xa3, 0x74, 0x8b, 0x47, 0x5d, 0xd9, 0xce, 0x49, 0x0c,
+  0xcc, 0x9a, 0x27, 0x28, 0x9f, 0x66, 0x55, 0xa5, 0x71, 0x5d, 0xf8, 0x34,
+  0x90, 0x07, 0x0d, 0x26, 0x38, 0x0f, 0xd9, 0xb6, 0x7b, 0x4e, 0x64, 0xbc,
+  0x98, 0xf1, 0xc0, 0x70, 0x2f, 0x9a, 0x37, 0x35, 0x6b, 0x36, 0x18, 0xdf,
+  0x02, 0x57, 0x44, 0xbe, 0x18, 0x45, 0x9b, 0xd2, 0x78, 0x73, 0xf8, 0xda,
+  0xa7, 0x8c, 0x5f, 0x47, 0x1c, 0xba, 0x02, 0x96, 0x8e, 0x9f, 0x55, 0x2d,
+  0x43, 0xa0, 0x21, 0xfd, 0xca, 0x53, 0xaf, 0x58, 0xa3, 0x62, 0x95, 0xca,
+  0x73, 0x2e, 0x7d, 0x80, 0x82, 0x65, 0x46, 0xd1, 0x81, 0x5f, 0x0f, 0x92,
+  0xe9, 0x6f, 0x07, 0x29, 0xf4, 0x16, 0xef, 0x1d, 0xa4, 0x65, 0x47, 0xd9,
+  0x7e, 0xe7, 0x7d, 0x7a, 0x07, 0xe7, 0x04, 0xe8, 0xae, 0xea, 0xac, 0xc9,
+  0xfc, 0x1d, 0x5e, 0x6f, 0xef, 0x32, 0x57, 0x72, 0x7c, 0xfa, 0xb8, 0xae,
+  0x7b, 0xd1, 0x0b, 0x2d, 0xea, 0x7b, 0x5d, 0x70, 0x44, 0xc9, 0x8f, 0xac,
+  0xae, 0xdf, 0x71, 0x1f, 0xf5, 0x33, 0x60, 0x4c, 0x7a, 0x85, 0x27, 0x99,
+  0x11, 0x27, 0xc7, 0x58, 0xad, 0x9e, 0x91, 0xaa, 0xf0, 0x41, 0x0d, 0x19,
+  0x63, 0x99, 0x21, 0x53, 0x5f, 0x34, 0x1f, 0xcd, 0x05, 0x39, 0x23, 0x68,
+  0x3b, 0x9b, 0xcd, 0x61, 0x2c, 0x86, 0x89, 0xc9, 0x50, 0xbb, 0x49, 0x46,
+  0x66, 0x22, 0xbc, 0x4c, 0x0a, 0x8c, 0xd2, 0x43, 0x93, 0x71, 0x7a, 0x9d,
+  0xe5, 0x8b, 0x12, 0x5a, 0xc1, 0x8d, 0x94, 0xb6, 0x91, 0x50, 0x7d, 0xc5,
+  0x19, 0x29, 0x19, 0x74, 0x2a, 0xe0, 0x27, 0x48, 0xd8, 0x61, 0xa9, 0x78,
+  0xb3, 0x5c, 0xa0, 0xdc, 0x86, 0x81, 0x23, 0x2a, 0x96, 0xd1, 0x75, 0xda,
+  0x1c, 0x1d, 0x4b, 0x6e, 0x14, 0x67, 0x63, 0x44, 0xb4, 0xad, 0x8f, 0x28,
+  0x7b, 0xf0, 0x06, 0x7f, 0x74, 0xc9, 0x63, 0x41, 0x87, 0xec, 0x00, 0x83,
+  0xda, 0x30, 0xf6, 0xc3, 0x74, 0xf4, 0x10, 0xd1, 0x83, 0xde, 0x74, 0x69,
+  0x0c, 0xf4, 0xc5, 0xb4, 0xa8, 0x58, 0xbd, 0xf7, 0x34, 0xfb, 0x8b, 0xd3,
+  0xfe, 0x56, 0x80, 0xd2, 0xea, 0x41, 0xbe, 0xf8, 0x3e, 0x4a, 0xd9, 0x18,
+  0x8b, 0xc5, 0xb1, 0x69, 0x39, 0x5a, 0xaa, 0x1c, 0x6b, 0x9f, 0xe3, 0x7d,
+  0x9a, 0xa7, 0xa9, 0x58, 0x42, 0xe9, 0x51, 0x94, 0x5a, 0xf1, 0xd2, 0xc2,
+  0x8b, 0xd5, 0x09, 0x6a, 0x3a, 0x3e, 0x8a, 0xdc, 0x66, 0x4b, 0x8e, 0x48,
+  0x6e, 0xba, 0xf2, 0xed, 0x03, 0x9b, 0xe5, 0x96, 0x95, 0x5e, 0xa1, 0xa9,
+  0xf3, 0x93, 0x57, 0x64, 0x56, 0x85, 0x6b, 0x10, 0xa4, 0x0d, 0xf1, 0x9e,
+  0x69, 0x08, 0x15, 0x46, 0x3c, 0xb8, 0x51, 0x86, 0xd6, 0x50, 0x40, 0x91,
+  0xfb, 0x4c, 0xf8, 0x34, 0x3a, 0x0e, 0x11, 0xce, 0x28, 0xc6, 0xae, 0x79,
+  0x0c, 0xaa, 0xbb, 0xb9, 0x04, 0x06, 0x2e, 0xca, 0x9a, 0x3b, 0xc3, 0x58,
+  0x38, 0x2b, 0xb2, 0x50, 0xa1, 0xbd, 0xd5, 0x69, 0xd3, 0xdb, 0x7a, 0xf6,
+  0x0d, 0xa1, 0x02, 0x70, 0x39, 0xcb, 0x7e, 0x13, 0x83, 0x49, 0x3a, 0xbb,
+  0xce, 0x8a, 0x7c, 0x46, 0xbc, 0x9c, 0x22, 0x3f, 0x06, 0x62, 0x30, 0x18,
+  0x45, 0x1b, 0xc7, 0x6f, 0xdf, 0x9c, 0xbe, 0x3b, 0x3e, 0x7a, 0xf7, 0xdd,
+  0xdb, 0xd7, 0xcf, 0x4e, 0x4f, 0x36, 0x9a, 0x62, 0xca, 0x58, 0x1c, 0x4a,
+  0x25, 0x9a, 0xec, 0xc8, 0xc5, 0x58, 0x4a, 0xa3, 0x1c, 0x3a, 0x46, 0xa6,
+  0x22, 0x0a, 0x6f, 0x64, 0x53, 0x9c, 0x38, 0x58, 0x74, 0xc5, 0x1b, 0xcd,
+  0x0d, 0x16, 0x68, 0x58, 0x10, 0xde, 0x20, 0x93, 0xd7, 0x83, 0x2c, 0xd6,
+  0x64, 0x1d, 0x5f, 0xf8, 0xba, 0xbf, 0xd1, 0xc8, 0x1f, 0xb5, 0x5d, 0xd2,
+  0x4d, 0xe9, 0xc4, 0x3d, 0x2e, 0xaa, 0x1c, 0xb6, 0x49, 0x96, 0x12, 0xe3,
+  0x30, 0x68, 0xd5, 0x13, 0x18, 0x50, 0x60, 0xbb, 0x4b, 0x6b, 0x3a, 0x81,
+  0x95, 0xc0, 0x56, 0x80, 0x7e, 0x63, 0x19, 0xe4, 0xb0, 0xa8, 0x36, 0xba,
+  0x51, 0x9a, 0xd1, 0xb1, 0xd5, 0x50, 0x74, 0xbc, 0x9d, 0xc8, 0x4b, 0xe4,
+  0xc5, 0xb7, 0x60, 0xdc, 0x47, 0xc2, 0x74, 0xdd, 0x4b, 0x6f, 0x53, 0xe2,
+  0x0b, 0xf2, 0xd6, 0xf1, 0xa2, 0x20, 0x6e, 0xf3, 0x03, 0xa8, 0xa1, 0x78,
+  0xb2, 0x9f, 0x69, 0xa0, 0x88, 0x3e, 0x04, 0x02, 0x7c, 0xf3, 0xa2, 0xcb,
+  0x27, 0x24, 0xd4, 0x90, 0x7d, 0x9f, 0x3c, 0x31, 0xe7, 0x47, 0x17, 0x2f,
+  0x42, 0xb7, 0x5d, 0x9d, 0x0c, 0x49, 0xa6, 0x2c, 0x2b, 0xb9, 0xdc, 0x5e,
+  0xf7, 0xfb, 0x11, 0x25, 0xdf, 0x60, 0xfc, 0x68, 0x91, 0x60, 0x87, 0xce,
+  0x17, 0x40, 0xd5, 0x4d, 0xe6, 0xf3, 0x97, 0xe3, 0xfe, 0xef, 0x76, 0x77,
+  0xd1, 0xec, 0xb4, 0x80, 0x75, 0xd9, 0x84, 0xb7, 0x66, 0x25, 0x9c, 0xcc,
+  0x69, 0xaf, 0xcc, 0xb7, 0x24, 0xba, 0x8f, 0xf5, 0xc0, 0xe4, 0x1a, 0xd4,
+  0x2c, 0x22, 0x23, 0x25, 0xea, 0x96, 0x98, 0x1f, 0x93, 0x95, 0x04, 0xfc,
+  0x02, 0x14, 0xb5, 0x89, 0x6f, 0x41, 0xda, 0xcc, 0xce, 0x38, 0xc9, 0x69,
+  0x9a, 0x0c, 0xe1, 0x37, 0xb4, 0x5e, 0x6f, 0xb5, 0x4f, 0xac, 0xcf, 0x56,
+  0x08, 0x8e, 0xcb, 0xa2, 0x94, 0x24, 0x9f, 0x2b, 0xcc, 0x02, 0x26, 0x29,
+  0x1b, 0xa3, 0x82, 0x03, 0x1e, 0x24, 0xc3, 0xf7, 0x37, 0x49, 0x41, 0xd1,
+  0x7b, 0x40, 0xb7, 0xd9, 0x20, 0x9b, 0x64, 0x15, 0xfb, 0xaa, 0x9a, 0x92,
+  0x13, 0x6d, 0x3f, 0xae, 0x61, 0x3a, 0xbb, 0xcc, 0x66, 0x28, 0x38, 0xa0,
+  0x41, 0x2a, 0xab, 0x5c, 0x5b, 0x30, 0x29, 0xc6, 0xac, 0xd0, 0xb8, 0x7e,
+  0xa9, 0xc8, 0x17, 0xc4, 0xf0, 0x69, 0x3e, 0x4b, 0x3c, 0x50, 0x4b, 0xb9,
+  0xca, 0x08, 0x5d, 0x3e, 0x65, 0xc8, 0xee, 0x0e, 0x74, 0xa8, 0x69, 0xc0,
+  0x36, 0x40, 0x22, 0xc4, 0x5f, 0xd2, 0xbb, 0xe1, 0x15, 0x72, 0x3c, 0xc3,
+  0x28, 0x0d, 0x6b, 0xec, 0x8a, 0x0d, 0x22, 0x53, 0xcf, 0x6e, 0xaa, 0xce,
+  0x79, 0xbe, 0xea, 0x7c, 0xa9, 0x93, 0x1b, 0x50, 0x03, 0x0c, 0xb6, 0xb1,
+  0x51, 0xd6, 0x58, 0x32, 0x75, 0xe5, 0x6f, 0x62, 0x1f, 0x3e, 0x9f, 0xcd,
+  0xd2, 0x89, 0xec, 0xdf, 0x45, 0x9d, 0xbb, 0xd5, 0x57, 0xdf, 0x3c, 0x0b,
+  0x63, 0x96, 0x50, 0xbe, 0x46, 0x73, 0x4f, 0x29, 0x41, 0x22, 0xa9, 0xf4,
+  0xc2, 0xd4, 0x94, 0xac, 0xa7, 0xbd, 0x27, 0x3b, 0xe6, 0xab, 0x5e, 0xb3,
+  0x17, 0xdb, 0x8d, 0x77, 0x9a, 0x96, 0x6e, 0xb9, 0xbf, 0xc9, 0x7f, 0x32,
+  0x6a, 0x2b, 0x71, 0xbf, 0x46, 0x73, 0xae, 0x79, 0x45, 0xae, 0x30, 0x99,
+  0xc6, 0x06, 0x48, 0xc9, 0x39, 0x1a, 0xc9, 0xc6, 0x51, 0x91, 0xc3, 0x56,
+  0xd7, 0x36, 0x73, 0x93, 0x48, 0x63, 0xe4, 0xc9, 0x4c, 0xc2, 0xcd, 0x9d,
+  0x85, 0xd9, 0x0a, 0x9a, 0x59, 0xcd, 0xe5, 0xba, 0x4c, 0xaa, 0x35, 0x96,
+  0xd2, 0xba, 0x93, 0xa0, 0xc9, 0x87, 0x55, 0xa2, 0x5d, 0x4b, 0xa0, 0x95,
+  0xee, 0x8f, 0x8f, 0x48, 0xdb, 0x7c, 0x80, 0xbd, 0x73, 0x98, 0xf0, 0x75,
+  0x81, 0x22, 0xeb, 0x7b, 0x14, 0x81, 0x60, 0x95, 0xe9, 0x3c, 0xd7, 0x25,
+  0x08, 0x7a, 0xe8, 0x10, 0xd8, 0xec, 0x87, 0x0b, 0x10, 0x4e, 0x50, 0x9e,
+  0x7f, 0xa7, 0xca, 0x61, 0xe1, 0x23, 0xcb, 0x92, 0x44, 0xf4, 0x4a, 0x85,
+  0x06, 0x1c, 0x44, 0xa9, 0x96, 0x63, 0xb3, 0xda, 0x83, 0x3b, 0xf5, 0xc0,
+  0xfa, 0xf6, 0x29, 0x8a, 0xb8, 0x65, 0x57, 0xdd, 0x41, 0x27, 0xda, 0x4c,
+  0x7b, 0x97, 0xd0, 0x5e, 0x07, 0xdb, 0xd9, 0x3d, 0xc0, 0x7f, 0xf7, 0xe8,
+  0xdf, 0xfd, 0xce, 0x96, 0xa4, 0x72, 0xba, 0xb4, 0x81, 0xc2, 0x86, 0xbf,
+  0x47, 0x75, 0xd9, 0x83, 0xef, 0xdf, 0xac, 0x8d, 0x33, 0xb2, 0xe5, 0xe2,
+  0x94, 0x49, 0xc0, 0x17, 0x56, 0x75, 0x19, 0xa6, 0x6c, 0xe0, 0xbf, 0x4e,
+  0xd9, 0xc3, 0x00, 0x33, 0xc3, 0xb8, 0xdc, 0x74, 0xe4, 0xb8, 0xdd, 0x86,
+  0xef, 0x8a, 0x14, 0xc4, 0xcc, 0xab, 0x68, 0x51, 0xf1, 0x21, 0x81, 0x73,
+  0xd5, 0x6c, 0x6e, 0x3e, 0xc9, 0xac, 0x17, 0x4d, 0xba, 0xee, 0xa9, 0x41,
+  0xd2, 0xee, 0x22, 0xc7, 0x0c, 0x4c, 0xf2, 0x1b, 0x7d, 0x26, 0x96, 0x4c,
+  0xcb, 0x90, 0xd8, 0x02, 0xbb, 0x49, 0x8e, 0x08, 0x7c, 0xcc, 0x4d, 0x57,
+  0x98, 0xa2, 0x38, 0x8e, 0x69, 0xa0, 0x11, 0x0a, 0xbc, 0xd9, 0x10, 0x4d,
+  0x8d, 0x13, 0xda, 0x37, 0x34, 0xaa, 0x2e, 0x02, 0x41, 0xc5, 0x86, 0x56,
+  0xb3, 0xb1, 0xb8, 0x3c, 0xe5, 0x6f, 0xba, 0xef, 0x45, 0x42, 0x2c, 0x39,
+  0xa5, 0x01, 0x44, 0x95, 0x9a, 0x6c, 0x18, 0x38, 0x7a, 0x0d, 0x59, 0x8d,
+  0xf8, 0xb7, 0xab, 0xd6, 0xc8, 0x64, 0xeb, 0x3e, 0x39, 0xb1, 0x3f, 0xf5,
+  0x5a, 0x4e, 0x32, 0x8b, 0x4b, 0x9f, 0xed, 0x24, 0x53, 0xf7, 0xdb, 0x64,
+  0x30, 0xda, 0xb6, 0x67, 0x64, 0xdd, 0xe3, 0x4c, 0x6b, 0xba, 0xe2, 0x38,
+  0xc3, 0x23, 0x31, 0x7a, 0x6d, 0x17, 0xe5, 0x3d, 0x4e, 0xb3, 0x73, 0x7f,
+  0xf1, 0x3b, 0x1a, 0x7e, 0x21, 0x81, 0x71, 0xee, 0x56, 0x35, 0x57, 0xe2,
+  0xce, 0x21, 0xe1, 0x63, 0x87, 0x07, 0xf4, 0xb9, 0xa1, 0x37, 0xe2, 0x65,
+  0xd8, 0x4c, 0xde, 0x27, 0xbd, 0xe8, 0xec, 0xb8, 0x7f, 0x8e, 0x5d, 0xcc,
+  0x31, 0x18, 0x70, 0x0b, 0x23, 0x05, 0x1b, 0xcd, 0x81, 0x82, 0x95, 0xce,
+  0xca, 0x5a, 0xda, 0x74, 0x2b, 0x41, 0x68, 0x8c, 0x80, 0x86, 0x37, 0xd7,
+  0xa2, 0xf8, 0x28, 0x8c, 0x90, 0x92, 0x81, 0x22, 0x66, 0x0a, 0x5e, 0x47,
+  0x73, 0x58, 0xff, 0xd1, 0x96, 0xf1, 0x76, 0x74, 0x95, 0x6a, 0x4d, 0x28,
+  0x50, 0xb9, 0xb8, 0x44, 0x5d, 0xb3, 0x54, 0x2b, 0xa7, 0xe9, 0x01, 0x56,
+  0xc3, 0x17, 0xba, 0x64, 0xda, 0xc6, 0x89, 0x08, 0xda, 0x31, 0x26, 0xf5,
+  0x91, 0xb0, 0x39, 0xcb, 0x6d, 0xab, 0x18, 0xa6, 0x48, 0xd9, 0xcd, 0x19,
+  0x05, 0xd0, 0x70, 0xb6, 0x4a, 0x40, 0x9c, 0xe2, 0x4d, 0x51, 0x1d, 0x79,
+  0x2c, 0x19, 0xcd, 0x01, 0x17, 0x0a, 0x35, 0x34, 0x64, 0x61, 0xd7, 0x04,
+  0x22, 0x64, 0x48, 0x48, 0xa8, 0x79, 0xb0, 0x55, 0x02, 0xdb, 0x33, 0x9c,
+  0xea, 0xfb, 0xd9, 0x02, 0xc3, 0x88, 0x7d, 0xb9, 0x06, 0xe5, 0x53, 0xbc,
+  0xb0, 0x71, 0x01, 0x97, 0xaa, 0xc8, 0x0e, 0x75, 0x39, 0xfa, 0x1e, 0x6b,
+  0xca, 0xb4, 0x02, 0x38, 0x63, 0x51, 0x96, 0x8d, 0xb6, 0xdc, 0x08, 0x47,
+  0x96, 0x68, 0xa6, 0x80, 0x45, 0xd6, 0x69, 0x7d, 0x5d, 0xe3, 0x8f, 0x3b,
+  0xb0, 0x35, 0x15, 0xeb, 0x0c, 0x38, 0xdf, 0x68, 0xbe, 0x18, 0xbc, 0x4f,
+  0xef, 0x6a, 0xe6, 0x9c, 0x47, 0xbb, 0x75, 0x73, 0x0e, 0x75, 0x01, 0x7a,
+  0x63, 0x1a, 0x1d, 0xe2, 0xbf, 0xe1, 0xcb, 0x52, 0xce, 0x97, 0xe6, 0x01,
+  0x12, 0xfd, 0xe0, 0x2b, 0x12, 0xbb, 0xc5, 0x9c, 0x87, 0xbd, 0x37, 0xb5,
+  0x8b, 0xd3, 0x13, 0x7a, 0xe8, 0x6c, 0xf5, 0xf0, 0x3a, 0xea, 0x46, 0xcf,
+  0x10, 0x34, 0xe1, 0xe4, 0xf5, 0xf7, 0x44, 0xf0, 0xe7, 0xbb, 0x7b, 0x14,
+  0x28, 0x63, 0x74, 0xce, 0x11, 0xf5, 0x10, 0x36, 0x91, 0x9a, 0xdc, 0x41,
+  0x1c, 0x03, 0x27, 0x0e, 0x98, 0x9c, 0x61, 0x24, 0x05, 0xd9, 0x74, 0xbe,
+  0xe9, 0xac, 0x71, 0x88, 0xba, 0x6d, 0x3a, 0x01, 0x25, 0x6a, 0x83, 0xf3,
+  0x03, 0x45, 0x2f, 0x30, 0x6a, 0x01, 0xb5, 0x60, 0x05, 0x4d, 0xd2, 0x61,
+  0x61, 0xa4, 0x3d, 0x36, 0x10, 0x06, 0x54, 0x53, 0xb2, 0x71, 0xce, 0xdf,
+  0x0f, 0xcb, 0xdd, 0xdd, 0x83, 0xe8, 0xed, 0x9b, 0x97, 0x2c, 0x9f, 0xe3,
+  0x24, 0x1b, 0x36, 0x2c, 0x1c, 0x7a, 0xd8, 0xec, 0x68, 0x37, 0xe4, 0x73,
+  0x9a, 0x1d, 0xed, 0x28, 0x50, 0x74, 0xe0, 0xbf, 0xf9, 0xde, 0x5b, 0x8b,
+  0x0e, 0x4f, 0xba, 0xf2, 0x2e, 0xfe, 0x04, 0x52, 0x14, 0xa7, 0x12, 0xfc,
+  0x16, 0xd7, 0x57, 0xc0, 0x3e, 0x19, 0x1d, 0x3a, 0x14, 0xf4, 0x93, 0x31,
+  0x30, 0xfd, 0x72, 0x1f, 0xca, 0x0c, 0x4b, 0x72, 0x3e, 0x5d, 0xe2, 0x44,
+  0x42, 0x86, 0x7b, 0x9b, 0x2b, 0x40, 0x53, 0xa5, 0x33, 0xcc, 0x28, 0x1e,
+  0x84, 0xf5, 0x81, 0xbc, 0x2f, 0x99, 0x19, 0x39, 0x3f, 0xe6, 0xa4, 0x54,
+  0xca, 0x19, 0x69, 0x32, 0xd0, 0x61, 0x3e, 0xe9, 0x89, 0xb5, 0xc1, 0xed,
+  0xd8, 0x35, 0x07, 0x91, 0x9a, 0xbc, 0x27, 0x62, 0x19, 0x72, 0x6b, 0xbe,
+  0x78, 0x98, 0x06, 0x9b, 0x54, 0x6f, 0x14, 0x55, 0x8a, 0x5e, 0x35, 0xd2,
+  0x9c, 0x7d, 0x8d, 0x02, 0x1a, 0x69, 0x64, 0xac, 0x7d, 0xd4, 0xf4, 0xc8,
+  0x90, 0x4e, 0x8d, 0x31, 0x42, 0xc6, 0x7a, 0xa7, 0x39, 0x18, 0xba, 0x68,
+  0x35, 0x1f, 0x19, 0xdc, 0x78, 0x45, 0x26, 0x5a, 0x17, 0x9f, 0xb2, 0x66,
+  0x73, 0x1a, 0x58, 0xda, 0xf4, 0xa2, 0x69, 0x9c, 0x1b, 0x25, 0xd3, 0xe2,
+  0xd1, 0xf0, 0xcc, 0x72, 0x21, 0x03, 0x6b, 0x26, 0xb9, 0x53, 0xf3, 0x22,
+  0xbb, 0xc6, 0x07, 0x95, 0x6e, 0xac, 0x8b, 0xb8, 0xae, 0x4b, 0xe6, 0x33,
+  0xfc, 0x39, 0x63, 0x3f, 0x9e, 0x83, 0xa3, 0x51, 0xe3, 0x71, 0x96, 0xf2,
+  0x28, 0xc2, 0x40, 0x22, 0x5f, 0x48, 0xda, 0xc6, 0x94, 0x6c, 0x01, 0xcc,
+  0x08, 0x58, 0x16, 0x5e, 0x32, 0x5f, 0x71, 0xa9, 0xf2, 0x9b, 0x08, 0xb7,
+  0xc2, 0x06, 0xbd, 0x19, 0x1f, 0x47, 0x57, 0xfc, 0xf4, 0xb4, 0xcd, 0x92,
+  0xd1, 0x1d, 0xb8, 0x0a, 0x6d, 0x90, 0x57, 0x44, 0x52, 0x3e, 0x9a, 0x7c,
+  0x3a, 0x3f, 0xc3, 0x2f, 0x64, 0xd1, 0xe3, 0xb4, 0x5c, 0xc7, 0x09, 0x2f,
+  0xfc, 0x90, 0x42, 0x80, 0x9b, 0xcd, 0x99, 0x1d, 0x1c, 0xa5, 0x93, 0x6c,
+  0x9a, 0x91, 0x42, 0xdb, 0xd7, 0x54, 0x4a, 0x8e, 0x12, 0xa4, 0xc1, 0xf0,
+  0x58, 0x78, 0x09, 0x4d, 0xe7, 0x9d, 0x9f, 0x3b, 0x4d, 0x03, 0x21, 0x0e,
+  0xe4, 0xe7, 0xd5, 0x03, 0x31, 0xf9, 0xea, 0xcb, 0xe3, 0xd5, 0x1c, 0x48,
+  0x9e, 0xba, 0x9a, 0x81, 0xe3, 0xc0, 0xeb, 0x19, 0xb5, 0x65, 0xb1, 0x2a,
+  0x69, 0x18, 0x80, 0x21, 0x9b, 0xe6, 0x89, 0x82, 0x3e, 0x2b, 0x0c, 0xb1,
+  0x66, 0x29, 0x0f, 0x5d, 0xff, 0xd9, 0xf0, 0x3d, 0xe7, 0xa4, 0x8e, 0x9b,
+  0x46, 0x0f, 0x93, 0x7c, 0xcd, 0xc0, 0x01, 0x81, 0x85, 0x23, 0xe3, 0x15,
+  0xc6, 0x24, 0xe0, 0x21, 0x46, 0xb6, 0x9c, 0xcd, 0xac, 0x77, 0x2f, 0x68,
+  0xea, 0x84, 0xb1, 0xbe, 0x7b, 0xf6, 0xf2, 0x4d, 0xb4, 0x89, 0x76, 0x80,
+  0xa6, 0xa9, 0x4d, 0xf9, 0xfa, 0x76, 0x5a, 0x0d, 0xb7, 0xe7, 0xef, 0xb3,
+  0xed, 0x59, 0x59, 0x8e, 0x06, 0x5b, 0xc6, 0x3d, 0xad, 0xb6, 0x32, 0x6b,
+  0x1e, 0x53, 0xfb, 0x18, 0x19, 0xc8, 0x9a, 0x07, 0xd4, 0x31, 0x98, 0xe1,
+  0x95, 0x62, 0xec, 0x64, 0xb4, 0x46, 0x74, 0xfc, 0x29, 0xaa, 0x89, 0xa3,
+  0x86, 0x29, 0x16, 0x2a, 0xc0, 0xe2, 0x9d, 0xe8, 0x6e, 0x81, 0x22, 0xc0,
+  0xf0, 0x6e, 0x14, 0xd9, 0x09, 0x80, 0x26, 0x63, 0xb0, 0x05, 0x5a, 0x39,
+  0xb1, 0x2d, 0x8e, 0xac, 0x4d, 0x11, 0x5e, 0x0c, 0x05, 0x62, 0x48, 0x38,
+  0xa9, 0x89, 0x9a, 0x64, 0x4d, 0xb5, 0xb7, 0xdd, 0x41, 0x96, 0xc6, 0x58,
+  0x18, 0x26, 0x60, 0x0c, 0x0e, 0xe6, 0x78, 0xc1, 0xf6, 0xd5, 0x80, 0x4d,
+  0x0c, 0xb6, 0x13, 0x17, 0xc5, 0x6c, 0x81, 0xee, 0x66, 0x3b, 0x1d, 0xb5,
+  0x29, 0xab, 0xd6, 0x2e, 0xa9, 0x5c, 0x82, 0x59, 0xa0, 0x5c, 0xc4, 0x81,
+  0x2b, 0x5a, 0xd7, 0xb3, 0xcb, 0x0b, 0x9a, 0x98, 0x4d, 0xc1, 0x2b, 0x7b,
+  0x13, 0x91, 0x70, 0x9e, 0x3e, 0xde, 0xdd, 0xdb, 0xaa, 0x85, 0x7c, 0x09,
+  0xd7, 0xf0, 0x52, 0x45, 0x51, 0xf7, 0x4f, 0xea, 0x5c, 0x1e, 0x15, 0x22,
+  0x91, 0x54, 0x6d, 0xd3, 0xa3, 0x14, 0x5d, 0x93, 0x20, 0x8b, 0xa9, 0x0f,
+  0x74, 0x90, 0xc2, 0x20, 0xbd, 0x8d, 0xb7, 0x90, 0x04, 0x22, 0x46, 0x74,
+  0xac, 0x2e, 0x88, 0x79, 0x44, 0xb0, 0x01, 0x95, 0x9c, 0x41, 0x77, 0xd4,
+  0x3d, 0x5e, 0xa7, 0xa4, 0xc5, 0x16, 0x8b, 0xf3, 0x72, 0xc4, 0x89, 0xae,
+  0x8d, 0xb9, 0x89, 0x63, 0x59, 0x2c, 0xe1, 0xd5, 0x26, 0xdc, 0x10, 0xe3,
+  0x92, 0x9b, 0xe2, 0x9b, 0x8c, 0xa9, 0x83, 0xd7, 0xce, 0x8c, 0xa2, 0xe8,
+  0x12, 0x47, 0x46, 0xd1, 0xd5, 0x77, 0xa5, 0x87, 0x7a, 0xab, 0x81, 0x10,
+  0x54, 0xe4, 0x38, 0x20, 0x1f, 0x85, 0x9b, 0x0c, 0x9b, 0x79, 0xd7, 0xb6,
+  0xf3, 0x2e, 0x37, 0xf3, 0x36, 0x59, 0x87, 0x6c, 0x0f, 0xee, 0xbd, 0xd8,
+  0xed, 0x07, 0xa9, 0x64, 0x03, 0x33, 0xaf, 0x31, 0xd7, 0x98, 0x77, 0xe9,
+  0xc3, 0xeb, 0xdb, 0x7a, 0x6b, 0xd1, 0xb5, 0x55, 0x37, 0xbd, 0x62, 0x7a,
+  0x1b, 0xda, 0x5a, 0xdf, 0x8b, 0xad, 0x95, 0x2e, 0x73, 0x73, 0x94, 0x7c,
+  0x6f, 0x8d, 0xca, 0x08, 0x31, 0x65, 0x99, 0x37, 0x8c, 0x52, 0xb8, 0x08,
+  0xce, 0x0d, 0xd9, 0xb3, 0xc7, 0x9d, 0x72, 0x60, 0xc2, 0xbe, 0x24, 0x4d,
+  0x5b, 0x71, 0x9c, 0xe0, 0x81, 0xb3, 0x0f, 0x62, 0x5d, 0x42, 0xd0, 0x67,
+  0xa0, 0xce, 0x8d, 0x52, 0x8d, 0x1d, 0x6f, 0xd2, 0x02, 0x1e, 0x7a, 0x45,
+  0x08, 0x59, 0x76, 0xf8, 0x25, 0xd5, 0xb9, 0xf5, 0x7c, 0x37, 0xad, 0xbe,
+  0xc7, 0xde, 0x15, 0x5f, 0x1a, 0xb9, 0xc9, 0x4a, 0x75, 0x14, 0x0d, 0x40,
+  0x0b, 0xe7, 0x6b, 0xc2, 0x05, 0x27, 0xd9, 0x19, 0x3f, 0x52, 0xcd, 0x96,
+  0x47, 0xb6, 0x55, 0x38, 0x2e, 0x9b, 0xa7, 0x92, 0x34, 0x78, 0xfe, 0xfc,
+  0x47, 0x27, 0x07, 0xd5, 0x33, 0x51, 0x91, 0x29, 0xf8, 0x4f, 0x26, 0x67,
+  0x00, 0x34, 0x51, 0x54, 0x0c, 0xd8, 0x7d, 0x9c, 0x88, 0xa5, 0x96, 0x22,
+  0x11, 0xb7, 0x6c, 0x82, 0x0b, 0x2e, 0x75, 0xe7, 0x90, 0xbe, 0x6b, 0xfa,
+  0xa2, 0x05, 0x10, 0xe2, 0x9b, 0x9f, 0xf9, 0xeb, 0x88, 0xa3, 0x97, 0x7f,
+  0x3e, 0xac, 0xae, 0x16, 0xd3, 0x01, 0xec, 0xe7, 0xac, 0xfa, 0xa6, 0x13,
+  0x71, 0x9c, 0xdb, 0x58, 0xd6, 0x73, 0x89, 0xb9, 0x22, 0x53, 0xd8, 0x21,
+  0xa1, 0xb0, 0xfa, 0xaa, 0xf1, 0xe8, 0x14, 0xfc, 0xc4, 0x26, 0x9b, 0xc0,
+  0xe6, 0xb1, 0x37, 0xc9, 0x93, 0x0b, 0xdf, 0x02, 0x79, 0xfe, 0xfc, 0xea,
+  0xef, 0x3f, 0x7f, 0xb5, 0xff, 0x28, 0x79, 0x9a, 0x0c, 0x9f, 0x8c, 0xbf,
+  0x4c, 0x1e, 0x8f, 0x1e, 0x3f, 0xfd, 0x6a, 0xef, 0xcb, 0xc7, 0xc9, 0xd3,
+  0x47, 0xe3, 0xe4, 0xc9, 0x6e, 0xba, 0xfb, 0xd5, 0x78, 0x6f, 0x7f, 0x34,
+  0x1a, 0xa7, 0x5f, 0x8e, 0x9e, 0x26, 0x9d, 0x1e, 0xa9, 0x64, 0x3a, 0x74,
+  0x9f, 0xd5, 0xaa, 0xee, 0x95, 0x44, 0xfd, 0x17, 0x47, 0xf1, 0x6e, 0x74,
+  0x95, 0xde, 0xea, 0x01, 0x63, 0xa7, 0x82, 0xc9, 0xc5, 0x48, 0x25, 0xcf,
+  0xae, 0x7d, 0xb2, 0x0a, 0x84, 0x86, 0x59, 0x74, 0x68, 0x0d, 0xe4, 0xb4,
+  0x2b, 0x5a, 0x45, 0x5d, 0x56, 0xce, 0xb6, 0x30, 0x16, 0xfc, 0x03, 0xf5,
+  0x9a, 0xe1, 0xbc, 0x9a, 0x87, 0xff, 0x14, 0xcd, 0x56, 0xaf, 0x92, 0xe1,
+  0x15, 0x41, 0x50, 0xc8, 0x83, 0x7d, 0x8e, 0x20, 0xe9, 0x46, 0xf2, 0x0b,
+  0xea, 0x5a, 0x4e, 0x1b, 0xdf, 0x17, 0xf9, 0x62, 0x7e, 0x9e, 0x4f, 0xb2,
+  0xe1, 0xdd, 0xb2, 0xe6, 0xdc, 0xc7, 0x6a, 0x5f, 0x9c, 0x30, 0x0b, 0xcf,
+  0xca, 0xb4, 0xcd, 0x38, 0x4f, 0xf6, 0xc6, 0xb5, 0xed, 0x79, 0x2d, 0x21,
+  0xe6, 0x0f, 0x50, 0xfa, 0x68, 0xfd, 0x89, 0x45, 0xb0, 0xb0, 0x0c, 0xff,
+  0xad, 0xaf, 0xf6, 0xd9, 0x0b, 0x60, 0xa5, 0xde, 0x17, 0x0f, 0xb3, 0xf9,
+  0x15, 0x86, 0xcf, 0x1d, 0x52, 0xae, 0x09, 0xb0, 0x57, 0xf9, 0x20, 0xac,
+  0xef, 0xf5, 0x85, 0x01, 0x94, 0x42, 0x3e, 0xfa, 0xb6, 0xc8, 0x7b, 0x99,
+  0x02, 0x87, 0xa9, 0xdd, 0x57, 0x12, 0x9c, 0x32, 0xcf, 0x30, 0x4e, 0x1e,
+  0x5f, 0x79, 0x59, 0xe4, 0x75, 0x55, 0x0a, 0x18, 0x74, 0x47, 0xbf, 0xed,
+  0x31, 0x56, 0xc5, 0x62, 0x8e, 0xba, 0x0f, 0x61, 0x10, 0xd2, 0xe7, 0xcd,
+  0x73, 0x8d, 0x83, 0x17, 0x02, 0x65, 0x25, 0x09, 0x36, 0xf1, 0xed, 0x9b,
+  0xd3, 0x83, 0xe6, 0x22, 0x99, 0x85, 0x24, 0x1f, 0x6f, 0x99, 0x6e, 0x8f,
+  0xf2, 0x61, 0xb9, 0x5d, 0x96, 0x13, 0x5d, 0x08, 0x42, 0x4b, 0x0b, 0x5b,
+  0x06, 0x64, 0xb8, 0xeb, 0x91, 0xc7, 0x47, 0xb4, 0xf7, 0x4a, 0xff, 0x27,
+  0xc7, 0xcf, 0x5e, 0x9c, 0xc4, 0xf0, 0x6f, 0xff, 0x28, 0x3e, 0x3a, 0xe9,
+  0xef, 0x3d, 0x7e, 0x12, 0x1f, 0x1f, 0xbf, 0xfa, 0x72, 0x4d, 0x12, 0xa9,
+  0x26, 0xe5, 0xf5, 0x6e, 0x6f, 0xbf, 0x46, 0x0a, 0xf9, 0x94, 0x78, 0x77,
+  0x3a, 0x8a, 0xcb, 0xd2, 0x8b, 0x4d, 0xc7, 0xfc, 0x75, 0x8e, 0x2e, 0x3d,
+  0x91, 0x34, 0x0e, 0xba, 0xec, 0xe3, 0x6c, 0x46, 0x29, 0xe7, 0xfa, 0xb2,
+  0xe6, 0x49, 0x71, 0xdc, 0x90, 0x89, 0x0b, 0xef, 0x06, 0x7c, 0xa8, 0x89,
+  0xdc, 0x5a, 0x7f, 0x72, 0xad, 0xa1, 0x28, 0x53, 0xe7, 0x85, 0x41, 0x42,
+  0x21, 0x44, 0xa7, 0xe5, 0xd6, 0xc3, 0xda, 0xa8, 0x5b, 0x22, 0x6d, 0x1e,
+  0x6e, 0x3d, 0xac, 0xb5, 0xbe, 0xf6, 0x89, 0xae, 0x8f, 0xad, 0x5c, 0x27,
+  0x98, 0xd3, 0x79, 0xb9, 0x9e, 0x8c, 0xf3, 0xa4, 0x61, 0x41, 0x34, 0x8f,
+  0x85, 0xa3, 0xc2, 0xd4, 0x64, 0x9e, 0x44, 0xf6, 0x49, 0x6b, 0x3f, 0x56,
+  0xc8, 0x18, 0xa3, 0xc5, 0x99, 0xc8, 0xca, 0x72, 0x19, 0x34, 0x09, 0xcb,
+  0xfa, 0xf5, 0x40, 0x0d, 0xc4, 0xdf, 0xe1, 0x0e, 0x5c, 0x5c, 0x9f, 0x5e,
+  0xf4, 0x82, 0xa3, 0x2d, 0x9b, 0xd2, 0x95, 0xa0, 0x24, 0xb6, 0x66, 0xc7,
+  0x78, 0x49, 0x29, 0x1a, 0x02, 0xda, 0x66, 0xa0, 0x5f, 0xcc, 0xac, 0x87,
+  0xda, 0xbf, 0x5b, 0x15, 0x1b, 0xc8, 0x3a, 0xeb, 0x8b, 0x54, 0x6c, 0x8c,
+  0x51, 0x5a, 0x14, 0x79, 0xd1, 0x0b, 0x10, 0xad, 0x25, 0xd3, 0xd8, 0xbb,
+  0x0c, 0x97, 0x93, 0x6d, 0x3a, 0xc9, 0xf0, 0x63, 0x8a, 0xba, 0x77, 0x36,
+  0xf2, 0x7e, 0x84, 0x7c, 0xbf, 0xa0, 0x64, 0xa0, 0xda, 0xe6, 0xa8, 0x56,
+  0x53, 0xf1, 0xc3, 0x29, 0x78, 0xdd, 0x2b, 0xa8, 0xe5, 0xe0, 0xc4, 0x7f,
+  0x91, 0xa0, 0xe4, 0x71, 0x76, 0x19, 0x8e, 0x30, 0xb3, 0x69, 0x51, 0x15,
+  0x66, 0x93, 0x6a, 0xf8, 0x18, 0x02, 0x31, 0x88, 0x41, 0x43, 0xed, 0x3d,
+  0x25, 0xcb, 0xd1, 0xc6, 0xd2, 0x57, 0xc7, 0x7e, 0x74, 0x20, 0x20, 0xeb,
+  0xaf, 0x60, 0x0e, 0x49, 0x64, 0x22, 0x93, 0x4d, 0x1f, 0xb5, 0x94, 0x24,
+  0x04, 0x25, 0xa5, 0x03, 0xd1, 0xb4, 0x34, 0xa0, 0xe3, 0xd3, 0xf2, 0xff,
+  0x10, 0x52, 0x66, 0x73, 0x51, 0xce, 0xe6, 0x35, 0xdc, 0x9c, 0x8c, 0x80,
+  0x5b, 0x13, 0x4a, 0xb5, 0x0e, 0x49, 0xd6, 0xb9, 0x13, 0xa5, 0xc4, 0xd9,
+  0x4c, 0x9e, 0xcc, 0x59, 0x99, 0x24, 0x37, 0x05, 0x3c, 0x23, 0x81, 0x1c,
+  0xae, 0x64, 0x10, 0x3b, 0x31, 0x17, 0x18, 0xc1, 0x79, 0x27, 0xb9, 0x55,
+  0x70, 0x04, 0x1c, 0x06, 0xa3, 0xb4, 0x7b, 0x9e, 0xdc, 0x84, 0xe7, 0xdf,
+  0x26, 0xaf, 0xb2, 0xbb, 0x9c, 0x3f, 0xa0, 0x63, 0x3d, 0xd0, 0x28, 0x31,
+  0x2b, 0xed, 0xca, 0xee, 0x05, 0xed, 0xb8, 0x92, 0x2d, 0xcd, 0x58, 0x89,
+  0x19, 0x21, 0x81, 0x0a, 0x6e, 0x24, 0x27, 0x7f, 0xab, 0xff, 0xbb, 0xcc,
+  0x25, 0xcb, 0x0e, 0x07, 0x8a, 0xe3, 0xe4, 0x31, 0x36, 0x4f, 0xad, 0xc1,
+  0x84, 0xac, 0x19, 0x03, 0x92, 0xd2, 0xe6, 0x50, 0x97, 0xc6, 0xc8, 0xe3,
+  0x38, 0x77, 0x75, 0x35, 0x03, 0xa3, 0x8b, 0xfc, 0x84, 0x74, 0x1a, 0x49,
+  0x91, 0x6a, 0x17, 0x70, 0xd4, 0x1a, 0xa3, 0x92, 0x71, 0xc4, 0xbe, 0xe1,
+  0xd5, 0x64, 0x5d, 0x3b, 0x03, 0xd0, 0xec, 0x6b, 0xb3, 0xcd, 0x61, 0xef,
+  0x63, 0x6a, 0x1f, 0xb0, 0xde, 0x6c, 0xbb, 0x87, 0x64, 0xe8, 0x12, 0x14,
+  0x13, 0x1e, 0xf7, 0x01, 0x23, 0x76, 0x7d, 0xbd, 0x15, 0xf2, 0xef, 0x39,
+  0x8d, 0x89, 0x3c, 0x85, 0xb1, 0x07, 0xa0, 0xb9, 0x4e, 0xf2, 0x52, 0x9d,
+  0xfc, 0xb0, 0x81, 0x0c, 0xde, 0xc9, 0x30, 0x3c, 0x06, 0xd2, 0xb3, 0xd1,
+  0x1c, 0x3f, 0xc3, 0xdb, 0x33, 0x36, 0xa2, 0xbe, 0x18, 0x1c, 0x2d, 0xd8,
+  0x28, 0x41, 0x73, 0x18, 0x5b, 0x0e, 0x0c, 0xee, 0xe7, 0x9f, 0x41, 0x5a,
+  0xff, 0xb9, 0xd3, 0x1c, 0xdd, 0xcf, 0xc0, 0x47, 0x7f, 0x06, 0x5a, 0xfc,
+  0x99, 0x01, 0x24, 0x7e, 0xbe, 0x46, 0x23, 0x0c, 0xfa, 0x88, 0xca, 0x09,
+  0xc6, 0x27, 0xb0, 0x9a, 0x5b, 0xb7, 0xa1, 0x33, 0xac, 0x2a, 0x27, 0x80,
+  0x78, 0x26, 0x1a, 0x76, 0xc8, 0x87, 0x57, 0x94, 0x73, 0xd2, 0x60, 0xf7,
+  0x16, 0xd3, 0x99, 0xd8, 0x0a, 0x98, 0x56, 0x89, 0x0b, 0x30, 0x36, 0x79,
+  0xb4, 0xf1, 0xbb, 0x0d, 0x87, 0xb2, 0xba, 0x21, 0xf3, 0x64, 0x91, 0xb2,
+  0x30, 0x4c, 0x02, 0x5d, 0xe6, 0xe4, 0x2b, 0x2a, 0x24, 0x29, 0x19, 0x80,
+  0x38, 0x82, 0xc8, 0x17, 0x4f, 0xce, 0xd0, 0x67, 0xca, 0xa0, 0x1d, 0xb9,
+  0x35, 0xed, 0x20, 0x76, 0xc9, 0xfc, 0xea, 0xae, 0xc4, 0xeb, 0x52, 0xc6,
+  0x63, 0xc4, 0x65, 0x1c, 0x62, 0x30, 0x14, 0x54, 0x99, 0x21, 0xef, 0x31,
+  0x3e, 0x42, 0x66, 0x10, 0x64, 0x88, 0x86, 0x8b, 0xc2, 0x58, 0x36, 0xe2,
+  0x0d, 0x13, 0x79, 0x41, 0x3c, 0x92, 0xb8, 0x65, 0x4b, 0xaa, 0xaa, 0xcd,
+  0xc1, 0xf2, 0xba, 0x73, 0x1c, 0x08, 0xb9, 0x9b, 0xf5, 0x65, 0xf1, 0x72,
+  0x11, 0x5b, 0x47, 0xc6, 0x5d, 0xe3, 0x03, 0x6c, 0x7b, 0x6f, 0xee, 0x55,
+  0x6a, 0x50, 0x97, 0x74, 0x1e, 0x98, 0x97, 0x66, 0x5d, 0xfc, 0x71, 0x4c,
+  0x28, 0xe6, 0x73, 0x46, 0x1e, 0x47, 0xf2, 0xa0, 0x50, 0xbc, 0x3b, 0x44,
+  0xe9, 0x98, 0x4f, 0x3c, 0xde, 0x2b, 0x79, 0x47, 0x8a, 0xdd, 0x8a, 0x87,
+  0x1d, 0x11, 0xb0, 0x6f, 0x66, 0x82, 0x51, 0xdc, 0xcf, 0xc9, 0x73, 0x32,
+  0xa4, 0xa0, 0x3e, 0x8e, 0x1c, 0x55, 0xbc, 0x8f, 0x80, 0x45, 0x06, 0xa5,
+  0x0b, 0x4f, 0x41, 0xc0, 0xf1, 0x7c, 0xcd, 0x20, 0xae, 0x9e, 0x9a, 0xd0,
+  0xf1, 0xb4, 0x89, 0xdf, 0xc1, 0x0c, 0x62, 0xbd, 0x43, 0x23, 0xd1, 0xdb,
+  0x62, 0xff, 0xa9, 0xca, 0x88, 0x16, 0x42, 0x33, 0xcd, 0x47, 0xa4, 0x5b,
+  0xe7, 0x6e, 0x6d, 0xfa, 0x06, 0x14, 0xfd, 0x04, 0x9e, 0xc2, 0x41, 0x21,
+  0xc3, 0x12, 0x64, 0xe7, 0xc8, 0x8f, 0x27, 0x8c, 0x93, 0x4b, 0x34, 0xe2,
+  0x7c, 0x8d, 0xa8, 0x62, 0x98, 0x5a, 0x87, 0x7f, 0x6d, 0xef, 0xf6, 0x76,
+  0x42, 0x33, 0xc0, 0x55, 0x17, 0x00, 0x25, 0x71, 0xae, 0xe1, 0xda, 0x56,
+  0x79, 0xbe, 0x7a, 0x8c, 0xbc, 0x2c, 0x70, 0xf5, 0xcd, 0xa1, 0x87, 0xf0,
+  0x68, 0xe2, 0xb3, 0xe6, 0x27, 0x64, 0x59, 0x81, 0x5e, 0xbe, 0x36, 0x50,
+  0xb9, 0xb3, 0x9c, 0x10, 0x98, 0x40, 0x56, 0x9a, 0x4c, 0x6a, 0xa0, 0xdb,
+  0x9d, 0x96, 0xf5, 0x9e, 0x51, 0x2a, 0x5a, 0xda, 0x5c, 0xf6, 0x26, 0x92,
+  0x94, 0x09, 0xce, 0xc4, 0xc5, 0x9f, 0x49, 0x00, 0x05, 0xd0, 0xc7, 0xa6,
+  0x24, 0x23, 0x60, 0x3e, 0x80, 0x48, 0xfe, 0x2c, 0x5b, 0x6e, 0x71, 0xea,
+  0x2a, 0x83, 0xbe, 0x25, 0x2d, 0x3e, 0x06, 0xe7, 0xb8, 0xda, 0x60, 0xea,
+  0x8c, 0x7c, 0x81, 0x24, 0x5a, 0x74, 0x11, 0x30, 0x7a, 0xc6, 0x1e, 0x4d,
+  0x73, 0x46, 0x43, 0xbe, 0x78, 0x14, 0xec, 0x59, 0x72, 0xd1, 0xa6, 0x6b,
+  0x6d, 0x67, 0x25, 0x8f, 0x46, 0x5c, 0x7f, 0x7a, 0xef, 0x2b, 0x43, 0xf6,
+  0x62, 0xb9, 0x08, 0xd7, 0x5d, 0x01, 0x25, 0x48, 0xb1, 0xf2, 0x88, 0x7b,
+  0x77, 0x2b, 0xea, 0xfc, 0x7f, 0x28, 0x58, 0xfc, 0xc5, 0xd9, 0xab, 0x93,
+  0xed, 0x1e, 0x2e, 0x4e, 0x31, 0xf4, 0x88, 0x62, 0x0f, 0x1f, 0xfb, 0xf1,
+  0xd9, 0xf7, 0xef, 0x8e, 0xcf, 0x5e, 0x3f, 0x7f, 0xf9, 0x7d, 0xfd, 0xe1,
+  0x68, 0xd3, 0xcd, 0x4e, 0xd9, 0xef, 0xed, 0x6c, 0x35, 0x5f, 0xdf, 0xc7,
+  0xd7, 0x97, 0x76, 0xf0, 0x68, 0x4b, 0x83, 0x2d, 0x0f, 0xa2, 0xce, 0xef,
+  0xdf, 0xf6, 0x4f, 0xde, 0x9c, 0xbf, 0x39, 0x43, 0x68, 0xca, 0xdf, 0xff,
+  0xdc, 0xf6, 0xca, 0xe3, 0xda, 0x2b, 0x47, 0xe7, 0xe7, 0xcf, 0x8e, 0x2e,
+  0x8e, 0xda, 0x1f, 0x7f, 0xd2, 0xde, 0xc3, 0xd1, 0x1c, 0x61, 0x41, 0x39,
+  0x10, 0xe6, 0x19, 0xd0, 0x5c, 0x6b, 0x1b, 0x4f, 0xb7, 0x80, 0x1f, 0xce,
+  0x62, 0xd3, 0x0e, 0x5a, 0x38, 0x2e, 0xd3, 0x6a, 0x7e, 0xb3, 0xc8, 0x46,
+  0x9c, 0x99, 0x2d, 0x9a, 0xc8, 0x55, 0xae, 0x11, 0xe5, 0x68, 0xc0, 0x6d,
+  0x36, 0xf3, 0xe5, 0x16, 0x5c, 0x08, 0x3a, 0x9a, 0xae, 0x44, 0xe3, 0xe3,
+  0xbb, 0x24, 0xd4, 0x4b, 0xe7, 0x9a, 0x67, 0x29, 0xe6, 0x44, 0xb9, 0x64,
+  0x43, 0x91, 0xa6, 0x8c, 0x09, 0x38, 0x42, 0x61, 0x3f, 0xbf, 0x46, 0xb6,
+  0x8b, 0x0c, 0xcf, 0x52, 0x6d, 0x6e, 0xef, 0x15, 0x0d, 0x74, 0x57, 0x3b,
+  0xf3, 0x04, 0x4e, 0x8c, 0xd7, 0xdc, 0x70, 0x51, 0xe9, 0x09, 0x20, 0x12,
+  0x1a, 0x05, 0x6e, 0x33, 0x83, 0xd5, 0x89, 0x22, 0x93, 0xde, 0x41, 0x2c,
+  0x00, 0x28, 0x85, 0xe2, 0xe5, 0xa6, 0x56, 0x40, 0x10, 0x05, 0x74, 0x56,
+  0x81, 0xb0, 0xa0, 0x77, 0xfc, 0x55, 0x57, 0x51, 0x8f, 0x18, 0xa4, 0x8c,
+  0xaf, 0xb7, 0xbc, 0x98, 0x52, 0x00, 0xe7, 0x19, 0x05, 0xce, 0x6b, 0x7e,
+  0x00, 0xc3, 0xaf, 0xb5, 0x44, 0x19, 0xbb, 0x47, 0x44, 0x9a, 0x26, 0x43,
+  0x76, 0x00, 0x49, 0x40, 0x0e, 0xd7, 0xa7, 0x03, 0x12, 0x70, 0x2f, 0xf2,
+  0xb5, 0x03, 0x6b, 0xff, 0xd1, 0xb5, 0xfc, 0xa8, 0xae, 0xdf, 0x0b, 0xa2,
+  0x00, 0x0c, 0x11, 0x25, 0xeb, 0xc3, 0xb1, 0x94, 0x02, 0x49, 0x26, 0x02,
+  0x85, 0xe6, 0xd9, 0xea, 0x5e, 0x25, 0xb7, 0xd9, 0x74, 0x31, 0xa5, 0x59,
+  0xe1, 0xa4, 0xe4, 0x31, 0xc1, 0x82, 0x26, 0x27, 0x05, 0xc7, 0x73, 0xd2,
+  0xc0, 0x37, 0xca, 0xc8, 0xb1, 0xd8, 0x85, 0xee, 0x49, 0x90, 0x2a, 0x7a,
+  0x26, 0x3e, 0x4c, 0x91, 0x69, 0xa6, 0x59, 0x55, 0x36, 0xac, 0x7d, 0x20,
+  0xde, 0x24, 0x18, 0xfa, 0x06, 0xd3, 0xd1, 0x08, 0x57, 0x17, 0x3b, 0xba,
+  0x06, 0x21, 0x2d, 0xf2, 0xa8, 0x93, 0x84, 0x92, 0x16, 0x59, 0x3e, 0x32,
+  0x81, 0x0f, 0x9a, 0xb6, 0x1a, 0xc5, 0xec, 0x9a, 0x22, 0x9b, 0x7f, 0xc8,
+  0x98, 0x96, 0xde, 0x62, 0x1a, 0x72, 0xd4, 0xa7, 0xb4, 0x77, 0xcd, 0x28,
+  0x79, 0xda, 0xdb, 0xdf, 0x43, 0x8c, 0xd3, 0x5a, 0x18, 0x04, 0x23, 0x6d,
+  0xa3, 0x9d, 0x22, 0x9b, 0x2a, 0xa0, 0x54, 0xd9, 0x12, 0xda, 0xd9, 0x58,
+  0x74, 0x81, 0x93, 0x14, 0xad, 0x6f, 0x99, 0xd9, 0xaf, 0x19, 0x9e, 0x7c,
+  0x6f, 0x88, 0x97, 0x72, 0x09, 0x55, 0xd5, 0xc6, 0xb2, 0xb7, 0x13, 0x24,
+  0xac, 0xfb, 0xbd, 0xbc, 0xdf, 0xdb, 0x7d, 0xb4, 0x1e, 0x5d, 0x12, 0x0e,
+  0xd5, 0x34, 0xb9, 0xa5, 0x26, 0x82, 0x84, 0x99, 0x47, 0x87, 0x2f, 0xce,
+  0xfa, 0x17, 0xbb, 0x07, 0xe7, 0x67, 0x6f, 0xe0, 0x5f, 0xfc, 0x7d, 0x8f,
+  0x7e, 0xdf, 0xfb, 0xa6, 0xd9, 0x2c, 0xc1, 0xc3, 0x27, 0x91, 0x41, 0x8b,
+  0x20, 0xd9, 0x90, 0xce, 0xbe, 0xe8, 0x98, 0x4e, 0x43, 0xa8, 0xd2, 0x64,
+  0x28, 0x9e, 0x0f, 0x0d, 0x2a, 0x51, 0x93, 0x32, 0x9d, 0xae, 0x34, 0xd8,
+  0x5f, 0x8d, 0x8f, 0x6e, 0xde, 0x42, 0x56, 0xa9, 0x1c, 0x2b, 0xe0, 0x70,
+  0x8a, 0x3d, 0xd7, 0x34, 0x9f, 0x30, 0xca, 0x97, 0x00, 0x44, 0xb0, 0x65,
+  0x07, 0x6e, 0x73, 0x8c, 0x01, 0xaf, 0x7f, 0x35, 0x9c, 0x80, 0x86, 0x95,
+  0x62, 0x24, 0xe6, 0x28, 0x15, 0xae, 0x31, 0xf1, 0x61, 0x8c, 0x49, 0x17,
+  0x63, 0xfc, 0x89, 0x82, 0x71, 0x84, 0x1b, 0x23, 0xa3, 0xa3, 0xa4, 0xde,
+  0x6d, 0x18, 0x4f, 0x42, 0xd0, 0xad, 0x8a, 0x9a, 0xd4, 0x6c, 0x8e, 0x32,
+  0x70, 0x5c, 0xd3, 0xba, 0xe2, 0x60, 0xbf, 0x3e, 0xbb, 0x88, 0x12, 0xb2,
+  0x0a, 0xf1, 0x52, 0x62, 0xea, 0x26, 0x72, 0xe8, 0x6d, 0xb2, 0x6f, 0xc9,
+  0xa9, 0x0f, 0xca, 0x1f, 0xc4, 0x35, 0x2f, 0x4e, 0xfb, 0xdb, 0x68, 0x58,
+  0xe7, 0x60, 0xf7, 0xfe, 0xeb, 0x97, 0xdd, 0x9a, 0xc7, 0xce, 0x0d, 0x1c,
+  0xdd, 0x42, 0x05, 0x54, 0x8a, 0x64, 0x34, 0xd7, 0xce, 0xb9, 0x55, 0x0d,
+  0x1e, 0x76, 0x2f, 0xea, 0xd0, 0x86, 0x76, 0x18, 0x8b, 0xa4, 0x43, 0xfb,
+  0xda, 0x61, 0x60, 0x0a, 0xd2, 0x4f, 0x69, 0xbc, 0x08, 0x72, 0x7f, 0xe7,
+  0x63, 0x3e, 0x91, 0xb9, 0x0e, 0x31, 0x43, 0xf1, 0x82, 0xe8, 0xa0, 0x72,
+  0x88, 0x13, 0xa3, 0x49, 0x75, 0xa4, 0xe1, 0x3d, 0x6e, 0x98, 0xda, 0x85,
+  0xdf, 0xb1, 0x59, 0x22, 0xda, 0x41, 0x30, 0xec, 0x87, 0xfa, 0xb1, 0x4d,
+  0x9b, 0xb6, 0x61, 0x60, 0xe4, 0x9c, 0xe5, 0xa7, 0x94, 0x38, 0x90, 0x2d,
+  0xc2, 0x74, 0xb3, 0x4b, 0x0c, 0xad, 0xf2, 0xc2, 0x16, 0xcd, 0x40, 0x9a,
+  0x14, 0x7e, 0x04, 0x52, 0x2d, 0x7c, 0xdb, 0x71, 0x2c, 0x3a, 0x95, 0x97,
+  0x28, 0x48, 0xe9, 0x2b, 0x85, 0xaa, 0x91, 0x3a, 0x20, 0x64, 0x9b, 0x55,
+  0x40, 0x83, 0x2a, 0x59, 0xb5, 0x43, 0x09, 0xdd, 0xf8, 0xc1, 0x15, 0xdc,
+  0x41, 0x0f, 0x12, 0x55, 0x33, 0x10, 0x10, 0x68, 0x51, 0xfd, 0xc9, 0x79,
+  0xde, 0x6c, 0x8e, 0xcb, 0xf0, 0xe0, 0xd5, 0x81, 0xf1, 0xf8, 0xe8, 0xfd,
+  0xdf, 0xdd, 0x7b, 0xda, 0xdb, 0x81, 0xff, 0x83, 0x7d, 0x11, 0x6b, 0x11,
+  0xd5, 0xfd, 0xb0, 0xd5, 0x1d, 0xcc, 0x93, 0x0e, 0x06, 0x9d, 0x0b, 0x45,
+  0xd7, 0xcb, 0x8b, 0xcb, 0x4e, 0xf8, 0xba, 0x55, 0xfe, 0xf0, 0x49, 0xaf,
+  0x5c, 0xed, 0xc4, 0xe1, 0x66, 0x07, 0x8f, 0x1e, 0xed, 0x1f, 0xe8, 0xdf,
+  0x70, 0x94, 0x0e, 0xbe, 0x84, 0x0f, 0x3e, 0x04, 0xd7, 0xe7, 0x05, 0x32,
+  0x41, 0x86, 0x0d, 0xa8, 0x87, 0xf3, 0x7e, 0x55, 0x33, 0xc6, 0x37, 0x01,
+  0x17, 0xa2, 0xc3, 0x7c, 0x3c, 0x86, 0x4b, 0xa1, 0x79, 0x41, 0x1f, 0xcb,
+  0x23, 0xdb, 0x6f, 0xa4, 0x44, 0x96, 0x49, 0x7f, 0xae, 0x57, 0x72, 0xa0,
+  0xf0, 0x6e, 0x97, 0x3d, 0x72, 0x73, 0xbd, 0x50, 0x56, 0x65, 0xed, 0x09,
+  0x1b, 0xc5, 0x87, 0xcb, 0x82, 0xbc, 0xb3, 0x09, 0xb8, 0xba, 0x04, 0x1e,
+  0xab, 0x7c, 0x9f, 0xcd, 0xe7, 0xa8, 0x2a, 0x51, 0x59, 0x1c, 0x3c, 0x21,
+  0x26, 0x5a, 0x81, 0x82, 0x66, 0x18, 0xcb, 0x5d, 0x42, 0xfa, 0x09, 0xdb,
+  0x40, 0xa3, 0x1a, 0x06, 0xe9, 0xd8, 0xf7, 0xb9, 0x67, 0x3c, 0x1a, 0x17,
+  0x56, 0x56, 0xe2, 0x9e, 0x46, 0x08, 0x21, 0x3b, 0x4b, 0x84, 0x9b, 0x8d,
+  0x1d, 0xdc, 0x45, 0x81, 0xb9, 0xe9, 0x06, 0x18, 0x8d, 0xc5, 0xfc, 0x30,
+  0x74, 0xd3, 0x7f, 0xf9, 0xdf, 0x27, 0xb6, 0x74, 0x85, 0xa9, 0x0d, 0xc1,
+  0xe9, 0xbd, 0xa1, 0x5c, 0xee, 0xa8, 0x13, 0x1f, 0x47, 0x31, 0xe1, 0x6a,
+  0x3b, 0x31, 0x6d, 0x79, 0xc3, 0xa1, 0x41, 0xf2, 0x3d, 0xdd, 0xfe, 0xa4,
+  0x9e, 0x6e, 0x23, 0xf6, 0x9e, 0x7f, 0x07, 0x49, 0x95, 0x33, 0x5e, 0x6c,
+  0x83, 0x73, 0x81, 0x67, 0xb1, 0x12, 0x14, 0x16, 0x37, 0xd5, 0x96, 0x95,
+  0xf8, 0xed, 0x6c, 0x86, 0xaa, 0x3c, 0x45, 0x91, 0x79, 0x39, 0xa8, 0x8a,
+  0xf8, 0xc4, 0x80, 0xa3, 0x8b, 0x16, 0x78, 0x04, 0x97, 0xca, 0xee, 0xe3,
+  0x91, 0xfc, 0xb0, 0x38, 0xe5, 0x36, 0xe1, 0x04, 0x56, 0xf1, 0xfe, 0xc2,
+  0xc8, 0x71, 0xf4, 0x68, 0x67, 0x67, 0xbd, 0x53, 0x68, 0x11, 0x4d, 0x9c,
+  0x53, 0x36, 0xe4, 0x53, 0x86, 0xd5, 0xe7, 0xe2, 0x5f, 0x93, 0x82, 0xbd,
+  0x08, 0xad, 0x28, 0x74, 0x5b, 0xd6, 0x88, 0x86, 0x69, 0xac, 0xe4, 0xb6,
+  0x26, 0x6a, 0x35, 0x78, 0xb5, 0xba, 0xfb, 0x6c, 0xb1, 0x4b, 0x48, 0xf8,
+  0xa4, 0xd2, 0x76, 0x4d, 0x6e, 0xe7, 0x01, 0xc6, 0x19, 0xd8, 0xa2, 0x1e,
+  0x46, 0x29, 0x98, 0xca, 0x21, 0x94, 0x90, 0x21, 0x6d, 0x28, 0x3a, 0x7a,
+  0xe6, 0x49, 0x1b, 0xd9, 0x2c, 0x66, 0x3c, 0x36, 0x7d, 0x96, 0x82, 0x29,
+  0xb0, 0xf0, 0x90, 0x1c, 0x0f, 0xa6, 0x18, 0xb6, 0x33, 0x54, 0x8a, 0x98,
+  0x41, 0x18, 0x3c, 0xd8, 0x6d, 0x10, 0x9c, 0xbf, 0xc7, 0x85, 0x4d, 0x4c,
+  0xe7, 0xa8, 0xa2, 0xbd, 0x9f, 0xe5, 0x37, 0x33, 0x74, 0x65, 0xb1, 0x37,
+  0xca, 0x54, 0xf0, 0x62, 0x7b, 0x5a, 0x95, 0xce, 0x82, 0x99, 0xf4, 0x7c,
+  0xa0, 0xcd, 0xb3, 0xf2, 0xa8, 0x63, 0xba, 0x7b, 0x9d, 0x56, 0x12, 0x82,
+  0xca, 0x83, 0xd7, 0xec, 0x78, 0x4a, 0xb0, 0x7f, 0x39, 0xf6, 0x11, 0xfa,
+  0x89, 0x02, 0xd5, 0x75, 0xc1, 0x57, 0x0b, 0xc7, 0xf0, 0x70, 0xa9, 0x17,
+  0x34, 0xc5, 0x77, 0xe1, 0x60, 0x76, 0xd4, 0x2f, 0xc0, 0x33, 0x08, 0xb3,
+  0x28, 0x1d, 0x8e, 0xad, 0xc8, 0x12, 0x4e, 0x66, 0x31, 0xa5, 0x16, 0xd9,
+  0x0b, 0xe4, 0x86, 0xc3, 0x11, 0x22, 0x38, 0xc5, 0xaa, 0x9a, 0xde, 0x34,
+  0x70, 0x31, 0x10, 0x14, 0xed, 0x80, 0x26, 0x61, 0x28, 0x6e, 0x31, 0x52,
+  0xd3, 0x8f, 0x0e, 0x14, 0xae, 0x05, 0xb1, 0x9e, 0xdd, 0x24, 0x44, 0x69,
+  0xa6, 0xfd, 0x50, 0xf6, 0xa9, 0x13, 0x29, 0xaf, 0xa4, 0x6c, 0x21, 0x75,
+  0x43, 0x7e, 0xd0, 0xd4, 0x10, 0x49, 0x84, 0x24, 0xef, 0xd4, 0xc1, 0x11,
+  0x08, 0x25, 0x82, 0xaa, 0x35, 0xab, 0xc2, 0x6b, 0x78, 0x73, 0x95, 0x7b,
+  0xc6, 0x7d, 0x2e, 0x1b, 0x59, 0x87, 0xdb, 0xc2, 0x96, 0x30, 0x25, 0x88,
+  0x1c, 0x1e, 0xd7, 0x94, 0x6d, 0xc4, 0xa2, 0x23, 0xca, 0x12, 0xe4, 0x1c,
+  0x85, 0xf7, 0x26, 0x69, 0x42, 0x99, 0xdf, 0x21, 0xf0, 0x32, 0x98, 0x04,
+  0x70, 0x9d, 0x41, 0x5e, 0x1a, 0x92, 0x41, 0xe8, 0xa8, 0x04, 0x96, 0xa2,
+  0xa0, 0xcb, 0x42, 0x60, 0xb3, 0xb5, 0x14, 0x9e, 0x22, 0xfa, 0xf8, 0xcc,
+  0x9d, 0x24, 0xe2, 0xeb, 0x0c, 0x81, 0xe0, 0x80, 0x4e, 0x40, 0xf6, 0x41,
+  0x3f, 0x01, 0x11, 0x0f, 0x35, 0xc8, 0x80, 0xd8, 0x57, 0x54, 0xeb, 0x51,
+  0xd0, 0xe2, 0xe0, 0x20, 0x5e, 0x61, 0x2c, 0x7d, 0x99, 0x55, 0x8b, 0xe0,
+  0x99, 0x68, 0x8b, 0xf4, 0xb1, 0xfc, 0xa3, 0xae, 0xdc, 0xad, 0x0c, 0xe9,
+  0xf8, 0x88, 0xec, 0x73, 0xc8, 0xf1, 0x53, 0x31, 0x19, 0x73, 0xdb, 0x2c,
+  0x06, 0xf7, 0x7b, 0x33, 0x1e, 0x90, 0xcd, 0x3f, 0xe6, 0xb2, 0xa9, 0x6b,
+  0x31, 0xd9, 0x81, 0xe5, 0xa7, 0x0e, 0x97, 0x75, 0x3e, 0x8d, 0x0e, 0x91,
+  0x73, 0xfc, 0xcf, 0x0a, 0x36, 0x7b, 0x9e, 0x88, 0xe7, 0xdf, 0x05, 0xbd,
+  0x26, 0x00, 0x1a, 0xb9, 0xae, 0x15, 0x49, 0x81, 0xdb, 0x54, 0x69, 0xea,
+  0x65, 0x28, 0xff, 0x80, 0x3c, 0xf9, 0xb0, 0xa0, 0x93, 0x3b, 0xdb, 0xa2,
+  0x83, 0x10, 0x63, 0xca, 0x32, 0xd9, 0x22, 0x56, 0xa6, 0x8b, 0xa6, 0xd9,
+  0xb6, 0xd3, 0x07, 0x55, 0x8a, 0xfb, 0xc4, 0x58, 0x7f, 0x5b, 0xcc, 0x30,
+  0x12, 0x7e, 0x28, 0x18, 0x00, 0xcc, 0x12, 0xc9, 0xc9, 0x29, 0x8a, 0x00,
+  0x33, 0xb3, 0x66, 0x73, 0x58, 0x43, 0x77, 0xf7, 0xeb, 0xbf, 0x1d, 0x9d,
+  0xbe, 0x3d, 0xd9, 0xfd, 0x53, 0x14, 0xe1, 0x9f, 0x7b, 0xfc, 0xe7, 0x5e,
+  0x47, 0x95, 0x4f, 0x61, 0x17, 0xbc, 0x57, 0x06, 0x14, 0x80, 0xc6, 0x10,
+  0x44, 0x41, 0x54, 0x34, 0x1e, 0x52, 0x0d, 0xb8, 0x1c, 0x92, 0x2d, 0x5e,
+  0x44, 0x93, 0x02, 0x1a, 0x33, 0x68, 0x56, 0x2a, 0xf4, 0x6f, 0x96, 0x5b,
+  0x21, 0xeb, 0x85, 0x4d, 0xa1, 0x53, 0x35, 0x97, 0xa3, 0x2d, 0x08, 0xb7,
+  0x71, 0xb4, 0x48, 0x45, 0xd0, 0x71, 0x30, 0x73, 0xba, 0x62, 0x55, 0xf6,
+  0xfc, 0xa5, 0x8a, 0xa6, 0x5e, 0x3a, 0xc0, 0xe9, 0x74, 0x24, 0xee, 0x84,
+  0x87, 0xc2, 0x7f, 0x97, 0x69, 0xa5, 0x23, 0xa7, 0x7d, 0xc5, 0x94, 0x08,
+  0x72, 0x63, 0x87, 0x0e, 0x1e, 0x5c, 0x42, 0x1b, 0x5f, 0x6f, 0x44, 0xe5,
+  0xdd, 0x74, 0x90, 0x4f, 0x4c, 0x44, 0x87, 0x10, 0x86, 0x4d, 0xe3, 0xe0,
+  0xbc, 0x07, 0x83, 0xe1, 0x28, 0x4e, 0x37, 0x3f, 0x59, 0x22, 0xb1, 0x1e,
+  0x31, 0x8d, 0x10, 0x70, 0x71, 0x84, 0x2a, 0xc2, 0x8e, 0xd3, 0xfb, 0x89,
+  0x22, 0x05, 0x2e, 0x5a, 0x13, 0x1c, 0xe8, 0x2c, 0x28, 0xd3, 0x2e, 0x03,
+  0xb7, 0x02, 0x8b, 0x0e, 0x34, 0x6f, 0xd7, 0xcf, 0x46, 0x97, 0x41, 0x16,
+  0x88, 0x37, 0xa1, 0x72, 0x22, 0xa6, 0x48, 0x2e, 0xbf, 0x2d, 0x19, 0x03,
+  0x88, 0xcd, 0x7a, 0xa7, 0xa8, 0x8e, 0xb8, 0x37, 0x7a, 0xad, 0xd2, 0xac,
+  0xf1, 0xdd, 0x66, 0x73, 0x03, 0x91, 0x93, 0x5d, 0x28, 0x76, 0xb5, 0xb7,
+  0x1a, 0x10, 0x96, 0xa2, 0x56, 0xb6, 0x8d, 0xbc, 0x38, 0x5a, 0x4d, 0xc4,
+  0xe3, 0xb3, 0x1a, 0xb8, 0x4a, 0x50, 0x5d, 0xe4, 0x1b, 0xe9, 0x59, 0x27,
+  0xea, 0xc4, 0x62, 0x78, 0x91, 0xfa, 0x40, 0x11, 0xa4, 0x30, 0x1f, 0xd0,
+  0x4f, 0x36, 0xe1, 0x86, 0xf6, 0x1c, 0xd0, 0x36, 0xa8, 0x46, 0xf7, 0x4c,
+  0xfd, 0x8f, 0xb6, 0x24, 0xc8, 0x12, 0xaf, 0xa3, 0x81, 0xfe, 0x91, 0xac,
+  0xaa, 0xdc, 0x19, 0x87, 0x89, 0xfc, 0x10, 0x79, 0x80, 0x9b, 0xe1, 0x23,
+  0x8b, 0x49, 0xfd, 0x13, 0x07, 0xbb, 0x5b, 0xad, 0x42, 0xc8, 0x73, 0x14,
+  0xe4, 0x0d, 0x23, 0xd7, 0x0c, 0x03, 0x80, 0xfe, 0xef, 0x26, 0xe9, 0x96,
+  0x2a, 0xba, 0x2a, 0xc2, 0x6c, 0xbf, 0xca, 0x7f, 0x83, 0xc1, 0x27, 0xe1,
+  0x23, 0xea, 0x0a, 0x36, 0xad, 0x23, 0xb7, 0xda, 0xbe, 0x44, 0xdd, 0x08,
+  0xed, 0xd4, 0xac, 0x3c, 0x54, 0xe9, 0x96, 0x6a, 0x98, 0xbd, 0x66, 0x11,
+  0xcd, 0xcb, 0x66, 0x40, 0xa6, 0xe1, 0xc9, 0x67, 0x8e, 0x95, 0x8c, 0x4c,
+  0xcb, 0xd1, 0x45, 0x2e, 0x71, 0xb7, 0x86, 0xba, 0x84, 0xc7, 0x04, 0x74,
+  0x70, 0x73, 0xcb, 0xb5, 0x8b, 0x17, 0x2e, 0x96, 0xb9, 0xb3, 0x56, 0xee,
+  0x8e, 0x70, 0x3d, 0x18, 0x27, 0x49, 0x8d, 0xb3, 0x2e, 0x46, 0x5e, 0xe2,
+  0x1d, 0xa1, 0x83, 0x1b, 0xfc, 0x16, 0x47, 0x6a, 0xd1, 0x10, 0x6f, 0xe4,
+  0x6d, 0x0c, 0x51, 0x4a, 0x8c, 0x9d, 0xe1, 0xc4, 0x59, 0x0a, 0x49, 0xfd,
+  0xba, 0x3c, 0x64, 0xf5, 0xa0, 0x09, 0x27, 0xa3, 0x91, 0x84, 0x96, 0x11,
+  0xf6, 0x12, 0x89, 0x17, 0xf2, 0x36, 0x46, 0x20, 0xda, 0x61, 0x8b, 0xa8,
+  0xb7, 0x49, 0xc0, 0xb4, 0x9e, 0x19, 0x28, 0xa9, 0x74, 0x81, 0x19, 0x2e,
+  0x12, 0xcd, 0x1b, 0x83, 0x98, 0x1b, 0x2a, 0x89, 0x30, 0xd8, 0x2b, 0x81,
+  0x05, 0x51, 0x0f, 0xcc, 0xaa, 0x28, 0xa1, 0xf8, 0x90, 0x24, 0x21, 0xa2,
+  0xc0, 0x48, 0xe5, 0x92, 0x2b, 0x65, 0x6a, 0xf5, 0xca, 0x68, 0x90, 0x53,
+  0xde, 0x4f, 0x93, 0x90, 0x13, 0xeb, 0x46, 0x94, 0x42, 0x6c, 0x7e, 0x08,
+  0xfc, 0x88, 0x8b, 0x55, 0x1b, 0x7d, 0x82, 0x44, 0xa2, 0x46, 0x11, 0x0c,
+  0x2c, 0x34, 0x22, 0x85, 0x30, 0xa8, 0x27, 0x43, 0x7f, 0x21, 0x28, 0x5a,
+  0x87, 0x28, 0x5c, 0x4f, 0x51, 0xad, 0x8e, 0x17, 0x1b, 0xa9, 0xa6, 0x01,
+  0x82, 0x31, 0x4d, 0x7f, 0xb8, 0x51, 0xa7, 0x4d, 0x2c, 0x1a, 0xc8, 0x64,
+  0x5b, 0x23, 0x9f, 0x57, 0xbf, 0x05, 0x02, 0xd2, 0x8a, 0x36, 0x5a, 0xc5,
+  0xa1, 0xa6, 0x7a, 0x49, 0x06, 0xa0, 0x5f, 0xf1, 0xc3, 0x5f, 0x17, 0xb3,
+  0xf7, 0xb1, 0x94, 0x10, 0x8a, 0x55, 0xee, 0x77, 0x2d, 0xe2, 0x74, 0x4f,
+  0xc5, 0x70, 0x67, 0x96, 0x21, 0x57, 0xb4, 0xde, 0x75, 0xc0, 0x12, 0x7f,
+  0x55, 0xbc, 0x45, 0xc3, 0xce, 0x6d, 0x8d, 0x12, 0x13, 0x0e, 0xe1, 0xd4,
+  0x7d, 0x6d, 0xf2, 0x5b, 0xea, 0x48, 0x4e, 0xd8, 0x2c, 0x45, 0xf0, 0x8f,
+  0x84, 0x4a, 0x96, 0xa1, 0x65, 0xcf, 0x41, 0x82, 0xc8, 0x60, 0x53, 0x8a,
+  0xe1, 0x15, 0x81, 0x5a, 0xa1, 0x25, 0x31, 0x1d, 0xf1, 0x0d, 0xd8, 0xbc,
+  0x0d, 0xf8, 0xfe, 0xe0, 0x56, 0x45, 0x86, 0x93, 0x46, 0x90, 0xe2, 0xf0,
+  0x4e, 0x86, 0xef, 0x95, 0xb7, 0x79, 0xa3, 0x0d, 0x49, 0xdd, 0x14, 0x3a,
+  0x79, 0x45, 0x71, 0x43, 0x93, 0xd2, 0x5e, 0x2d, 0xe6, 0x35, 0x7b, 0xc7,
+  0x90, 0x81, 0x64, 0xe6, 0x54, 0x5e, 0x6b, 0x5e, 0x2e, 0xe8, 0xfb, 0x1e,
+  0x7b, 0x83, 0x02, 0x11, 0x41, 0xc6, 0x85, 0xfa, 0x36, 0x9e, 0xac, 0x3b,
+  0xc5, 0x97, 0xc5, 0x78, 0x5f, 0xe7, 0xd1, 0x16, 0x79, 0x5d, 0xa1, 0x67,
+  0x9b, 0x84, 0x70, 0x2c, 0xfa, 0x14, 0xee, 0x22, 0xdd, 0xcd, 0x53, 0xb8,
+  0x47, 0x78, 0xe6, 0x53, 0x34, 0xf7, 0xef, 0x3c, 0x7d, 0xbc, 0x83, 0xf7,
+  0x27, 0x82, 0xe5, 0xf3, 0x7d, 0x22, 0x37, 0x00, 0xa5, 0x80, 0x78, 0xfe,
+  0x24, 0x60, 0x5d, 0xba, 0x5d, 0x82, 0x91, 0xeb, 0xce, 0xe2, 0xc6, 0x96,
+  0x73, 0x46, 0xbb, 0x16, 0xc2, 0x07, 0xc1, 0xcf, 0x2e, 0xd5, 0xe0, 0x8d,
+  0xe3, 0x71, 0xe5, 0xad, 0xad, 0x43, 0x62, 0xcb, 0x83, 0x49, 0xed, 0x73,
+  0x9f, 0x02, 0x53, 0x61, 0xc9, 0x28, 0x56, 0x19, 0x6c, 0x9d, 0x81, 0x19,
+  0x6a, 0x30, 0x10, 0x26, 0xdb, 0x0f, 0x48, 0x76, 0xc0, 0x55, 0x72, 0x5b,
+  0xe5, 0x5c, 0x07, 0x6e, 0x19, 0x3f, 0x09, 0x9c, 0x50, 0xec, 0x25, 0xa6,
+  0xdd, 0x3c, 0xc4, 0x7f, 0x3d, 0x85, 0x86, 0x80, 0x85, 0x31, 0xe0, 0x1d,
+  0x23, 0x06, 0xb6, 0xea, 0x81, 0x24, 0xea, 0xaf, 0x91, 0x4d, 0xe5, 0x4c,
+  0x50, 0x2d, 0x7a, 0x19, 0x04, 0xb2, 0x71, 0xa2, 0xab, 0x6d, 0x84, 0xb2,
+  0x53, 0x33, 0xb4, 0xe6, 0xa4, 0x44, 0x39, 0x9c, 0x8f, 0x20, 0x27, 0xab,
+  0xf9, 0x06, 0x47, 0xbc, 0xfb, 0x58, 0x9a, 0xdc, 0xc0, 0xc1, 0x53, 0xe0,
+  0x17, 0x41, 0x66, 0xda, 0xc0, 0x50, 0xb4, 0x17, 0x31, 0x0a, 0x2e, 0x7e,
+  0x08, 0x9b, 0xde, 0x75, 0x20, 0x9c, 0x03, 0xae, 0x11, 0x8d, 0x3f, 0xd9,
+  0x79, 0xf2, 0xe8, 0x51, 0xd8, 0x92, 0xa2, 0x78, 0x9c, 0xa4, 0xd7, 0x60,
+  0x80, 0xe8, 0xb0, 0x02, 0x56, 0x23, 0x46, 0x65, 0x94, 0xc4, 0x45, 0x76,
+  0x6f, 0x31, 0x56, 0x36, 0x97, 0xfd, 0xfe, 0xd8, 0x0a, 0x0f, 0xf6, 0xa7,
+  0xae, 0x20, 0x40, 0x3b, 0x96, 0x9d, 0xa7, 0x4f, 0x9f, 0x46, 0xf1, 0x05,
+  0x13, 0x21, 0x1f, 0x65, 0x3f, 0x4e, 0x7f, 0x96, 0xde, 0xdc, 0x9f, 0x04,
+  0x97, 0x02, 0xb8, 0x0e, 0x8b, 0xc9, 0x98, 0xb1, 0xba, 0xa9, 0x38, 0x1e,
+  0x57, 0x5d, 0xb9, 0x26, 0x48, 0xb0, 0xd3, 0xe7, 0x7c, 0xaf, 0x1f, 0xbf,
+  0xc1, 0xdf, 0x32, 0x03, 0xa3, 0x4e, 0x98, 0x4c, 0xe9, 0x78, 0x31, 0xe1,
+  0x54, 0xb2, 0x57, 0x7f, 0x6b, 0xe2, 0xdc, 0x6c, 0x9e, 0xf5, 0xb7, 0xf7,
+  0xbf, 0xda, 0xd9, 0x0a, 0x24, 0xf7, 0x61, 0xfd, 0xbd, 0xc4, 0x71, 0x58,
+  0xec, 0x04, 0x02, 0x76, 0xea, 0x8c, 0x03, 0x86, 0x77, 0xdf, 0xf8, 0x73,
+  0xe1, 0x0f, 0x4d, 0x4d, 0xca, 0xe3, 0x16, 0x93, 0xf1, 0xfa, 0xbb, 0x04,
+  0xc3, 0x80, 0x4d, 0x61, 0x21, 0x74, 0x8d, 0xb4, 0x89, 0xef, 0x04, 0x95,
+  0x35, 0x4e, 0xca, 0x61, 0x96, 0x35, 0x17, 0x1e, 0x5b, 0x5b, 0x02, 0x6b,
+  0xaa, 0x45, 0xe3, 0x45, 0x2c, 0x63, 0xc6, 0xec, 0xc0, 0x3d, 0x48, 0x2e,
+  0xa5, 0x0b, 0x4c, 0xf4, 0x26, 0xc5, 0x22, 0xd3, 0x41, 0xd4, 0xc4, 0xd3,
+  0xac, 0x14, 0x5b, 0x17, 0xaa, 0x7d, 0x2a, 0x37, 0x23, 0x46, 0x59, 0x3d,
+  0x4f, 0x90, 0x1e, 0x49, 0xb8, 0xa4, 0xf2, 0x20, 0x0d, 0x85, 0x4c, 0x94,
+  0x88, 0x8e, 0x4d, 0x69, 0x1b, 0x14, 0xc4, 0xd6, 0x66, 0xd2, 0x92, 0x09,
+  0x7e, 0x2e, 0x3c, 0x2a, 0xe9, 0xbe, 0x48, 0x7f, 0x45, 0x93, 0xc1, 0x83,
+  0xa0, 0xe5, 0x1c, 0xa8, 0x08, 0x86, 0xb7, 0xaa, 0x6d, 0xe0, 0xa2, 0xc0,
+  0x02, 0xe3, 0x87, 0x26, 0x45, 0x85, 0xd2, 0xbe, 0xee, 0x83, 0x2f, 0xa7,
+  0x5e, 0x52, 0xeb, 0xc0, 0xe7, 0xa6, 0xaa, 0x5c, 0xf2, 0x72, 0xb5, 0x56,
+  0x62, 0xbf, 0x7f, 0xea, 0x71, 0x5b, 0x49, 0x66, 0x35, 0xfe, 0x79, 0x82,
+  0x25, 0x48, 0x86, 0xa8, 0xf7, 0x93, 0xd2, 0x9e, 0x47, 0x98, 0xb1, 0xfe,
+  0xe5, 0xa3, 0xbd, 0xbd, 0x6e, 0xf4, 0xb8, 0xb7, 0xeb, 0xe2, 0xcf, 0x25,
+  0x13, 0x0f, 0x6e, 0x58, 0x92, 0x6b, 0x3c, 0x50, 0x3a, 0x74, 0x57, 0x39,
+  0xb0, 0x74, 0x82, 0x44, 0x27, 0x91, 0xdf, 0x84, 0x52, 0x11, 0xc2, 0x9d,
+  0xea, 0xfc, 0xb8, 0xf7, 0xf8, 0xf1, 0xee, 0x57, 0x07, 0xe7, 0xf1, 0xe3,
+  0xbd, 0x5d, 0x04, 0xa5, 0x63, 0x95, 0xd4, 0xc6, 0x82, 0xd7, 0xe0, 0x0b,
+  0xb2, 0x11, 0xdb, 0x7c, 0x26, 0x13, 0x4d, 0x8d, 0x6e, 0x36, 0x97, 0xcf,
+  0xd3, 0x59, 0x59, 0x4e, 0xa2, 0xf2, 0x1d, 0x23, 0x7d, 0x6c, 0x97, 0xef,
+  0xd8, 0xb2, 0xd6, 0x11, 0x1c, 0xb9, 0x2c, 0x80, 0x09, 0x64, 0x76, 0x46,
+  0x2e, 0xaf, 0xc4, 0x20, 0x03, 0x08, 0x4e, 0x9c, 0xd9, 0x07, 0x36, 0x9c,
+  0x34, 0xb1, 0xe1, 0x82, 0x41, 0xfa, 0x6a, 0x77, 0xe0, 0xeb, 0x60, 0xf3,
+  0xe4, 0x78, 0x8b, 0x37, 0x4d, 0xf7, 0xd2, 0xa2, 0x45, 0xf0, 0x48, 0xbb,
+  0x9c, 0xf8, 0xec, 0xdf, 0xbe, 0xb3, 0x7c, 0x46, 0x56, 0x10, 0x74, 0xb8,
+  0xa3, 0xb3, 0x47, 0xe6, 0xc5, 0xf6, 0x42, 0x85, 0x7c, 0xae, 0xd7, 0x2c,
+  0x6e, 0xc5, 0x08, 0xb3, 0xa8, 0x9f, 0x6e, 0xcc, 0x26, 0x4f, 0x5e, 0x8a,
+  0x75, 0x71, 0x06, 0x3c, 0x55, 0x79, 0xf7, 0xa4, 0x6c, 0x5e, 0x5b, 0x0f,
+  0x5b, 0x2e, 0x7c, 0x98, 0xa5, 0xd5, 0xcf, 0x75, 0x98, 0xb9, 0x7b, 0x26,
+  0xaf, 0x75, 0x8f, 0xb1, 0x66, 0x6e, 0x36, 0x02, 0x45, 0xdd, 0xb3, 0x8c,
+  0xa6, 0x57, 0x66, 0xd1, 0x6c, 0x5c, 0x6e, 0xb1, 0x29, 0x6b, 0x4a, 0x16,
+  0x55, 0x34, 0x22, 0x18, 0xc2, 0x2c, 0xe1, 0x38, 0xc7, 0x78, 0xa4, 0xf5,
+  0xf1, 0x02, 0xf4, 0xe8, 0xb4, 0xfe, 0xe9, 0x42, 0x0f, 0x9c, 0x4e, 0xbe,
+  0x7d, 0x80, 0xd8, 0x4a, 0xaf, 0xa3, 0x59, 0x0f, 0x53, 0xfe, 0xe5, 0xcf,
+  0x22, 0xb9, 0xd1, 0xba, 0x1f, 0xf8, 0x27, 0xf4, 0xc3, 0xd0, 0x03, 0xde,
+  0xca, 0xf1, 0x7b, 0xab, 0x97, 0x0e, 0xab, 0x43, 0x4b, 0x9d, 0x52, 0x63,
+  0xc8, 0x2b, 0x9b, 0xc6, 0x2a, 0x47, 0x13, 0x08, 0xa0, 0xff, 0x4b, 0xc5,
+  0x77, 0x82, 0x1d, 0x2b, 0x73, 0x5c, 0xc1, 0x76, 0xa4, 0x13, 0xae, 0xfa,
+  0x68, 0x4d, 0xf6, 0x46, 0x5f, 0x94, 0x84, 0x8e, 0x6f, 0xbb, 0x8a, 0x89,
+  0x57, 0x39, 0x36, 0xbc, 0x24, 0x60, 0x70, 0x23, 0xa8, 0x02, 0x0a, 0xcf,
+  0x8d, 0x64, 0x1a, 0x0a, 0xe8, 0xa1, 0xf1, 0xfc, 0x53, 0x04, 0x2d, 0x20,
+  0xd9, 0x53, 0xca, 0x24, 0x62, 0x2c, 0x54, 0x37, 0xf2, 0x83, 0x54, 0x30,
+  0xea, 0x4f, 0x4d, 0x3f, 0x20, 0xc6, 0xe1, 0x4e, 0xb3, 0x92, 0x30, 0x4c,
+  0x8a, 0x22, 0x43, 0x7f, 0x6b, 0x91, 0x56, 0x8b, 0x42, 0x92, 0xd7, 0x31,
+  0x69, 0x0d, 0x79, 0x03, 0x3b, 0xf8, 0x02, 0x77, 0xb1, 0x09, 0x4a, 0xa5,
+  0x0c, 0x46, 0x42, 0x2f, 0x43, 0xcb, 0xba, 0xb7, 0x28, 0xa7, 0x58, 0xf6,
+  0x50, 0x86, 0x56, 0xc3, 0x99, 0x64, 0x83, 0x28, 0xe3, 0x73, 0x70, 0x29,
+  0x9e, 0xbc, 0x86, 0x8e, 0x48, 0x59, 0x2a, 0x21, 0xac, 0x4e, 0xb6, 0xf6,
+  0x6e, 0xdf, 0xc6, 0x37, 0x37, 0x37, 0x31, 0x4a, 0x24, 0x96, 0x40, 0x46,
+  0xbd, 0xc8, 0x03, 0xa0, 0x30, 0x1e, 0x8e, 0x2a, 0x14, 0x10, 0xe5, 0xe4,
+  0xb1, 0x14, 0x83, 0xac, 0x22, 0x08, 0x20, 0xa1, 0x2a, 0x7a, 0x49, 0x98,
+  0xab, 0x0c, 0x8a, 0x0c, 0x7a, 0xea, 0xbf, 0x0d, 0x2c, 0x8a, 0x9d, 0x11,
+  0xc1, 0xfa, 0x0f, 0xab, 0x14, 0x81, 0xf3, 0xb0, 0xa6, 0xf6, 0x41, 0x14,
+  0xbf, 0x88, 0x3a, 0xc7, 0x32, 0xe9, 0x0b, 0x78, 0xe4, 0xc0, 0x8d, 0x15,
+  0xdb, 0xe6, 0x67, 0x83, 0xe5, 0xb8, 0x3b, 0xf7, 0xe0, 0xc8, 0xa1, 0x2a,
+  0x65, 0x02, 0xbb, 0x35, 0x23, 0xe7, 0xbb, 0x85, 0x2a, 0x08, 0x65, 0xc3,
+  0x60, 0xb6, 0x10, 0x7b, 0x32, 0xb8, 0xda, 0x0a, 0x4d, 0x3d, 0xc1, 0x18,
+  0x51, 0x0d, 0xb3, 0x06, 0x9a, 0x5b, 0xcd, 0x6a, 0x64, 0xe1, 0x3e, 0x31,
+  0xaf, 0x91, 0x5e, 0xbe, 0x35, 0x3e, 0x8f, 0x07, 0x30, 0x1c, 0x4f, 0x2a,
+  0x36, 0x7c, 0x67, 0x19, 0x2f, 0xf1, 0x98, 0x49, 0xa9, 0x18, 0x57, 0x9c,
+  0x88, 0xc4, 0x14, 0xb3, 0xa8, 0x6a, 0xe9, 0x7f, 0xc0, 0x65, 0xbc, 0xa3,
+  0x88, 0xe9, 0x80, 0x06, 0x47, 0x27, 0x71, 0x31, 0xbc, 0xbe, 0x5d, 0x02,
+  0x65, 0xe5, 0x8c, 0xf2, 0xd3, 0x19, 0x1d, 0x6d, 0x1f, 0x1d, 0x2c, 0x25,
+  0x9c, 0x77, 0xd6, 0x88, 0xb2, 0xb5, 0xaf, 0x7e, 0x9b, 0x54, 0xf8, 0xff,
+  0x6b, 0x96, 0x01, 0xb1, 0x04, 0x56, 0x0b, 0x2e, 0x0b, 0xdd, 0x99, 0xe6,
+  0xc8, 0xaf, 0xc3, 0xfc, 0xbb, 0x86, 0x6b, 0x0a, 0xaf, 0xe1, 0x48, 0x05,
+  0xd9, 0x38, 0xad, 0x94, 0x1a, 0x40, 0x99, 0xa1, 0xa0, 0x93, 0x5b, 0xe4,
+  0xa0, 0x5a, 0x8d, 0x43, 0xdc, 0xef, 0x69, 0x81, 0x0c, 0x88, 0x30, 0x16,
+  0x18, 0x1e, 0x27, 0x54, 0xbc, 0x0f, 0x6d, 0x5f, 0xe8, 0xc7, 0x38, 0xfe,
+  0xfe, 0x25, 0xe5, 0x03, 0xc3, 0xe5, 0x3d, 0x53, 0xf9, 0x89, 0x47, 0x8f,
+  0x92, 0xaa, 0x73, 0x15, 0x5c, 0x66, 0x16, 0xaf, 0x26, 0x99, 0xfa, 0xe6,
+  0x76, 0x76, 0x52, 0x32, 0xf8, 0x8c, 0x49, 0x00, 0xe5, 0x54, 0x74, 0xe3,
+  0x38, 0x55, 0x19, 0x3f, 0xb1, 0xf8, 0x13, 0xe1, 0xa5, 0xa2, 0xae, 0x55,
+  0x0c, 0x67, 0xa7, 0x25, 0x9a, 0x75, 0xd8, 0x65, 0xdb, 0xc8, 0x8a, 0xb7,
+  0x6c, 0xa4, 0xbc, 0x9b, 0x55, 0xc9, 0x6d, 0xea, 0x27, 0x8e, 0x49, 0xff,
+  0x4d, 0x0a, 0x71, 0xa3, 0x51, 0x1a, 0xbe, 0x43, 0xb3, 0x76, 0xa9, 0xeb,
+  0x29, 0x63, 0x64, 0x21, 0xf6, 0xa5, 0x27, 0x2d, 0xcd, 0xe1, 0xc4, 0xfe,
+  0x2c, 0x99, 0xc3, 0x70, 0x8b, 0x91, 0x69, 0x40, 0x31, 0xe3, 0xdc, 0xa6,
+  0x4c, 0x91, 0x6a, 0x4d, 0x30, 0x0d, 0x37, 0x47, 0x05, 0x7f, 0xbf, 0xe6,
+  0xec, 0xd2, 0x6f, 0x23, 0xf1, 0xce, 0x62, 0x8e, 0xbf, 0x1b, 0x26, 0x48,
+  0x57, 0x00, 0x0d, 0x9e, 0x21, 0x95, 0x70, 0x19, 0xc2, 0xcd, 0x71, 0xa8,
+  0xaa, 0xb3, 0x7a, 0x4c, 0x6d, 0xc3, 0x04, 0x2d, 0xbd, 0x83, 0x14, 0x16,
+  0xf2, 0xbf, 0x9a, 0x8b, 0xf7, 0xf5, 0xea, 0xd5, 0x5b, 0x73, 0xf1, 0x56,
+  0xac, 0x1e, 0xd7, 0xa6, 0xd7, 0xcc, 0xd3, 0xaf, 0x1d, 0x8f, 0x34, 0xa5,
+  0x1a, 0xb0, 0x6f, 0xc8, 0x78, 0xa6, 0x83, 0xbc, 0x1f, 0x29, 0xf4, 0xeb,
+  0x8f, 0xb6, 0xeb, 0x44, 0x8d, 0x3a, 0xfa, 0x70, 0x73, 0x1c, 0x10, 0x38,
+  0xab, 0xc3, 0x3c, 0x6a, 0x5d, 0xd4, 0x84, 0x81, 0x6b, 0xd2, 0x5b, 0x20,
+  0xff, 0x8a, 0x49, 0x99, 0xce, 0x1e, 0x76, 0x17, 0x6e, 0x4e, 0x51, 0xad,
+  0xc4, 0x7a, 0xee, 0xcd, 0xcf, 0xdc, 0x33, 0x2b, 0x27, 0x27, 0x6a, 0x1d,
+  0x4d, 0x8f, 0xca, 0xf9, 0x71, 0xd9, 0x6a, 0x8d, 0xcd, 0x70, 0xe2, 0xd8,
+  0x36, 0x7d, 0x47, 0xb9, 0x1e, 0x1f, 0xa9, 0xdd, 0x86, 0xb4, 0xa8, 0x52,
+  0xda, 0x56, 0xb7, 0xbe, 0x5a, 0x58, 0x37, 0x85, 0x2e, 0x68, 0x8c, 0xe8,
+  0xe2, 0x5d, 0xce, 0x5a, 0xf7, 0x58, 0xf7, 0x0e, 0x6b, 0xce, 0x07, 0xf7,
+  0xee, 0x7f, 0xfb, 0xfc, 0x6c, 0x3e, 0x3e, 0x4d, 0x51, 0x62, 0x5a, 0x2c,
+  0x35, 0x5c, 0x52, 0xa1, 0xa4, 0x19, 0xa7, 0xb0, 0x53, 0xee, 0x7f, 0x40,
+  0xac, 0x54, 0x5e, 0x48, 0x85, 0x10, 0xba, 0x14, 0xcc, 0x3a, 0xe1, 0xda,
+  0x7e, 0x33, 0xa1, 0x70, 0x2b, 0x63, 0xb2, 0xcd, 0xd4, 0xe0, 0x7a, 0x10,
+  0x19, 0x2e, 0xa1, 0x54, 0x43, 0x9b, 0x0d, 0xb2, 0x1c, 0xa4, 0xce, 0xac,
+  0x03, 0xe4, 0xe7, 0x5d, 0x74, 0x0f, 0xb9, 0xf3, 0xfd, 0xcb, 0xde, 0xbd,
+  0xaa, 0x6d, 0xdb, 0x34, 0x45, 0xd0, 0x9d, 0x97, 0x5e, 0xf6, 0xe1, 0x57,
+  0xbf, 0xe6, 0x9f, 0x74, 0x1f, 0xae, 0xff, 0xb6, 0xa1, 0xc0, 0x07, 0xbc,
+  0x4b, 0xef, 0x51, 0x58, 0xc1, 0x32, 0x29, 0x23, 0x20, 0x5e, 0xb8, 0xca,
+  0x25, 0x88, 0x2b, 0xce, 0x9a, 0xdb, 0x47, 0xda, 0xc5, 0x8a, 0x28, 0x7a,
+  0xf5, 0xd7, 0x8b, 0x0b, 0x8c, 0xa7, 0x25, 0xc8, 0x95, 0x06, 0xce, 0x2f,
+  0xbd, 0xcc, 0x90, 0x8b, 0x40, 0x8e, 0xc6, 0xe4, 0x16, 0xac, 0x2d, 0xe9,
+  0x44, 0x85, 0x75, 0x6b, 0x3e, 0x68, 0x8a, 0x9d, 0x24, 0x73, 0x68, 0x34,
+  0x28, 0xf2, 0x9b, 0x92, 0x94, 0x2b, 0xf5, 0x93, 0x25, 0xec, 0x11, 0xb9,
+  0xf2, 0x70, 0x11, 0x61, 0x39, 0x26, 0x5c, 0xf4, 0x15, 0xe9, 0xfd, 0xc5,
+  0xc5, 0xab, 0x53, 0x32, 0xd8, 0x0a, 0x46, 0x1f, 0x82, 0x90, 0x94, 0xe2,
+  0x7d, 0x19, 0x4c, 0xb3, 0x0a, 0x05, 0xd5, 0x8a, 0xef, 0x00, 0xb9, 0x56,
+  0x3c, 0x1c, 0x41, 0x8a, 0xeb, 0x14, 0x9b, 0xd5, 0x3c, 0x14, 0xd6, 0x26,
+  0x6a, 0x91, 0x53, 0x6e, 0xc1, 0xd1, 0xea, 0xda, 0x33, 0x63, 0xda, 0x74,
+  0xb7, 0x63, 0xce, 0x07, 0x21, 0x61, 0xfa, 0x39, 0xee, 0x04, 0x3e, 0xb1,
+  0x4c, 0x0c, 0x46, 0xb3, 0xde, 0x84, 0x2a, 0xfa, 0x9a, 0xa5, 0x43, 0xf1,
+  0xdb, 0xdc, 0xf7, 0x54, 0x1b, 0x42, 0x12, 0x96, 0x54, 0xe4, 0xf6, 0x34,
+  0xca, 0x65, 0x22, 0x38, 0xca, 0x6e, 0x28, 0x3f, 0x4a, 0x8c, 0xdc, 0x7c,
+  0x51, 0xa0, 0x77, 0x2b, 0x52, 0x7b, 0x45, 0x20, 0xd7, 0x5f, 0xc3, 0xe8,
+  0x4c, 0xd4, 0x96, 0x0d, 0x70, 0x75, 0xb5, 0x17, 0x09, 0x43, 0xc1, 0xf6,
+  0xeb, 0x37, 0x61, 0xd0, 0xd1, 0x43, 0x10, 0x0e, 0xb4, 0x97, 0x40, 0x63,
+  0xd0, 0x3a, 0x01, 0xea, 0x26, 0x14, 0x4e, 0xb3, 0xc4, 0x48, 0x62, 0xb5,
+  0x45, 0x82, 0x94, 0xa0, 0xd9, 0x95, 0xa9, 0x91, 0x73, 0x55, 0x6d, 0xa4,
+  0x6a, 0x14, 0x54, 0x7f, 0x22, 0xc7, 0x78, 0x94, 0x1a, 0xf0, 0x4a, 0x20,
+  0x04, 0xcb, 0x30, 0x99, 0xae, 0x13, 0x93, 0x98, 0xa1, 0xf3, 0xbd, 0x66,
+  0x50, 0x61, 0xe3, 0xde, 0x34, 0x2d, 0x2e, 0xd5, 0xbe, 0xc2, 0xb2, 0xaa,
+  0x57, 0xcb, 0x83, 0xed, 0xbc, 0xff, 0x27, 0x66, 0xd1, 0x03, 0xc9, 0x71,
+  0x41, 0x91, 0x3c, 0xa4, 0xac, 0x6e, 0xc4, 0x23, 0xe1, 0xbf, 0xa3, 0x64,
+  0x06, 0x53, 0xc7, 0x23, 0x4a, 0x99, 0x19, 0x93, 0xc9, 0xd7, 0x93, 0x7c,
+  0x51, 0xde, 0x6d, 0x78, 0xd9, 0x61, 0x1c, 0xc4, 0x08, 0x6c, 0x7f, 0x86,
+  0xc1, 0xbd, 0x29, 0x91, 0x1e, 0x43, 0x28, 0xa2, 0x5d, 0x12, 0x33, 0x65,
+  0x17, 0xb3, 0xf7, 0x36, 0x0a, 0x86, 0xf1, 0x11, 0x4a, 0x86, 0xc8, 0x79,
+  0xdf, 0x5c, 0xfe, 0x0d, 0xa7, 0xef, 0xff, 0xe3, 0x76, 0xdb, 0x16, 0x40,
+  0xc4, 0xa6, 0x9f, 0x7b, 0x59, 0x7e, 0x0c, 0xa9, 0xa0, 0x7c, 0x92, 0x04,
+  0xe3, 0xce, 0x0d, 0xc8, 0x85, 0x89, 0x23, 0x33, 0x57, 0x2e, 0x17, 0xeb,
+  0xd3, 0xe0, 0xb9, 0x5a, 0x00, 0x3f, 0x3e, 0x1c, 0xf2, 0x6e, 0x9a, 0xdb,
+  0x9a, 0xc3, 0xcf, 0xa2, 0xf3, 0x9c, 0xcb, 0xc6, 0xdb, 0x2f, 0x2c, 0x30,
+  0x27, 0xd7, 0x11, 0x8b, 0x36, 0xc6, 0x79, 0x3e, 0x48, 0x8a, 0x96, 0x55,
+  0xa6, 0x8a, 0xd5, 0x03, 0x09, 0xa9, 0x64, 0x47, 0x97, 0x65, 0xa0, 0xdf,
+  0xf2, 0xab, 0x3d, 0x76, 0x1b, 0xcb, 0x87, 0x18, 0xed, 0x9c, 0x4f, 0x46,
+  0x7e, 0x18, 0x38, 0x4d, 0xd0, 0x8d, 0x05, 0xc2, 0xcd, 0xa0, 0x2d, 0xc2,
+  0x00, 0x10, 0xb5, 0x50, 0x19, 0x13, 0x15, 0xcb, 0x06, 0x2a, 0x40, 0xb4,
+  0x84, 0x36, 0x60, 0x42, 0x19, 0x66, 0xf0, 0x50, 0xf6, 0x88, 0x6e, 0x90,
+  0x84, 0x6f, 0x71, 0x40, 0x52, 0xfd, 0xb4, 0xe3, 0x38, 0x90, 0x63, 0x78,
+  0x00, 0xa8, 0x35, 0xfe, 0x61, 0xf9, 0x85, 0x73, 0xfa, 0x88, 0x19, 0x49,
+  0xe6, 0x65, 0x98, 0x5f, 0x7d, 0x42, 0x95, 0x7d, 0x14, 0x75, 0x58, 0x08,
+  0x87, 0xbf, 0xd6, 0x50, 0xd7, 0xeb, 0xaf, 0xe1, 0x9f, 0x55, 0x9e, 0x4f,
+  0xbe, 0x1e, 0x4e, 0x47, 0x38, 0x86, 0xb5, 0x1a, 0xfa, 0x20, 0x5b, 0x4c,
+  0xc3, 0xf8, 0x6b, 0xef, 0x77, 0xde, 0x64, 0xe7, 0x9e, 0x8e, 0x96, 0x44,
+  0xed, 0x90, 0xbd, 0x70, 0xba, 0xa8, 0xa4, 0xc8, 0x02, 0x68, 0xeb, 0x13,
+  0xe0, 0x21, 0xd7, 0x8d, 0xcb, 0x84, 0x6f, 0xfe, 0x97, 0x9a, 0xc6, 0x16,
+  0x8a, 0x0b, 0xbb, 0xe8, 0xd6, 0x2b, 0x11, 0xd7, 0x24, 0xb2, 0x74, 0x92,
+  0x5e, 0xf2, 0xe6, 0x1f, 0x9e, 0x9e, 0xfc, 0xed, 0xe4, 0xd4, 0x13, 0x10,
+  0xbe, 0xef, 0xf7, 0xb7, 0xdf, 0xa7, 0xc5, 0x20, 0x2d, 0xf2, 0x72, 0x0b,
+  0xe3, 0xf1, 0x22, 0x7a, 0xce, 0xa4, 0x58, 0x39, 0xb7, 0xe6, 0x8d, 0x40,
+  0x9b, 0xb3, 0xa5, 0x33, 0x18, 0x78, 0x8c, 0xa9, 0xba, 0xdc, 0xa5, 0x14,
+  0x14, 0x27, 0x54, 0x97, 0x69, 0xaa, 0x48, 0x93, 0x05, 0x86, 0x37, 0x90,
+  0x37, 0x2b, 0x09, 0x14, 0x32, 0x21, 0x20, 0xe3, 0x28, 0x7a, 0xc6, 0x14,
+  0xcf, 0xa9, 0xee, 0x78, 0x13, 0xd8, 0x59, 0x78, 0xaf, 0xcc, 0x09, 0x2d,
+  0x34, 0x7a, 0x26, 0x9d, 0x96, 0x54, 0x35, 0x91, 0x16, 0x8d, 0x0b, 0xa0,
+  0xf0, 0x0d, 0x79, 0xf6, 0x97, 0xf8, 0xa8, 0x1f, 0x3f, 0x3b, 0x39, 0x3d,
+  0xf9, 0xfe, 0xe8, 0xe2, 0xc4, 0x54, 0xa9, 0xf6, 0xc3, 0x14, 0xea, 0x58,
+  0x5d, 0x7f, 0x91, 0x75, 0x31, 0x05, 0x72, 0xab, 0x6c, 0xf8, 0x9e, 0x3c,
+  0x49, 0x52, 0x5d, 0x5e, 0x80, 0x89, 0x40, 0x71, 0x96, 0x9c, 0xe1, 0x70,
+  0x73, 0xc0, 0x2b, 0x26, 0x53, 0x19, 0xaa, 0x37, 0x83, 0x64, 0x02, 0xc2,
+  0x53, 0x19, 0xbd, 0x9d, 0x61, 0xae, 0x7f, 0x66, 0xe0, 0xbb, 0x78, 0xf6,
+  0xae, 0x29, 0xd7, 0x2e, 0xad, 0x6d, 0x83, 0x7d, 0x4e, 0xce, 0x2e, 0x7f,
+  0x18, 0x08, 0x6a, 0x3d, 0x2e, 0xc3, 0xb3, 0x6d, 0xaa, 0x54, 0x6b, 0xbb,
+  0xeb, 0xe0, 0x96, 0x75, 0xee, 0x29, 0xce, 0xd6, 0xca, 0x14, 0x89, 0x48,
+  0x5b, 0x96, 0x93, 0x1a, 0xbd, 0x52, 0xd9, 0xf4, 0xb0, 0x6d, 0x4c, 0xe1,
+  0x2b, 0x49, 0x08, 0x7d, 0x46, 0x0f, 0x36, 0xe2, 0xe1, 0x1d, 0x28, 0x40,
+  0x58, 0x09, 0xfd, 0x2e, 0x00, 0x37, 0x4d, 0x2b, 0x55, 0x0e, 0xaf, 0xd2,
+  0x69, 0xaa, 0xd7, 0x2a, 0xc6, 0x9f, 0x53, 0xbc, 0x33, 0x03, 0x7c, 0x49,
+  0x79, 0x00, 0x62, 0xf0, 0x83, 0x94, 0x0c, 0x48, 0xa8, 0xed, 0xe7, 0x7e,
+  0xa8, 0x2b, 0x25, 0xec, 0x64, 0x05, 0xe5, 0x93, 0x53, 0xb2, 0x0d, 0x41,
+  0xd3, 0xf5, 0x28, 0x5d, 0xd1, 0x09, 0x0c, 0xf7, 0x03, 0xc1, 0x11, 0x11,
+  0x6b, 0xea, 0xa5, 0x28, 0x4b, 0x69, 0x62, 0x8d, 0xdb, 0xe1, 0x10, 0x21,
+  0xfa, 0x88, 0xd8, 0x95, 0x5a, 0x1a, 0x70, 0x74, 0x4b, 0x02, 0xc9, 0xcc,
+  0x52, 0xae, 0x15, 0x12, 0xb2, 0xba, 0x4c, 0x7a, 0xb3, 0xac, 0xfd, 0xbd,
+  0xac, 0xe0, 0x7e, 0xcd, 0x5b, 0x19, 0xdb, 0x5a, 0xbc, 0xd7, 0x94, 0xed,
+  0xed, 0x9a, 0x02, 0xb8, 0xd2, 0x0c, 0x53, 0x12, 0x30, 0x0a, 0xdc, 0x71,
+  0x93, 0xca, 0x11, 0x4c, 0x16, 0xc8, 0x4a, 0xcb, 0x72, 0xeb, 0x1c, 0xd7,
+  0xad, 0xe8, 0x4c, 0x75, 0x87, 0xf5, 0x57, 0x2d, 0x2e, 0x5c, 0x27, 0x53,
+  0x5a, 0xaf, 0x38, 0x9d, 0x7b, 0xa5, 0x6c, 0x36, 0x09, 0x6a, 0xf5, 0xc2,
+  0xcd, 0x4e, 0x55, 0xb0, 0x22, 0xdc, 0x74, 0xbc, 0x82, 0x45, 0x6c, 0x3f,
+  0x39, 0x7f, 0x73, 0x41, 0x9d, 0x9c, 0xe2, 0x2f, 0x72, 0x9d, 0x96, 0xa1,
+  0xfa, 0x2a, 0x23, 0x2e, 0x86, 0x3e, 0xa4, 0xda, 0x03, 0x18, 0x81, 0x64,
+  0xd2, 0x03, 0x34, 0x7f, 0x91, 0xb3, 0xc1, 0xa4, 0x38, 0xae, 0x70, 0x14,
+  0xf2, 0x92, 0x78, 0x48, 0x09, 0x15, 0x66, 0xd3, 0x9b, 0x44, 0x36, 0x1c,
+  0x83, 0xa0, 0xda, 0xd3, 0x28, 0x38, 0x11, 0x58, 0x03, 0x68, 0xce, 0xf0,
+  0x4b, 0x75, 0x0f, 0x10, 0x31, 0x07, 0xaf, 0x32, 0x5b, 0xf5, 0x04, 0x9b,
+  0xc4, 0xb7, 0xa2, 0x22, 0xbb, 0xbc, 0x82, 0x8d, 0x81, 0x71, 0xf4, 0xec,
+  0x3c, 0xb9, 0x0b, 0xc6, 0x9f, 0xa3, 0x0a, 0x5f, 0x7e, 0xb8, 0x0c, 0x81,
+  0xc6, 0x98, 0xa8, 0x79, 0xcd, 0xe2, 0xe7, 0xe4, 0x61, 0x13, 0x7a, 0xd7,
+  0x15, 0x24, 0x7b, 0x86, 0xec, 0x24, 0x78, 0x05, 0x8e, 0xc0, 0xf3, 0x42,
+  0x40, 0x08, 0xbe, 0x41, 0x73, 0xd7, 0xd2, 0x3b, 0xa9, 0x15, 0xc6, 0x0a,
+  0x84, 0x96, 0x4e, 0x4f, 0xa8, 0xca, 0x1e, 0x89, 0x34, 0x03, 0x96, 0x79,
+  0x45, 0x99, 0x9d, 0x05, 0x0e, 0x3a, 0x2c, 0xbc, 0xf2, 0x68, 0x9e, 0xa8,
+  0x6c, 0x5b, 0x40, 0x86, 0x42, 0xda, 0x68, 0x56, 0x42, 0x70, 0x92, 0x83,
+  0x64, 0x28, 0xbc, 0x38, 0x74, 0xca, 0x84, 0xde, 0xf2, 0x10, 0x55, 0x31,
+  0x4b, 0x73, 0xbc, 0xe8, 0x35, 0x12, 0x6c, 0x43, 0xd5, 0xd3, 0xe4, 0xaa,
+  0x92, 0x30, 0x54, 0x9c, 0x42, 0x83, 0x2f, 0xcf, 0xaf, 0x9f, 0xd4, 0xe3,
+  0x17, 0xd9, 0x5e, 0x46, 0xea, 0x27, 0xac, 0x6a, 0x13, 0xaa, 0x85, 0x41,
+  0x2a, 0xa0, 0x6f, 0x1a, 0x2e, 0x1a, 0x5b, 0x4d, 0xec, 0x32, 0xd2, 0x8e,
+  0xd7, 0x3f, 0xf3, 0x13, 0x62, 0x44, 0xf4, 0x06, 0xdd, 0xc5, 0x08, 0x57,
+  0x7f, 0x29, 0x1a, 0xbd, 0xd0, 0xf2, 0x20, 0x85, 0x1e, 0x33, 0xc4, 0x70,
+  0x7d, 0xe9, 0xa8, 0x05, 0x7e, 0xe4, 0x24, 0xd0, 0x1f, 0x82, 0x28, 0xb0,
+  0x52, 0x8f, 0x2f, 0x52, 0x00, 0x20, 0xbe, 0x40, 0x48, 0x75, 0x15, 0x0b,
+  0x0c, 0x2c, 0xde, 0x62, 0x4c, 0x1f, 0x67, 0x41, 0xe6, 0x5c, 0x9f, 0x6a,
+  0x18, 0xe0, 0x6b, 0xc2, 0xd1, 0xe8, 0xd9, 0xa4, 0xbc, 0x5e, 0xc5, 0x49,
+  0xed, 0x52, 0x47, 0xe1, 0xa8, 0x5c, 0xaf, 0x28, 0xf8, 0xbd, 0x43, 0x72,
+  0x97, 0xee, 0xe3, 0x2a, 0xef, 0xa2, 0x3b, 0xb0, 0xb5, 0x30, 0x8a, 0xed,
+  0x9b, 0xe5, 0x35, 0x13, 0xde, 0x79, 0xd7, 0x59, 0xbb, 0x30, 0xaf, 0x2b,
+  0xaf, 0x3f, 0x80, 0xd7, 0xf5, 0xff, 0x66, 0x34, 0x06, 0xe2, 0x69, 0x81,
+  0x1c, 0x14, 0x5a, 0x6e, 0xdd, 0xe1, 0x35, 0xf9, 0x1c, 0x70, 0x36, 0xdf,
+  0xb7, 0x8d, 0x9c, 0xce, 0x30, 0x3a, 0x18, 0x80, 0x70, 0xb7, 0xf3, 0xa3,
+  0xfe, 0xdf, 0x1a, 0x7c, 0xcd, 0xe3, 0x64, 0x40, 0x4f, 0x9e, 0xe7, 0x5d,
+  0x6b, 0x1c, 0x62, 0x5b, 0xc1, 0x03, 0x0f, 0x6b, 0x79, 0x8f, 0x03, 0x0f,
+  0x03, 0xf1, 0x0e, 0xbc, 0xb7, 0xb4, 0xcb, 0x0e, 0x7c, 0x80, 0x5e, 0xfd,
+  0x03, 0x3f, 0xa3, 0x43, 0x4e, 0x70, 0x20, 0x81, 0x93, 0xae, 0x07, 0x5d,
+  0xcf, 0xb6, 0x9f, 0xa2, 0x47, 0xe3, 0x5c, 0xe7, 0xa4, 0xd3, 0x0b, 0xde,
+  0x41, 0xd7, 0xed, 0x5c, 0xfb, 0xa4, 0x0b, 0x87, 0xf0, 0x0e, 0x3a, 0x1d,
+  0xf2, 0x16, 0x62, 0x0d, 0x84, 0xc5, 0xd6, 0x08, 0xbd, 0x21, 0x0b, 0x7d,
+  0x78, 0x3c, 0xfd, 0xd2, 0x3d, 0xb9, 0xf7, 0xe1, 0x85, 0x91, 0x3d, 0xf0,
+  0xf0, 0x6a, 0xd0, 0x65, 0xdb, 0xe1, 0x75, 0xb1, 0xc9, 0x02, 0xb1, 0x3f,
+  0x44, 0xa5, 0x52, 0x20, 0x4b, 0x8e, 0x91, 0x8d, 0x40, 0x0c, 0x40, 0x24,
+  0x77, 0x0d, 0x22, 0x5d, 0x31, 0xf4, 0xbd, 0xa8, 0x06, 0x00, 0xd1, 0x45,
+  0xf4, 0x28, 0x44, 0x69, 0x15, 0xd8, 0x44, 0x9c, 0x85, 0x26, 0xcf, 0xf3,
+  0x0b, 0xc8, 0xa4, 0x7d, 0xb0, 0x3c, 0xa7, 0x20, 0x40, 0x1a, 0x04, 0x70,
+  0x2c, 0x53, 0x4c, 0x90, 0x89, 0xea, 0xa1, 0xa6, 0xed, 0xfb, 0xff, 0xd1,
+  0xc5, 0xe0, 0x06, 0xdc, 0xdb, 0xbd, 0xb6, 0xfc, 0x1f, 0xeb, 0x09, 0xbc,
+  0x0e, 0xe0, 0x76, 0x93, 0x1f, 0xa3, 0x6e, 0x48, 0xb2, 0x30, 0x0a, 0xd6,
+  0xa0, 0x52, 0xa1, 0x0d, 0x62, 0x49, 0x40, 0x41, 0x55, 0x0b, 0xaa, 0x45,
+  0xe0, 0x35, 0xd2, 0x92, 0xc5, 0x79, 0x8e, 0x1a, 0x2c, 0xe6, 0x9c, 0xaa,
+  0xaf, 0x99, 0xd8, 0x70, 0x12, 0x28, 0x76, 0xce, 0xb1, 0x5d, 0x4e, 0xb9,
+  0x51, 0x10, 0xc8, 0x06, 0x98, 0x70, 0x87, 0x45, 0xb9, 0x4a, 0xba, 0x7f,
+  0xd1, 0xa1, 0x7d, 0xa3, 0xd5, 0x81, 0x08, 0x72, 0xb6, 0x64, 0xf5, 0xc9,
+  0xb3, 0x61, 0x6b, 0xf1, 0xa3, 0x2a, 0x2a, 0x10, 0xac, 0x66, 0x9a, 0x3a,
+  0xa9, 0xca, 0x2b, 0x77, 0x34, 0x34, 0xff, 0x65, 0x5b, 0x1c, 0x94, 0x67,
+  0x7a, 0x2b, 0x8f, 0x76, 0xa8, 0x9b, 0x87, 0x1c, 0xf3, 0xe0, 0x70, 0xd7,
+  0x2c, 0x4c, 0x8a, 0xb2, 0x6f, 0x2d, 0xca, 0xe4, 0x49, 0xa3, 0x22, 0xe9,
+  0x68, 0x56, 0xc6, 0x64, 0xef, 0x1b, 0x23, 0x08, 0xf5, 0xa1, 0xf9, 0xd5,
+  0xb3, 0xf8, 0x3c, 0x7b, 0xad, 0x05, 0x20, 0x9d, 0xfa, 0x8f, 0x65, 0xca,
+  0x98, 0x39, 0x9c, 0xa9, 0x0e, 0x8f, 0xd8, 0x24, 0xf4, 0xea, 0xaa, 0xc8,
+  0x17, 0x97, 0x57, 0xd2, 0xa4, 0x5f, 0x40, 0x1d, 0xba, 0xf0, 0x10, 0xd2,
+  0x12, 0xc6, 0x20, 0x4a, 0x0b, 0xf2, 0x68, 0x92, 0x7e, 0x65, 0xc7, 0x16,
+  0x6d, 0x8a, 0xf9, 0x04, 0xdd, 0x1e, 0x81, 0xfa, 0x12, 0x0a, 0x8a, 0x86,
+  0xc3, 0x90, 0x7a, 0xdd, 0x98, 0x7f, 0x43, 0x45, 0xaf, 0xa5, 0x08, 0x8e,
+  0xc2, 0xaf, 0x53, 0x7d, 0x5f, 0x6d, 0x37, 0xe0, 0x13, 0xde, 0x94, 0x42,
+  0x00, 0x92, 0x85, 0xba, 0x15, 0x4e, 0x73, 0xa9, 0x2f, 0xdd, 0x5a, 0x16,
+  0x94, 0x8f, 0x58, 0x3b, 0xb4, 0x3e, 0x8a, 0xb4, 0xba, 0xba, 0x37, 0xe6,
+  0x0e, 0x13, 0x89, 0x36, 0x31, 0xbf, 0x7e, 0x14, 0xe3, 0x7c, 0x23, 0xf5,
+  0x1a, 0xf2, 0x87, 0x4f, 0xe8, 0xc3, 0x5e, 0xb3, 0x23, 0x0f, 0x39, 0xe0,
+  0x1f, 0x8b, 0xac, 0x48, 0x9d, 0x6a, 0xc7, 0x8b, 0xd9, 0x28, 0x2d, 0x26,
+  0x77, 0xb8, 0xea, 0x93, 0x6c, 0xc0, 0x19, 0xe3, 0x89, 0xa9, 0x4c, 0xc8,
+  0x20, 0xd1, 0x9c, 0x1d, 0x05, 0x33, 0x89, 0xfd, 0x6a, 0x11, 0xf5, 0x78,
+  0xe2, 0xfd, 0xfd, 0x00, 0xd5, 0x9a, 0x11, 0x1f, 0xca, 0x3e, 0x85, 0x69,
+  0xb6, 0x26, 0x68, 0x0e, 0x08, 0xc4, 0x35, 0x07, 0xaa, 0x9c, 0xc7, 0xfa,
+  0x16, 0xb3, 0x9e, 0x69, 0xf2, 0x5e, 0x74, 0x9c, 0x47, 0x42, 0xc8, 0xb1,
+  0x07, 0x94, 0x8e, 0x84, 0xdd, 0xad, 0x85, 0xde, 0xd4, 0x48, 0x5e, 0x14,
+  0xcf, 0x4a, 0x0b, 0x7e, 0x49, 0x41, 0x0b, 0xe9, 0x27, 0x04, 0xe3, 0xa5,
+  0x79, 0x54, 0x6e, 0x78, 0xac, 0x22, 0xe4, 0xd0, 0x48, 0xcc, 0xbb, 0xad,
+  0x04, 0x68, 0x56, 0xe1, 0xb3, 0x12, 0xa0, 0x19, 0xc5, 0xee, 0x4e, 0x6f,
+  0xb7, 0xb7, 0xd7, 0x5b, 0x17, 0x7e, 0xad, 0x4e, 0xc5, 0xc6, 0x22, 0x5e,
+  0xa7, 0xc1, 0x66, 0x67, 0x6d, 0x44, 0x28, 0xb6, 0x39, 0xce, 0xaa, 0xb3,
+  0x74, 0x58, 0x23, 0x44, 0xa6, 0x43, 0x64, 0x61, 0x42, 0x85, 0x0f, 0x26,
+  0xc2, 0x27, 0x9f, 0x84, 0x08, 0x9f, 0xac, 0x20, 0x42, 0xca, 0x01, 0xb7,
+  0xf3, 0x6c, 0xa1, 0x43, 0x09, 0x5a, 0x41, 0xd6, 0xfa, 0x60, 0x22, 0x7c,
+  0x72, 0x2f, 0x22, 0x7c, 0xf2, 0x1f, 0x41, 0x84, 0x32, 0x8a, 0xbd, 0x64,
+  0xe7, 0xd1, 0xc1, 0xa3, 0xf4, 0xd1, 0xde, 0xc1, 0xc1, 0xe3, 0x27, 0xbb,
+  0x0f, 0xe3, 0x87, 0x75, 0x62, 0x6c, 0x50, 0x5e, 0xaf, 0xd9, 0xe5, 0x7f,
+  0x00, 0x3f, 0x14, 0xbb, 0x95, 0x21, 0xc4, 0xd4, 0x23, 0xc5, 0xbe, 0x44,
+  0x74, 0x6b, 0xed, 0x2f, 0x24, 0x1a, 0x7d, 0x8b, 0x23, 0x75, 0x24, 0x67,
+  0x5d, 0x73, 0x47, 0xdd, 0x72, 0x8a, 0xbe, 0xb4, 0x4d, 0xe2, 0xb5, 0x04,
+  0x22, 0x69, 0x93, 0x2f, 0xcf, 0x23, 0xd3, 0xbd, 0x43, 0x4f, 0xb6, 0x70,
+  0x89, 0xe4, 0xfb, 0x04, 0x1d, 0xee, 0x25, 0xfa, 0x6a, 0x61, 0x01, 0x38,
+  0xcf, 0xb4, 0xb4, 0x00, 0x9f, 0xa1, 0xfa, 0x24, 0xb0, 0x78, 0x07, 0x87,
+  0xb8, 0x5e, 0x31, 0x3f, 0xfe, 0x4d, 0x10, 0xbe, 0x2d, 0x4d, 0x40, 0x62,
+  0xb0, 0x83, 0x6a, 0x27, 0x61, 0x5d, 0x87, 0x4f, 0x0f, 0xae, 0xb7, 0x8c,
+  0x84, 0x75, 0x14, 0xbb, 0x5f, 0xed, 0xf5, 0x76, 0x9f, 0x7c, 0x89, 0x38,
+  0x9d, 0x5d, 0xfb, 0xfb, 0xde, 0x7a, 0x94, 0xdc, 0x24, 0xe4, 0x25, 0x74,
+  0xac, 0xfd, 0x86, 0xf8, 0xcd, 0xbd, 0xe8, 0xd8, 0x63, 0xa7, 0x40, 0xc4,
+  0x44, 0xb5, 0x4d, 0xbc, 0xd4, 0x25, 0x34, 0x9c, 0x5f, 0x71, 0x25, 0xbb,
+  0xb2, 0x4a, 0xaa, 0x45, 0x53, 0xc2, 0xeb, 0x93, 0x1b, 0xa3, 0xd4, 0x6a,
+  0x77, 0xfc, 0x0c, 0x59, 0x63, 0x0c, 0xb2, 0xed, 0xb3, 0xfc, 0x05, 0x71,
+  0xdb, 0x18, 0xdd, 0x2d, 0x31, 0x55, 0x12, 0xdf, 0x5a, 0x61, 0xa2, 0xab,
+  0x77, 0x79, 0x1f, 0x75, 0x6f, 0x0d, 0x2d, 0xbf, 0xde, 0xf8, 0xda, 0xe4,
+  0xd0, 0x18, 0x1b, 0x7f, 0xe2, 0xaa, 0x00, 0xf0, 0xb7, 0x96, 0x4f, 0x58,
+  0xf7, 0xb6, 0x85, 0x96, 0xd4, 0xa3, 0x56, 0xcf, 0xdb, 0x7a, 0xe2, 0xef,
+  0x89, 0x3e, 0xd8, 0xba, 0x21, 0xc6, 0x37, 0xf7, 0x21, 0xbb, 0x51, 0xef,
+  0xeb, 0x13, 0xd8, 0x5c, 0xdc, 0x29, 0x3f, 0x60, 0x2b, 0xcc, 0xc8, 0x3e,
+  0xf6, 0x3e, 0xa0, 0x72, 0xb8, 0x6a, 0x0b, 0xb0, 0xb7, 0x43, 0xd0, 0x8b,
+  0xc3, 0xb5, 0xb3, 0x18, 0x46, 0x88, 0x75, 0xa3, 0xfa, 0x82, 0xa3, 0xf4,
+  0x91, 0xbf, 0xd8, 0x72, 0x7c, 0xc1, 0x14, 0xa5, 0x85, 0x61, 0x28, 0x84,
+  0x76, 0x1b, 0xc0, 0x39, 0x26, 0xac, 0x7f, 0x17, 0x3f, 0xc0, 0x89, 0x7a,
+  0x53, 0x8b, 0x0a, 0xb9, 0x14, 0xa5, 0x89, 0x22, 0x9a, 0xa6, 0x68, 0xb9,
+  0xcb, 0xca, 0x69, 0x48, 0xb6, 0x40, 0x65, 0x5e, 0xb5, 0x2e, 0x1a, 0x92,
+  0x5f, 0xf2, 0x06, 0xab, 0x29, 0x50, 0xa9, 0x47, 0x13, 0xb1, 0xc5, 0xdc,
+  0x46, 0x31, 0x24, 0x91, 0x98, 0xe0, 0xf7, 0xc2, 0xc2, 0xe4, 0x6a, 0x0a,
+  0x0f, 0xe5, 0xa3, 0x34, 0x49, 0x00, 0xc8, 0xce, 0x02, 0x0e, 0xd1, 0x48,
+  0x31, 0xf0, 0x69, 0x31, 0x2f, 0x09, 0xcd, 0x80, 0xab, 0x1e, 0x44, 0xe4,
+  0x91, 0xa5, 0x5e, 0xe1, 0xfe, 0x7a, 0x91, 0xdf, 0xa4, 0xd7, 0x2d, 0x95,
+  0x81, 0x6a, 0xc5, 0x6c, 0x5d, 0x6c, 0x6c, 0xba, 0x04, 0x30, 0xac, 0xa8,
+  0x34, 0xb5, 0xed, 0xb2, 0xd9, 0x55, 0x8a, 0xa8, 0x3e, 0x92, 0x4b, 0x46,
+  0x26, 0xdd, 0x40, 0xd6, 0x40, 0x91, 0x53, 0xf8, 0xa2, 0x5e, 0x89, 0x84,
+  0x80, 0x98, 0x34, 0xa9, 0x4c, 0x78, 0xf5, 0x0a, 0x16, 0xd2, 0x50, 0x9f,
+  0x17, 0x33, 0x5c, 0xaf, 0x6c, 0x4c, 0x61, 0xc0, 0x84, 0x7e, 0x2d, 0x7a,
+  0x6f, 0xa7, 0x63, 0xcb, 0xe9, 0x29, 0x50, 0x30, 0x42, 0x48, 0x37, 0x45,
+  0x55, 0x87, 0x0c, 0xbf, 0x7c, 0x1c, 0x40, 0x0e, 0x90, 0xb8, 0x01, 0xa1,
+  0xc8, 0xcf, 0x94, 0xab, 0xfa, 0x6f, 0x60, 0x83, 0x4f, 0xf6, 0x6a, 0x67,
+  0xf0, 0x19, 0xd9, 0x43, 0x17, 0xd3, 0xb9, 0x60, 0x42, 0xaf, 0x80, 0xa0,
+  0x8d, 0xc8, 0xbf, 0xf1, 0x03, 0x01, 0x3c, 0x71, 0x14, 0x9c, 0xc0, 0x17,
+  0xaa, 0x27, 0xd2, 0x80, 0x95, 0x49, 0x78, 0x69, 0x6b, 0x01, 0x33, 0xc6,
+  0xff, 0xa2, 0x65, 0x47, 0xde, 0xa7, 0xaf, 0x21, 0xc1, 0x69, 0xa3, 0xdd,
+  0xba, 0xcf, 0xa4, 0x6e, 0xb0, 0x0f, 0xe3, 0x08, 0x19, 0xea, 0x08, 0x96,
+  0xa0, 0xaa, 0x61, 0x17, 0x31, 0x3a, 0xcd, 0x55, 0xea, 0xc2, 0x30, 0x9b,
+  0x62, 0x92, 0x9c, 0x5a, 0xc9, 0x8e, 0x59, 0x20, 0x6c, 0x41, 0x2d, 0xf0,
+  0xf6, 0x98, 0x08, 0x50, 0x86, 0xde, 0x91, 0xb2, 0x78, 0x0b, 0x29, 0x1d,
+  0x9c, 0xe0, 0xb2, 0x50, 0x35, 0xb6, 0x96, 0xbc, 0x68, 0x77, 0xd5, 0x3f,
+  0x9f, 0x72, 0xe1, 0x0c, 0x82, 0x0b, 0x5a, 0xaf, 0x0d, 0x76, 0x90, 0x77,
+  0x0d, 0x48, 0x8d, 0xcb, 0xdc, 0xd3, 0x4b, 0x0e, 0xbe, 0x5a, 0x86, 0x52,
+  0xf1, 0x2c, 0xc5, 0xcc, 0x15, 0x06, 0x7d, 0x9d, 0x3b, 0xf1, 0x2a, 0xf6,
+  0xdc, 0x4b, 0x6a, 0x39, 0x83, 0x0a, 0xb0, 0x6d, 0x8e, 0x58, 0x60, 0xb3,
+  0xc0, 0x4d, 0xef, 0xcb, 0x47, 0x40, 0xd7, 0x78, 0xeb, 0x66, 0xb9, 0xe4,
+  0x86, 0x71, 0x68, 0x16, 0x07, 0x97, 0x93, 0xc9, 0x5d, 0xbd, 0xb6, 0xb9,
+  0x42, 0xe0, 0x8c, 0x8d, 0x6c, 0x17, 0xa8, 0x70, 0x9e, 0x83, 0x78, 0x6f,
+  0x32, 0x64, 0x81, 0x00, 0x05, 0x09, 0xa0, 0xb5, 0xae, 0x99, 0x29, 0xbf,
+  0xae, 0x20, 0x8e, 0xe4, 0xe5, 0x43, 0x9e, 0x38, 0x87, 0xa1, 0x7f, 0x9f,
+  0x20, 0x29, 0x90, 0x6c, 0xf6, 0x2c, 0x49, 0xa7, 0xc4, 0x64, 0x73, 0x0c,
+  0x9d, 0x0a, 0x22, 0xa0, 0xf3, 0x57, 0x6c, 0x52, 0x66, 0x97, 0x04, 0x19,
+  0x24, 0x99, 0xa0, 0x22, 0xb8, 0x2b, 0x46, 0xa0, 0xfb, 0x0a, 0x98, 0x23,
+  0xde, 0x21, 0x54, 0x4d, 0x98, 0x60, 0x08, 0xc2, 0x58, 0xca, 0x41, 0xd5,
+  0xc0, 0x6c, 0xd0, 0x67, 0x62, 0x76, 0xa6, 0xff, 0x6d, 0x9e, 0xd0, 0x36,
+  0x55, 0x2e, 0x5c, 0x13, 0xda, 0x9e, 0xde, 0xf4, 0x82, 0xfc, 0x64, 0x69,
+  0x0e, 0x83, 0x7c, 0x8c, 0x28, 0x0f, 0x1a, 0x99, 0x68, 0x99, 0x09, 0xc5,
+  0x78, 0x18, 0x16, 0x77, 0x73, 0xf4, 0x06, 0x08, 0x74, 0x32, 0x4b, 0x14,
+  0xb8, 0xbc, 0x0c, 0x03, 0xb0, 0x14, 0xac, 0xfa, 0x2d, 0x79, 0xda, 0xe5,
+  0x55, 0xd2, 0x18, 0xd1, 0x37, 0x8f, 0xa5, 0xcc, 0xa3, 0xc4, 0x68, 0x90,
+  0x48, 0x6d, 0x23, 0xaa, 0x3e, 0x62, 0xe1, 0x93, 0x9a, 0x86, 0x78, 0x6a,
+  0xa1, 0x94, 0x9c, 0x14, 0x93, 0xec, 0xcd, 0xc1, 0x7f, 0xd1, 0x26, 0x05,
+  0x3b, 0x29, 0x60, 0x30, 0x46, 0x9a, 0x6d, 0xa9, 0x2a, 0x2b, 0x2f, 0x7a,
+  0x8a, 0x27, 0xa9, 0x95, 0x16, 0x38, 0xc3, 0x7a, 0x17, 0x5a, 0x88, 0x82,
+  0x67, 0x70, 0x5f, 0x92, 0xf8, 0xe8, 0xa5, 0xa1, 0x95, 0xa8, 0x27, 0xc9,
+  0x35, 0x2c, 0xfc, 0x83, 0xd0, 0x1a, 0x14, 0x75, 0x85, 0x70, 0x1f, 0x6a,
+  0x54, 0x51, 0x25, 0x97, 0xb1, 0x14, 0xac, 0x68, 0xe1, 0x4a, 0x8e, 0x8b,
+  0x48, 0x78, 0x10, 0xe3, 0xdf, 0x52, 0x52, 0xa6, 0x89, 0x73, 0xa1, 0x9b,
+  0x50, 0xd3, 0x42, 0xa4, 0x88, 0x48, 0x38, 0x49, 0x18, 0x11, 0x5a, 0x4e,
+  0x2e, 0x92, 0x4b, 0x27, 0x38, 0xba, 0x91, 0x67, 0x85, 0x15, 0x02, 0xd3,
+  0x19, 0x27, 0x54, 0xc1, 0x22, 0x00, 0x0f, 0x9e, 0xc2, 0x4e, 0xc4, 0xaf,
+  0x61, 0x6f, 0x63, 0xaf, 0x18, 0x12, 0x7a, 0x82, 0x85, 0x59, 0x5b, 0xd1,
+  0x55, 0xc0, 0x61, 0xb1, 0x9b, 0x5e, 0xb0, 0x4a, 0xcd, 0x30, 0x2f, 0xa4,
+  0x56, 0x0c, 0xa6, 0x44, 0xc1, 0x16, 0x52, 0x12, 0x58, 0x69, 0x90, 0xf9,
+  0xeb, 0xd9, 0x2f, 0x34, 0x2a, 0xad, 0xe2, 0x19, 0x02, 0xb5, 0x36, 0x06,
+  0x34, 0x29, 0x27, 0xa9, 0xc1, 0x7b, 0xa3, 0xb4, 0xcc, 0x88, 0x55, 0xd3,
+  0x48, 0x40, 0x1f, 0x9e, 0x99, 0x42, 0x25, 0x1c, 0x90, 0xee, 0x05, 0x4b,
+  0xc1, 0x46, 0x88, 0xdc, 0x66, 0xee, 0xed, 0xe0, 0x2c, 0xf0, 0x70, 0x49,
+  0xfc, 0x93, 0x44, 0x0a, 0xcb, 0x66, 0x96, 0xe4, 0xb4, 0xa7, 0x42, 0x03,
+  0xe8, 0xaa, 0xa5, 0x3f, 0x89, 0xed, 0xe2, 0x92, 0x4b, 0x28, 0xba, 0xaf,
+  0xf7, 0xf3, 0x1d, 0xdf, 0xd5, 0x32, 0xb6, 0x33, 0xc9, 0xef, 0x70, 0xb0,
+  0xc1, 0x72, 0xad, 0x6b, 0x22, 0x10, 0x50, 0x65, 0x65, 0x40, 0x66, 0xaf,
+  0xbd, 0x23, 0x4b, 0x9d, 0x31, 0xa0, 0xc3, 0x62, 0xc0, 0xf5, 0xce, 0x4c,
+  0x5d, 0x9e, 0x96, 0xab, 0xbf, 0x46, 0x89, 0x9f, 0xeb, 0xea, 0xaf, 0x0d,
+  0x02, 0xff, 0x78, 0x00, 0xce, 0x91, 0xdd, 0x05, 0x3a, 0x74, 0xbf, 0xa1,
+  0x28, 0x80, 0x63, 0x47, 0x2f, 0x6d, 0xbd, 0xd8, 0x37, 0x59, 0x79, 0x9a,
+  0x87, 0x91, 0xde, 0xbc, 0xef, 0x49, 0xc4, 0x87, 0x4b, 0x4e, 0x8b, 0x82,
+  0xe3, 0x47, 0xab, 0xae, 0x39, 0x4c, 0x35, 0xe2, 0x25, 0xd2, 0x0b, 0xed,
+  0x91, 0x06, 0x27, 0x0f, 0x93, 0xe1, 0x95, 0xa0, 0x4f, 0x4f, 0xd8, 0x70,
+  0xc7, 0x67, 0x0a, 0x53, 0x56, 0x38, 0x10, 0x92, 0x73, 0x14, 0x14, 0xa7,
+  0xa3, 0x8d, 0x82, 0x5a, 0x60, 0xa1, 0x99, 0x1e, 0x4a, 0x0e, 0x8f, 0xad,
+  0x81, 0x4f, 0x74, 0xeb, 0xf2, 0x29, 0x41, 0x93, 0xb6, 0x60, 0x37, 0x32,
+  0x33, 0x36, 0x6b, 0x74, 0x7f, 0x94, 0xb9, 0xe8, 0xd3, 0xd0, 0x09, 0x8d,
+  0x82, 0x38, 0xcd, 0x07, 0x10, 0x8a, 0x10, 0xdb, 0x72, 0xba, 0xa0, 0xfc,
+  0xca, 0xdd, 0x9d, 0x1d, 0x5b, 0x26, 0xae, 0xa5, 0x36, 0x9c, 0x90, 0xc8,
+  0xd2, 0x12, 0x71, 0x84, 0x4a, 0x4d, 0x71, 0xe3, 0xa6, 0x34, 0x46, 0x92,
+  0x55, 0xc1, 0xa2, 0x98, 0xd8, 0xa5, 0x29, 0xd5, 0x66, 0x14, 0x81, 0x1b,
+  0x03, 0x98, 0x98, 0x52, 0x99, 0x38, 0x0c, 0xa3, 0x3e, 0xa1, 0x21, 0x96,
+  0x07, 0xf5, 0x77, 0xc2, 0x70, 0xe8, 0x94, 0x7d, 0x8a, 0x2f, 0x1a, 0x8e,
+  0x10, 0x45, 0xdf, 0xdd, 0xd9, 0x00, 0x0e, 0x13, 0xc3, 0x45, 0xe3, 0xc2,
+  0x68, 0x7f, 0x1e, 0x7f, 0x6f, 0x89, 0x3a, 0x1c, 0x2e, 0xff, 0xf6, 0x5f,
+  0x0e, 0xb8, 0x23, 0x6c, 0xd4, 0xbc, 0xa4, 0x26, 0xb9, 0x3e, 0x94, 0x97,
+  0x7b, 0x5b, 0x2f, 0x4c, 0x67, 0x4a, 0x84, 0xdb, 0x79, 0xa3, 0x51, 0x6a,
+  0x90, 0x52, 0x01, 0x05, 0x56, 0xc6, 0xda, 0x38, 0x99, 0xb7, 0x5d, 0xf7,
+  0xe5, 0x67, 0x1f, 0x1d, 0x0e, 0xd1, 0x1f, 0xca, 0x5e, 0xef, 0xb1, 0x41,
+  0xde, 0x5b, 0xb7, 0xe6, 0x7b, 0xad, 0xd8, 0x5c, 0x1d, 0xcc, 0xe2, 0x69,
+  0x9d, 0x62, 0xb1, 0xde, 0x44, 0x4c, 0x25, 0x25, 0x9a, 0x97, 0x2f, 0x16,
+  0xa2, 0x40, 0xbe, 0x48, 0xf1, 0x25, 0x06, 0xd4, 0x12, 0x6f, 0xaa, 0x51,
+  0x5a, 0x49, 0x16, 0xb1, 0x1a, 0x7e, 0xa8, 0x38, 0x45, 0x6f, 0x69, 0xe1,
+  0x57, 0x0d, 0xa1, 0x73, 0xa1, 0xd1, 0x4d, 0x3c, 0x60, 0x33, 0x3a, 0x89,
+  0xc3, 0x93, 0x42, 0x71, 0x9e, 0x68, 0x60, 0xaa, 0x4c, 0x28, 0x20, 0x17,
+  0xd0, 0xa0, 0x9c, 0x41, 0x72, 0x28, 0xb0, 0x68, 0xf2, 0xf6, 0xcd, 0x69,
+  0x97, 0xa8, 0x11, 0xf8, 0x17, 0x42, 0x02, 0x31, 0xcd, 0x06, 0xbd, 0x24,
+  0x36, 0x42, 0x90, 0x75, 0x35, 0x9e, 0x89, 0x52, 0x14, 0xda, 0x7b, 0x0a,
+  0x89, 0x2f, 0xc6, 0x56, 0x4b, 0x53, 0xde, 0xc9, 0xcf, 0xdb, 0x71, 0x18,
+  0x19, 0x3c, 0xb9, 0x41, 0xc5, 0x13, 0x28, 0x4a, 0x97, 0x9b, 0xc7, 0x35,
+  0x2b, 0xa6, 0x5c, 0xd5, 0x44, 0x7a, 0x89, 0x38, 0xab, 0x9a, 0xe1, 0xeb,
+  0x3d, 0xc9, 0x1c, 0xd3, 0xcc, 0xb0, 0x92, 0x72, 0x44, 0x9b, 0x43, 0x75,
+  0x41, 0x16, 0x85, 0x2d, 0xc4, 0x02, 0x9a, 0x7b, 0x06, 0xbb, 0x3a, 0xeb,
+  0x90, 0x0c, 0x66, 0xaf, 0x6e, 0xe9, 0xd4, 0x9b, 0xec, 0x62, 0xe2, 0x44,
+  0x5f, 0x7e, 0x11, 0xae, 0x1e, 0x52, 0x39, 0x81, 0xf6, 0x35, 0xd8, 0xe3,
+  0xc8, 0xc1, 0x93, 0xc7, 0x81, 0xd1, 0x4d, 0x40, 0x53, 0xc8, 0x67, 0xad,
+  0x78, 0x3e, 0x86, 0x38, 0x88, 0x97, 0xe1, 0xf8, 0xc9, 0x7c, 0x39, 0x4a,
+  0x29, 0xc9, 0x7d, 0x46, 0x3a, 0x05, 0xaf, 0x5a, 0x32, 0xc5, 0xe0, 0x12,
+  0xae, 0xd1, 0x87, 0xab, 0x1c, 0x44, 0x0b, 0xc7, 0x8d, 0x90, 0xda, 0x4d,
+  0x7e, 0x24, 0x9b, 0x26, 0x11, 0x27, 0x77, 0x04, 0x3b, 0x6c, 0xba, 0x26,
+  0xea, 0xf6, 0x2a, 0x4b, 0xc3, 0x2a, 0x5e, 0xe6, 0xe4, 0x30, 0x11, 0x3a,
+  0xc6, 0x25, 0x1c, 0x16, 0xd9, 0xbc, 0x62, 0xf1, 0xbb, 0x2d, 0x6c, 0xa9,
+  0xa1, 0xdd, 0x5f, 0x4e, 0xf2, 0x41, 0x32, 0x11, 0x4c, 0x76, 0x49, 0xf8,
+  0xd5, 0xb0, 0xc6, 0x41, 0xed, 0x5e, 0xcf, 0xd9, 0xdf, 0x15, 0xd2, 0xd3,
+  0xe1, 0xa6, 0x3c, 0xe8, 0x52, 0x5e, 0xc2, 0x6d, 0xb5, 0xb4, 0x43, 0xd3,
+  0x05, 0x55, 0xe4, 0x8e, 0xe2, 0x71, 0x57, 0x4e, 0xaf, 0xd6, 0x34, 0xa0,
+  0x74, 0xe9, 0xd2, 0x39, 0x53, 0x9e, 0x61, 0x80, 0x6a, 0xcb, 0x48, 0xe5,
+  0x09, 0x7b, 0xaf, 0x6f, 0x48, 0x0a, 0x8e, 0xb8, 0x33, 0x28, 0x85, 0x37,
+  0xfa, 0x3b, 0x5c, 0x3d, 0x54, 0xc2, 0x8e, 0x53, 0x5d, 0xd2, 0x90, 0x09,
+  0x16, 0xab, 0xd0, 0xaa, 0x69, 0xb8, 0x1b, 0x5d, 0xb1, 0xb1, 0x16, 0x87,
+  0x98, 0xca, 0xc8, 0x14, 0xc6, 0xc3, 0x59, 0x28, 0xae, 0x36, 0x53, 0x84,
+  0xea, 0x93, 0x89, 0xd4, 0xce, 0xdb, 0xb1, 0x64, 0x51, 0x5c, 0xd7, 0x84,
+  0xe5, 0x5e, 0xf7, 0x8e, 0x08, 0xf4, 0x5c, 0xb8, 0x2d, 0x7e, 0x09, 0xdb,
+  0xf4, 0xba, 0xac, 0xdc, 0x19, 0x54, 0x80, 0x6f, 0x9b, 0xcf, 0x60, 0xf9,
+  0xd4, 0x3c, 0xda, 0xce, 0xcb, 0xcd, 0x2e, 0x8b, 0x5e, 0x48, 0x6d, 0xe3,
+  0x20, 0xe3, 0x41, 0x3e, 0xba, 0xab, 0x71, 0xf6, 0xc7, 0x7b, 0x01, 0xce,
+  0x6e, 0x1e, 0x6d, 0x01, 0x94, 0x7a, 0xe3, 0x9f, 0x67, 0xb1, 0x26, 0x0a,
+  0x23, 0xa4, 0x92, 0x6b, 0xb6, 0x84, 0x8c, 0x5e, 0xb1, 0xde, 0xde, 0x31,
+  0x98, 0x30, 0x16, 0x16, 0x83, 0x56, 0x2e, 0x49, 0x2e, 0x2c, 0xb6, 0x7a,
+  0xd1, 0xcb, 0x99, 0xc4, 0x77, 0x0b, 0xec, 0x8c, 0x04, 0x8b, 0x23, 0x65,
+  0x31, 0x94, 0x01, 0xf7, 0x16, 0x20, 0xd4, 0x52, 0x32, 0xe4, 0xb2, 0x6b,
+  0x2a, 0xf6, 0x35, 0xca, 0x87, 0xb6, 0x28, 0x89, 0x01, 0x8a, 0x13, 0x94,
+  0x01, 0xfd, 0x92, 0x68, 0xd8, 0x8f, 0x4e, 0x84, 0x85, 0x94, 0x10, 0x35,
+  0x2e, 0x06, 0x40, 0x4b, 0xab, 0xd0, 0x62, 0x38, 0xc5, 0x3b, 0x8e, 0x6b,
+  0x41, 0x3e, 0xbf, 0x65, 0x22, 0x22, 0x29, 0xab, 0x30, 0x64, 0x1b, 0x28,
+  0x2b, 0xa9, 0xb9, 0xe2, 0x08, 0x66, 0x02, 0xa0, 0x4d, 0xdc, 0x83, 0xf5,
+  0xb8, 0xc4, 0x40, 0xcc, 0x91, 0xfb, 0x8d, 0xfa, 0x24, 0x07, 0x4f, 0x88,
+  0xd3, 0xcb, 0xea, 0xef, 0xed, 0x85, 0x59, 0x80, 0x46, 0x8f, 0x57, 0x18,
+  0x72, 0x48, 0x71, 0xd4, 0x56, 0xd7, 0x13, 0xf2, 0x10, 0x37, 0x93, 0x5b,
+  0xf0, 0x86, 0x96, 0xd1, 0x2f, 0x95, 0xe0, 0x54, 0x1a, 0xc8, 0x0a, 0x58,
+  0x37, 0x58, 0xb3, 0x19, 0x26, 0xcf, 0xbb, 0xb8, 0x61, 0x30, 0x87, 0x06,
+  0xa2, 0xc2, 0x72, 0x7f, 0x6d, 0x9d, 0xd6, 0xa2, 0x8f, 0xeb, 0xaf, 0x6d,
+  0xd0, 0xfc, 0x43, 0x4e, 0xa3, 0x1d, 0xda, 0x5a, 0x92, 0x94, 0x39, 0x7d,
+  0x9e, 0x65, 0x37, 0x94, 0xe8, 0x4b, 0xb1, 0x22, 0xf0, 0x8e, 0x97, 0x49,
+  0xc0, 0x2d, 0xb4, 0xbb, 0x12, 0x4d, 0x37, 0xe1, 0x43, 0x4a, 0x92, 0xd8,
+  0x38, 0x29, 0x2b, 0x03, 0x13, 0xa9, 0xd4, 0xc6, 0x76, 0xb5, 0xe6, 0x99,
+  0x35, 0x69, 0x93, 0xfe, 0x7d, 0x43, 0x62, 0x40, 0xae, 0xb9, 0x0b, 0xee,
+  0x9d, 0xb7, 0x28, 0x4d, 0xb0, 0x09, 0x27, 0xbf, 0x8e, 0xd2, 0x64, 0xa2,
+  0x41, 0x21, 0x38, 0x36, 0xbf, 0xee, 0x0f, 0x8b, 0x61, 0xa5, 0x7f, 0xc8,
+  0x19, 0x25, 0x64, 0x56, 0x2b, 0x3a, 0xe5, 0x1f, 0xe9, 0x66, 0x79, 0x8d,
+  0x75, 0x0e, 0x38, 0x47, 0x59, 0x69, 0xdc, 0x29, 0x9d, 0xea, 0x50, 0x19,
+  0x21, 0xe7, 0x90, 0x9b, 0x53, 0x2e, 0x87, 0x9c, 0x96, 0x88, 0x8e, 0x38,
+  0x09, 0x38, 0x92, 0x2e, 0xca, 0x44, 0x83, 0xb6, 0x97, 0xa6, 0xed, 0x88,
+  0x56, 0xbc, 0xe2, 0x43, 0x21, 0x85, 0x58, 0x44, 0x16, 0x5a, 0x7e, 0x74,
+  0xa7, 0x29, 0x9c, 0xa8, 0x91, 0xde, 0x84, 0x44, 0x8c, 0x65, 0x32, 0x4e,
+  0xd5, 0x7c, 0x23, 0x12, 0x66, 0x3e, 0x84, 0x95, 0x63, 0xf0, 0x37, 0xfa,
+  0x0c, 0xad, 0xa3, 0x9e, 0xda, 0xce, 0x92, 0x1d, 0x6e, 0xa1, 0x51, 0x74,
+  0x90, 0xef, 0x8a, 0x48, 0x58, 0x4e, 0xb2, 0xb9, 0xc6, 0xf6, 0x76, 0xa3,
+  0x54, 0x20, 0x03, 0x80, 0x42, 0x79, 0x37, 0x16, 0xb1, 0x2f, 0xaf, 0x9a,
+  0x44, 0x5b, 0xae, 0xf2, 0x74, 0x8d, 0x6e, 0xe3, 0x51, 0xb4, 0xd9, 0x68,
+  0xfd, 0xd1, 0xce, 0x2e, 0x8d, 0xf6, 0xd1, 0xce, 0xd3, 0xad, 0x95, 0x97,
+  0xf1, 0x47, 0x86, 0x2c, 0xa7, 0x93, 0xf3, 0x80, 0x03, 0xbf, 0x6e, 0x3c,
+  0x4e, 0xf3, 0x5a, 0x6d, 0x3b, 0xed, 0x6e, 0x8e, 0x69, 0xf0, 0x98, 0x87,
+  0xf8, 0x14, 0x7e, 0x33, 0x29, 0xd3, 0x98, 0xa0, 0x39, 0xee, 0x81, 0x92,
+  0x4d, 0x86, 0x7b, 0x7c, 0x43, 0xc0, 0x3c, 0x14, 0x14, 0x9b, 0x64, 0x65,
+  0x78, 0x3e, 0xa2, 0xba, 0x55, 0xe5, 0x15, 0x96, 0x83, 0xf7, 0x94, 0x36,
+  0x7c, 0x4d, 0xde, 0xa3, 0xb8, 0x6d, 0x4a, 0xb8, 0x61, 0xa2, 0x4a, 0xe8,
+  0x65, 0x06, 0x5e, 0x16, 0x9a, 0xa1, 0xe7, 0x8c, 0x05, 0xb7, 0x1d, 0xec,
+  0x54, 0xb0, 0x48, 0x39, 0xdf, 0x8a, 0xbc, 0xed, 0x77, 0xc6, 0x80, 0xab,
+  0x42, 0x64, 0xf4, 0x3c, 0x9b, 0x65, 0xe5, 0x15, 0x5a, 0xa4, 0xa6, 0x98,
+  0x62, 0x74, 0xe9, 0x29, 0x70, 0xe4, 0x5e, 0x94, 0xab, 0x25, 0x89, 0x80,
+  0x52, 0xf1, 0x0c, 0x00, 0x0b, 0x62, 0x12, 0x15, 0x2c, 0x43, 0xfe, 0x92,
+  0x6b, 0x1f, 0xdb, 0x69, 0x06, 0xab, 0x4a, 0x66, 0xb4, 0x66, 0x08, 0x27,
+  0x3d, 0xb9, 0x13, 0x7c, 0x00, 0xdc, 0x6c, 0x64, 0x14, 0x16, 0x33, 0xee,
+  0x75, 0xbf, 0x4f, 0xe4, 0xdb, 0x67, 0xff, 0xfd, 0x05, 0x8a, 0xc7, 0xde,
+  0x3c, 0x31, 0x30, 0x6a, 0x13, 0xf7, 0xfa, 0xac, 0x0f, 0xec, 0x99, 0x64,
+  0x18, 0x34, 0xae, 0x15, 0x04, 0x72, 0x02, 0x9f, 0xfd, 0x88, 0xe1, 0xb3,
+  0x5f, 0x99, 0x8f, 0xb7, 0xa8, 0xf8, 0x0f, 0xa2, 0x2f, 0xad, 0x38, 0x10,
+  0x66, 0xdb, 0x3f, 0x41, 0xf1, 0x0f, 0xa7, 0xf5, 0xf5, 0x8f, 0x88, 0x1d,
+  0xd8, 0x7a, 0xa6, 0x85, 0x6a, 0x38, 0x8f, 0xf1, 0x2a, 0x42, 0x10, 0xed,
+  0xba, 0x5d, 0xa1, 0x29, 0x7d, 0x22, 0xb6, 0x52, 0x1a, 0xaa, 0xd6, 0x64,
+  0xb0, 0x4c, 0x6b, 0x44, 0x4f, 0xf0, 0x4e, 0xb0, 0x03, 0x14, 0xe6, 0x82,
+  0x6a, 0x11, 0x2f, 0x18, 0x8e, 0xd0, 0xe2, 0x0e, 0x95, 0x01, 0xbd, 0x9b,
+  0x0b, 0x7f, 0xb0, 0x43, 0x01, 0x77, 0xa5, 0x04, 0x1d, 0xfc, 0x8a, 0x7b,
+  0x66, 0xfc, 0x34, 0x13, 0x2f, 0x03, 0x04, 0x36, 0x44, 0x6c, 0xa8, 0x56,
+  0x9c, 0x4c, 0x32, 0x5b, 0x3a, 0x03, 0xff, 0x8c, 0x31, 0x87, 0xee, 0x28,
+  0xe2, 0xe7, 0xd1, 0x06, 0x4d, 0xff, 0x67, 0x03, 0x97, 0xb2, 0x21, 0x1f,
+  0x4e, 0xd2, 0xaf, 0xbf, 0x45, 0xa0, 0x90, 0x0e, 0xaa, 0xee, 0x1b, 0xeb,
+  0xed, 0xa5, 0x05, 0xb8, 0x72, 0xf7, 0xf1, 0xcb, 0xdd, 0xc0, 0x3e, 0x4a,
+  0xb4, 0x0a, 0x79, 0x24, 0xbf, 0xe6, 0x3f, 0x5a, 0x90, 0xc9, 0xa8, 0xce,
+  0xc5, 0xcb, 0x57, 0x47, 0xb0, 0xc1, 0x7d, 0x0b, 0x75, 0x2a, 0xd8, 0x27,
+  0x8c, 0x60, 0x6a, 0xdd, 0x36, 0x6c, 0x35, 0xe3, 0xf6, 0x5a, 0xe4, 0x54,
+  0x86, 0x01, 0xaa, 0xe1, 0xe8, 0x93, 0x21, 0x69, 0x92, 0x55, 0xb8, 0x1b,
+  0xa0, 0x9c, 0x45, 0xa7, 0xb0, 0xbd, 0x38, 0xba, 0x8d, 0x6f, 0x37, 0x24,
+  0x3e, 0x7d, 0xe3, 0xb0, 0x89, 0x17, 0x64, 0x20, 0x76, 0x4a, 0xe3, 0x38,
+  0x89, 0x36, 0xfe, 0x84, 0x20, 0x61, 0x58, 0x05, 0x91, 0x67, 0x27, 0xfc,
+  0x82, 0x07, 0x45, 0x09, 0x95, 0x70, 0x3a, 0xe5, 0x1a, 0x6d, 0x3a, 0x26,
+  0xb9, 0x62, 0x7d, 0x1d, 0x14, 0x82, 0x0b, 0x96, 0xa5, 0x14, 0xe1, 0x64,
+  0xa6, 0xac, 0x76, 0xa4, 0x8d, 0x92, 0xd1, 0x3d, 0xc9, 0xfd, 0xe9, 0x17,
+  0x15, 0xa4, 0x9c, 0x75, 0xeb, 0xce, 0xe2, 0x01, 0xf1, 0x48, 0x28, 0xd6,
+  0x76, 0x38, 0xa4, 0x9a, 0x01, 0x74, 0x07, 0xc1, 0x97, 0x97, 0x97, 0x8c,
+  0x05, 0x4d, 0x73, 0xce, 0x9b, 0xda, 0x13, 0x4c, 0x3f, 0x1a, 0x83, 0x02,
+  0x46, 0x86, 0x0e, 0x34, 0x30, 0x2c, 0x83, 0x32, 0x73, 0xf7, 0xf7, 0xd3,
+  0xe1, 0x26, 0xbb, 0xbd, 0x74, 0xf0, 0x2e, 0xe9, 0x3c, 0x94, 0x56, 0x2d,
+  0x69, 0x5a, 0x4c, 0x9d, 0x43, 0x17, 0x02, 0x34, 0x4c, 0x98, 0x0e, 0x5d,
+  0xa2, 0x57, 0x91, 0x3e, 0x33, 0x51, 0x3f, 0xe3, 0x04, 0x28, 0xf5, 0x4e,
+  0xd2, 0x6a, 0x27, 0x08, 0xd7, 0x28, 0x0a, 0x54, 0x3a, 0xf5, 0xc4, 0xa6,
+  0x09, 0x05, 0x9c, 0x25, 0x0a, 0x76, 0x17, 0xa3, 0x85, 0x9c, 0x06, 0x81,
+  0x6b, 0xc4, 0xf2, 0xa8, 0xc5, 0xc7, 0x13, 0xd4, 0xbb, 0x91, 0x83, 0x7a,
+  0xd7, 0xdc, 0x7a, 0x17, 0x03, 0x4f, 0x2c, 0x38, 0xca, 0x12, 0x09, 0xbf,
+  0x4f, 0x80, 0xdf, 0x16, 0xa5, 0x15, 0x01, 0x5c, 0x10, 0xef, 0x26, 0x61,
+  0x2a, 0xd3, 0xdc, 0xa6, 0x15, 0x67, 0xac, 0xc1, 0x66, 0x89, 0x8c, 0xbd,
+  0xfd, 0x2f, 0xbf, 0x0c, 0xfa, 0x5a, 0xb9, 0x48, 0x0d, 0xec, 0x30, 0x2e,
+  0x94, 0x57, 0x19, 0x89, 0x4d, 0x37, 0x44, 0xfb, 0xa5, 0x3a, 0x19, 0xb1,
+  0xd2, 0x70, 0x82, 0xbd, 0xfa, 0x81, 0x05, 0xc4, 0xba, 0xa7, 0x24, 0x12,
+  0xb2, 0x34, 0x40, 0x56, 0x27, 0xbc, 0x7d, 0x61, 0x15, 0xc2, 0x17, 0x7a,
+  0x2a, 0x88, 0x30, 0x0c, 0x7e, 0x24, 0xd5, 0xed, 0x05, 0xaf, 0x8e, 0xd9,
+  0x7c, 0x5a, 0x0d, 0x09, 0xb2, 0x8e, 0x60, 0x00, 0x64, 0x39, 0x36, 0x5a,
+  0x70, 0xd0, 0x37, 0x22, 0x4d, 0x56, 0x1b, 0x68, 0x25, 0x99, 0x2e, 0x1d,
+  0xd2, 0xec, 0xb6, 0x51, 0x5e, 0x93, 0xd1, 0xe1, 0x66, 0xd1, 0xb7, 0x84,
+  0xce, 0x89, 0x1d, 0x34, 0x9a, 0xa3, 0xb2, 0x07, 0x97, 0x69, 0xe5, 0x23,
+  0xc5, 0x3a, 0x88, 0x61, 0x4b, 0x1a, 0x0f, 0x99, 0x8a, 0x05, 0xe9, 0x36,
+  0x3a, 0x34, 0x55, 0x70, 0xb3, 0xb1, 0xf2, 0x0f, 0x54, 0xc2, 0x6e, 0xd0,
+  0x7f, 0xf1, 0x2d, 0x6d, 0xc7, 0xa1, 0xac, 0xbd, 0x20, 0x3f, 0x7f, 0x1b,
+  0xac, 0x89, 0x2d, 0xb0, 0x65, 0x54, 0x9f, 0xb9, 0xaa, 0x92, 0xe1, 0x95,
+  0x15, 0x81, 0x08, 0x79, 0x8e, 0xca, 0xb4, 0x8a, 0x2f, 0x9b, 0x17, 0x98,
+  0x71, 0x8f, 0xbc, 0xfc, 0x58, 0x42, 0x85, 0x36, 0x8d, 0x22, 0xf8, 0x8d,
+  0x80, 0xfe, 0xe1, 0x50, 0x42, 0x2b, 0x51, 0x0a, 0xb7, 0x46, 0xee, 0x05,
+  0x4f, 0x7b, 0xf7, 0x33, 0xbe, 0xeb, 0xac, 0x93, 0xbf, 0xf7, 0x6e, 0x0a,
+  0x8e, 0xd4, 0x66, 0xe4, 0x25, 0xb6, 0x60, 0x71, 0xee, 0x3d, 0x9e, 0x98,
+  0xd8, 0x83, 0x60, 0x99, 0xaf, 0x18, 0xa7, 0x6a, 0x6b, 0x17, 0x10, 0x65,
+  0x5d, 0xa2, 0xf1, 0x14, 0x47, 0x49, 0x55, 0x19, 0x75, 0x55, 0x31, 0x36,
+  0xae, 0x2a, 0x16, 0x58, 0x24, 0x87, 0x7d, 0x15, 0xd4, 0x95, 0x9f, 0xb9,
+  0x8f, 0x0c, 0xb1, 0x5b, 0x9f, 0x31, 0xe6, 0xc1, 0x2e, 0x68, 0xbf, 0x68,
+  0x95, 0xa5, 0x80, 0x3c, 0x1b, 0xbe, 0x61, 0x60, 0x06, 0x3e, 0xc1, 0xb7,
+  0xf6, 0x88, 0x17, 0x80, 0xdc, 0x6a, 0x65, 0xf6, 0x1b, 0x6b, 0x82, 0x82,
+  0x8d, 0xa5, 0xd1, 0x31, 0xe4, 0xca, 0x4a, 0xd1, 0x07, 0xfd, 0x0c, 0x28,
+  0x6a, 0xc6, 0x22, 0x31, 0xd2, 0xdb, 0x46, 0xe9, 0x17, 0xa5, 0x4c, 0x74,
+  0x71, 0xf9, 0xae, 0x44, 0xcd, 0xb1, 0x48, 0x2f, 0x17, 0x78, 0xf5, 0x32,
+  0x16, 0x2e, 0x28, 0x8e, 0x57, 0xbc, 0xfd, 0x72, 0x9b, 0x66, 0x73, 0xcd,
+  0xce, 0xf5, 0x20, 0x1b, 0xe0, 0xad, 0x2d, 0x9e, 0xf3, 0x0c, 0x96, 0xab,
+  0x5a, 0xcc, 0x38, 0x10, 0x96, 0x4a, 0x86, 0x2e, 0x06, 0xbf, 0x52, 0xd0,
+  0x51, 0x2e, 0x53, 0x67, 0x18, 0x5d, 0x8b, 0xb5, 0x98, 0x8e, 0x3d, 0xaf,
+  0x43, 0x4a, 0x59, 0xff, 0xe4, 0x93, 0x4e, 0x28, 0x39, 0x58, 0x18, 0x00,
+  0xd7, 0xf2, 0xc1, 0xbb, 0xe5, 0x4f, 0x4e, 0x50, 0x30, 0x09, 0xfd, 0xb4,
+  0x26, 0x14, 0x3a, 0xe6, 0x9d, 0xea, 0xf7, 0xb3, 0xfc, 0x66, 0xa6, 0x5a,
+  0x88, 0xc0, 0xb7, 0xb0, 0x9d, 0x9f, 0x44, 0x59, 0xcc, 0x00, 0xc4, 0xa9,
+  0x2a, 0xd0, 0x1f, 0xb9, 0xb0, 0x61, 0xde, 0x04, 0xb8, 0x08, 0xfb, 0x75,
+  0x17, 0x42, 0x3f, 0x65, 0x45, 0xfe, 0x57, 0xe3, 0x07, 0x40, 0xd6, 0xd7,
+  0x2a, 0xac, 0x71, 0x5a, 0x2d, 0x26, 0xa9, 0x4e, 0x85, 0xa1, 0xd5, 0xad,
+  0x1c, 0x5d, 0xd1, 0xb4, 0x36, 0x80, 0x77, 0xe2, 0xda, 0x6f, 0x84, 0xab,
+  0xab, 0x33, 0xaa, 0xa2, 0x71, 0x7f, 0x10, 0xab, 0xe6, 0x63, 0x82, 0x2e,
+  0x5e, 0xba, 0x43, 0x0c, 0x0f, 0x41, 0xd5, 0xa4, 0x48, 0x80, 0x63, 0xfe,
+  0x3a, 0xbf, 0x6c, 0xc2, 0x7b, 0x39, 0x07, 0x96, 0xea, 0xd9, 0x7a, 0x58,
+  0xe8, 0x72, 0xfd, 0x3e, 0x8f, 0x64, 0x3c, 0x5f, 0x7f, 0x5b, 0x6b, 0x2e,
+  0x70, 0x05, 0x6f, 0x4b, 0xa5, 0xb3, 0xe1, 0x65, 0xb6, 0x7c, 0x11, 0x28,
+  0xf0, 0xdb, 0x40, 0x58, 0x95, 0x57, 0x79, 0x2a, 0x3b, 0x37, 0x23, 0xbf,
+  0x80, 0x65, 0x1b, 0xa5, 0xe2, 0xff, 0x04, 0xd1, 0x7c, 0xda, 0x87, 0x4c,
+  0x77, 0xfa, 0x9f, 0xf3, 0xab, 0x19, 0xfe, 0x81, 0xed, 0x63, 0xf3, 0x5f,
+  0xef, 0x06, 0x93, 0xc6, 0xb6, 0x5b, 0xc7, 0xea, 0x0c, 0x16, 0x6f, 0x21,
+  0x01, 0x06, 0x72, 0x98, 0x5a, 0xcd, 0x15, 0xd2, 0x23, 0x48, 0xdd, 0x80,
+  0x59, 0x02, 0x0f, 0x0f, 0x95, 0x38, 0x76, 0x5e, 0x65, 0xc8, 0x91, 0x20,
+  0x2f, 0xcc, 0xcc, 0xc5, 0xc0, 0xd5, 0xec, 0x02, 0x2a, 0x4b, 0xfb, 0xc4,
+  0x3b, 0x18, 0xa8, 0x70, 0xf7, 0xf5, 0xe1, 0xd5, 0xe2, 0x92, 0xaa, 0xa6,
+  0x62, 0xbc, 0x42, 0xe7, 0x5e, 0xb3, 0x46, 0xa7, 0x0d, 0x7b, 0x6d, 0xd8,
+  0xfa, 0x55, 0x39, 0x39, 0xe1, 0x04, 0xf6, 0x57, 0x13, 0x1d, 0x22, 0x53,
+  0x76, 0x6b, 0x10, 0xae, 0x97, 0xb8, 0xc1, 0xf2, 0x71, 0x97, 0xd7, 0x4c,
+  0xea, 0xbc, 0xd8, 0x02, 0x06, 0x4b, 0x66, 0x70, 0x93, 0x0e, 0xbe, 0xfe,
+  0x16, 0x5d, 0x7d, 0xb7, 0xbd, 0xab, 0x6a, 0x3a, 0x61, 0x41, 0x1b, 0x57,
+  0x6e, 0x1b, 0xff, 0xec, 0x44, 0x4b, 0x64, 0x3e, 0x90, 0x66, 0x5b, 0x9b,
+  0x75, 0xb0, 0x50, 0x9d, 0x26, 0xc7, 0x79, 0xbe, 0xb4, 0x45, 0x75, 0x65,
+  0xd1, 0x9a, 0x38, 0x00, 0x2e, 0x0c, 0x6b, 0x62, 0xb3, 0x11, 0x98, 0x1e,
+  0xe8, 0x7e, 0xa9, 0x5d, 0x93, 0xa1, 0x72, 0x05, 0x14, 0xf7, 0xc6, 0xe6,
+  0x40, 0xbd, 0x69, 0xbe, 0xee, 0x2a, 0x64, 0x68, 0x56, 0x2e, 0x59, 0x1a,
+  0xd5, 0xd9, 0xa4, 0xc6, 0xe1, 0x9f, 0xcc, 0xeb, 0xf8, 0x0f, 0x9c, 0x62,
+  0xb8, 0xaa, 0x97, 0xce, 0x06, 0x03, 0x17, 0xf4, 0x9d, 0x6d, 0x8a, 0xd8,
+  0xd5, 0x68, 0xb7, 0x68, 0xa3, 0x8b, 0xca, 0x00, 0xe8, 0x35, 0x1b, 0x64,
+  0x43, 0xd5, 0xec, 0x8e, 0x7f, 0x2c, 0x72, 0xe1, 0x6d, 0xa3, 0xdc, 0x13,
+  0x67, 0x11, 0x77, 0x84, 0x1e, 0x28, 0x69, 0xf4, 0x2b, 0x07, 0xfe, 0x73,
+  0x87, 0x86, 0xde, 0xc5, 0xbf, 0x7e, 0xee, 0xd8, 0xd1, 0xff, 0x4c, 0x9b,
+  0xf3, 0xa7, 0x6c, 0xf6, 0x27, 0x9c, 0xc1, 0xcf, 0x9d, 0x87, 0xee, 0xb1,
+  0xe8, 0xb4, 0x4e, 0x2f, 0x4e, 0x27, 0xb5, 0x3e, 0x3a, 0x1b, 0x51, 0x3b,
+  0x30, 0xa8, 0x45, 0xe6, 0xcf, 0xc6, 0x4e, 0x75, 0x7a, 0x5e, 0x30, 0xbc,
+  0x5c, 0x64, 0x51, 0x48, 0x88, 0x80, 0x65, 0xb1, 0xcb, 0xd0, 0xa5, 0x32,
+  0x0c, 0x9e, 0x6d, 0xda, 0x3e, 0x81, 0x4b, 0x6c, 0xec, 0x0c, 0x24, 0xdd,
+  0x65, 0xb6, 0xe0, 0x27, 0x11, 0x92, 0x2e, 0x3c, 0xab, 0xef, 0x23, 0xff,
+  0xe2, 0x31, 0xaf, 0x7b, 0x17, 0xcd, 0x5f, 0xa1, 0x07, 0x83, 0x87, 0x40,
+  0x04, 0x8b, 0xb2, 0xab, 0x60, 0x25, 0x10, 0x2c, 0xd6, 0x8c, 0xa3, 0x8e,
+  0x45, 0x2d, 0x40, 0xd8, 0x8f, 0xcc, 0x96, 0x95, 0x28, 0x3d, 0x1e, 0x3b,
+  0xcd, 0x40, 0x82, 0x27, 0xff, 0xec, 0x84, 0xd5, 0xe4, 0x6d, 0x64, 0xff,
+  0x04, 0xf0, 0x53, 0xce, 0x13, 0x74, 0xfb, 0xa0, 0x4d, 0x4b, 0x34, 0x68,
+  0x9e, 0x26, 0xaf, 0xcd, 0x12, 0x1a, 0xde, 0xc0, 0x26, 0x8b, 0xf2, 0xeb,
+  0x0e, 0x08, 0x3f, 0x7f, 0x42, 0x5f, 0x5f, 0x3a, 0xfb, 0x13, 0x10, 0xd2,
+  0x02, 0xb6, 0xca, 0x9e, 0xca, 0xdb, 0x78, 0x7a, 0x07, 0x03, 0xdf, 0x58,
+  0x75, 0x32, 0x85, 0x5f, 0x8d, 0xb0, 0xb2, 0x36, 0xc7, 0x8f, 0x36, 0x93,
+  0x30, 0xf8, 0x5c, 0x3a, 0x27, 0x4e, 0xbe, 0xff, 0xba, 0x69, 0x5e, 0x24,
+  0xf8, 0x64, 0x0f, 0xb1, 0xd3, 0xb2, 0x55, 0xd2, 0xbf, 0xbe, 0x3e, 0xfb,
+  0xcb, 0x9f, 0xb4, 0x81, 0x9f, 0x3b, 0x3f, 0xc6, 0xfc, 0x29, 0xe1, 0x85,
+  0x1f, 0x44, 0x67, 0x7f, 0x59, 0x9f, 0x72, 0x97, 0x75, 0xf0, 0x2d, 0xff,
+  0x42, 0x64, 0xbc, 0xac, 0x59, 0x94, 0xff, 0xf5, 0x9d, 0xe8, 0x7d, 0x7a,
+  0x47, 0xb0, 0x8a, 0xa4, 0xf8, 0xcf, 0xe7, 0x88, 0x40, 0xa9, 0x08, 0xd9,
+  0x15, 0x23, 0x64, 0x93, 0x91, 0x23, 0x19, 0xe4, 0x8c, 0xf9, 0x54, 0x79,
+  0x71, 0xd3, 0xf0, 0x15, 0x86, 0x32, 0xfd, 0x43, 0x88, 0x89, 0x33, 0xb2,
+  0x7a, 0x12, 0x8f, 0x53, 0xcf, 0x55, 0xa9, 0x83, 0x1e, 0x77, 0xa3, 0x13,
+  0x8c, 0xef, 0xf3, 0xd6, 0x55, 0x2b, 0x75, 0xf1, 0x6f, 0x24, 0x6c, 0x51,
+  0x29, 0x32, 0xd4, 0x9b, 0x36, 0x7e, 0xb7, 0x41, 0x6d, 0xa1, 0x75, 0x80,
+  0x2e, 0x40, 0x72, 0xf3, 0x73, 0xe2, 0xc3, 0x9f, 0x42, 0x61, 0x0f, 0x12,
+  0x5b, 0x26, 0xc6, 0x86, 0x71, 0x3e, 0x19, 0x49, 0x04, 0x06, 0x50, 0x39,
+  0x6f, 0xb0, 0x6a, 0x3f, 0x28, 0x48, 0xe0, 0x52, 0x48, 0x54, 0x86, 0x74,
+  0x1b, 0x90, 0x7e, 0x24, 0x16, 0x8c, 0x4d, 0xd5, 0x36, 0xb0, 0x37, 0x89,
+  0x98, 0xc8, 0xff, 0x84, 0x9a, 0xfc, 0x20, 0x25, 0x23, 0x97, 0xc1, 0x72,
+  0x8e, 0xc5, 0xc7, 0xd4, 0x5c, 0x3b, 0x5c, 0x5b, 0x73, 0x46, 0xf4, 0x90,
+  0x70, 0x2e, 0x8d, 0xe2, 0x39, 0x63, 0x79, 0xc7, 0x17, 0xe4, 0xa6, 0x61,
+  0xc7, 0xac, 0x26, 0x39, 0xe1, 0xdd, 0x11, 0x9e, 0xac, 0x09, 0x4b, 0xc6,
+  0x15, 0xf2, 0x4f, 0x56, 0xf4, 0x3b, 0xf1, 0x47, 0x39, 0xd1, 0xcb, 0x34,
+  0x7b, 0xd9, 0xac, 0x9e, 0xf7, 0xc2, 0x8f, 0x92, 0xf6, 0x12, 0xef, 0x1e,
+  0x18, 0xed, 0x3c, 0x91, 0xc7, 0xc3, 0xcd, 0xbb, 0xc5, 0x73, 0x64, 0x54,
+  0xd8, 0x23, 0x2d, 0xff, 0x92, 0xf6, 0xf7, 0x4c, 0xfb, 0x3e, 0x16, 0x6e,
+  0x32, 0xe3, 0x8a, 0x32, 0xe1, 0x6e, 0x2f, 0x6c, 0xce, 0xb1, 0x7a, 0x18,
+  0xac, 0x4d, 0xd7, 0x35, 0x0c, 0x88, 0x35, 0x55, 0x6a, 0xd9, 0x70, 0xa0,
+  0xab, 0x5f, 0x3e, 0xae, 0xa2, 0xd2, 0x18, 0xa4, 0xdb, 0xd1, 0x3c, 0x3c,
+  0x30, 0xea, 0x58, 0x04, 0x6b, 0x21, 0xac, 0x1c, 0xce, 0x22, 0xb0, 0xf8,
+  0x03, 0x8e, 0xb7, 0xb2, 0xb5, 0x37, 0x32, 0x17, 0x1e, 0xcb, 0x42, 0x6f,
+  0x07, 0xeb, 0x31, 0x2b, 0x00, 0x83, 0xe7, 0xd2, 0x45, 0xc6, 0xcb, 0x05,
+  0xb8, 0x48, 0xf1, 0x90, 0x93, 0xb0, 0xb9, 0x21, 0xa6, 0x12, 0xec, 0x28,
+  0x61, 0x77, 0xa7, 0x94, 0xe2, 0x4b, 0x08, 0x2c, 0x5c, 0x0c, 0x34, 0x71,
+  0x40, 0xa4, 0x38, 0x20, 0x68, 0x65, 0x73, 0x26, 0x9c, 0x02, 0x4b, 0xaa,
+  0x0c, 0x73, 0xa1, 0xba, 0x5a, 0x55, 0x25, 0x5f, 0xf3, 0x75, 0x96, 0x58,
+  0x1a, 0x63, 0x85, 0x93, 0x22, 0x85, 0xe5, 0x50, 0x6c, 0x7c, 0xbd, 0xb5,
+  0xd1, 0x5e, 0x28, 0xda, 0x88, 0xce, 0xf5, 0x7a, 0x4b, 0x6a, 0xfc, 0x2b,
+  0xa9, 0xe6, 0x04, 0x34, 0x4d, 0xc6, 0xa2, 0x29, 0x86, 0xad, 0xa6, 0xb4,
+  0x99, 0x94, 0x68, 0x56, 0x56, 0x21, 0x10, 0x40, 0xae, 0x07, 0x91, 0xcd,
+  0xe8, 0x64, 0x72, 0x85, 0x1c, 0x26, 0x6f, 0x37, 0xa2, 0x81, 0x4b, 0xfb,
+  0x96, 0x07, 0xae, 0x9c, 0xed, 0x5b, 0xfb, 0xd1, 0x1b, 0xdc, 0x8b, 0x5e,
+  0x1a, 0x1b, 0x87, 0x63, 0xa2, 0x58, 0x26, 0x53, 0x6f, 0x7c, 0xbd, 0xc9,
+  0x77, 0x93, 0x35, 0x90, 0x39, 0x7d, 0x6f, 0x44, 0x3f, 0x07, 0x81, 0x9e,
+  0xe9, 0x45, 0x67, 0x38, 0x42, 0xaf, 0x4b, 0x1f, 0x8f, 0x0e, 0xd1, 0xf9,
+  0xf7, 0x0d, 0x79, 0xad, 0xe5, 0xf9, 0xc3, 0x6d, 0xfa, 0xa8, 0x21, 0x05,
+  0x2f, 0x6d, 0x65, 0x8b, 0x0d, 0xfc, 0x5f, 0x7f, 0x8b, 0x8f, 0xab, 0x12,
+  0xb0, 0x11, 0xf5, 0x7a, 0xc0, 0x7a, 0xca, 0x69, 0x13, 0x5c, 0xce, 0x03,
+  0xf1, 0x23, 0xd9, 0x80, 0x2e, 0x56, 0x14, 0x43, 0xa4, 0xc0, 0x0b, 0x19,
+  0x69, 0x54, 0x61, 0x66, 0x7b, 0x22, 0x7f, 0x55, 0x7c, 0xdd, 0x8b, 0x8e,
+  0x4c, 0x8e, 0x8d, 0x0f, 0xe3, 0xca, 0xde, 0x12, 0xbe, 0x31, 0xc4, 0x1a,
+  0x87, 0x94, 0xf0, 0xe5, 0x20, 0x13, 0x5b, 0x3e, 0x43, 0xda, 0x53, 0x54,
+  0x7a, 0x3a, 0x29, 0xa5, 0x96, 0x03, 0x5c, 0xe9, 0xe2, 0x22, 0xf4, 0x9a,
+  0x2b, 0xd8, 0xc3, 0xcc, 0xc1, 0x23, 0x46, 0x25, 0x91, 0xa1, 0xc5, 0x27,
+  0xe2, 0x9e, 0xb1, 0x81, 0xed, 0x4f, 0x4d, 0x4f, 0xe8, 0xe4, 0xf3, 0x10,
+  0x3d, 0xa8, 0xcc, 0x71, 0xf4, 0x65, 0x8c, 0x4f, 0x59, 0x43, 0xbf, 0x52,
+  0x7b, 0x3d, 0x46, 0xb5, 0x2b, 0x92, 0x5f, 0x4c, 0xd9, 0x4d, 0x01, 0x74,
+  0x38, 0xe2, 0xff, 0x83, 0xa4, 0x4c, 0x9f, 0x3c, 0xd2, 0xc8, 0x43, 0x5e,
+  0xa5, 0x52, 0x65, 0xae, 0x9a, 0x3d, 0x95, 0x6f, 0x1f, 0x67, 0x42, 0x4d,
+  0x09, 0x8c, 0x40, 0xa9, 0x51, 0xfc, 0x02, 0xbd, 0xa9, 0x62, 0x70, 0x06,
+  0xbc, 0x43, 0x41, 0x54, 0xbc, 0xac, 0x08, 0x18, 0xf1, 0xe9, 0x13, 0x67,
+  0xd0, 0x2b, 0x2c, 0x0f, 0x0d, 0xfe, 0x29, 0x33, 0x6c, 0xce, 0x28, 0x62,
+  0x6a, 0x45, 0xf2, 0xf3, 0x62, 0x08, 0xd0, 0x6c, 0xc1, 0x75, 0xda, 0x64,
+  0x8e, 0xc6, 0x56, 0xb8, 0xea, 0x00, 0xb9, 0x27, 0xe0, 0x4f, 0x4a, 0x38,
+  0xcd, 0xae, 0x97, 0x12, 0xb5, 0xa3, 0xf5, 0xe8, 0xfb, 0x3c, 0x08, 0x26,
+  0xec, 0xd5, 0x74, 0x8d, 0xfe, 0x80, 0xf1, 0xa2, 0xa0, 0x3b, 0x47, 0x1e,
+  0x63, 0xd1, 0x60, 0x94, 0x32, 0xc0, 0xa0, 0x48, 0xe2, 0xaf, 0x8e, 0x5e,
+  0xbf, 0x3d, 0x3a, 0x6d, 0x71, 0x76, 0x7c, 0x62, 0x2f, 0x47, 0xbd, 0xa6,
+  0x81, 0x7c, 0x64, 0x1d, 0x75, 0x78, 0x3d, 0x74, 0xd6, 0xc5, 0xbd, 0x31,
+  0x35, 0x2d, 0xba, 0x0d, 0x57, 0x8a, 0xc4, 0x04, 0x5a, 0x5f, 0xa1, 0x89,
+  0x5c, 0x08, 0x16, 0x42, 0x6f, 0x47, 0xcb, 0x6e, 0x54, 0x26, 0xaa, 0xd5,
+  0x27, 0xa0, 0x92, 0x04, 0x3e, 0xaa, 0x79, 0xb8, 0x40, 0x01, 0x82, 0x56,
+  0xe2, 0x01, 0xc1, 0x78, 0xde, 0x70, 0x05, 0x23, 0xce, 0xc1, 0x96, 0x08,
+  0x21, 0x27, 0x7b, 0x39, 0x29, 0xdf, 0xb3, 0xf1, 0xa4, 0xa3, 0xef, 0xb3,
+  0x9f, 0x88, 0xe1, 0x62, 0x0c, 0x62, 0x7a, 0xe0, 0xb8, 0x1a, 0x20, 0x72,
+  0x13, 0xf6, 0xaf, 0x4e, 0x5b, 0xb9, 0x8e, 0x6b, 0x06, 0xc1, 0x7c, 0x3c,
+  0x76, 0xbc, 0x29, 0x4d, 0x14, 0x94, 0xe3, 0xe3, 0x76, 0x0c, 0x68, 0xce,
+  0x19, 0x70, 0x67, 0xf8, 0xd9, 0xb2, 0x9f, 0xdc, 0x41, 0x74, 0xa6, 0x45,
+  0xaf, 0xc8, 0x07, 0x79, 0xd5, 0x59, 0x0b, 0x76, 0xd4, 0xe0, 0xaf, 0x7b,
+  0xdb, 0x67, 0x2f, 0xc6, 0xb8, 0xca, 0x19, 0xbe, 0xfe, 0x50, 0xd6, 0x24,
+  0xbc, 0x9b, 0x58, 0xe0, 0xc7, 0x01, 0xee, 0x57, 0xcd, 0x80, 0x30, 0x23,
+  0xfb, 0x27, 0x6f, 0x68, 0x93, 0xce, 0x8f, 0xfa, 0xfd, 0xc8, 0xa0, 0xa2,
+  0x4b, 0x88, 0x67, 0xd7, 0xd3, 0x57, 0x49, 0xfa, 0xa6, 0xe0, 0x0e, 0xdd,
+  0x05, 0xcd, 0x23, 0x88, 0xb4, 0x52, 0x39, 0xed, 0x1c, 0x1c, 0x8b, 0x8b,
+  0xc5, 0x14, 0x38, 0x0e, 0x28, 0x0a, 0xa3, 0x8d, 0x52, 0xa2, 0x3b, 0x9a,
+  0x12, 0x28, 0xd5, 0x1b, 0x67, 0x01, 0x94, 0x68, 0x8c, 0xc0, 0x25, 0x9e,
+  0x23, 0xfe, 0x86, 0x50, 0x00, 0x5e, 0x93, 0x1c, 0x0f, 0xe3, 0x02, 0x4a,
+  0x74, 0xc3, 0x8e, 0x85, 0x4e, 0xff, 0xe5, 0xc5, 0x09, 0xd0, 0xc8, 0xdb,
+  0x8b, 0x17, 0x1d, 0xd9, 0xbe, 0x66, 0x49, 0x0d, 0x72, 0x60, 0xc0, 0xd9,
+  0x4c, 0xaf, 0x0d, 0x64, 0x72, 0xc1, 0xc6, 0x25, 0x3f, 0xa4, 0x8c, 0xae,
+  0x0e, 0xdb, 0x69, 0x4b, 0x34, 0x42, 0xcb, 0x86, 0xdc, 0x83, 0xf0, 0xbc,
+  0xb5, 0xad, 0x3e, 0x42, 0x9a, 0x4a, 0xdb, 0x78, 0x3a, 0x6f, 0x1f, 0xef,
+  0x17, 0x01, 0x02, 0x5c, 0x12, 0x4a, 0xe2, 0xd2, 0x30, 0x71, 0x9d, 0x56,
+  0x8a, 0xe4, 0x34, 0xb3, 0x78, 0x04, 0x22, 0x7b, 0x80, 0xfe, 0xa0, 0x51,
+  0xa2, 0x42, 0x21, 0x13, 0xe1, 0x2a, 0xe8, 0xce, 0xc4, 0x9f, 0x6f, 0xdf,
+  0x9c, 0x6e, 0x73, 0x96, 0x88, 0x54, 0xcc, 0x21, 0x53, 0x6e, 0x42, 0xe4,
+  0xe9, 0x15, 0xa6, 0x34, 0x31, 0xf6, 0x36, 0xac, 0x28, 0xbd, 0xa5, 0xf4,
+  0xe7, 0x59, 0x2d, 0x11, 0x8e, 0x9d, 0xf4, 0x30, 0xe8, 0xa4, 0x18, 0x19,
+  0x28, 0x64, 0x5f, 0x85, 0xd0, 0xd4, 0x17, 0x4c, 0xf1, 0xa4, 0x10, 0xd0,
+  0xb7, 0x92, 0xf6, 0xea, 0x00, 0x54, 0xdb, 0x1c, 0x2a, 0xf5, 0x70, 0xd9,
+  0xf4, 0x96, 0x30, 0x4a, 0x04, 0x79, 0x4f, 0xd0, 0x5a, 0x93, 0x61, 0x5e,
+  0x6c, 0x0e, 0xc4, 0xb6, 0x22, 0x0a, 0xa9, 0xbe, 0x82, 0x4b, 0x23, 0xf4,
+  0x1e, 0x10, 0x85, 0x54, 0x6f, 0xfd, 0x21, 0xf4, 0xe4, 0x0e, 0x4e, 0x13,
+  0x9e, 0x7c, 0x4e, 0x56, 0xa4, 0x53, 0x90, 0x35, 0xc8, 0x82, 0xb7, 0x8d,
+  0x8f, 0x2c, 0xcb, 0x7f, 0x0a, 0x8d, 0x87, 0xfb, 0x92, 0x70, 0xcc, 0x43,
+  0xfe, 0x19, 0x66, 0x67, 0x24, 0x92, 0x16, 0xf9, 0x84, 0x6d, 0xe6, 0xf2,
+  0x06, 0x67, 0xa6, 0x31, 0x6e, 0x9a, 0xc1, 0xea, 0x49, 0xc8, 0xdb, 0x4f,
+  0x03, 0xc6, 0xcc, 0xb6, 0xa6, 0xeb, 0x10, 0x5a, 0xdb, 0xec, 0x6f, 0x19,
+  0xdf, 0xc2, 0x05, 0x79, 0xcf, 0xa9, 0xb5, 0x00, 0xb2, 0x9f, 0x53, 0xa7,
+  0x55, 0xd4, 0xae, 0x90, 0x2a, 0xe5, 0x9c, 0x3d, 0xdf, 0x8e, 0x40, 0x3b,
+  0x3b, 0xbc, 0x19, 0xb5, 0x54, 0xbe, 0x24, 0x3f, 0x00, 0x91, 0x38, 0x59,
+  0x46, 0x38, 0x0d, 0xfa, 0xf8, 0x87, 0x67, 0x91, 0x3d, 0x1f, 0x9a, 0xa9,
+  0xc2, 0x27, 0x44, 0x54, 0xb5, 0xb6, 0xda, 0x92, 0xa9, 0x4d, 0xb7, 0xea,
+  0x51, 0xfc, 0xc0, 0x28, 0x4d, 0xe7, 0xd1, 0x55, 0x06, 0x8d, 0x15, 0xc3,
+  0xab, 0x8c, 0xc0, 0xc9, 0x28, 0x02, 0x16, 0x03, 0x06, 0xa6, 0x14, 0xfe,
+  0x12, 0x40, 0x97, 0x33, 0x4e, 0x6c, 0x8c, 0xa6, 0xb3, 0xf1, 0xee, 0x57,
+  0xf9, 0x0d, 0x05, 0x2b, 0xec, 0x3e, 0xdd, 0xff, 0x12, 0xc4, 0xd6, 0xbb,
+  0x12, 0x89, 0xcf, 0xae, 0x16, 0x95, 0x7a, 0x0f, 0x55, 0x63, 0xb2, 0x5e,
+  0x5b, 0x17, 0x18, 0x69, 0xa0, 0xb5, 0xb0, 0x51, 0xaf, 0x26, 0xeb, 0xac,
+  0xc0, 0x97, 0xfb, 0x25, 0x8b, 0x60, 0xfd, 0x64, 0xad, 0x84, 0x1b, 0xd0,
+  0x12, 0x71, 0xa8, 0x75, 0xcf, 0x39, 0xae, 0xa0, 0xf4, 0x44, 0xfd, 0x97,
+  0xff, 0x7d, 0x02, 0x97, 0xc5, 0x9b, 0x93, 0x8b, 0x37, 0xf0, 0xa3, 0x7f,
+  0x71, 0xf6, 0xa6, 0xa5, 0xc4, 0x6b, 0xc5, 0x95, 0x48, 0x70, 0xbd, 0x34,
+  0xb8, 0x91, 0x79, 0x50, 0xad, 0x8c, 0x21, 0x25, 0x76, 0xf2, 0x85, 0x42,
+  0xd1, 0xb7, 0x2b, 0xd6, 0xea, 0xc2, 0x89, 0xca, 0xc0, 0x98, 0xbc, 0xa5,
+  0x13, 0xe3, 0xed, 0x5e, 0x4e, 0x1c, 0x34, 0x61, 0xa4, 0x43, 0x9c, 0xb1,
+  0xb9, 0xc2, 0x69, 0xb4, 0x15, 0x50, 0x2c, 0x5c, 0x20, 0xca, 0x73, 0xee,
+  0x4c, 0xfa, 0x79, 0x4b, 0x59, 0x54, 0xce, 0xcb, 0x2b, 0xb9, 0x40, 0x2a,
+  0xd3, 0x34, 0x99, 0xad, 0x3b, 0x8a, 0xf6, 0xdf, 0x89, 0x36, 0xc9, 0x5d,
+  0x22, 0x22, 0xfb, 0x0a, 0xd2, 0x05, 0x35, 0x61, 0xcb, 0x4e, 0xb8, 0xcc,
+  0xa7, 0x29, 0xfb, 0xb3, 0x38, 0x33, 0x4f, 0x59, 0x31, 0x4b, 0x0d, 0x5c,
+  0xde, 0x3a, 0x0a, 0x95, 0xfc, 0x50, 0xc7, 0x16, 0xed, 0xf2, 0x86, 0x57,
+  0x29, 0x9d, 0xf7, 0x25, 0x9d, 0xc1, 0x21, 0xa3, 0x72, 0x85, 0x1b, 0x3a,
+  0xaa, 0x8d, 0x66, 0x85, 0x26, 0x87, 0x95, 0x7c, 0x82, 0x0a, 0x4d, 0x7e,
+  0xb5, 0x54, 0xa7, 0x3f, 0x1d, 0x53, 0x80, 0x45, 0xc2, 0xee, 0xec, 0xe2,
+  0x3f, 0x7b, 0xcc, 0x20, 0xdb, 0xdb, 0x60, 0x2a, 0xff, 0x80, 0x06, 0x0c,
+  0x35, 0xad, 0x6e, 0xc4, 0xaf, 0x1b, 0x35, 0xc1, 0x7b, 0x1e, 0x51, 0x45,
+  0x62, 0x54, 0xe7, 0x9b, 0x1c, 0x1a, 0xeb, 0x77, 0x04, 0xd9, 0x32, 0xc6,
+  0xda, 0xd5, 0xea, 0x85, 0x68, 0x8c, 0x20, 0x57, 0xb7, 0x13, 0xe9, 0x10,
+  0x83, 0xa9, 0xce, 0xb5, 0xe6, 0x44, 0x56, 0x86, 0x84, 0x7c, 0x02, 0x5e,
+  0xa4, 0x32, 0x34, 0x86, 0x3d, 0xc8, 0xa9, 0xe9, 0x0a, 0x52, 0x5e, 0xe3,
+  0x96, 0x6e, 0x54, 0x81, 0x68, 0xfa, 0x04, 0x60, 0xcb, 0x0b, 0xd8, 0x7d,
+  0x94, 0x2b, 0x8a, 0x14, 0x9a, 0x21, 0x4c, 0x40, 0x53, 0xb6, 0x44, 0xa0,
+  0x81, 0x9a, 0xe7, 0xf1, 0x4d, 0x4a, 0xf0, 0x3c, 0xa4, 0xc4, 0x45, 0xe9,
+  0x8c, 0x02, 0x9a, 0x46, 0x66, 0x7e, 0x58, 0x61, 0x0c, 0xc3, 0x99, 0x59,
+  0x1a, 0x19, 0xe5, 0x74, 0xfb, 0xe2, 0xd8, 0x30, 0x25, 0x9c, 0xbc, 0x43,
+  0x81, 0x68, 0x7e, 0x23, 0x41, 0x48, 0x73, 0xd6, 0x38, 0x31, 0xac, 0xdc,
+  0x11, 0xd1, 0x15, 0xee, 0x8b, 0x0c, 0xee, 0xd2, 0x4a, 0x90, 0x17, 0x25,
+  0x31, 0x19, 0x8e, 0x57, 0x71, 0xd1, 0x88, 0x7a, 0xf1, 0x0f, 0xa9, 0xd6,
+  0x11, 0x4a, 0x87, 0x9d, 0x49, 0x65, 0x8e, 0xc5, 0x6c, 0x82, 0x69, 0xb0,
+  0x8d, 0x12, 0x09, 0x12, 0x57, 0xb3, 0x52, 0x74, 0x41, 0x7a, 0xb8, 0x97,
+  0xcc, 0x12, 0xad, 0x97, 0xde, 0xd7, 0x56, 0x2a, 0xe6, 0x1e, 0x02, 0x0b,
+  0x0d, 0xe9, 0xc1, 0xf5, 0x59, 0x8c, 0x70, 0x55, 0x2f, 0xf3, 0xd0, 0x8e,
+  0x53, 0xfc, 0x5c, 0x32, 0xf5, 0x90, 0x60, 0x52, 0x45, 0x89, 0x53, 0xd2,
+  0xcd, 0x66, 0x19, 0x96, 0xb3, 0xca, 0x8b, 0x6d, 0x3c, 0x51, 0x58, 0x73,
+  0x34, 0x02, 0xd1, 0x45, 0x93, 0x70, 0x02, 0xa1, 0x71, 0xaa, 0x43, 0xd1,
+  0x52, 0x40, 0xd3, 0xbd, 0x00, 0x60, 0x0c, 0xcd, 0x15, 0xa5, 0x1c, 0xa9,
+  0xda, 0x41, 0x44, 0xd1, 0xe3, 0x35, 0x08, 0xed, 0xb3, 0x54, 0x24, 0xa8,
+  0x2b, 0x42, 0x72, 0x22, 0xc9, 0xdb, 0x69, 0x4c, 0x65, 0xa4, 0x6c, 0x6d,
+  0x94, 0xad, 0xc0, 0x6a, 0xb2, 0x06, 0xac, 0xd7, 0xc3, 0xaa, 0x74, 0x39,
+  0x44, 0xad, 0x7e, 0xf0, 0xc9, 0x54, 0x50, 0xef, 0x0c, 0x18, 0xec, 0x62,
+  0xee, 0x4b, 0x60, 0x2f, 0xcf, 0x6d, 0x93, 0x52, 0xce, 0x3b, 0xe7, 0x88,
+  0x72, 0xa4, 0x09, 0x67, 0x90, 0x08, 0xc6, 0x6f, 0x36, 0xc0, 0xca, 0x19,
+  0x1e, 0x82, 0x0c, 0xca, 0x68, 0x9e, 0xdc, 0xd5, 0x06, 0xbe, 0xae, 0xb7,
+  0x7f, 0xef, 0xb2, 0x17, 0x75, 0x10, 0x00, 0xbe, 0x43, 0x43, 0x15, 0xc8,
+  0x2d, 0x0e, 0xf4, 0x31, 0xef, 0xc2, 0xa2, 0xd4, 0x46, 0xeb, 0x57, 0xf6,
+  0x55, 0xbb, 0x01, 0x57, 0x5a, 0xa1, 0xfd, 0xd9, 0x7c, 0x3b, 0xcb, 0x6e,
+  0xc9, 0x2a, 0xea, 0x43, 0x02, 0x1a, 0x6c, 0xdd, 0x65, 0xa3, 0x52, 0x0c,
+  0x5b, 0x44, 0x07, 0xaf, 0x8d, 0x8e, 0xbc, 0x26, 0xb7, 0xb0, 0xff, 0x6e,
+  0x43, 0x01, 0x58, 0xca, 0xa8, 0xbd, 0x72, 0x3b, 0xf7, 0x30, 0xbd, 0xeb,
+  0xe1, 0x73, 0xbd, 0x51, 0x3e, 0x85, 0x13, 0xe8, 0xf5, 0x31, 0x25, 0x38,
+  0x13, 0x4f, 0x9a, 0x8f, 0x6d, 0x68, 0xa3, 0x4a, 0xae, 0xf3, 0x0c, 0xe9,
+  0x48, 0x73, 0x17, 0xed, 0xa8, 0xc4, 0xcf, 0x5f, 0x6a, 0x05, 0x73, 0x62,
+  0x2b, 0xe1, 0x11, 0xe9, 0x8d, 0x21, 0x68, 0x8f, 0xce, 0xa5, 0x61, 0xfa,
+  0x7f, 0xe6, 0x17, 0x3c, 0xa2, 0xc2, 0x60, 0xcd, 0x0a, 0x53, 0xb5, 0x07,
+  0x1d, 0x44, 0x02, 0xa9, 0xb6, 0x6c, 0x6e, 0x74, 0x2a, 0x91, 0x66, 0x60,
+  0x0d, 0x4c, 0x51, 0x66, 0x6d, 0x56, 0x43, 0x6f, 0x9a, 0x15, 0xc0, 0x4c,
+  0x65, 0x2e, 0xbe, 0x09, 0xb4, 0x39, 0x7c, 0xe7, 0x8f, 0x7f, 0xb4, 0x3c,
+  0xab, 0x16, 0xdb, 0x82, 0xce, 0x62, 0xe8, 0xa4, 0x73, 0xf0, 0x13, 0x39,
+  0x9d, 0x7e, 0x89, 0x7f, 0x82, 0x3f, 0x7f, 0xe9, 0xe8, 0xd9, 0xe3, 0x1a,
+  0x6e, 0x36, 0xe9, 0x9e, 0x57, 0x0f, 0x21, 0x58, 0xcc, 0x8d, 0xe6, 0x07,
+  0x0c, 0x5d, 0x1c, 0x9f, 0xcb, 0x99, 0x29, 0x38, 0x5a, 0x86, 0x66, 0x88,
+  0x3c, 0x83, 0x54, 0x23, 0xbc, 0x25, 0x08, 0x0e, 0x54, 0x76, 0x34, 0xa1,
+  0x67, 0xb5, 0x39, 0x7a, 0xa5, 0xab, 0x0e, 0x66, 0x14, 0xbd, 0xe9, 0xac,
+  0x26, 0xa0, 0x23, 0x5c, 0xa2, 0x0d, 0x97, 0xf1, 0xa1, 0x7b, 0xd1, 0x91,
+  0x2a, 0x23, 0xfc, 0x01, 0x95, 0x80, 0x2b, 0x09, 0x10, 0xf3, 0x06, 0x06,
+  0x64, 0x8c, 0x44, 0x78, 0xff, 0x91, 0xd8, 0x3d, 0xb3, 0xe0, 0x62, 0x58,
+  0xfa, 0x64, 0x86, 0xfa, 0x9e, 0xd6, 0x16, 0x2f, 0xb2, 0xf2, 0x3d, 0x4e,
+  0x52, 0xf0, 0x12, 0x9c, 0xe8, 0x42, 0x9a, 0xc5, 0x34, 0x31, 0x6b, 0x29,
+  0x15, 0x6d, 0x0c, 0xba, 0x58, 0x4d, 0xc6, 0x73, 0xf8, 0xf2, 0x9a, 0x49,
+  0x20, 0x8a, 0x98, 0xb0, 0xae, 0x8c, 0x77, 0x0e, 0x34, 0x4f, 0x77, 0x4a,
+  0x7b, 0xfd, 0xf9, 0x73, 0xae, 0x22, 0xb1, 0xf2, 0x29, 0x17, 0x98, 0xda,
+  0x7b, 0xf8, 0x8b, 0xb0, 0x25, 0x86, 0xee, 0x34, 0x01, 0x37, 0x0d, 0x96,
+  0x30, 0x93, 0xc7, 0x8a, 0x34, 0x5c, 0x21, 0xd1, 0x2d, 0x40, 0xa2, 0xf5,
+  0x47, 0x92, 0xe8, 0x1c, 0x54, 0x23, 0x43, 0xfd, 0x4e, 0xb9, 0x2e, 0xc6,
+  0x82, 0x43, 0x41, 0x62, 0xab, 0x69, 0x6b, 0x38, 0x4e, 0x0b, 0x72, 0x7f,
+  0x5b, 0xd3, 0x30, 0x61, 0x7e, 0x65, 0x98, 0xde, 0x35, 0x2a, 0x60, 0x0c,
+  0x18, 0xb7, 0x2c, 0x30, 0xee, 0x6a, 0x2b, 0xc4, 0xb0, 0x18, 0x55, 0x02,
+  0x3c, 0x6f, 0x93, 0x1c, 0x3d, 0xae, 0x4c, 0x64, 0xf4, 0x17, 0x82, 0xb5,
+  0x63, 0xb7, 0x56, 0x49, 0x64, 0x86, 0x3f, 0xe9, 0x0a, 0x41, 0x34, 0x87,
+  0x9b, 0x19, 0x5a, 0xb7, 0x4b, 0x5f, 0xf9, 0xa5, 0xc1, 0x4f, 0x43, 0x55,
+  0xce, 0x3d, 0xb9, 0x05, 0x56, 0xea, 0x53, 0xc9, 0x2d, 0x45, 0x5a, 0x3d,
+  0x48, 0x6e, 0xc1, 0x21, 0xad, 0x23, 0xb7, 0xd4, 0x05, 0x14, 0xf1, 0x36,
+  0x78, 0x82, 0x13, 0x7f, 0x56, 0xbe, 0xcf, 0xf8, 0x8b, 0x38, 0x9b, 0xaf,
+  0xae, 0x2b, 0xa7, 0xf5, 0xfd, 0xf0, 0x04, 0xd5, 0x58, 0xb9, 0xb9, 0xd4,
+  0xcb, 0xc5, 0xe5, 0x25, 0x15, 0x4d, 0xf0, 0x23, 0xb2, 0xab, 0xd2, 0x66,
+  0xc0, 0xe2, 0x1d, 0x8e, 0x09, 0x51, 0x25, 0x6f, 0x4d, 0xad, 0x26, 0x1d,
+  0x75, 0x26, 0x3c, 0xbe, 0x14, 0xb1, 0x09, 0x74, 0x05, 0x1f, 0x77, 0xc2,
+  0x68, 0x0e, 0xd1, 0x4b, 0x61, 0xd0, 0x56, 0xea, 0x2d, 0xd2, 0x58, 0x07,
+  0xda, 0xbc, 0x78, 0x70, 0x7b, 0xbc, 0xcc, 0x07, 0x73, 0x07, 0x95, 0x4b,
+  0xae, 0x1b, 0x1f, 0x87, 0x93, 0xd8, 0x14, 0xf5, 0xfa, 0xb4, 0xf7, 0xf4,
+  0x51, 0x6f, 0xa7, 0xa6, 0x7f, 0x98, 0xdc, 0x08, 0x0e, 0xe3, 0x63, 0xd1,
+  0x6f, 0x29, 0x5a, 0x88, 0x52, 0x1a, 0x63, 0x86, 0x66, 0x63, 0x29, 0xfe,
+  0xc9, 0xd5, 0x1b, 0x0b, 0x53, 0x0d, 0x8e, 0xe1, 0x39, 0xe5, 0x56, 0x6a,
+  0x0a, 0x3b, 0x63, 0x5a, 0xd2, 0x95, 0x84, 0xee, 0x6e, 0xfc, 0x47, 0x4e,
+  0xfc, 0x6f, 0xb4, 0xfe, 0x10, 0x9a, 0xaf, 0x8d, 0x6e, 0x2d, 0x99, 0xbd,
+  0x95, 0xd0, 0xcb, 0x49, 0x3c, 0x1c, 0x0e, 0x63, 0x12, 0x45, 0x0f, 0x59,
+  0x42, 0xde, 0x16, 0xf9, 0x34, 0x2c, 0xbb, 0xf7, 0x53, 0x21, 0xbf, 0xe3,
+  0xe3, 0x63, 0x11, 0xa5, 0x2f, 0xae, 0x1a, 0x32, 0xad, 0x29, 0xb2, 0x26,
+  0x02, 0x7d, 0x10, 0x71, 0xa5, 0xbc, 0x5a, 0x54, 0xc8, 0x9c, 0x58, 0x4f,
+  0x55, 0x61, 0xc2, 0x80, 0x82, 0x35, 0xaa, 0x4b, 0xe7, 0xb0, 0xa6, 0x5d,
+  0x1b, 0xa1, 0xef, 0x97, 0x40, 0x2c, 0x52, 0x46, 0xea, 0xe6, 0x17, 0xa5,
+  0x6d, 0x8b, 0xf3, 0xe8, 0xda, 0x2d, 0xdd, 0xf2, 0x7d, 0x3a, 0xc2, 0x32,
+  0xe0, 0xd0, 0x30, 0xad, 0x50, 0xb7, 0x49, 0x26, 0x01, 0xd1, 0x89, 0xf4,
+  0xd5, 0x6c, 0x7b, 0x25, 0x6d, 0xb9, 0x6b, 0xfd, 0xf1, 0x69, 0xcb, 0x69,
+  0xfd, 0x41, 0xb4, 0xe5, 0x8e, 0x4e, 0x56, 0xa8, 0xf6, 0x0d, 0x12, 0x5c,
+  0xb9, 0x1e, 0xc5, 0xc9, 0x9b, 0x2d, 0x44, 0xd7, 0x6a, 0x18, 0x41, 0xca,
+  0xda, 0x3c, 0xa6, 0x72, 0xd5, 0xc7, 0xc2, 0x02, 0x8f, 0xaf, 0x30, 0x62,
+  0x7b, 0x82, 0x68, 0xb1, 0xb0, 0x29, 0x18, 0xbe, 0x80, 0xfb, 0xc2, 0x6c,
+  0xb0, 0xdf, 0x3f, 0xdd, 0xbe, 0x38, 0xed, 0x7b, 0xb9, 0x6d, 0x77, 0xe8,
+  0x88, 0x25, 0x87, 0x6b, 0xdd, 0xa1, 0xc7, 0x44, 0x50, 0xa4, 0x8c, 0x04,
+  0x5b, 0xe3, 0x69, 0xdc, 0x4b, 0xb0, 0x6e, 0xc8, 0x62, 0xa6, 0xe9, 0xe3,
+  0xc6, 0xe5, 0x34, 0x4b, 0x67, 0x04, 0x54, 0x8b, 0x41, 0x74, 0xc4, 0xaf,
+  0x28, 0xf3, 0xa5, 0x8c, 0x5e, 0x1f, 0x5d, 0x60, 0x42, 0x78, 0x25, 0x71,
+  0x9f, 0x68, 0x01, 0xf7, 0x32, 0xef, 0xa4, 0x7e, 0xba, 0x29, 0x24, 0x9a,
+  0x0c, 0x15, 0x74, 0xd9, 0x1a, 0x7a, 0xa7, 0x02, 0x44, 0x23, 0x67, 0x6b,
+  0x05, 0x6a, 0x89, 0xb3, 0x53, 0xed, 0x09, 0xda, 0x1f, 0x4e, 0x60, 0x1f,
+  0x40, 0x5b, 0x41, 0x0a, 0x6a, 0x25, 0x20, 0x78, 0xc9, 0xb9, 0xa5, 0xc3,
+  0xe4, 0xed, 0x7c, 0xc7, 0x5b, 0x18, 0xa4, 0xa9, 0x37, 0x22, 0x60, 0x09,
+  0xa1, 0x18, 0xf6, 0x42, 0xfe, 0xb6, 0x49, 0x7e, 0x99, 0x11, 0x40, 0x18,
+  0xd1, 0x1b, 0x4b, 0x56, 0x1a, 0x66, 0xe3, 0xd5, 0x15, 0xe1, 0xfd, 0x8d,
+  0x04, 0x3e, 0xbf, 0x51, 0xe1, 0x9d, 0x19, 0x19, 0x8a, 0x6f, 0x86, 0x2e,
+  0xd8, 0x9c, 0x67, 0x50, 0xac, 0x02, 0x79, 0xc1, 0xb0, 0x15, 0xd9, 0x30,
+  0x83, 0x17, 0x30, 0xa6, 0xf5, 0x39, 0xe3, 0x8a, 0xb8, 0xc9, 0x40, 0x59,
+  0xad, 0x78, 0xaa, 0xf1, 0xe9, 0x61, 0x34, 0x62, 0x30, 0xf1, 0x5f, 0xe6,
+  0x78, 0x4f, 0x5a, 0x11, 0xba, 0xff, 0x34, 0xcc, 0x88, 0x1b, 0x7f, 0x30,
+  0xbd, 0xc8, 0xd8, 0xd6, 0xf1, 0xc2, 0xc2, 0x7b, 0x0e, 0x6d, 0x7c, 0x8f,
+  0x02, 0xdf, 0xa5, 0x27, 0xe2, 0x1b, 0xe8, 0xf9, 0x40, 0xe9, 0x59, 0x52,
+  0xd1, 0xd1, 0x6b, 0x21, 0xe1, 0x51, 0x16, 0xf6, 0x4c, 0xc0, 0x63, 0xe2,
+  0x91, 0x1f, 0x3d, 0xc2, 0xc1, 0x2c, 0xf2, 0x4b, 0x2c, 0x41, 0x65, 0x5c,
+  0x16, 0x17, 0x3f, 0x80, 0x69, 0x71, 0x84, 0x50, 0xbd, 0xfa, 0x91, 0x66,
+  0x5b, 0x35, 0x9a, 0xfb, 0x1e, 0x74, 0x0c, 0xc5, 0x33, 0x6e, 0x94, 0x48,
+  0xa2, 0x14, 0x5a, 0xfd, 0x8e, 0x23, 0xc8, 0x30, 0x7a, 0xe8, 0x26, 0x43,
+  0x70, 0x4c, 0xb2, 0xf1, 0xf8, 0x46, 0x1e, 0xae, 0x6c, 0x7a, 0xa1, 0x86,
+  0x65, 0x65, 0x5d, 0xac, 0x5d, 0xa7, 0x26, 0x63, 0x08, 0x0b, 0x68, 0x68,
+  0x40, 0xe5, 0xff, 0xb3, 0xa1, 0x55, 0x23, 0x72, 0xef, 0x00, 0xd8, 0xc2,
+  0xac, 0xd9, 0x4c, 0xd0, 0xd4, 0x94, 0x27, 0xe2, 0xf6, 0x9b, 0x50, 0x9b,
+  0xae, 0x1d, 0xb0, 0xed, 0x37, 0xf3, 0x51, 0x60, 0x68, 0x7a, 0xcb, 0xc7,
+  0xf3, 0xe2, 0xe4, 0xe8, 0x59, 0x2b, 0x86, 0xaf, 0x7b, 0xc5, 0x5e, 0xae,
+  0x50, 0x51, 0x3c, 0xc0, 0x96, 0xd5, 0x88, 0x2d, 0x97, 0xed, 0xaa, 0x49,
+  0xd9, 0x46, 0xbf, 0x38, 0x8c, 0x50, 0x48, 0x54, 0xfb, 0xd3, 0xf1, 0x28,
+  0xea, 0x54, 0x79, 0x3e, 0xd1, 0x38, 0x2b, 0xf8, 0x33, 0xb9, 0x4c, 0xbf,
+  0xce, 0x27, 0xa3, 0xce, 0xba, 0x2d, 0xbd, 0x6c, 0x36, 0xb6, 0x56, 0x62,
+  0x7a, 0x23, 0x70, 0xea, 0x47, 0xfc, 0xd3, 0x5b, 0xf9, 0xf8, 0x92, 0x8e,
+  0xd5, 0x24, 0x1f, 0xe4, 0xe3, 0xf1, 0x12, 0xa1, 0x9d, 0xab, 0x25, 0x53,
+  0xd2, 0x3e, 0x93, 0x6f, 0x07, 0x37, 0x15, 0xdf, 0x1b, 0xe0, 0x7e, 0x11,
+  0xe0, 0x74, 0xd1, 0x91, 0x5c, 0x55, 0xa9, 0xc2, 0xe2, 0xc9, 0x60, 0x4e,
+  0x6c, 0xc1, 0x9d, 0x58, 0x87, 0xd4, 0x3a, 0x43, 0x08, 0x96, 0x06, 0x99,
+  0x2c, 0x11, 0xd7, 0xdb, 0x84, 0x00, 0x9f, 0x80, 0x45, 0xff, 0xf3, 0x5f,
+  0x3f, 0xfd, 0xe2, 0xc5, 0x28, 0xb1, 0x77, 0x0c, 0xf1, 0x10, 0x28, 0x0a,
+  0x98, 0x22, 0x1a, 0xaa, 0x32, 0x9d, 0x8c, 0xd9, 0x72, 0x49, 0x2a, 0x25,
+  0xb4, 0x32, 0xed, 0x39, 0x39, 0x37, 0xec, 0xbf, 0x84, 0x76, 0x03, 0xc9,
+  0xaf, 0xb6, 0x2a, 0x8b, 0x40, 0x46, 0x4d, 0xd2, 0x4b, 0xf8, 0x17, 0x27,
+  0x6a, 0x52, 0xe8, 0xc4, 0x5b, 0x7b, 0x17, 0xa9, 0x21, 0x16, 0xe9, 0x3d,
+  0x1c, 0x98, 0x8a, 0x11, 0xe1, 0xcd, 0x78, 0xcc, 0xb7, 0x6f, 0x5e, 0x1a,
+  0x97, 0xe0, 0x72, 0xf2, 0xe7, 0x1d, 0xf9, 0xc8, 0xc5, 0x84, 0xa5, 0xd5,
+  0x35, 0x99, 0x38, 0x96, 0xe2, 0x08, 0xa4, 0xf8, 0xfd, 0xf3, 0xa7, 0x5f,
+  0xfe, 0x05, 0xff, 0xeb, 0xdc, 0xab, 0xac, 0x30, 0xd3, 0xa0, 0x5b, 0x24,
+  0xda, 0xbd, 0xf6, 0xaf, 0x80, 0x63, 0xdc, 0xc5, 0xe9, 0x5d, 0x3a, 0x00,
+  0x6e, 0x5d, 0x2a, 0x38, 0x6c, 0x3c, 0x2d, 0xa3, 0xc3, 0x29, 0xf0, 0x9a,
+  0xac, 0x05, 0xa8, 0xf8, 0x05, 0xbe, 0x16, 0x9d, 0xc8, 0x6b, 0x06, 0x8a,
+  0xee, 0x32, 0x2f, 0x60, 0xc6, 0x53, 0x41, 0xc3, 0x12, 0x28, 0xb0, 0xba,
+  0x45, 0x3d, 0xa2, 0x6c, 0x6b, 0xcf, 0x2c, 0x7d, 0xfd, 0x48, 0x4c, 0xf1,
+  0x54, 0xc2, 0xd0, 0xa9, 0x4a, 0x27, 0x26, 0x9a, 0x05, 0xe8, 0xd4, 0xb0,
+  0x7d, 0xc3, 0xf7, 0x64, 0x5f, 0x2e, 0xbb, 0xe8, 0x35, 0x37, 0xb5, 0x17,
+  0x43, 0xf9, 0x15, 0x02, 0x64, 0xa3, 0x55, 0xf1, 0xcc, 0xfd, 0x23, 0xd6,
+  0x44, 0xc4, 0x92, 0x71, 0xe6, 0xd7, 0xd3, 0xe2, 0xea, 0xd4, 0x60, 0x8b,
+  0xfb, 0x01, 0x8f, 0x8d, 0xd8, 0x07, 0x65, 0x3e, 0xcc, 0x68, 0x4d, 0xba,
+  0x17, 0x52, 0x39, 0x2c, 0x60, 0x97, 0xfd, 0x1f, 0xc9, 0x92, 0xfa, 0x15,
+  0xc6, 0x38, 0x8c, 0xa1, 0x10, 0xc9, 0xc8, 0x80, 0x6f, 0xba, 0x55, 0x44,
+  0x09, 0x3e, 0x24, 0x41, 0x3c, 0x93, 0x74, 0xc2, 0x57, 0x0f, 0xfb, 0xd5,
+  0x5a, 0x2d, 0x15, 0x72, 0x2f, 0x02, 0x97, 0xc1, 0x6a, 0xed, 0x04, 0xba,
+  0x24, 0x81, 0x00, 0xf9, 0x2c, 0x35, 0x06, 0xf1, 0xa0, 0x7f, 0x8d, 0x5a,
+  0x67, 0x63, 0x2e, 0xac, 0x8c, 0x58, 0x59, 0xd2, 0x91, 0xa2, 0xc3, 0x31,
+  0x1c, 0x33, 0xbe, 0x4d, 0x11, 0xcb, 0x78, 0x15, 0xd6, 0x29, 0xa0, 0xe9,
+  0xc7, 0x7c, 0x7e, 0x1c, 0x3d, 0x79, 0xfc, 0xf8, 0x31, 0xc7, 0x68, 0x74,
+  0x5e, 0x52, 0xc7, 0x6f, 0x4e, 0x8e, 0xcf, 0x5e, 0xbd, 0x3a, 0x79, 0xfd,
+  0xec, 0xe4, 0x99, 0x06, 0x51, 0x3b, 0x63, 0xb7, 0xe4, 0xe2, 0x5f, 0xbe,
+  0x98, 0x6e, 0x03, 0xa4, 0xb1, 0xfb, 0x78, 0x27, 0xde, 0x7b, 0xbc, 0x13,
+  0x01, 0x71, 0x26, 0x06, 0xc5, 0x21, 0x99, 0x20, 0x50, 0x61, 0x74, 0xb5,
+  0x00, 0xf5, 0x06, 0xeb, 0x14, 0x57, 0x88, 0x4f, 0xa9, 0x08, 0xf7, 0xb3,
+  0xb4, 0x42, 0xb3, 0xb1, 0xa7, 0x33, 0x24, 0xa3, 0x5e, 0xc7, 0x14, 0xc4,
+  0xb3, 0x61, 0x5d, 0xa2, 0x2f, 0x10, 0xc5, 0xee, 0xed, 0x60, 0x47, 0xbd,
+  0xe8, 0x79, 0x86, 0xb8, 0xa4, 0xb7, 0x4c, 0x9c, 0xc7, 0x57, 0xa0, 0xaa,
+  0xa6, 0x7e, 0x40, 0x57, 0xfd, 0x7d, 0x7c, 0x7d, 0x9f, 0x5f, 0x0f, 0x47,
+  0x8b, 0xb6, 0x1f, 0x3a, 0xad, 0xb8, 0xdd, 0x66, 0x58, 0xf6, 0x74, 0xb3,
+  0x50, 0x18, 0xc1, 0x83, 0x62, 0xf8, 0xda, 0xc7, 0xf4, 0x78, 0x67, 0x67,
+  0xbd, 0xeb, 0x6f, 0x8a, 0xbc, 0x66, 0x9a, 0xdc, 0x72, 0x59, 0x10, 0x29,
+  0x5d, 0xb1, 0x04, 0x7d, 0xfa, 0xf1, 0x57, 0x75, 0x74, 0x21, 0x18, 0x4a,
+  0x91, 0xdf, 0xde, 0xc5, 0x8a, 0x35, 0x12, 0x86, 0x8a, 0xea, 0xb3, 0x31,
+  0xf9, 0xc5, 0xd1, 0x39, 0x3e, 0x1c, 0x9d, 0xbf, 0x39, 0xfb, 0xf1, 0xef,
+  0x16, 0xbd, 0xe5, 0x7a, 0x57, 0xf3, 0x99, 0x04, 0x3e, 0x07, 0xd6, 0x05,
+  0xf4, 0x93, 0x99, 0x1f, 0xc0, 0x69, 0x7c, 0x1f, 0xae, 0xc9, 0x4f, 0x83,
+  0x4a, 0x48, 0x46, 0xc3, 0x34, 0xb4, 0x9c, 0x2a, 0x93, 0xa1, 0x90, 0xc5,
+  0x04, 0x27, 0x35, 0x39, 0x7c, 0xe0, 0x4e, 0xf2, 0xc7, 0xe2, 0x38, 0x6e,
+  0x29, 0xd6, 0x29, 0x47, 0x70, 0x63, 0x2e, 0x48, 0x56, 0x73, 0x75, 0x56,
+  0xc5, 0xa2, 0x66, 0x35, 0x54, 0xd7, 0x66, 0x6f, 0x39, 0xba, 0xf0, 0xbc,
+  0xc8, 0xa6, 0x49, 0x91, 0x4d, 0xee, 0x6a, 0x75, 0xd8, 0x35, 0x93, 0x8a,
+  0x82, 0x7d, 0x6c, 0x49, 0xef, 0xdc, 0xaf, 0xf0, 0x8e, 0xea, 0x4f, 0x36,
+  0x14, 0x66, 0xc0, 0xe8, 0xe2, 0x12, 0x90, 0xc5, 0xab, 0xb5, 0xf4, 0x66,
+  0x6c, 0xee, 0xcb, 0xc7, 0x55, 0x77, 0x9a, 0xad, 0x3f, 0x80, 0x80, 0xeb,
+  0xa3, 0x5b, 0x8b, 0x66, 0x6f, 0xbb, 0x5c, 0x7f, 0xfd, 0xb6, 0x0e, 0x9f,
+  0xfb, 0x64, 0xa7, 0x46, 0x9a, 0x46, 0x2e, 0x6f, 0x2b, 0x24, 0x16, 0x3d,
+  0x7f, 0x79, 0x7a, 0xb2, 0x15, 0x3d, 0x4f, 0x2b, 0x81, 0x6b, 0xd0, 0xc4,
+  0x4a, 0xf4, 0xc6, 0xfe, 0x17, 0xe9, 0x29, 0xa6, 0x7a, 0xa7, 0xa0, 0x31,
+  0x05, 0x93, 0x61, 0xc4, 0x3d, 0x41, 0x32, 0xbb, 0x62, 0x3f, 0x30, 0x39,
+  0xd2, 0xbe, 0xa2, 0x8c, 0xaa, 0xc9, 0x35, 0x1a, 0xc5, 0x26, 0xe4, 0x1e,
+  0x48, 0x37, 0x54, 0x9c, 0xcc, 0x9e, 0x53, 0x2d, 0x2c, 0x9f, 0x39, 0x31,
+  0xb1, 0x38, 0x68, 0x49, 0xf5, 0xd4, 0x80, 0xc0, 0xac, 0x9c, 0x4f, 0x90,
+  0x77, 0x07, 0x81, 0xbc, 0x27, 0xa9, 0x05, 0x29, 0x21, 0x16, 0x34, 0xcd,
+  0x47, 0xb6, 0xd4, 0x1e, 0x9d, 0xfa, 0x7a, 0x10, 0x4f, 0x88, 0x98, 0x50,
+  0x63, 0xf9, 0xb8, 0xb8, 0x90, 0xd8, 0xe4, 0x9a, 0x54, 0xf3, 0x72, 0x3d,
+  0x2a, 0x51, 0x4d, 0x18, 0x7e, 0x5c, 0xe3, 0xaf, 0xb0, 0x8f, 0x03, 0x42,
+  0x3b, 0x22, 0x1e, 0x07, 0xa3, 0x1e, 0xa6, 0x71, 0x52, 0x0e, 0xb3, 0xcc,
+  0xa1, 0x99, 0x17, 0x4a, 0x33, 0x18, 0x31, 0xcf, 0x3f, 0xb7, 0xbf, 0x6d,
+  0xad, 0x0f, 0xc2, 0x28, 0x4b, 0x98, 0x46, 0xb7, 0x05, 0x43, 0xc7, 0x75,
+  0x90, 0x57, 0x89, 0x93, 0x0c, 0x27, 0x8b, 0x51, 0x2a, 0x05, 0x18, 0x66,
+  0x9c, 0x1b, 0x27, 0xc5, 0x0d, 0x67, 0xde, 0x51, 0xb3, 0x7b, 0x2d, 0xf2,
+  0x89, 0xa2, 0x92, 0x08, 0x83, 0x20, 0x38, 0x00, 0x2e, 0x35, 0x6d, 0xf5,
+  0x45, 0xc5, 0x88, 0x69, 0xa9, 0x64, 0x6d, 0x53, 0x4f, 0x03, 0x40, 0x51,
+  0xd0, 0x3e, 0x0d, 0x5e, 0x31, 0xa3, 0x5e, 0xbd, 0x7c, 0x75, 0x22, 0x68,
+  0x09, 0xe9, 0x88, 0x73, 0x93, 0xb4, 0x7e, 0xb2, 0xd8, 0x00, 0x38, 0x11,
+  0xa6, 0x25, 0x31, 0xa5, 0xec, 0x72, 0x16, 0x3b, 0xdf, 0x88, 0x69, 0x5d,
+  0xaf, 0xe5, 0xba, 0x3f, 0x48, 0x49, 0xd4, 0x8b, 0x85, 0x89, 0x25, 0xaa,
+  0xf1, 0x9b, 0x23, 0xb8, 0x19, 0x5e, 0x3f, 0xca, 0x3d, 0xac, 0xf4, 0x5a,
+  0xa0, 0x61, 0x09, 0x14, 0xf9, 0x04, 0xae, 0xdb, 0x09, 0xe5, 0x11, 0x1a,
+  0xf3, 0x50, 0x42, 0x44, 0xd8, 0xb4, 0x90, 0x27, 0x37, 0xf5, 0x79, 0x95,
+  0xb5, 0x5a, 0x8c, 0x8f, 0x9f, 0xf4, 0x76, 0x7c, 0x4c, 0x54, 0x4a, 0x6b,
+  0xc7, 0xec, 0x6d, 0xa3, 0x78, 0x11, 0xf6, 0x9b, 0x15, 0x47, 0x53, 0x67,
+  0xb7, 0xcb, 0x5e, 0x1d, 0xac, 0xc0, 0x0f, 0xfb, 0x10, 0x1d, 0x08, 0x53,
+  0xe4, 0x4d, 0x8d, 0x25, 0xa5, 0x14, 0x7c, 0x09, 0x8f, 0x92, 0xf1, 0x4e,
+  0xcd, 0xa4, 0xf8, 0xab, 0x44, 0x13, 0x2f, 0x8b, 0x7e, 0xcb, 0x67, 0x1a,
+  0xe9, 0x73, 0xa3, 0x51, 0xcd, 0x5d, 0x41, 0x4a, 0xb9, 0xe5, 0x47, 0x26,
+  0x94, 0x73, 0xaf, 0x9d, 0x85, 0xc1, 0x67, 0x42, 0x85, 0xa9, 0xdd, 0x2e,
+  0x34, 0xa4, 0x57, 0xec, 0xbc, 0xa8, 0x92, 0xc2, 0xc6, 0x72, 0x5c, 0x07,
+  0x42, 0xee, 0x36, 0xf7, 0xaf, 0xc8, 0x86, 0xef, 0x33, 0xc4, 0x1f, 0x2e,
+  0xab, 0xc5, 0x78, 0xcc, 0x51, 0x9c, 0xee, 0x28, 0x35, 0x7e, 0x14, 0x36,
+  0x8e, 0x51, 0xea, 0x65, 0x79, 0x70, 0x0b, 0x7d, 0x52, 0xe6, 0xa2, 0xa2,
+  0x3a, 0x9e, 0xda, 0x7c, 0x4a, 0xa3, 0xdc, 0x22, 0xac, 0x10, 0xe9, 0xd7,
+  0x69, 0x81, 0x24, 0x80, 0x90, 0xb9, 0xe8, 0xaa, 0xbc, 0xf1, 0xf3, 0x03,
+  0xa8, 0x20, 0x4b, 0x81, 0xd1, 0xc7, 0x64, 0x13, 0x7f, 0x93, 0x4e, 0x73,
+  0x2a, 0x1e, 0x64, 0x67, 0x2c, 0x6b, 0x05, 0x72, 0x84, 0x68, 0x2d, 0xec,
+  0xf9, 0x80, 0x51, 0x20, 0xd1, 0xb6, 0x68, 0xd7, 0x9a, 0xe1, 0x2b, 0x59,
+  0x06, 0x1c, 0xa8, 0x11, 0x61, 0xd9, 0xc6, 0x9a, 0xcc, 0x32, 0xa1, 0xaa,
+  0x0c, 0x68, 0x95, 0xce, 0x66, 0x07, 0xc8, 0x6e, 0x9a, 0xf9, 0x29, 0x2f,
+  0x40, 0x5f, 0x3a, 0xe8, 0x48, 0x5d, 0x4a, 0x8a, 0x14, 0x24, 0x37, 0x3c,
+  0x49, 0x23, 0x35, 0xba, 0x11, 0x1c, 0xe9, 0x98, 0x65, 0x49, 0x8e, 0x1d,
+  0xac, 0xca, 0x70, 0xea, 0xba, 0xa2, 0x59, 0xf8, 0x79, 0xc4, 0x06, 0x5d,
+  0x42, 0x70, 0x97, 0x70, 0x64, 0xf1, 0x0b, 0x18, 0xc7, 0x8f, 0xf1, 0xf1,
+  0xc2, 0x73, 0x68, 0x43, 0xf7, 0xf1, 0x0b, 0x6a, 0xf2, 0x4f, 0x1d, 0x13,
+  0x21, 0xc0, 0x8f, 0xda, 0xaf, 0x60, 0xf4, 0x5f, 0x84, 0x92, 0x28, 0x24,
+  0xa6, 0x82, 0xc9, 0x86, 0x6a, 0x7f, 0x89, 0x5c, 0x93, 0xd8, 0x9a, 0x62,
+  0xb4, 0x39, 0xa3, 0xd1, 0xb6, 0xac, 0xb7, 0x26, 0x7c, 0x05, 0xd6, 0x9c,
+  0xc3, 0x41, 0x0a, 0x0c, 0x52, 0x8e, 0x60, 0x14, 0x71, 0x3e, 0x8e, 0x29,
+  0x35, 0x19, 0xe4, 0xad, 0xf7, 0x98, 0xde, 0x71, 0x67, 0xc9, 0x8a, 0x20,
+  0x6b, 0x89, 0x3d, 0x8c, 0x46, 0xa1, 0x8c, 0x11, 0x46, 0x06, 0x72, 0xd4,
+  0x4f, 0x45, 0x37, 0xe0, 0x2d, 0x3d, 0x90, 0xdc, 0x58, 0x7a, 0x7d, 0x96,
+  0xde, 0x70, 0xf2, 0x27, 0x96, 0xfe, 0x10, 0x14, 0x02, 0xcf, 0x23, 0x47,
+  0x98, 0x04, 0x5d, 0x36, 0x7f, 0xd0, 0xa4, 0x09, 0xd7, 0x76, 0xca, 0xce,
+  0x71, 0x8a, 0x57, 0x58, 0xcc, 0xb5, 0xf2, 0xee, 0x52, 0x0f, 0x30, 0x1a,
+  0x7e, 0xa8, 0xb0, 0x2e, 0xaa, 0xeb, 0x9a, 0x6e, 0x00, 0x5c, 0xeb, 0x5b,
+  0x83, 0x53, 0x52, 0x56, 0x77, 0x28, 0x07, 0x08, 0x88, 0x76, 0x20, 0x98,
+  0x1b, 0x06, 0xcd, 0xb9, 0x02, 0x5a, 0x0e, 0x88, 0x14, 0x74, 0x5a, 0x73,
+  0x5a, 0x2f, 0x31, 0x20, 0x11, 0xf6, 0x94, 0x14, 0xaf, 0xe2, 0x0c, 0x97,
+  0x6f, 0xe3, 0x10, 0x6e, 0x3e, 0xed, 0x9e, 0x94, 0x3b, 0x49, 0x46, 0xee,
+  0x6a, 0x71, 0xca, 0x87, 0x01, 0x7b, 0xab, 0xab, 0x0c, 0x8f, 0x5d, 0xb9,
+  0x4c, 0xc5, 0x8b, 0x09, 0x46, 0xfc, 0x70, 0x20, 0x10, 0x11, 0xc2, 0x94,
+  0x20, 0xee, 0x66, 0x55, 0x16, 0x97, 0xf3, 0x64, 0x1a, 0x2d, 0x2a, 0x84,
+  0xd4, 0x44, 0xb1, 0x7c, 0x78, 0x95, 0x4a, 0xd8, 0xd8, 0x9c, 0x30, 0xd5,
+  0x18, 0x3e, 0x23, 0x58, 0xbe, 0x87, 0xce, 0x9a, 0x2a, 0x62, 0x7c, 0xdb,
+  0xd0, 0x9d, 0x21, 0xfc, 0xe2, 0x40, 0xec, 0x5a, 0xc8, 0x00, 0x3a, 0xcf,
+  0x61, 0xb0, 0x07, 0x9d, 0x6e, 0xd4, 0xb9, 0xc8, 0xe1, 0x47, 0xf3, 0x20,
+  0x3e, 0x83, 0x63, 0x72, 0xc0, 0x25, 0x55, 0x3b, 0x7d, 0x86, 0x4d, 0xc3,
+  0x3f, 0xa7, 0x39, 0x42, 0x1a, 0x56, 0xa6, 0xcc, 0x5f, 0xcd, 0xbc, 0xc5,
+  0x97, 0x73, 0x18, 0x2e, 0xd0, 0xec, 0x6a, 0xf8, 0xae, 0xa1, 0xa2, 0x23,
+  0x2a, 0xd4, 0xc6, 0x56, 0x8a, 0xa0, 0x23, 0x56, 0x3b, 0xf9, 0x25, 0x71,
+  0xaa, 0x99, 0xa6, 0x83, 0x7b, 0xf1, 0x92, 0x8a, 0x8b, 0xd9, 0x90, 0x8d,
+  0xf7, 0x9f, 0x86, 0xf6, 0x20, 0xe1, 0x3c, 0x24, 0x94, 0x2f, 0x61, 0x1d,
+  0x9a, 0xe9, 0xdb, 0x07, 0x8c, 0xbb, 0x96, 0xa2, 0x45, 0x56, 0xb8, 0x0e,
+  0x85, 0x8a, 0x12, 0xef, 0x8c, 0x5a, 0xba, 0x36, 0xb6, 0x7a, 0xe5, 0x31,
+  0xfa, 0x37, 0x66, 0xd0, 0x77, 0x1d, 0x87, 0x03, 0xa7, 0xe3, 0x28, 0x77,
+  0x0b, 0x44, 0x75, 0x70, 0x54, 0x9d, 0x0c, 0x21, 0x6a, 0x85, 0xfc, 0xfd,
+  0xe1, 0xe8, 0xcd, 0xeb, 0x97, 0xaf, 0xbf, 0x3f, 0x30, 0xeb, 0x83, 0x17,
+  0x84, 0xf0, 0x88, 0x86, 0xa3, 0x03, 0x4b, 0xba, 0x50, 0x59, 0x53, 0xc2,
+  0xd7, 0x9a, 0x44, 0x21, 0x57, 0x84, 0xd1, 0xc8, 0x30, 0x80, 0x31, 0xe5,
+  0x4a, 0x41, 0xe4, 0x4e, 0x85, 0x6f, 0x38, 0xf6, 0x88, 0xed, 0x9f, 0x8a,
+  0xf0, 0x20, 0x98, 0x51, 0xb4, 0x32, 0x55, 0x3e, 0x19, 0x85, 0x98, 0x55,
+  0x7c, 0x4a, 0xf1, 0xf2, 0xb9, 0x60, 0x3e, 0x28, 0x54, 0xe8, 0x8c, 0x60,
+  0x7b, 0x54, 0x4a, 0xd2, 0x7b, 0x27, 0x65, 0xd4, 0x12, 0xca, 0x68, 0xf4,
+  0x23, 0xd5, 0x29, 0x73, 0x9a, 0xcd, 0x6a, 0x7c, 0xb1, 0x92, 0xc5, 0x08,
+  0xee, 0x9b, 0x8c, 0xee, 0xae, 0x1c, 0x45, 0xc5, 0x92, 0xe8, 0xa6, 0xcc,
+  0xc8, 0x9b, 0x6d, 0x56, 0x85, 0x08, 0x35, 0x5c, 0x23, 0x93, 0x47, 0x39,
+  0x4c, 0x16, 0xcc, 0x76, 0xb8, 0x5e, 0x8c, 0x7c, 0x6a, 0xf1, 0x23, 0xcc,
+  0xfc, 0x03, 0x69, 0xd9, 0x75, 0x44, 0x98, 0x0f, 0x48, 0xcc, 0x6e, 0xf3,
+  0x30, 0xbc, 0xc0, 0x8b, 0xe6, 0x39, 0x5a, 0xd4, 0xe2, 0xd7, 0xc0, 0xf9,
+  0x0e, 0xa2, 0x3f, 0xe7, 0xe9, 0x1a, 0x8e, 0x02, 0x78, 0xfd, 0x2d, 0xa8,
+  0x72, 0xf1, 0xd1, 0x25, 0xb1, 0xf4, 0xbb, 0xb4, 0x8c, 0xe7, 0xc4, 0x80,
+  0xb6, 0xf7, 0x76, 0x76, 0x76, 0xd6, 0x6b, 0x88, 0xef, 0xe8, 0xf5, 0x74,
+  0x91, 0x23, 0x4d, 0x8c, 0x8c, 0x93, 0xcb, 0x54, 0xb3, 0x25, 0x53, 0x76,
+  0x35, 0x20, 0x04, 0xa5, 0x9b, 0x30, 0x79, 0xc5, 0x3a, 0xc8, 0x64, 0x1e,
+  0x1d, 0xa2, 0x29, 0xe2, 0x32, 0x2f, 0xee, 0xbe, 0xf1, 0xaa, 0x3d, 0x21,
+  0x0a, 0x00, 0x3e, 0x23, 0xc4, 0x84, 0xa1, 0x70, 0x24, 0xa1, 0xd9, 0xfc,
+  0x5c, 0xcd, 0x44, 0xb3, 0x8d, 0xf4, 0x22, 0xad, 0x77, 0xdd, 0xbc, 0x25,
+  0x0a, 0x2c, 0x93, 0x92, 0x38, 0xd6, 0x2c, 0x37, 0xab, 0x51, 0xd4, 0x4b,
+  0x96, 0xc0, 0x91, 0x49, 0x67, 0x53, 0x34, 0x7e, 0x60, 0x0c, 0xb3, 0x74,
+  0x16, 0x40, 0x1b, 0x32, 0x17, 0x56, 0xc9, 0xc2, 0x8c, 0x8b, 0xc5, 0x12,
+  0x75, 0x60, 0xa0, 0x1d, 0xea, 0xd0, 0xf6, 0xe7, 0x48, 0x09, 0x4d, 0x8d,
+  0x58, 0xfa, 0xe7, 0x23, 0xab, 0x85, 0xec, 0x6d, 0xd0, 0x67, 0xa0, 0x7d,
+  0x9d, 0x32, 0x75, 0xd2, 0x14, 0x28, 0x97, 0x4c, 0x91, 0x16, 0x90, 0xdf,
+  0xcd, 0x04, 0x98, 0x00, 0x1a, 0xce, 0x0a, 0x85, 0x8b, 0x2e, 0x57, 0x68,
+  0xc9, 0x93, 0xf9, 0x47, 0xd7, 0x92, 0x27, 0x6b, 0xc7, 0x4c, 0xd1, 0x30,
+  0x60, 0x26, 0xed, 0xd4, 0xe8, 0xaa, 0xc3, 0x35, 0x5b, 0x1e, 0xec, 0xee,
+  0x7c, 0x31, 0x98, 0x8e, 0x1e, 0x47, 0x87, 0xf0, 0x8f, 0xa7, 0xf3, 0xf6,
+  0x39, 0x57, 0xf7, 0x18, 0x83, 0x45, 0xf1, 0xee, 0x40, 0x09, 0x52, 0x70,
+  0xa7, 0xd9, 0x1b, 0x85, 0xbf, 0xee, 0xef, 0x01, 0x61, 0xde, 0x26, 0x5a,
+  0x1c, 0x70, 0x04, 0xac, 0xa9, 0xa2, 0x54, 0x37, 0x2f, 0x14, 0x8a, 0x5f,
+  0xb5, 0x19, 0x81, 0xb8, 0x87, 0xbb, 0x7b, 0x5f, 0x46, 0x88, 0x02, 0xf2,
+  0xea, 0xd9, 0x63, 0xbe, 0xf8, 0xcb, 0xc5, 0xd4, 0x90, 0x32, 0x27, 0x90,
+  0x32, 0xfb, 0xf3, 0x70, 0x54, 0x61, 0xe0, 0x93, 0x6c, 0x88, 0xd8, 0x5b,
+  0xdd, 0x5a, 0xec, 0xdf, 0x58, 0x63, 0xff, 0x1c, 0xfb, 0xb5, 0x11, 0x21,
+  0x29, 0xfe, 0x9d, 0xb3, 0x5b, 0x02, 0xa1, 0x50, 0xb0, 0x06, 0xd0, 0x3d,
+  0x1a, 0xfd, 0xab, 0xe1, 0x55, 0x38, 0xbb, 0xdb, 0x59, 0xb2, 0x15, 0x51,
+  0xc6, 0x9f, 0x12, 0x6b, 0xde, 0x19, 0x45, 0xfa, 0x78, 0xb8, 0x3b, 0x7c,
+  0xf4, 0xd5, 0xce, 0xde, 0xce, 0x93, 0x47, 0x3b, 0xc9, 0xe3, 0x64, 0xb0,
+  0x33, 0xde, 0xdb, 0xd9, 0x7f, 0xf4, 0xe5, 0xe3, 0x47, 0xc3, 0xfd, 0xbd,
+  0xdd, 0xe4, 0xcb, 0xa8, 0x5c, 0x2b, 0x84, 0x4e, 0x5a, 0x2e, 0xaf, 0x92,
+  0x3d, 0x50, 0x95, 0x7d, 0x5a, 0xe1, 0x2f, 0xa2, 0x43, 0xfe, 0x19, 0xa6,
+  0x18, 0x22, 0x98, 0x56, 0x7a, 0x49, 0xa2, 0xef, 0x08, 0x42, 0x24, 0x56,
+  0x94, 0x9b, 0xfe, 0x8b, 0x23, 0x6c, 0x12, 0x4e, 0xce, 0x95, 0x6f, 0xfd,
+  0x65, 0x7b, 0x02, 0x91, 0x01, 0x53, 0x81, 0xb3, 0xef, 0xbd, 0xe8, 0x78,
+  0xf9, 0xbe, 0xb7, 0x29, 0x12, 0x0e, 0x15, 0xf0, 0xdf, 0xd0, 0x75, 0x7a,
+  0x9f, 0x6d, 0x97, 0xd9, 0x7f, 0x2e, 0x0c, 0x89, 0xfa, 0x28, 0x5e, 0x3f,
+  0xfb, 0xdb, 0xfb, 0x57, 0x17, 0x7f, 0xbd, 0x7d, 0xf5, 0xfd, 0x5f, 0x77,
+  0xcf, 0x9e, 0x8d, 0xa6, 0xaf, 0x7e, 0xfd, 0xeb, 0xfe, 0xab, 0x5f, 0x87,
+  0xbf, 0xfd, 0xfd, 0xd7, 0xa3, 0xbb, 0xb3, 0x8b, 0xbf, 0x3f, 0x7e, 0x35,
+  0x7d, 0xf3, 0xfe, 0xd5, 0xaf, 0x7f, 0x9b, 0xbe, 0x7e, 0xf6, 0xd7, 0xaf,
+  0x1f, 0x46, 0x05, 0x40, 0x5f, 0xf5, 0x4a, 0x03, 0x3b, 0x0d, 0x5f, 0x00,
+  0x5e, 0x42, 0x87, 0x06, 0x38, 0x3b, 0x68, 0x33, 0xeb, 0xd7, 0x8b, 0xea,
+  0x2a, 0x60, 0xf8, 0x8b, 0xfe, 0x85, 0x0d, 0x51, 0x32, 0x91, 0x48, 0x74,
+  0x5d, 0x99, 0xdc, 0xd3, 0x20, 0x06, 0xef, 0x1c, 0x84, 0x51, 0x94, 0xd6,
+  0x18, 0xc9, 0x97, 0x72, 0xfd, 0x91, 0xaa, 0xa8, 0x3d, 0x2c, 0xb4, 0x9b,
+  0x8a, 0xad, 0x94, 0x74, 0x8c, 0xfa, 0x62, 0x37, 0xc2, 0x9c, 0x38, 0x68,
+  0x8e, 0xf3, 0x4f, 0x53, 0xb7, 0x36, 0xa6, 0x00, 0x47, 0x53, 0x63, 0x46,
+  0x8e, 0xc4, 0x42, 0xcc, 0x2a, 0xba, 0xb5, 0x8e, 0x8e, 0xd9, 0x79, 0x36,
+  0x46, 0x1b, 0x96, 0x81, 0x36, 0x61, 0xfb, 0x6b, 0x60, 0xb7, 0xfb, 0x26,
+  0x05, 0xa3, 0xd3, 0x71, 0xe0, 0xc7, 0x37, 0x7f, 0x4b, 0x8b, 0x5c, 0xe0,
+  0x86, 0xb6, 0x68, 0x9e, 0xd7, 0x79, 0x36, 0x8a, 0x04, 0x60, 0x7d, 0x5b,
+  0xab, 0xb1, 0x78, 0xd7, 0xb0, 0x95, 0xb2, 0x09, 0xf2, 0x1b, 0x4b, 0xb1,
+  0x40, 0x93, 0xb4, 0x30, 0x06, 0xef, 0x3a, 0x44, 0xdd, 0x8d, 0xb0, 0x65,
+  0x5f, 0x98, 0xeb, 0xd6, 0x34, 0x7a, 0x72, 0xb4, 0x18, 0xcf, 0x7f, 0xd3,
+  0xfc, 0x4c, 0x89, 0x23, 0x82, 0xb0, 0xc1, 0x00, 0xf0, 0x6a, 0x02, 0xa7,
+  0x53, 0x91, 0xcf, 0xea, 0x8e, 0x30, 0x22, 0x01, 0x9e, 0x51, 0x48, 0xca,
+  0x44, 0xfa, 0xfa, 0x74, 0xe0, 0x3f, 0xd2, 0x3c, 0x6c, 0xf3, 0x03, 0x0a,
+  0x0c, 0x93, 0x27, 0xa3, 0x5e, 0x22, 0xec, 0x51, 0xe3, 0x74, 0x40, 0x7b,
+  0x3b, 0xbd, 0xaf, 0x5a, 0x0a, 0x4d, 0xd7, 0x4a, 0xa9, 0x20, 0x82, 0x9c,
+  0xc1, 0x40, 0x24, 0xb5, 0x8a, 0x52, 0x4d, 0x61, 0x43, 0xb0, 0x86, 0x8d,
+  0x46, 0xce, 0x7b, 0x2b, 0x84, 0x4f, 0x6e, 0xe3, 0x13, 0x52, 0x69, 0x5a,
+  0x49, 0x19, 0xcb, 0x18, 0x92, 0x80, 0x4e, 0x1c, 0xce, 0x04, 0xde, 0x9b,
+  0x02, 0x56, 0x94, 0xd4, 0xe1, 0x9b, 0x2d, 0x4d, 0x5a, 0x92, 0x06, 0x04,
+  0x58, 0xad, 0x4a, 0x80, 0x4c, 0x1d, 0xe0, 0x6c, 0x45, 0x78, 0x24, 0x9a,
+  0x40, 0x97, 0x87, 0xe7, 0xd9, 0x30, 0xfd, 0x96, 0x36, 0x52, 0x9e, 0x6b,
+  0x18, 0x71, 0x3d, 0x4c, 0x3a, 0x6e, 0x58, 0x9f, 0x99, 0xdd, 0xb3, 0xf9,
+  0xcd, 0xec, 0xb2, 0x40, 0x6f, 0x3b, 0x41, 0xf5, 0x25, 0xa1, 0x60, 0xd2,
+  0xd0, 0x19, 0x72, 0xa3, 0xf0, 0x9f, 0x3c, 0xe9, 0xed, 0x74, 0xed, 0xaa,
+  0x20, 0x8e, 0x10, 0x0b, 0x5e, 0x4b, 0x83, 0xf0, 0x6b, 0x22, 0x1d, 0xef,
+  0xd9, 0x47, 0x8e, 0x2f, 0x91, 0x56, 0xd7, 0x66, 0xf7, 0x32, 0x98, 0xf5,
+  0x08, 0x13, 0x9f, 0xde, 0xed, 0xed, 0x76, 0xe5, 0xd7, 0x3d, 0xf1, 0x7f,
+  0xe0, 0xef, 0xfb, 0x75, 0xf7, 0x59, 0x9d, 0x5e, 0x77, 0xba, 0xe6, 0xe5,
+  0x9d, 0xa5, 0xf5, 0x7f, 0x6a, 0x55, 0xaf, 0x6a, 0xc4, 0x0a, 0x6f, 0xba,
+  0x86, 0x65, 0x56, 0xe8, 0x7d, 0x33, 0xa5, 0x63, 0xdc, 0xe5, 0x0a, 0x2c,
+  0x08, 0xc9, 0xef, 0x36, 0xb4, 0x72, 0x8b, 0xb0, 0xa3, 0xfb, 0xf8, 0x37,
+  0xd7, 0x5f, 0x6f, 0x6c, 0x79, 0xfd, 0xf5, 0xc6, 0x5d, 0xb2, 0xcb, 0x0c,
+  0xab, 0xbf, 0xa2, 0x1e, 0x99, 0x17, 0x22, 0x68, 0x8b, 0x11, 0x6a, 0x0b,
+  0x91, 0xd3, 0xa0, 0xbb, 0x87, 0x7b, 0x08, 0xdd, 0x96, 0x17, 0x31, 0x9a,
+  0xc0, 0x81, 0xb0, 0x2f, 0x43, 0xc6, 0x31, 0xdd, 0xed, 0x06, 0x33, 0x82,
+  0x56, 0xef, 0xc3, 0x8c, 0x02, 0xdb, 0xba, 0x7b, 0x8f, 0x1d, 0xd9, 0xfd,
+  0x64, 0x3b, 0xb2, 0xbb, 0xde, 0x8e, 0xb8, 0x84, 0xec, 0x2c, 0x1c, 0x1e,
+  0x40, 0xa9, 0x42, 0x26, 0xdb, 0x42, 0x5c, 0x53, 0x37, 0xa6, 0xd1, 0x5c,
+  0xbd, 0x46, 0x64, 0x5b, 0x9b, 0xad, 0x1b, 0xd3, 0xdc, 0x60, 0xdd, 0xa8,
+  0xe0, 0x41, 0xdc, 0xdf, 0xf7, 0x2f, 0x0e, 0x6f, 0x9b, 0xef, 0xb3, 0x73,
+  0x30, 0xa1, 0x72, 0x21, 0x85, 0x2a, 0x88, 0x5f, 0x53, 0xe9, 0xb9, 0x9a,
+  0x99, 0xae, 0x0c, 0x03, 0x65, 0x11, 0xcf, 0xdc, 0x73, 0xa2, 0x07, 0xe9,
+  0x03, 0x22, 0xc3, 0xb7, 0x73, 0x62, 0xcb, 0xa8, 0x76, 0x57, 0x9a, 0xc5,
+  0x47, 0xb1, 0x0e, 0x70, 0x73, 0xb7, 0x8d, 0xce, 0xd6, 0x45, 0xd2, 0xcc,
+  0x30, 0x42, 0x95, 0x2d, 0xb5, 0x9f, 0x12, 0xe1, 0x7a, 0xc9, 0x65, 0x92,
+  0xdc, 0x24, 0x18, 0x13, 0x4e, 0x92, 0xa2, 0x1d, 0x64, 0x48, 0x66, 0xd6,
+  0xbb, 0x66, 0x94, 0x6b, 0x2b, 0x35, 0x4c, 0x27, 0x68, 0x47, 0x9c, 0x24,
+  0xa0, 0xcd, 0x53, 0xb2, 0xcb, 0x28, 0x6a, 0x89, 0x51, 0x51, 0xba, 0x16,
+  0x63, 0x38, 0x2e, 0x52, 0x7b, 0xdd, 0xba, 0x26, 0xa1, 0xfb, 0xe7, 0xaf,
+  0x41, 0xf6, 0x8d, 0x32, 0x71, 0x4d, 0x42, 0xf0, 0x4d, 0x02, 0xc1, 0xeb,
+  0xc2, 0xeb, 0xe6, 0x21, 0x47, 0xc7, 0x1f, 0xeb, 0x9a, 0x30, 0x86, 0xa1,
+  0x1b, 0xa4, 0xad, 0x69, 0x25, 0x8d, 0x36, 0x52, 0xc0, 0xe2, 0xdd, 0xc5,
+  0xe4, 0x8e, 0x01, 0x35, 0x39, 0xb8, 0x0b, 0x2d, 0x42, 0xec, 0x74, 0x46,
+  0xe2, 0x55, 0xe8, 0x61, 0xd9, 0x5e, 0x71, 0x43, 0x36, 0x55, 0x42, 0x7b,
+  0x74, 0x5b, 0x80, 0x11, 0x0d, 0xd3, 0xa0, 0x51, 0x37, 0x0f, 0x6e, 0x90,
+  0x53, 0xb6, 0xdf, 0x91, 0x8f, 0xbe, 0x0a, 0x1c, 0xcd, 0x07, 0x31, 0xd1,
+  0xbd, 0xa0, 0x5b, 0x9e, 0xe8, 0xbe, 0xeb, 0xa2, 0x2e, 0x59, 0x31, 0xc9,
+  0x49, 0x51, 0x37, 0x34, 0x6d, 0x4f, 0xaa, 0x97, 0x63, 0xe9, 0x93, 0xb2,
+  0x03, 0x11, 0x44, 0x1d, 0x2c, 0x91, 0x81, 0x74, 0x2c, 0xab, 0x87, 0xb2,
+  0x60, 0x76, 0x20, 0x8a, 0xb9, 0x84, 0xe9, 0xe7, 0x61, 0x76, 0xa2, 0xb0,
+  0x2c, 0xa9, 0x32, 0x91, 0x03, 0xf3, 0x4a, 0x4b, 0x44, 0xd3, 0x0f, 0x26,
+  0x09, 0x94, 0xa2, 0x69, 0xa4, 0x1d, 0x02, 0x01, 0x94, 0xa5, 0xca, 0x9c,
+  0x00, 0x00, 0x09, 0x6b, 0x46, 0x99, 0x03, 0x21, 0xdf, 0x22, 0x4f, 0xe3,
+  0xc7, 0xf5, 0xd8, 0xed, 0xed, 0xa1, 0xfb, 0x4e, 0x12, 0xd8, 0xc9, 0xc2,
+  0x8f, 0x3c, 0xee, 0xf2, 0xca, 0x04, 0x5d, 0x0a, 0xe5, 0x92, 0x90, 0xe8,
+  0xc4, 0xa3, 0x0e, 0x93, 0x50, 0xe4, 0x03, 0xe6, 0xbe, 0x13, 0x7e, 0xde,
+  0x90, 0x11, 0x73, 0x79, 0xc1, 0x74, 0x97, 0xa5, 0xa9, 0x29, 0xd7, 0xeb,
+  0xa4, 0x03, 0x5d, 0x4d, 0xca, 0x6b, 0x18, 0xc3, 0x6a, 0xc6, 0xf2, 0x89,
+  0xee, 0xcf, 0xbd, 0x87, 0xc9, 0x8f, 0xc1, 0x43, 0x6f, 0xf9, 0x7f, 0xfd,
+  0x58, 0x7b, 0xb2, 0x3a, 0x1d, 0xf3, 0xf0, 0x39, 0xd7, 0x63, 0xae, 0xa7,
+  0x3c, 0x20, 0x28, 0x79, 0x99, 0xd5, 0xeb, 0x9e, 0xf2, 0x06, 0x93, 0x0a,
+  0x14, 0x25, 0x9a, 0xac, 0x7d, 0x23, 0xef, 0xb7, 0x08, 0xc5, 0x7f, 0xf8,
+  0x83, 0x78, 0xa4, 0xfe, 0xf0, 0x87, 0x83, 0xc8, 0xcb, 0x01, 0xbe, 0x9d,
+  0xa7, 0x45, 0x36, 0xa5, 0x42, 0x80, 0xbd, 0xe8, 0x99, 0xcd, 0xa2, 0xf6,
+  0x8e, 0x2f, 0xdc, 0x55, 0xa3, 0x45, 0x38, 0xd3, 0x78, 0x05, 0x67, 0xd9,
+  0x97, 0x1c, 0x79, 0x9b, 0x18, 0x4a, 0xf6, 0x2d, 0x0b, 0x9e, 0xd2, 0xb4,
+  0x54, 0x70, 0x54, 0x8b, 0x66, 0xe8, 0x48, 0x26, 0x0a, 0xd2, 0xb5, 0xc4,
+  0xf7, 0xd3, 0xce, 0xec, 0xbb, 0x19, 0x7b, 0x46, 0x67, 0x47, 0x10, 0x37,
+  0x2f, 0x4a, 0x00, 0xe1, 0x21, 0xd8, 0x99, 0xcb, 0x00, 0x63, 0xa4, 0x0e,
+  0xaa, 0xf7, 0x08, 0x3a, 0xb9, 0xce, 0x92, 0xe8, 0x68, 0x52, 0xc5, 0xfd,
+  0xeb, 0x21, 0x67, 0x8f, 0x09, 0x06, 0x00, 0x2f, 0x93, 0xbf, 0xd7, 0x94,
+  0x7d, 0x46, 0x15, 0xf4, 0x04, 0x96, 0x86, 0x8a, 0x9e, 0x53, 0xb1, 0x67,
+  0xb6, 0xea, 0x68, 0x32, 0x05, 0x6e, 0xa4, 0xa5, 0x44, 0x06, 0x3c, 0x6b,
+  0x4a, 0xd6, 0xf3, 0x34, 0x79, 0x5f, 0xea, 0x94, 0x24, 0x5c, 0x83, 0x41,
+  0xf0, 0xcc, 0x98, 0x39, 0xb4, 0x73, 0x89, 0x63, 0xbe, 0xe1, 0xc4, 0xa4,
+  0x72, 0xc5, 0x54, 0xa5, 0xe4, 0xaf, 0x6f, 0x5f, 0x1e, 0xd7, 0xe2, 0xa4,
+  0x25, 0x08, 0xdd, 0x0f, 0xba, 0x71, 0xe2, 0xbe, 0x39, 0x74, 0x4a, 0x9e,
+  0x1c, 0xa3, 0xb1, 0x44, 0xf1, 0x76, 0x14, 0x71, 0xa3, 0xb6, 0xbd, 0x79,
+  0x28, 0xd2, 0x03, 0x94, 0xe5, 0x95, 0x0c, 0x65, 0xff, 0x13, 0x31, 0x94,
+  0xfd, 0x0f, 0x66, 0x28, 0x7b, 0x3d, 0xd3, 0xd4, 0xc7, 0x66, 0x28, 0xfb,
+  0x9f, 0x80, 0xa1, 0x08, 0xa4, 0xb2, 0xb0, 0xc0, 0x76, 0x29, 0xc2, 0x13,
+  0xd9, 0x6a, 0xda, 0x76, 0xbd, 0x80, 0x7c, 0xcc, 0xf5, 0x36, 0x62, 0xb1,
+  0xa3, 0xc5, 0x6c, 0xee, 0x0b, 0x62, 0xa5, 0x0a, 0x9f, 0xb1, 0x57, 0xf4,
+  0x4b, 0x7a, 0x95, 0xd3, 0xd3, 0xe5, 0xf5, 0x53, 0x06, 0x27, 0x97, 0x5b,
+  0xb5, 0xa5, 0x9a, 0x3c, 0x06, 0xbd, 0x64, 0x43, 0x0c, 0x21, 0xb4, 0x21,
+  0xca, 0x64, 0x7f, 0x13, 0x83, 0x4e, 0xb1, 0xa0, 0x10, 0xec, 0xe8, 0x68,
+  0x4e, 0xa6, 0xcf, 0xdd, 0xde, 0x2d, 0xd7, 0x1b, 0xc4, 0x58, 0x93, 0x80,
+  0x9f, 0xae, 0x48, 0x59, 0x5c, 0xcb, 0x66, 0x8a, 0x58, 0xd6, 0x1c, 0x0e,
+  0xb5, 0xce, 0x56, 0xc0, 0x09, 0x1e, 0xce, 0x82, 0x5d, 0xd8, 0x7b, 0x70,
+  0x00, 0x2f, 0xbd, 0xcb, 0x75, 0x70, 0x57, 0xa5, 0xe1, 0xd8, 0x45, 0x5c,
+  0x85, 0x4d, 0x36, 0x22, 0x81, 0x44, 0x86, 0x01, 0x7c, 0xdd, 0x08, 0x41,
+  0x02, 0x68, 0x05, 0x10, 0xc9, 0xd1, 0x18, 0x01, 0x11, 0xb6, 0x35, 0xbb,
+  0xc4, 0x60, 0xa3, 0x9c, 0xd9, 0x8c, 0xe7, 0x83, 0xc2, 0xc8, 0x58, 0x41,
+  0x35, 0x51, 0xcc, 0x10, 0x29, 0x5f, 0x1d, 0xac, 0x73, 0x58, 0x53, 0x17,
+  0x8d, 0xdc, 0x81, 0x69, 0x0b, 0x34, 0x37, 0x3a, 0xa8, 0xc0, 0x09, 0x82,
+  0x74, 0x09, 0x2b, 0xdc, 0x8c, 0xcf, 0xba, 0x9b, 0xaf, 0x88, 0xe2, 0x0e,
+  0x52, 0xc5, 0xc7, 0xd7, 0x30, 0x82, 0xdd, 0xac, 0xcb, 0x0b, 0xc2, 0x63,
+  0x5d, 0x8f, 0x37, 0xb4, 0xe3, 0x45, 0xc4, 0x19, 0x1e, 0x41, 0x89, 0xaa,
+  0x6d, 0x1a, 0xad, 0x35, 0xd6, 0x96, 0x8c, 0xf1, 0xaa, 0xdf, 0x8a, 0xb5,
+  0xd1, 0x86, 0xcd, 0x70, 0xac, 0xc4, 0xa2, 0x9a, 0x63, 0x4a, 0x03, 0x26,
+  0xd1, 0x48, 0x84, 0xad, 0x67, 0x7d, 0xa9, 0xbf, 0x38, 0xa4, 0xe8, 0x40,
+  0xee, 0x41, 0x02, 0xb8, 0x38, 0xe6, 0x43, 0xb5, 0x59, 0x32, 0xd3, 0xa3,
+  0x07, 0x3b, 0xcf, 0xdf, 0x67, 0xa9, 0x07, 0x89, 0x3d, 0x42, 0x39, 0x5d,
+  0x5c, 0x57, 0x36, 0xf6, 0xb5, 0xc6, 0xd3, 0x91, 0x56, 0x11, 0x08, 0xb3,
+  0xd7, 0xeb, 0x05, 0x6a, 0xb0, 0x5c, 0x67, 0xe9, 0x4d, 0x4d, 0xbe, 0x96,
+  0x91, 0x75, 0xb9, 0x62, 0xc7, 0x48, 0x2a, 0x09, 0xdb, 0x08, 0xe7, 0x96,
+  0x48, 0xa3, 0x1a, 0x61, 0xc9, 0x84, 0x3e, 0xae, 0x61, 0x53, 0x5a, 0x5d,
+  0x93, 0x72, 0xb2, 0xf5, 0x88, 0xa4, 0xc5, 0x7b, 0xfd, 0x9e, 0xe9, 0xa3,
+  0x0c, 0xc1, 0x88, 0x6f, 0xa2, 0xe0, 0x6f, 0x7d, 0x91, 0xdf, 0x19, 0xc5,
+  0xa7, 0x8b, 0x0a, 0x40, 0x71, 0xa7, 0xb9, 0xed, 0xce, 0xd5, 0x4d, 0x43,
+  0x63, 0x2c, 0x3d, 0x8f, 0x71, 0xc2, 0x2b, 0x92, 0x1f, 0xcd, 0xb6, 0x7a,
+  0x79, 0x3b, 0x54, 0xd6, 0xb2, 0xa2, 0x16, 0x28, 0x9c, 0x71, 0x39, 0xb2,
+  0xbf, 0x03, 0xdb, 0x67, 0x78, 0x19, 0xf7, 0x23, 0x91, 0xfa, 0x65, 0x95,
+  0xce, 0x45, 0x86, 0x2b, 0xf2, 0x61, 0xaa, 0x91, 0x66, 0x40, 0xcf, 0x5e,
+  0xa5, 0xec, 0x74, 0xf8, 0x3e, 0x18, 0x29, 0xc5, 0xf5, 0x67, 0x6b, 0xb7,
+  0xa1, 0xc8, 0x9f, 0xec, 0x78, 0x31, 0xf5, 0x82, 0x45, 0x53, 0x83, 0x55,
+  0x13, 0x5f, 0x0f, 0x8e, 0x24, 0xf6, 0xcb, 0xc2, 0xba, 0x70, 0x3f, 0x1b,
+  0x25, 0xa9, 0x57, 0x0e, 0x1e, 0xba, 0x2e, 0x48, 0x56, 0x69, 0x79, 0xa7,
+  0x94, 0x42, 0xf0, 0x92, 0x20, 0x2b, 0x76, 0x5f, 0xb4, 0x15, 0xf1, 0x6c,
+  0x34, 0x2d, 0x97, 0xe2, 0xa5, 0xdb, 0x87, 0x1c, 0xb3, 0xd2, 0x79, 0x1b,
+  0x82, 0x5d, 0x43, 0x9c, 0x15, 0x61, 0x54, 0x64, 0x0a, 0xb7, 0x2f, 0xe3,
+  0x97, 0xc3, 0x92, 0x3f, 0x5a, 0xb1, 0xe7, 0xf8, 0x68, 0xc9, 0xe8, 0x38,
+  0x0c, 0xb1, 0xd2, 0xd6, 0xf1, 0xab, 0x08, 0x2b, 0x3e, 0xa2, 0x4d, 0x0c,
+  0xc9, 0x94, 0x97, 0x98, 0x6b, 0xe5, 0xc0, 0xa3, 0xf9, 0xa2, 0xf0, 0x70,
+  0x05, 0xe9, 0x22, 0x94, 0x3a, 0x18, 0x52, 0xfa, 0xc2, 0x3b, 0x1c, 0x7a,
+  0x28, 0x70, 0x03, 0x7a, 0x65, 0xba, 0x0d, 0xbc, 0xa3, 0xdc, 0x2e, 0xcb,
+  0x09, 0xf6, 0x57, 0x52, 0x55, 0xc6, 0x60, 0x05, 0xe8, 0xe7, 0x52, 0x12,
+  0x15, 0x28, 0xbd, 0x9e, 0xeb, 0xef, 0x50, 0x18, 0x93, 0x18, 0xb3, 0x4b,
+  0x2a, 0xc9, 0xfa, 0x8e, 0x22, 0xca, 0x82, 0x64, 0xae, 0x41, 0x6b, 0xb5,
+  0x27, 0xd5, 0xc3, 0x24, 0x98, 0xc0, 0x26, 0xa4, 0x9b, 0x96, 0x41, 0xd7,
+  0xdd, 0xdf, 0x11, 0x24, 0x92, 0x2b, 0xcc, 0xce, 0xb2, 0x28, 0x5e, 0xb2,
+  0x88, 0x9d, 0x5e, 0x59, 0x5e, 0x75, 0xb0, 0x42, 0xad, 0xf9, 0x4a, 0xe3,
+  0x5a, 0x5b, 0x2a, 0xe3, 0x99, 0x8d, 0x77, 0xe3, 0x74, 0x6c, 0x30, 0x40,
+  0xd9, 0x1e, 0x28, 0xe8, 0xa3, 0xc3, 0xf2, 0xd2, 0xd4, 0x21, 0x28, 0x84,
+  0x93, 0x2c, 0xc7, 0x94, 0xd0, 0xa7, 0xa2, 0x7b, 0x33, 0xd2, 0xfb, 0xa2,
+  0x84, 0xb5, 0xf6, 0xbf, 0xea, 0x16, 0xd6, 0x11, 0xad, 0xed, 0xbe, 0xbc,
+  0xbd, 0x33, 0x2f, 0x53, 0x42, 0x72, 0x42, 0x84, 0x2d, 0x19, 0x81, 0x09,
+  0x82, 0x5d, 0xd7, 0xe4, 0x55, 0x45, 0xbd, 0xe4, 0xda, 0xed, 0x4d, 0x5f,
+  0xff, 0x39, 0x7c, 0x89, 0xf9, 0x22, 0x70, 0x77, 0xba, 0xd8, 0xfd, 0x2c,
+  0x5b, 0xd9, 0x04, 0x5f, 0xd3, 0x4a, 0xcf, 0x00, 0x21, 0x46, 0x29, 0x7e,
+  0xd6, 0x86, 0xcf, 0x69, 0x2e, 0x5b, 0x27, 0x1d, 0x0f, 0xad, 0x39, 0x4a,
+  0x0c, 0x20, 0x63, 0xdb, 0x6a, 0x6e, 0x43, 0x8a, 0x2c, 0x9a, 0xc0, 0xb5,
+  0x1c, 0xa8, 0x33, 0xd8, 0x56, 0x29, 0xc7, 0x99, 0x19, 0x62, 0xf5, 0x1d,
+  0x58, 0x6f, 0xc3, 0xcd, 0xcd, 0x4d, 0x6f, 0x59, 0xc0, 0xc4, 0xd9, 0x2c,
+  0x3a, 0x05, 0x26, 0x77, 0xeb, 0xd4, 0x01, 0x13, 0xbc, 0x61, 0x07, 0x5d,
+  0xf1, 0x6f, 0x6f, 0x9e, 0x77, 0x8d, 0x0f, 0x5c, 0x8b, 0x31, 0x51, 0xfc,
+  0x6f, 0xe9, 0x2b, 0xd2, 0x51, 0x9a, 0x49, 0xc0, 0x67, 0x02, 0x6a, 0xc9,
+  0xf1, 0xd1, 0xf9, 0xbb, 0xd7, 0x27, 0x17, 0xef, 0xde, 0x1c, 0xfd, 0x80,
+  0x73, 0xe6, 0xbb, 0x07, 0x84, 0x74, 0x0c, 0x61, 0x2f, 0xf2, 0x1c, 0x08,
+  0xec, 0x15, 0xb1, 0x5b, 0x4e, 0x36, 0x0a, 0xde, 0x32, 0x5a, 0x58, 0x90,
+  0xc7, 0x89, 0x83, 0x39, 0x70, 0x38, 0x0d, 0x4e, 0xf0, 0x7d, 0x5a, 0xcc,
+  0xd2, 0x49, 0x2f, 0x2f, 0x2e, 0x91, 0xe1, 0x6c, 0x3f, 0x13, 0x81, 0x25,
+  0xd8, 0xdc, 0xb6, 0xa4, 0xec, 0x62, 0x18, 0xc2, 0x75, 0x31, 0x46, 0xaf,
+  0x79, 0x38, 0x87, 0xd6, 0xd9, 0xbe, 0x5a, 0xce, 0xec, 0xbf, 0x35, 0x5a,
+  0xa6, 0xbe, 0xaf, 0x6b, 0x9e, 0x8f, 0xd1, 0xac, 0xb4, 0x0d, 0x38, 0xe7,
+  0xe0, 0x11, 0x49, 0x1d, 0xf3, 0xeb, 0x47, 0x4b, 0xcc, 0x05, 0x95, 0x67,
+  0xaf, 0x71, 0x33, 0xc7, 0x53, 0xce, 0x37, 0x64, 0x98, 0x2f, 0x86, 0xb9,
+  0x81, 0xfd, 0xf3, 0xdc, 0x4f, 0x4c, 0xd1, 0x08, 0xe0, 0x8c, 0x49, 0xef,
+  0xcb, 0x65, 0x3b, 0x18, 0xce, 0x47, 0x8e, 0x43, 0xc4, 0x26, 0xd7, 0x5e,
+  0x6f, 0x1c, 0xc6, 0x47, 0x30, 0x0d, 0x34, 0xf4, 0x77, 0x6b, 0xe7, 0x5f,
+  0xe2, 0x3b, 0x45, 0x0d, 0xfe, 0x89, 0x6c, 0x8d, 0x1b, 0xb6, 0x66, 0x3e,
+  0x5b, 0xaa, 0xd8, 0x05, 0x37, 0xec, 0x49, 0x70, 0xc3, 0xc8, 0x66, 0xb3,
+  0x6a, 0xbb, 0x1e, 0xad, 0xda, 0xae, 0x27, 0x1f, 0x7f, 0xbb, 0x9e, 0x3c,
+  0x60, 0xbb, 0x9e, 0x3c, 0xc8, 0x1f, 0xb4, 0x6a, 0xc3, 0xee, 0xe1, 0xea,
+  0xc6, 0xed, 0x32, 0x27, 0xc9, 0xbd, 0x65, 0x7e, 0x2d, 0xa1, 0x8d, 0x70,
+  0x15, 0x2a, 0x9b, 0x58, 0x5e, 0x36, 0x50, 0x23, 0xfe, 0xdc, 0x3f, 0x7b,
+  0x2d, 0x15, 0xa3, 0x30, 0x22, 0x88, 0x00, 0x79, 0x6c, 0x5a, 0x42, 0xb8,
+  0x96, 0x39, 0x2b, 0x8d, 0x8a, 0x97, 0xa7, 0x3d, 0x0b, 0x8e, 0x2d, 0xe7,
+  0x08, 0x95, 0x57, 0x79, 0x51, 0x0d, 0x17, 0x0c, 0xd4, 0x37, 0xb7, 0xa9,
+  0x13, 0x94, 0x53, 0xe2, 0x39, 0x5f, 0x8a, 0x54, 0xf5, 0xb0, 0x40, 0xb5,
+  0x50, 0x01, 0x9c, 0xf9, 0x29, 0x29, 0x2e, 0x7f, 0xf1, 0xbf, 0x93, 0x60,
+  0xfa, 0x8e, 0x5b, 0xea, 0xfb, 0x80, 0x6b, 0x08, 0xb3, 0x30, 0xb6, 0x8d,
+  0x83, 0xeb, 0xb4, 0xbf, 0x78, 0x34, 0x1c, 0xa6, 0xf3, 0x2a, 0xf4, 0x8a,
+  0x8f, 0x24, 0x51, 0xa4, 0xac, 0x06, 0xd4, 0x95, 0x0d, 0x23, 0x29, 0xe3,
+  0x3c, 0x59, 0xa0, 0xd3, 0x12, 0x5c, 0xc9, 0x10, 0xb7, 0x33, 0xa2, 0x55,
+  0xf6, 0x6a, 0xeb, 0x3a, 0x9e, 0x5e, 0x2e, 0x05, 0x8a, 0x89, 0x0e, 0x6c,
+  0x0d, 0x0a, 0xc2, 0x2b, 0x70, 0x8a, 0x1b, 0x17, 0xd8, 0xac, 0x2c, 0x5e,
+  0x93, 0xc4, 0x65, 0x32, 0xae, 0x4d, 0xf4, 0x6d, 0x57, 0xd3, 0x48, 0xdd,
+  0xfa, 0x21, 0x49, 0x28, 0xd3, 0x99, 0x94, 0x04, 0x2e, 0xec, 0x62, 0xf3,
+  0x4a, 0x28, 0x0a, 0xad, 0x1b, 0x11, 0x88, 0xa1, 0xc0, 0x14, 0xc3, 0xe7,
+  0xe5, 0x15, 0x10, 0x51, 0xbc, 0xc5, 0x15, 0x98, 0xfd, 0xe0, 0x27, 0xc2,
+  0xe8, 0x36, 0x3c, 0xc0, 0x6f, 0x4f, 0xf3, 0x9c, 0xce, 0x73, 0x0e, 0x38,
+  0xb4, 0x5f, 0x24, 0x6d, 0xe1, 0x80, 0xa3, 0x68, 0x63, 0x9c, 0xe7, 0x83,
+  0xa4, 0xd8, 0x90, 0x4c, 0x48, 0x4a, 0x4d, 0x13, 0x2b, 0xba, 0x9e, 0x5e,
+  0xa2, 0xbb, 0x6f, 0xf9, 0xb9, 0x48, 0x6c, 0x58, 0x6d, 0x18, 0x52, 0x6d,
+  0xa3, 0xea, 0x12, 0xcf, 0xd2, 0xb6, 0xe2, 0xe0, 0xca, 0x87, 0xa2, 0xfc,
+  0xb4, 0x48, 0xf1, 0x8c, 0x8b, 0x14, 0x6b, 0xc9, 0x24, 0x2a, 0xc9, 0xea,
+  0x84, 0xd5, 0x75, 0x43, 0x75, 0x56, 0x47, 0xa3, 0x0c, 0xdb, 0xc2, 0x88,
+  0x6f, 0x1c, 0xcc, 0x3c, 0x4b, 0xb1, 0xea, 0xae, 0xde, 0xd7, 0x20, 0xc3,
+  0xa3, 0xea, 0xc4, 0xc9, 0x87, 0x1a, 0x35, 0xa9, 0xb5, 0x16, 0xbc, 0xa4,
+  0x14, 0xd2, 0x1a, 0x05, 0x27, 0x21, 0x8c, 0x7e, 0x62, 0x0a, 0x4c, 0xbb,
+  0xd8, 0x4b, 0xa9, 0x8d, 0x0e, 0x94, 0x8a, 0x0e, 0xa3, 0xd4, 0x70, 0x45,
+  0x05, 0x98, 0x28, 0x3d, 0xad, 0x04, 0xa8, 0x39, 0x10, 0x6b, 0x48, 0x6b,
+  0xf7, 0xe9, 0xf2, 0x59, 0xb8, 0xfd, 0x8d, 0x7f, 0x46, 0x9d, 0x51, 0x91,
+  0xcd, 0xde, 0x77, 0x0e, 0xa2, 0xce, 0x30, 0x07, 0x3e, 0xdf, 0x89, 0xfe,
+  0xb5, 0xb1, 0x06, 0xfe, 0x55, 0xb3, 0x95, 0x0d, 0xf3, 0xd9, 0x07, 0xb4,
+  0xf7, 0x2d, 0x66, 0x70, 0x27, 0xa8, 0xc7, 0xad, 0xfb, 0x62, 0x1c, 0x7a,
+  0x23, 0x3a, 0x8c, 0xf0, 0xdb, 0x90, 0x74, 0xe8, 0x0a, 0x58, 0x0e, 0x8c,
+  0x9c, 0x80, 0x58, 0xe3, 0x27, 0x45, 0x72, 0x53, 0xbf, 0x50, 0xee, 0x1f,
+  0xa4, 0x13, 0xc5, 0xcf, 0xbb, 0x26, 0x6f, 0x3d, 0x50, 0x14, 0x31, 0xbe,
+  0xe8, 0x36, 0xab, 0x20, 0x36, 0x22, 0x82, 0x9d, 0x48, 0xe7, 0xbd, 0x9a,
+  0xb5, 0xfe, 0x57, 0x7c, 0xf3, 0xd7, 0xc5, 0xec, 0x7d, 0x0c, 0xd2, 0x00,
+  0x5a, 0xf0, 0x62, 0xb1, 0xfd, 0x85, 0x2f, 0x29, 0xeb, 0xc5, 0xa6, 0xd0,
+  0xc9, 0xc9, 0xc8, 0xb0, 0x14, 0x79, 0x4d, 0x19, 0x07, 0x3b, 0xa2, 0x34,
+  0x60, 0xb9, 0x2d, 0xd8, 0xc1, 0xba, 0x9f, 0xd0, 0xf9, 0x9d, 0x95, 0x43,
+  0x8c, 0x77, 0x41, 0xbf, 0x51, 0x47, 0x46, 0xa3, 0xcd, 0x76, 0x64, 0xe9,
+  0xf8, 0x14, 0x26, 0xfe, 0xd5, 0x3b, 0xa4, 0x7b, 0x99, 0x94, 0x0b, 0x73,
+  0xd2, 0x05, 0x70, 0x18, 0xae, 0x3c, 0x72, 0x69, 0x71, 0xd1, 0x63, 0x6d,
+  0x98, 0x56, 0x9f, 0xf8, 0xb5, 0x1f, 0x40, 0x0d, 0xd7, 0x14, 0x36, 0x08,
+  0x07, 0xb8, 0xc8, 0x6f, 0x4a, 0xc2, 0x23, 0x4b, 0x26, 0x37, 0x84, 0x4b,
+  0xa1, 0x83, 0x6c, 0x8c, 0x4f, 0xb2, 0xe6, 0x30, 0x51, 0x36, 0xf1, 0x6c,
+  0x76, 0xc3, 0x49, 0x8e, 0xc7, 0x6e, 0xb4, 0xca, 0xb5, 0x15, 0xda, 0x86,
+  0x15, 0xe2, 0x94, 0x67, 0xc9, 0x5a, 0x69, 0x20, 0x0f, 0x75, 0xb2, 0xae,
+  0x80, 0x15, 0x1c, 0x68, 0x3c, 0xd0, 0xc5, 0x58, 0x3f, 0xe6, 0x78, 0xc0,
+  0xb8, 0x61, 0xf8, 0x36, 0x13, 0xf4, 0xd0, 0x7e, 0x10, 0xff, 0x9a, 0xd4,
+  0x8a, 0xf0, 0xbd, 0x4f, 0xe1, 0x48, 0x4f, 0xa8, 0xde, 0x1f, 0x22, 0x7e,
+  0x1c, 0xb6, 0x40, 0x85, 0xd5, 0xe4, 0xe0, 0x52, 0x41, 0x8f, 0x19, 0x1a,
+  0xc8, 0xb5, 0x8e, 0x92, 0xbe, 0xca, 0x54, 0x3c, 0xa5, 0x10, 0x77, 0x0c,
+  0x2d, 0x1f, 0x78, 0x96, 0x74, 0x97, 0x91, 0x47, 0x66, 0x08, 0xa8, 0xff,
+  0x0d, 0xac, 0xd9, 0x86, 0xe1, 0x5a, 0x23, 0x53, 0x33, 0x9e, 0x40, 0x78,
+  0x60, 0x7b, 0xe1, 0x84, 0x37, 0x1d, 0xf5, 0x8d, 0x16, 0x08, 0xfe, 0x21,
+  0x2b, 0xdd, 0x5a, 0x7f, 0x44, 0xbc, 0xf8, 0x44, 0x6e, 0x0c, 0x0f, 0x98,
+  0x63, 0x74, 0x07, 0x17, 0xe6, 0xd4, 0x3b, 0x4e, 0xf0, 0x70, 0xa1, 0x65,
+  0x44, 0xa9, 0x50, 0xc2, 0xbb, 0xbf, 0x9c, 0x9c, 0x9c, 0xbf, 0x7c, 0x76,
+  0x7a, 0x22, 0x3e, 0x3e, 0xf3, 0xd1, 0xeb, 0x8b, 0xbf, 0x9d, 0x02, 0xe1,
+  0xe7, 0xc3, 0xf7, 0x18, 0xd9, 0x2c, 0x72, 0x5d, 0xf3, 0xb0, 0x4b, 0x92,
+  0x98, 0x68, 0xd7, 0x84, 0x71, 0x3f, 0xa4, 0x34, 0xce, 0xa3, 0x97, 0x3f,
+  0xc2, 0x5f, 0x2f, 0xce, 0xe3, 0xb7, 0x3f, 0x1a, 0x53, 0xff, 0x16, 0x10,
+  0xdc, 0x5f, 0x74, 0x3e, 0x65, 0x80, 0xfe, 0x15, 0xcd, 0x88, 0xe2, 0x78,
+  0x8e, 0xcf, 0x23, 0x06, 0x54, 0x43, 0x54, 0xe8, 0xb4, 0xa2, 0xa2, 0x2c,
+  0x45, 0xfe, 0x3e, 0x9d, 0x29, 0x6a, 0x56, 0x49, 0x7e, 0x61, 0xdc, 0x85,
+  0x25, 0x40, 0x66, 0x5c, 0x9d, 0x2d, 0x35, 0x2e, 0x7f, 0x06, 0x56, 0x23,
+  0x01, 0xcf, 0xdb, 0x1c, 0x75, 0x8a, 0xa5, 0xc3, 0x49, 0x52, 0xf8, 0x01,
+  0x82, 0x8d, 0x84, 0x2a, 0x02, 0x26, 0x86, 0x9d, 0x38, 0xeb, 0xc3, 0x1b,
+  0x84, 0xfe, 0x21, 0x49, 0x8e, 0x5a, 0x07, 0x94, 0x72, 0xe0, 0xa3, 0xaf,
+  0x48, 0x46, 0x8c, 0x76, 0x77, 0x7a, 0xeb, 0x00, 0x9f, 0xd3, 0x09, 0xb4,
+  0x03, 0x6c, 0x83, 0x45, 0x03, 0xa9, 0x66, 0x31, 0x33, 0x5a, 0x00, 0xcb,
+  0x8c, 0xd2, 0xa4, 0x8b, 0x15, 0xf6, 0x64, 0x27, 0x52, 0x1c, 0xb9, 0xb0,
+  0xb1, 0xa2, 0x71, 0x54, 0x5a, 0x2c, 0x16, 0x21, 0x93, 0x45, 0x30, 0x27,
+  0xfd, 0x43, 0x4c, 0x16, 0x8d, 0xa1, 0xec, 0xad, 0x6b, 0xb5, 0xa8, 0xad,
+  0x1b, 0xb1, 0x88, 0x1a, 0xdc, 0x57, 0x9d, 0x41, 0xdc, 0xc5, 0x54, 0x9f,
+  0xfe, 0x10, 0xff, 0xfd, 0x26, 0xe0, 0x40, 0xd9, 0x02, 0xb6, 0x9b, 0x5d,
+  0xa3, 0x01, 0x1c, 0x9e, 0x65, 0x71, 0x1b, 0x1f, 0xed, 0x99, 0xbc, 0x15,
+  0xc1, 0x3e, 0xc2, 0x46, 0x08, 0x84, 0x84, 0x1a, 0xa5, 0xb5, 0xf3, 0x70,
+  0xb7, 0x78, 0x2d, 0xe7, 0xd2, 0x1e, 0x35, 0x08, 0xeb, 0xdc, 0x8b, 0x9e,
+  0x9d, 0xbc, 0xe9, 0x46, 0xe7, 0x27, 0xaf, 0x58, 0xb9, 0x3e, 0x79, 0xfd,
+  0x3d, 0xe5, 0x5a, 0x8b, 0x47, 0x1f, 0x91, 0xec, 0x60, 0x8b, 0x7c, 0x14,
+  0x74, 0x67, 0xd3, 0xe1, 0x5d, 0x52, 0x52, 0xca, 0x72, 0x31, 0x0d, 0xd3,
+  0x88, 0x33, 0xd5, 0xf5, 0xeb, 0xbe, 0x85, 0xf3, 0xa7, 0x7b, 0xeb, 0xee,
+  0xaa, 0xf4, 0x0f, 0xb3, 0x95, 0x45, 0x22, 0x3d, 0x6c, 0xbd, 0xbd, 0xc5,
+  0x84, 0xb7, 0xfa, 0xfe, 0x45, 0x87, 0xf0, 0xcf, 0x37, 0x41, 0xd7, 0x57,
+  0xff, 0x45, 0x60, 0xf7, 0xc4, 0x5e, 0x5a, 0x83, 0x75, 0x91, 0xf5, 0xe0,
+  0x0d, 0x9c, 0xfb, 0x4e, 0x1f, 0xd3, 0x42, 0x26, 0xae, 0x24, 0x41, 0xcd,
+  0x4d, 0x05, 0x3d, 0x82, 0x5c, 0x10, 0xfd, 0x17, 0x5d, 0x3c, 0xb7, 0x68,
+  0x1b, 0x71, 0xb6, 0x26, 0x58, 0x7b, 0x8a, 0xf2, 0x6c, 0x23, 0xb7, 0x66,
+  0x26, 0x71, 0x50, 0x10, 0xbc, 0x47, 0xd9, 0x88, 0xeb, 0x0f, 0x62, 0xb6,
+  0x7e, 0x5e, 0x20, 0xb4, 0x48, 0x14, 0x6d, 0xfc, 0xbf, 0xdb, 0xe8, 0x28,
+  0xd8, 0xce, 0x46, 0xef, 0x8a, 0x32, 0xd9, 0x68, 0x6a, 0x22, 0xce, 0xd7,
+  0x23, 0xfc, 0x3a, 0xda, 0xe8, 0x99, 0x47, 0xe5, 0x77, 0xfc, 0x3c, 0x44,
+  0x16, 0x2a, 0x9e, 0xb1, 0xbb, 0x5e, 0x31, 0x09, 0xcf, 0x80, 0x97, 0xf5,
+  0xfb, 0xa7, 0xe8, 0xd0, 0x2f, 0x92, 0x42, 0x6c, 0x3e, 0x54, 0x58, 0x69,
+  0x76, 0x89, 0xee, 0x9d, 0x68, 0xfe, 0x7e, 0x58, 0xee, 0x36, 0xc3, 0xe8,
+  0x33, 0x27, 0x3d, 0xd9, 0xe0, 0x4b, 0x9e, 0xff, 0xe5, 0xb8, 0xff, 0xbb,
+  0xdd, 0x5d, 0xc2, 0x36, 0xdd, 0x44, 0xcc, 0xc5, 0xa7, 0x8f, 0x77, 0xf7,
+  0xb6, 0x42, 0x86, 0x62, 0xaf, 0x6a, 0x28, 0x97, 0xe5, 0x71, 0xb6, 0x8f,
+  0xa0, 0x04, 0x04, 0x50, 0xd9, 0x34, 0x3c, 0x4a, 0x11, 0x2d, 0x0e, 0xe3,
+  0xb6, 0x34, 0xcb, 0x92, 0x61, 0xf4, 0xbc, 0xf2, 0x61, 0xf4, 0x15, 0xa3,
+  0x3a, 0x75, 0x78, 0xfc, 0x07, 0x1d, 0xc3, 0xa6, 0x0c, 0x26, 0x2c, 0xe2,
+  0xb2, 0x96, 0xf5, 0x71, 0xd3, 0xf1, 0x6b, 0xea, 0xdd, 0xee, 0xbc, 0xb2,
+  0xb2, 0x56, 0xb8, 0x9b, 0x85, 0x3b, 0x20, 0x4e, 0x59, 0xad, 0x00, 0x16,
+  0x83, 0xa7, 0x8f, 0xc9, 0x88, 0x3a, 0x11, 0x53, 0x10, 0x2a, 0xc6, 0x4e,
+  0x9e, 0xb8, 0x59, 0x7f, 0xe7, 0x14, 0xd5, 0x5b, 0x0d, 0xd4, 0x4c, 0x86,
+  0xf7, 0x3b, 0xc0, 0x4a, 0x3a, 0xc1, 0x16, 0xef, 0x4f, 0x0b, 0x5c, 0xa0,
+  0xda, 0x29, 0x49, 0x8d, 0xa4, 0xae, 0xe0, 0xf9, 0x52, 0x44, 0xad, 0x55,
+  0x66, 0xc7, 0xf8, 0x1b, 0x8a, 0x8f, 0x60, 0x4f, 0x2b, 0x1e, 0x4a, 0xeb,
+  0x6d, 0xdd, 0x94, 0x58, 0xd6, 0xb4, 0x1a, 0x52, 0x8d, 0x4c, 0xf4, 0xe1,
+  0x63, 0x0c, 0x18, 0xda, 0xb6, 0x3c, 0x15, 0x67, 0x4e, 0xd0, 0xac, 0x84,
+  0x86, 0x62, 0x09, 0x82, 0x7d, 0x01, 0x5a, 0x3e, 0xab, 0xe1, 0xa0, 0x84,
+  0x07, 0x60, 0x98, 0x7c, 0x8c, 0x82, 0x9b, 0xb7, 0xc7, 0xfc, 0xc0, 0x49,
+  0xca, 0xbd, 0x47, 0x65, 0x6b, 0x65, 0xef, 0x1f, 0x54, 0x3c, 0xd3, 0x91,
+  0x75, 0xd6, 0xbd, 0x1b, 0xc9, 0x3b, 0xe5, 0xba, 0x65, 0x3f, 0x84, 0x93,
+  0x32, 0x25, 0xd1, 0x0d, 0x79, 0xd2, 0x95, 0xc6, 0x6b, 0xdc, 0xb5, 0x18,
+  0x44, 0x87, 0x04, 0x39, 0x16, 0xae, 0x0f, 0x72, 0x42, 0x69, 0xac, 0x20,
+  0xd0, 0x15, 0x20, 0x57, 0xe5, 0x65, 0x03, 0x23, 0x9f, 0x1a, 0x96, 0xa2,
+  0x5b, 0x29, 0x23, 0x97, 0x31, 0x28, 0x53, 0x20, 0x2e, 0x10, 0x8f, 0x9f,
+  0xd0, 0xb9, 0x57, 0x59, 0x78, 0x83, 0xe0, 0xfa, 0x91, 0x95, 0x95, 0xc9,
+  0x38, 0xc5, 0x9f, 0x84, 0x1a, 0x8c, 0xc2, 0x56, 0x96, 0x4c, 0x36, 0xba,
+  0xfe, 0xfe, 0x6e, 0x08, 0x91, 0x6c, 0xc0, 0x2d, 0xcd, 0xad, 0x21, 0x9f,
+  0xa7, 0xba, 0x80, 0x32, 0x0e, 0x76, 0xc7, 0x73, 0x09, 0xa6, 0x8a, 0xeb,
+  0xe3, 0x29, 0x62, 0x55, 0xe9, 0x59, 0x7a, 0x4c, 0x73, 0xf5, 0x7a, 0xd7,
+  0x6d, 0xd2, 0x8d, 0x50, 0x09, 0xac, 0xdd, 0x67, 0xa3, 0x12, 0xec, 0x9c,
+  0x8b, 0x1c, 0xac, 0x57, 0xed, 0x31, 0x45, 0x50, 0x6b, 0xb3, 0x77, 0x0c,
+  0xb2, 0x2f, 0xcd, 0xf9, 0x21, 0x8a, 0xcb, 0x62, 0x14, 0x97, 0x86, 0x28,
+  0x2a, 0xbd, 0xb8, 0xa4, 0xa6, 0x2f, 0x1c, 0x86, 0x60, 0x07, 0x8f, 0xb8,
+  0x40, 0x5c, 0x2d, 0x60, 0x56, 0x72, 0x9f, 0x11, 0x7d, 0x7f, 0xc4, 0xf6,
+  0x13, 0xa9, 0x9a, 0xe4, 0x58, 0xec, 0x68, 0x16, 0x01, 0x23, 0x27, 0xae,
+  0x33, 0x46, 0xe7, 0x4a, 0xa7, 0x31, 0x7b, 0x68, 0x8f, 0x23, 0x0e, 0x5a,
+  0x20, 0x78, 0xee, 0xe8, 0xa6, 0xc8, 0xaa, 0x8a, 0xd0, 0x6d, 0x6a, 0x75,
+  0x80, 0xdb, 0x8a, 0xaf, 0xd3, 0xed, 0x08, 0x2b, 0x04, 0x3b, 0x49, 0x88,
+  0x68, 0x63, 0xae, 0x43, 0x47, 0x02, 0x85, 0x8c, 0x89, 0xb1, 0xba, 0xac,
+  0x5f, 0x18, 0xdf, 0xfb, 0xaf, 0x2f, 0x96, 0x83, 0xa9, 0x0a, 0xec, 0x1f,
+  0x17, 0xf7, 0x92, 0xb8, 0x3b, 0x42, 0x4d, 0x92, 0x10, 0x1c, 0x63, 0xfd,
+  0xd7, 0x02, 0xd8, 0x3e, 0xf1, 0xe0, 0x58, 0xe2, 0x03, 0x3c, 0xde, 0xb3,
+  0xf4, 0xb6, 0x0a, 0xcb, 0x86, 0xba, 0xfa, 0xeb, 0xd1, 0xeb, 0xc7, 0x93,
+  0x0d, 0x0d, 0xce, 0x31, 0x61, 0xcf, 0xf6, 0x86, 0x1f, 0x25, 0x34, 0x2a,
+  0x26, 0x20, 0xe8, 0x98, 0xc4, 0xb4, 0x43, 0x58, 0xa9, 0xd4, 0x2b, 0x9b,
+  0xae, 0x22, 0x3c, 0x6f, 0x30, 0xe8, 0x07, 0xd9, 0x74, 0x31, 0xb5, 0x25,
+  0x41, 0x10, 0x46, 0xb1, 0x22, 0xa1, 0x90, 0xed, 0xe2, 0xae, 0x6b, 0x2c,
+  0x0e, 0xf8, 0xbf, 0x10, 0x35, 0xdc, 0xa9, 0xc1, 0x46, 0xec, 0x8f, 0xec,
+  0x6c, 0x5a, 0xf3, 0x5a, 0xe1, 0x54, 0x59, 0x97, 0xc3, 0xc0, 0x53, 0x06,
+  0x4e, 0x64, 0x5b, 0x54, 0xe2, 0xb9, 0xeb, 0x09, 0xc7, 0x1a, 0x0b, 0x48,
+  0xce, 0x53, 0x51, 0xcd, 0x69, 0x2c, 0xec, 0xdf, 0xc7, 0x58, 0x3c, 0x22,
+  0x2f, 0x33, 0x5c, 0x24, 0x0e, 0x19, 0x1e, 0x7e, 0xe1, 0xf3, 0x58, 0x2c,
+  0x8c, 0x32, 0x80, 0x76, 0x6e, 0xb2, 0x51, 0x75, 0xd5, 0xc3, 0x20, 0x3b,
+  0xb5, 0xa7, 0x95, 0x52, 0xe4, 0x10, 0xad, 0xe0, 0x99, 0x5f, 0x6c, 0x62,
+  0x90, 0x06, 0x0d, 0xd2, 0x6c, 0xb8, 0xa3, 0xa5, 0x8d, 0x38, 0x5f, 0x06,
+  0x21, 0xee, 0x48, 0x40, 0xa3, 0x38, 0xd6, 0x6d, 0x56, 0x39, 0x4d, 0x25,
+  0xdd, 0x04, 0x58, 0xc0, 0x78, 0x9c, 0xdd, 0x46, 0x7e, 0x70, 0x99, 0x56,
+  0x85, 0xe8, 0x99, 0xe3, 0x4e, 0xf2, 0xda, 0xc6, 0xfb, 0x0d, 0x14, 0x38,
+  0x36, 0xfe, 0x22, 0xbc, 0x77, 0x98, 0x2f, 0x66, 0xcc, 0x7d, 0x44, 0x99,
+  0x07, 0xfe, 0xf2, 0x3e, 0x9b, 0xe4, 0xc1, 0x30, 0x5a, 0xb8, 0x29, 0xa6,
+  0xfc, 0xfa, 0xab, 0x0d, 0x0d, 0x6a, 0xc3, 0xe2, 0x8f, 0x97, 0x89, 0x7c,
+  0xcd, 0x25, 0x5a, 0x37, 0x2e, 0xf9, 0xa1, 0xef, 0xf5, 0x21, 0xdf, 0xd3,
+  0x88, 0x91, 0xba, 0x1c, 0x99, 0xcb, 0x13, 0xe7, 0x69, 0xc0, 0xa3, 0x9b,
+  0xef, 0xbb, 0x11, 0xa8, 0x6d, 0xdf, 0x77, 0xa3, 0x0b, 0xd0, 0xc2, 0xb6,
+  0x48, 0x6f, 0xdb, 0xdd, 0xd9, 0x7b, 0x04, 0xcb, 0x4c, 0xd5, 0x38, 0x50,
+  0x31, 0x48, 0x6f, 0xbd, 0xe8, 0x17, 0x72, 0x93, 0xee, 0xbe, 0xc7, 0x45,
+  0xc3, 0xa7, 0x7b, 0xd6, 0x6e, 0x8e, 0xa0, 0xde, 0x7f, 0xe9, 0x46, 0xfb,
+  0x6c, 0xbb, 0xdd, 0xfd, 0x3e, 0xb8, 0xee, 0x44, 0x96, 0x44, 0x1e, 0xc4,
+  0x6b, 0xf3, 0xcb, 0x6c, 0x18, 0x19, 0x73, 0x48, 0x82, 0xc7, 0xf6, 0x52,
+  0xc5, 0x19, 0x43, 0x1c, 0xbc, 0x4b, 0x5e, 0x8e, 0x12, 0xc6, 0xcf, 0x72,
+  0x31, 0x72, 0xda, 0x7b, 0x89, 0x6c, 0xab, 0xc8, 0x95, 0x07, 0x37, 0x31,
+  0xec, 0x3d, 0xa5, 0x1d, 0x25, 0x08, 0x32, 0x99, 0xe5, 0x94, 0xd0, 0x6c,
+  0xac, 0x8c, 0xa5, 0x2f, 0xb4, 0xb7, 0x19, 0x18, 0x08, 0xe3, 0x10, 0x0f,
+  0xab, 0xc2, 0x93, 0xc0, 0xdd, 0x82, 0x03, 0xe2, 0x33, 0x6a, 0x0a, 0x3f,
+  0x70, 0xa5, 0x13, 0x47, 0xb2, 0xa5, 0x48, 0x42, 0x2f, 0x47, 0x24, 0x1d,
+  0xa6, 0x23, 0x45, 0xc4, 0x8b, 0xa6, 0x14, 0x27, 0x37, 0x2c, 0xb2, 0xf9,
+  0x5c, 0xaa, 0x9a, 0xe2, 0xf2, 0xc4, 0x66, 0x79, 0xca, 0x09, 0x3e, 0x80,
+  0x9e, 0x6b, 0x38, 0x1b, 0x88, 0x12, 0x14, 0x30, 0xaf, 0xe9, 0x6a, 0xb9,
+  0x63, 0xb2, 0xcb, 0x1a, 0xf2, 0xc7, 0x08, 0xdb, 0x34, 0x0c, 0xe6, 0xdf,
+  0x00, 0x83, 0x53, 0xb6, 0x73, 0x4f, 0x33, 0x8c, 0x5d, 0xa0, 0x9e, 0x35,
+  0xfc, 0x17, 0xf5, 0x37, 0x77, 0x1e, 0xfa, 0xe6, 0xab, 0xf5, 0xf8, 0xf5,
+  0xdf, 0xbb, 0x8d, 0xed, 0x27, 0x61, 0xe3, 0xce, 0x7e, 0xda, 0xb0, 0xd2,
+  0xd4, 0xeb, 0xae, 0x07, 0xb3, 0x03, 0xce, 0xcf, 0xce, 0xf7, 0xb7, 0x4c,
+  0x49, 0x4f, 0xf2, 0x3c, 0x68, 0xa1, 0xcc, 0x48, 0x51, 0xa4, 0x9d, 0x10,
+  0x3b, 0xd6, 0xe1, 0xa9, 0x6a, 0x89, 0x6f, 0xbb, 0x45, 0x0f, 0x5e, 0x42,
+  0x66, 0x02, 0xea, 0x8f, 0x02, 0x91, 0x2d, 0xdc, 0x7a, 0x4a, 0x77, 0x2e,
+  0x79, 0x10, 0x2c, 0x0f, 0x17, 0x79, 0xa8, 0xf4, 0x22, 0xb8, 0xf0, 0xde,
+  0x60, 0x98, 0x16, 0x2d, 0x18, 0x1c, 0x53, 0x35, 0x14, 0x63, 0x4a, 0xe4,
+  0xc2, 0x21, 0x88, 0x88, 0xdd, 0x18, 0x24, 0xe3, 0x45, 0x04, 0xec, 0x8f,
+  0x92, 0x9e, 0x64, 0x1f, 0xa4, 0x40, 0x69, 0x23, 0x1d, 0xb0, 0x94, 0x6b,
+  0x12, 0x82, 0x31, 0x0c, 0x8c, 0xcd, 0x8f, 0x63, 0x3f, 0x05, 0x6c, 0x9a,
+  0xa0, 0x03, 0x80, 0x57, 0x8b, 0x54, 0x71, 0xba, 0x54, 0x70, 0x71, 0x6a,
+  0x76, 0xc4, 0x61, 0x42, 0x69, 0x88, 0x30, 0xc2, 0xd7, 0xa7, 0xfd, 0x0b,
+  0x27, 0xcd, 0xc0, 0xbf, 0xfb, 0x49, 0x01, 0xd3, 0xc2, 0x7c, 0x1c, 0x27,
+  0xee, 0x40, 0x21, 0x9c, 0xbe, 0xec, 0x5f, 0x78, 0xd4, 0x8d, 0x28, 0xc2,
+  0x07, 0x51, 0x1f, 0xe3, 0x23, 0x9d, 0xd2, 0xa9, 0xb4, 0x7b, 0x8c, 0x21,
+  0x2a, 0xb9, 0x13, 0x64, 0x11, 0xe1, 0x78, 0x47, 0x1b, 0xe6, 0xee, 0x0f,
+  0x02, 0x87, 0xf8, 0x27, 0xf6, 0xae, 0x08, 0x84, 0xa9, 0x06, 0x7d, 0x97,
+  0x8b, 0x41, 0xac, 0xab, 0xa6, 0x38, 0x67, 0xe5, 0xdd, 0x74, 0x90, 0x63,
+  0xec, 0x24, 0xc8, 0x66, 0xef, 0x7d, 0xce, 0xb5, 0x29, 0x74, 0xc5, 0x4b,
+  0x54, 0xa4, 0x68, 0xb8, 0xb9, 0xae, 0x45, 0xf3, 0x0d, 0xa3, 0x94, 0xb0,
+  0x36, 0xc9, 0x95, 0x85, 0x4f, 0xdf, 0x8b, 0xb8, 0x70, 0x21, 0xdc, 0x74,
+  0x0d, 0x58, 0xb9, 0x39, 0x87, 0x0e, 0xd6, 0x41, 0x89, 0x31, 0xad, 0x43,
+  0x81, 0x88, 0x57, 0x64, 0xb2, 0x38, 0xd4, 0x28, 0x25, 0xa0, 0x0b, 0xa1,
+  0x3e, 0x02, 0xd4, 0x4c, 0xd9, 0xaf, 0x65, 0x46, 0x0d, 0x9c, 0xc9, 0x73,
+  0x8c, 0x25, 0x97, 0x69, 0x9c, 0x8d, 0x18, 0x4d, 0xa8, 0x34, 0x7e, 0x70,
+  0xde, 0x45, 0xae, 0x4d, 0x0a, 0xdc, 0x99, 0x72, 0x47, 0x08, 0x96, 0xbb,
+  0x65, 0x27, 0xd9, 0xed, 0x57, 0x43, 0x53, 0xac, 0x95, 0x17, 0xaa, 0x87,
+  0xe7, 0x8a, 0x21, 0x28, 0x54, 0xfb, 0x9a, 0xb2, 0xa1, 0xb9, 0x82, 0xc2,
+  0xdb, 0x97, 0xcf, 0x4e, 0xcd, 0x7a, 0xc9, 0xfa, 0x10, 0xe2, 0xa3, 0x99,
+  0x2a, 0xc2, 0x56, 0xeb, 0xdd, 0x42, 0x3b, 0xe2, 0x21, 0xa5, 0x2d, 0x66,
+  0x19, 0xf4, 0x1f, 0xb1, 0xde, 0x38, 0x46, 0xa8, 0x66, 0xe0, 0x5e, 0x57,
+  0x56, 0xe8, 0x29, 0x09, 0xac, 0x56, 0xd6, 0x40, 0x4e, 0xec, 0x7b, 0xcd,
+  0xae, 0x68, 0x01, 0x1b, 0x5f, 0x1e, 0x26, 0x6b, 0x58, 0xd6, 0x47, 0x0f,
+  0x93, 0x35, 0x2d, 0xaf, 0xab, 0x18, 0xda, 0x21, 0xf9, 0x8a, 0x21, 0x9c,
+  0x8d, 0xf6, 0x12, 0x7d, 0x7f, 0xc5, 0x1d, 0xfc, 0xc7, 0x02, 0x11, 0xc8,
+  0x96, 0x15, 0x8c, 0x22, 0xb8, 0xcf, 0x09, 0x97, 0xdd, 0x3d, 0x04, 0x11,
+  0x6d, 0x9b, 0x0a, 0xb6, 0x78, 0x72, 0x37, 0x9a, 0xa7, 0x1c, 0xd4, 0x93,
+  0x7a, 0x15, 0xed, 0xbc, 0x90, 0x32, 0x2f, 0x9b, 0xcf, 0xdf, 0x9c, 0xbd,
+  0x8a, 0x2f, 0xce, 0xb6, 0x48, 0x35, 0xa7, 0x96, 0x97, 0xa4, 0x72, 0x96,
+  0x2a, 0xfb, 0x3a, 0xd5, 0x6b, 0xc5, 0x51, 0xb3, 0x59, 0xa2, 0xdf, 0xc9,
+  0xc2, 0x95, 0xd3, 0xf0, 0xf4, 0xad, 0xc1, 0x9d, 0x17, 0xb4, 0x42, 0x42,
+  0x3a, 0x8a, 0x72, 0x70, 0x60, 0x86, 0x09, 0xaa, 0x84, 0x1a, 0xd0, 0x5e,
+  0x07, 0xd4, 0x1a, 0x2c, 0xca, 0xbb, 0x48, 0x2a, 0xea, 0x94, 0x48, 0x8e,
+  0x78, 0xc1, 0xfb, 0x2e, 0x28, 0xf6, 0xb5, 0x61, 0x8a, 0xb5, 0x96, 0x22,
+  0xc7, 0x5a, 0x1d, 0x5c, 0x1a, 0xa1, 0xca, 0x81, 0x49, 0x25, 0x45, 0x91,
+  0xdf, 0xa8, 0x20, 0x83, 0xcc, 0x16, 0x88, 0x75, 0x86, 0x91, 0x24, 0x25,
+  0xe8, 0xb5, 0xed, 0xb5, 0x74, 0xa0, 0x33, 0xc4, 0x54, 0xe6, 0x82, 0xe1,
+  0x65, 0x8b, 0x88, 0x62, 0xf7, 0xe3, 0x33, 0x22, 0xf5, 0x39, 0xa3, 0x40,
+  0x39, 0x23, 0xde, 0xdf, 0x59, 0xb7, 0x60, 0x8b, 0x5b, 0x89, 0xac, 0x49,
+  0x6f, 0xb8, 0x18, 0x71, 0x55, 0x2c, 0xb0, 0x1c, 0x50, 0x4b, 0x7a, 0xf2,
+  0x29, 0x65, 0x2e, 0x21, 0x22, 0xad, 0xf3, 0x0e, 0x47, 0x24, 0x73, 0x6a,
+  0x3f, 0xda, 0xe0, 0x6d, 0x91, 0x92, 0x2b, 0x89, 0xa9, 0xfa, 0xa3, 0xc7,
+  0x71, 0xcb, 0x12, 0x24, 0x42, 0xe2, 0xd9, 0x18, 0x7a, 0x60, 0x10, 0x69,
+  0x25, 0xfa, 0x0b, 0xf4, 0x35, 0xe2, 0x44, 0x9a, 0xf6, 0x1b, 0x21, 0x38,
+  0x16, 0x71, 0x6f, 0xfc, 0xd4, 0x53, 0x18, 0xf1, 0x43, 0xbe, 0xa1, 0x2a,
+  0xca, 0x7b, 0x26, 0x82, 0x43, 0x7b, 0x6b, 0x56, 0xdd, 0x45, 0x83, 0x82,
+  0x00, 0xab, 0xb5, 0x28, 0x24, 0x36, 0x6d, 0xb1, 0x78, 0xd9, 0x6f, 0xd1,
+  0xe4, 0x16, 0xfc, 0x14, 0x96, 0x7b, 0x22, 0x9f, 0x14, 0x29, 0x8b, 0x04,
+  0x35, 0x95, 0xb2, 0x1d, 0xa4, 0x68, 0x5a, 0xe8, 0x30, 0x68, 0x3a, 0xda,
+  0xe4, 0xa7, 0xfd, 0xeb, 0x65, 0x92, 0xa0, 0x59, 0xfc, 0xd6, 0xa6, 0x7c,
+  0x24, 0x6c, 0x4d, 0xa0, 0xa8, 0xc1, 0xef, 0x92, 0x12, 0xae, 0x91, 0x7a,
+  0x7b, 0x5b, 0x4b, 0x43, 0x16, 0x9a, 0x5b, 0xf5, 0x71, 0x6b, 0xb3, 0x34,
+  0x5b, 0x7f, 0x08, 0x89, 0xd6, 0x46, 0x17, 0x93, 0xc5, 0xb0, 0x38, 0x30,
+  0x7b, 0xbe, 0x16, 0xbd, 0x2e, 0x14, 0xfa, 0xd6, 0x21, 0xd6, 0x1a, 0x1e,
+  0x72, 0x98, 0x50, 0x5f, 0xd6, 0x4a, 0x80, 0x72, 0x6e, 0xa9, 0x43, 0x60,
+  0xc2, 0x70, 0x11, 0xd4, 0x05, 0xa1, 0x70, 0x39, 0x05, 0x12, 0xb1, 0xfc,
+  0x47, 0xa1, 0x74, 0xf4, 0x51, 0x86, 0xae, 0x7e, 0x94, 0xc8, 0xb4, 0xd3,
+  0x68, 0x53, 0x4b, 0xfd, 0x18, 0x30, 0xfc, 0x53, 0xf9, 0xea, 0xc0, 0x14,
+  0x23, 0xc2, 0x1b, 0xb7, 0xd1, 0xdc, 0xfe, 0x8f, 0x3f, 0x5a, 0x99, 0x0b,
+  0xcd, 0x63, 0x5b, 0x6d, 0x05, 0x35, 0x05, 0x26, 0x7d, 0x94, 0xeb, 0xbd,
+  0x49, 0x03, 0xf6, 0xb4, 0x44, 0x3e, 0x62, 0x20, 0xb7, 0x4a, 0x8e, 0x18,
+  0x7a, 0xb1, 0xd9, 0x17, 0x74, 0x99, 0xd2, 0xa5, 0x2c, 0x1b, 0xab, 0xb2,
+  0x1b, 0x96, 0xd8, 0xb4, 0x15, 0x27, 0x83, 0x80, 0xff, 0xa5, 0x85, 0xdd,
+  0xab, 0x2f, 0x93, 0x8d, 0xc7, 0x03, 0x85, 0xf6, 0x66, 0x26, 0x25, 0x66,
+  0x2c, 0xe5, 0x86, 0x53, 0x06, 0xb2, 0x32, 0x92, 0xca, 0xa1, 0x92, 0x3c,
+  0x44, 0xb7, 0x66, 0x49, 0x81, 0xb7, 0x28, 0x2c, 0x0c, 0x8b, 0x54, 0x2c,
+  0xd0, 0xa5, 0x0a, 0xbc, 0x5c, 0x5f, 0x7a, 0x12, 0xc8, 0xd8, 0x61, 0x17,
+  0x92, 0xc3, 0x16, 0x6c, 0x52, 0x52, 0x63, 0xa7, 0x18, 0xcb, 0x3a, 0x13,
+  0xb6, 0x14, 0xf0, 0xfa, 0x12, 0xe4, 0x3a, 0x95, 0xb4, 0x24, 0xa8, 0x23,
+  0x34, 0x9c, 0x63, 0xd8, 0x6b, 0x64, 0x44, 0xa1, 0x3f, 0x2a, 0xc1, 0xf6,
+  0x5c, 0xd3, 0xae, 0x21, 0x6f, 0xcf, 0x15, 0xc9, 0xd4, 0x8e, 0x11, 0x08,
+  0x08, 0x23, 0x90, 0x53, 0x61, 0xe4, 0x4b, 0xd6, 0x02, 0x6c, 0x7a, 0x0a,
+  0xeb, 0x69, 0x14, 0xf2, 0x38, 0x25, 0x13, 0x0c, 0xb0, 0x01, 0x9c, 0x8d,
+  0x5f, 0x44, 0x7e, 0xc8, 0x12, 0x27, 0x7b, 0x35, 0x31, 0x92, 0xc3, 0xc2,
+  0x9f, 0xb0, 0x0b, 0x9e, 0x16, 0xa1, 0x15, 0x17, 0x9e, 0x25, 0x6d, 0x5e,
+  0x71, 0x6e, 0x83, 0x32, 0xae, 0xcc, 0xca, 0x91, 0x00, 0x38, 0xae, 0xe5,
+  0x85, 0x66, 0xa5, 0x84, 0x3b, 0x77, 0x7d, 0xc3, 0x8d, 0x65, 0x7f, 0x04,
+  0xc5, 0xe8, 0xa0, 0x7a, 0xf3, 0xbb, 0x72, 0x08, 0xb0, 0x12, 0xab, 0xb4,
+  0x5a, 0xcf, 0xa3, 0xf5, 0xd4, 0x39, 0x18, 0xcd, 0xfe, 0xce, 0x6e, 0x17,
+  0xff, 0xdd, 0xeb, 0xb2, 0x62, 0xb5, 0xbf, 0xb3, 0x6f, 0x6a, 0xf3, 0xd5,
+  0x0e, 0x09, 0x3d, 0x4e, 0x26, 0x6a, 0x22, 0xe9, 0xfd, 0xdb, 0xdb, 0x40,
+  0x1d, 0xc8, 0x3a, 0x6c, 0x6f, 0xbc, 0x64, 0xac, 0x76, 0x21, 0x29, 0x62,
+  0x6d, 0xe1, 0xed, 0xa5, 0x42, 0x6c, 0x46, 0x28, 0x5c, 0xe4, 0xa3, 0x20,
+  0xe6, 0x3e, 0x55, 0x57, 0xc0, 0x2a, 0x21, 0x4a, 0x7c, 0x78, 0xff, 0xc8,
+  0x96, 0xbb, 0x45, 0x67, 0x69, 0x13, 0x71, 0x59, 0xa4, 0xaa, 0x36, 0xcc,
+  0xf2, 0xb6, 0x0d, 0xd9, 0xb0, 0xb6, 0xc9, 0x20, 0x5d, 0x08, 0x83, 0x31,
+  0xa0, 0xd5, 0x52, 0x68, 0x19, 0x98, 0xd8, 0x01, 0xa1, 0xfd, 0x03, 0x89,
+  0xe3, 0x1a, 0x7a, 0xc1, 0xa7, 0xfc, 0x85, 0xc2, 0x10, 0xf1, 0x5f, 0xfb,
+  0xe1, 0x48, 0x58, 0x9e, 0xa1, 0x48, 0x2b, 0xc2, 0x2b, 0x74, 0x9d, 0x24,
+  0x0a, 0x56, 0x8c, 0xf2, 0xf2, 0xa4, 0xad, 0xc4, 0x12, 0xc2, 0x96, 0x27,
+  0x53, 0x67, 0x99, 0x4e, 0xa4, 0xfe, 0xe3, 0xa2, 0x4c, 0xef, 0x75, 0x93,
+  0x2d, 0xbd, 0xc1, 0xac, 0x60, 0xbf, 0x96, 0x64, 0xaf, 0x70, 0xf9, 0xeb,
+  0x5d, 0x5f, 0xa7, 0x6b, 0x3a, 0xff, 0x50, 0x9e, 0x9d, 0x68, 0x74, 0x4c,
+  0x9c, 0x4c, 0xaa, 0xb8, 0xbc, 0x1e, 0xd6, 0xe5, 0x2a, 0xf4, 0xa1, 0xeb,
+  0x0e, 0x1e, 0xca, 0x2f, 0x9e, 0x1b, 0x90, 0xaa, 0x29, 0x45, 0xa7, 0xcf,
+  0x8e, 0xc4, 0x06, 0x13, 0x49, 0x5d, 0x28, 0xb5, 0xac, 0x93, 0xd7, 0x00,
+  0x9b, 0x32, 0xc4, 0x20, 0x42, 0xfa, 0x68, 0x11, 0x08, 0xaf, 0x52, 0x5d,
+  0xb3, 0x26, 0x54, 0xb4, 0x92, 0x31, 0x36, 0xe3, 0xb5, 0xad, 0x29, 0x67,
+  0xa6, 0xc4, 0x9a, 0x55, 0x79, 0x5b, 0x02, 0xd8, 0xd8, 0x15, 0x48, 0x65,
+  0x8f, 0x54, 0x11, 0x95, 0xd1, 0x35, 0x07, 0x12, 0x1d, 0x55, 0xc6, 0xc9,
+  0x4c, 0xb7, 0x01, 0xce, 0xbe, 0x49, 0xc6, 0xb4, 0x0a, 0x94, 0x89, 0x8a,
+  0x05, 0xa6, 0xd4, 0xe5, 0x55, 0x1b, 0x27, 0x9b, 0x85, 0xa7, 0x4e, 0xd6,
+  0x9a, 0x93, 0xa5, 0xe6, 0xe1, 0x7d, 0x5e, 0x92, 0x0b, 0x5b, 0x8f, 0x12,
+  0xe3, 0xf7, 0x47, 0xa4, 0xd1, 0x53, 0x0d, 0xcb, 0x68, 0x6f, 0xff, 0xcb,
+  0x47, 0x5d, 0xfe, 0xfd, 0xf1, 0xce, 0x57, 0x7c, 0x7a, 0x5e, 0x9e, 0x5c,
+  0x3c, 0x8f, 0x46, 0x05, 0x9c, 0xdd, 0xa6, 0xaf, 0x0a, 0x3f, 0x8b, 0xd3,
+  0xa4, 0xb8, 0x4a, 0x8a, 0x0a, 0xcb, 0x55, 0xc7, 0xe5, 0xb4, 0x9a, 0xc7,
+  0x3b, 0x3b, 0x2d, 0x59, 0x6c, 0x4d, 0x42, 0xf8, 0x5c, 0x98, 0xcf, 0xf5,
+  0x51, 0x6c, 0x1c, 0xbd, 0xbd, 0x78, 0xf1, 0xf5, 0x1f, 0x36, 0xa2, 0x6c,
+  0x9a, 0xcc, 0xd7, 0x97, 0xc8, 0x6a, 0x18, 0x47, 0x0d, 0xb8, 0x5a, 0x34,
+  0x1d, 0xc4, 0xb8, 0xef, 0xd1, 0xa1, 0x24, 0x3e, 0xf9, 0xe8, 0xde, 0x44,
+  0xe1, 0xd6, 0x79, 0x84, 0xb5, 0xc3, 0x59, 0x81, 0x95, 0x37, 0x6a, 0xf1,
+  0xc7, 0x5e, 0x36, 0x64, 0x28, 0x8d, 0xa0, 0xe1, 0x37, 0x97, 0x0c, 0xcf,
+  0x4d, 0xb6, 0x55, 0x54, 0x77, 0x5b, 0xec, 0x9c, 0xc6, 0x8e, 0x16, 0x83,
+  0x29, 0xfa, 0x25, 0x47, 0x91, 0x5a, 0x2b, 0x42, 0xd4, 0x8c, 0x41, 0x1c,
+  0x29, 0x5f, 0x1d, 0x93, 0xe4, 0x8e, 0x7b, 0x4f, 0x66, 0x7c, 0x0b, 0x49,
+  0xb2, 0x4f, 0xd8, 0x69, 0x6d, 0x67, 0xff, 0x19, 0x33, 0x16, 0xed, 0x20,
+  0x70, 0xb7, 0xbe, 0x75, 0x36, 0x17, 0x44, 0x88, 0x0b, 0x2e, 0x6d, 0x83,
+  0x54, 0x7b, 0x7f, 0xbf, 0x36, 0xb5, 0x58, 0x0c, 0xe7, 0x9a, 0xd7, 0x4b,
+  0x7f, 0xa3, 0xb4, 0xe8, 0xed, 0x3c, 0x89, 0x90, 0x2b, 0x76, 0xde, 0x02,
+  0x56, 0xd7, 0xb7, 0xdd, 0x8a, 0xe9, 0xec, 0x17, 0xe3, 0x72, 0x72, 0x5a,
+  0x2a, 0x27, 0x00, 0xca, 0x84, 0x7c, 0xa4, 0x3e, 0x0a, 0x7f, 0x33, 0x68,
+  0x40, 0x9f, 0x7b, 0x33, 0x68, 0x10, 0xcd, 0xcd, 0xf8, 0x98, 0x7b, 0x81,
+  0xbb, 0xed, 0xed, 0x05, 0x3e, 0x14, 0x93, 0x62, 0x8e, 0x26, 0x8e, 0x32,
+  0xbc, 0x19, 0x3f, 0xb8, 0xc5, 0x45, 0x29, 0x07, 0x07, 0xab, 0xb4, 0xe9,
+  0xb5, 0x0c, 0x22, 0x63, 0x36, 0x47, 0x97, 0x32, 0x2c, 0x93, 0xc5, 0xfd,
+  0x0b, 0x85, 0xe4, 0xb1, 0xb8, 0x0d, 0x1c, 0x18, 0x73, 0xb2, 0x88, 0x75,
+  0x0f, 0xf3, 0x19, 0x1a, 0xa2, 0x45, 0x51, 0x1e, 0xa3, 0x9d, 0x07, 0x79,
+  0x6f, 0xa5, 0x61, 0x29, 0x2c, 0xee, 0x69, 0xfb, 0x1e, 0x88, 0x34, 0x99,
+  0xcc, 0xdf, 0x1c, 0x9f, 0x5f, 0x44, 0x17, 0x67, 0xae, 0xa9, 0x97, 0x2b,
+  0x65, 0x11, 0x6a, 0x7b, 0x51, 0xe4, 0x45, 0x50, 0xbc, 0xd1, 0x71, 0x0e,
+  0x52, 0x2c, 0x5f, 0x9e, 0x9b, 0x0a, 0x33, 0x2c, 0xa7, 0x51, 0x7c, 0xb4,
+  0x49, 0xc5, 0x6b, 0xac, 0x56, 0x00, 0x2f, 0x9a, 0x56, 0x2f, 0x6a, 0x46,
+  0x21, 0xb0, 0xde, 0x46, 0x9a, 0x7f, 0x43, 0x7b, 0xe3, 0x88, 0x2d, 0x1e,
+  0x9e, 0xe7, 0xa6, 0x9d, 0x8d, 0x0c, 0x10, 0x87, 0x49, 0x58, 0xe3, 0x68,
+  0x78, 0x1c, 0x0c, 0x50, 0x5f, 0x36, 0x72, 0x56, 0x25, 0x44, 0xd9, 0xac,
+  0xa0, 0xe9, 0x13, 0x18, 0x0b, 0x79, 0x89, 0x98, 0x48, 0xba, 0x54, 0xc6,
+  0x9e, 0x25, 0x1e, 0x6f, 0x8e, 0xf9, 0x18, 0x4f, 0x92, 0xcb, 0x80, 0x05,
+  0xbc, 0x19, 0x67, 0xa9, 0x02, 0x3f, 0x61, 0xa4, 0xf2, 0x66, 0xe2, 0x00,
+  0xfd, 0xfd, 0x0c, 0x17, 0xc6, 0xa5, 0x9d, 0x21, 0x0b, 0x32, 0xce, 0x9d,
+  0x02, 0xd9, 0x33, 0x04, 0xbc, 0x27, 0xfa, 0x17, 0x25, 0x8f, 0x4e, 0x5a,
+  0x63, 0x5f, 0x97, 0x0a, 0x8b, 0x21, 0x5a, 0xfe, 0xe8, 0x99, 0x1a, 0xa1,
+  0x4e, 0x1e, 0x74, 0xd4, 0x9b, 0x03, 0x75, 0x0f, 0x2c, 0x88, 0xd4, 0x55,
+  0x8d, 0x03, 0xf8, 0x27, 0xff, 0x3e, 0x07, 0xbf, 0x0e, 0x08, 0xf6, 0x55,
+  0xe0, 0xfe, 0xa5, 0xde, 0xd6, 0xe5, 0xc2, 0xec, 0x87, 0x91, 0x97, 0xba,
+  0xec, 0x15, 0x20, 0x23, 0x1e, 0xca, 0x5a, 0xf0, 0x15, 0x87, 0x25, 0x79,
+  0xb6, 0x08, 0x0e, 0x07, 0x7e, 0x93, 0xce, 0x53, 0x62, 0xde, 0x6e, 0x62,
+  0x9d, 0x9b, 0xf9, 0xa6, 0x55, 0xc9, 0xc8, 0x2f, 0xa0, 0x9b, 0x17, 0x20,
+  0xa1, 0x56, 0xca, 0x67, 0xc5, 0x56, 0xbc, 0x3c, 0x5c, 0xba, 0xc0, 0x5c,
+  0x1c, 0xb5, 0x24, 0xd4, 0xcd, 0xbf, 0xbd, 0x79, 0xfe, 0x77, 0xa5, 0xac,
+  0x2d, 0x4d, 0x02, 0x6d, 0xe9, 0xc7, 0x89, 0x96, 0xb3, 0xb1, 0x40, 0x52,
+  0x57, 0xb3, 0xb6, 0x02, 0xfc, 0x97, 0x54, 0x8f, 0xf0, 0xb1, 0xdb, 0x46,
+  0x39, 0x25, 0xb4, 0x6c, 0x62, 0x88, 0x28, 0x3c, 0xd7, 0x17, 0x0b, 0xf3,
+  0x7e, 0xef, 0x31, 0xb9, 0xa1, 0x9e, 0x1f, 0x3f, 0xde, 0xdf, 0xdb, 0xdd,
+  0xea, 0xd5, 0x8a, 0x88, 0xa2, 0xe8, 0xb4, 0x15, 0x9c, 0xa6, 0x3b, 0xcb,
+  0xda, 0xda, 0x63, 0x20, 0x27, 0x1e, 0xbd, 0xcd, 0x93, 0x1f, 0xcf, 0x5f,
+  0x7b, 0x73, 0x84, 0x39, 0x79, 0x41, 0xc0, 0x6d, 0x73, 0xb4, 0x0a, 0x67,
+  0xad, 0x7d, 0xc5, 0xc9, 0xa0, 0xba, 0x8e, 0x81, 0x30, 0xdb, 0xe7, 0x45,
+  0x86, 0x16, 0x9c, 0x0e, 0x2e, 0x49, 0xe7, 0x34, 0x9f, 0x8d, 0xf2, 0x59,
+  0x7c, 0x36, 0x86, 0xb5, 0x4f, 0xb1, 0xfc, 0xe4, 0xca, 0xd9, 0xb9, 0xf4,
+  0xf9, 0xe9, 0x2a, 0x32, 0xd8, 0x3e, 0x6a, 0x77, 0xee, 0x0c, 0xae, 0xf7,
+  0x87, 0x9d, 0xb8, 0x20, 0x53, 0x88, 0x5f, 0x71, 0x52, 0xc4, 0xcc, 0xcf,
+  0x38, 0x7a, 0x45, 0x1f, 0xf6, 0x90, 0xe1, 0x98, 0x1a, 0x58, 0x57, 0x0b,
+  0xa9, 0xbd, 0x15, 0x55, 0xa1, 0x30, 0xb2, 0x9a, 0xe3, 0x8b, 0x1b, 0xfd,
+  0xc8, 0x28, 0x5b, 0xdc, 0xe8, 0xfa, 0x4c, 0x8d, 0xe6, 0x77, 0xaf, 0xd8,
+  0xb1, 0xae, 0x13, 0x89, 0xe6, 0x94, 0x4b, 0xae, 0xb3, 0xa7, 0x5b, 0x4a,
+  0x9a, 0x24, 0x2f, 0xe8, 0x21, 0x85, 0x04, 0x85, 0x42, 0x63, 0xd9, 0x8a,
+  0xf4, 0xea, 0xaf, 0x17, 0x17, 0x75, 0x55, 0x58, 0x43, 0xcc, 0xe8, 0xf5,
+  0x4d, 0x0d, 0x93, 0x22, 0xff, 0x56, 0x22, 0xb9, 0x25, 0xb9, 0x77, 0x32,
+  0x39, 0x9e, 0xac, 0x17, 0x99, 0xb2, 0x30, 0xf4, 0xa0, 0xb5, 0x71, 0x66,
+  0x75, 0x5c, 0x41, 0x46, 0xe2, 0x45, 0x31, 0xb0, 0x1b, 0xc8, 0xf8, 0x37,
+  0xf1, 0x40, 0x74, 0x51, 0x52, 0xae, 0x02, 0xe5, 0xa1, 0x27, 0xb3, 0x51,
+  0xcd, 0x10, 0x45, 0x57, 0x21, 0x2d, 0x7e, 0x7a, 0x4b, 0x48, 0x56, 0xa3,
+  0x34, 0x7a, 0xe2, 0x1b, 0x63, 0x8e, 0x78, 0x2a, 0x62, 0x79, 0x62, 0x37,
+  0xac, 0x4a, 0x9a, 0x12, 0xfc, 0x44, 0xdb, 0xd3, 0x75, 0x82, 0xba, 0x30,
+  0xa6, 0x8b, 0x58, 0xd2, 0xc6, 0x5f, 0x36, 0x82, 0x52, 0x18, 0x07, 0x79,
+  0xb1, 0x01, 0x59, 0x73, 0xb6, 0xd0, 0xf0, 0x86, 0x81, 0x5e, 0x12, 0xb9,
+  0x45, 0x91, 0x5d, 0xdc, 0xc8, 0xab, 0x8d, 0xc8, 0x04, 0x77, 0x35, 0x0d,
+  0x62, 0x2b, 0x43, 0xbd, 0x60, 0x6a, 0x4e, 0x6c, 0x97, 0x8d, 0xc2, 0xe2,
+  0x30, 0xac, 0xa6, 0x15, 0xdc, 0x04, 0x65, 0xd5, 0x8b, 0x29, 0x7f, 0x19,
+  0xe0, 0x14, 0xaf, 0xcf, 0x2e, 0x4e, 0x0e, 0xc4, 0x58, 0x65, 0xab, 0x91,
+  0x0b, 0xf4, 0x98, 0x24, 0x88, 0x12, 0xb2, 0x94, 0x60, 0xc8, 0x63, 0x86,
+  0x9b, 0xec, 0x74, 0x37, 0xc0, 0x9f, 0x09, 0xa0, 0x12, 0x79, 0x1a, 0xc7,
+  0x42, 0x54, 0xad, 0x89, 0x63, 0x84, 0xec, 0x2c, 0xa6, 0x4c, 0x26, 0x28,
+  0xdc, 0x70, 0x5f, 0xa0, 0xc0, 0x7a, 0xa8, 0x68, 0xca, 0x5e, 0xcc, 0x45,
+  0x55, 0xf4, 0x48, 0x88, 0x95, 0x18, 0x32, 0xfc, 0xf6, 0xc4, 0x16, 0xa0,
+  0xd4, 0x1f, 0x87, 0xf0, 0x24, 0x1f, 0x14, 0xeb, 0xfc, 0x40, 0x9d, 0xc4,
+  0x39, 0x84, 0xad, 0x11, 0x4f, 0xed, 0x7c, 0xd1, 0xc6, 0x2e, 0x35, 0x8f,
+  0xb6, 0xd8, 0xa6, 0xd1, 0x73, 0xdd, 0x8a, 0xbc, 0x51, 0x99, 0x53, 0x6c,
+  0x0b, 0x63, 0xab, 0x79, 0x5a, 0xad, 0x50, 0x6c, 0xbc, 0x15, 0x4f, 0x03,
+  0x99, 0x2f, 0xbc, 0xfb, 0x3b, 0xf1, 0xdc, 0x0c, 0x94, 0x87, 0x94, 0x12,
+  0xc0, 0x2f, 0x03, 0xec, 0xa2, 0xd4, 0x69, 0xcd, 0xc0, 0xe8, 0x29, 0x9e,
+  0xa2, 0x35, 0xb9, 0xd5, 0xee, 0xee, 0xea, 0x38, 0xb2, 0xe8, 0x64, 0xb6,
+  0xcf, 0xb8, 0x3a, 0x28, 0xb4, 0xff, 0x78, 0xc7, 0x29, 0xe8, 0xd9, 0x63,
+  0x47, 0xfc, 0x92, 0xf4, 0x0d, 0x04, 0x28, 0xd9, 0x35, 0x65, 0xaf, 0x33,
+  0xaa, 0x16, 0xc6, 0x41, 0xa9, 0xad, 0x2a, 0xab, 0x59, 0xc3, 0xba, 0xce,
+  0xfa, 0xef, 0x55, 0x59, 0xcd, 0x20, 0xf6, 0x5d, 0x63, 0xed, 0x5a, 0x44,
+  0x52, 0xaf, 0x5d, 0x6a, 0xc9, 0xa4, 0x96, 0x49, 0x18, 0x1d, 0x8e, 0x0b,
+  0x86, 0x86, 0x4e, 0x26, 0x51, 0x4b, 0x6e, 0xf1, 0x2b, 0x21, 0x16, 0x7a,
+  0x3e, 0x9b, 0xe9, 0x63, 0x6c, 0x2c, 0xe0, 0xb0, 0x48, 0x74, 0x94, 0x90,
+  0xaf, 0xd7, 0x89, 0x3c, 0xa6, 0xb0, 0x73, 0xaa, 0xc4, 0x10, 0x4a, 0x55,
+  0x16, 0xaa, 0x51, 0xe8, 0x5a, 0x21, 0x1b, 0xa4, 0x12, 0xf2, 0xf2, 0x0e,
+  0x10, 0x29, 0x30, 0xfa, 0x35, 0x1f, 0x88, 0x4f, 0x0c, 0xd5, 0x46, 0xfc,
+  0xd2, 0x0f, 0x59, 0x06, 0xc9, 0x0a, 0x96, 0x69, 0xb4, 0xe0, 0xa8, 0x04,
+  0x1c, 0x88, 0xcd, 0xac, 0x2d, 0x38, 0x28, 0x2a, 0xba, 0xa4, 0xc2, 0xb7,
+  0x94, 0x91, 0x1e, 0x69, 0xa9, 0x21, 0x14, 0x90, 0xf6, 0x7a, 0x3b, 0xdd,
+  0x50, 0xc5, 0x5f, 0xa5, 0x9e, 0x84, 0xf0, 0x58, 0xca, 0x48, 0x6b, 0x22,
+  0xd2, 0x3e, 0x97, 0x16, 0x06, 0x4c, 0x20, 0x55, 0x70, 0x61, 0x72, 0xf1,
+  0xc3, 0x37, 0xef, 0xbe, 0x74, 0x58, 0x90, 0xb9, 0x33, 0xa3, 0xd6, 0x16,
+  0xb0, 0xd8, 0x77, 0x2a, 0xdd, 0x5a, 0x51, 0x50, 0x1b, 0x80, 0x81, 0xd1,
+  0xd3, 0x24, 0x80, 0x61, 0xa7, 0x7e, 0xb8, 0xdb, 0x84, 0x82, 0x47, 0xb3,
+  0x60, 0x75, 0x1d, 0x03, 0xcc, 0xc2, 0xc5, 0xd9, 0x28, 0xda, 0xeb, 0xce,
+  0x0b, 0xa3, 0xdd, 0x44, 0xdb, 0x39, 0x7c, 0xb1, 0x65, 0x13, 0xbd, 0x84,
+  0x1d, 0x78, 0x5e, 0x44, 0xc2, 0x0f, 0x59, 0xa0, 0x83, 0x8e, 0xe1, 0xf5,
+  0x91, 0xd6, 0x69, 0x9b, 0xe9, 0xab, 0x3a, 0xec, 0x5e, 0x29, 0xc1, 0x65,
+  0x23, 0xe3, 0x72, 0x0b, 0x04, 0xf2, 0x4b, 0xd7, 0x96, 0xfc, 0x60, 0xcf,
+  0xac, 0x63, 0x8e, 0xbe, 0x8b, 0xea, 0xa1, 0x93, 0xae, 0x21, 0xd7, 0xbc,
+  0xf5, 0xf1, 0xf2, 0x3f, 0xd7, 0x8c, 0x53, 0x35, 0x23, 0xd8, 0x5d, 0x27,
+  0xd2, 0xd4, 0xbc, 0xb5, 0xd7, 0xfb, 0x6a, 0x5d, 0x14, 0x7f, 0x09, 0x96,
+  0x89, 0x95, 0x44, 0x58, 0xaa, 0xab, 0xaf, 0x62, 0xed, 0x0e, 0x48, 0xab,
+  0x04, 0x89, 0x7e, 0x19, 0x0a, 0x3a, 0x65, 0xd1, 0x31, 0x84, 0x0b, 0xc7,
+  0x80, 0x36, 0xa0, 0xee, 0xb4, 0x8d, 0xc8, 0x04, 0x0d, 0x35, 0xcf, 0xf0,
+  0x2b, 0xf3, 0x84, 0xba, 0x07, 0x0c, 0x1a, 0xa7, 0xa9, 0xd4, 0x95, 0x09,
+  0x74, 0x86, 0x02, 0x3e, 0x3f, 0x05, 0x21, 0x43, 0x60, 0xaa, 0x63, 0xbf,
+  0xd0, 0x3c, 0xc6, 0x8b, 0x20, 0xed, 0xa3, 0x73, 0x21, 0xbc, 0xf9, 0xda,
+  0xe5, 0x67, 0x4a, 0xfe, 0x35, 0xfd, 0x93, 0x4c, 0xb2, 0xd6, 0x26, 0xfe,
+  0x37, 0x72, 0x5c, 0xcc, 0xb6, 0x9d, 0x4c, 0xd2, 0x89, 0xbb, 0x59, 0xa6,
+  0x1c, 0x48, 0xf8, 0xa6, 0x3e, 0x91, 0x1a, 0x8b, 0xaf, 0x4d, 0xd5, 0x90,
+  0xcd, 0xfe, 0xf9, 0xeb, 0x93, 0xef, 0xcf, 0xb6, 0x56, 0x39, 0x98, 0xea,
+  0xb0, 0x68, 0x26, 0xf1, 0x29, 0xd1, 0x7c, 0x58, 0xc9, 0x68, 0x22, 0xe9,
+  0xf8, 0xfb, 0x7e, 0x3f, 0x3e, 0x3a, 0x7f, 0x49, 0x59, 0x91, 0x7d, 0xf8,
+  0x09, 0x3b, 0xda, 0xdc, 0x1f, 0x02, 0xd6, 0x8f, 0xde, 0x96, 0x82, 0x55,
+  0x5c, 0xca, 0xcd, 0x2a, 0x31, 0x99, 0x9c, 0x21, 0x44, 0x5b, 0xad, 0xe5,
+  0x81, 0xa4, 0xcd, 0x6d, 0x6a, 0xd0, 0x63, 0xd9, 0x3c, 0x89, 0x16, 0xfb,
+  0x82, 0x07, 0xf2, 0xd9, 0x25, 0x9e, 0x46, 0x69, 0x77, 0xb4, 0x9c, 0x9a,
+  0xe9, 0x0c, 0xea, 0x06, 0xde, 0xe9, 0xec, 0x11, 0x69, 0x43, 0xe7, 0x45,
+  0xb7, 0x01, 0xe2, 0x4a, 0x24, 0x55, 0x1a, 0xf2, 0x53, 0x90, 0x52, 0x00,
+  0x0d, 0xce, 0xb1, 0xa2, 0x4d, 0x8f, 0x40, 0xc9, 0x58, 0xe5, 0xdf, 0x88,
+  0x9b, 0x29, 0x57, 0x07, 0x1b, 0x7c, 0x69, 0xa5, 0x33, 0xaa, 0x39, 0xe2,
+  0x59, 0x28, 0xc8, 0xae, 0xa8, 0x81, 0x36, 0x6c, 0x6e, 0xbb, 0x5a, 0x35,
+  0x3a, 0x0c, 0xd0, 0x23, 0x69, 0x7a, 0x28, 0x48, 0x6b, 0x6d, 0xd9, 0x78,
+  0xf7, 0x28, 0xed, 0x28, 0x91, 0xc6, 0x92, 0xe8, 0x55, 0x94, 0x9a, 0x13,
+  0x98, 0x95, 0xf7, 0xc9, 0xc6, 0x73, 0xcd, 0x7d, 0xb6, 0x48, 0xcd, 0xc7,
+  0xaf, 0x3b, 0x60, 0xdb, 0x8e, 0x17, 0xd1, 0xc1, 0x9a, 0xbc, 0x70, 0x80,
+  0x01, 0x5b, 0x94, 0x06, 0x56, 0x4d, 0x48, 0x8a, 0x01, 0x59, 0x92, 0xbc,
+  0x2c, 0xe2, 0x6e, 0x27, 0x28, 0x54, 0xd3, 0x43, 0xfd, 0xa0, 0x55, 0xc5,
+  0x90, 0x24, 0x6e, 0x4e, 0xcf, 0x0b, 0x21, 0x9f, 0x7a, 0x25, 0xc5, 0x4a,
+  0xb8, 0x98, 0x40, 0xa7, 0x20, 0x19, 0x72, 0xd6, 0xd5, 0x56, 0xba, 0x88,
+  0x56, 0x84, 0xe1, 0x2a, 0x46, 0xfc, 0x11, 0x82, 0x0c, 0x78, 0xc5, 0x10,
+  0x7b, 0x35, 0xda, 0x4c, 0x06, 0x65, 0x3e, 0x59, 0x54, 0x64, 0xc4, 0x42,
+  0x77, 0x16, 0xc2, 0x9c, 0x6c, 0xd9, 0xac, 0x3c, 0x6a, 0xd5, 0x4d, 0xce,
+  0x0b, 0x26, 0xdc, 0x8b, 0x05, 0x89, 0x92, 0x51, 0xd5, 0x7d, 0xcc, 0xf1,
+  0x3c, 0xc2, 0xb6, 0x71, 0xb3, 0xb9, 0x29, 0x6a, 0x69, 0x4e, 0x71, 0xeb,
+  0xd7, 0x6d, 0xbe, 0xf8, 0x97, 0x1a, 0x35, 0x38, 0xc0, 0xa3, 0x04, 0x42,
+  0xb7, 0xae, 0x11, 0xcf, 0x3f, 0xa1, 0x28, 0x6c, 0x23, 0xa0, 0xb4, 0xc8,
+  0xca, 0xce, 0xaa, 0x7e, 0x3e, 0x59, 0xd9, 0x19, 0x04, 0x4f, 0x7f, 0x2d,
+  0x9a, 0x72, 0xf7, 0xd5, 0xfa, 0x57, 0x99, 0xa0, 0xfe, 0xc2, 0xa8, 0x3c,
+  0xb3, 0x71, 0x76, 0xd9, 0xab, 0x93, 0x87, 0x0f, 0x1b, 0xd0, 0x52, 0xc3,
+  0xca, 0x36, 0xef, 0x53, 0xa3, 0xae, 0xb4, 0x57, 0x08, 0x93, 0xa9, 0x8e,
+  0x91, 0xb0, 0xdc, 0xf1, 0xb1, 0xd4, 0x19, 0x02, 0x3f, 0xee, 0xf1, 0xcc,
+  0x17, 0x01, 0x6f, 0xaa, 0xd9, 0x4f, 0x05, 0xbd, 0x44, 0x93, 0x5e, 0x42,
+  0x59, 0x17, 0xc2, 0xc2, 0xa4, 0x7d, 0x03, 0xb9, 0x92, 0xa7, 0xe5, 0x0a,
+  0xf6, 0x50, 0xa3, 0x93, 0x30, 0x8f, 0x68, 0x44, 0x90, 0xdc, 0x3f, 0x08,
+  0xb2, 0xde, 0xfa, 0xc3, 0x88, 0xc1, 0x8c, 0x6d, 0x2d, 0x54, 0x4c, 0x97,
+  0x94, 0x56, 0x60, 0x61, 0x3a, 0xfb, 0xeb, 0x99, 0x57, 0x9b, 0xbb, 0x6d,
+  0x77, 0xd0, 0x53, 0xab, 0x2c, 0x70, 0x3c, 0xc5, 0x34, 0xd9, 0x8d, 0x8c,
+  0x36, 0xdf, 0xc9, 0x2f, 0xc8, 0x8a, 0x7e, 0xc8, 0x66, 0xa0, 0xba, 0x94,
+  0x5b, 0xca, 0x23, 0x24, 0x8b, 0xe4, 0x5e, 0x28, 0xdd, 0x28, 0x6f, 0x71,
+  0x00, 0x86, 0x77, 0x49, 0xd9, 0x84, 0xa0, 0xea, 0x6e, 0x9e, 0xf9, 0xda,
+  0xbd, 0xde, 0x47, 0xd4, 0x06, 0x5a, 0x04, 0x61, 0x2c, 0x6f, 0x67, 0xd9,
+  0xad, 0x0d, 0x75, 0x34, 0x55, 0x6e, 0xdd, 0x08, 0x30, 0x51, 0x3e, 0x02,
+  0xa3, 0x8b, 0xbc, 0x68, 0x14, 0x5c, 0x7c, 0x9a, 0xe8, 0xe6, 0xe3, 0x2d,
+  0x1a, 0xdb, 0xb8, 0x9a, 0x6f, 0xee, 0x6e, 0x51, 0x8f, 0x82, 0xae, 0x2e,
+  0x91, 0x96, 0x21, 0xcc, 0x48, 0x8e, 0x3b, 0x71, 0x8b, 0x87, 0x53, 0x24,
+  0x18, 0xd6, 0xce, 0x95, 0xea, 0xcd, 0xc4, 0x4d, 0xe9, 0x59, 0x4a, 0x2e,
+  0xe2, 0x4c, 0x79, 0xcc, 0x54, 0x0d, 0xf0, 0x6a, 0x41, 0xab, 0x47, 0xc6,
+  0x89, 0xd0, 0x4a, 0x1c, 0xab, 0xb2, 0x99, 0xb9, 0xb6, 0xfb, 0x99, 0xa0,
+  0x3a, 0xc3, 0xea, 0x4d, 0x46, 0x31, 0xa6, 0x31, 0x45, 0x97, 0x45, 0xee,
+  0x8b, 0x4b, 0x08, 0xe6, 0x80, 0x6b, 0xb0, 0xc5, 0xb8, 0x01, 0xe9, 0xec,
+  0x3a, 0x2b, 0xf2, 0x19, 0xd5, 0x12, 0xbb, 0x4e, 0x8a, 0x8c, 0x48, 0xbf,
+  0xf3, 0xe2, 0xec, 0xd5, 0x49, 0xc7, 0x5c, 0xe6, 0x78, 0xd8, 0xc7, 0x19,
+  0x7b, 0x0b, 0xbd, 0x6a, 0x23, 0xb5, 0x2d, 0x0d, 0x18, 0x30, 0x23, 0x10,
+  0xef, 0x86, 0xef, 0xc5, 0xdb, 0x48, 0x45, 0x79, 0x53, 0x0b, 0x65, 0x9b,
+  0x8f, 0x35, 0x2c, 0x92, 0x83, 0xed, 0x13, 0x25, 0x32, 0x0e, 0x00, 0xcf,
+  0x6f, 0xbe, 0x08, 0x9c, 0x24, 0xf8, 0x0e, 0x77, 0x5c, 0x1c, 0x86, 0x92,
+  0xf7, 0xc5, 0x71, 0xa0, 0xec, 0x67, 0x21, 0xe7, 0x19, 0xed, 0xbf, 0xeb,
+  0x95, 0xd9, 0x98, 0xde, 0x79, 0x86, 0xb5, 0x74, 0x32, 0xde, 0xa8, 0x0b,
+  0x47, 0x1b, 0x25, 0x2a, 0xc5, 0xd5, 0x86, 0x03, 0xf3, 0xed, 0xdc, 0xb5,
+  0x3e, 0xe8, 0x6a, 0x4b, 0xf7, 0xcd, 0xc7, 0x98, 0xcc, 0xa7, 0x77, 0xd8,
+  0x63, 0xf3, 0x3b, 0xd3, 0x37, 0x77, 0xbd, 0xd4, 0xf4, 0x2f, 0x27, 0xef,
+  0xe3, 0x9a, 0xfe, 0x1b, 0x5c, 0x61, 0x0d, 0x6e, 0xb6, 0x2e, 0x72, 0x94,
+  0xe1, 0x61, 0xdd, 0xda, 0x0d, 0xc6, 0x57, 0x5a, 0x28, 0xa6, 0xdb, 0x24,
+  0xd6, 0xaf, 0xac, 0x56, 0x96, 0x58, 0xd0, 0x20, 0x8b, 0x01, 0xa0, 0xb9,
+  0x2a, 0xd6, 0xcc, 0x27, 0x55, 0x1b, 0x9a, 0x7e, 0xf7, 0xb2, 0xcc, 0x87,
+  0x59, 0x2d, 0xac, 0xd2, 0xdc, 0xaa, 0x5a, 0x2b, 0x8c, 0x8c, 0x17, 0xea,
+  0xa7, 0x54, 0x21, 0x02, 0x9b, 0x6b, 0x49, 0x5e, 0x02, 0xd9, 0x82, 0xcc,
+  0x11, 0xea, 0xc7, 0xcf, 0x0a, 0x2c, 0xa8, 0x65, 0xe3, 0xe5, 0xa4, 0x9f,
+  0x2e, 0x63, 0x0b, 0xa8, 0x1d, 0x9f, 0xcc, 0xd0, 0xde, 0xe8, 0x9c, 0x08,
+  0x66, 0x23, 0xd4, 0x93, 0x09, 0x69, 0x08, 0x9a, 0x07, 0x10, 0xbb, 0x89,
+  0x2a, 0x55, 0x9c, 0x82, 0x00, 0xf6, 0x28, 0xae, 0xa2, 0xba, 0x00, 0xd8,
+  0x5a, 0x42, 0xb1, 0x02, 0x9c, 0xf7, 0xa3, 0xa1, 0x5f, 0xb8, 0x11, 0x24,
+  0xb9, 0x09, 0x32, 0x02, 0x08, 0x6e, 0x65, 0x48, 0x4d, 0x55, 0x74, 0x47,
+  0x98, 0x14, 0xdb, 0x9d, 0x60, 0xdc, 0xc5, 0x35, 0x41, 0xe4, 0x5d, 0x73,
+  0x3d, 0x35, 0x62, 0x5b, 0x76, 0x27, 0x5c, 0x1c, 0x26, 0x9f, 0x8b, 0xe8,
+  0xe8, 0x28, 0xf9, 0xac, 0x90, 0x0a, 0x75, 0x51, 0xf4, 0x3d, 0x0f, 0xc2,
+  0x86, 0xe7, 0x69, 0xbc, 0x3a, 0x39, 0x96, 0x1c, 0xcf, 0x92, 0xd7, 0x1c,
+  0x79, 0x96, 0xba, 0xfa, 0x4b, 0x9c, 0x94, 0xc3, 0x2c, 0x13, 0x49, 0x1c,
+  0xfd, 0x74, 0x18, 0xa2, 0x17, 0xc8, 0xee, 0xaa, 0x79, 0x54, 0xee, 0x44,
+  0x90, 0x1d, 0xe5, 0x8c, 0x3c, 0xc0, 0x61, 0xcc, 0x14, 0xbe, 0xcf, 0xa1,
+  0xbc, 0xe4, 0x87, 0x34, 0xd8, 0xbf, 0x40, 0xf9, 0xbe, 0x41, 0x4c, 0x1c,
+  0x94, 0x2d, 0x55, 0x01, 0x6e, 0x6e, 0x6e, 0x76, 0x7b, 0xb5, 0x90, 0x1f,
+  0x5e, 0x86, 0x18, 0xab, 0xc5, 0x95, 0x15, 0x89, 0x53, 0xf0, 0xcc, 0x5e,
+  0x6f, 0xc9, 0xe9, 0x92, 0x57, 0x3e, 0x19, 0xa6, 0x6c, 0x08, 0x7a, 0xf5,
+  0x3e, 0xc3, 0x0c, 0x32, 0x8d, 0x97, 0xcb, 0x9a, 0x6b, 0x7e, 0x05, 0xcc,
+  0x62, 0xfb, 0x9e, 0x66, 0x8b, 0x80, 0x48, 0xec, 0xba, 0x9a, 0x1b, 0x45,
+  0xd1, 0x80, 0xe3, 0x25, 0x93, 0x79, 0x30, 0x43, 0xa4, 0xbf, 0x65, 0xe5,
+  0x3f, 0xa2, 0xe0, 0xa3, 0xd3, 0xf3, 0xd7, 0x84, 0xab, 0x04, 0x23, 0x4c,
+  0x67, 0x25, 0x87, 0xa9, 0xe2, 0x67, 0x98, 0xaa, 0x3c, 0x73, 0xaa, 0xbe,
+  0x7b, 0x2e, 0x20, 0x8a, 0x30, 0x0a, 0x56, 0xed, 0xe2, 0xa0, 0x78, 0x38,
+  0x12, 0x88, 0x01, 0x66, 0x8c, 0x1e, 0xa2, 0x5d, 0xa9, 0x95, 0xa2, 0x79,
+  0x8f, 0x42, 0x9f, 0xbd, 0xc8, 0x74, 0xad, 0x30, 0x8e, 0x89, 0x69, 0x9e,
+  0xde, 0x6e, 0x56, 0x40, 0x36, 0x45, 0x5d, 0xbd, 0xf0, 0xe8, 0x2a, 0x35,
+  0x55, 0x92, 0xc5, 0x46, 0x66, 0xc2, 0x8d, 0x24, 0x4a, 0x58, 0x62, 0x74,
+  0x69, 0x57, 0x14, 0x62, 0x75, 0x85, 0xec, 0xcd, 0xeb, 0xfa, 0x31, 0x2f,
+  0x27, 0x6c, 0x6f, 0xed, 0x8b, 0x49, 0x86, 0xb1, 0x2e, 0xea, 0x3c, 0x5e,
+  0x84, 0xf3, 0x59, 0xb3, 0x80, 0xa0, 0xb6, 0x16, 0x2a, 0x21, 0x18, 0x7b,
+  0xf6, 0xf4, 0xe2, 0x1e, 0xf0, 0x3c, 0x40, 0x4d, 0xcb, 0xc8, 0xf3, 0x75,
+  0x97, 0x7b, 0x1d, 0x2c, 0x90, 0xe3, 0x87, 0x75, 0x13, 0xd6, 0x8d, 0xf8,
+  0x09, 0xc2, 0x8b, 0x1f, 0x3b, 0x55, 0xc8, 0x10, 0xa7, 0x2d, 0x4d, 0xa6,
+  0x20, 0x09, 0xcf, 0x34, 0x99, 0x9d, 0x4a, 0xc9, 0x95, 0x99, 0x97, 0x3b,
+  0xb9, 0x48, 0xe4, 0x0a, 0x72, 0xa3, 0xbb, 0x9a, 0x29, 0xee, 0xdc, 0x0d,
+  0xe6, 0xb0, 0xb8, 0xcd, 0x87, 0x90, 0x7a, 0xe8, 0x75, 0x83, 0xfb, 0x2b,
+  0x1e, 0x53, 0x8e, 0x98, 0x15, 0x8d, 0x5e, 0x9a, 0x30, 0xe8, 0xe2, 0x68,
+  0x86, 0xbd, 0x5a, 0xcc, 0xde, 0xc3, 0x10, 0xfc, 0x54, 0x1c, 0x4d, 0xd1,
+  0xcc, 0xb8, 0x2a, 0x43, 0x42, 0xc5, 0x47, 0x19, 0xdd, 0xd7, 0xb6, 0x90,
+  0x14, 0x05, 0x42, 0x9d, 0x02, 0x45, 0xbd, 0x6d, 0xda, 0xe6, 0x42, 0xa3,
+  0x13, 0x03, 0x30, 0x8f, 0xca, 0x2c, 0xe0, 0x2a, 0xb2, 0xe6, 0x07, 0xef,
+  0x47, 0xd8, 0xf7, 0xce, 0x46, 0xe0, 0x46, 0x1f, 0x40, 0xdd, 0x32, 0x9a,
+  0xb5, 0x44, 0xaf, 0xdf, 0x75, 0xd9, 0x06, 0x75, 0x89, 0x01, 0x51, 0xf1,
+  0xa0, 0x0e, 0xe3, 0x0b, 0x6d, 0x0e, 0xe1, 0xa6, 0x1d, 0x78, 0xe4, 0xe6,
+  0x40, 0x17, 0x90, 0x62, 0x07, 0xcc, 0xf5, 0xd7, 0xc5, 0x4c, 0x8b, 0xb5,
+  0x0a, 0xbf, 0x88, 0x73, 0x6c, 0x9b, 0x77, 0x16, 0x7e, 0xfb, 0x33, 0x67,
+  0x2e, 0x4f, 0xf3, 0xca, 0xe3, 0x89, 0x9c, 0x48, 0x16, 0x73, 0x0c, 0x51,
+  0x7c, 0xe6, 0x3c, 0x28, 0x61, 0x45, 0x18, 0x70, 0x50, 0xfb, 0x0c, 0x23,
+  0x6b, 0xcc, 0xf5, 0xdf, 0x0d, 0x29, 0x03, 0xc9, 0x75, 0x9e, 0x8d, 0x4a,
+  0x92, 0x3a, 0x10, 0x52, 0x8a, 0xdc, 0x70, 0xe2, 0xc3, 0x4f, 0x2a, 0x83,
+  0x5d, 0x47, 0x39, 0xf7, 0x78, 0x22, 0x24, 0xb5, 0x3d, 0x81, 0x5b, 0xbd,
+  0x0a, 0xc4, 0x5e, 0x26, 0xea, 0x74, 0xbe, 0x44, 0x94, 0x62, 0x05, 0xcd,
+  0x51, 0x71, 0x86, 0x83, 0xbd, 0x5c, 0xe7, 0x3f, 0x65, 0x2b, 0x8b, 0x06,
+  0xd6, 0x1c, 0x1d, 0xf4, 0x5c, 0x91, 0xe3, 0x19, 0xf4, 0x1a, 0xae, 0x19,
+  0xc9, 0xa6, 0xbd, 0xde, 0xee, 0xce, 0x8e, 0xa4, 0xfd, 0x48, 0x66, 0x68,
+  0xe5, 0x28, 0x88, 0xf4, 0x16, 0x66, 0x35, 0x05, 0x94, 0xca, 0x20, 0x22,
+  0x80, 0x32, 0x24, 0xd1, 0x96, 0x29, 0xef, 0xef, 0x92, 0x24, 0x59, 0x31,
+  0x10, 0xd0, 0xa8, 0xb5, 0x44, 0x20, 0x23, 0x00, 0xa1, 0x8d, 0x2e, 0xe0,
+  0x04, 0xa3, 0xca, 0x01, 0xe2, 0x0a, 0x13, 0x82, 0xc0, 0x81, 0xa7, 0x33,
+  0x02, 0x56, 0xe0, 0x1c, 0x55, 0xfe, 0x18, 0x96, 0xb9, 0x6b, 0x62, 0x21,
+  0xee, 0xb1, 0xdd, 0x94, 0x60, 0xf8, 0x67, 0xb2, 0x5b, 0xb6, 0x9a, 0xed,
+  0x1a, 0x67, 0x4e, 0x07, 0xf0, 0x51, 0x73, 0xfb, 0xa5, 0xd1, 0x07, 0x1c,
+  0x3a, 0x1d, 0x8e, 0x52, 0x3a, 0xcb, 0xcd, 0x94, 0xd4, 0xdf, 0xea, 0x73,
+  0x69, 0x3b, 0x8c, 0xce, 0x81, 0xe1, 0xeb, 0xa6, 0x79, 0x14, 0x6a, 0xf7,
+  0xc3, 0x97, 0xfb, 0x9e, 0xf8, 0x62, 0xe0, 0x77, 0xdb, 0xae, 0x07, 0x03,
+  0x98, 0x42, 0x99, 0x0d, 0x16, 0xad, 0x57, 0x92, 0x1a, 0x0c, 0xfa, 0x04,
+  0x42, 0x40, 0xdb, 0x8c, 0xf7, 0x5e, 0xe8, 0x80, 0xd9, 0x04, 0xae, 0x74,
+  0x66, 0xee, 0x9e, 0xe9, 0xb2, 0x32, 0xef, 0xf7, 0xa7, 0xca, 0x3a, 0x59,
+  0x2e, 0xa3, 0x4a, 0x26, 0x4a, 0x3b, 0x11, 0x87, 0x2c, 0xcd, 0x87, 0xcb,
+  0x83, 0xe6, 0x6a, 0xa8, 0xc5, 0x4e, 0x8c, 0xa9, 0x53, 0xed, 0xf4, 0x81,
+  0xd9, 0xd1, 0xed, 0x03, 0x58, 0x4d, 0x56, 0x76, 0x48, 0xeb, 0xa2, 0x4b,
+  0xba, 0x18, 0xce, 0x0d, 0xf2, 0x98, 0xb5, 0x0a, 0xb7, 0x2f, 0xc5, 0xed,
+  0x09, 0x54, 0xf5, 0x44, 0x8a, 0x98, 0x4f, 0x60, 0x57, 0x0a, 0xb1, 0x91,
+  0xcd, 0x50, 0x73, 0x88, 0x28, 0xb4, 0xfe, 0x35, 0xc8, 0x9b, 0x5f, 0xb4,
+  0x2c, 0x00, 0x6e, 0xe7, 0x6b, 0x5f, 0x2e, 0xc6, 0x8f, 0xc4, 0x0b, 0xc5,
+  0x82, 0x31, 0x05, 0xd2, 0x6b, 0xb0, 0x3d, 0x70, 0x0a, 0x0f, 0x80, 0x6d,
+  0x20, 0x62, 0x87, 0x27, 0x1a, 0x3b, 0xe8, 0xb8, 0x0d, 0xc9, 0x16, 0xc7,
+  0x45, 0x3d, 0x05, 0x5d, 0x47, 0xeb, 0xc8, 0xc4, 0x8e, 0x0c, 0xdc, 0xe6,
+  0x56, 0xfc, 0x60, 0xa1, 0xd8, 0x8a, 0x95, 0x1f, 0xd3, 0x62, 0xf3, 0x20,
+  0x99, 0x78, 0x36, 0x9f, 0xad, 0x8f, 0xf3, 0x4d, 0xa2, 0xaf, 0x2f, 0x11,
+  0xcf, 0x3c, 0x81, 0x58, 0x11, 0x2b, 0x3f, 0x89, 0x48, 0x8c, 0x5d, 0x1a,
+  0xd9, 0x65, 0x9a, 0xfa, 0x85, 0xfc, 0xce, 0x4c, 0x3c, 0x15, 0xe3, 0x02,
+  0x21, 0x08, 0xbf, 0xa0, 0xd9, 0xf2, 0x5b, 0x11, 0xbd, 0xa5, 0xe2, 0xa7,
+  0x54, 0x38, 0x45, 0xbb, 0x39, 0x49, 0xcf, 0x45, 0x6b, 0xce, 0x6a, 0xc2,
+  0xc8, 0xff, 0x04, 0x6d, 0x9c, 0x14, 0x33, 0x81, 0xbb, 0x22, 0x69, 0xc8,
+  0x24, 0x16, 0xa2, 0x81, 0xc2, 0xf0, 0x55, 0x82, 0x78, 0xf2, 0x54, 0xf4,
+  0x32, 0x23, 0xd4, 0xca, 0xa0, 0xf7, 0x82, 0xb8, 0xa5, 0x59, 0x44, 0x89,
+  0x3e, 0xba, 0xcf, 0x35, 0x1e, 0x0e, 0x64, 0x71, 0xb8, 0x65, 0x7d, 0xc9,
+  0x98, 0x65, 0x9a, 0xf3, 0xdb, 0x58, 0x19, 0x22, 0xb0, 0x55, 0x57, 0x72,
+  0xa3, 0xc1, 0x00, 0x49, 0xd7, 0xbd, 0x2b, 0x6b, 0xe6, 0x59, 0xd4, 0x9b,
+  0x7f, 0x00, 0x89, 0x37, 0xc6, 0x17, 0xe7, 0x5c, 0x39, 0xf4, 0xe1, 0x68,
+  0x97, 0x4c, 0xfa, 0x65, 0xd7, 0x6c, 0x61, 0x3d, 0xb7, 0xe2, 0xa9, 0x47,
+  0xa5, 0xc2, 0x12, 0xb2, 0x51, 0x10, 0xe9, 0xde, 0x9a, 0x16, 0x70, 0xcc,
+  0x1b, 0xa5, 0xc2, 0x87, 0x22, 0xb7, 0xd3, 0x12, 0x1e, 0x2f, 0x9f, 0xc1,
+  0xa6, 0xa2, 0x49, 0xf9, 0xb2, 0xe7, 0x54, 0x14, 0xf6, 0x2b, 0xcb, 0x9b,
+  0xe0, 0x26, 0xaa, 0xf2, 0xc0, 0xc5, 0x9e, 0x6c, 0xd0, 0x3e, 0x36, 0x01,
+  0x52, 0x84, 0xbd, 0x89, 0x39, 0x3e, 0x17, 0x45, 0xcc, 0xab, 0x40, 0x5e,
+  0xb0, 0xe4, 0xd0, 0x11, 0xf7, 0x27, 0xe4, 0xd6, 0xe8, 0x6a, 0x81, 0x89,
+  0x5a, 0xc8, 0x4d, 0xab, 0x2a, 0x9d, 0xce, 0x2b, 0x8e, 0x90, 0x84, 0x43,
+  0x8f, 0x43, 0xae, 0x8f, 0xb7, 0x0c, 0x54, 0x6e, 0xa2, 0x02, 0x1d, 0xe9,
+  0x54, 0xb0, 0xb7, 0xa4, 0xa8, 0x04, 0xbe, 0x46, 0xf6, 0x7f, 0x2a, 0xfd,
+  0x28, 0x09, 0xaf, 0x2c, 0x87, 0x80, 0xfc, 0x2b, 0x85, 0x74, 0xa7, 0xc9,
+  0x9d, 0xe7, 0xb0, 0x20, 0x46, 0xa3, 0x58, 0xf2, 0x56, 0x83, 0xcb, 0xe8,
+  0x75, 0x02, 0x71, 0x27, 0xbb, 0xa7, 0x3c, 0x50, 0x2e, 0x86, 0x98, 0x3f,
+  0xf5, 0x6f, 0x3c, 0x68, 0x66, 0xd7, 0x5d, 0xb1, 0x24, 0xb0, 0xa1, 0x2b,
+  0x8e, 0x97, 0x6d, 0x66, 0x79, 0x29, 0xf6, 0x75, 0x1d, 0x97, 0xa6, 0xdd,
+  0x07, 0x1c, 0x29, 0x3b, 0xa6, 0xb5, 0x0e, 0x51, 0xad, 0x6c, 0x76, 0xfd,
+  0x8c, 0x50, 0x20, 0x44, 0x74, 0xc8, 0xc7, 0xf5, 0xf6, 0x8e, 0x20, 0xb3,
+  0x9a, 0xd1, 0x0e, 0xc7, 0x68, 0xae, 0x8c, 0xd5, 0x9e, 0x3f, 0x8a, 0x24,
+  0xf9, 0x84, 0xbc, 0x45, 0x6a, 0xe5, 0x66, 0xdd, 0xc9, 0xc1, 0x64, 0x45,
+  0xc4, 0x2b, 0x68, 0xb0, 0xeb, 0x0b, 0x1a, 0x78, 0x36, 0x6a, 0xaa, 0x07,
+  0x79, 0xbe, 0xc8, 0xcc, 0x8d, 0x84, 0x47, 0x45, 0x84, 0xa4, 0xf2, 0xb0,
+  0x5a, 0x73, 0xff, 0x80, 0x15, 0xaf, 0x13, 0x8c, 0x3e, 0x05, 0xe1, 0xa8,
+  0x69, 0x48, 0xa0, 0x9e, 0x4d, 0xbd, 0x68, 0x3a, 0x8d, 0x3c, 0xb0, 0x2e,
+  0xdf, 0x0e, 0xa6, 0x5e, 0x0c, 0x74, 0x30, 0x72, 0x2d, 0x36, 0x34, 0x40,
+  0x2f, 0xb4, 0x0b, 0x9d, 0x04, 0x44, 0x74, 0x5a, 0xfd, 0x80, 0x66, 0x4b,
+  0xa0, 0x46, 0xd8, 0x03, 0x25, 0x1c, 0x89, 0x73, 0x2f, 0xd1, 0x4c, 0x22,
+  0x19, 0xc3, 0x30, 0x80, 0x38, 0x42, 0x15, 0xae, 0xf9, 0x3e, 0xc6, 0x41,
+  0x39, 0xaa, 0xb5, 0x56, 0xb6, 0xe6, 0xce, 0x2a, 0xf4, 0x45, 0x35, 0xb2,
+  0x08, 0x42, 0x81, 0xd4, 0x13, 0x76, 0xa7, 0x11, 0x8b, 0xa0, 0x11, 0xb1,
+  0xea, 0x83, 0x9f, 0x76, 0xed, 0xaf, 0x07, 0x5f, 0xee, 0x48, 0xb1, 0x51,
+  0xac, 0xf7, 0x6a, 0x9f, 0x68, 0x86, 0xb7, 0xc1, 0xb5, 0x8b, 0x7b, 0x86,
+  0x0f, 0xc1, 0x4f, 0xf3, 0x9c, 0x47, 0x9a, 0x26, 0x0e, 0xf6, 0x31, 0xa8,
+  0x3f, 0xdd, 0x46, 0x00, 0x4c, 0x1d, 0x82, 0x22, 0xe4, 0xc2, 0x0c, 0xa2,
+  0x10, 0x8c, 0x1c, 0xf9, 0x95, 0xc9, 0x70, 0x73, 0x63, 0x96, 0xbf, 0xa3,
+  0x5f, 0xd9, 0x0d, 0xb8, 0xf1, 0xfa, 0xec, 0xdd, 0xf9, 0x9b, 0xb3, 0x1f,
+  0xff, 0xbe, 0xb1, 0x65, 0x13, 0x42, 0x8a, 0x74, 0xc3, 0xcf, 0xd3, 0x8c,
+  0x6a, 0xdd, 0x5a, 0xd7, 0x29, 0xf7, 0xc1, 0x71, 0x5a, 0x42, 0x8f, 0xea,
+  0x48, 0x60, 0xdc, 0x57, 0x0c, 0xaa, 0xf2, 0x64, 0x4d, 0x1a, 0x0c, 0x6d,
+  0x3b, 0x10, 0x73, 0xa7, 0x83, 0xff, 0xea, 0x1c, 0x61, 0xa3, 0xc2, 0x31,
+  0x87, 0x7a, 0x94, 0x3e, 0x17, 0xa8, 0xb4, 0xf6, 0xdf, 0x71, 0x2a, 0x18,
+  0x77, 0xd6, 0x63, 0x13, 0xb7, 0x5d, 0x8d, 0x8c, 0xaa, 0xf1, 0x88, 0x6a,
+  0x32, 0x8d, 0x6f, 0x06, 0x2b, 0xc2, 0x0e, 0x2f, 0x4e, 0x5f, 0x01, 0x9f,
+  0x44, 0xf3, 0x89, 0x00, 0x29, 0x56, 0x77, 0x93, 0x54, 0xde, 0x26, 0x49,
+  0x8b, 0x63, 0x52, 0xae, 0xc8, 0xa3, 0x75, 0xed, 0x89, 0x8c, 0x81, 0x78,
+  0x3b, 0x83, 0xab, 0x29, 0x6e, 0x44, 0x53, 0x46, 0x19, 0x5a, 0xe4, 0xa4,
+  0x7d, 0xa7, 0xf4, 0x65, 0x0b, 0x2e, 0x40, 0x7a, 0x0b, 0x2c, 0x8f, 0xe0,
+  0x9f, 0xae, 0x52, 0x2e, 0x68, 0xb5, 0xca, 0xd2, 0xc1, 0x93, 0xfd, 0x14,
+  0xd1, 0x6c, 0xd2, 0xf2, 0x87, 0x01, 0x6d, 0xf1, 0x7a, 0xd6, 0x62, 0xd8,
+  0xe0, 0x83, 0xe6, 0x76, 0x19, 0x20, 0x38, 0xdd, 0x1e, 0xde, 0x1f, 0x2f,
+  0xa6, 0x82, 0x13, 0x76, 0xe8, 0xbb, 0xfa, 0x57, 0x5e, 0x66, 0x11, 0xa1,
+  0xca, 0xa0, 0xb2, 0x00, 0xa7, 0x3c, 0xbb, 0x9c, 0xb1, 0x6a, 0xf7, 0x2a,
+  0x1b, 0x16, 0x79, 0x99, 0x8f, 0x4d, 0x15, 0x28, 0xd5, 0xf9, 0x5e, 0xbe,
+  0xec, 0x47, 0x37, 0xe9, 0x40, 0xd1, 0x4d, 0x7b, 0x7e, 0x40, 0x19, 0xc3,
+  0x18, 0x61, 0x34, 0x65, 0x91, 0xa5, 0x15, 0xee, 0xab, 0x42, 0x98, 0x74,
+  0x23, 0x0c, 0xef, 0x2f, 0xca, 0x54, 0x0a, 0x8a, 0x90, 0xad, 0x1b, 0xda,
+  0x1c, 0x4e, 0x48, 0x1e, 0x9a, 0xa7, 0xfe, 0x71, 0x9d, 0xb0, 0x64, 0x68,
+  0x84, 0x19, 0x27, 0xa0, 0x98, 0x80, 0xa9, 0xc5, 0xbc, 0x92, 0x15, 0xb8,
+  0x75, 0xa8, 0x7c, 0x4a, 0x38, 0xcb, 0x7b, 0x0c, 0xa2, 0xc8, 0xc7, 0xde,
+  0xf1, 0x93, 0x34, 0x74, 0x23, 0x88, 0x21, 0x87, 0x1c, 0x20, 0x63, 0x1b,
+  0xe5, 0x05, 0x25, 0xaf, 0x20, 0x0b, 0x91, 0x2f, 0xd3, 0xd9, 0x30, 0x5f,
+  0x14, 0x08, 0x4f, 0x86, 0xc3, 0xbb, 0x83, 0xbb, 0xcd, 0xbb, 0x9e, 0x72,
+  0x51, 0xe1, 0x71, 0x99, 0xad, 0x4e, 0x44, 0x48, 0x58, 0x52, 0xca, 0x9e,
+  0x18, 0xb5, 0x95, 0x71, 0xa2, 0x55, 0x70, 0x5d, 0xb2, 0x1f, 0x16, 0x1a,
+  0x14, 0x0f, 0x1e, 0x6c, 0xce, 0xb3, 0xec, 0x32, 0x04, 0xd3, 0x69, 0x62,
+  0xfd, 0x09, 0xd7, 0xdd, 0x2a, 0x1e, 0x34, 0x22, 0x11, 0xd5, 0x0a, 0xe1,
+  0x7a, 0x75, 0x3a, 0xe0, 0x02, 0x2f, 0xc1, 0xe0, 0xfc, 0x10, 0xf5, 0x7d,
+  0xae, 0x20, 0x54, 0x24, 0xf9, 0x4f, 0x73, 0x62, 0x1f, 0x7c, 0x5c, 0x8d,
+  0x1f, 0xcb, 0x59, 0x27, 0x73, 0x3c, 0xad, 0xb6, 0xee, 0xa8, 0xeb, 0x54,
+  0x5f, 0x82, 0xb4, 0xf3, 0x16, 0xc3, 0x4c, 0xbb, 0xae, 0xfe, 0xb0, 0x62,
+  0xcc, 0x1c, 0x23, 0x2b, 0xcc, 0xc4, 0x1a, 0x61, 0xa4, 0x30, 0x27, 0x91,
+  0x92, 0x22, 0x26, 0x71, 0xec, 0xac, 0xcb, 0x66, 0x72, 0xfc, 0x60, 0x2f,
+  0x1e, 0xa4, 0xa0, 0xee, 0x14, 0xd1, 0x61, 0x85, 0x2a, 0xc5, 0x3d, 0xf1,
+  0x92, 0x22, 0xc9, 0x2d, 0x73, 0x32, 0x45, 0xbf, 0xe3, 0x66, 0x2e, 0x48,
+  0x31, 0x41, 0x8a, 0x3c, 0x43, 0xcc, 0x9b, 0x46, 0x73, 0x7b, 0xbd, 0x9d,
+  0x16, 0xcc, 0x24, 0xe2, 0x63, 0xb5, 0x36, 0x94, 0xe6, 0x1c, 0x37, 0x49,
+  0x18, 0xf8, 0x8e, 0x4b, 0x24, 0x19, 0x40, 0x6b, 0x96, 0xfc, 0x58, 0x9c,
+  0x13, 0x27, 0x7e, 0x2d, 0xd3, 0x1c, 0x41, 0x88, 0xc5, 0xe7, 0xe0, 0x99,
+  0x15, 0xc8, 0x3c, 0x5b, 0xd8, 0x30, 0xee, 0x2a, 0x68, 0x8d, 0xf2, 0x86,
+  0x2a, 0x75, 0x63, 0x34, 0x34, 0xbc, 0xd0, 0x60, 0x35, 0x66, 0x04, 0xc3,
+  0x21, 0x55, 0xfc, 0xb8, 0xe4, 0x18, 0xcf, 0x37, 0xcf, 0x8f, 0x1b, 0xcd,
+  0x3d, 0x79, 0xfa, 0x78, 0x27, 0x2c, 0x90, 0xd4, 0x77, 0xe8, 0x73, 0x41,
+  0x19, 0xd5, 0x47, 0xd1, 0x99, 0x3e, 0x7f, 0xf7, 0x55, 0xef, 0xbb, 0xc7,
+  0xe3, 0xf8, 0x51, 0x6f, 0xf7, 0xcf, 0xff, 0x78, 0xd5, 0xf9, 0x90, 0xa8,
+  0xee, 0x1a, 0xa5, 0xd6, 0x0d, 0x56, 0x0d, 0x1b, 0x3d, 0x1b, 0x9a, 0x10,
+  0x0e, 0x3b, 0x3a, 0x84, 0x7f, 0xbe, 0x59, 0x92, 0xf0, 0xa2, 0xbb, 0xcd,
+  0xb2, 0xac, 0x0d, 0x8e, 0x44, 0x42, 0x12, 0x29, 0x5f, 0x00, 0xba, 0xf5,
+  0x76, 0xf0, 0xcb, 0x51, 0xa1, 0x95, 0x63, 0xd4, 0x65, 0x99, 0xa3, 0xe6,
+  0x48, 0x60, 0xf2, 0x50, 0x57, 0x43, 0xd1, 0xb2, 0xa2, 0x74, 0x29, 0x73,
+  0x3e, 0xaa, 0x9a, 0xc8, 0x9c, 0x71, 0x94, 0x36, 0xd0, 0x12, 0x35, 0x9d,
+  0xb7, 0x6f, 0x4e, 0x25, 0x4c, 0x88, 0x9f, 0x0c, 0x67, 0x0f, 0x18, 0x0f,
+  0x43, 0xbd, 0x60, 0xcc, 0x62, 0x0e, 0x5c, 0xa7, 0xca, 0x26, 0xe2, 0x42,
+  0x43, 0x1e, 0xbc, 0xbc, 0x76, 0x4a, 0x23, 0x15, 0x0d, 0x93, 0x68, 0xdd,
+  0xc1, 0x19, 0x58, 0x76, 0x72, 0xf0, 0x75, 0x1b, 0x41, 0x47, 0x21, 0xaa,
+  0xc2, 0xe8, 0x1f, 0xad, 0x97, 0x11, 0xc7, 0xec, 0x6e, 0x8b, 0x29, 0x99,
+  0x11, 0x05, 0x04, 0x29, 0xa1, 0xd0, 0x16, 0x53, 0xee, 0x6c, 0xeb, 0xe7,
+  0x8b, 0x29, 0x77, 0x06, 0xd1, 0xa9, 0xa6, 0xf3, 0x4e, 0x14, 0x9f, 0xad,
+  0x47, 0xd4, 0x4d, 0x6f, 0x13, 0x93, 0xf5, 0x9f, 0xbb, 0x8e, 0xef, 0xd5,
+  0x71, 0xdd, 0xf5, 0xa4, 0x64, 0x71, 0xd3, 0x28, 0x8d, 0x64, 0xff, 0xb4,
+  0x4e, 0xf6, 0xae, 0x5f, 0x2b, 0x58, 0x68, 0xe8, 0x87, 0x02, 0x01, 0x74,
+  0x35, 0x08, 0x20, 0x97, 0x87, 0x5c, 0x44, 0xf6, 0xb2, 0x1a, 0xc1, 0xd7,
+  0x3d, 0x53, 0xd3, 0xa2, 0x50, 0xab, 0xd6, 0x3f, 0xff, 0xe5, 0xdb, 0x69,
+  0x7f, 0xfa, 0x85, 0xfc, 0xaa, 0x29, 0x4a, 0x37, 0xe6, 0x36, 0x56, 0xa9,
+  0xa6, 0xac, 0x49, 0x4d, 0x0c, 0xad, 0x8d, 0xfb, 0x22, 0x01, 0x80, 0x81,
+  0xba, 0x45, 0xc8, 0x7e, 0xd9, 0x67, 0xb6, 0xf1, 0xbb, 0x0d, 0x89, 0x57,
+  0x53, 0x97, 0x82, 0xb8, 0x85, 0x45, 0xd7, 0x90, 0x71, 0x2b, 0x61, 0x16,
+  0x78, 0x1f, 0x24, 0x7e, 0xa1, 0x4e, 0x51, 0x09, 0x75, 0xb3, 0x8b, 0x94,
+  0xd0, 0x58, 0x1d, 0x64, 0x1f, 0x29, 0x31, 0x6b, 0x2a, 0xeb, 0x8d, 0x55,
+  0x4b, 0xc7, 0x51, 0x7a, 0x52, 0x22, 0xf9, 0xb6, 0x53, 0x32, 0x09, 0xf4,
+  0x18, 0x71, 0x39, 0x9b, 0xb5, 0x44, 0x96, 0x75, 0x90, 0x20, 0x80, 0x1e,
+  0xfe, 0x09, 0x02, 0x4e, 0xb7, 0xba, 0xc9, 0xff, 0xe5, 0xc6, 0x66, 0x75,
+  0xd0, 0x32, 0xda, 0xc1, 0x29, 0xbc, 0xfb, 0xdd, 0x2e, 0x02, 0xd3, 0x75,
+  0x9a, 0x8d, 0xe4, 0xe4, 0x04, 0x32, 0x54, 0x6d, 0x94, 0x6a, 0xb2, 0x6e,
+  0xaf, 0xea, 0x12, 0x41, 0x92, 0xbb, 0x68, 0x66, 0xf8, 0x57, 0x0f, 0xff,
+  0xfd, 0x69, 0x37, 0x7e, 0xfc, 0x8b, 0xed, 0xf6, 0x77, 0xbb, 0xef, 0x7e,
+  0xb7, 0xd7, 0x09, 0x61, 0x0e, 0x3a, 0x18, 0xf3, 0x96, 0x3b, 0x26, 0x25,
+  0x27, 0x65, 0xb3, 0x8c, 0x25, 0x49, 0x01, 0x36, 0x31, 0x9c, 0x98, 0x91,
+  0xbf, 0x93, 0x18, 0x83, 0xd2, 0xb0, 0x6c, 0x48, 0x25, 0x20, 0x4d, 0x48,
+  0x81, 0x35, 0xe1, 0x97, 0x85, 0x4d, 0x31, 0xe6, 0xa7, 0x72, 0x2b, 0x4f,
+  0x1e, 0x9a, 0x39, 0xf1, 0x80, 0x38, 0x44, 0xac, 0x5f, 0xa2, 0xb5, 0x1c,
+  0xfc, 0xf5, 0x90, 0x93, 0x0a, 0xf2, 0x76, 0x12, 0xd5, 0x02, 0xdd, 0xf2,
+  0x68, 0x30, 0x88, 0x9c, 0xf8, 0xb6, 0x2f, 0x02, 0x21, 0x08, 0xc2, 0xc3,
+  0xc8, 0xaa, 0xa9, 0xc1, 0x06, 0xf0, 0xa2, 0x1b, 0xa0, 0x29, 0x64, 0x5c,
+  0x5a, 0xf6, 0x47, 0xb7, 0xb7, 0x67, 0xa8, 0xfa, 0x15, 0xd3, 0xd2, 0x4c,
+  0xbc, 0x92, 0xb0, 0xdb, 0x1c, 0x39, 0x97, 0x89, 0x8b, 0xa5, 0xcf, 0xf4,
+  0x48, 0xa0, 0xfc, 0x88, 0x22, 0x38, 0xfd, 0xe2, 0x0b, 0x1c, 0xc9, 0x00,
+  0xf4, 0xe8, 0x1a, 0x43, 0xa7, 0xf5, 0x20, 0xa6, 0x32, 0xb0, 0x15, 0xbd,
+  0x92, 0xb2, 0x65, 0x41, 0xdc, 0xa5, 0x70, 0x41, 0x57, 0x78, 0xa1, 0x68,
+  0x71, 0x96, 0x08, 0xb6, 0x9c, 0x0d, 0xe2, 0x32, 0x6c, 0x9b, 0x45, 0x2f,
+  0x51, 0x13, 0x8c, 0x86, 0x39, 0xb4, 0xd5, 0x3b, 0xbc, 0xd8, 0x77, 0xbc,
+  0x66, 0x47, 0x77, 0xc0, 0xd6, 0xb8, 0x48, 0xb9, 0xa9, 0x32, 0xab, 0x76,
+  0x73, 0xbd, 0x29, 0xcb, 0x68, 0x23, 0xde, 0x88, 0x36, 0x1d, 0x83, 0xe0,
+  0x28, 0x29, 0xaf, 0xb6, 0x82, 0x17, 0x8a, 0x89, 0x8d, 0xb0, 0x7c, 0x6d,
+  0x20, 0x06, 0x79, 0x14, 0x9b, 0x99, 0xa1, 0x79, 0x57, 0x6e, 0x1e, 0x71,
+  0xac, 0x1f, 0xf9, 0x60, 0x9c, 0x82, 0x1b, 0x83, 0x7c, 0x94, 0x91, 0xb2,
+  0x72, 0x27, 0xde, 0x70, 0x8b, 0x28, 0x60, 0x2e, 0x67, 0x1f, 0xc5, 0x64,
+  0x7b, 0x94, 0x5e, 0x6f, 0xcf, 0x16, 0x93, 0xc9, 0xc1, 0x3d, 0xd6, 0x1e,
+  0x56, 0xda, 0x3c, 0xdf, 0x7c, 0xfc, 0x8c, 0x4d, 0xe9, 0x92, 0xd5, 0x41,
+  0xb4, 0x0e, 0x8f, 0x1d, 0xdc, 0xab, 0x51, 0x78, 0xd0, 0x8f, 0x4e, 0x95,
+  0x21, 0x7f, 0xb2, 0xf8, 0xd4, 0x38, 0x8f, 0xee, 0x19, 0x7f, 0xf1, 0x30,
+  0xce, 0xf8, 0xe1, 0xac, 0x6e, 0xcd, 0x51, 0xeb, 0x77, 0x7b, 0xa1, 0x80,
+  0xd8, 0xfb, 0x5f, 0xea, 0xdd, 0x40, 0x20, 0x95, 0x7f, 0xcf, 0xb7, 0x47,
+  0xec, 0xb8, 0xd2, 0xac, 0x86, 0xd9, 0xc6, 0xd9, 0x74, 0x0a, 0xb4, 0xe8,
+  0xa7, 0x04, 0x73, 0x9c, 0xd8, 0x88, 0x80, 0x0c, 0x22, 0x13, 0x94, 0x6b,
+  0x5d, 0x54, 0x01, 0x34, 0x73, 0x0d, 0xf4, 0x0e, 0xd6, 0xef, 0x95, 0x90,
+  0x41, 0xb9, 0xbb, 0xa5, 0x8e, 0x08, 0xd7, 0xb3, 0x40, 0xe9, 0x8e, 0xfc,
+  0xb0, 0x20, 0x4a, 0x12, 0xc4, 0xab, 0x0d, 0x5f, 0x21, 0x5a, 0x82, 0xde,
+  0x63, 0xdf, 0x5b, 0x86, 0x21, 0xc2, 0x88, 0x2c, 0x38, 0x4c, 0x6b, 0x55,
+  0x49, 0x6e, 0x92, 0x4c, 0x3d, 0x5b, 0x92, 0x2e, 0x8c, 0x98, 0xe9, 0xd6,
+  0xb3, 0xc6, 0x54, 0xdb, 0x6c, 0x8e, 0xc4, 0xfe, 0xc4, 0x82, 0xcc, 0xdd,
+  0x22, 0x4d, 0x53, 0x50, 0x24, 0x17, 0x08, 0x13, 0x24, 0x50, 0x37, 0xae,
+  0xe6, 0x73, 0x57, 0x21, 0xac, 0x45, 0x24, 0xf8, 0xdb, 0x19, 0x7d, 0x74,
+  0xc0, 0x3c, 0xbf, 0x8f, 0x75, 0xc5, 0xdc, 0xc0, 0x28, 0xe3, 0xff, 0x5e,
+  0x76, 0x60, 0x76, 0x97, 0x9e, 0xa6, 0xb5, 0x22, 0xc9, 0x6d, 0xe7, 0xd3,
+  0xe4, 0xb6, 0xee, 0xf3, 0xfd, 0xb2, 0xae, 0xe8, 0xb9, 0x0f, 0x06, 0x71,
+  0x6d, 0x18, 0x0c, 0xbf, 0x7c, 0xcf, 0xbb, 0x39, 0xca, 0xed, 0xf1, 0x70,
+  0x4e, 0x07, 0x8b, 0xb8, 0xf5, 0x91, 0x74, 0x97, 0x21, 0xc7, 0x60, 0x65,
+  0xab, 0x02, 0x8b, 0xfc, 0xba, 0xa8, 0x57, 0x16, 0x3a, 0xde, 0x52, 0x30,
+  0xf7, 0x59, 0x66, 0xb8, 0xbf, 0xc9, 0xcc, 0x3b, 0xf0, 0x04, 0xb2, 0xf0,
+  0x19, 0xc8, 0xd3, 0xd7, 0x3f, 0x35, 0x4c, 0x08, 0xfa, 0x0b, 0xdb, 0x17,
+  0x9a, 0x8b, 0xfd, 0xb9, 0xec, 0x0b, 0xb5, 0x41, 0x60, 0x28, 0x67, 0x0b,
+  0x55, 0xae, 0x53, 0x19, 0xb6, 0x8e, 0xc1, 0x50, 0xa3, 0xb7, 0x7a, 0x24,
+  0x4c, 0xed, 0xc1, 0xf6, 0x94, 0x4d, 0x01, 0x08, 0xa4, 0x42, 0x0a, 0x96,
+  0x16, 0x98, 0x3b, 0x0a, 0x99, 0x97, 0x94, 0x8b, 0x98, 0x14, 0x92, 0xde,
+  0xe7, 0x4b, 0x7b, 0x45, 0x7a, 0x89, 0xa5, 0xaf, 0xd0, 0x00, 0x96, 0x61,
+  0x26, 0x2d, 0x56, 0xa4, 0x2e, 0xfe, 0x93, 0x38, 0x99, 0x73, 0x68, 0x3f,
+  0x3e, 0x4e, 0xbc, 0x0f, 0x88, 0xb1, 0x1e, 0x75, 0x7c, 0x0a, 0x46, 0x65,
+  0x16, 0x85, 0x99, 0x54, 0xad, 0x2c, 0xeb, 0x12, 0x9a, 0x89, 0xd1, 0x92,
+  0x1c, 0x1d, 0xce, 0xaf, 0x8a, 0xa4, 0x4c, 0x7d, 0xb4, 0xcf, 0xfe, 0x8b,
+  0x88, 0x82, 0x53, 0xce, 0xe1, 0x29, 0x7e, 0xc6, 0x68, 0x07, 0x4e, 0x2d,
+  0xf0, 0xd6, 0x13, 0x59, 0x96, 0x9f, 0xad, 0x0a, 0x33, 0x75, 0xce, 0x39,
+  0x93, 0x52, 0xa6, 0x7b, 0x7d, 0xf4, 0x13, 0x7a, 0xad, 0x35, 0xfb, 0x30,
+  0x46, 0x8c, 0x84, 0x38, 0x29, 0x63, 0x8f, 0x0f, 0x5f, 0x34, 0x6b, 0x3c,
+  0xa0, 0x9f, 0x91, 0x6a, 0x76, 0xfe, 0x63, 0x81, 0xa5, 0x33, 0xa9, 0xe6,
+  0xe0, 0x76, 0xaf, 0xb7, 0x8d, 0xba, 0xf4, 0x36, 0xfc, 0xd0, 0xc4, 0x68,
+  0x31, 0xb4, 0x35, 0x9a, 0x43, 0x0d, 0x8c, 0x00, 0x19, 0xa8, 0x8e, 0x16,
+  0xe6, 0x6c, 0x4c, 0xee, 0x9c, 0xb4, 0xe5, 0xf2, 0x1f, 0x0b, 0x50, 0x3f,
+  0x08, 0x69, 0x35, 0x2d, 0xa8, 0x78, 0x48, 0x3a, 0x75, 0x2c, 0xb5, 0x9e,
+  0x3a, 0xa0, 0xb9, 0x1b, 0xa5, 0x54, 0x60, 0x22, 0x73, 0x83, 0x0b, 0xbd,
+  0xca, 0xd8, 0x10, 0x54, 0xa8, 0x22, 0xab, 0x34, 0x88, 0x82, 0x8a, 0xca,
+  0x24, 0xab, 0x8e, 0x9c, 0x2e, 0xc8, 0x47, 0x2f, 0xba, 0x66, 0x9b, 0x5e,
+  0x9f, 0x10, 0xcc, 0xa0, 0x02, 0x9b, 0x8f, 0xbb, 0x00, 0xff, 0x9f, 0x56,
+  0xc3, 0x6d, 0xf2, 0xa9, 0x8c, 0x96, 0xd6, 0x6d, 0xa0, 0x3c, 0xca, 0x98,
+  0x0d, 0x8d, 0xb5, 0x53, 0xf5, 0x68, 0xaf, 0x71, 0xaa, 0x32, 0x60, 0x88,
+  0xa3, 0xf9, 0x62, 0x80, 0x14, 0x74, 0x08, 0xb3, 0xbf, 0x0a, 0x60, 0x55,
+  0x72, 0xd8, 0x17, 0x27, 0xab, 0x4a, 0x8e, 0x0d, 0x72, 0xdb, 0x85, 0x56,
+  0xa8, 0x74, 0x38, 0xa2, 0xba, 0xe6, 0x0c, 0x1d, 0x6f, 0xfa, 0x68, 0x62,
+  0xd4, 0x09, 0xa1, 0x73, 0x10, 0xa4, 0x2d, 0xbb, 0x32, 0xe6, 0x29, 0x1b,
+  0xa0, 0x32, 0x95, 0x57, 0xd1, 0xcd, 0x87, 0xd8, 0x1e, 0xe4, 0xf0, 0x93,
+  0xb4, 0x7c, 0xb2, 0x24, 0xfb, 0xa5, 0xce, 0x38, 0x58, 0xc4, 0x60, 0xfc,
+  0x3a, 0x43, 0x80, 0x39, 0x9f, 0x9f, 0xbc, 0x42, 0x92, 0x7b, 0x76, 0xf2,
+  0x46, 0x1c, 0x04, 0x58, 0x0a, 0x9e, 0x0a, 0xae, 0xb0, 0x01, 0xa6, 0x29,
+  0x4b, 0x8c, 0xc9, 0xf9, 0xf9, 0xe4, 0x11, 0xb9, 0x28, 0x89, 0x19, 0x5c,
+  0x25, 0x7b, 0x8f, 0x9f, 0xc8, 0xb0, 0xb5, 0xae, 0x2c, 0x19, 0xd4, 0x36,
+  0xf8, 0xab, 0xed, 0x6d, 0x0e, 0xbb, 0x40, 0x97, 0xbb, 0xa7, 0xab, 0x53,
+  0xe4, 0x0f, 0x3e, 0xfb, 0xa7, 0x8d, 0x16, 0x34, 0x1e, 0x75, 0x21, 0x71,
+  0x58, 0x66, 0x44, 0xf1, 0xc8, 0x8c, 0x14, 0x74, 0xea, 0x48, 0xdf, 0x5d,
+  0x37, 0x80, 0x97, 0x0b, 0x0c, 0x35, 0xeb, 0x2f, 0x0d, 0xd3, 0xa2, 0x62,
+  0x84, 0x60, 0xb4, 0xa9, 0x51, 0x81, 0x15, 0x6c, 0x13, 0xaf, 0x4f, 0xad,
+  0x11, 0x00, 0xb4, 0xe0, 0x2e, 0x0f, 0xc7, 0x39, 0x23, 0xad, 0x0f, 0xfd,
+  0xaa, 0x68, 0x0c, 0x2a, 0x4f, 0x27, 0xce, 0x6d, 0x59, 0x6a, 0xeb, 0x64,
+  0x95, 0x6b, 0xb6, 0xe6, 0xac, 0x26, 0x8e, 0xab, 0xa1, 0xdd, 0x5c, 0x0c,
+  0x3c, 0x8c, 0x71, 0xe9, 0xd3, 0x30, 0x59, 0x0a, 0x54, 0x70, 0x20, 0x88,
+  0x2c, 0xa3, 0xb0, 0x98, 0xdc, 0xce, 0x02, 0x78, 0x86, 0xc4, 0x71, 0x4e,
+  0xf1, 0x79, 0x0c, 0x27, 0x64, 0x80, 0xb8, 0x19, 0x34, 0xf9, 0x8e, 0xd2,
+  0xaa, 0x7c, 0x1e, 0x70, 0xf2, 0x6a, 0x1b, 0x09, 0x41, 0xbc, 0x80, 0x9e,
+  0x99, 0xe1, 0x69, 0x6f, 0xff, 0xab, 0xde, 0xce, 0x41, 0x74, 0x06, 0xda,
+  0x19, 0x2c, 0x7f, 0x37, 0xfa, 0x7e, 0xb6, 0xc0, 0xed, 0xc0, 0x39, 0x7f,
+  0xdf, 0xff, 0x4b, 0x56, 0xf9, 0x2f, 0x3c, 0xda, 0xc7, 0x17, 0x5e, 0xf7,
+  0xf9, 0xa1, 0x9b, 0x7c, 0x32, 0x86, 0x17, 0x03, 0x8f, 0x3d, 0xc5, 0xc7,
+  0x80, 0xde, 0x46, 0x95, 0x07, 0x52, 0x2f, 0x04, 0xd6, 0x3e, 0xa8, 0x47,
+  0x8f, 0x02, 0x83, 0xea, 0xae, 0xdb, 0x69, 0xd3, 0x46, 0x42, 0xea, 0x1d,
+  0x12, 0xd9, 0x20, 0x19, 0xbe, 0x27, 0x82, 0x22, 0xa0, 0x57, 0x1e, 0x45,
+  0xab, 0xf3, 0xa0, 0xc6, 0x30, 0x3e, 0xb5, 0xf4, 0xda, 0x0a, 0x12, 0x57,
+  0x1b, 0x05, 0xfc, 0xb7, 0x96, 0xf1, 0xa4, 0xf1, 0xba, 0x39, 0xc5, 0xc3,
+  0x74, 0x77, 0xf7, 0xcb, 0xc1, 0xe3, 0xdd, 0x2f, 0xbf, 0x7a, 0x3a, 0x7e,
+  0xf4, 0xe8, 0xf1, 0xde, 0x68, 0xb8, 0xb1, 0xe6, 0x35, 0x8c, 0xe6, 0x13,
+  0x68, 0x95, 0x1b, 0xac, 0xbb, 0xd6, 0x1a, 0x08, 0xe6, 0x52, 0xde, 0x28,
+  0x1c, 0x1d, 0x54, 0x87, 0x05, 0x28, 0xa8, 0x98, 0x70, 0x45, 0xb5, 0x5b,
+  0x9e, 0xee, 0xed, 0xef, 0x6e, 0x3f, 0xe9, 0x3d, 0xea, 0xed, 0x19, 0xb0,
+  0x19, 0x46, 0xac, 0xaf, 0x28, 0x99, 0x3b, 0x10, 0x73, 0x4a, 0xf9, 0xf4,
+  0xd9, 0x4c, 0xea, 0x34, 0x99, 0x4f, 0xc8, 0xc9, 0x66, 0x93, 0xd9, 0xb1,
+  0x72, 0xd3, 0xae, 0x0b, 0x50, 0x4a, 0xbe, 0x61, 0xaf, 0x0a, 0xf8, 0x2c,
+  0xc6, 0x41, 0x98, 0x48, 0x0f, 0x74, 0xaa, 0x0d, 0xb2, 0x7f, 0x2c, 0xb2,
+  0x0a, 0x34, 0x30, 0x9c, 0x27, 0x06, 0xaf, 0x0c, 0x8a, 0xfc, 0xa6, 0x24,
+  0x7d, 0x10, 0x96, 0x84, 0xe6, 0x40, 0x7c, 0xc2, 0x17, 0xcd, 0x05, 0x6a,
+  0x1f, 0xaf, 0x72, 0xa7, 0xea, 0x02, 0xe1, 0x88, 0x66, 0xc4, 0xd2, 0xf1,
+  0x89, 0x32, 0x2b, 0x2b, 0x60, 0xc4, 0xc0, 0xb8, 0x5e, 0xe4, 0x37, 0x48,
+  0x61, 0x5d, 0x82, 0x48, 0x28, 0xfc, 0x50, 0x28, 0xae, 0xa8, 0xc8, 0x41,
+  0xb6, 0x92, 0xda, 0x4e, 0x8b, 0x47, 0x81, 0x86, 0xf2, 0x01, 0xe7, 0xab,
+  0x29, 0xee, 0x77, 0x54, 0x9b, 0xf0, 0x72, 0x95, 0x60, 0x9a, 0x26, 0x68,
+  0xaf, 0x41, 0x2c, 0x4d, 0x8e, 0xb8, 0xc4, 0xf5, 0x13, 0x85, 0xb7, 0x05,
+  0x05, 0x34, 0x24, 0x77, 0xf0, 0xae, 0x7f, 0x64, 0xe0, 0x0b, 0x69, 0x75,
+  0x6d, 0x79, 0x43, 0x06, 0xe3, 0x80, 0x9f, 0xc6, 0xa3, 0xa8, 0x83, 0x8c,
+  0x73, 0x5d, 0xff, 0xb2, 0xd4, 0xe4, 0xea, 0xda, 0x82, 0x5c, 0x2c, 0x8d,
+  0xb6, 0xe1, 0xa3, 0xea, 0x0b, 0x0f, 0x26, 0xff, 0xfd, 0x8f, 0x4f, 0xfe,
+  0x7b, 0xff, 0x97, 0xfc, 0xff, 0x3d, 0xe4, 0xbf, 0xf7, 0x49, 0xc8, 0x7f,
+  0xef, 0x61, 0xe4, 0xbf, 0xf7, 0xf1, 0xc8, 0x7f, 0x77, 0x5d, 0xf2, 0xdf,
+  0xbf, 0x0f, 0xf9, 0x03, 0xa5, 0x61, 0x6e, 0x5b, 0x9d, 0xfc, 0x1f, 0xad,
+  0x45, 0xfe, 0x4c, 0xff, 0x74, 0x00, 0x5a, 0x4f, 0x00, 0x8e, 0xd9, 0xc5,
+  0xa7, 0x86, 0xcb, 0x2b, 0x5c, 0x76, 0xed, 0xfe, 0x74, 0x96, 0xd4, 0x1a,
+  0xf5, 0x6a, 0x36, 0xf0, 0x21, 0xfb, 0x64, 0x54, 0xb6, 0xff, 0x49, 0xa8,
+  0x6c, 0xff, 0x61, 0x54, 0xb6, 0xff, 0x49, 0x98, 0xec, 0xee, 0x2a, 0x2a,
+  0x2b, 0x52, 0x0e, 0x4e, 0xfc, 0x49, 0x83, 0x44, 0xa1, 0xaf, 0x5f, 0xc8,
+  0xc5, 0x73, 0x80, 0x32, 0xde, 0x2f, 0x4d, 0xf5, 0x5d, 0x2a, 0xa3, 0x5b,
+  0x6d, 0xae, 0x7f, 0x76, 0xfc, 0x97, 0xbe, 0x44, 0x38, 0x8a, 0xc0, 0xad,
+  0x02, 0x39, 0xfb, 0x1b, 0x28, 0x84, 0x9c, 0x8b, 0x61, 0x7a, 0x7a, 0x1e,
+  0x25, 0x6b, 0x46, 0x14, 0x1e, 0x6d, 0xe2, 0xa3, 0x23, 0xcc, 0xdd, 0x94,
+  0xb8, 0x4b, 0xae, 0x14, 0xcc, 0x20, 0xe6, 0xe4, 0xc0, 0x95, 0xa6, 0xb5,
+  0x52, 0x6a, 0x73, 0x25, 0x9c, 0xb1, 0x88, 0xfb, 0x78, 0x66, 0x5f, 0xd9,
+  0xac, 0xae, 0x0a, 0x02, 0x0d, 0xa5, 0xc7, 0xb6, 0x22, 0x8b, 0xfd, 0xb8,
+  0x74, 0x74, 0x32, 0xaa, 0x17, 0x68, 0xec, 0x40, 0xd5, 0x2e, 0x6a, 0x84,
+  0x71, 0x3b, 0xa6, 0x5d, 0xf3, 0xad, 0xc6, 0x39, 0x84, 0x0a, 0x8e, 0x48,
+  0xa5, 0x50, 0x67, 0xbd, 0xf1, 0x3d, 0xcf, 0xf1, 0x90, 0xdd, 0x72, 0xdd,
+  0x7a, 0x53, 0x1c, 0x6e, 0x02, 0x07, 0x66, 0x46, 0xa8, 0x95, 0x1a, 0x46,
+  0x6f, 0xda, 0x60, 0x50, 0x08, 0x54, 0xb2, 0xf3, 0xe1, 0xfb, 0xf2, 0x11,
+  0x34, 0xd9, 0x74, 0x90, 0xf3, 0x17, 0x09, 0x7e, 0x23, 0x7f, 0x3c, 0xc6,
+  0x8e, 0x29, 0x59, 0x82, 0xff, 0xbc, 0xa2, 0xbf, 0xb1, 0x4b, 0x2d, 0x7f,
+  0xe9, 0xec, 0xf3, 0x30, 0xb8, 0xd0, 0x0e, 0x06, 0xad, 0x29, 0xd5, 0xf0,
+  0x3a, 0xb7, 0x15, 0x13, 0xdd, 0x39, 0x63, 0xe6, 0x08, 0x81, 0xbf, 0x87,
+  0xdc, 0x60, 0xce, 0xcd, 0x46, 0x2d, 0x3f, 0x0a, 0x2a, 0x16, 0xb4, 0x55,
+  0x4e, 0xc5, 0x75, 0x2d, 0x82, 0x60, 0xbb, 0x91, 0xa0, 0x15, 0x77, 0x0b,
+  0xa8, 0x04, 0xae, 0x67, 0xd4, 0x4a, 0xca, 0x72, 0x31, 0x35, 0xc6, 0xda,
+  0xdd, 0x9d, 0x2f, 0x7d, 0x43, 0xfc, 0x5b, 0x05, 0xa0, 0xb4, 0xa5, 0xba,
+  0x29, 0x6b, 0x8b, 0xe0, 0xe9, 0x06, 0xa9, 0x55, 0x6a, 0x02, 0x9d, 0x62,
+  0x34, 0x4f, 0xc8, 0xee, 0x35, 0x4a, 0xd9, 0x5c, 0x30, 0x60, 0x93, 0x97,
+  0x30, 0x37, 0x81, 0xdd, 0x92, 0xa4, 0x2e, 0x36, 0x34, 0x4a, 0xb4, 0x1c,
+  0xe8, 0x4a, 0x9c, 0x9c, 0xe3, 0x45, 0x9e, 0xa1, 0x99, 0x5b, 0x63, 0x93,
+  0xbf, 0xb5, 0x85, 0x53, 0x7f, 0xff, 0x68, 0x07, 0xf7, 0x54, 0x1b, 0x41,
+  0x7f, 0xf3, 0x44, 0x21, 0x2c, 0x7e, 0xbf, 0x9f, 0x84, 0xc3, 0x19, 0x0d,
+  0x13, 0xf8, 0x4c, 0x98, 0xce, 0xa6, 0x7f, 0x43, 0x98, 0x7c, 0xc4, 0x14,
+  0x3b, 0x2f, 0xbe, 0x8d, 0xc4, 0x0f, 0x8d, 0x3f, 0xcc, 0xc7, 0x0f, 0x4c,
+  0xc0, 0x10, 0xc7, 0x17, 0xf7, 0x55, 0x53, 0xc0, 0x1e, 0xd7, 0x0d, 0x5f,
+  0x1e, 0x92, 0x48, 0xc0, 0x0d, 0x21, 0xe2, 0x9b, 0x96, 0xb7, 0x51, 0x18,
+  0x76, 0x93, 0x73, 0x9a, 0xb0, 0xcd, 0x89, 0xc6, 0x6b, 0x3e, 0x84, 0xa6,
+  0xa0, 0x43, 0x2f, 0x78, 0x58, 0x23, 0xc3, 0x38, 0xc7, 0x83, 0xed, 0x9a,
+  0x5d, 0xaf, 0xba, 0x67, 0x32, 0xe9, 0x46, 0xe1, 0xb4, 0x51, 0x22, 0xa6,
+  0x5a, 0x27, 0xa3, 0x22, 0xb9, 0x71, 0x8c, 0x5e, 0x5c, 0xb0, 0x6d, 0x4c,
+  0x41, 0x5f, 0x36, 0xe9, 0x0b, 0xf3, 0xba, 0x30, 0xd9, 0xa0, 0x0c, 0xe4,
+  0x8d, 0x94, 0xc3, 0x22, 0x95, 0x38, 0x5a, 0x2c, 0x79, 0x4d, 0x89, 0x05,
+  0x58, 0x26, 0x1a, 0x84, 0xcf, 0xcb, 0x54, 0xab, 0x83, 0x98, 0x59, 0x6b,
+  0xf5, 0x0e, 0x2a, 0x47, 0xd2, 0x0b, 0x20, 0x8e, 0x59, 0x0f, 0x8d, 0x26,
+  0x26, 0x27, 0x52, 0xbb, 0x04, 0x5f, 0xed, 0x4a, 0x3e, 0xa5, 0x70, 0x8b,
+  0x01, 0x19, 0x0d, 0x13, 0xcc, 0x8d, 0x2a, 0xaf, 0xb2, 0x79, 0x53, 0x10,
+  0x8a, 0xbf, 0xce, 0xbf, 0x8e, 0xb7, 0x4c, 0xd5, 0xd5, 0xfc, 0x3a, 0x2d,
+  0xc9, 0x4a, 0xc1, 0x00, 0x96, 0xc0, 0x25, 0xae, 0xc8, 0x24, 0x2c, 0x42,
+  0x02, 0x81, 0x4f, 0x12, 0x0e, 0x8f, 0x54, 0xb4, 0x6c, 0xa9, 0x66, 0xc3,
+  0xd1, 0xa5, 0xcc, 0xa1, 0x91, 0xd2, 0x61, 0xb5, 0xc6, 0x9c, 0xd6, 0x8d,
+  0xb6, 0xbd, 0x08, 0x13, 0x34, 0xa2, 0xf2, 0x6e, 0x3a, 0xc8, 0x05, 0x12,
+  0x33, 0x9f, 0xff, 0xa7, 0xb9, 0xbc, 0x1d, 0x7a, 0xfd, 0xb8, 0xe0, 0x0f,
+  0x6e, 0xda, 0x71, 0x0d, 0x56, 0xe7, 0x5e, 0x87, 0xfc, 0x77, 0x6b, 0x07,
+  0x6f, 0xc6, 0x94, 0xe7, 0x34, 0x92, 0xb8, 0x9a, 0xba, 0xd0, 0x02, 0x17,
+  0x4c, 0xac, 0x97, 0xc6, 0xa1, 0xde, 0x37, 0xdf, 0xac, 0x44, 0x4e, 0x34,
+  0x37, 0xd3, 0x58, 0xcc, 0xbb, 0xc8, 0x95, 0x09, 0x66, 0x94, 0x14, 0xbc,
+  0x72, 0x78, 0x95, 0x4e, 0x19, 0xfc, 0xc6, 0x87, 0xf7, 0x04, 0x29, 0x73,
+  0xc6, 0xb4, 0x8a, 0x31, 0x83, 0x33, 0x63, 0x03, 0x8b, 0x9c, 0x0a, 0xc1,
+  0x52, 0xac, 0x51, 0xaa, 0xfe, 0x45, 0xc7, 0xd0, 0xfc, 0xc9, 0xbb, 0xb7,
+  0xaf, 0xfb, 0x6f, 0xcf, 0x63, 0xaf, 0xb8, 0xef, 0x9b, 0x8b, 0x93, 0x67,
+  0x98, 0x81, 0x77, 0x71, 0x76, 0x7c, 0x76, 0x1a, 0x6d, 0xee, 0x6e, 0x2d,
+  0x25, 0x24, 0x43, 0x3a, 0xa6, 0xa8, 0xba, 0x75, 0x24, 0x33, 0x57, 0x33,
+  0xa3, 0xd8, 0xc4, 0x55, 0xf6, 0x5b, 0xfb, 0x41, 0x4e, 0x5c, 0xc3, 0x3d,
+  0x22, 0x36, 0xd5, 0x4b, 0xb8, 0xf1, 0x4b, 0x32, 0x5d, 0x4b, 0x2b, 0x6e,
+  0x76, 0x0f, 0xa5, 0x52, 0x06, 0xaa, 0xdd, 0x75, 0x29, 0x96, 0x84, 0xa3,
+  0xf3, 0x1d, 0xac, 0xd8, 0xb6, 0x4b, 0xc6, 0xdd, 0xb4, 0xcf, 0xe6, 0xd3,
+  0xae, 0x8d, 0x82, 0xd1, 0x2d, 0xc6, 0xf6, 0x4e, 0x59, 0x25, 0x5e, 0xe3,
+  0xdb, 0x36, 0x45, 0x0c, 0x5a, 0x22, 0xd5, 0xa5, 0xee, 0x3d, 0x79, 0xdc,
+  0xb0, 0xe2, 0xd9, 0xe7, 0x2c, 0xa9, 0x96, 0x61, 0x5a, 0x35, 0xc4, 0xca,
+  0xc5, 0x38, 0x6e, 0x90, 0xb5, 0x99, 0x57, 0xf0, 0x40, 0x6a, 0xe0, 0x68,
+  0x3e, 0x33, 0x4a, 0x53, 0x0f, 0xcf, 0xbf, 0x27, 0x1e, 0xf0, 0x1b, 0xa3,
+  0x74, 0x96, 0xb1, 0xb8, 0x61, 0xc6, 0x2e, 0x50, 0xf7, 0x92, 0x73, 0x09,
+  0x0f, 0xe0, 0xb7, 0x0e, 0x4d, 0x50, 0x2d, 0x1f, 0x3f, 0x01, 0x83, 0xdf,
+  0xc6, 0x4d, 0x46, 0x14, 0x5b, 0x3b, 0x26, 0x6c, 0x0f, 0x6f, 0x6f, 0xaa,
+  0x65, 0xdd, 0xbe, 0x1d, 0x5d, 0x29, 0x4e, 0x43, 0xdc, 0x98, 0xa4, 0x6d,
+  0x5c, 0x44, 0x96, 0xaf, 0x9d, 0xb9, 0xb4, 0x04, 0xdc, 0xd6, 0x17, 0x11,
+  0x03, 0xbc, 0xba, 0xb8, 0x73, 0x5d, 0xde, 0x3e, 0x11, 0x0d, 0x96, 0xec,
+  0xe0, 0x77, 0xf5, 0x82, 0xad, 0x02, 0xd0, 0x86, 0x43, 0xe1, 0x51, 0x31,
+  0x76, 0x32, 0x8d, 0xa6, 0x4b, 0x80, 0xbb, 0x38, 0xb8, 0xe7, 0x66, 0x6c,
+  0x1e, 0xd2, 0x07, 0xc7, 0x28, 0x6e, 0x6a, 0x45, 0x8d, 0x27, 0x8f, 0x7b,
+  0x7b, 0x5b, 0xb5, 0x00, 0x4b, 0x0c, 0x41, 0x83, 0xa5, 0xfa, 0x23, 0xfe,
+  0x54, 0x2c, 0x21, 0xfc, 0x9d, 0xa7, 0xe1, 0x19, 0x79, 0xf8, 0x2e, 0x31,
+  0xe5, 0x94, 0xba, 0x8a, 0x96, 0xc5, 0x27, 0xfe, 0x32, 0xcf, 0x47, 0x52,
+  0xb0, 0x83, 0x0b, 0x74, 0xb4, 0x59, 0xdd, 0x9d, 0x35, 0xfa, 0xcc, 0xe7,
+  0x8b, 0x07, 0xf1, 0x75, 0x63, 0x93, 0xd6, 0x50, 0x63, 0xb1, 0x15, 0xef,
+  0x10, 0xad, 0x3c, 0x3e, 0xab, 0x4e, 0x0f, 0xd7, 0x66, 0x27, 0x97, 0x24,
+  0xc7, 0x9f, 0xab, 0x38, 0xd2, 0xf3, 0x6f, 0x54, 0x79, 0x8b, 0x08, 0x3c,
+  0xc5, 0x55, 0x22, 0x27, 0xdd, 0x24, 0x1d, 0x93, 0x96, 0x42, 0x20, 0xd5,
+  0x5d, 0xfa, 0x92, 0x02, 0x3a, 0x4d, 0x2a, 0x6d, 0xb0, 0xe6, 0x1a, 0xb5,
+  0x91, 0x0c, 0x5d, 0xad, 0xcf, 0x94, 0xd3, 0xdc, 0x00, 0xba, 0xd8, 0xe8,
+  0x1a, 0x7c, 0xf8, 0xc9, 0x1d, 0x45, 0xff, 0x65, 0xb7, 0x0a, 0x2a, 0xf4,
+  0x5b, 0x5a, 0xe4, 0x7e, 0xcc, 0x3a, 0x09, 0x85, 0x5a, 0x2b, 0x0f, 0x0d,
+  0x31, 0xd7, 0xc0, 0x78, 0xe9, 0xd6, 0x36, 0x1f, 0x62, 0xaf, 0xde, 0x79,
+  0xfa, 0x23, 0xcc, 0x0d, 0x81, 0xb5, 0xe5, 0x1a, 0x30, 0xa3, 0xc9, 0xa8,
+  0x84, 0x68, 0xa6, 0x51, 0xc6, 0xce, 0xf9, 0x16, 0x58, 0x39, 0x82, 0xe3,
+  0xf6, 0x0c, 0x34, 0xa4, 0x88, 0x8c, 0x50, 0xb1, 0xb6, 0xe8, 0x57, 0x86,
+  0xc3, 0x8f, 0x51, 0xd0, 0x30, 0xf5, 0xfc, 0x24, 0xb9, 0xc6, 0xbf, 0x97,
+  0x62, 0x90, 0x38, 0xd2, 0xd9, 0x5d, 0x7d, 0x40, 0x98, 0xa9, 0x0a, 0x22,
+  0x1d, 0xbb, 0x26, 0x6d, 0x19, 0x0f, 0x8b, 0x8e, 0x60, 0x87, 0xe8, 0x0f,
+  0xa9, 0x3e, 0xe6, 0x10, 0x57, 0xfa, 0xda, 0x2c, 0x03, 0xb3, 0x81, 0xfa,
+  0x62, 0x6c, 0x52, 0xdd, 0x62, 0x0d, 0x94, 0xa6, 0x2e, 0xef, 0xb3, 0x0c,
+  0x54, 0x7d, 0x94, 0xec, 0x0b, 0xe5, 0x62, 0xf0, 0x2b, 0x01, 0x42, 0xe6,
+  0x8c, 0x39, 0x25, 0xab, 0x20, 0xb6, 0x1d, 0xd8, 0x55, 0x78, 0x80, 0xc3,
+  0x27, 0x2a, 0x4c, 0xae, 0x0f, 0x35, 0x47, 0xf1, 0xdb, 0x99, 0x93, 0x58,
+  0x64, 0x29, 0x8c, 0x46, 0xb4, 0x0c, 0xd0, 0xf7, 0xe0, 0x8b, 0x16, 0xf6,
+  0x1d, 0x8f, 0xf1, 0x28, 0x72, 0xca, 0x6c, 0x43, 0x80, 0xe0, 0xb5, 0xe4,
+  0x44, 0x72, 0x03, 0xe4, 0x80, 0x8f, 0xb7, 0xb6, 0xa5, 0x5c, 0xb8, 0xec,
+  0xfe, 0x11, 0x7f, 0xf8, 0x73, 0xa8, 0xe3, 0x52, 0x60, 0xca, 0xa4, 0x70,
+  0x42, 0x7c, 0x9c, 0x58, 0x2c, 0xbd, 0xde, 0xd6, 0x81, 0xc3, 0x3d, 0x96,
+  0xb7, 0x4d, 0x3c, 0x63, 0x8d, 0x0e, 0xde, 0x8a, 0x18, 0x27, 0xa9, 0xc1,
+  0x5a, 0x27, 0xc9, 0x21, 0x7a, 0xf8, 0x6d, 0xb4, 0x18, 0xa2, 0xed, 0x52,
+  0xa0, 0x90, 0x6a, 0x8a, 0x7a, 0x53, 0x6d, 0x1b, 0x16, 0xd9, 0x9c, 0x0d,
+  0x52, 0x65, 0x32, 0x46, 0x20, 0x8c, 0x02, 0xff, 0xc1, 0x8d, 0xa6, 0x3c,
+  0x16, 0xc6, 0x61, 0xb0, 0x68, 0x2e, 0xf3, 0xbc, 0x42, 0x3f, 0x3b, 0x1d,
+  0xf5, 0x51, 0xe2, 0x6d, 0xfe, 0x25, 0x9c, 0xf7, 0x45, 0xe9, 0x6e, 0x89,
+  0xaa, 0x4a, 0xd8, 0x2c, 0x87, 0x03, 0xa3, 0xe4, 0x26, 0x39, 0xaa, 0x1c,
+  0xc0, 0xe4, 0x30, 0xba, 0x60, 0x2e, 0x0d, 0xa7, 0xb6, 0x92, 0x89, 0x57,
+  0x79, 0x24, 0xa1, 0x49, 0x2e, 0x2b, 0x1e, 0x6e, 0xa5, 0x44, 0x37, 0xa2,
+  0xbd, 0x6e, 0x30, 0xed, 0x46, 0x06, 0xa0, 0x83, 0x0c, 0x75, 0x16, 0x0c,
+  0xd5, 0x2f, 0xcd, 0xc1, 0xfa, 0x24, 0x25, 0x61, 0x61, 0x44, 0xde, 0x0c,
+  0x03, 0x05, 0x66, 0x1c, 0x7d, 0x20, 0xe6, 0x13, 0x65, 0xd4, 0x38, 0x4c,
+  0x02, 0x32, 0x99, 0xa1, 0x16, 0x3c, 0x4c, 0xfd, 0x3c, 0x72, 0xca, 0x41,
+  0x98, 0x57, 0x2d, 0xc5, 0xd7, 0x94, 0x82, 0x3e, 0x5b, 0xb4, 0x56, 0x93,
+  0x7e, 0xbb, 0x25, 0x9c, 0xa4, 0x87, 0x5c, 0x81, 0x72, 0x91, 0xba, 0x02,
+  0xa7, 0x07, 0x45, 0xa8, 0x69, 0xd0, 0x92, 0x48, 0xbc, 0x5c, 0xae, 0x9c,
+  0x63, 0x81, 0x02, 0xe0, 0x25, 0x8b, 0xac, 0x22, 0x62, 0x6c, 0xe0, 0x42,
+  0x28, 0x18, 0x01, 0x9b, 0x4d, 0xa7, 0x53, 0x2f, 0xc1, 0x79, 0xa6, 0x01,
+  0x23, 0x26, 0xb1, 0x8b, 0x93, 0x29, 0x49, 0xa4, 0x13, 0x43, 0x29, 0x91,
+  0x0e, 0x9b, 0xc9, 0x58, 0x21, 0x12, 0x10, 0x11, 0x54, 0x39, 0xc3, 0xee,
+  0x87, 0x6d, 0x93, 0x14, 0x02, 0xb4, 0x3f, 0x1b, 0xc5, 0xc0, 0xfd, 0xe6,
+  0xcb, 0xcd, 0xf7, 0xee, 0x8c, 0x3f, 0x41, 0x7a, 0x7a, 0xbd, 0x7d, 0xfd,
+  0x9b, 0x32, 0x89, 0x6d, 0xc6, 0xfa, 0x08, 0xed, 0x52, 0xac, 0x7b, 0x3d,
+  0xd0, 0x12, 0x65, 0x7e, 0xa9, 0xa5, 0x8b, 0xf3, 0x27, 0xa3, 0x06, 0xde,
+  0x40, 0xed, 0xc9, 0x25, 0x9b, 0xac, 0xaa, 0x2e, 0xed, 0xc8, 0x77, 0xdc,
+  0x6c, 0x7d, 0x93, 0xed, 0xee, 0xea, 0x6e, 0x7a, 0xf2, 0x5f, 0x6d, 0x6f,
+  0x65, 0x5b, 0xb9, 0xec, 0x18, 0x0f, 0x94, 0x4c, 0x15, 0x33, 0x41, 0x7f,
+  0x71, 0x7a, 0x62, 0xc3, 0x89, 0xb7, 0xc9, 0x53, 0xc2, 0xa3, 0xa2, 0xba,
+  0x11, 0x91, 0x3c, 0x69, 0x38, 0x82, 0xde, 0x41, 0x61, 0x4a, 0x0c, 0xd8,
+  0x8a, 0xe9, 0xf6, 0xa2, 0x8e, 0x70, 0x60, 0xd9, 0x8a, 0x2a, 0x39, 0xee,
+  0xf2, 0x7e, 0x2a, 0x3a, 0xe1, 0xd6, 0xff, 0x0d, 0x54, 0x12, 0xaa, 0xb3,
+  0xd5, 0x46, 0x27, 0xc3, 0x04, 0x03, 0xb2, 0xc2, 0xc9, 0xa9, 0x7d, 0xe1,
+  0xc2, 0xb1, 0x3e, 0x85, 0xb7, 0xbe, 0xe6, 0xf4, 0x3b, 0x4e, 0x0f, 0x8a,
+  0x9b, 0x6b, 0x49, 0x57, 0x6e, 0xf4, 0x73, 0x5f, 0x5e, 0xfb, 0x29, 0x14,
+  0x0e, 0x3b, 0x8a, 0xe3, 0x23, 0x2e, 0x1b, 0x54, 0x21, 0x66, 0xff, 0xad,
+  0x59, 0xf0, 0xb5, 0x96, 0xbf, 0x81, 0x2e, 0x31, 0x4c, 0x30, 0xc2, 0x90,
+  0xdc, 0x53, 0xdc, 0x89, 0xfc, 0x4a, 0x71, 0x87, 0xb4, 0x11, 0x2e, 0xb4,
+  0x4f, 0xc3, 0x66, 0xd4, 0x6a, 0x5a, 0xae, 0x35, 0x1e, 0x4c, 0x9c, 0x77,
+  0xf7, 0x88, 0x1e, 0xfa, 0xa0, 0x3d, 0xa2, 0x16, 0x3e, 0xfb, 0x1e, 0xd1,
+  0x28, 0xb6, 0x0d, 0x9c, 0xb0, 0x64, 0xb6, 0x7f, 0xb4, 0x8d, 0xd2, 0xdd,
+  0x71, 0x9c, 0x89, 0x91, 0x9c, 0x15, 0xee, 0xdb, 0xda, 0x69, 0xbc, 0x30,
+  0xb8, 0x96, 0xfd, 0x81, 0x16, 0xe3, 0xea, 0x6e, 0x9e, 0x46, 0x87, 0xf8,
+  0xef, 0x92, 0x3d, 0x32, 0x0f, 0x7e, 0xc8, 0x36, 0x99, 0x46, 0x42, 0x3b,
+  0x65, 0xb0, 0x5d, 0x58, 0x11, 0xc2, 0xcd, 0xc2, 0xdd, 0xf2, 0x52, 0xb1,
+  0x3f, 0xb4, 0x26, 0x76, 0x73, 0x2c, 0x18, 0x1b, 0xeb, 0x7e, 0xca, 0x61,
+  0xb6, 0x0f, 0xdd, 0x34, 0x2b, 0xdd, 0x48, 0x73, 0xbd, 0x7b, 0x9c, 0x12,
+  0x62, 0x64, 0xf8, 0xef, 0x4f, 0xc2, 0x53, 0x7f, 0x59, 0xbe, 0x13, 0x0f,
+  0xd9, 0x84, 0x7a, 0x6f, 0x9f, 0x0f, 0xf3, 0xe0, 0x93, 0x2d, 0x34, 0xed,
+  0xe6, 0x7d, 0x56, 0x3b, 0x9b, 0x5f, 0xa1, 0xf9, 0xe0, 0x30, 0x04, 0x57,
+  0xe8, 0xac, 0xb3, 0x3c, 0xf6, 0x21, 0xf4, 0x2e, 0x4d, 0x7c, 0x46, 0x5b,
+  0x95, 0x33, 0x8a, 0x93, 0xe3, 0x67, 0x2f, 0x4e, 0x62, 0xf8, 0xb7, 0x7f,
+  0x14, 0x1f, 0x9d, 0xf4, 0xf7, 0x1e, 0x3f, 0x89, 0x8f, 0x8f, 0x5f, 0x7d,
+  0xf9, 0xa1, 0x1b, 0x20, 0xcd, 0x53, 0xc1, 0x96, 0x45, 0x81, 0x4e, 0xaa,
+  0xe6, 0xa5, 0x71, 0x8f, 0x2d, 0x29, 0x26, 0xb6, 0x66, 0xe6, 0x92, 0x2d,
+  0x91, 0xc7, 0x3e, 0x64, 0x4b, 0xa4, 0x89, 0xcf, 0xbc, 0x25, 0x32, 0x8a,
+  0x22, 0xfd, 0x95, 0xca, 0xcb, 0x7f, 0xc8, 0x75, 0xae, 0xdb, 0x20, 0x4d,
+  0xae, 0xbf, 0xf8, 0x2c, 0x60, 0xad, 0x74, 0x2d, 0x91, 0x14, 0xfc, 0x4c,
+  0x90, 0x9d, 0x02, 0x02, 0xf7, 0x83, 0x25, 0x6e, 0x41, 0x8b, 0xf2, 0x45,
+  0x6e, 0xe9, 0x0c, 0xdf, 0x6d, 0xda, 0x1b, 0x55, 0xe6, 0x26, 0x91, 0x7b,
+  0xb5, 0x78, 0x2c, 0x5d, 0x7c, 0x2a, 0xf9, 0x58, 0x9a, 0xff, 0x4c, 0x02,
+  0x32, 0x49, 0xe7, 0xfe, 0xb6, 0x72, 0x02, 0x78, 0x74, 0xc8, 0x3f, 0xb7,
+  0xbf, 0x0d, 0x1d, 0x2d, 0x05, 0x62, 0xa4, 0x15, 0x90, 0x17, 0xd0, 0xae,
+  0x20, 0xa5, 0xb9, 0xc4, 0x3c, 0xa7, 0xe1, 0x32, 0xb4, 0xcd, 0x9a, 0x6b,
+  0x40, 0x5b, 0xe4, 0x39, 0x65, 0x14, 0x29, 0x93, 0x91, 0x76, 0xd1, 0x1a,
+  0x6d, 0xaa, 0x7d, 0x9b, 0x5c, 0x13, 0xb4, 0x6e, 0xa6, 0x4e, 0x8f, 0xa5,
+  0x29, 0x10, 0x19, 0x30, 0x82, 0x60, 0x90, 0x1d, 0x9c, 0x41, 0x34, 0x24,
+  0x5a, 0x8c, 0x88, 0x58, 0x27, 0x87, 0x8c, 0x40, 0x20, 0x30, 0x94, 0x03,
+  0x18, 0x1a, 0xf4, 0x92, 0x25, 0x18, 0x32, 0x8e, 0xb0, 0x3e, 0x28, 0x83,
+  0xeb, 0xf8, 0xec, 0xf5, 0xeb, 0x93, 0xe3, 0x66, 0x3c, 0x2c, 0x06, 0xa9,
+  0x10, 0xd4, 0x9d, 0x53, 0x84, 0x8e, 0x7b, 0xf3, 0x42, 0x01, 0x19, 0x0f,
+  0xcf, 0x86, 0xc6, 0xc0, 0x1f, 0x37, 0x82, 0x1d, 0xe9, 0x7e, 0xc9, 0x45,
+  0x97, 0x97, 0x52, 0xac, 0x75, 0xda, 0x50, 0x04, 0x51, 0xb9, 0x28, 0x04,
+  0xeb, 0x99, 0x8c, 0xea, 0x32, 0x59, 0x86, 0x91, 0x48, 0x46, 0xa3, 0x6d,
+  0x41, 0x9f, 0xe1, 0x4b, 0x1c, 0xbb, 0x6a, 0x3b, 0x6d, 0x5c, 0x71, 0x1a,
+  0xc1, 0x07, 0xe3, 0x7c, 0x1c, 0x53, 0x74, 0xc4, 0x34, 0x29, 0xde, 0x63,
+  0x04, 0xad, 0x03, 0xa8, 0x43, 0xf0, 0xc7, 0x54, 0x1e, 0x7a, 0x34, 0x0a,
+  0xd5, 0x02, 0xa2, 0x10, 0x0f, 0x07, 0xbc, 0x4c, 0x07, 0x44, 0xec, 0x76,
+  0x56, 0x1d, 0x60, 0xb6, 0x99, 0xbe, 0x3e, 0x4b, 0x6f, 0xb0, 0x1b, 0x2e,
+  0x68, 0x87, 0x05, 0x7d, 0xfc, 0x4a, 0xb1, 0x45, 0x5a, 0x2d, 0x8a, 0x19,
+  0x33, 0xda, 0x3b, 0xc7, 0x55, 0x85, 0xc0, 0xeb, 0x11, 0x61, 0x5a, 0x97,
+  0x88, 0x08, 0x20, 0xd8, 0x82, 0xde, 0x5a, 0xbd, 0x60, 0xa2, 0xa9, 0xe5,
+  0x5b, 0x79, 0x69, 0x71, 0xa6, 0x08, 0xcb, 0x20, 0x55, 0x6a, 0x26, 0x1e,
+  0xd8, 0x56, 0xdf, 0x8f, 0x57, 0x9b, 0xb6, 0x01, 0x6d, 0xa7, 0x65, 0xad,
+  0x01, 0xdd, 0xcc, 0xa4, 0x25, 0x30, 0xae, 0x5f, 0xc1, 0xda, 0x90, 0x25,
+  0x9f, 0x98, 0xec, 0x63, 0x04, 0xb9, 0xad, 0x1a, 0xe6, 0xc5, 0x0a, 0xf7,
+  0x15, 0x11, 0x56, 0x8a, 0xcb, 0x05, 0xc3, 0xcc, 0x22, 0x09, 0xd2, 0xa1,
+  0x8c, 0x03, 0x8e, 0xe7, 0x88, 0x31, 0x50, 0xd5, 0x51, 0x46, 0x61, 0x7e,
+  0xb0, 0xbc, 0xb8, 0x11, 0xb2, 0xf8, 0x1a, 0x4c, 0xc1, 0x31, 0x2f, 0x72,
+  0x52, 0xb3, 0xd9, 0x7c, 0x51, 0x85, 0xaa, 0xcd, 0x48, 0x45, 0xa5, 0x6f,
+  0x63, 0x87, 0xca, 0x68, 0xb6, 0x68, 0xf5, 0x77, 0xf7, 0x94, 0x0b, 0x9e,
+  0xa2, 0x3b, 0xa2, 0xac, 0x46, 0xd9, 0xec, 0xde, 0x66, 0x53, 0x3f, 0x10,
+  0x83, 0x02, 0x23, 0x2d, 0xb1, 0x6e, 0x93, 0xbf, 0xa3, 0x49, 0x0b, 0xe6,
+  0x2d, 0x65, 0x05, 0x41, 0x63, 0xb9, 0xe5, 0x66, 0x9f, 0x0e, 0x7b, 0xa4,
+  0xde, 0x4f, 0xe7, 0xc7, 0xf8, 0x39, 0x86, 0x63, 0xc6, 0xaf, 0x61, 0x33,
+  0x0e, 0xa2, 0x3f, 0xe7, 0x69, 0xc7, 0x09, 0xd2, 0x6a, 0x67, 0xe6, 0xf7,
+  0x69, 0x1a, 0xe3, 0xee, 0xe2, 0xa3, 0x4b, 0x3a, 0x39, 0x70, 0xd2, 0xe7,
+  0x45, 0x56, 0x7e, 0xc4, 0xd6, 0x5f, 0x00, 0x7f, 0x39, 0xb8, 0x5f, 0x73,
+  0xf7, 0xc1, 0xf2, 0xad, 0xa5, 0xef, 0x3c, 0x0d, 0x89, 0x0f, 0x0a, 0x0d,
+  0xde, 0x2a, 0xb5, 0xe9, 0x03, 0x6b, 0x8b, 0x6d, 0xcd, 0xb0, 0x1f, 0xa7,
+  0xb3, 0x7b, 0x95, 0x4d, 0x5d, 0x2b, 0xec, 0xc7, 0x69, 0xfc, 0x61, 0x42,
+  0x80, 0x19, 0xda, 0x87, 0x09, 0x72, 0xcd, 0x30, 0xbe, 0x3a, 0xfc, 0xfa,
+  0x6a, 0x69, 0xee, 0x7d, 0x7a, 0x77, 0x2f, 0x85, 0xde, 0x3c, 0xf7, 0x01,
+  0xc2, 0xb4, 0x69, 0xc3, 0x95, 0xa6, 0x3f, 0x93, 0x3e, 0x6f, 0xc6, 0x82,
+  0xa9, 0x8d, 0xce, 0x87, 0x11, 0x45, 0xdc, 0x7d, 0x14, 0x25, 0xd3, 0xe4,
+  0x97, 0xaf, 0x25, 0x5e, 0x53, 0x4e, 0x31, 0xfc, 0xb3, 0x74, 0x2b, 0x3e,
+  0x48, 0xa1, 0x37, 0x49, 0xac, 0xfe, 0x1e, 0xfc, 0xfb, 0x54, 0x9a, 0x8f,
+  0xbe, 0xd4, 0xbc, 0x9b, 0xeb, 0xaf, 0xb7, 0x01, 0xa3, 0xbd, 0x9f, 0x46,
+  0xf3, 0xda, 0x60, 0xd7, 0x46, 0x9b, 0xfd, 0xf3, 0xd7, 0x27, 0xdf, 0x9f,
+  0x6d, 0x35, 0xb1, 0xae, 0xb9, 0x50, 0xa1, 0x17, 0xd4, 0xe2, 0x68, 0x3b,
+  0x4b, 0xf5, 0x1b, 0x8b, 0x8e, 0xeb, 0xaa, 0x38, 0x81, 0x48, 0x7c, 0x67,
+  0x2c, 0x66, 0x28, 0x12, 0xa9, 0xb9, 0x9e, 0xba, 0x63, 0x7b, 0xfc, 0x54,
+  0x1a, 0x8f, 0xed, 0xe1, 0x23, 0x2b, 0x3d, 0xeb, 0xeb, 0x39, 0x88, 0xe6,
+  0x7a, 0xcf, 0xad, 0x0e, 0xe0, 0x98, 0x47, 0x1f, 0xa8, 0xbc, 0x12, 0x96,
+  0x6c, 0x4d, 0x75, 0xa5, 0x5e, 0x6a, 0xdb, 0xe6, 0x95, 0x59, 0xbf, 0xdf,
+  0x26, 0x7e, 0x1a, 0x60, 0x6a, 0xa7, 0xf1, 0x65, 0x5b, 0xf7, 0x70, 0xe1,
+  0xc1, 0xa3, 0x10, 0x77, 0x0f, 0x03, 0x60, 0xd0, 0xfc, 0xc5, 0x32, 0x60,
+  0x13, 0xcb, 0x29, 0xe9, 0xa9, 0x0f, 0xb8, 0xb0, 0xee, 0x83, 0x71, 0x62,
+  0x6f, 0xaa, 0x4f, 0xe5, 0x27, 0xa8, 0x83, 0x9d, 0x7c, 0x54, 0xf6, 0xe9,
+  0x25, 0x01, 0x98, 0xd6, 0xef, 0xc1, 0x39, 0xff, 0x73, 0x60, 0x30, 0x1c,
+  0x3f, 0x7b, 0x00, 0x07, 0xe3, 0xff, 0xc2, 0x60, 0xfc, 0x5f, 0x18, 0x8c,
+  0x0f, 0x87, 0xc1, 0x70, 0x25, 0xa8, 0x87, 0xe0, 0x39, 0x3c, 0x58, 0x8e,
+  0x5d, 0xa1, 0x81, 0x7e, 0x28, 0xaa, 0x83, 0xdf, 0xc8, 0x47, 0xc4, 0x76,
+  0xa8, 0xb5, 0xbb, 0x54, 0x36, 0xfb, 0x2a, 0xc4, 0x61, 0x90, 0x64, 0xb3,
+  0xa1, 0x40, 0x55, 0x1f, 0xe2, 0xbf, 0xcb, 0xe0, 0xd4, 0xeb, 0x69, 0x63,
+  0x4e, 0x5e, 0x80, 0x34, 0xc3, 0x96, 0x12, 0x6b, 0xfc, 0x8b, 0x7c, 0x50,
+  0x3c, 0x39, 0x4d, 0xe1, 0x30, 0xaa, 0xf0, 0xb0, 0x3e, 0xf5, 0xf6, 0x2f,
+  0xdf, 0xfd, 0xda, 0x50, 0x3a, 0xe5, 0x55, 0xb1, 0xc0, 0x52, 0xb5, 0x77,
+  0x9d, 0x87, 0x8a, 0x53, 0xb5, 0xf6, 0x96, 0x6d, 0xd8, 0xa3, 0xfd, 0xe0,
+  0x86, 0x95, 0x93, 0x98, 0xb6, 0x01, 0x41, 0xf8, 0x3d, 0x27, 0x81, 0xbd,
+  0x98, 0x1b, 0xcf, 0x7d, 0x80, 0xaa, 0xdf, 0xd2, 0xf3, 0x8a, 0x3a, 0x6a,
+  0x8d, 0xe6, 0x9a, 0x99, 0xcd, 0xed, 0x3a, 0x7f, 0xa3, 0x9b, 0x07, 0x6e,
+  0x5a, 0x63, 0xac, 0x1f, 0xa8, 0x02, 0x35, 0x9b, 0x5b, 0x5f, 0x07, 0xa2,
+  0x16, 0x16, 0x15, 0x96, 0x3a, 0xce, 0x80, 0xd9, 0x93, 0x7b, 0x74, 0xf9,
+  0xde, 0x35, 0x1e, 0xfe, 0x58, 0x1b, 0xd8, 0x6c, 0xb6, 0x4d, 0x9e, 0x8d,
+  0xfd, 0x6c, 0xb5, 0x25, 0x9b, 0x28, 0x85, 0x37, 0x9a, 0xdb, 0xe8, 0x74,
+  0x16, 0xb8, 0x0d, 0x3f, 0x60, 0x6b, 0x9b, 0xb3, 0xf8, 0xe0, 0x80, 0x8e,
+  0x60, 0xab, 0x1c, 0xae, 0xdb, 0xc8, 0x14, 0xe7, 0xad, 0x0e, 0x05, 0x74,
+  0x3c, 0x0d, 0x5a, 0xe3, 0xaa, 0x49, 0xb9, 0xbb, 0x6f, 0x5d, 0xdc, 0xf2,
+  0xcb, 0x02, 0xb1, 0xfa, 0x43, 0xee, 0x6e, 0x16, 0xe7, 0xfa, 0xa6, 0x6e,
+  0x85, 0x84, 0xba, 0xd2, 0x5b, 0x14, 0x44, 0x99, 0x96, 0xaa, 0x42, 0x99,
+  0x58, 0x6d, 0xbd, 0x84, 0x03, 0xd8, 0xd5, 0x54, 0x0b, 0xc8, 0x25, 0x17,
+  0x52, 0xae, 0x10, 0x96, 0x4e, 0xb5, 0x81, 0x92, 0x44, 0x9a, 0xdd, 0xde,
+  0x3e, 0xd7, 0x5d, 0xa1, 0xd8, 0x73, 0x10, 0xb3, 0x64, 0x9c, 0x4d, 0x17,
+  0x0b, 0x0f, 0x60, 0x8a, 0xd8, 0xe7, 0xea, 0x47, 0x02, 0x46, 0x9b, 0x8d,
+  0xf4, 0xf9, 0x5e, 0xf4, 0x06, 0xed, 0xd7, 0x58, 0x95, 0x1d, 0xc7, 0x43,
+  0xd2, 0x12, 0xb4, 0x1d, 0xc9, 0xf7, 0xa1, 0xe6, 0x34, 0x87, 0x8b, 0x33,
+  0xbf, 0x80, 0xd9, 0xbf, 0x7d, 0x73, 0xea, 0x67, 0xe5, 0xe8, 0x86, 0x52,
+  0x12, 0x73, 0x99, 0x6e, 0x8f, 0xf2, 0x61, 0xb9, 0x8d, 0xbb, 0xa6, 0x1d,
+  0x5f, 0x55, 0xd3, 0x49, 0xd0, 0x36, 0xae, 0x97, 0x17, 0x89, 0x53, 0x52,
+  0x14, 0x60, 0x72, 0x27, 0x25, 0x8d, 0x2d, 0xa0, 0x03, 0x11, 0x59, 0xe6,
+  0xd4, 0xe4, 0x81, 0xef, 0xbd, 0x4a, 0xb8, 0x04, 0x75, 0x05, 0x13, 0x82,
+  0xff, 0x43, 0xa1, 0x86, 0x42, 0xed, 0x03, 0xf5, 0x14, 0x92, 0x68, 0x94,
+  0xc1, 0x59, 0xa1, 0xf2, 0x03, 0x0e, 0x94, 0x95, 0xbf, 0x37, 0x0c, 0x42,
+  0x5e, 0x15, 0x77, 0x78, 0x81, 0x91, 0x3c, 0x28, 0x9b, 0xd1, 0xd8, 0x71,
+  0x93, 0x6c, 0xcd, 0x40, 0xed, 0x4c, 0x59, 0xcd, 0x23, 0x25, 0x24, 0xb6,
+  0x22, 0x4a, 0xd9, 0x23, 0xc9, 0xcf, 0x7b, 0xbd, 0xd6, 0xc7, 0x02, 0xb3,
+  0x7f, 0x77, 0x74, 0xd2, 0x7f, 0xb7, 0xbb, 0xf7, 0xe5, 0xbb, 0xef, 0x8f,
+  0x5f, 0xbd, 0xeb, 0xbf, 0x38, 0x42, 0xe9, 0xfe, 0x81, 0x57, 0x6d, 0xbd,
+  0x6d, 0x09, 0xcb, 0xa2, 0x88, 0x88, 0x3a, 0xa4, 0xe7, 0x6e, 0xcb, 0xb9,
+  0x45, 0xc5, 0xf8, 0x3e, 0x96, 0x5b, 0xf7, 0xd1, 0x0f, 0x31, 0x1b, 0xba,
+  0xed, 0x7c, 0xfe, 0x6d, 0x31, 0x43, 0xe9, 0xbf, 0x39, 0xff, 0x34, 0x4a,
+  0x30, 0x74, 0x42, 0x98, 0xa0, 0xab, 0xaf, 0x4f, 0x78, 0xd2, 0x60, 0x22,
+  0x1c, 0x32, 0xe0, 0xc1, 0xd2, 0xed, 0x30, 0x0f, 0x7f, 0x80, 0x69, 0xc2,
+  0x6d, 0xe6, 0xde, 0x16, 0x8a, 0x4f, 0xb7, 0x1d, 0x66, 0x2c, 0x75, 0x93,
+  0xd0, 0x67, 0xdc, 0x11, 0xb2, 0x52, 0x05, 0x75, 0x86, 0xda, 0x5e, 0xd0,
+  0x63, 0x1f, 0xb6, 0x0f, 0xd4, 0xc4, 0xe7, 0x0d, 0x10, 0xd2, 0x51, 0x94,
+  0x53, 0x92, 0x57, 0x3f, 0xd1, 0xe2, 0xeb, 0x26, 0xdf, 0x6f, 0x03, 0xae,
+  0x77, 0x97, 0xad, 0xfb, 0xf5, 0xee, 0x47, 0x90, 0x19, 0xb9, 0x9d, 0x4f,
+  0x65, 0xf4, 0xe4, 0xd6, 0x3f, 0xd6, 0x62, 0x2e, 0x5b, 0xb4, 0xb7, 0xdd,
+  0xba, 0x71, 0xf5, 0xb0, 0x56, 0x06, 0xd0, 0xa3, 0x5f, 0xa7, 0x98, 0x9d,
+  0x53, 0xcc, 0xad, 0x86, 0xcc, 0xc2, 0x32, 0x98, 0xa3, 0xeb, 0x2e, 0xaf,
+  0xf2, 0xd8, 0x5a, 0xc6, 0x91, 0xab, 0x2b, 0x6b, 0x4d, 0x90, 0x7e, 0xff,
+  0xfc, 0x65, 0xcc, 0x49, 0x65, 0x23, 0xa9, 0x79, 0xc9, 0x85, 0x52, 0x19,
+  0xcc, 0x41, 0x4b, 0x15, 0xbf, 0x6e, 0xd1, 0xab, 0x29, 0xbf, 0x33, 0x50,
+  0x01, 0x94, 0xe3, 0x15, 0xb4, 0xc8, 0x4e, 0xe5, 0xe2, 0x2b, 0xc3, 0x99,
+  0x99, 0xf8, 0xd9, 0x53, 0x4b, 0x66, 0x4e, 0x96, 0x27, 0x92, 0x2b, 0xdd,
+  0x22, 0xbd, 0x03, 0x13, 0x58, 0x44, 0x02, 0x90, 0x57, 0xa5, 0x90, 0x6c,
+  0x7f, 0x0e, 0x32, 0x8c, 0x63, 0x5c, 0x3a, 0x88, 0x3a, 0xf1, 0xdb, 0xe8,
+  0xa0, 0xe3, 0x2d, 0xd1, 0x19, 0x02, 0x5f, 0x94, 0x55, 0x3a, 0xa5, 0x48,
+  0xa0, 0x82, 0xf4, 0x0d, 0x18, 0xc2, 0xfb, 0xd2, 0x35, 0x47, 0x5d, 0x61,
+  0x19, 0x5f, 0xeb, 0x0b, 0x50, 0x4b, 0x45, 0x71, 0xe9, 0x65, 0x12, 0x71,
+  0x94, 0x07, 0x1b, 0xce, 0x60, 0xcf, 0x86, 0x18, 0xdd, 0x82, 0xe2, 0x2e,
+  0xc6, 0xb7, 0x98, 0x88, 0x27, 0x36, 0x99, 0xcd, 0x28, 0xa9, 0x52, 0xd2,
+  0x52, 0x31, 0xaf, 0x72, 0x18, 0xc8, 0xc9, 0xe6, 0x9c, 0xba, 0x92, 0x5b,
+  0x9c, 0xe7, 0x65, 0x99, 0x0d, 0x40, 0x98, 0xbc, 0x14, 0x41, 0xae, 0x4c,
+  0x39, 0xd1, 0x9d, 0xeb, 0x55, 0xe0, 0x5a, 0x92, 0x84, 0x6b, 0x0b, 0x22,
+  0x35, 0x97, 0x88, 0x66, 0x4a, 0xb1, 0x3d, 0x1c, 0x87, 0x23, 0x98, 0x24,
+  0x30, 0x3e, 0x85, 0x26, 0xb9, 0xce, 0xb0, 0x0b, 0x4d, 0x25, 0x4e, 0xa2,
+  0x69, 0xce, 0x4b, 0x4f, 0xc6, 0xb6, 0xa6, 0x34, 0x38, 0xc1, 0x1a, 0x7d,
+  0xc0, 0x48, 0xfa, 0x88, 0xd8, 0x53, 0xa6, 0xb3, 0x32, 0x23, 0x1c, 0x27,
+  0x42, 0x24, 0xb1, 0x18, 0x51, 0x45, 0x8a, 0x79, 0x9f, 0xd7, 0xa9, 0x6c,
+  0xab, 0x98, 0x72, 0x5b, 0x91, 0x62, 0x10, 0x70, 0x65, 0x9a, 0x21, 0x72,
+  0x3d, 0x21, 0xbd, 0x51, 0x0d, 0x57, 0x65, 0x30, 0xd4, 0x63, 0x84, 0x7c,
+  0xc5, 0x0f, 0xfd, 0xe8, 0x2d, 0x91, 0x7a, 0x88, 0xcc, 0x3e, 0x77, 0xf4,
+  0xb3, 0xa1, 0xf5, 0x83, 0xf9, 0x87, 0x7a, 0xca, 0xf0, 0xa0, 0x38, 0x9c,
+  0xc7, 0x61, 0xf6, 0x0f, 0x06, 0x3c, 0x5b, 0x06, 0xff, 0xe5, 0x40, 0x40,
+  0x79, 0x25, 0x2e, 0xc3, 0xb8, 0x5f, 0xe3, 0xec, 0x96, 0x90, 0xd0, 0xfd,
+  0x3a, 0xd9, 0x4d, 0x0c, 0x2d, 0xc4, 0x5e, 0x60, 0xb7, 0x93, 0x59, 0xe2,
+  0x8a, 0xaa, 0x41, 0x51, 0x89, 0x16, 0x37, 0x03, 0xef, 0xad, 0xa7, 0x2c,
+  0x59, 0x5c, 0xb0, 0x1a, 0x12, 0x98, 0x05, 0x02, 0x43, 0x62, 0xb2, 0x30,
+  0x60, 0x84, 0xd6, 0xc7, 0x51, 0x8d, 0x09, 0x8e, 0xc0, 0xd7, 0x6e, 0xc6,
+  0xd9, 0xb0, 0x1d, 0x04, 0xcc, 0xcf, 0xb8, 0xcd, 0x6e, 0xb5, 0x9c, 0x3b,
+  0xf6, 0x92, 0x56, 0x0c, 0x1c, 0x61, 0x31, 0x54, 0xc6, 0xda, 0xbf, 0x4e,
+  0xa1, 0x0f, 0xc4, 0x45, 0x89, 0x22, 0x01, 0xe8, 0x11, 0x05, 0xed, 0xc7,
+  0xaf, 0x28, 0xf0, 0xae, 0x17, 0xa5, 0xbd, 0xcb, 0x9e, 0x33, 0x01, 0xf3,
+  0xe6, 0x36, 0xba, 0x45, 0xb6, 0xab, 0x7c, 0x9b, 0xbb, 0xed, 0xe1, 0x8f,
+  0x2f, 0xda, 0x51, 0xde, 0x4c, 0x5a, 0xed, 0x75, 0x96, 0x18, 0x72, 0xb3,
+  0x7b, 0xc1, 0xdb, 0x15, 0x51, 0xb5, 0x58, 0x29, 0x8e, 0xd3, 0x96, 0x4b,
+  0xc2, 0x95, 0x56, 0x03, 0x10, 0xd1, 0xaf, 0xfb, 0xfd, 0xc0, 0xfa, 0x14,
+  0xe9, 0x30, 0xbf, 0x9c, 0x65, 0xbf, 0x51, 0x5d, 0x52, 0xb4, 0x73, 0x34,
+  0x01, 0x66, 0x6a, 0x68, 0x6f, 0x9a, 0x57, 0xa9, 0xd9, 0xbb, 0x3e, 0x7f,
+  0x27, 0x5c, 0x0a, 0xba, 0x75, 0x51, 0x8e, 0x40, 0x20, 0x52, 0xd9, 0xa6,
+  0x92, 0xa2, 0x4e, 0x29, 0xc1, 0x3d, 0x15, 0x40, 0x35, 0x83, 0x5e, 0xc3,
+  0x1d, 0x7b, 0xb4, 0xa3, 0x44, 0x27, 0xb5, 0x0b, 0xff, 0x03, 0xa0, 0xd9,
+  0x5c, 0x2b, 0xb8, 0x16, 0x8f, 0x2f, 0xb9, 0x30, 0x26, 0x9e, 0xbc, 0x60,
+  0xb9, 0x7a, 0x53, 0x0f, 0xd8, 0xd7, 0x0b, 0x74, 0x19, 0x70, 0x8d, 0x59,
+  0x92, 0xe8, 0x49, 0x41, 0xce, 0x22, 0xdd, 0x28, 0x69, 0x95, 0x9d, 0x16,
+  0x4d, 0xb1, 0x43, 0x35, 0x12, 0x24, 0xa1, 0x12, 0xf7, 0xb6, 0x88, 0x1e,
+  0xb2, 0x49, 0x13, 0x00, 0xbb, 0xba, 0xe0, 0xfd, 0x11, 0xc6, 0x7b, 0x6a,
+  0x59, 0x4f, 0x09, 0xbc, 0xc4, 0xb3, 0x22, 0x85, 0x4e, 0x52, 0x2e, 0xf1,
+  0x8e, 0x83, 0xb2, 0x27, 0x9e, 0xf9, 0x01, 0xa1, 0x59, 0x78, 0x05, 0xbc,
+  0x13, 0xb5, 0xb0, 0x0c, 0x52, 0xc5, 0x93, 0x25, 0x9a, 0x82, 0x61, 0x60,
+  0x03, 0x3d, 0xac, 0x18, 0x8e, 0x98, 0x9a, 0x1a, 0xe3, 0x09, 0x5f, 0xe3,
+  0x31, 0x6d, 0x49, 0x27, 0x57, 0x38, 0x40, 0x77, 0x88, 0x9c, 0xea, 0x2b,
+  0xc1, 0xa0, 0x89, 0x02, 0x51, 0xd4, 0xef, 0x70, 0x32, 0x8d, 0x25, 0x1e,
+  0x69, 0x49, 0xa9, 0x42, 0x12, 0x83, 0x16, 0xb3, 0x19, 0x96, 0x0a, 0x12,
+  0x88, 0x46, 0x43, 0x2b, 0x5d, 0x64, 0x6e, 0x98, 0x0d, 0x6e, 0xc2, 0x0c,
+  0x84, 0x81, 0xc3, 0x0b, 0x5e, 0x68, 0x68, 0x3a, 0x69, 0x33, 0xb8, 0xfc,
+  0xff, 0x07, 0x9a, 0x9f, 0xbd, 0x84, 0x88, 0x37, 0x7a, 0x57, 0x90, 0x49,
+  0xc1, 0xbf, 0x01, 0x26, 0x20, 0x25, 0x26, 0x85, 0xf0, 0x91, 0xc4, 0x3d,
+  0x8f, 0xac, 0x77, 0x88, 0xba, 0x91, 0xc4, 0x0b, 0x37, 0xd3, 0xf6, 0x95,
+  0x37, 0x6e, 0x0a, 0xb7, 0xd8, 0x0a, 0xc0, 0xa0, 0x50, 0xc0, 0x3a, 0x22,
+  0xcd, 0xe3, 0xa2, 0xd1, 0x1d, 0xff, 0x47, 0xb3, 0x1d, 0x4b, 0x74, 0xce,
+  0xcf, 0x99, 0xc7, 0x2f, 0x52, 0x87, 0x87, 0x48, 0xb8, 0xa6, 0xc7, 0x82,
+  0x2e, 0xa6, 0x7b, 0x44, 0xeb, 0xec, 0xc2, 0xc5, 0x71, 0xe8, 0xc8, 0x22,
+  0xdf, 0x04, 0x84, 0x11, 0x2f, 0x8c, 0x80, 0xc1, 0x4b, 0xf1, 0x55, 0xbd,
+  0x3c, 0xa5, 0x9a, 0xb0, 0xcf, 0x8f, 0xc3, 0xa7, 0x19, 0x41, 0x6b, 0x88,
+  0x13, 0x1b, 0xde, 0x8b, 0x78, 0x12, 0xf8, 0x72, 0x0b, 0xf7, 0x4d, 0xd9,
+  0x52, 0xab, 0x66, 0x55, 0xb8, 0x6c, 0x06, 0x69, 0x75, 0x83, 0x22, 0x36,
+  0x29, 0x12, 0x5a, 0xb8, 0xd3, 0x61, 0x50, 0xc6, 0xec, 0x0b, 0x12, 0x58,
+  0x38, 0x84, 0xb9, 0x1b, 0x31, 0x80, 0x0c, 0xb2, 0xbb, 0x0a, 0x64, 0x6f,
+  0x81, 0xd4, 0xc0, 0x6b, 0x4e, 0x33, 0x11, 0x3c, 0xde, 0x10, 0x42, 0xa0,
+  0xb4, 0x09, 0x15, 0xdc, 0x3f, 0xae, 0x8b, 0x03, 0x73, 0x53, 0x03, 0x59,
+  0xd4, 0xdc, 0x73, 0x79, 0x70, 0x77, 0xb5, 0x0a, 0x8e, 0xad, 0x7d, 0x22,
+  0xfd, 0x1b, 0x9b, 0xfe, 0x48, 0x61, 0xc9, 0x5d, 0x9f, 0xe6, 0xd2, 0x86,
+  0xd4, 0x1a, 0xcf, 0xbb, 0x0e, 0x23, 0x9d, 0x79, 0x25, 0xb6, 0xb8, 0x98,
+  0x5b, 0xed, 0x92, 0xd1, 0xf2, 0xd8, 0xb5, 0x8e, 0xaa, 0x9a, 0x51, 0xdf,
+  0xc2, 0xbc, 0x86, 0x32, 0x38, 0x5a, 0x79, 0x3c, 0x3b, 0x3b, 0xe4, 0xdb,
+  0x64, 0x0e, 0x9f, 0x25, 0x0c, 0x7f, 0x35, 0x4d, 0x46, 0x69, 0x28, 0xc1,
+  0xa9, 0x41, 0x5d, 0x8d, 0x54, 0x15, 0x9a, 0xb4, 0xe0, 0x4f, 0x97, 0xb6,
+  0x2a, 0xac, 0x31, 0x0d, 0x4c, 0xbc, 0x78, 0x0b, 0x64, 0xd8, 0x82, 0xea,
+  0x25, 0x0e, 0x1c, 0xcd, 0x4e, 0x91, 0xc8, 0x42, 0xf7, 0x28, 0xb1, 0xb6,
+  0x9b, 0xcc, 0x04, 0x84, 0x38, 0x7c, 0x0d, 0x99, 0x39, 0xe6, 0xa1, 0x82,
+  0xa8, 0xa6, 0x1c, 0x6a, 0x73, 0xfc, 0x02, 0x83, 0x21, 0xe1, 0xfe, 0x75,
+  0x5f, 0x08, 0xc7, 0x5c, 0x79, 0x4e, 0x25, 0x29, 0x3b, 0xaa, 0xaf, 0x2c,
+  0x28, 0xee, 0x4e, 0x3b, 0x88, 0x65, 0x3a, 0x71, 0x5b, 0x02, 0x81, 0x1f,
+  0x44, 0x2e, 0xdb, 0x10, 0x86, 0x8e, 0xfc, 0xd0, 0x20, 0x72, 0x6e, 0xfc,
+  0x41, 0xe7, 0x43, 0xc6, 0xf5, 0xb1, 0x22, 0xf7, 0x5d, 0xd6, 0x2b, 0x21,
+  0x5d, 0x81, 0x28, 0xe4, 0xcd, 0x3e, 0xc2, 0xc1, 0xf5, 0x8f, 0xcf, 0xb7,
+  0xa2, 0xf3, 0x46, 0xb4, 0x16, 0x57, 0x0c, 0x3f, 0xaa, 0xdf, 0xf6, 0x7c,
+  0x4d, 0xb1, 0x41, 0x66, 0x49, 0x60, 0x4f, 0x26, 0x9c, 0xd2, 0xa4, 0x50,
+  0x51, 0x16, 0x4a, 0x73, 0xdc, 0x9b, 0x47, 0x54, 0x5b, 0x8b, 0x0b, 0x83,
+  0x88, 0x95, 0xc5, 0xe5, 0x8d, 0xe8, 0x22, 0x45, 0x4c, 0x58, 0x2a, 0xf0,
+  0xab, 0xb1, 0x49, 0x1a, 0x53, 0x34, 0xf1, 0x50, 0x42, 0x68, 0xe4, 0x8a,
+  0xa4, 0xe5, 0x14, 0x3c, 0xa3, 0xce, 0xa9, 0x14, 0x01, 0x5e, 0xc6, 0x7c,
+  0xb1, 0xd7, 0x10, 0x4c, 0xa3, 0xcb, 0x74, 0x96, 0x86, 0x6a, 0x8d, 0xde,
+  0x91, 0x6c, 0x27, 0x27, 0x8d, 0xb0, 0x9f, 0xab, 0x54, 0xcf, 0x1b, 0x5e,
+  0xda, 0x76, 0xc5, 0x64, 0x70, 0x19, 0xc1, 0xdc, 0xf1, 0xc1, 0xf4, 0x96,
+  0x66, 0xa0, 0x46, 0xb0, 0x01, 0x21, 0xd5, 0x62, 0x1d, 0x49, 0xa2, 0x21,
+  0x52, 0x42, 0x87, 0xf9, 0xfc, 0x0e, 0x17, 0x03, 0x1e, 0x2b, 0xcb, 0xab,
+  0x3d, 0xe0, 0xd6, 0x7b, 0xbd, 0x2f, 0x19, 0xbe, 0xfa, 0x0a, 0x64, 0x38,
+  0xcf, 0x99, 0x59, 0x49, 0xa6, 0x59, 0x56, 0x95, 0xe9, 0x64, 0xdc, 0x6c,
+  0x4f, 0x14, 0xb3, 0xde, 0x56, 0x8b, 0x03, 0x88, 0x09, 0xe2, 0xb3, 0xc1,
+  0x21, 0x73, 0xf7, 0x44, 0x13, 0xf0, 0x7b, 0x54, 0xae, 0x53, 0x60, 0xb1,
+  0x69, 0xf1, 0xf8, 0x2b, 0x92, 0x3c, 0xd7, 0x84, 0x3f, 0x14, 0x23, 0x90,
+  0x47, 0xe4, 0x44, 0xe3, 0xcf, 0x31, 0xd5, 0xb1, 0x9f, 0xce, 0x46, 0x9c,
+  0x87, 0x35, 0xc8, 0x60, 0xc7, 0x8a, 0x3b, 0x63, 0x38, 0xaa, 0xf3, 0xc3,
+  0xe7, 0x8c, 0x97, 0x1e, 0xd1, 0x6b, 0xc1, 0x22, 0x00, 0xa0, 0x78, 0xfe,
+  0x95, 0x7a, 0x95, 0x06, 0x44, 0xe3, 0x47, 0x71, 0xf2, 0xbb, 0x93, 0xe7,
+  0x67, 0x6f, 0x4e, 0xea, 0xd0, 0xc1, 0x15, 0x95, 0x74, 0xa4, 0x54, 0xa8,
+  0xe6, 0xe8, 0xa8, 0xb6, 0x37, 0x97, 0x0b, 0xe0, 0x24, 0xae, 0x0c, 0x2d,
+  0x7d, 0xd1, 0xf9, 0x0f, 0xcf, 0xcc, 0xe0, 0x32, 0xba, 0xab, 0x68, 0x50,
+  0xda, 0x62, 0x97, 0x03, 0x2f, 0x3d, 0x41, 0x90, 0x02, 0xf0, 0xb6, 0x7a,
+  0xc8, 0x85, 0x39, 0xcd, 0x4b, 0x87, 0x47, 0x29, 0x68, 0x9c, 0x38, 0xa8,
+  0xb5, 0x09, 0x40, 0x22, 0x47, 0xbb, 0x24, 0xd6, 0x1a, 0x30, 0xcd, 0x7a,
+  0xca, 0x1e, 0x89, 0xbd, 0x54, 0xa6, 0x4e, 0x0c, 0x3c, 0x58, 0x3f, 0x1b,
+  0x8b, 0x6a, 0xfb, 0xe7, 0x19, 0x07, 0x88, 0x92, 0xd3, 0x96, 0xdf, 0xbb,
+  0xe6, 0xd1, 0x71, 0xd7, 0x44, 0x08, 0xc4, 0x6f, 0x39, 0xac, 0x6b, 0x14,
+  0x2a, 0x5b, 0x89, 0xc6, 0x57, 0x62, 0xdc, 0x06, 0x4a, 0xa3, 0x2b, 0x85,
+  0xd0, 0x35, 0xe2, 0x4f, 0x0a, 0x9f, 0x4f, 0x9c, 0x75, 0x96, 0x0e, 0x37,
+  0xcb, 0xad, 0xf6, 0x99, 0x98, 0x65, 0x95, 0x09, 0x6d, 0xfc, 0x71, 0xa3,
+  0xae, 0xcd, 0x59, 0x5d, 0x94, 0x2e, 0xa8, 0x04, 0x87, 0xe0, 0xe9, 0x0e,
+  0x82, 0xee, 0x21, 0x36, 0x5d, 0x3a, 0x4b, 0xfa, 0x9a, 0xb7, 0x32, 0xcb,
+  0xb3, 0x61, 0x75, 0x91, 0x7a, 0x01, 0x5c, 0x4f, 0x23, 0xc3, 0x89, 0x88,
+  0xc1, 0x45, 0x04, 0xab, 0x7c, 0x8e, 0x32, 0x2c, 0x97, 0x0c, 0x18, 0x83,
+  0x46, 0x4a, 0xc9, 0x41, 0x66, 0xd1, 0xf1, 0x49, 0xb8, 0x18, 0x7d, 0xcf,
+  0xc0, 0x6c, 0x81, 0x60, 0x8f, 0x18, 0x93, 0x31, 0xae, 0x2d, 0x04, 0x36,
+  0x01, 0x87, 0xbe, 0x75, 0x89, 0x10, 0x4c, 0xae, 0x0c, 0x28, 0x75, 0x59,
+  0xf9, 0x1e, 0xb6, 0xfd, 0x0f, 0x40, 0x6e, 0x54, 0x49, 0xeb, 0x26, 0x2b,
+  0x81, 0xd1, 0x4a, 0xdb, 0x12, 0x9f, 0x2a, 0xe9, 0x9e, 0x3a, 0x4a, 0xb2,
+  0x1b, 0xe5, 0xb3, 0x16, 0xcc, 0x33, 0x5d, 0x09, 0xe6, 0x3f, 0x68, 0xf2,
+  0x2e, 0x52, 0xab, 0x8a, 0x1b, 0xb3, 0x20, 0x05, 0x85, 0xb6, 0x2d, 0x33,
+  0x45, 0x8b, 0xe0, 0x31, 0x2f, 0xef, 0x66, 0x15, 0xf2, 0x64, 0xbe, 0x3e,
+  0x86, 0x79, 0x41, 0xf2, 0x0f, 0xd2, 0xa8, 0x3d, 0xb2, 0x25, 0xd5, 0x14,
+  0xf9, 0xea, 0xf1, 0x57, 0xb8, 0xd0, 0x7e, 0x89, 0x82, 0x99, 0x66, 0x32,
+  0xd2, 0xd1, 0xe3, 0x19, 0xa1, 0x8e, 0x68, 0xe6, 0x50, 0x1b, 0x35, 0xd1,
+  0x02, 0xea, 0xcb, 0x29, 0x82, 0xae, 0x7a, 0x82, 0x0c, 0x5d, 0xb5, 0xd2,
+  0xc6, 0x03, 0xf1, 0xe8, 0xfc, 0xdc, 0x53, 0x6c, 0x13, 0x55, 0x12, 0xf5,
+  0xdc, 0xa8, 0x2a, 0xd0, 0x8b, 0xde, 0xce, 0x28, 0xd7, 0x19, 0xd7, 0xfb,
+  0x39, 0xc2, 0xbf, 0xb2, 0x98, 0x35, 0x83, 0x5d, 0x83, 0x6d, 0xc6, 0x8a,
+  0x28, 0x01, 0xd6, 0xc6, 0x7c, 0xd4, 0x4e, 0x48, 0xaf, 0x97, 0x66, 0x88,
+  0x2d, 0xb1, 0x03, 0xe1, 0x98, 0xca, 0x0e, 0x9f, 0x67, 0x5e, 0x09, 0x11,
+  0x14, 0x21, 0xd8, 0x20, 0x07, 0xd3, 0xa1, 0xb6, 0x31, 0x84, 0x3a, 0x9d,
+  0x4c, 0x18, 0xfa, 0x1a, 0x5b, 0x20, 0x7d, 0x99, 0x61, 0xd0, 0x29, 0x69,
+  0xd8, 0xb5, 0x23, 0x78, 0x37, 0x32, 0xa1, 0xb9, 0xf7, 0x10, 0x0b, 0x52,
+  0x4b, 0xb6, 0x28, 0x28, 0xa7, 0x06, 0x12, 0x21, 0x08, 0xad, 0x35, 0x2c,
+  0xd2, 0xea, 0xfc, 0x43, 0xb9, 0xb4, 0xe7, 0xa1, 0xc1, 0x29, 0x7a, 0xb1,
+  0x3f, 0x09, 0x2e, 0x34, 0x3a, 0x2e, 0x98, 0xb3, 0x84, 0xa1, 0x19, 0x51,
+  0x9c, 0xe7, 0x07, 0xf5, 0x9c, 0x94, 0x69, 0x55, 0xda, 0x4b, 0x33, 0x21,
+  0xbe, 0x4a, 0x7b, 0x46, 0x60, 0x9e, 0x24, 0x9e, 0xb7, 0x37, 0x87, 0xeb,
+  0x24, 0x70, 0xa8, 0x86, 0xa3, 0x11, 0xd5, 0xcf, 0x46, 0xac, 0x3a, 0x1c,
+  0xd2, 0x78, 0xd2, 0x5b, 0x92, 0x79, 0x81, 0x44, 0xbe, 0x09, 0xd7, 0x33,
+  0xb7, 0x92, 0x0b, 0x48, 0x3b, 0x45, 0x45, 0xd2, 0x15, 0xbd, 0xc9, 0x76,
+  0x9e, 0x92, 0xf1, 0xac, 0x25, 0x9a, 0x1a, 0xc8, 0xe1, 0xdd, 0x65, 0x5a,
+  0xe1, 0xf7, 0x9b, 0xfb, 0x5b, 0xb4, 0x1c, 0xe1, 0xe6, 0xe6, 0x08, 0x85,
+  0x4f, 0xf0, 0xd7, 0xf5, 0x41, 0x18, 0x38, 0x6c, 0x10, 0xe4, 0xac, 0x2b,
+  0xf4, 0xe9, 0x7e, 0x6f, 0xc7, 0x13, 0x3b, 0x86, 0x57, 0x97, 0xc5, 0x3c,
+  0xba, 0x04, 0x95, 0x61, 0xbe, 0x62, 0x55, 0xe5, 0x51, 0x6f, 0x59, 0xf9,
+  0xdd, 0x97, 0xcf, 0xf4, 0xcc, 0x19, 0x11, 0x15, 0xcd, 0x53, 0xe1, 0xe6,
+  0x9a, 0x4b, 0xa9, 0x04, 0x6b, 0x9a, 0xb2, 0x36, 0x06, 0x5d, 0x79, 0xfe,
+  0x2e, 0xdc, 0x5c, 0x6d, 0x43, 0xb8, 0x0d, 0x6d, 0x98, 0x0e, 0xe0, 0x08,
+  0x1a, 0x9b, 0x26, 0x7c, 0xc4, 0x2e, 0x81, 0xf1, 0x69, 0x37, 0x7e, 0xb6,
+  0xff, 0xd5, 0x34, 0x1f, 0x21, 0x64, 0x6a, 0xba, 0x7a, 0x2d, 0xf0, 0x49,
+  0xb3, 0x18, 0x0a, 0x36, 0x5b, 0x3a, 0x04, 0xc5, 0xed, 0x0c, 0x32, 0xde,
+  0x6c, 0xff, 0x12, 0x6d, 0x5a, 0x42, 0x24, 0x1f, 0x1c, 0x9b, 0xa7, 0x37,
+  0xdd, 0x29, 0xcc, 0xa2, 0x7c, 0x58, 0x39, 0x33, 0xc0, 0x07, 0x5a, 0x08,
+  0x96, 0xee, 0xae, 0xc0, 0xcc, 0x10, 0x77, 0x94, 0x2c, 0x5f, 0xcb, 0x67,
+  0xc6, 0x0f, 0x7a, 0x9b, 0x0c, 0x1f, 0xf2, 0x8d, 0xe8, 0xed, 0x70, 0xfb,
+  0xcc, 0x42, 0x3b, 0x4c, 0x23, 0x68, 0x6e, 0x30, 0x2d, 0x19, 0xbb, 0xff,
+  0xf0, 0xf1, 0xb8, 0xe5, 0xec, 0xe8, 0x0e, 0xd3, 0x93, 0x4b, 0x37, 0x58,
+  0x7a, 0xf1, 0x56, 0x61, 0x82, 0x4e, 0xa0, 0x45, 0x31, 0x4c, 0xdf, 0xb1,
+  0x68, 0x42, 0x05, 0x68, 0xdf, 0x2d, 0x5f, 0x90, 0x89, 0xd4, 0xa0, 0xb8,
+  0x9b, 0xa2, 0x24, 0x6f, 0x19, 0xf0, 0x90, 0x1c, 0x60, 0x28, 0xaa, 0x51,
+  0x4d, 0x06, 0xd0, 0x36, 0xe8, 0x7b, 0xd6, 0xf8, 0x5b, 0xc8, 0xde, 0xf6,
+  0x17, 0x99, 0x7a, 0x4b, 0xf3, 0x1c, 0x46, 0xad, 0xf5, 0x8a, 0xd8, 0xc0,
+  0xe6, 0x0c, 0x91, 0x9e, 0x6b, 0x59, 0x90, 0xa0, 0xb5, 0x79, 0xfa, 0x1e,
+  0x61, 0x3b, 0x8d, 0x5c, 0xf6, 0x6e, 0xe6, 0x7b, 0x98, 0x5d, 0x3a, 0xe6,
+  0xc7, 0x75, 0xbb, 0x79, 0x4e, 0x82, 0xd0, 0x6b, 0x50, 0xd2, 0xdc, 0x9d,
+  0x0e, 0x88, 0x5b, 0x75, 0xa9, 0xeb, 0x1d, 0xa3, 0x4b, 0xcb, 0x89, 0xf4,
+  0x46, 0x77, 0x5f, 0x16, 0x3e, 0x5d, 0xc2, 0xc2, 0x6b, 0x90, 0xc6, 0x2e,
+  0x23, 0x5f, 0x42, 0x86, 0xb5, 0x39, 0xdc, 0x93, 0x8b, 0x87, 0x9b, 0x43,
+  0x21, 0x67, 0x39, 0x17, 0x27, 0xc1, 0xa3, 0xc1, 0xc3, 0x3f, 0x25, 0x0b,
+  0x47, 0x4f, 0xb5, 0x5a, 0xe0, 0xe1, 0x57, 0x5d, 0x34, 0x15, 0xef, 0x08,
+  0xe9, 0x64, 0x50, 0xe6, 0x93, 0x05, 0x5a, 0x93, 0x92, 0xea, 0x8a, 0x77,
+  0x68, 0xac, 0xe3, 0x6c, 0xdd, 0xcf, 0x59, 0x65, 0x04, 0x7d, 0x43, 0x0c,
+  0xde, 0x8e, 0xc2, 0x63, 0xd8, 0x1c, 0xd3, 0xac, 0x50, 0x78, 0xfb, 0xb6,
+  0xca, 0xd3, 0x76, 0x88, 0x2c, 0x87, 0xd8, 0x4d, 0x29, 0x02, 0x74, 0xd7,
+  0x7e, 0x87, 0x68, 0xb7, 0x4d, 0x2e, 0x33, 0x4a, 0x51, 0xf2, 0x97, 0xf3,
+  0x85, 0xd9, 0x69, 0xab, 0x99, 0x15, 0x8f, 0xbc, 0x95, 0x70, 0x8b, 0xe9,
+  0x0a, 0x82, 0x85, 0x07, 0xec, 0xac, 0xb8, 0x24, 0x8c, 0x99, 0x95, 0xc7,
+  0xec, 0x84, 0x00, 0x5b, 0x56, 0xbe, 0x6d, 0x04, 0xb5, 0x83, 0xbd, 0xe4,
+  0x4c, 0xf3, 0x93, 0xc1, 0xe1, 0xd8, 0xc5, 0x85, 0xdd, 0x2d, 0xee, 0xec,
+  0xc8, 0x5a, 0x68, 0xfd, 0xae, 0xf1, 0x96, 0x2c, 0x4f, 0xd7, 0x71, 0x5a,
+  0x91, 0xad, 0x03, 0x0d, 0x43, 0x3e, 0x6d, 0x28, 0xcf, 0x5c, 0x8b, 0xe7,
+  0xa2, 0x3d, 0x61, 0x52, 0x2b, 0x14, 0x27, 0x62, 0xe2, 0x03, 0x00, 0x46,
+  0x3c, 0x6b, 0x87, 0x98, 0x39, 0xb8, 0xc5, 0xce, 0xb3, 0x93, 0xd3, 0x13,
+  0xda, 0x8b, 0x4e, 0xe4, 0xdb, 0x39, 0xc6, 0x79, 0x6e, 0xda, 0xb1, 0x36,
+  0x8e, 0x1f, 0xbb, 0xb6, 0x80, 0xb9, 0x3b, 0x46, 0x5c, 0x15, 0x90, 0x63,
+  0xdb, 0xb1, 0xd2, 0x9e, 0x61, 0xa5, 0x8a, 0x21, 0x85, 0x4c, 0x68, 0xb5,
+  0x8b, 0x46, 0xb5, 0x1e, 0xf6, 0x8c, 0x1b, 0x9f, 0x9e, 0xf8, 0xd2, 0xe1,
+  0xd0, 0x7f, 0xf9, 0x08, 0x43, 0xd8, 0x9a, 0xc6, 0xd3, 0x8c, 0xca, 0x08,
+  0xe4, 0x62, 0x6e, 0x92, 0x6a, 0x43, 0x57, 0x09, 0x03, 0x6b, 0x93, 0x85,
+  0x14, 0xc3, 0x8c, 0x58, 0xb5, 0x18, 0xd7, 0xa2, 0xd9, 0xa3, 0x7c, 0xd2,
+  0xdc, 0x6f, 0xe3, 0xa2, 0x07, 0xb6, 0xa0, 0x16, 0xaa, 0x2f, 0x96, 0x04,
+  0xc3, 0x99, 0x43, 0x85, 0x4d, 0xd2, 0xa4, 0x25, 0xc1, 0x93, 0x52, 0xee,
+  0x71, 0x44, 0xaa, 0x10, 0x52, 0x95, 0xd0, 0x51, 0x5a, 0x78, 0x24, 0x86,
+  0x26, 0x06, 0x5e, 0xb5, 0x88, 0xd3, 0x00, 0x89, 0x78, 0x29, 0x2c, 0x49,
+  0xd4, 0x12, 0xda, 0x6a, 0xc4, 0x36, 0x4f, 0xc5, 0x7f, 0x28, 0x8f, 0xa7,
+  0xb3, 0x4b, 0xdc, 0x64, 0x3f, 0x32, 0xa3, 0x9e, 0x8b, 0xd9, 0x52, 0x0c,
+  0xc6, 0xdd, 0xa9, 0xfb, 0x58, 0xd9, 0x3e, 0x4d, 0xbe, 0xb1, 0x3b, 0x0a,
+  0xcc, 0x24, 0xcb, 0xca, 0xab, 0x35, 0x3d, 0x7b, 0xe9, 0xe5, 0x28, 0xae,
+  0xdb, 0x6e, 0xe3, 0xa2, 0xcb, 0x2d, 0xc3, 0x8d, 0x72, 0x48, 0x3f, 0x82,
+  0xa8, 0x62, 0x91, 0xda, 0xdc, 0xa2, 0xe7, 0x2f, 0x4f, 0x4f, 0xb6, 0xa2,
+  0x37, 0x12, 0xfa, 0x85, 0x9a, 0xea, 0x5d, 0x45, 0xab, 0x0c, 0x0d, 0x6c,
+  0x66, 0x3d, 0x10, 0x46, 0x19, 0x5d, 0x0a, 0xb5, 0xbe, 0x51, 0x3e, 0x0c,
+  0x06, 0xd2, 0x6d, 0x49, 0xc0, 0x18, 0xfb, 0x6b, 0xb6, 0x77, 0x7b, 0xbb,
+  0x5c, 0xc7, 0x04, 0xb7, 0xc3, 0x51, 0xcd, 0xd9, 0x64, 0x97, 0xb0, 0x3c,
+  0x33, 0x89, 0xa8, 0xeb, 0x26, 0x4d, 0xbf, 0xc1, 0x8e, 0x4b, 0xdf, 0x75,
+  0x4c, 0xe7, 0xdb, 0xda, 0x64, 0x6e, 0x92, 0x3b, 0x7f, 0x6b, 0x77, 0xe2,
+  0x47, 0x5f, 0x7d, 0x55, 0x93, 0xa7, 0x95, 0xff, 0xa2, 0x1d, 0xe6, 0xf1,
+  0xce, 0x0e, 0xcd, 0xcd, 0x03, 0xe4, 0x87, 0x2f, 0xe2, 0xaf, 0xe8, 0xc5,
+  0xfa, 0x6b, 0x65, 0x0a, 0x74, 0x34, 0x6a, 0x7f, 0x2f, 0xc6, 0x6f, 0x02,
+  0xdd, 0x11, 0xc5, 0xb4, 0xbe, 0xf5, 0x15, 0x76, 0x17, 0x78, 0x8b, 0x1e,
+  0xe6, 0x75, 0xcc, 0xc7, 0x63, 0xa4, 0x37, 0x7c, 0x52, 0xab, 0x89, 0xdd,
+  0x24, 0xc5, 0xc8, 0x9f, 0xee, 0x4e, 0x37, 0xde, 0x6d, 0x9b, 0x2e, 0xf1,
+  0x41, 0x4a, 0xf6, 0xc3, 0xfd, 0x44, 0xc6, 0xb0, 0xf9, 0x87, 0x2d, 0x46,
+  0x94, 0x6b, 0x36, 0xb4, 0x0b, 0x23, 0xda, 0xfd, 0xea, 0xab, 0x2e, 0x8e,
+  0xec, 0xf1, 0x57, 0x5f, 0xb5, 0x96, 0x3b, 0x70, 0xba, 0xb9, 0xc9, 0xad,
+  0xf3, 0x00, 0x5f, 0xb7, 0x44, 0x53, 0x42, 0x37, 0x51, 0xb8, 0x1f, 0xfc,
+  0x26, 0xfa, 0x3a, 0x7a, 0x7d, 0x76, 0x71, 0xe2, 0x98, 0xe9, 0xe9, 0x04,
+  0x71, 0x40, 0x91, 0x63, 0x97, 0xa2, 0x10, 0xb0, 0x39, 0xe6, 0xe3, 0xb0,
+  0x11, 0x70, 0xba, 0x98, 0xf8, 0xf6, 0x32, 0x42, 0x3d, 0x53, 0xaf, 0x95,
+  0xa2, 0x71, 0xe9, 0x89, 0x64, 0xd1, 0x87, 0xa2, 0xd3, 0xe2, 0x8c, 0xb2,
+  0x66, 0xe8, 0xdc, 0xfd, 0x17, 0xf0, 0xcd, 0xa4, 0x28, 0x7d, 0x1c, 0x09,
+  0x34, 0x1a, 0xa9, 0x95, 0x4c, 0x0c, 0x96, 0x79, 0x31, 0x35, 0xfe, 0x08,
+  0xe3, 0x1c, 0x13, 0x93, 0x86, 0xfc, 0x9d, 0x0d, 0xb2, 0x49, 0x56, 0xdd,
+  0xb5, 0xd8, 0xcb, 0x40, 0x48, 0x0c, 0xe8, 0x61, 0x67, 0xec, 0xbd, 0xbe,
+  0xcc, 0x2a, 0xb7, 0x0a, 0xde, 0x26, 0x50, 0xe1, 0x16, 0x59, 0xa9, 0x39,
+  0x89, 0x4a, 0x22, 0x41, 0x36, 0x4a, 0xc4, 0x2f, 0xe3, 0xb4, 0x75, 0xfc,
+  0x23, 0x9f, 0x6f, 0x78, 0x76, 0xb0, 0x74, 0x82, 0xc6, 0x20, 0x91, 0xe6,
+  0xf8, 0x85, 0x98, 0x9e, 0x94, 0x73, 0x4c, 0xa6, 0xb6, 0x5b, 0x72, 0xcc,
+  0x27, 0x54, 0x23, 0xda, 0xed, 0x3c, 0x60, 0x37, 0xa4, 0xba, 0x71, 0x14,
+  0x41, 0xab, 0x18, 0x83, 0xd8, 0x8c, 0x9b, 0xd7, 0xbe, 0xe1, 0x2c, 0x88,
+  0x61, 0x81, 0x33, 0x24, 0x10, 0xaf, 0x88, 0x2e, 0x3b, 0xf8, 0x47, 0xe9,
+  0x5c, 0xf3, 0xbf, 0x67, 0xf5, 0x76, 0xe0, 0x90, 0x8d, 0xb3, 0xcb, 0x45,
+  0x11, 0x4e, 0x04, 0x46, 0x9b, 0xa1, 0x86, 0xa8, 0x12, 0xd3, 0x43, 0xd1,
+  0xfb, 0x26, 0x51, 0x04, 0xbe, 0x29, 0x9a, 0x6a, 0x95, 0xe9, 0xa8, 0xf5,
+  0x4e, 0x11, 0xef, 0xae, 0x12, 0x0f, 0xd1, 0x8c, 0xb6, 0x72, 0x0c, 0x0a,
+  0x0e, 0xda, 0x3a, 0x25, 0xb4, 0x9a, 0x7c, 0x4f, 0xd4, 0x9a, 0x81, 0x18,
+  0x14, 0x37, 0x17, 0x52, 0x21, 0x0a, 0x84, 0x54, 0x88, 0x9a, 0x96, 0x20,
+  0x90, 0xb5, 0x45, 0xd3, 0x57, 0xcf, 0x3e, 0x3e, 0x8d, 0xb3, 0xbb, 0xb9,
+  0xca, 0xb1, 0xe2, 0x1f, 0xf0, 0x4b, 0xe4, 0x8f, 0x7e, 0xb5, 0x14, 0x64,
+  0x8a, 0xb4, 0xa3, 0xcc, 0x1f, 0x79, 0x9b, 0xe0, 0xf9, 0x9b, 0xd9, 0x24,
+  0x4f, 0x46, 0x25, 0x5f, 0xe4, 0x1a, 0x0d, 0x48, 0xcb, 0xc5, 0x35, 0x1c,
+  0x65, 0x73, 0xbd, 0x80, 0x5c, 0xdc, 0x6b, 0xde, 0xe5, 0x68, 0xd3, 0xa9,
+  0xe5, 0x43, 0x87, 0xc7, 0x31, 0x85, 0x32, 0x03, 0x45, 0x5a, 0xe1, 0xca,
+  0x34, 0x5b, 0x3d, 0x1a, 0x4b, 0xa0, 0xe4, 0x1f, 0xef, 0x57, 0xa9, 0xbb,
+  0x95, 0xde, 0x56, 0xf0, 0x67, 0x3a, 0x72, 0xed, 0xb3, 0x51, 0xff, 0xe5,
+  0x7f, 0x9f, 0xb4, 0xde, 0xaf, 0x97, 0xe9, 0x67, 0x0b, 0x9c, 0xe1, 0xde,
+  0xf7, 0xf6, 0xe2, 0x47, 0x8f, 0xd6, 0xbb, 0x4f, 0x8f, 0x09, 0x26, 0x37,
+  0x9f, 0x91, 0x25, 0x3e, 0x4e, 0x24, 0xb7, 0x37, 0xc1, 0x4f, 0x93, 0x39,
+  0xae, 0x47, 0x5d, 0xda, 0x43, 0x9f, 0xd6, 0x14, 0x56, 0x5c, 0xfd, 0xfe,
+  0xf8, 0xc9, 0xb2, 0xec, 0x01, 0x78, 0x36, 0x9b, 0x2e, 0xa6, 0xd6, 0x1b,
+  0x32, 0xa6, 0x37, 0x67, 0xc3, 0x3b, 0x26, 0x3a, 0x2a, 0x06, 0x66, 0x42,
+  0xf1, 0x09, 0xb3, 0xc3, 0x3b, 0x4d, 0x33, 0xe7, 0x12, 0xb4, 0x85, 0x2f,
+  0x91, 0x28, 0xc8, 0xc1, 0xc1, 0xaa, 0xf0, 0x62, 0x96, 0x61, 0x7d, 0xb0,
+  0x7c, 0x9a, 0xb2, 0x70, 0x4c, 0x7c, 0x68, 0xd4, 0x06, 0xaf, 0x48, 0xe3,
+  0x06, 0x4a, 0xa8, 0x55, 0xe8, 0x33, 0x58, 0x0f, 0xae, 0x63, 0x83, 0x3b,
+  0x12, 0xb5, 0x0b, 0x6b, 0x41, 0xb6, 0x54, 0xb1, 0x44, 0xb9, 0x6e, 0x4c,
+  0x86, 0xd6, 0x52, 0x63, 0xe1, 0xd3, 0x60, 0xdc, 0x26, 0x33, 0x19, 0x43,
+  0x1c, 0x6f, 0xdf, 0x9c, 0x72, 0xf8, 0x4e, 0x52, 0xf3, 0x18, 0xc1, 0xbe,
+  0xd1, 0xdd, 0x08, 0x2d, 0x92, 0x13, 0x2e, 0x99, 0x05, 0x54, 0x38, 0x5a,
+  0x3d, 0x9c, 0x24, 0x4c, 0xc6, 0x4d, 0x09, 0xb8, 0x49, 0x60, 0x2d, 0x16,
+  0xb0, 0xa5, 0x13, 0x3e, 0x01, 0x18, 0x92, 0x6e, 0x1a, 0xa7, 0xb0, 0x06,
+  0x9c, 0x93, 0x27, 0x99, 0xe2, 0x0e, 0x98, 0x2a, 0xf7, 0x2e, 0xce, 0xaa,
+  0x74, 0x51, 0x97, 0xdc, 0x35, 0x08, 0x87, 0x45, 0xee, 0x00, 0x1e, 0x15,
+  0xfa, 0x45, 0x0b, 0xdc, 0x85, 0x89, 0xc6, 0xb1, 0x04, 0xe3, 0x9a, 0x5c,
+  0x4a, 0xaa, 0x1d, 0x1f, 0x68, 0xbf, 0xf3, 0x7a, 0xfb, 0x6d, 0x47, 0x72,
+  0x1f, 0x5e, 0x8b, 0x41, 0x50, 0x6d, 0x5d, 0x40, 0x13, 0xb1, 0xe7, 0xfb,
+  0x2d, 0x98, 0xc5, 0xbc, 0x65, 0xf3, 0x98, 0x21, 0x0c, 0xcc, 0x02, 0x50,
+  0x0b, 0x3c, 0xfe, 0xcd, 0x9e, 0xd1, 0x8d, 0x72, 0x03, 0x28, 0x86, 0x24,
+  0x9e, 0xad, 0x6e, 0xb4, 0x31, 0x6d, 0x5e, 0x32, 0x9b, 0x70, 0x13, 0x2e,
+  0x80, 0x4c, 0xe0, 0xbb, 0x2b, 0x78, 0x12, 0x08, 0xa5, 0xa0, 0x18, 0xbb,
+  0x68, 0x63, 0xb4, 0x11, 0x6d, 0x6f, 0x8e, 0x12, 0x8e, 0x94, 0x24, 0x31,
+  0x6d, 0x0f, 0x8e, 0x1d, 0x46, 0x20, 0x50, 0xf3, 0xc8, 0x62, 0x2e, 0xbc,
+  0xdd, 0x32, 0x6e, 0x33, 0x1a, 0x16, 0x3d, 0xd8, 0x95, 0x92, 0x5d, 0x1d,
+  0x9c, 0xa6, 0x33, 0xf7, 0x2e, 0xb9, 0xfd, 0xea, 0x44, 0xef, 0xb9, 0x82,
+  0x90, 0xa9, 0x21, 0xf9, 0x63, 0xbf, 0x21, 0x4a, 0xd3, 0x20, 0x96, 0x2a,
+  0x9f, 0x90, 0x3a, 0xc1, 0x67, 0x6d, 0x77, 0xc7, 0xc2, 0xcb, 0xe2, 0xdb,
+  0x11, 0x4f, 0xb2, 0x4b, 0xd5, 0xd5, 0x85, 0xe4, 0x03, 0x61, 0x6b, 0x8d,
+  0x43, 0x60, 0x2b, 0x56, 0x33, 0x99, 0x3d, 0x11, 0xc9, 0xb1, 0xa4, 0x0b,
+  0x28, 0x4a, 0x27, 0xc9, 0x9c, 0xf4, 0x55, 0x52, 0xe5, 0x7c, 0xc2, 0x05,
+  0x95, 0xf0, 0x3a, 0xc3, 0x9a, 0x4b, 0x86, 0x2a, 0x31, 0xbe, 0x5b, 0xa8,
+  0x32, 0xec, 0x88, 0x1a, 0x2f, 0x66, 0x1c, 0xcc, 0x40, 0xc5, 0x48, 0xa6,
+  0x30, 0xce, 0x4c, 0x84, 0x55, 0xb8, 0x94, 0xd1, 0xc6, 0x43, 0xaa, 0xa5,
+  0x84, 0xe1, 0x99, 0x93, 0x81, 0xec, 0x26, 0xc0, 0x00, 0x90, 0xfd, 0x50,
+  0x2c, 0x48, 0xc5, 0x65, 0xdd, 0xe8, 0x7c, 0x81, 0x4c, 0xb7, 0x43, 0x4b,
+  0xc2, 0xed, 0x52, 0x80, 0x5e, 0xed, 0xa2, 0x2b, 0x16, 0x58, 0x90, 0xd4,
+  0xf7, 0xba, 0xa2, 0x11, 0x6c, 0x18, 0x1a, 0x38, 0x45, 0x74, 0x61, 0x86,
+  0x09, 0xe5, 0x04, 0x99, 0xd2, 0x77, 0xdd, 0x48, 0xaf, 0x61, 0x8b, 0x1b,
+  0x40, 0x4f, 0x29, 0x32, 0xa1, 0x8a, 0x99, 0x3e, 0x4c, 0x6d, 0x81, 0x65,
+  0x15, 0xb1, 0xec, 0xf1, 0x24, 0xbf, 0xcc, 0x86, 0x26, 0x3e, 0x8c, 0x92,
+  0x51, 0xf2, 0x4a, 0x23, 0x5c, 0x28, 0x48, 0xba, 0x25, 0xd3, 0xd6, 0x3b,
+  0x66, 0x9f, 0xe2, 0x96, 0x2a, 0xdb, 0xaf, 0x29, 0xe8, 0x7d, 0x6f, 0xbb,
+  0x5c, 0x03, 0x3e, 0x86, 0x5e, 0xd9, 0xdf, 0xbe, 0x5a, 0xf7, 0x95, 0xdd,
+  0x47, 0xdb, 0xd3, 0x35, 0x55, 0x4b, 0x2a, 0x62, 0xc8, 0x6f, 0x73, 0x10,
+  0x1f, 0xad, 0x78, 0x4c, 0x2b, 0x5e, 0x4b, 0xae, 0x63, 0xcb, 0x84, 0x7b,
+  0x2f, 0xde, 0x18, 0xe8, 0x6a, 0xda, 0x74, 0x5c, 0x1c, 0x22, 0x20, 0x53,
+  0xd8, 0x2d, 0x99, 0x88, 0xab, 0x13, 0xa4, 0x14, 0x0e, 0xa4, 0xa3, 0x58,
+  0x66, 0x92, 0x0e, 0xc7, 0x41, 0xd7, 0x38, 0x85, 0x01, 0x3b, 0x15, 0x9c,
+  0x19, 0xf2, 0x89, 0xc0, 0x88, 0x39, 0x00, 0x83, 0xa9, 0x72, 0x4a, 0x61,
+  0x1c, 0xe4, 0xfe, 0xc4, 0x38, 0x14, 0xae, 0x20, 0xeb, 0x93, 0x29, 0xd5,
+  0xb2, 0xc7, 0x41, 0xc1, 0x58, 0x97, 0x06, 0x5d, 0xe2, 0x5c, 0xee, 0x11,
+  0x6f, 0x69, 0x03, 0xcf, 0x60, 0x9a, 0xcd, 0xbe, 0x1a, 0x71, 0x68, 0xa1,
+  0x2e, 0x57, 0xca, 0x33, 0x37, 0xeb, 0x26, 0xbb, 0x17, 0xb1, 0x2e, 0x90,
+  0xb3, 0x35, 0x29, 0xdb, 0xad, 0x30, 0x68, 0xb6, 0x88, 0x0e, 0xe1, 0xb2,
+  0x6d, 0x01, 0x1c, 0xef, 0x93, 0xe4, 0x87, 0xc4, 0xdf, 0x79, 0x93, 0x52,
+  0x51, 0xea, 0x02, 0x74, 0xa6, 0xcb, 0xb4, 0xe3, 0xd6, 0x01, 0x57, 0x33,
+  0x2b, 0x6d, 0x9f, 0x38, 0x99, 0x43, 0xbc, 0x0a, 0x35, 0x79, 0x15, 0xdc,
+  0xf1, 0x18, 0x39, 0x71, 0xf4, 0x0a, 0x6a, 0x3c, 0x49, 0x64, 0xdf, 0x17,
+  0x05, 0xe6, 0x3e, 0x18, 0xa2, 0x09, 0x01, 0xfd, 0x21, 0x65, 0xaa, 0xd7,
+  0xc4, 0x04, 0xef, 0xb3, 0x70, 0x16, 0x75, 0xfe, 0x84, 0x21, 0x69, 0x1d,
+  0x1d, 0x99, 0x9d, 0x2b, 0x86, 0xcb, 0x7b, 0xfe, 0x7e, 0x1b, 0x8b, 0x51,
+  0x0f, 0x64, 0x2b, 0x45, 0x84, 0x37, 0x7c, 0x19, 0xdf, 0x56, 0xa4, 0x0c,
+  0xd0, 0xc5, 0x39, 0xe2, 0xce, 0x4b, 0xbb, 0x38, 0x95, 0x51, 0x1d, 0x44,
+  0x12, 0x0b, 0xc9, 0xb6, 0x2c, 0x1d, 0x53, 0x3d, 0x2b, 0x8b, 0x19, 0xd5,
+  0x04, 0x24, 0xf3, 0xae, 0x06, 0x7c, 0x04, 0x34, 0x0b, 0x51, 0x63, 0x70,
+  0x40, 0x74, 0xd7, 0x73, 0xe0, 0x51, 0x6d, 0x1b, 0x5b, 0xc4, 0x6f, 0x99,
+  0xf7, 0x7a, 0xac, 0x6d, 0x69, 0x04, 0xd9, 0xba, 0xbc, 0x4d, 0x46, 0xd0,
+  0x51, 0xba, 0x1d, 0xc3, 0x6a, 0x6b, 0xf8, 0x7a, 0x67, 0x1d, 0xf6, 0xb5,
+  0xac, 0x21, 0x59, 0xdb, 0xf8, 0xf4, 0x21, 0x0d, 0x2e, 0x7f, 0xb9, 0xf5,
+  0x6c, 0x1d, 0xe1, 0xea, 0xa3, 0x6f, 0x31, 0x4e, 0x2e, 0x29, 0x62, 0x0a,
+  0x99, 0xe3, 0x8b, 0xae, 0x21, 0x67, 0xe7, 0xbc, 0xfd, 0x99, 0x37, 0x0a,
+  0x23, 0xd6, 0xe4, 0xcb, 0x38, 0xe0, 0x89, 0x93, 0x43, 0xd7, 0xc0, 0x27,
+  0xa9, 0x18, 0xc2, 0x4f, 0xe9, 0x98, 0xda, 0x10, 0xaf, 0x9a, 0x9e, 0x3e,
+  0xb1, 0x98, 0x04, 0xc3, 0xdf, 0x62, 0x6b, 0x39, 0x3b, 0x66, 0x1c, 0xf8,
+  0x18, 0x58, 0x14, 0xc8, 0xe2, 0x5c, 0x63, 0x95, 0xcc, 0xb5, 0x8c, 0x64,
+  0xae, 0xac, 0x93, 0xfc, 0x67, 0x41, 0xa8, 0x9f, 0xa1, 0xc1, 0xbb, 0xb3,
+  0x6f, 0x99, 0x40, 0x4e, 0x38, 0x1c, 0x46, 0xd2, 0x90, 0xae, 0x0d, 0xc9,
+  0x8d, 0xc3, 0x21, 0x27, 0x2e, 0x0e, 0x20, 0x17, 0xb7, 0xaa, 0x5c, 0x63,
+  0x31, 0x9e, 0x14, 0x38, 0xcf, 0x18, 0x25, 0x3f, 0xd6, 0xc0, 0x96, 0xb6,
+  0x00, 0x0d, 0x85, 0x04, 0x6b, 0x15, 0xa8, 0x23, 0x35, 0xf1, 0x96, 0xc9,
+  0xb5, 0xcd, 0xae, 0x11, 0xe0, 0x17, 0x37, 0x72, 0x0d, 0xee, 0x16, 0xf9,
+  0xb2, 0xcd, 0xbb, 0xd2, 0xc8, 0xa4, 0x8c, 0xa5, 0x30, 0x7c, 0x8c, 0x05,
+  0xb8, 0x03, 0xa7, 0xd0, 0xc5, 0x00, 0x34, 0x76, 0xb3, 0xc4, 0x3a, 0x22,
+  0x45, 0xcf, 0x11, 0xb4, 0x44, 0x62, 0x6d, 0x9c, 0x20, 0x16, 0x20, 0x11,
+  0x2d, 0xff, 0xca, 0x39, 0x66, 0x25, 0xa3, 0xd3, 0xd3, 0x9a, 0xb8, 0x4e,
+  0x2e, 0x77, 0x3a, 0x2a, 0xae, 0x71, 0x5a, 0x54, 0xd3, 0xd2, 0x05, 0x83,
+  0xba, 0x29, 0xd0, 0x00, 0xc0, 0x6e, 0x6d, 0xcd, 0xe3, 0x13, 0xb4, 0xff,
+  0x21, 0x2c, 0x4f, 0xcf, 0xc9, 0xab, 0x53, 0xe3, 0x2d, 0x81, 0x08, 0xb6,
+  0xa6, 0x71, 0xdc, 0xd5, 0x26, 0x47, 0x29, 0xe6, 0x55, 0x9b, 0x86, 0x14,
+  0xda, 0x2a, 0xca, 0x75, 0x23, 0xc8, 0x30, 0xc7, 0xf8, 0xc2, 0x29, 0x4e,
+  0xd1, 0xef, 0x63, 0x2e, 0x57, 0x8b, 0x41, 0x48, 0x9b, 0x77, 0x69, 0xb5,
+  0xe5, 0xa4, 0x49, 0x11, 0xa9, 0x7d, 0xd1, 0xe2, 0xed, 0x15, 0xd3, 0x8e,
+  0x1d, 0x06, 0x7a, 0x15, 0x9c, 0x28, 0x69, 0x5e, 0x78, 0x10, 0x72, 0x28,
+  0x2d, 0x1b, 0x84, 0x79, 0x98, 0x4a, 0xd5, 0xde, 0x9c, 0x6f, 0x72, 0xfe,
+  0xe1, 0xe8, 0xcd, 0xeb, 0x97, 0xaf, 0xbf, 0x3f, 0x40, 0x8e, 0x98, 0x16,
+  0x43, 0x34, 0x1d, 0x46, 0xbf, 0x2e, 0x46, 0xd9, 0x90, 0x6e, 0x0e, 0x76,
+  0xb4, 0x8c, 0xeb, 0xe0, 0x89, 0xa9, 0xc4, 0x50, 0x51, 0x91, 0xd6, 0x66,
+  0x73, 0x9c, 0xf9, 0x8f, 0xd8, 0x8f, 0x45, 0x7e, 0xb9, 0x30, 0x14, 0x34,
+  0x24, 0xfb, 0x17, 0x85, 0xcd, 0x51, 0xa8, 0x37, 0xa9, 0x1e, 0x74, 0x10,
+  0xf1, 0xd4, 0xc2, 0xc9, 0x7c, 0x76, 0x7a, 0x8a, 0xf2, 0x51, 0x73, 0xa3,
+  0x69, 0x5e, 0xec, 0x72, 0xa3, 0xec, 0x3a, 0xcd, 0xf4, 0x46, 0x23, 0x13,
+  0xde, 0x40, 0xb5, 0x8b, 0x6f, 0x70, 0x67, 0x90, 0x07, 0x28, 0x1d, 0x76,
+  0x1a, 0x30, 0x9e, 0x11, 0xe4, 0x48, 0x51, 0xc1, 0x2d, 0x99, 0x8f, 0x2b,
+  0x34, 0xc3, 0x2d, 0x17, 0x9f, 0x3c, 0xde, 0xd7, 0x22, 0x4d, 0x89, 0x38,
+  0x05, 0xe4, 0xe1, 0x6b, 0x76, 0xab, 0x90, 0xe2, 0xfc, 0x4e, 0xd6, 0x94,
+  0xaf, 0xce, 0xfe, 0x1c, 0xba, 0x01, 0xb6, 0x89, 0xdd, 0xb4, 0x5e, 0x03,
+  0x67, 0xdd, 0x3a, 0x5f, 0xae, 0x49, 0xc0, 0xf6, 0x63, 0x44, 0x8a, 0x5b,
+  0x86, 0x43, 0xc5, 0xf1, 0xb5, 0xf5, 0x72, 0xc8, 0x12, 0xa8, 0x8e, 0xce,
+  0x2c, 0x14, 0x94, 0xd9, 0x46, 0x42, 0xa6, 0x11, 0x0a, 0x4e, 0xf7, 0x34,
+  0x69, 0x90, 0x66, 0xc5, 0x4a, 0x5e, 0xa2, 0x0a, 0x5d, 0xbf, 0x2e, 0x6e,
+  0xd2, 0x42, 0xc4, 0x0d, 0x53, 0x92, 0x02, 0xa4, 0x8e, 0x5e, 0xd4, 0xcf,
+  0x25, 0xfb, 0xb1, 0x29, 0x64, 0x61, 0x71, 0x15, 0xb7, 0x5e, 0x30, 0x11,
+  0x0e, 0x8d, 0xc5, 0x66, 0x5f, 0xa2, 0x44, 0xc4, 0x91, 0xc2, 0xab, 0x26,
+  0x8b, 0xfb, 0x3b, 0x48, 0x8d, 0x12, 0x70, 0xa7, 0x11, 0xa0, 0x78, 0x30,
+  0x3a, 0x31, 0xac, 0x63, 0x07, 0x69, 0xcd, 0xdd, 0xc7, 0xe0, 0x06, 0x06,
+  0x88, 0x4a, 0x3b, 0x5c, 0x2a, 0x9f, 0xaf, 0x9f, 0x26, 0xd2, 0x68, 0x7d,
+  0x6d, 0x51, 0xbd, 0x31, 0xb8, 0x80, 0x4b, 0x19, 0xc8, 0x6a, 0xb7, 0xe5,
+  0xf3, 0xbd, 0x07, 0xd1, 0x5b, 0xf3, 0xab, 0x26, 0x4f, 0x29, 0x10, 0x57,
+  0x4d, 0xf3, 0x74, 0x08, 0xa2, 0x97, 0xfd, 0x6f, 0x4e, 0x4c, 0x0c, 0x85,
+  0xa2, 0x3a, 0xf1, 0xf5, 0xf4, 0xd5, 0x4d, 0x8a, 0xe6, 0xec, 0xe6, 0xda,
+  0x6d, 0x9e, 0x71, 0xc5, 0x72, 0x79, 0xc8, 0x2d, 0x3c, 0xe3, 0xbe, 0x2c,
+  0x97, 0x72, 0xd7, 0x7a, 0x8a, 0x19, 0x71, 0xad, 0xf2, 0x40, 0x7c, 0xc7,
+  0x7e, 0x1a, 0x84, 0xbd, 0xb9, 0x8d, 0x50, 0x10, 0xba, 0xbe, 0xfd, 0xc0,
+  0x14, 0x41, 0x5f, 0x0b, 0xd1, 0xb4, 0x0d, 0xc4, 0xd0, 0xa6, 0x28, 0x6e,
+  0x5c, 0x91, 0xd9, 0x6a, 0x51, 0xec, 0xa4, 0x1a, 0x70, 0x9d, 0x9f, 0x40,
+  0x73, 0x02, 0x75, 0x6a, 0xe2, 0x34, 0xc3, 0x63, 0x51, 0xd1, 0x25, 0x9b,
+  0x5d, 0xe7, 0xf4, 0x8d, 0x98, 0x24, 0x03, 0xc9, 0x64, 0x4e, 0x36, 0x79,
+  0x21, 0x09, 0x54, 0x4b, 0x64, 0x8b, 0x8b, 0xc6, 0x4a, 0xab, 0x07, 0x5e,
+  0x11, 0x68, 0x60, 0x7e, 0x1a, 0x7a, 0x6b, 0x01, 0x83, 0x2d, 0x46, 0x70,
+  0x93, 0x3c, 0xc4, 0x04, 0x0b, 0x47, 0xba, 0x4b, 0x97, 0xfb, 0x15, 0xbd,
+  0x9c, 0x4e, 0xd0, 0xa1, 0xe6, 0x20, 0x08, 0xab, 0x08, 0x22, 0x12, 0x48,
+  0x56, 0xb5, 0x58, 0x42, 0x1c, 0xd9, 0xc2, 0x60, 0xe1, 0x99, 0xf5, 0xb7,
+  0xbe, 0x3d, 0xcc, 0x06, 0x67, 0x85, 0x19, 0x0d, 0xad, 0xc3, 0xab, 0x3c,
+  0x97, 0xd4, 0xd2, 0xb6, 0xab, 0x37, 0x22, 0xb9, 0x9d, 0xcb, 0x4b, 0x05,
+  0xae, 0x15, 0x2d, 0x02, 0x6e, 0xb5, 0x2b, 0xdc, 0xe0, 0x91, 0x07, 0xd3,
+  0x92, 0x59, 0xd5, 0xd5, 0xac, 0x7a, 0x43, 0x7e, 0x95, 0xd1, 0x94, 0x46,
+  0xe2, 0xd5, 0xab, 0x36, 0x94, 0x51, 0x0c, 0xbc, 0x91, 0x85, 0xb9, 0xf0,
+  0xf2, 0x48, 0x56, 0xba, 0xbb, 0x28, 0x41, 0xd1, 0x87, 0x33, 0x1b, 0x88,
+  0xaf, 0x1a, 0x4b, 0xc8, 0x88, 0xfc, 0x36, 0xb3, 0x7a, 0xb0, 0x25, 0x8d,
+  0x35, 0xab, 0x88, 0xcb, 0xfd, 0x7e, 0x6f, 0xa7, 0xed, 0xca, 0xc7, 0x86,
+  0x14, 0x14, 0x7b, 0x9e, 0x14, 0x26, 0xfa, 0x54, 0x84, 0x22, 0x5b, 0xda,
+  0x09, 0x25, 0x0a, 0xc4, 0x67, 0x64, 0x1f, 0x29, 0xfc, 0x68, 0x5b, 0xff,
+  0xb0, 0x63, 0x0e, 0xc5, 0x29, 0x56, 0x43, 0x1c, 0x5c, 0xe0, 0x92, 0xbd,
+  0x72, 0xcc, 0x8e, 0x25, 0xcb, 0xdb, 0xda, 0x6f, 0xe9, 0x22, 0xf3, 0x0f,
+  0x15, 0x9a, 0x4a, 0x03, 0xe5, 0x85, 0xdc, 0xab, 0xec, 0xc3, 0xab, 0x0b,
+  0xb5, 0x09, 0x00, 0xad, 0xf7, 0x3f, 0xb1, 0xd3, 0x65, 0x50, 0xa1, 0x0d,
+  0x7e, 0x4f, 0xe0, 0xa0, 0xf6, 0xec, 0x2a, 0x68, 0xe8, 0x9f, 0xbb, 0xce,
+  0xb3, 0xcd, 0x89, 0x87, 0xe4, 0x96, 0xf8, 0x8d, 0xc3, 0xd3, 0x71, 0x8e,
+  0x41, 0x38, 0x72, 0x66, 0xb0, 0x8e, 0x17, 0xdd, 0x31, 0x69, 0x58, 0x19,
+  0x9a, 0x9c, 0xab, 0x69, 0xc4, 0x9e, 0x1d, 0xbe, 0x25, 0x7d, 0xff, 0x21,
+  0x4c, 0x3b, 0xc0, 0xc5, 0xbb, 0xca, 0x00, 0x34, 0x9d, 0xcd, 0xc0, 0x2b,
+  0x70, 0x57, 0x0c, 0x77, 0x97, 0x7b, 0xf0, 0x2c, 0x7a, 0xb9, 0xb0, 0x37,
+  0x14, 0x5e, 0xa5, 0xa4, 0x7f, 0xda, 0x2b, 0xec, 0x69, 0x79, 0x16, 0xa8,
+  0x33, 0xeb, 0x8f, 0x9f, 0x05, 0xea, 0x34, 0xfe, 0xc0, 0xab, 0x9d, 0xc6,
+  0x05, 0x92, 0xcb, 0x38, 0xcf, 0xd7, 0x33, 0x1c, 0x34, 0xaf, 0x69, 0xb6,
+  0x1c, 0xfc, 0x86, 0x9f, 0xd2, 0x9e, 0xa0, 0x9d, 0xbd, 0x29, 0x45, 0x5e,
+  0xa7, 0x71, 0x3e, 0x8b, 0x43, 0x20, 0x2b, 0x3f, 0x98, 0xd4, 0x5c, 0x0d,
+  0xf1, 0xb4, 0x5a, 0x1c, 0xe9, 0x5e, 0xe2, 0xe8, 0xc0, 0xdb, 0x4e, 0xef,
+  0x7e, 0xd4, 0x1a, 0x35, 0xfa, 0x26, 0x70, 0xce, 0x95, 0x94, 0xf4, 0x20,
+  0xdb, 0x98, 0x41, 0xda, 0xc1, 0x6b, 0xd1, 0xe8, 0xf5, 0x62, 0x03, 0x56,
+  0x47, 0xa6, 0x75, 0x12, 0x68, 0x03, 0x3e, 0x8d, 0x14, 0x33, 0x94, 0x69,
+  0x84, 0x74, 0xf5, 0x4c, 0x52, 0xbe, 0x97, 0x6c, 0x34, 0x91, 0xa0, 0x4b,
+  0x19, 0x70, 0x0e, 0x4a, 0x10, 0x99, 0x61, 0xe8, 0xa3, 0x0f, 0x04, 0x51,
+  0x44, 0xa3, 0x45, 0xe1, 0x3a, 0x0e, 0xda, 0x54, 0x6e, 0x9d, 0xaa, 0x94,
+  0xcc, 0x93, 0x89, 0xdd, 0x5f, 0x13, 0xf5, 0x48, 0xd1, 0xd9, 0x82, 0x8f,
+  0x5b, 0xd5, 0xaa, 0xd1, 0xf8, 0x43, 0xc8, 0xd1, 0x1d, 0x1b, 0x90, 0xa4,
+  0xa6, 0x62, 0xaf, 0x43, 0x95, 0x63, 0xa4, 0x3f, 0x4c, 0xfe, 0xaa, 0xdb,
+  0xf4, 0x1b, 0x70, 0xe3, 0xe2, 0xe0, 0x8a, 0x25, 0x40, 0xf6, 0x10, 0x05,
+  0xba, 0x16, 0xe3, 0xb1, 0x5f, 0xdd, 0x85, 0x0c, 0xc0, 0x64, 0xec, 0x27,
+  0xd0, 0xb1, 0x0e, 0x37, 0xd2, 0x89, 0x36, 0xb1, 0x95, 0x2d, 0x63, 0x81,
+  0xf2, 0xab, 0x3b, 0x08, 0x0a, 0x89, 0x64, 0xcf, 0x27, 0xac, 0xe1, 0x34,
+  0x91, 0x52, 0xc8, 0x00, 0x75, 0x8e, 0x24, 0x35, 0x5c, 0x4c, 0x92, 0x62,
+  0x42, 0x17, 0xd2, 0x78, 0xd1, 0x24, 0x70, 0x3a, 0x14, 0x28, 0x88, 0x48,
+  0x94, 0x7d, 0x56, 0x96, 0x0b, 0x31, 0x5e, 0x1b, 0x17, 0x20, 0x6d, 0x0e,
+  0xf2, 0x49, 0x24, 0x56, 0xa6, 0x81, 0x72, 0x82, 0xd9, 0x94, 0x6d, 0xd7,
+  0x2c, 0x47, 0x2a, 0x8a, 0xdd, 0xc6, 0xd4, 0x58, 0x60, 0x13, 0xb1, 0xf0,
+  0xd2, 0x4b, 0x1c, 0x14, 0xdd, 0xc7, 0x73, 0xe4, 0xc9, 0xc5, 0xac, 0x4b,
+  0xc2, 0x76, 0xa3, 0xb9, 0xce, 0xd9, 0xf9, 0xc5, 0xcb, 0xb3, 0xd7, 0xfd,
+  0xe8, 0x0f, 0x9d, 0x36, 0x8b, 0x6e, 0x6d, 0x03, 0x3e, 0x6b, 0x45, 0xaf,
+  0xc6, 0x58, 0x3a, 0x7f, 0xe8, 0x44, 0xf1, 0x8f, 0x91, 0xce, 0x60, 0x2d,
+  0xea, 0xab, 0x45, 0xd2, 0xd6, 0x10, 0x1b, 0x1f, 0xd7, 0x08, 0xd0, 0x7d,
+  0x2e, 0x3a, 0x9c, 0xa6, 0xb0, 0x4d, 0xa3, 0x36, 0xe7, 0x85, 0x63, 0x6c,
+  0x1b, 0x82, 0xaa, 0x09, 0xac, 0x47, 0x5f, 0xe4, 0xf7, 0x94, 0x2c, 0x19,
+  0xdc, 0xc0, 0x14, 0x16, 0xf2, 0x23, 0x2d, 0x9c, 0xba, 0x51, 0xae, 0x93,
+  0x83, 0x04, 0x70, 0x6b, 0x0c, 0x6c, 0x34, 0x2e, 0x5e, 0xe3, 0xa0, 0x87,
+  0xb0, 0x61, 0x6c, 0xa5, 0x6d, 0x92, 0xd7, 0x6c, 0xe4, 0x19, 0x3d, 0xb8,
+  0xc9, 0xf2, 0xac, 0x58, 0x04, 0x4a, 0xdf, 0x79, 0xf1, 0xfd, 0xc9, 0xc5,
+  0x96, 0xc0, 0x6b, 0x9b, 0xf1, 0x51, 0x04, 0x94, 0xa8, 0xe8, 0x89, 0x31,
+  0x21, 0x28, 0xa0, 0x36, 0x8b, 0x22, 0xe9, 0xed, 0x7c, 0x92, 0xcc, 0x82,
+  0xa0, 0x94, 0x98, 0xb9, 0x77, 0x0c, 0xcb, 0x81, 0x96, 0xc4, 0x64, 0xc4,
+  0x92, 0xb2, 0xba, 0xe7, 0xcc, 0x11, 0xd1, 0xda, 0xb3, 0xe7, 0x6f, 0x2f,
+  0xa8, 0x41, 0x8c, 0x9e, 0xbe, 0x38, 0x69, 0x86, 0x45, 0x21, 0xd4, 0x68,
+  0x91, 0x4e, 0x28, 0xd0, 0xb9, 0x4a, 0x87, 0x57, 0xb3, 0x1c, 0x5d, 0xb4,
+  0x69, 0xc9, 0x7a, 0xe6, 0x0f, 0xe9, 0xe0, 0xd9, 0xd1, 0xdf, 0x50, 0xf3,
+  0x43, 0xaf, 0xfd, 0xf9, 0x9b, 0xb3, 0xf3, 0xe7, 0x2f, 0x5f, 0x3f, 0xeb,
+  0x46, 0xc7, 0x67, 0xe7, 0x7f, 0xef, 0x46, 0xaf, 0xce, 0xfe, 0x76, 0xf2,
+  0x85, 0x97, 0xf4, 0x43, 0xae, 0x69, 0x8f, 0x50, 0x5f, 0xa3, 0x33, 0x0a,
+  0x4d, 0x57, 0x0c, 0x9f, 0x3d, 0xca, 0x49, 0x83, 0x89, 0x66, 0x1c, 0x2b,
+  0xec, 0x08, 0xf8, 0x47, 0x6e, 0xb2, 0x06, 0xac, 0x5d, 0x37, 0x7a, 0x71,
+  0x72, 0xf4, 0xac, 0x39, 0xec, 0xf3, 0xb3, 0x3e, 0xcf, 0x0a, 0x67, 0x67,
+  0xa6, 0x8c, 0xd1, 0x11, 0x62, 0x21, 0x24, 0x5d, 0x8e, 0xa3, 0xb3, 0x99,
+  0x35, 0x01, 0xbd, 0x66, 0x1c, 0xcf, 0xdd, 0x92, 0xc0, 0xc8, 0xf5, 0x3f,
+  0x79, 0x18, 0x2d, 0x59, 0xa5, 0xc6, 0xe4, 0xcf, 0x15, 0x70, 0x5d, 0x8b,
+  0x90, 0xd4, 0xa6, 0x25, 0xbc, 0x28, 0x55, 0x6a, 0xcc, 0x76, 0xb7, 0x44,
+  0xf3, 0x74, 0x6b, 0xf5, 0x5e, 0x88, 0xf1, 0x72, 0x44, 0x5a, 0x22, 0x21,
+  0xe5, 0x83, 0x14, 0x65, 0xed, 0x92, 0x4c, 0x40, 0x64, 0x13, 0x12, 0x4c,
+  0xa1, 0xa0, 0x0b, 0xca, 0xda, 0x83, 0x48, 0xe0, 0x4b, 0xb4, 0x66, 0x2d,
+  0x2e, 0x9f, 0x2e, 0x51, 0x57, 0x16, 0x03, 0x98, 0x00, 0x7d, 0xac, 0x9a,
+  0x8f, 0x87, 0xef, 0x3e, 0x06, 0xc2, 0x4c, 0xb9, 0xf6, 0x30, 0x6f, 0x91,
+  0xf1, 0x61, 0x88, 0xf7, 0xa4, 0x0d, 0x3d, 0x8b, 0x92, 0x81, 0xf8, 0xa0,
+  0x88, 0x1f, 0x8d, 0xea, 0xe3, 0xaa, 0x37, 0xd1, 0xb2, 0x06, 0x65, 0x6b,
+  0x72, 0xdc, 0x18, 0x1a, 0xd3, 0x33, 0x4a, 0xe9, 0xd6, 0x76, 0xa5, 0x4c,
+  0x91, 0xe2, 0x80, 0xb9, 0xab, 0xc1, 0x6a, 0xb8, 0x71, 0x35, 0xa2, 0xa2,
+  0xc3, 0x31, 0xaa, 0xbe, 0x37, 0x19, 0x3d, 0xd9, 0x14, 0x1b, 0x87, 0x31,
+  0xee, 0x31, 0xcb, 0x01, 0x2e, 0x76, 0x8a, 0xd9, 0x0c, 0x35, 0x1c, 0xe8,
+  0x68, 0x65, 0x4e, 0x5e, 0x1a, 0xed, 0x10, 0xf6, 0x5b, 0xae, 0x29, 0xb3,
+  0xdb, 0xfb, 0x3b, 0xb7, 0x36, 0xe2, 0x12, 0x15, 0xbb, 0x32, 0x8a, 0x39,
+  0x27, 0x8d, 0x31, 0x38, 0x83, 0xd9, 0xfe, 0x41, 0x6e, 0xe8, 0x46, 0xf0,
+  0x99, 0xe2, 0x01, 0x06, 0x97, 0xe8, 0xf4, 0x25, 0x9c, 0x81, 0x40, 0x00,
+  0xd3, 0x28, 0xc7, 0x11, 0x71, 0xd6, 0x1a, 0xa9, 0xb8, 0xb4, 0xf2, 0xd0,
+  0x96, 0xdf, 0xf1, 0xf9, 0xd9, 0xf9, 0x7e, 0xb0, 0x67, 0xfc, 0x62, 0x55,
+  0xd7, 0xde, 0x4d, 0xfb, 0xe6, 0xe4, 0xe2, 0x8d, 0xdf, 0xc7, 0xcb, 0x57,
+  0x47, 0xe8, 0x33, 0xb3, 0x9d, 0xd8, 0x5e, 0xf0, 0xab, 0x15, 0xbd, 0x78,
+  0x36, 0x2d, 0xb7, 0x8c, 0xea, 0x4e, 0x20, 0xbb, 0x6a, 0xb3, 0xff, 0xaa,
+  0x65, 0x35, 0xf1, 0x8b, 0x25, 0xbd, 0xbd, 0x38, 0x39, 0x3d, 0xf7, 0xe7,
+  0xf4, 0xb7, 0x37, 0xcf, 0xff, 0x5e, 0xcf, 0xe9, 0xda, 0x7f, 0x14, 0xe8,
+  0x55, 0x82, 0x54, 0x84, 0x5a, 0x3e, 0x1e, 0x1a, 0xc8, 0x7a, 0xbe, 0xdc,
+  0x1f, 0x39, 0x47, 0xe6, 0xe2, 0x64, 0x0d, 0xb7, 0xed, 0x8f, 0xd1, 0xeb,
+  0x53, 0xd8, 0xcc, 0xb5, 0x80, 0x43, 0xea, 0x62, 0x45, 0x5d, 0xfa, 0x2c,
+  0xf3, 0x09, 0x48, 0x8e, 0x87, 0x3f, 0xfd, 0x91, 0x90, 0x52, 0x09, 0x9c,
+  0xec, 0x00, 0xee, 0xa8, 0xe2, 0xa7, 0x2e, 0xfe, 0xfb, 0x4b, 0xaf, 0xd7,
+  0xfb, 0x26, 0x28, 0xc7, 0xa7, 0x76, 0xa3, 0xf0, 0x41, 0x4c, 0xfa, 0x6e,
+  0x98, 0xb2, 0x09, 0xa8, 0x8e, 0x80, 0xf9, 0x30, 0xd2, 0x76, 0x9e, 0x64,
+  0xe8, 0xfa, 0x7a, 0x5b, 0x86, 0xa4, 0x01, 0xba, 0x52, 0x2c, 0xb0, 0xa2,
+  0xd1, 0x80, 0x45, 0x0b, 0x63, 0x9e, 0xb2, 0x59, 0x6e, 0x09, 0x8a, 0xb3,
+  0x15, 0x11, 0x02, 0x76, 0x28, 0x1a, 0x0a, 0x75, 0xcb, 0x9a, 0x12, 0xeb,
+  0x2e, 0x46, 0x08, 0x98, 0xe9, 0xc5, 0x26, 0x53, 0x1f, 0x99, 0xe1, 0x07,
+  0x41, 0x45, 0x68, 0x5b, 0xf1, 0xf6, 0xe6, 0x34, 0x1b, 0x0a, 0x5f, 0x4b,
+  0xe8, 0xc2, 0x43, 0x1a, 0xdc, 0x4e, 0xab, 0xe1, 0x36, 0xce, 0xb3, 0xac,
+  0xc9, 0xe1, 0x86, 0x98, 0x3c, 0x2f, 0x94, 0x0b, 0x30, 0x41, 0x80, 0xbd,
+  0x9c, 0x56, 0xe8, 0x60, 0x50, 0x59, 0xcc, 0x60, 0xc7, 0xb8, 0x63, 0x78,
+  0x6e, 0x08, 0xdf, 0xd2, 0x2c, 0xb8, 0x03, 0xf8, 0x69, 0x40, 0x54, 0x5d,
+  0x69, 0x14, 0x1b, 0x70, 0x50, 0x21, 0x7d, 0x4b, 0x11, 0x5d, 0x1d, 0x7a,
+  0x00, 0x30, 0x83, 0x0d, 0xcf, 0x63, 0xe6, 0x5a, 0x1a, 0x2d, 0x10, 0x92,
+  0xbb, 0xe9, 0x0a, 0x3e, 0x18, 0xa8, 0xf7, 0x48, 0x02, 0x8b, 0xb5, 0x05,
+  0xe3, 0x4c, 0xc3, 0x68, 0x1f, 0x0e, 0xaa, 0xf5, 0xc6, 0x1f, 0x36, 0x50,
+  0x1d, 0xa1, 0xd7, 0x83, 0x58, 0xda, 0x4a, 0xb5, 0x68, 0x0b, 0x0b, 0xa0,
+  0xc8, 0x12, 0xef, 0xd6, 0x45, 0x31, 0xc4, 0x67, 0x50, 0x1b, 0x1c, 0xe2,
+  0xa1, 0x29, 0x60, 0x78, 0xee, 0x64, 0x34, 0x4c, 0xb8, 0xfe, 0x80, 0x7f,
+  0xf7, 0x0b, 0x99, 0x08, 0x1b, 0xc8, 0xa9, 0x57, 0x7b, 0x72, 0x24, 0x89,
+  0xa2, 0x85, 0xea, 0xdb, 0x79, 0x05, 0xe7, 0x92, 0xb4, 0xe1, 0x3c, 0x4a,
+  0x68, 0xaa, 0xac, 0x31, 0xf2, 0x1e, 0xca, 0x15, 0x6c, 0xd4, 0x79, 0x77,
+  0xee, 0x63, 0x0a, 0x75, 0xf1, 0x05, 0x8d, 0x38, 0xce, 0xe6, 0xd7, 0x8f,
+  0xd8, 0x11, 0x04, 0xbf, 0x3d, 0xd1, 0x70, 0xc4, 0xca, 0x05, 0x4c, 0x61,
+  0x4d, 0x92, 0xf5, 0xae, 0x97, 0xe7, 0x9a, 0xac, 0x16, 0xda, 0x25, 0x86,
+  0x49, 0x51, 0x84, 0x48, 0x21, 0x30, 0x45, 0x92, 0xf1, 0x8f, 0x2f, 0x27,
+  0x41, 0x72, 0x0a, 0xb1, 0xe7, 0x9e, 0xb0, 0x78, 0x38, 0x1b, 0xa5, 0x71,
+  0xd0, 0xe1, 0xb3, 0xa8, 0x26, 0x6e, 0xee, 0x4a, 0xc0, 0xe8, 0x16, 0x41,
+  0x28, 0x57, 0xa9, 0xaa, 0x82, 0x6c, 0x46, 0x09, 0x2c, 0x2b, 0x8b, 0x78,
+  0xe2, 0x5e, 0x48, 0x67, 0x62, 0xb1, 0x9f, 0xe4, 0x30, 0xd6, 0x62, 0x31,
+  0xa3, 0xc4, 0x39, 0x13, 0x27, 0x6c, 0x42, 0x24, 0x75, 0xf4, 0x93, 0xdc,
+  0x77, 0x9e, 0xd0, 0x8d, 0x0c, 0xc4, 0xf1, 0x72, 0xc6, 0xf8, 0x9d, 0x68,
+  0x47, 0x29, 0x05, 0xe3, 0xa5, 0x96, 0x58, 0x48, 0x1b, 0x60, 0xa3, 0xa2,
+  0x69, 0xca, 0xb9, 0x1f, 0xbd, 0x49, 0xd4, 0xc2, 0x27, 0x96, 0x69, 0x84,
+  0x6c, 0xd9, 0x86, 0x1d, 0xdd, 0xd0, 0xb1, 0xcf, 0x25, 0x90, 0xd5, 0x2c,
+  0x04, 0x1a, 0x42, 0xfc, 0xd0, 0x91, 0x39, 0xa1, 0x72, 0x79, 0x1c, 0x5f,
+  0x92, 0x1a, 0x04, 0x2c, 0x5f, 0x8c, 0x2d, 0xd8, 0x1a, 0xec, 0xaa, 0xd2,
+  0x12, 0xce, 0x18, 0xee, 0xc5, 0x9f, 0x06, 0x45, 0x42, 0x70, 0xcd, 0xbf,
+  0x50, 0x4c, 0x2c, 0x41, 0x1e, 0xfb, 0x01, 0xf1, 0xa0, 0x2d, 0xd6, 0x8a,
+  0x2d, 0x35, 0x3a, 0x6a, 0xf4, 0x64, 0x6c, 0x38, 0xb6, 0xbb, 0x94, 0xa3,
+  0x7f, 0x99, 0x10, 0x96, 0x77, 0xf4, 0xd5, 0x92, 0x8e, 0xc6, 0x54, 0xd9,
+  0x10, 0x97, 0xd0, 0xe8, 0x8e, 0x37, 0x7a, 0x66, 0x4d, 0xab, 0x52, 0x65,
+  0xe6, 0xd1, 0x8a, 0x76, 0x28, 0x91, 0x07, 0xa8, 0x55, 0x20, 0x7f, 0xf0,
+  0xf5, 0x46, 0x13, 0x4f, 0x1f, 0xf7, 0x76, 0xee, 0x0f, 0x53, 0x63, 0x0d,
+  0xf2, 0xe8, 0x00, 0x1c, 0xc9, 0x27, 0xb4, 0xc5, 0x92, 0x7d, 0x9d, 0xb7,
+  0x31, 0x95, 0xa0, 0x55, 0x9e, 0x09, 0xe5, 0x93, 0x59, 0xe4, 0x4d, 0x0f,
+  0x8e, 0xec, 0x70, 0xf0, 0xe8, 0xd1, 0xfe, 0xc1, 0xee, 0x1e, 0x6e, 0xf5,
+  0x0e, 0x68, 0xba, 0xeb, 0x05, 0x44, 0x2a, 0x0e, 0x21, 0xce, 0x9e, 0xa2,
+  0x59, 0xe1, 0x26, 0x8c, 0xcb, 0xeb, 0x61, 0x5d, 0xcc, 0xc0, 0x00, 0x57,
+  0xa0, 0x73, 0xb6, 0xa8, 0x35, 0x6d, 0x9a, 0x6f, 0x28, 0xe2, 0x18, 0x1d,
+  0x1c, 0xb0, 0x72, 0x6c, 0xb2, 0x6b, 0x66, 0xef, 0x4a, 0xb2, 0x2a, 0x88,
+  0x2f, 0xc8, 0xa5, 0x8c, 0x6e, 0x52, 0x15, 0x77, 0xbd, 0x95, 0xd5, 0xa8,
+  0x28, 0xdc, 0xb2, 0x9c, 0xa4, 0xa3, 0x4b, 0xd0, 0xcf, 0xa6, 0xd3, 0xb4,
+  0xe8, 0xe0, 0xf1, 0xd6, 0x80, 0xe9, 0x5e, 0xf4, 0x8c, 0x83, 0x01, 0xd5,
+  0xdb, 0xd2, 0xe4, 0x04, 0xdc, 0xd0, 0xe0, 0xce, 0x30, 0xa9, 0xcd, 0xf4,
+  0x92, 0x80, 0xf8, 0x61, 0x3d, 0x8b, 0xe1, 0x56, 0x97, 0xe1, 0xa4, 0x4d,
+  0x56, 0xed, 0xcc, 0x28, 0x2d, 0x98, 0x9b, 0x1b, 0x0e, 0x0b, 0x47, 0xa9,
+  0x5a, 0x41, 0x81, 0x83, 0xc5, 0x3b, 0x47, 0x8b, 0xf9, 0x84, 0x2b, 0x8d,
+  0x72, 0xee, 0xae, 0x1d, 0x62, 0x28, 0x72, 0x13, 0x98, 0x01, 0xf9, 0x46,
+  0x89, 0x80, 0xd1, 0x4e, 0x89, 0x09, 0x77, 0x64, 0xb1, 0x24, 0x95, 0x70,
+  0x83, 0xc4, 0x89, 0x29, 0xf6, 0x37, 0x48, 0xd1, 0x52, 0x46, 0xbe, 0x61,
+  0x34, 0xf8, 0x7b, 0x0a, 0xd7, 0x88, 0x2a, 0x39, 0x33, 0xca, 0x21, 0xcc,
+  0x04, 0x06, 0x8b, 0xe7, 0x7b, 0x30, 0xc1, 0xda, 0x10, 0x88, 0x75, 0x8c,
+  0x10, 0x46, 0x51, 0x39, 0x2c, 0xb2, 0x39, 0x34, 0x7d, 0x3e, 0x49, 0xd1,
+  0xb6, 0x5c, 0xa8, 0xa9, 0xc4, 0xe7, 0x53, 0xac, 0xf0, 0x11, 0x2a, 0x54,
+  0x7b, 0x7c, 0xcf, 0x73, 0xf4, 0xac, 0x6a, 0x30, 0xce, 0x74, 0x0e, 0x22,
+  0x94, 0x24, 0xfe, 0x79, 0xb0, 0x88, 0x1c, 0x99, 0x4e, 0x80, 0x5a, 0x7e,
+  0x24, 0xd1, 0x24, 0x79, 0x7f, 0x17, 0x39, 0xac, 0x1d, 0xd7, 0x76, 0x38,
+  0x41, 0xe7, 0xa7, 0x93, 0x2a, 0x83, 0xad, 0x5c, 0xb1, 0x05, 0xf1, 0x8e,
+  0x03, 0x38, 0x24, 0x1b, 0x20, 0x64, 0x67, 0xa9, 0x5c, 0x60, 0x34, 0x6d,
+  0x20, 0xbc, 0xe0, 0x94, 0x7e, 0xab, 0x4b, 0x8e, 0x33, 0xf2, 0xb1, 0xe9,
+  0x70, 0x29, 0xba, 0x16, 0xc0, 0xcd, 0xc4, 0xeb, 0xe3, 0x2d, 0xa0, 0xfe,
+  0x00, 0x31, 0x33, 0x93, 0xed, 0x53, 0x0b, 0x45, 0x84, 0x26, 0xab, 0x76,
+  0x7e, 0x0b, 0xb2, 0x47, 0x61, 0x7e, 0xc8, 0xca, 0x24, 0xf8, 0x0c, 0x85,
+  0x59, 0xb4, 0xf8, 0x4b, 0x8b, 0x02, 0x7e, 0x13, 0xbd, 0xc8, 0x6f, 0x90,
+  0x99, 0x84, 0xfc, 0xe4, 0x8a, 0xe7, 0x5d, 0x2c, 0x52, 0xc1, 0xdd, 0x48,
+  0xdc, 0x79, 0x52, 0x74, 0xc3, 0xff, 0xc0, 0xcd, 0x33, 0x27, 0x18, 0x89,
+  0x6f, 0xc4, 0xfc, 0x1f, 0x2a, 0x46, 0x8c, 0x66, 0x1d, 0x86, 0x8f, 0x04,
+  0x51, 0x03, 0xa4, 0x2b, 0x0a, 0x3c, 0x84, 0x8b, 0x98, 0xf2, 0xee, 0x2e,
+  0x2f, 0x53, 0x11, 0xeb, 0x24, 0x06, 0x17, 0x27, 0x83, 0x1e, 0x6a, 0x5c,
+  0x41, 0x04, 0xcb, 0x2f, 0x46, 0x61, 0x18, 0x54, 0x42, 0xee, 0x37, 0x23,
+  0xa2, 0x03, 0x98, 0x4f, 0x07, 0x1a, 0xa1, 0xd7, 0x2c, 0x76, 0xd2, 0x95,
+  0xa4, 0x10, 0x5f, 0xc8, 0xc5, 0x73, 0xca, 0x07, 0x2d, 0x6d, 0x1e, 0xb3,
+  0x80, 0xc4, 0xa3, 0x67, 0xde, 0xde, 0xef, 0x54, 0xb8, 0x84, 0xfc, 0x02,
+  0xb9, 0xc5, 0xd1, 0xad, 0xd9, 0x0f, 0xc4, 0xa7, 0xe7, 0x1f, 0x2e, 0xea,
+  0xaa, 0x34, 0x2f, 0x51, 0x2b, 0x06, 0x35, 0xae, 0x9e, 0xa3, 0x62, 0xf0,
+  0x09, 0x7b, 0x74, 0x3e, 0x90, 0x7e, 0x3c, 0x21, 0x60, 0xc2, 0x90, 0x73,
+  0x89, 0x05, 0x9c, 0x83, 0xd9, 0x40, 0xfb, 0x8f, 0x76, 0x1e, 0xa1, 0xcc,
+  0x04, 0x2f, 0x2e, 0x66, 0x23, 0x83, 0xd9, 0x2c, 0x49, 0xbf, 0x14, 0xbc,
+  0x00, 0xed, 0x4e, 0xee, 0x7c, 0x58, 0x3f, 0x5c, 0x13, 0x06, 0x24, 0x9c,
+  0xa9, 0xbc, 0xa5, 0xde, 0x9e, 0x99, 0xf2, 0x65, 0xf2, 0x8e, 0x09, 0xeb,
+  0xb5, 0x8c, 0xd9, 0xb7, 0x6a, 0xd8, 0x05, 0x2b, 0x94, 0xbb, 0x63, 0xdc,
+  0x5b, 0x60, 0xb9, 0x4a, 0x5d, 0x2f, 0x5e, 0x1f, 0x3e, 0xc3, 0xde, 0x7d,
+  0x99, 0x51, 0x28, 0x09, 0x23, 0x62, 0xf3, 0x25, 0xd2, 0x95, 0x43, 0x9a,
+  0x38, 0x46, 0x39, 0x35, 0xa2, 0x4e, 0xf1, 0xfa, 0x7d, 0x74, 0x6b, 0x0d,
+  0x3b, 0x5e, 0xbd, 0x6c, 0xec, 0x57, 0x59, 0x30, 0x2c, 0x58, 0x23, 0xa2,
+  0x22, 0xb7, 0xa3, 0xa6, 0x48, 0x31, 0x3b, 0x62, 0x7e, 0x35, 0x14, 0xad,
+  0xe0, 0xcc, 0xc0, 0x1d, 0x66, 0xb4, 0x89, 0xe3, 0xc0, 0x5d, 0x78, 0x7c,
+  0x7b, 0xbb, 0xc5, 0x8b, 0xcb, 0x94, 0x2b, 0xcc, 0x24, 0x1e, 0xfb, 0xc0,
+  0xd9, 0xe4, 0x36, 0x5a, 0x1e, 0xaa, 0x55, 0xbf, 0x51, 0x3f, 0xb6, 0x03,
+  0xad, 0xde, 0xfa, 0xfa, 0x7e, 0x0c, 0x5c, 0xbc, 0xc7, 0xa1, 0x71, 0xae,
+  0x27, 0x5c, 0xf0, 0x0d, 0xef, 0xba, 0x2f, 0x9e, 0xee, 0x36, 0xfd, 0x67,
+  0xd8, 0x01, 0x0a, 0x21, 0x20, 0xcf, 0x05, 0x52, 0x1b, 0x5e, 0x3a, 0x36,
+  0x77, 0x55, 0x01, 0x59, 0xd5, 0x41, 0xaf, 0x30, 0x7d, 0x8c, 0x75, 0x8e,
+  0x54, 0xbf, 0x3f, 0x41, 0xc4, 0xe6, 0x37, 0x27, 0xcf, 0xdf, 0xf6, 0x4f,
+  0x9e, 0x21, 0x69, 0x24, 0xa1, 0x3c, 0x4c, 0xa2, 0x45, 0xe6, 0x01, 0x55,
+  0xce, 0xa6, 0x5e, 0x33, 0x54, 0x57, 0x6e, 0xa1, 0xb3, 0xc6, 0xfa, 0x99,
+  0x8a, 0x2e, 0xa1, 0xeb, 0xbb, 0x4d, 0x90, 0x69, 0x38, 0x4c, 0x1b, 0xf3,
+  0xf4, 0x3d, 0xf8, 0x8d, 0x3d, 0x7f, 0x48, 0xbc, 0x67, 0xa3, 0x8f, 0x07,
+  0xed, 0x7b, 0x6d, 0x90, 0x4a, 0x0b, 0x0f, 0xd8, 0xf6, 0x5a, 0x72, 0x94,
+  0x43, 0x8b, 0xcb, 0x6a, 0xb6, 0x39, 0x99, 0x54, 0xd1, 0xa1, 0xe4, 0x0a,
+  0x36, 0xed, 0x57, 0xaf, 0x8c, 0xe2, 0x0b, 0x32, 0x61, 0x3a, 0x17, 0x64,
+  0xfb, 0x29, 0x30, 0x4b, 0x0e, 0xb7, 0x43, 0x75, 0x55, 0x6f, 0x69, 0x8a,
+  0xea, 0x54, 0xb9, 0x83, 0xec, 0xce, 0x61, 0x8a, 0x40, 0xbe, 0xcd, 0x01,
+  0x14, 0x7c, 0x5f, 0xab, 0x62, 0xd9, 0x24, 0x97, 0xcd, 0xac, 0x6a, 0x04,
+  0xa6, 0x7a, 0xbb, 0x44, 0xd7, 0x0d, 0x56, 0x32, 0x45, 0x19, 0x8d, 0x06,
+  0x93, 0x4c, 0x2e, 0x73, 0xb8, 0xd6, 0xaf, 0xa6, 0x06, 0x8c, 0x9f, 0xcb,
+  0x49, 0x95, 0x9c, 0x00, 0x5a, 0x97, 0x76, 0x83, 0x6a, 0x31, 0x65, 0x84,
+  0xa5, 0x02, 0xd7, 0x3a, 0x76, 0xd9, 0x37, 0x2d, 0x38, 0x1b, 0xb9, 0xfa,
+  0x52, 0xf5, 0x84, 0xd6, 0x83, 0x97, 0xd0, 0xd3, 0x63, 0x7f, 0x4b, 0x8b,
+  0xbc, 0x19, 0x10, 0xa3, 0x8e, 0x06, 0xbd, 0x2a, 0xdd, 0xb1, 0xb7, 0xb9,
+  0x5c, 0xed, 0x2e, 0x7d, 0x46, 0x8c, 0x18, 0x67, 0x14, 0x8f, 0x3f, 0x84,
+  0x50, 0x7d, 0x02, 0x9c, 0x26, 0xb7, 0x1c, 0xcd, 0xd2, 0x46, 0x83, 0x0c,
+  0x24, 0x95, 0xaa, 0x79, 0xa4, 0x60, 0xcb, 0x13, 0xd9, 0x79, 0x6c, 0x5a,
+  0x06, 0xa3, 0x8d, 0xd8, 0xcc, 0x6f, 0x96, 0x84, 0xd1, 0x37, 0xe9, 0xa7,
+  0x92, 0x50, 0x0d, 0x63, 0x59, 0x0c, 0x0a, 0x6f, 0x4b, 0xf0, 0x6a, 0x46,
+  0x17, 0xd7, 0x26, 0x62, 0xa6, 0xc9, 0xc0, 0xb6, 0xf0, 0x63, 0xb2, 0x89,
+  0x24, 0x0a, 0xa5, 0x48, 0xdd, 0x07, 0x42, 0x8b, 0x59, 0x36, 0x2b, 0xf0,
+  0x00, 0xa8, 0xcb, 0x8f, 0xe3, 0x19, 0x29, 0x7b, 0x91, 0x10, 0xc1, 0xb3,
+  0xa1, 0x8a, 0x3a, 0x63, 0x63, 0xb3, 0x28, 0xf0, 0xe5, 0xa6, 0x59, 0x91,
+  0x64, 0x41, 0x6d, 0x28, 0xe5, 0x16, 0xba, 0x6e, 0xe6, 0xb7, 0x19, 0x3a,
+  0x95, 0x05, 0x20, 0x77, 0x2a, 0x08, 0x96, 0xc8, 0xd9, 0x02, 0x78, 0x85,
+  0x82, 0x1d, 0x22, 0xa9, 0xc4, 0x28, 0xce, 0x31, 0xc2, 0x33, 0x4d, 0x0c,
+  0xcf, 0xa1, 0xa4, 0xb1, 0x9b, 0x11, 0xd3, 0x4e, 0x40, 0x43, 0x59, 0x8e,
+  0x70, 0x74, 0xb9, 0x07, 0x4f, 0x3e, 0x65, 0x9b, 0x2e, 0xd7, 0xce, 0x93,
+  0x11, 0x6d, 0x94, 0x16, 0x53, 0x20, 0xc3, 0xc0, 0x3e, 0xf2, 0x5a, 0x4d,
+  0x29, 0xda, 0x4c, 0x77, 0xb7, 0x87, 0xa4, 0x50, 0x2d, 0x89, 0x39, 0x85,
+  0xeb, 0x86, 0x0e, 0x4c, 0xc5, 0x92, 0xae, 0xda, 0x74, 0xe4, 0xf4, 0xb6,
+  0x65, 0xce, 0xd6, 0x29, 0xa8, 0x5e, 0xb1, 0xcd, 0x8b, 0x48, 0xf8, 0xa4,
+  0x35, 0x6a, 0x1b, 0x43, 0xd9, 0xdf, 0x31, 0xa7, 0x64, 0x77, 0xe7, 0xa3,
+  0x1c, 0x94, 0xe8, 0x70, 0xb6, 0x98, 0x7e, 0xe3, 0x2f, 0x83, 0xcf, 0x38,
+  0xe9, 0x7c, 0x08, 0xea, 0x8c, 0xf5, 0xff, 0x31, 0xdd, 0x93, 0xb2, 0x23,
+  0x10, 0xd4, 0xed, 0xfc, 0xd9, 0x4d, 0x3d, 0x97, 0x93, 0x77, 0x55, 0x4f,
+  0x7f, 0xa7, 0x4b, 0x54, 0xce, 0xdf, 0x25, 0xeb, 0xe1, 0x8b, 0x79, 0xcf,
+  0x9b, 0x93, 0x72, 0x49, 0x63, 0x9d, 0x87, 0xee, 0x77, 0x24, 0x3f, 0x56,
+  0xbc, 0x92, 0x78, 0x0d, 0xcb, 0x2e, 0x6b, 0xc0, 0x01, 0xed, 0x63, 0xd5,
+  0x96, 0xad, 0x4f, 0x9c, 0xdc, 0x4c, 0x59, 0xe6, 0x2c, 0x76, 0x7a, 0xae,
+  0x45, 0x79, 0x20, 0x40, 0x03, 0x40, 0x40, 0x5d, 0x85, 0x44, 0x07, 0xc1,
+  0xd2, 0xb7, 0x33, 0x3a, 0x7a, 0x48, 0x6e, 0xab, 0x49, 0x3d, 0xda, 0xf9,
+  0xb2, 0x1b, 0x3d, 0xda, 0xfb, 0xaa, 0x8b, 0xf0, 0x49, 0xf8, 0xcf, 0x1e,
+  0xfe, 0xb3, 0x8f, 0x8f, 0x3c, 0x06, 0x75, 0x61, 0x89, 0x98, 0x1c, 0x4e,
+  0x37, 0x17, 0xec, 0x0a, 0xbc, 0x41, 0x06, 0xf9, 0xc2, 0x91, 0x98, 0x13,
+  0x67, 0xc1, 0x35, 0x56, 0x97, 0x19, 0x19, 0xc1, 0x45, 0xe4, 0x33, 0x3f,
+  0xab, 0x8e, 0xd2, 0xeb, 0x45, 0x4d, 0xb1, 0xc9, 0x19, 0xf0, 0xb3, 0xba,
+  0x02, 0xa2, 0xc2, 0xc5, 0xd6, 0xb5, 0xd4, 0x06, 0x61, 0x89, 0x17, 0x1c,
+  0xe2, 0xec, 0x63, 0xa7, 0x27, 0x19, 0x27, 0xd5, 0x09, 0x2a, 0x03, 0xc2,
+  0x06, 0x64, 0xca, 0x7f, 0x4a, 0x24, 0x5c, 0x36, 0x2c, 0x6b, 0xc9, 0x77,
+  0xea, 0xd3, 0x54, 0xdd, 0x0b, 0xec, 0xcf, 0x84, 0xec, 0x3a, 0x5a, 0x04,
+  0x87, 0xd0, 0x89, 0x9c, 0xb0, 0x7c, 0x3e, 0xc9, 0xec, 0xc2, 0x90, 0x98,
+  0xaa, 0xda, 0xcd, 0x12, 0x72, 0xfc, 0x9b, 0x04, 0x10, 0xb1, 0x66, 0xa7,
+  0xb7, 0xb0, 0xf6, 0x5c, 0xe5, 0x32, 0x32, 0xb7, 0xa7, 0xbd, 0xf5, 0x7b,
+  0x4e, 0x60, 0x6c, 0xc0, 0x5e, 0x58, 0x3b, 0xa2, 0xb0, 0x0d, 0xcc, 0xcf,
+  0x88, 0x1f, 0xe7, 0x95, 0x5c, 0xa6, 0x06, 0xa8, 0x80, 0x0d, 0xa9, 0x61,
+  0xf6, 0xd3, 0x27, 0x85, 0x99, 0xf6, 0xf5, 0x69, 0xef, 0xc9, 0x13, 0x53,
+  0x98, 0x82, 0x51, 0xa4, 0x10, 0x2b, 0xe4, 0xce, 0x64, 0xd3, 0xa5, 0x62,
+  0xb4, 0x8b, 0x8f, 0xd0, 0x8a, 0x7f, 0x10, 0x85, 0x2c, 0x9c, 0xa2, 0x2f,
+  0x49, 0x2a, 0x32, 0xdc, 0x11, 0x54, 0xeb, 0x8b, 0xe2, 0xcc, 0x52, 0x42,
+  0xc4, 0x87, 0xc1, 0xbe, 0x9f, 0xe5, 0x37, 0x1a, 0x55, 0x29, 0x81, 0x63,
+  0x0a, 0x25, 0x12, 0x42, 0x25, 0x58, 0x22, 0x4e, 0x7c, 0x3e, 0x48, 0x1c,
+  0xea, 0xfd, 0xe9, 0x43, 0xf8, 0xa1, 0xbd, 0x49, 0x1c, 0xc6, 0x58, 0x26,
+  0xe5, 0x24, 0xc6, 0xb2, 0xb2, 0xbf, 0x65, 0xa3, 0xe8, 0x30, 0xa3, 0xf2,
+  0xa7, 0xd5, 0xdd, 0x37, 0xc1, 0xe2, 0x95, 0x78, 0xfc, 0xe0, 0x49, 0xa0,
+  0x93, 0xdf, 0xd8, 0x0c, 0xa2, 0x8f, 0x47, 0x9b, 0xd2, 0xc2, 0x56, 0x57,
+  0xc3, 0x3b, 0xfb, 0x47, 0xfd, 0xd3, 0xe8, 0xfc, 0xf4, 0xe8, 0xe5, 0x6b,
+  0x78, 0x27, 0xf6, 0x1d, 0x89, 0xa6, 0x88, 0x6d, 0x97, 0x03, 0xfc, 0xeb,
+  0x2a, 0x53, 0xa3, 0xce, 0xad, 0xe9, 0x87, 0x3b, 0xf2, 0xab, 0x48, 0x8e,
+  0x48, 0xd4, 0xa8, 0x21, 0x73, 0xc6, 0x0b, 0xcd, 0xef, 0x6d, 0x2f, 0x34,
+  0x68, 0x0d, 0xbe, 0xb5, 0x1a, 0x83, 0x2e, 0x3e, 0x16, 0x6f, 0x1d, 0x90,
+  0x14, 0x1a, 0x70, 0x78, 0x68, 0xfe, 0x6c, 0x70, 0xed, 0x4c, 0x22, 0x2d,
+  0x8e, 0x10, 0x46, 0xc4, 0xf6, 0x02, 0xa0, 0x43, 0xa7, 0x59, 0x2a, 0xf7,
+  0x6b, 0xf0, 0xb3, 0xb4, 0x70, 0x6c, 0x30, 0xef, 0x17, 0x98, 0x1d, 0xee,
+  0x2b, 0x82, 0x4e, 0xc9, 0x32, 0x21, 0x5f, 0x69, 0x60, 0x29, 0x0a, 0xfc,
+  0xb9, 0x7a, 0xd3, 0x70, 0xb2, 0x1b, 0xa5, 0xe7, 0xee, 0x18, 0xe4, 0xb7,
+  0x5d, 0x5b, 0xbd, 0x88, 0xd0, 0x94, 0x4d, 0x36, 0xd7, 0x25, 0x70, 0x4f,
+  0x2a, 0xfc, 0xc9, 0x2d, 0x41, 0xa3, 0x5d, 0x03, 0xee, 0x57, 0x5e, 0x25,
+  0x3e, 0xd0, 0xe3, 0x14, 0x14, 0x0e, 0x68, 0xd0, 0x0d, 0xb1, 0x69, 0x91,
+  0x2c, 0x6a, 0x94, 0xf5, 0xb9, 0xca, 0x7c, 0xd7, 0x06, 0x41, 0x03, 0x99,
+  0x26, 0x6b, 0x84, 0x32, 0x60, 0xb4, 0xdb, 0x2c, 0xd6, 0xa8, 0x2f, 0x57,
+  0x15, 0x44, 0x8e, 0xe5, 0x9d, 0xa3, 0xac, 0x29, 0xda, 0x9e, 0xcc, 0x58,
+  0xf9, 0x95, 0x8c, 0x7f, 0x0b, 0x3d, 0x37, 0xe3, 0x03, 0x52, 0xa7, 0xf3,
+  0xa5, 0x26, 0x18, 0xe9, 0x60, 0x2d, 0x14, 0x8b, 0x26, 0x29, 0xf8, 0x3a,
+  0xb8, 0xb4, 0xfa, 0xa0, 0x65, 0x85, 0xc1, 0xac, 0xb7, 0x9a, 0xee, 0x66,
+  0xd4, 0x16, 0x73, 0xbf, 0x61, 0x65, 0xc1, 0x23, 0x00, 0xe2, 0x3e, 0x47,
+  0xd7, 0x07, 0x6b, 0xd1, 0xbb, 0x76, 0x8f, 0x7a, 0xa1, 0x44, 0x89, 0xcd,
+  0xd2, 0x13, 0x8c, 0x5a, 0x03, 0x35, 0x43, 0x90, 0xa2, 0xe7, 0xaf, 0x4f,
+  0xbe, 0x3f, 0x6b, 0x8f, 0x9b, 0xe1, 0xde, 0x67, 0xa9, 0x96, 0xdd, 0xf6,
+  0x07, 0xc3, 0x15, 0x70, 0x11, 0xa1, 0x99, 0x3d, 0xa8, 0xa1, 0x3a, 0xa7,
+  0xf4, 0xc4, 0xb6, 0xe4, 0xd0, 0x07, 0x53, 0x6e, 0xe8, 0x1e, 0xa9, 0xb5,
+  0x7b, 0xdf, 0xf3, 0xf1, 0xf1, 0x0f, 0x88, 0x3b, 0x0a, 0x77, 0xe4, 0x6b,
+  0xde, 0x30, 0x76, 0xd1, 0xdc, 0xea, 0x84, 0x6e, 0xeb, 0xb5, 0x1d, 0x7f,
+  0x54, 0x8f, 0x4b, 0xef, 0x53, 0xa5, 0xb9, 0xab, 0xfc, 0xa6, 0x3d, 0x45,
+  0x82, 0x78, 0x1e, 0x13, 0x6e, 0x49, 0x4f, 0x63, 0x56, 0x0f, 0x07, 0x49,
+  0x3a, 0xc2, 0x30, 0xb6, 0x61, 0x13, 0x28, 0x60, 0xfd, 0xca, 0xe4, 0x32,
+  0x50, 0x2c, 0x34, 0xe3, 0x6a, 0x2e, 0xcb, 0xcb, 0x83, 0xa0, 0x46, 0x37,
+  0xc9, 0x07, 0xb0, 0x13, 0x5c, 0xa6, 0x5d, 0x8c, 0xbe, 0x1a, 0xf1, 0x58,
+  0x43, 0x35, 0xd5, 0x9c, 0xdc, 0x00, 0x00, 0x1f, 0x08, 0x6f, 0xf1, 0x41,
+  0x97, 0x96, 0xe8, 0xb6, 0x5a, 0x7e, 0xc4, 0xcd, 0x02, 0xdc, 0xfb, 0x94,
+  0x7b, 0x2e, 0xb0, 0x16, 0x5b, 0x9b, 0x6d, 0x7a, 0x6d, 0x02, 0xb1, 0x83,
+  0xd2, 0x45, 0x5f, 0x97, 0x34, 0xa8, 0x66, 0xdb, 0x25, 0x95, 0x91, 0x9b,
+  0xa6, 0x55, 0x0d, 0x59, 0xc3, 0xd9, 0x4a, 0x4f, 0x3e, 0xa4, 0xae, 0xa0,
+  0xdb, 0x7f, 0x2c, 0x32, 0x82, 0xb4, 0x02, 0xe5, 0x40, 0x3d, 0x93, 0xb4,
+  0xcd, 0xda, 0x68, 0x44, 0x8d, 0xd2, 0xad, 0x65, 0x34, 0x19, 0x6f, 0x61,
+  0x90, 0x0e, 0x50, 0x72, 0x7e, 0x45, 0xb4, 0x12, 0x1d, 0x93, 0x3e, 0x31,
+  0x5d, 0x20, 0xfe, 0xdb, 0xcb, 0x4a, 0xab, 0xfd, 0x10, 0x6a, 0x82, 0xa4,
+  0xd7, 0x2a, 0x7c, 0x31, 0x01, 0xfa, 0x95, 0xef, 0x7d, 0xab, 0x40, 0x37,
+  0x9a, 0xe7, 0x15, 0xcb, 0xd1, 0x58, 0x35, 0xed, 0x3a, 0x35, 0xd2, 0x0b,
+  0x8c, 0x06, 0xa4, 0xfe, 0x64, 0xb2, 0x5d, 0x56, 0x23, 0xd4, 0x56, 0x16,
+  0xb3, 0x09, 0x0e, 0x13, 0x5b, 0x52, 0x87, 0x92, 0xc7, 0x99, 0x43, 0x85,
+  0x66, 0xa3, 0xfa, 0xf2, 0x7b, 0x72, 0x52, 0x4d, 0xf5, 0x57, 0x29, 0x5f,
+  0x57, 0xc5, 0x43, 0xf7, 0xc5, 0x35, 0x42, 0x91, 0x84, 0xa7, 0x49, 0x2b,
+  0x58, 0x3b, 0x25, 0xe5, 0x72, 0xda, 0xe4, 0xed, 0xb8, 0x17, 0x5d, 0xae,
+  0x71, 0xfd, 0x50, 0xab, 0x6b, 0x92, 0xe4, 0x9a, 0x56, 0xfd, 0x6b, 0x24,
+  0x31, 0x60, 0x68, 0x83, 0xbc, 0x24, 0xc0, 0x1d, 0xd8, 0x14, 0x98, 0xb7,
+  0xb0, 0xa9, 0x65, 0xb4, 0xc9, 0xa5, 0x2f, 0x1f, 0xad, 0x2c, 0xa4, 0x5a,
+  0x0f, 0xf3, 0xa2, 0x62, 0xe6, 0x8f, 0x56, 0x56, 0x50, 0xe5, 0x37, 0xfc,
+  0x4a, 0x48, 0x2b, 0x6a, 0xa8, 0x42, 0x87, 0xc6, 0x68, 0x2a, 0x25, 0xd0,
+  0x41, 0x68, 0xbb, 0x9b, 0xa7, 0x4b, 0xaa, 0x65, 0x06, 0xa2, 0x81, 0x2c,
+  0x70, 0x89, 0x2d, 0xd5, 0x67, 0x83, 0xec, 0x8c, 0x1c, 0x1e, 0x2a, 0x48,
+  0x1d, 0x2c, 0x43, 0x29, 0xc0, 0x21, 0x5c, 0x49, 0x11, 0xaf, 0x64, 0x74,
+  0xe7, 0xdf, 0x46, 0x5a, 0xab, 0x5d, 0x46, 0xda, 0x15, 0x2c, 0x4c, 0x53,
+  0x55, 0x3d, 0x14, 0x64, 0x88, 0x9f, 0x77, 0xb9, 0x0e, 0xbb, 0xad, 0x36,
+  0xbf, 0x56, 0x1d, 0xf6, 0x46, 0x30, 0xbe, 0xa9, 0xeb, 0x8d, 0xe1, 0x1e,
+  0x06, 0x0b, 0x4a, 0x39, 0xb3, 0x5b, 0x83, 0x94, 0x53, 0x5c, 0xef, 0x02,
+  0xfe, 0x65, 0x60, 0x14, 0x0b, 0x29, 0x8e, 0x38, 0x9c, 0x80, 0xe2, 0x1d,
+  0x08, 0xa6, 0x69, 0xdc, 0x1c, 0xe5, 0x02, 0x4d, 0x44, 0x93, 0x05, 0xf6,
+  0x65, 0x7c, 0xc3, 0x5c, 0xc7, 0xdb, 0xa0, 0xac, 0x08, 0x7d, 0xf1, 0xb2,
+  0x85, 0x5d, 0x35, 0xbc, 0xa2, 0xac, 0xea, 0x27, 0x76, 0x3d, 0x9a, 0xe5,
+  0x92, 0x5b, 0xb4, 0x6b, 0xf6, 0x58, 0x74, 0x9d, 0xc2, 0xad, 0xb5, 0x48,
+  0x9f, 0x2a, 0x77, 0x06, 0x43, 0x74, 0x2b, 0x3b, 0x98, 0x84, 0x2a, 0x9b,
+  0x9b, 0xd4, 0x4f, 0xb7, 0x9e, 0xb2, 0xbd, 0x95, 0x15, 0x33, 0x1c, 0xff,
+  0xe9, 0x1b, 0xf2, 0x9f, 0x71, 0xe4, 0x49, 0x73, 0x49, 0x23, 0xce, 0x13,
+  0xe4, 0xa4, 0x42, 0x32, 0xd7, 0x48, 0x5c, 0x4f, 0xa9, 0x3c, 0xb4, 0x36,
+  0x1c, 0x35, 0xd6, 0xe8, 0x43, 0xcd, 0xa0, 0x6e, 0x2d, 0x92, 0x4a, 0x2f,
+  0x6d, 0xd5, 0xc2, 0xed, 0x81, 0xbf, 0xb9, 0x23, 0x0a, 0x4b, 0x62, 0xbc,
+  0x0f, 0xeb, 0xc9, 0x60, 0xd1, 0xc7, 0xab, 0xd3, 0x28, 0xfd, 0x23, 0x7d,
+  0xe3, 0xb9, 0x3c, 0x78, 0xb4, 0xf3, 0xd5, 0x93, 0x87, 0x54, 0x86, 0x7e,
+  0x94, 0x78, 0x05, 0x7b, 0xf9, 0x8f, 0x58, 0x9b, 0xf6, 0xb9, 0x5b, 0xf2,
+  0x20, 0xf6, 0x96, 0xdc, 0x8f, 0xbf, 0xb5, 0x40, 0x48, 0x2f, 0xe3, 0x6f,
+  0x5c, 0xfa, 0xbc, 0x7c, 0x5f, 0xd6, 0x4a, 0xed, 0xa2, 0xc9, 0xb5, 0x25,
+  0xaa, 0xcd, 0xc6, 0x86, 0x06, 0x45, 0x6d, 0xe0, 0x4e, 0x86, 0xc8, 0x4d,
+  0x0d, 0x69, 0x4e, 0x9f, 0x25, 0x16, 0x25, 0x1c, 0x4a, 0x19, 0x14, 0xb2,
+  0x05, 0xcb, 0x9e, 0xee, 0xc3, 0x9d, 0x92, 0x07, 0xb1, 0x27, 0x85, 0x89,
+  0xb8, 0x3f, 0x73, 0x52, 0x1f, 0xca, 0xbf, 0x9b, 0x3d, 0x25, 0xeb, 0xb2,
+  0xa7, 0xe4, 0x33, 0xf1, 0xa7, 0x87, 0x32, 0xa8, 0x20, 0x7f, 0x7a, 0x10,
+  0x7b, 0xfa, 0x34, 0xfc, 0xc9, 0x39, 0xaa, 0x9f, 0xa9, 0x8e, 0xac, 0x76,
+  0xff, 0xe1, 0x0c, 0x6a, 0x6d, 0xfe, 0xf4, 0x98, 0x0b, 0xdc, 0x37, 0x89,
+  0xd9, 0x4b, 0x4d, 0x46, 0xab, 0x16, 0x36, 0xb0, 0x8d, 0xf2, 0x0c, 0xa5,
+  0xd9, 0x35, 0x4c, 0x88, 0x37, 0xce, 0xfd, 0x11, 0xce, 0x09, 0xc9, 0x95,
+  0xc8, 0x1e, 0x2b, 0x71, 0x98, 0xfa, 0x64, 0x4b, 0x5b, 0xf6, 0x9c, 0xe0,
+  0x0a, 0x83, 0x6b, 0x63, 0x38, 0x7b, 0xcc, 0x49, 0xcd, 0x9c, 0x2e, 0x41,
+  0xe0, 0x9e, 0x67, 0xc4, 0xd5, 0x80, 0xc5, 0x60, 0x5d, 0x98, 0xef, 0xfb,
+  0xfd, 0xf8, 0xe8, 0xfc, 0x65, 0xb4, 0xc2, 0x58, 0x8a, 0xaf, 0x38, 0x63,
+  0xcc, 0x56, 0x09, 0xed, 0xce, 0x12, 0x7e, 0x82, 0x72, 0xf3, 0xb5, 0xe6,
+  0xcd, 0xc6, 0x7e, 0x30, 0x95, 0x3c, 0x5e, 0x96, 0x40, 0x5c, 0x5f, 0x42,
+  0xd0, 0xa9, 0x9b, 0xb4, 0x71, 0x54, 0x46, 0x35, 0x2c, 0x23, 0x5d, 0x59,
+  0x35, 0x50, 0x90, 0xc5, 0x88, 0xf8, 0x13, 0x17, 0x96, 0xe1, 0xf2, 0x7c,
+  0x78, 0x69, 0xd1, 0x03, 0x9e, 0x42, 0x8d, 0x10, 0xc8, 0x54, 0xbc, 0x74,
+  0xf7, 0xab, 0x27, 0xbb, 0xc0, 0x63, 0xee, 0x38, 0x34, 0x55, 0x5e, 0x7e,
+  0xd4, 0xdb, 0xdf, 0x7e, 0xd4, 0x7b, 0x84, 0x57, 0x9a, 0xa4, 0xd2, 0x50,
+  0x96, 0x84, 0x34, 0x1f, 0x0e, 0xf4, 0x64, 0x6e, 0xf5, 0xfa, 0xe4, 0x38,
+  0x62, 0x2c, 0x9c, 0x94, 0x2a, 0x03, 0xd5, 0xcd, 0xbd, 0x0e, 0x48, 0x9f,
+  0xd0, 0x21, 0xf3, 0x6e, 0xcf, 0x23, 0xe3, 0x2d, 0x87, 0x9a, 0xc3, 0xc8,
+  0xd6, 0x3b, 0x33, 0x03, 0xc1, 0xab, 0x81, 0x2d, 0x63, 0xb2, 0x2e, 0x38,
+  0x46, 0x1f, 0x9d, 0xd7, 0x59, 0x12, 0x67, 0xc1, 0x96, 0xc7, 0x0a, 0xf9,
+  0x43, 0xf8, 0xf8, 0xb1, 0x42, 0x5e, 0x1f, 0x0f, 0xa4, 0x55, 0x67, 0x90,
+  0x1f, 0x93, 0x60, 0x5b, 0xe9, 0x53, 0x4d, 0x90, 0x2d, 0x46, 0x4c, 0x1b,
+  0xc6, 0xe2, 0xd9, 0x2a, 0xe5, 0x3a, 0x55, 0x77, 0x00, 0x7a, 0xa4, 0x87,
+  0x53, 0x63, 0x56, 0x1c, 0xff, 0x63, 0x34, 0xeb, 0xad, 0x6b, 0x13, 0xcd,
+  0xaa, 0xa5, 0xa6, 0x4f, 0xb3, 0x20, 0xcc, 0xff, 0xc4, 0xe0, 0xd9, 0x36,
+  0x23, 0x36, 0x16, 0x7a, 0xa5, 0xa4, 0xf1, 0x08, 0x20, 0x43, 0x66, 0x53,
+  0xa2, 0xd3, 0x90, 0x69, 0x7d, 0x59, 0xe3, 0x01, 0x57, 0x88, 0xed, 0x6b,
+  0xbb, 0x48, 0x93, 0x89, 0xbc, 0x28, 0xd6, 0x57, 0x52, 0x27, 0xbd, 0x2f,
+  0x71, 0xf9, 0x28, 0x7f, 0xc6, 0x87, 0x8e, 0x90, 0x58, 0x17, 0x67, 0x0c,
+  0xc6, 0xae, 0x37, 0x4d, 0x2a, 0x76, 0xd0, 0x62, 0x4d, 0xfb, 0xd9, 0x30,
+  0x9b, 0xc3, 0xe5, 0xba, 0xc4, 0x7a, 0x1b, 0x5c, 0x94, 0x25, 0x17, 0xb4,
+  0x05, 0x73, 0xf0, 0x26, 0x59, 0x7d, 0x84, 0xe0, 0x89, 0xf0, 0x78, 0xd8,
+  0x58, 0xfd, 0xef, 0xa0, 0xf4, 0xe0, 0x0d, 0x2d, 0x06, 0x08, 0x2d, 0x82,
+  0xa1, 0xac, 0x78, 0xc9, 0xd5, 0x2c, 0xd9, 0xd2, 0xcd, 0xa8, 0x8a, 0xc0,
+  0xbd, 0xdc, 0xd2, 0x18, 0x96, 0xaf, 0xb3, 0xf7, 0xaf, 0x1e, 0xaf, 0xa6,
+  0x40, 0x96, 0x8d, 0x23, 0x53, 0x49, 0x00, 0x7d, 0xcd, 0x36, 0x88, 0x4e,
+  0x9b, 0x95, 0x92, 0x2d, 0x5b, 0xcd, 0xab, 0x3b, 0x24, 0x8e, 0x54, 0xb9,
+  0x5c, 0xe3, 0x2b, 0x65, 0x85, 0x07, 0x5d, 0xdf, 0x22, 0x2d, 0x04, 0xee,
+  0xef, 0x3a, 0xe2, 0xe6, 0x9a, 0x51, 0xb7, 0xb5, 0xd6, 0x3f, 0x88, 0xdc,
+  0xfe, 0xdd, 0x77, 0xbf, 0xf6, 0xb2, 0x52, 0x75, 0xad, 0x65, 0xac, 0x62,
+  0x3c, 0x93, 0x4b, 0x47, 0xd1, 0x26, 0xa5, 0x34, 0x19, 0x90, 0x70, 0xfc,
+  0x48, 0x4d, 0x65, 0xbe, 0xed, 0xcb, 0x68, 0x98, 0x5b, 0x2b, 0x8d, 0x7a,
+  0x46, 0xc9, 0x8d, 0x18, 0x89, 0x8d, 0xd4, 0x5c, 0x4f, 0xac, 0x70, 0x94,
+  0xde, 0x7f, 0xb7, 0xce, 0xfa, 0xf8, 0xea, 0x7f, 0x91, 0xce, 0xfa, 0x10,
+  0xa5, 0x95, 0x09, 0x31, 0x0e, 0x61, 0x4c, 0xf3, 0x72, 0xb6, 0xab, 0xaf,
+  0xb4, 0x36, 0xff, 0x57, 0x7d, 0xfd, 0xf8, 0xea, 0xab, 0x73, 0x6c, 0x5b,
+  0x82, 0x0c, 0xff, 0x1d, 0x31, 0x86, 0xcd, 0xa1, 0xf0, 0xb0, 0x85, 0x41,
+  0x1d, 0x3c, 0xc5, 0x62, 0x29, 0x0f, 0xe1, 0x5a, 0xae, 0x36, 0xfb, 0x28,
+  0xf1, 0x59, 0xd6, 0x43, 0x8c, 0x6c, 0xca, 0xa6, 0x62, 0x41, 0xe1, 0x69,
+  0x58, 0xbb, 0x04, 0xcb, 0x32, 0x08, 0xda, 0x37, 0xb9, 0x73, 0x61, 0xbf,
+  0x39, 0x79, 0x76, 0x19, 0xa3, 0xaa, 0x59, 0xe3, 0x9a, 0x46, 0xff, 0x65,
+  0x6c, 0xea, 0x93, 0x1a, 0xfe, 0x1f, 0xff, 0xff, 0xb6, 0xe1, 0xff, 0xf1,
+  0xba, 0x86, 0xff, 0xc7, 0xff, 0xd7, 0xf0, 0xff, 0xf1, 0x38, 0x93, 0xbb,
+  0x6b, 0x9b, 0x98, 0xc9, 0x88, 0xa9, 0xa6, 0xf0, 0x53, 0x0f, 0xf1, 0x96,
+  0x55, 0x0c, 0x10, 0x11, 0x98, 0xa7, 0xfa, 0xf2, 0xfc, 0x6f, 0x4f, 0xba,
+  0x54, 0x68, 0xaf, 0xef, 0xd7, 0x9c, 0x3c, 0x7d, 0x76, 0x74, 0xbe, 0x94,
+  0x01, 0x46, 0x9f, 0xd5, 0x7e, 0xf7, 0xf8, 0x63, 0xf1, 0x3a, 0xcb, 0x3c,
+  0xdb, 0x98, 0xde, 0xdf, 0xc9, 0xcc, 0x37, 0x4f, 0xd3, 0x11, 0x17, 0x1f,
+  0x8a, 0x0e, 0xe9, 0x8f, 0xf6, 0xc8, 0x6b, 0xa9, 0xe0, 0x56, 0x62, 0xd4,
+  0x68, 0xe1, 0x05, 0xd4, 0xd3, 0xcb, 0x20, 0xb3, 0xcf, 0xa4, 0xb4, 0xaa,
+  0x54, 0xb3, 0x8a, 0xbd, 0xdc, 0x93, 0xd1, 0x96, 0x20, 0x45, 0x71, 0xdf,
+  0x44, 0xb2, 0x5a, 0xc1, 0x0b, 0x46, 0x71, 0x89, 0x75, 0xe7, 0x93, 0x01,
+  0x15, 0x4c, 0xeb, 0xb9, 0xcf, 0x30, 0x4a, 0x45, 0xf8, 0x1c, 0x3a, 0x8f,
+  0x11, 0x84, 0x6a, 0x89, 0x71, 0xe9, 0x54, 0xdf, 0x8c, 0xb6, 0xaa, 0x45,
+  0x39, 0x74, 0xe6, 0xfe, 0xf9, 0x32, 0x4e, 0xdc, 0x51, 0xec, 0xef, 0xec,
+  0xd4, 0x27, 0xb3, 0x6e, 0x48, 0xfd, 0x5d, 0xb7, 0xf6, 0x7e, 0x37, 0x50,
+  0x58, 0x6a, 0xda, 0x75, 0xb3, 0x15, 0x2c, 0x39, 0x34, 0x5e, 0x6d, 0xcd,
+  0x52, 0xa9, 0xd3, 0x43, 0xb1, 0x98, 0xd5, 0x29, 0xc2, 0x9d, 0x4e, 0x8d,
+  0x10, 0x30, 0x9e, 0x7b, 0xb4, 0x28, 0x42, 0x56, 0xdd, 0xc4, 0xdd, 0x66,
+  0xce, 0xc9, 0xe8, 0xd6, 0xd3, 0x5f, 0x33, 0x87, 0x24, 0xf0, 0xb0, 0xda,
+  0xe7, 0x9b, 0xcd, 0x95, 0x0e, 0x4e, 0xaf, 0x63, 0xb7, 0x71, 0x46, 0xa5,
+  0x9b, 0xb5, 0xab, 0x11, 0x1f, 0x16, 0xd8, 0xec, 0xef, 0x7e, 0xd2, 0xa5,
+  0xf3, 0xe6, 0x72, 0xf8, 0x87, 0x7c, 0x56, 0x15, 0xf9, 0xa4, 0x74, 0x92,
+  0xcd, 0xe9, 0x2c, 0xe4, 0xd0, 0x2e, 0x07, 0x93, 0x60, 0x70, 0xe2, 0x16,
+  0x49, 0x09, 0x2d, 0x88, 0x6d, 0x09, 0x97, 0x33, 0xa4, 0xe5, 0xb4, 0x0c,
+  0x37, 0xad, 0x86, 0xa2, 0xcb, 0x70, 0x3e, 0x36, 0xe2, 0x3c, 0xc0, 0xe5,
+  0x51, 0x70, 0x50, 0x3c, 0xdc, 0x5a, 0x5d, 0x46, 0x17, 0xf1, 0x74, 0x21,
+  0x07, 0x85, 0x41, 0x72, 0x4c, 0x5a, 0xe0, 0xde, 0x9c, 0xc3, 0xa0, 0x07,
+  0x6d, 0xd9, 0x59, 0xf8, 0x5f, 0x73, 0x18, 0x3c, 0x06, 0xc7, 0x9c, 0xd0,
+  0x1e, 0x88, 0x9a, 0x04, 0x88, 0x41, 0x8f, 0x68, 0x8e, 0x8b, 0x07, 0xa9,
+  0x6f, 0xfd, 0x71, 0x77, 0xba, 0xaa, 0xb9, 0x35, 0xcc, 0xd5, 0x93, 0x14,
+  0x9c, 0x59, 0x8d, 0xb4, 0xbe, 0x28, 0x30, 0x0c, 0x7a, 0x3c, 0x49, 0x6e,
+  0x04, 0x42, 0xb0, 0x39, 0xc6, 0xfe, 0xe9, 0x3e, 0x8d, 0xe6, 0xe2, 0xb4,
+  0xbf, 0xdb, 0xdb, 0x31, 0xe2, 0x42, 0x49, 0xb1, 0xef, 0x84, 0xe9, 0xfd,
+  0xdd, 0xc9, 0x51, 0xff, 0xa2, 0x17, 0x99, 0x9d, 0xaf, 0x05, 0x41, 0x07,
+  0x22, 0xd4, 0x85, 0xe0, 0xb1, 0x1c, 0xfb, 0x24, 0xb9, 0x83, 0x23, 0xa3,
+  0x58, 0xe1, 0x38, 0x38, 0x1e, 0x9b, 0xb6, 0x8e, 0xa6, 0xc6, 0x84, 0x81,
+  0xd3, 0xaa, 0xb4, 0xc8, 0xe7, 0xcd, 0x23, 0x09, 0x1b, 0x2e, 0x60, 0x0b,
+  0x06, 0xe6, 0x81, 0x8e, 0x07, 0xa5, 0x6a, 0xe7, 0x13, 0x0c, 0xdc, 0xc7,
+  0x6e, 0xea, 0xa6, 0xf0, 0x25, 0xb5, 0x5a, 0xdc, 0xf1, 0x4f, 0x10, 0xeb,
+  0x7d, 0x56, 0x9a, 0xb1, 0xea, 0x62, 0x71, 0xd4, 0xb5, 0x01, 0x7a, 0x0c,
+  0x40, 0x6e, 0x50, 0xd9, 0x32, 0x09, 0xf3, 0xd2, 0xb8, 0xe6, 0x61, 0x45,
+  0xb5, 0x11, 0x92, 0x15, 0xb8, 0xc2, 0x8d, 0xbd, 0xfd, 0xb8, 0x69, 0xd1,
+  0x8d, 0xc6, 0xd7, 0xa6, 0xf8, 0xc6, 0xd8, 0xd6, 0xbb, 0xeb, 0x25, 0x7e,
+  0xb3, 0xd1, 0x06, 0xd1, 0xf9, 0x7b, 0xa4, 0xfe, 0x6c, 0x46, 0x0b, 0xec,
+  0x53, 0xfa, 0xa2, 0xca, 0xe3, 0xe1, 0x04, 0x13, 0x8b, 0x62, 0xe0, 0x25,
+  0x55, 0xc0, 0x2e, 0x18, 0x4d, 0xb2, 0x81, 0x12, 0x79, 0xbd, 0x70, 0x0d,
+  0xa1, 0x34, 0xf2, 0x6d, 0xc2, 0xd0, 0x6b, 0x11, 0xb7, 0x04, 0x3f, 0xa1,
+  0x29, 0xd0, 0x57, 0x7c, 0x5d, 0xa7, 0x12, 0x7b, 0x6f, 0xdd, 0xd0, 0xd6,
+  0x65, 0xa3, 0xa2, 0xad, 0xf4, 0x3a, 0xb8, 0x73, 0x62, 0xfa, 0x4d, 0xda,
+  0x74, 0x08, 0x3d, 0x15, 0x0f, 0x82, 0x5b, 0xb4, 0x59, 0x82, 0x3b, 0xfb,
+  0x68, 0x43, 0x9f, 0xa5, 0x13, 0x94, 0x39, 0xd1, 0x4a, 0x4f, 0xc8, 0x6b,
+  0x5a, 0x65, 0x07, 0xe9, 0x0d, 0x66, 0xe5, 0x55, 0x6e, 0x2d, 0x92, 0xe2,
+  0x6e, 0xab, 0x07, 0x24, 0x93, 0x51, 0xee, 0x36, 0xe6, 0x93, 0x3f, 0x85,
+  0x43, 0xc9, 0x38, 0xef, 0x49, 0xbd, 0x58, 0x0c, 0xa1, 0x79, 0x66, 0x1c,
+  0xe6, 0x27, 0x0b, 0x14, 0x92, 0x48, 0x74, 0x1c, 0x3d, 0x91, 0xf4, 0xdd,
+  0x72, 0x07, 0x89, 0x99, 0x31, 0xa9, 0x3c, 0xb2, 0x66, 0xb4, 0x46, 0x48,
+  0xca, 0x1e, 0x8c, 0x27, 0xcd, 0xaf, 0xb4, 0x8b, 0xdc, 0x30, 0x56, 0x2a,
+  0x48, 0xe9, 0x59, 0xbf, 0xd6, 0x54, 0x59, 0x51, 0x35, 0x8c, 0xca, 0x4b,
+  0xde, 0x12, 0x20, 0x39, 0x74, 0xae, 0x65, 0xd7, 0xc9, 0xf0, 0x2e, 0x82,
+  0xe9, 0x4c, 0xc4, 0xe1, 0x86, 0x3b, 0x6a, 0xaa, 0x32, 0x2d, 0x37, 0x7a,
+  0x06, 0x88, 0x68, 0xc5, 0xb9, 0x7a, 0x80, 0x3b, 0x29, 0xd0, 0xc9, 0x83,
+  0xce, 0x57, 0x73, 0xa0, 0x0f, 0x3e, 0x64, 0xcd, 0xc1, 0xd4, 0x40, 0x08,
+  0x9e, 0x36, 0xcc, 0xa0, 0xf0, 0x02, 0xe5, 0xcf, 0x23, 0x88, 0xad, 0x07,
+  0x70, 0x29, 0x04, 0xb2, 0xb5, 0xe4, 0x6a, 0xd1, 0x58, 0x51, 0x77, 0x5b,
+  0xb1, 0xb5, 0x61, 0x10, 0x4f, 0x38, 0x1a, 0x5e, 0xa5, 0x20, 0xe2, 0xf7,
+  0x1e, 0xc2, 0x78, 0x9b, 0x27, 0xc2, 0x65, 0xc3, 0x1f, 0xca, 0x78, 0xcd,
+  0x12, 0xac, 0xf4, 0x37, 0x3e, 0x80, 0xf1, 0x9a, 0xc6, 0x1f, 0x42, 0x16,
+  0x76, 0x64, 0x6b, 0x82, 0x5b, 0x15, 0x13, 0x46, 0xce, 0x71, 0x23, 0xe5,
+  0x1f, 0xf9, 0x9b, 0x0f, 0xa7, 0x7c, 0x14, 0x40, 0x89, 0x65, 0xc4, 0x54,
+  0x02, 0x67, 0x25, 0x34, 0x53, 0xd4, 0x48, 0xb7, 0xa2, 0x37, 0xc0, 0x12,
+  0x40, 0x4c, 0xc4, 0xbd, 0xd9, 0x06, 0xa9, 0x40, 0x54, 0x24, 0xae, 0x79,
+  0x23, 0x4e, 0x97, 0xdc, 0xf7, 0x25, 0x72, 0x08, 0x73, 0x95, 0x96, 0xde,
+  0xa3, 0x14, 0x40, 0xdf, 0x52, 0x50, 0xce, 0x70, 0x15, 0x5f, 0x2c, 0xc1,
+  0xbe, 0x57, 0xd9, 0x4e, 0x80, 0x72, 0x47, 0x13, 0x9e, 0x38, 0x8e, 0x5d,
+  0xec, 0x27, 0x82, 0x10, 0x88, 0x68, 0xf6, 0x98, 0x27, 0x82, 0xf1, 0xda,
+  0x54, 0x3a, 0xd9, 0x07, 0x95, 0xb1, 0x2c, 0x9b, 0x9c, 0x3f, 0x34, 0xc6,
+  0xb3, 0x79, 0x3a, 0xa3, 0xc6, 0x30, 0xd5, 0x31, 0x95, 0xd4, 0xcf, 0x22,
+  0xfd, 0x95, 0xbd, 0xe2, 0x72, 0x2f, 0x5c, 0xa6, 0x33, 0x50, 0x0e, 0x9a,
+  0x7e, 0x9d, 0xc9, 0x28, 0x99, 0x9b, 0xd7, 0x60, 0xd2, 0x88, 0xb9, 0x9d,
+  0x0d, 0x81, 0x60, 0x70, 0x19, 0x29, 0x45, 0x98, 0x56, 0x76, 0xb4, 0x74,
+  0x5a, 0xc8, 0xe7, 0x31, 0x55, 0x38, 0x45, 0x44, 0x7b, 0x23, 0x84, 0xc5,
+  0xf1, 0xb8, 0x9a, 0x9b, 0xbd, 0x5c, 0xc9, 0x10, 0xf1, 0xa1, 0x7b, 0xd5,
+  0xc7, 0x8a, 0xd6, 0xcb, 0x0a, 0x68, 0xeb, 0xff, 0x1e, 0x34, 0x4e, 0x43,
+  0xf2, 0x70, 0x61, 0x97, 0x59, 0x0f, 0xca, 0xc9, 0x3d, 0xe4, 0x07, 0x3e,
+  0x37, 0x20, 0x6e, 0x94, 0x15, 0x22, 0x30, 0xfb, 0xa4, 0xe4, 0x30, 0xb8,
+  0x25, 0x1c, 0x2e, 0xbb, 0x9c, 0xe1, 0x2d, 0xb5, 0x16, 0x83, 0x93, 0xcc,
+  0x50, 0xc4, 0xea, 0x12, 0x58, 0x8d, 0xd1, 0x82, 0x72, 0x5c, 0xa7, 0x19,
+  0xc5, 0x48, 0x6f, 0xe7, 0xe3, 0x31, 0xa1, 0x80, 0x03, 0xfb, 0xac, 0x8a,
+  0x6c, 0xb0, 0x08, 0x04, 0x64, 0xcc, 0xf3, 0x0c, 0xab, 0x65, 0x28, 0xf2,
+  0x1f, 0xf7, 0x69, 0xfb, 0x60, 0xc8, 0xe5, 0xd5, 0xac, 0xcd, 0x5f, 0x85,
+  0x68, 0xd9, 0xf6, 0x37, 0xc5, 0xec, 0xf1, 0xfd, 0x6e, 0x40, 0xbf, 0x97,
+  0x87, 0x11, 0x82, 0x37, 0xd6, 0x07, 0x71, 0xbd, 0x10, 0x71, 0xd4, 0x6e,
+  0xc1, 0x1d, 0x8f, 0x11, 0x2e, 0x63, 0x7b, 0x3f, 0x24, 0x05, 0xc2, 0x70,
+  0x1e, 0x18, 0xf5, 0x56, 0x41, 0x77, 0x90, 0x3b, 0x24, 0x24, 0xdd, 0xf8,
+  0x70, 0x79, 0x43, 0xaa, 0x14, 0xa6, 0x60, 0xf3, 0x16, 0x87, 0x57, 0x70,
+  0xd1, 0x2d, 0xe1, 0x2b, 0x32, 0xb4, 0xe4, 0x01, 0xe1, 0x6b, 0x01, 0x89,
+  0x6d, 0x31, 0xbf, 0x2c, 0x92, 0x91, 0x60, 0x35, 0xf2, 0xc5, 0x98, 0xd6,
+  0x98, 0x6e, 0x93, 0x6f, 0x10, 0x98, 0x27, 0xc9, 0xbe, 0xca, 0xad, 0x95,
+  0x92, 0x9c, 0xb7, 0x80, 0xa3, 0x03, 0x4b, 0x64, 0x8b, 0x29, 0xca, 0xc8,
+  0xb3, 0x7c, 0x16, 0x73, 0xdb, 0x9e, 0x48, 0x76, 0x2f, 0x9e, 0x2d, 0x5c,
+  0xd3, 0x30, 0x69, 0xb3, 0x37, 0x3e, 0x4e, 0x94, 0xf0, 0x2c, 0x31, 0x49,
+  0xa8, 0x01, 0xd0, 0x70, 0x03, 0xac, 0x52, 0x60, 0xc0, 0x77, 0x27, 0x30,
+  0xca, 0x09, 0xe1, 0xf4, 0xa7, 0xb3, 0x61, 0x71, 0x17, 0x16, 0xb6, 0xef,
+  0xc5, 0x42, 0x3f, 0xea, 0xcd, 0x20, 0x1c, 0x3f, 0x78, 0x2d, 0x08, 0xdb,
+  0x70, 0xaf, 0x8f, 0xd5, 0x37, 0x83, 0x7f, 0x9a, 0x19, 0xa8, 0x10, 0xd7,
+  0x56, 0x10, 0x4b, 0x0c, 0x66, 0x1a, 0xa1, 0xcf, 0x13, 0x4a, 0x60, 0x7d,
+  0x4f, 0x15, 0xd3, 0x04, 0x63, 0xae, 0xfc, 0x75, 0x62, 0x06, 0x62, 0xec,
+  0xd1, 0x84, 0xd6, 0xf6, 0x61, 0xb7, 0x0e, 0xc5, 0x50, 0x20, 0x88, 0x98,
+  0x3a, 0x4b, 0x02, 0xe5, 0x06, 0xc9, 0x65, 0x51, 0xb9, 0x80, 0xce, 0xc6,
+  0xc2, 0x34, 0x48, 0x05, 0x43, 0x50, 0xca, 0xef, 0x8d, 0x17, 0x15, 0x52,
+  0x76, 0x1b, 0x94, 0x6f, 0x93, 0xbd, 0xad, 0x57, 0x89, 0x7d, 0x65, 0x21,
+  0x76, 0x9c, 0xcf, 0xfa, 0x7c, 0x0b, 0x58, 0xf5, 0x7c, 0x7f, 0x8d, 0xdc,
+  0x55, 0x21, 0xf2, 0x6e, 0x83, 0x45, 0xc9, 0x19, 0x18, 0x66, 0xf3, 0xab,
+  0xd4, 0x45, 0x2e, 0x8b, 0xf7, 0xba, 0xfc, 0xd6, 0xf5, 0x9e, 0x77, 0x81,
+  0xf5, 0x4f, 0xeb, 0xc2, 0xb9, 0xfa, 0xa6, 0x60, 0xab, 0x40, 0x12, 0x56,
+  0x78, 0x5f, 0xcb, 0x08, 0xae, 0xf7, 0xba, 0x92, 0xb9, 0x95, 0x14, 0xe1,
+  0xe0, 0x55, 0xc1, 0x07, 0xad, 0x29, 0x98, 0xc8, 0xa2, 0x8a, 0xc5, 0x50,
+  0x4f, 0x90, 0x90, 0x76, 0x8f, 0x1b, 0x8c, 0xa8, 0xd2, 0xd8, 0x28, 0xf5,
+  0x0e, 0x8a, 0xc3, 0x25, 0xcd, 0x14, 0x09, 0xd3, 0x07, 0x43, 0x20, 0x9f,
+  0xec, 0x3e, 0x7d, 0xb2, 0xb5, 0x4a, 0x58, 0x81, 0xc6, 0x3f, 0x41, 0xa8,
+  0x29, 0xb5, 0xbb, 0xde, 0xbd, 0x82, 0x4f, 0x63, 0x29, 0x15, 0xde, 0x21,
+  0xfc, 0x6b, 0xaf, 0xe7, 0xee, 0x4b, 0xa4, 0xdc, 0xa7, 0xb4, 0x70, 0xcf,
+  0x1e, 0x44, 0xc3, 0x6c, 0x84, 0x47, 0x88, 0x16, 0x59, 0xcd, 0x16, 0x78,
+  0xb6, 0x06, 0x8b, 0x6c, 0x42, 0x90, 0x12, 0xca, 0x3c, 0x89, 0x71, 0x36,
+  0x98, 0xd6, 0xd4, 0x8f, 0xe5, 0x6d, 0x38, 0x13, 0xa9, 0x0c, 0xe2, 0xbe,
+  0x8e, 0x88, 0x2d, 0x77, 0xf1, 0x2e, 0xc1, 0xfe, 0x54, 0x93, 0xf2, 0x7a,
+  0x57, 0xeb, 0xce, 0xf1, 0x5f, 0xbd, 0xdd, 0x00, 0xf4, 0xb8, 0x7e, 0xb7,
+  0xe7, 0xd0, 0x9e, 0x6d, 0xf1, 0xc3, 0x69, 0x6f, 0x7f, 0x05, 0xed, 0xad,
+  0x4b, 0x7a, 0xfb, 0x11, 0x43, 0x6a, 0xaf, 0x4b, 0x7b, 0x4f, 0x1f, 0x3f,
+  0xf9, 0x72, 0x35, 0xed, 0xed, 0x7f, 0x22, 0xda, 0xdb, 0xbf, 0x2f, 0xed,
+  0x99, 0x82, 0x82, 0x4a, 0x7d, 0x0d, 0xf2, 0x73, 0x36, 0xdb, 0x50, 0x9f,
+  0x62, 0x33, 0xb4, 0xd3, 0xde, 0xda, 0xa4, 0xd7, 0x4e, 0x7b, 0x0e, 0xf1,
+  0x91, 0x00, 0xe1, 0x1e, 0x08, 0x25, 0x3f, 0xa5, 0x3e, 0x97, 0xbe, 0xee,
+  0x4b, 0x7b, 0x9a, 0x5f, 0x79, 0x88, 0x32, 0xdd, 0x37, 0x1e, 0xf4, 0xb2,
+  0xe0, 0xa9, 0x22, 0xe4, 0x0e, 0x82, 0xc7, 0xb2, 0x6c, 0x24, 0xaf, 0x78,
+  0x90, 0xf9, 0x52, 0x58, 0x8e, 0x44, 0x2d, 0xb2, 0x58, 0x07, 0xbc, 0xd3,
+  0xb6, 0xb0, 0x28, 0xb9, 0x30, 0xe6, 0x13, 0xbc, 0x1c, 0x36, 0xe2, 0x0d,
+  0x0d, 0x6c, 0x50, 0x49, 0xcd, 0x81, 0xaa, 0xe5, 0xb4, 0xdc, 0xcf, 0x9f,
+  0xfb, 0xcd, 0xee, 0x11, 0x9e, 0xfb, 0xe7, 0x4b, 0x3e, 0xe3, 0xfe, 0x05,
+  0x4d, 0xb8, 0xba, 0xad, 0x1e, 0x9e, 0x5d, 0xcb, 0x34, 0xe1, 0xa4, 0x74,
+  0xd7, 0xc9, 0xe2, 0x0e, 0x04, 0x38, 0xa9, 0xa9, 0x19, 0x84, 0xc9, 0x10,
+  0x53, 0x83, 0x31, 0x09, 0xeb, 0x0a, 0x0e, 0xb0, 0x02, 0xe2, 0x18, 0x44,
+  0xce, 0x88, 0xda, 0x10, 0x3d, 0x0d, 0xf7, 0x13, 0x8f, 0x06, 0x3a, 0xf9,
+  0x83, 0x95, 0x38, 0xcb, 0x66, 0x3a, 0x76, 0x4f, 0x22, 0x39, 0x51, 0x64,
+  0x70, 0x07, 0x43, 0xc7, 0xa0, 0x04, 0x79, 0x62, 0xc8, 0x60, 0x43, 0xd3,
+  0x40, 0x65, 0xe3, 0xff, 0x2c, 0x9c, 0x80, 0xda, 0xe8, 0x3f, 0x7a, 0x5c,
+  0xa8, 0xdb, 0xfa, 0xda, 0xbc, 0xb2, 0x36, 0xb4, 0xf8, 0xe5, 0x7a, 0xc4,
+  0xf4, 0xb2, 0xab, 0xf5, 0xa3, 0x88, 0x92, 0x5c, 0xda, 0xaa, 0x83, 0xaf,
+  0x34, 0xf1, 0x42, 0x80, 0x13, 0x52, 0x0a, 0xb7, 0xfa, 0x25, 0x85, 0x02,
+  0x82, 0x50, 0x62, 0x62, 0x76, 0xad, 0x16, 0x64, 0xce, 0xd7, 0x50, 0x96,
+  0x84, 0x3c, 0x6c, 0x08, 0xc7, 0x7a, 0x72, 0x6c, 0x6a, 0x86, 0xd1, 0x25,
+  0x8e, 0x18, 0x81, 0x0c, 0x1e, 0x1d, 0x46, 0x8a, 0xe6, 0x50, 0x15, 0xfb,
+  0xa6, 0x40, 0xbc, 0xc8, 0x10, 0x02, 0x9c, 0x39, 0x95, 0x4a, 0x5c, 0xfe,
+  0xf1, 0x15, 0xf4, 0x56, 0xd9, 0x8b, 0xd1, 0x62, 0x3a, 0x97, 0x99, 0x48,
+  0x49, 0x0d, 0x81, 0x1b, 0x66, 0x28, 0xb1, 0xa4, 0x70, 0xa2, 0x79, 0xae,
+  0xf2, 0x1b, 0x3f, 0x59, 0x9b, 0x03, 0x85, 0xf4, 0x34, 0x88, 0x35, 0x5f,
+  0x61, 0xc3, 0x5f, 0x56, 0xf5, 0x02, 0x9a, 0x1c, 0x62, 0x3a, 0x4a, 0x07,
+  0x0b, 0x44, 0x26, 0x0a, 0x6a, 0x6b, 0x16, 0xc2, 0xd8, 0x1e, 0x79, 0x1a,
+  0x18, 0xd6, 0xa6, 0x4e, 0xbb, 0x0c, 0x00, 0x77, 0x87, 0xa2, 0x42, 0x95,
+  0x81, 0xe6, 0x30, 0x5c, 0x11, 0xdd, 0xdc, 0xb2, 0x69, 0x1f, 0xdb, 0xd0,
+  0xd1, 0xd2, 0xcd, 0xda, 0x94, 0xdd, 0x36, 0x5c, 0xbb, 0x2f, 0xf1, 0xad,
+  0x10, 0xc3, 0x5a, 0x44, 0xff, 0xac, 0x5b, 0xdf, 0x6b, 0xf8, 0x33, 0xeb,
+  0x3a, 0xad, 0xd2, 0x51, 0x98, 0x77, 0xeb, 0x74, 0xdb, 0x3c, 0xcf, 0x6e,
+  0xd0, 0x74, 0xc3, 0x60, 0x5c, 0x0d, 0xe7, 0xf1, 0x18, 0xae, 0x8f, 0x7c,
+  0xee, 0xa1, 0x66, 0x0b, 0x3c, 0x91, 0x70, 0x9f, 0x8b, 0xe3, 0xf3, 0xe8,
+  0x39, 0xde, 0x33, 0xa8, 0x1b, 0x47, 0x9b, 0x20, 0x74, 0x3d, 0x7d, 0xb4,
+  0xbb, 0xbf, 0xb5, 0x5c, 0x9d, 0x73, 0x5b, 0x6f, 0xa9, 0xf2, 0xfb, 0x70,
+  0x43, 0xbc, 0xdb, 0xf8, 0xba, 0xfb, 0x55, 0x1b, 0xd8, 0x7a, 0x8a, 0xc3,
+  0x18, 0x7e, 0xa6, 0x31, 0x49, 0xbc, 0x75, 0x53, 0xfc, 0x57, 0xfe, 0xca,
+  0xce, 0xf2, 0x10, 0xf0, 0xde, 0xc5, 0xa2, 0x98, 0x69, 0xc9, 0x6f, 0x58,
+  0xd6, 0x77, 0xaf, 0xcf, 0x9e, 0x9d, 0x9c, 0x1e, 0xfd, 0xdd, 0x58, 0x96,
+  0xb0, 0x33, 0xad, 0x38, 0xf5, 0x2e, 0x4d, 0xca, 0xbb, 0x77, 0x70, 0xb7,
+  0xc3, 0x97, 0x9b, 0xfb, 0x5b, 0x54, 0x6e, 0xd0, 0x03, 0xe0, 0xbf, 0x4c,
+  0x6b, 0x35, 0x20, 0x05, 0x05, 0xd1, 0xa9, 0x8c, 0x18, 0x8e, 0x03, 0x44,
+  0x72, 0xd8, 0xe9, 0x81, 0x84, 0x27, 0xe8, 0x38, 0x18, 0x01, 0xe5, 0xfa,
+  0x6e, 0x9c, 0x32, 0x13, 0x48, 0x66, 0x77, 0xb6, 0xa0, 0x9f, 0x57, 0x51,
+  0x80, 0x4d, 0xdf, 0xe8, 0x17, 0xe5, 0x9b, 0x12, 0xd1, 0x15, 0xc7, 0x63,
+  0xad, 0xd7, 0x24, 0xe8, 0xfa, 0x04, 0x67, 0x4e, 0xb8, 0x8b, 0x4b, 0x8f,
+  0xbe, 0xb3, 0x70, 0xed, 0x85, 0xa1, 0x1f, 0x7c, 0x81, 0x39, 0xad, 0x3f,
+  0x84, 0x68, 0x74, 0x60, 0x6b, 0xd1, 0xcc, 0xeb, 0x2e, 0xf7, 0x3d, 0x58,
+  0x8c, 0x6b, 0x35, 0x8d, 0xe3, 0x8a, 0xa4, 0xe9, 0x74, 0x32, 0x4b, 0x2b,
+  0xc1, 0x11, 0x8b, 0x0e, 0xe1, 0xe7, 0xd7, 0x20, 0xc6, 0x79, 0x95, 0xce,
+  0x92, 0x52, 0x37, 0xc6, 0x91, 0x5d, 0xf0, 0x4d, 0xc3, 0xcc, 0x7b, 0x5a,
+  0x5b, 0x26, 0x1d, 0x99, 0x27, 0xe1, 0x1e, 0x38, 0xf0, 0xc4, 0x93, 0x8b,
+  0xbf, 0x9f, 0x9f, 0x7c, 0x7d, 0x88, 0x92, 0xcf, 0x37, 0x88, 0x21, 0x5a,
+  0xd6, 0x04, 0x21, 0x02, 0x0c, 0xf1, 0x96, 0xe6, 0xc7, 0x67, 0x2f, 0xfb,
+  0xe7, 0xa7, 0x67, 0xc7, 0x5f, 0x1f, 0xfe, 0x88, 0x16, 0x6e, 0x10, 0xa4,
+  0xef, 0x9c, 0x77, 0xcd, 0x67, 0x91, 0x96, 0x52, 0xf4, 0x8b, 0x78, 0x9e,
+  0xfc, 0xf0, 0xee, 0xe4, 0xf5, 0xdf, 0xbe, 0x3e, 0xbc, 0x4e, 0x8a, 0x2e,
+  0xce, 0x8f, 0xdf, 0x46, 0x34, 0xa6, 0xd9, 0x75, 0x56, 0xe4, 0x33, 0x0c,
+  0xe9, 0x00, 0xf9, 0xb5, 0xc8, 0x70, 0xe7, 0x02, 0xd5, 0x68, 0xea, 0xcb,
+  0xf4, 0xc9, 0x6a, 0xd2, 0x54, 0xb2, 0x3c, 0xd7, 0xd5, 0xee, 0xce, 0x8e,
+  0xac, 0xf0, 0xbd, 0x0d, 0x41, 0x7f, 0xe9, 0x72, 0xf8, 0xd3, 0x38, 0xbb,
+  0xec, 0x39, 0x9c, 0x00, 0xed, 0x6a, 0x83, 0xc9, 0xfb, 0x32, 0xfb, 0x2d,
+  0x8d, 0x0e, 0x49, 0x44, 0xf7, 0xaa, 0xda, 0x5e, 0x70, 0x1d, 0x47, 0xd8,
+  0x4d, 0xfc, 0x2d, 0xfa, 0xee, 0xf4, 0x2f, 0xfd, 0x97, 0xff, 0x7d, 0x62,
+  0x62, 0x50, 0xa7, 0x0b, 0x2c, 0x5f, 0x96, 0x46, 0xdf, 0x3c, 0xde, 0xdd,
+  0xdb, 0x12, 0xa9, 0x41, 0xaa, 0xc9, 0x0c, 0x26, 0x18, 0xec, 0xdc, 0x30,
+  0x68, 0x62, 0x4f, 0xa4, 0x38, 0x36, 0x6b, 0x41, 0xd9, 0x9a, 0xb8, 0x1a,
+  0x30, 0x46, 0x80, 0x8c, 0x04, 0x66, 0x04, 0xdf, 0x02, 0x17, 0x41, 0xa8,
+  0x42, 0x2f, 0x30, 0x97, 0x06, 0xa5, 0xf1, 0x11, 0x4e, 0x29, 0x0a, 0x18,
+  0x8e, 0x84, 0xdb, 0x2d, 0x0d, 0xbf, 0xe2, 0x40, 0xd7, 0xda, 0x3a, 0x7c,
+  0x2e, 0xcc, 0xbf, 0xda, 0x20, 0x76, 0x77, 0xf6, 0x1e, 0x45, 0x95, 0x5f,
+  0xbf, 0x10, 0xd5, 0xc6, 0x25, 0x57, 0x00, 0xb5, 0x01, 0xe7, 0xd9, 0x2b,
+  0xf8, 0xea, 0x7d, 0x15, 0xde, 0x66, 0x27, 0x43, 0x9d, 0xb0, 0x98, 0x73,
+  0x2a, 0xbc, 0xc3, 0x8b, 0xac, 0x07, 0x57, 0x2b, 0x0d, 0x2e, 0x57, 0x2e,
+  0xa6, 0xb8, 0x86, 0x44, 0xf4, 0x14, 0x52, 0xe5, 0x04, 0x4c, 0x4d, 0xd2,
+  0x4b, 0x8c, 0xb2, 0x90, 0x4d, 0x2b, 0x6d, 0xf9, 0xea, 0x00, 0x20, 0x76,
+  0x94, 0x0c, 0xd1, 0x0a, 0x4c, 0x55, 0x89, 0x18, 0xe0, 0x91, 0xeb, 0xbf,
+  0x02, 0x3f, 0x37, 0xd1, 0x56, 0xb5, 0xd1, 0x49, 0xe9, 0x8d, 0xf6, 0x0a,
+  0x45, 0x2a, 0x38, 0xfb, 0x9b, 0xae, 0xe6, 0x9e, 0xa5, 0x37, 0x40, 0x7d,
+  0x11, 0xef, 0xe5, 0xdb, 0x5c, 0xe3, 0x06, 0x68, 0xdb, 0xbd, 0x35, 0x08,
+  0xc8, 0x19, 0x9c, 0x90, 0xcf, 0xee, 0x57, 0x7b, 0xbd, 0xdd, 0x27, 0x5f,
+  0x62, 0xd1, 0xaa, 0xed, 0x55, 0xa4, 0x23, 0xcb, 0x51, 0x17, 0x1f, 0xbe,
+  0xac, 0x89, 0x0f, 0xbf, 0xd1, 0xcd, 0x00, 0xd3, 0x8d, 0x29, 0x82, 0xf5,
+  0x10, 0x7f, 0x0d, 0x96, 0xc2, 0xa6, 0x80, 0x73, 0xf6, 0xe3, 0x53, 0x68,
+  0x0f, 0x9b, 0x3c, 0x68, 0xb3, 0x0d, 0x8e, 0xe7, 0x34, 0x1f, 0xb1, 0x82,
+  0x89, 0xb5, 0x9a, 0x4d, 0x08, 0x75, 0xf3, 0x54, 0x39, 0x00, 0xe5, 0xa4,
+  0xaa, 0xc2, 0xb3, 0x24, 0xb5, 0x23, 0x54, 0x6e, 0x4b, 0x7b, 0xa6, 0x36,
+  0x41, 0x20, 0x82, 0x48, 0x50, 0xc9, 0x31, 0x1b, 0xf3, 0x10, 0xdb, 0x42,
+  0x29, 0x01, 0x45, 0x64, 0x58, 0xb4, 0x6f, 0x94, 0x7d, 0x27, 0x6e, 0xc1,
+  0xe6, 0x11, 0xc7, 0x0f, 0x21, 0x3f, 0x2a, 0xfd, 0x62, 0xaa, 0x8c, 0xcb,
+  0xd7, 0xc8, 0xc7, 0x45, 0x85, 0x82, 0x48, 0x1f, 0xef, 0x2d, 0x18, 0x67,
+  0xa9, 0x76, 0x1d, 0x04, 0x61, 0x27, 0xa7, 0x06, 0xba, 0xc0, 0x70, 0x45,
+  0x82, 0xe9, 0x5e, 0x9c, 0x42, 0x40, 0x68, 0xce, 0x70, 0x06, 0x2f, 0x25,
+  0xd9, 0x8f, 0x67, 0x27, 0x8e, 0x59, 0x1a, 0xd4, 0xe6, 0x14, 0x27, 0xb3,
+  0xc5, 0x28, 0xae, 0x41, 0xd3, 0x95, 0x31, 0x43, 0xd5, 0x64, 0x37, 0x68,
+  0x11, 0xdf, 0x47, 0xb9, 0x0d, 0x6e, 0x23, 0x12, 0xd4, 0xd8, 0xfb, 0xcb,
+  0xcd, 0x3a, 0x2b, 0xe2, 0x21, 0x3d, 0x57, 0x41, 0x00, 0xc2, 0x3e, 0x4a,
+  0x9d, 0x8a, 0x3e, 0xe7, 0xae, 0xa8, 0xd6, 0x78, 0x18, 0x61, 0x1d, 0xfb,
+  0xcd, 0x78, 0xcb, 0x14, 0x55, 0x24, 0xb8, 0x69, 0x26, 0x0d, 0x3f, 0xa9,
+  0x06, 0x9e, 0xcf, 0x87, 0x8b, 0x29, 0x17, 0x26, 0x4d, 0x68, 0xe1, 0x38,
+  0xce, 0x52, 0x29, 0x44, 0x68, 0x02, 0x3b, 0xdb, 0xe6, 0xc0, 0x6e, 0x65,
+  0xfc, 0x94, 0xbc, 0xe8, 0x15, 0x0f, 0x6e, 0x34, 0x36, 0x4b, 0x6f, 0xdc,
+  0xc6, 0xac, 0xa1, 0xc3, 0x34, 0xd8, 0x76, 0x53, 0x18, 0xc2, 0xbf, 0x7f,
+  0x36, 0xd8, 0x83, 0x6f, 0x8a, 0xb6, 0x8a, 0xb8, 0xbf, 0x45, 0x9d, 0x1f,
+  0xa0, 0xcf, 0x9d, 0x5d, 0xd8, 0xd4, 0x79, 0xb4, 0xb7, 0xb3, 0xb7, 0x1b,
+  0xed, 0xee, 0x1d, 0xec, 0x7e, 0x79, 0xb0, 0xb3, 0xb3, 0x46, 0x8d, 0x5c,
+  0x68, 0x25, 0xfe, 0x28, 0xcd, 0xd0, 0xb9, 0x5e, 0x4f, 0x55, 0x01, 0x2a,
+  0xba, 0x8c, 0xa9, 0x8e, 0x99, 0xba, 0xa2, 0xde, 0x74, 0x09, 0xef, 0x79,
+  0x9a, 0x57, 0xa9, 0x07, 0xf6, 0x5c, 0x4d, 0x4a, 0x0c, 0xd0, 0x8f, 0x0e,
+  0xff, 0x76, 0xf2, 0xa6, 0xff, 0xf2, 0xec, 0xf5, 0x37, 0x41, 0xf7, 0x80,
+  0x7c, 0x89, 0x84, 0x00, 0xb2, 0x95, 0xad, 0x4c, 0x60, 0x7d, 0xa8, 0xe8,
+  0x98, 0x56, 0x67, 0x1f, 0xd7, 0xf4, 0xce, 0x66, 0xf8, 0x88, 0x5f, 0x00,
+  0x3b, 0x9d, 0x57, 0x8c, 0x3d, 0xae, 0xae, 0x5a, 0xda, 0x6d, 0x32, 0x64,
+  0x92, 0x8b, 0x95, 0xcc, 0xc7, 0x3b, 0x5d, 0xfd, 0x6d, 0xd7, 0xfc, 0xb6,
+  0xe7, 0xf3, 0x07, 0xfe, 0x62, 0x3f, 0x44, 0x50, 0x4d, 0x6f, 0x6a, 0xc9,
+  0x55, 0x29, 0xf0, 0xc8, 0xa0, 0xa2, 0x04, 0xe3, 0xed, 0xd6, 0xf4, 0x1e,
+  0x47, 0xc9, 0x68, 0x89, 0x1e, 0x64, 0xf9, 0x8b, 0x55, 0xf0, 0x32, 0xfa,
+  0xeb, 0xdb, 0x97, 0xc7, 0x31, 0x07, 0x01, 0x10, 0x4b, 0xde, 0x86, 0xf3,
+  0x6e, 0xc2, 0xf1, 0xbd, 0x01, 0x85, 0x93, 0xce, 0x9d, 0x6c, 0xbf, 0xc5,
+  0x9c, 0x11, 0xec, 0x51, 0x86, 0xe5, 0xe2, 0x7d, 0xee, 0x8a, 0x36, 0x9b,
+  0xc3, 0x38, 0xee, 0xda, 0x8b, 0xf0, 0xf0, 0x35, 0x59, 0xc0, 0x9a, 0xcf,
+  0xed, 0x86, 0x9e, 0xdb, 0xf5, 0x9f, 0xdb, 0x0b, 0x3d, 0xb7, 0xe7, 0x3f,
+  0xb7, 0x1f, 0x7a, 0xce, 0xd9, 0x00, 0x39, 0xca, 0x42, 0x55, 0x6b, 0xd4,
+  0x8e, 0x08, 0xc3, 0xa2, 0xd7, 0x8f, 0xb0, 0x7f, 0x76, 0xf5, 0x7a, 0x96,
+  0xfe, 0x70, 0x1e, 0xcb, 0x4e, 0x97, 0xf7, 0xf8, 0xbe, 0x75, 0x58, 0x2c,
+  0x3d, 0x66, 0xee, 0x65, 0xae, 0x04, 0x6a, 0xdc, 0x20, 0x5d, 0xa7, 0x11,
+  0xd7, 0x07, 0xb2, 0xdf, 0xab, 0xad, 0x85, 0x83, 0x56, 0xe6, 0xf9, 0x18,
+  0xd7, 0xf3, 0xec, 0xa8, 0x04, 0xa1, 0xcd, 0x05, 0x2c, 0x3c, 0x93, 0x72,
+  0x77, 0x5f, 0x5d, 0xd0, 0xd1, 0xa1, 0xfc, 0xb2, 0xc8, 0x2a, 0x2e, 0xf1,
+  0xee, 0x6b, 0x22, 0xa7, 0x7d, 0xb7, 0x04, 0x3a, 0x9b, 0x13, 0xf9, 0xad,
+  0x88, 0x5e, 0x2b, 0x6d, 0x01, 0xf4, 0xe6, 0xd1, 0xf2, 0x8b, 0xfe, 0x62,
+  0xa2, 0xbb, 0x41, 0xff, 0x85, 0x69, 0x22, 0x29, 0xd3, 0x72, 0x5c, 0x5c,
+  0x71, 0xff, 0x78, 0xf3, 0xeb, 0xe0, 0xa4, 0x79, 0x52, 0x76, 0x24, 0x05,
+  0xd1, 0xcf, 0xf1, 0xcd, 0x46, 0xfa, 0x3c, 0xc6, 0xba, 0x24, 0x23, 0x24,
+  0x3f, 0xe8, 0x5a, 0x1a, 0xae, 0x8d, 0xd4, 0x58, 0x44, 0x04, 0x4c, 0xdd,
+  0x93, 0x56, 0xdf, 0xbe, 0x39, 0xf5, 0xb4, 0x63, 0xb3, 0xf9, 0xb8, 0xf2,
+  0xbd, 0x32, 0xdd, 0x86, 0x6b, 0xad, 0xdc, 0xa6, 0xc0, 0x16, 0xe9, 0xf6,
+  0xaa, 0x9a, 0x4e, 0x56, 0x16, 0xfa, 0x44, 0x02, 0xc3, 0x48, 0x97, 0xc9,
+  0x9d, 0x18, 0x6e, 0x29, 0x6c, 0xdc, 0x96, 0x0b, 0xc9, 0x9c, 0x1d, 0xf5,
+  0x51, 0xa2, 0xd1, 0xc8, 0x86, 0xe1, 0xb2, 0x78, 0x40, 0x77, 0x51, 0x08,
+  0x23, 0xc9, 0xcd, 0x14, 0x86, 0x63, 0xeb, 0x2e, 0xe7, 0x30, 0xd9, 0x98,
+  0x1a, 0x7c, 0x41, 0xc2, 0x4e, 0x02, 0xa5, 0x1e, 0xa8, 0x72, 0x35, 0xe8,
+  0x80, 0xa5, 0x14, 0x0d, 0x09, 0x2d, 0x58, 0xe9, 0xc6, 0xe0, 0xa6, 0x36,
+  0x72, 0x21, 0x28, 0xe4, 0x87, 0x3d, 0x56, 0x75, 0x72, 0xfb, 0x6c, 0x5a,
+  0x5e, 0x6d, 0x14, 0x30, 0xd5, 0x77, 0x47, 0x27, 0xfd, 0x77, 0xbb, 0x7b,
+  0x5f, 0xbe, 0xfb, 0xfe, 0xf8, 0xd5, 0xbb, 0xfe, 0x8b, 0xa3, 0xbd, 0xc7,
+  0xeb, 0x22, 0x50, 0x68, 0x63, 0x12, 0xd2, 0xb1, 0x00, 0xb5, 0xaa, 0x5c,
+  0xea, 0x77, 0x80, 0x31, 0x60, 0xcc, 0x3c, 0xe1, 0xaf, 0x1e, 0xe2, 0xbf,
+  0xdf, 0xf8, 0xe5, 0x5b, 0xf8, 0x40, 0x78, 0x40, 0x20, 0x68, 0x81, 0x41,
+  0x14, 0x62, 0x26, 0x20, 0x5e, 0xab, 0x46, 0xda, 0x41, 0x4b, 0x7e, 0x02,
+  0x91, 0x5e, 0xa7, 0xff, 0xe6, 0xbc, 0xd3, 0x95, 0x58, 0x5e, 0xe8, 0x20,
+  0x86, 0xbf, 0x23, 0xb2, 0xd9, 0x46, 0xd1, 0xe3, 0x9d, 0xc7, 0x8f, 0xb6,
+  0x7a, 0x0e, 0x77, 0x26, 0xc8, 0xff, 0x40, 0x34, 0x36, 0x7d, 0x69, 0xa0,
+  0x4a, 0x88, 0xe4, 0x9c, 0x12, 0x0a, 0xe8, 0xbf, 0xa9, 0xcd, 0x90, 0x33,
+  0x84, 0xba, 0x9c, 0x91, 0xdb, 0xae, 0x18, 0xca, 0xed, 0x47, 0x3c, 0x84,
+  0x86, 0x59, 0x77, 0x81, 0x60, 0xd6, 0x90, 0x64, 0x58, 0x48, 0xd0, 0x93,
+  0x70, 0xc3, 0x60, 0x60, 0x8b, 0xb2, 0x47, 0x9a, 0x34, 0x9f, 0x26, 0xa9,
+  0x0a, 0x62, 0x26, 0x2d, 0x0b, 0xd6, 0x8d, 0x84, 0x91, 0xa9, 0x5b, 0xbd,
+  0xe5, 0xbc, 0xc1, 0x82, 0x7d, 0x3f, 0x5b, 0xe0, 0x9e, 0x50, 0x3b, 0xda,
+  0x8c, 0xb4, 0xd2, 0x4a, 0xf1, 0xee, 0x2a, 0x7c, 0xa6, 0x7c, 0x4e, 0x77,
+  0x14, 0x38, 0xe4, 0xf5, 0x88, 0x5b, 0xe8, 0xa0, 0x41, 0xbe, 0x66, 0xf7,
+  0x0f, 0x59, 0x2d, 0x0b, 0x12, 0xb0, 0x25, 0x11, 0x24, 0x37, 0x32, 0x2f,
+  0x71, 0xfd, 0xd3, 0x94, 0x68, 0xbb, 0x41, 0xda, 0xd3, 0x14, 0x84, 0xae,
+  0x51, 0x3b, 0xbe, 0xb1, 0xea, 0xe9, 0xce, 0x74, 0x7a, 0x1a, 0xa4, 0x2e,
+  0xb1, 0x10, 0x96, 0x6a, 0x69, 0xf0, 0xe8, 0x41, 0x4d, 0x97, 0xfb, 0xeb,
+  0x03, 0xc9, 0xda, 0x7a, 0x0f, 0xb5, 0xed, 0xa8, 0x99, 0xd5, 0x67, 0xdd,
+  0x51, 0x33, 0x8a, 0xf9, 0xcd, 0xc8, 0x99, 0x37, 0x57, 0xe9, 0xf8, 0x08,
+  0x1b, 0x4c, 0x0d, 0x05, 0xd1, 0xc7, 0x68, 0x6b, 0x15, 0xb1, 0xe8, 0xdf,
+  0xb1, 0xb5, 0x22, 0x00, 0x35, 0xb9, 0x0e, 0xc5, 0xcb, 0x78, 0xcc, 0xe4,
+  0xe3, 0x6e, 0xb8, 0xb3, 0x16, 0x9f, 0x29, 0x07, 0xff, 0x63, 0x6f, 0xb5,
+  0x36, 0xd6, 0xd8, 0x6e, 0x14, 0x56, 0x83, 0xe2, 0xde, 0x73, 0x04, 0xa8,
+  0xaa, 0x63, 0x66, 0x3a, 0x3a, 0x07, 0xe9, 0x18, 0x2a, 0x83, 0x48, 0xe5,
+  0xc9, 0x25, 0x60, 0x99, 0x14, 0xce, 0xcc, 0x3a, 0x26, 0xb5, 0x22, 0x66,
+  0xe3, 0x2f, 0x02, 0xc5, 0x50, 0x31, 0x76, 0x43, 0x7b, 0x41, 0xf1, 0x69,
+  0x6c, 0x40, 0xc1, 0x1a, 0xd1, 0xaa, 0x6a, 0x5a, 0x90, 0xca, 0x36, 0x98,
+  0x74, 0xd8, 0x68, 0xee, 0x1d, 0x5e, 0x1a, 0xef, 0x64, 0x9b, 0x77, 0x34,
+  0x84, 0xd5, 0xe4, 0xcd, 0x61, 0x23, 0xa0, 0xb0, 0x61, 0x0c, 0x59, 0x89,
+  0xb8, 0xfc, 0x4e, 0xa5, 0x9d, 0x3c, 0x64, 0x0c, 0xc3, 0x76, 0xe0, 0x7a,
+  0xc1, 0x1c, 0x3d, 0x8d, 0x0c, 0x51, 0xe9, 0x3d, 0xab, 0x17, 0xe7, 0x45,
+  0x72, 0x48, 0x8c, 0x1a, 0x2c, 0xcb, 0xe6, 0x97, 0x0c, 0x5e, 0xe5, 0xf4,
+  0xe2, 0xdd, 0xf9, 0x04, 0x01, 0x6a, 0xda, 0xf2, 0xda, 0x44, 0xc4, 0x6a,
+  0x8b, 0x5b, 0x88, 0xc5, 0xd7, 0x2c, 0x02, 0xa1, 0x5f, 0xf7, 0xa4, 0xa8,
+  0xdd, 0xff, 0x5d, 0x14, 0xb5, 0xfb, 0xbf, 0x94, 0xa2, 0x76, 0x3f, 0x19,
+  0x45, 0xed, 0x3e, 0x8c, 0xa2, 0xac, 0x5a, 0x8c, 0x53, 0xbf, 0x07, 0x7d,
+  0xed, 0x3d, 0x8c, 0xbe, 0xf6, 0xfe, 0x77, 0xd1, 0xd7, 0xde, 0xff, 0x52,
+  0xfa, 0xda, 0xfb, 0x64, 0xf4, 0xb5, 0xf7, 0x6f, 0xa2, 0xaf, 0xfd, 0x87,
+  0xd1, 0xd7, 0xfe, 0x27, 0xa0, 0xaf, 0x71, 0x28, 0x9d, 0x72, 0x95, 0xb5,
+  0xd2, 0xc4, 0x69, 0x7d, 0x7c, 0x53, 0xe5, 0x6b, 0x93, 0xa3, 0xa2, 0xc6,
+  0x02, 0x05, 0x08, 0x73, 0x13, 0x66, 0xd0, 0x89, 0x83, 0xdf, 0x8b, 0xe9,
+  0xa1, 0xec, 0xad, 0x24, 0x9a, 0xfd, 0x4f, 0x46, 0x34, 0xfb, 0x0f, 0x22,
+  0x9a, 0xbd, 0x25, 0x44, 0xd3, 0xa8, 0xea, 0x6d, 0x2d, 0x7c, 0xe1, 0xe0,
+  0x79, 0x0f, 0x7b, 0x3c, 0xc1, 0x5c, 0x27, 0x14, 0x1b, 0xeb, 0xe4, 0x73,
+  0x2b, 0x54, 0xa3, 0xb6, 0xb1, 0xa0, 0x7e, 0xcb, 0xba, 0x6c, 0x12, 0x29,
+  0xed, 0xb0, 0xb1, 0xc0, 0xc2, 0x14, 0x40, 0xdb, 0x5c, 0x96, 0xd5, 0x17,
+  0xd6, 0x9a, 0x41, 0xaf, 0xd9, 0x25, 0x16, 0x7c, 0x5f, 0xb5, 0x33, 0x9f,
+  0x6a, 0x5f, 0x3e, 0x4a, 0x6e, 0x86, 0x13, 0x7a, 0xfe, 0x1f, 0x92, 0x9b,
+  0x61, 0x6e, 0xc2, 0x5a, 0xb8, 0x7b, 0xc3, 0xf0, 0xeb, 0x32, 0x9c, 0x22,
+  0x4e, 0x81, 0xa3, 0xe3, 0x8a, 0x87, 0x5c, 0xb9, 0xae, 0x17, 0x17, 0xbd,
+  0x36, 0xe8, 0xdb, 0x43, 0xeb, 0xbf, 0x9c, 0xcf, 0xf8, 0x44, 0xde, 0xb5,
+  0x61, 0xa4, 0x7c, 0x92, 0xfd, 0x3a, 0xb6, 0xb9, 0x72, 0x12, 0x53, 0xb8,
+  0x55, 0x2b, 0xa0, 0x09, 0xac, 0x43, 0x57, 0x40, 0x17, 0xb4, 0x1b, 0x5b,
+  0xd1, 0x8a, 0x6a, 0x5d, 0x7b, 0xf5, 0x4e, 0x87, 0x29, 0xd7, 0x20, 0xce,
+  0x96, 0xc7, 0x1e, 0x3b, 0x13, 0xfc, 0x14, 0xa1, 0x5b, 0xb6, 0xf5, 0xb5,
+  0xa9, 0xd0, 0x19, 0xd8, 0x9a, 0x66, 0x3f, 0xb3, 0x11, 0xf5, 0x9d, 0x4c,
+  0x86, 0x69, 0x9c, 0x94, 0xc3, 0x2c, 0x0b, 0x3b, 0x84, 0x35, 0x68, 0x3d,
+  0xa1, 0x84, 0xc3, 0x88, 0x9e, 0x8f, 0x30, 0x8e, 0x13, 0xf7, 0x06, 0x39,
+  0x26, 0x5e, 0xed, 0x54, 0x4f, 0x18, 0x37, 0x02, 0x18, 0xfb, 0x65, 0xae,
+  0x71, 0x38, 0x58, 0xf3, 0xd4, 0x4b, 0x3d, 0x05, 0xf6, 0x4d, 0xdf, 0xa7,
+  0xe5, 0xb0, 0xc8, 0xe6, 0x84, 0x2f, 0x92, 0xcd, 0x30, 0x87, 0x4f, 0x10,
+  0x4d, 0x24, 0x22, 0x8c, 0xfd, 0xb5, 0x12, 0x7b, 0x1c, 0x31, 0x5c, 0x00,
+  0x0a, 0x03, 0x8d, 0xe6, 0x3a, 0x71, 0x07, 0x9d, 0xe3, 0xf8, 0x3d, 0xe9,
+  0xf7, 0xf0, 0x36, 0x48, 0x1d, 0xa9, 0x13, 0x02, 0x1c, 0x69, 0x55, 0xdc,
+  0x65, 0xe9, 0x10, 0x08, 0x8d, 0x96, 0x4d, 0xb3, 0x49, 0x52, 0xc8, 0x71,
+  0xe0, 0x48, 0x5f, 0x34, 0x0e, 0x02, 0xcf, 0xc3, 0xb8, 0x94, 0x5c, 0x8a,
+  0xa5, 0x5d, 0xa5, 0xb7, 0x8c, 0xbb, 0x4f, 0xb3, 0x9d, 0xf9, 0x19, 0x98,
+  0x57, 0x8a, 0x4a, 0x7f, 0xd4, 0x3f, 0x7e, 0xf9, 0xb2, 0x86, 0xd1, 0x8f,
+  0xab, 0x46, 0x11, 0xc9, 0x5c, 0xc9, 0xaf, 0x9c, 0xc2, 0xf2, 0xa1, 0xc9,
+  0x52, 0x67, 0x19, 0x88, 0x3d, 0x98, 0x02, 0xbb, 0xa3, 0x78, 0x29, 0xe0,
+  0xbc, 0x19, 0x57, 0xc5, 0x2e, 0xd0, 0x55, 0x40, 0x66, 0x8c, 0x19, 0x0c,
+  0x33, 0xc3, 0xda, 0xdd, 0x57, 0x8b, 0x69, 0x32, 0x2b, 0xff, 0x43, 0x32,
+  0x3d, 0x5c, 0x8a, 0xfa, 0x8c, 0x36, 0x27, 0x67, 0x14, 0x93, 0xfc, 0x72,
+  0x9d, 0x8c, 0x8f, 0xd6, 0x94, 0x0f, 0x6e, 0x34, 0xc0, 0x63, 0x0d, 0x4f,
+  0x0d, 0x50, 0xbb, 0xc3, 0x63, 0xe9, 0xe8, 0xf8, 0x21, 0xff, 0xde, 0x69,
+  0x0c, 0xc0, 0xb2, 0x9d, 0x17, 0x24, 0x33, 0x97, 0x52, 0xaf, 0x1c, 0x83,
+  0xcf, 0xa7, 0xe4, 0xac, 0xc4, 0x7d, 0x92, 0x43, 0x09, 0xbb, 0xa6, 0xc3,
+  0xa5, 0x70, 0x41, 0xbd, 0x52, 0x02, 0x19, 0xdb, 0x12, 0xe4, 0xf8, 0x1f,
+  0x56, 0x18, 0xd2, 0xce, 0xfe, 0xa3, 0x17, 0x86, 0xb4, 0x4d, 0x3f, 0x8c,
+  0x90, 0x04, 0x17, 0xd4, 0xa5, 0x2a, 0x39, 0xb5, 0x6b, 0x8a, 0x69, 0xf7,
+  0xa4, 0x81, 0xff, 0xad, 0xbc, 0x98, 0x22, 0x95, 0x0c, 0x37, 0xbe, 0x07,
+  0x3b, 0x26, 0x05, 0xaf, 0xf3, 0x7b, 0xe4, 0xe2, 0x9e, 0xa5, 0xf5, 0x5e,
+  0x3c, 0x3d, 0x2d, 0x8a, 0xff, 0x24, 0xc6, 0xf7, 0xd9, 0x2a, 0xa6, 0x73,
+  0xef, 0x6b, 0xb2, 0x3a, 0x97, 0x2a, 0x85, 0xac, 0x1d, 0x4e, 0xc7, 0xe7,
+  0xa5, 0x8d, 0xdd, 0x79, 0xa1, 0xf3, 0x2e, 0xb3, 0x6b, 0x63, 0x9e, 0xdc,
+  0x89, 0x4b, 0xee, 0x08, 0xa4, 0x1c, 0x4b, 0x89, 0xc7, 0x43, 0x44, 0x3f,
+  0xfe, 0x26, 0x2c, 0x51, 0x1e, 0xb3, 0x2a, 0x19, 0x29, 0x16, 0x2e, 0x69,
+  0x8e, 0x6f, 0x03, 0x38, 0xf1, 0x9a, 0x09, 0x09, 0x3b, 0x46, 0x52, 0x65,
+  0x20, 0x99, 0x72, 0x96, 0x56, 0x68, 0x4f, 0x0f, 0x6f, 0xa3, 0x3b, 0xa0,
+  0xcf, 0x77, 0x7f, 0xb9, 0xa3, 0xe0, 0x1f, 0x31, 0x2e, 0xce, 0x9a, 0x1b,
+  0x9b, 0x0c, 0x4a, 0x5c, 0xf6, 0xca, 0x6d, 0xae, 0x1e, 0xac, 0x59, 0x47,
+  0x1b, 0xb9, 0xa0, 0x62, 0xf2, 0xf3, 0x49, 0x9e, 0x8c, 0x62, 0x0a, 0xd3,
+  0x0a, 0xb2, 0x21, 0x0e, 0x11, 0xb0, 0x38, 0x9d, 0xcd, 0xfa, 0x03, 0x84,
+  0x66, 0x2d, 0xe1, 0x9b, 0xb9, 0x00, 0xc4, 0x90, 0xda, 0xf7, 0xf6, 0xcd,
+  0x69, 0x2f, 0x98, 0xde, 0x5a, 0x88, 0xdb, 0x95, 0x5f, 0x22, 0x99, 0x29,
+  0x6b, 0x86, 0xda, 0xc1, 0xcb, 0x5d, 0x27, 0x0a, 0x3c, 0x99, 0xe3, 0x85,
+  0x18, 0xd0, 0x97, 0x9c, 0xde, 0xb9, 0x1e, 0xf3, 0xeb, 0xb3, 0x8b, 0x13,
+  0xbe, 0x0a, 0xd1, 0x76, 0x44, 0x31, 0x19, 0x0c, 0xbb, 0x87, 0xe2, 0xd3,
+  0x04, 0x19, 0xe0, 0xb6, 0x26, 0xb1, 0x04, 0xea, 0x96, 0x70, 0x26, 0x6f,
+  0xce, 0x31, 0xe7, 0x58, 0x7d, 0x65, 0x42, 0xb0, 0x8e, 0x4c, 0xe7, 0x54,
+  0x5f, 0x57, 0xf3, 0x9a, 0xeb, 0x93, 0x60, 0x06, 0xe8, 0xe9, 0xaf, 0x4e,
+  0x18, 0xfb, 0x55, 0x36, 0x7b, 0x6f, 0xc6, 0x55, 0x30, 0x31, 0xd9, 0xde,
+  0x34, 0xd7, 0xd7, 0x59, 0xbe, 0xb1, 0xaf, 0xd0, 0x28, 0x83, 0x5c, 0x94,
+  0xa9, 0xe8, 0xd1, 0xd4, 0xf6, 0x14, 0xc1, 0xc7, 0x27, 0xd9, 0xfb, 0x74,
+  0x72, 0x27, 0x50, 0x95, 0xe4, 0x81, 0xa6, 0x8d, 0x8d, 0x30, 0x20, 0x5a,
+  0xeb, 0x74, 0x34, 0x79, 0x2e, 0x2c, 0x48, 0x0d, 0x2c, 0x55, 0x02, 0x3e,
+  0x14, 0xfd, 0x7a, 0xb3, 0xbf, 0x25, 0x5a, 0x3b, 0x1f, 0x80, 0xf3, 0xb7,
+  0x17, 0x26, 0x43, 0x61, 0x99, 0x0f, 0xa9, 0x05, 0x0a, 0xde, 0x2e, 0x14,
+  0xde, 0x1d, 0x9b, 0x09, 0xe2, 0x9d, 0x5c, 0x4e, 0x52, 0x0a, 0xfe, 0xdc,
+  0x52, 0xbb, 0x03, 0xf0, 0x78, 0xa0, 0x05, 0xe7, 0x54, 0x7b, 0xe1, 0x9a,
+  0x7c, 0x3f, 0xe9, 0xc5, 0x14, 0x1d, 0x4d, 0x28, 0x8e, 0xb6, 0x4a, 0x31,
+  0xe0, 0xa0, 0xd9, 0x4f, 0xcf, 0xed, 0x87, 0xa1, 0x72, 0xb7, 0x9a, 0x32,
+  0x77, 0x72, 0x57, 0xbf, 0x16, 0x9c, 0xbe, 0x71, 0x9c, 0x5a, 0xe7, 0x45,
+  0x46, 0x86, 0x94, 0x4a, 0xe0, 0x34, 0x94, 0xbf, 0xe0, 0x33, 0x1c, 0xaa,
+  0x32, 0xc5, 0x20, 0x36, 0x68, 0x3b, 0x8d, 0x48, 0x80, 0x27, 0x6d, 0x5e,
+  0xd0, 0x52, 0xe4, 0x4e, 0x23, 0x7d, 0x55, 0x67, 0x8b, 0xf1, 0xc9, 0xf8,
+  0xcc, 0xc2, 0x0b, 0x8e, 0xc0, 0x2d, 0x0c, 0x2c, 0xe9, 0xdf, 0x1b, 0xe8,
+  0xeb, 0x68, 0x69, 0xab, 0x1f, 0x65, 0xbd, 0xdc, 0xf0, 0x20, 0x69, 0x1c,
+  0x11, 0x99, 0xe8, 0x68, 0xfb, 0x9a, 0xbd, 0x80, 0xfc, 0xd8, 0x8b, 0x4e,
+  0xf0, 0x71, 0x9f, 0x29, 0xfc, 0x91, 0x9a, 0x98, 0x27, 0x59, 0x61, 0x16,
+  0x09, 0xc3, 0xab, 0x12, 0x0e, 0x01, 0xa2, 0x07, 0x03, 0x59, 0xf4, 0xf0,
+  0x1d, 0x55, 0x26, 0xea, 0xf1, 0x19, 0x20, 0x0e, 0x65, 0xc0, 0x19, 0x3b,
+  0x78, 0x47, 0x0f, 0x60, 0xc6, 0x1d, 0x55, 0x96, 0x6a, 0x5d, 0x7a, 0x90,
+  0xf5, 0x97, 0x64, 0x92, 0xee, 0x92, 0xd5, 0x88, 0x83, 0x7c, 0xe4, 0x78,
+  0xe3, 0x1a, 0x08, 0x9d, 0x1b, 0x19, 0x12, 0x5b, 0x50, 0x70, 0x22, 0xda,
+  0x78, 0x3f, 0x78, 0xaa, 0x1e, 0x2e, 0x44, 0x50, 0xf0, 0xf8, 0xa9, 0x8e,
+  0x8a, 0x53, 0xb2, 0x1d, 0x6b, 0xa1, 0x70, 0x27, 0x64, 0x68, 0x5f, 0x04,
+  0xcb, 0xb8, 0xd3, 0x10, 0xd4, 0x64, 0x3a, 0x63, 0xc4, 0x26, 0xde, 0xef,
+  0x03, 0xe7, 0x2c, 0x72, 0x04, 0x71, 0xb2, 0xac, 0x84, 0x0a, 0xcb, 0x28,
+  0x18, 0xf1, 0xf2, 0x78, 0x7f, 0x6f, 0x2f, 0x62, 0xe9, 0x8c, 0x71, 0x9c,
+  0x39, 0x90, 0x1d, 0xcb, 0xf2, 0xa4, 0x09, 0x21, 0xd3, 0xf0, 0xdd, 0x36,
+  0xc4, 0x42, 0xd7, 0x1c, 0x1f, 0x05, 0x8b, 0xd9, 0x92, 0x34, 0x8e, 0x3b,
+  0x02, 0xd7, 0x26, 0xdc, 0x4f, 0xf9, 0xe8, 0xce, 0xb6, 0x0a, 0xe4, 0x50,
+  0x20, 0x07, 0x02, 0xbe, 0x21, 0x08, 0x42, 0x91, 0x84, 0xd5, 0x94, 0x41,
+  0x45, 0x42, 0x91, 0x98, 0xf9, 0x36, 0x18, 0x52, 0x41, 0x35, 0xa4, 0xb3,
+  0x19, 0xfd, 0x8a, 0xf5, 0xe7, 0x17, 0x05, 0xb2, 0x46, 0x4a, 0x66, 0x9a,
+  0xdd, 0x45, 0x37, 0x81, 0x64, 0xb5, 0x3a, 0x71, 0x7d, 0x78, 0x3e, 0x54,
+  0x5b, 0x18, 0xf4, 0x45, 0x7b, 0xe4, 0x71, 0xcb, 0xf3, 0x9d, 0x6c, 0x7a,
+  0xf9, 0xd3, 0x6e, 0xbc, 0xbb, 0xb3, 0xb3, 0xf3, 0x4b, 0x6f, 0x8e, 0xc4,
+  0xc9, 0x29, 0x12, 0xf0, 0x6f, 0xaf, 0x96, 0x47, 0xd5, 0x72, 0x87, 0x3b,
+  0xd3, 0xea, 0xfc, 0x13, 0x7f, 0xec, 0x76, 0xf1, 0xdf, 0xbd, 0x7f, 0x75,
+  0xd6, 0xbb, 0xc7, 0xbf, 0xc7, 0x13, 0x88, 0x51, 0xfd, 0x24, 0x49, 0x99,
+  0xf4, 0xf1, 0x9a, 0x18, 0x05, 0x3d, 0x1e, 0xc2, 0x3f, 0x5e, 0xf8, 0x83,
+  0x16, 0xd8, 0x49, 0x98, 0xce, 0xb9, 0x1a, 0x63, 0x5a, 0x0d, 0xaf, 0x7c,
+  0xc1, 0x0e, 0x2e, 0x0d, 0xd8, 0x77, 0xc4, 0xa0, 0x92, 0xf8, 0x3e, 0x38,
+  0x50, 0xcd, 0xfd, 0x56, 0xcf, 0x8b, 0x34, 0x0b, 0x4d, 0x6e, 0x96, 0x5b,
+  0xba, 0x35, 0x98, 0x2e, 0xc6, 0x6c, 0xb8, 0x25, 0x78, 0x99, 0x39, 0x35,
+  0x8e, 0x03, 0xfb, 0x63, 0xbc, 0x39, 0x3c, 0x95, 0xc3, 0xab, 0x74, 0x2a,
+  0x1c, 0x7a, 0x53, 0x93, 0xaf, 0x3b, 0xb8, 0x44, 0xb0, 0x42, 0x9d, 0xc0,
+  0x2d, 0xda, 0x19, 0xeb, 0x57, 0x30, 0x93, 0x2d, 0x29, 0x9e, 0x60, 0x6e,
+  0x56, 0xca, 0x17, 0x48, 0xa2, 0xcb, 0x05, 0xda, 0x03, 0x07, 0x89, 0x5c,
+  0x61, 0x5a, 0x52, 0x24, 0x2c, 0x81, 0x20, 0x17, 0x4e, 0x0b, 0xba, 0x37,
+  0xcb, 0xc5, 0x20, 0x16, 0x99, 0x92, 0x46, 0x44, 0x19, 0x1a, 0x68, 0xf7,
+  0x7b, 0xf6, 0xf2, 0xf8, 0x82, 0xeb, 0x22, 0xc0, 0xbf, 0x88, 0xc6, 0x06,
+  0x3f, 0x10, 0x5c, 0xab, 0x09, 0x7a, 0x4e, 0x18, 0x6d, 0x94, 0x7d, 0x44,
+  0xc7, 0x5e, 0xca, 0xce, 0x10, 0x8b, 0x32, 0xe9, 0xea, 0xae, 0x6c, 0xd8,
+  0x8d, 0x72, 0x3c, 0x23, 0x37, 0x59, 0x99, 0x86, 0x70, 0x1e, 0x6a, 0x62,
+  0xa4, 0xa9, 0x7c, 0xf1, 0xe8, 0x71, 0x6f, 0x87, 0xa7, 0x88, 0x6b, 0x28,
+  0xa7, 0x46, 0x10, 0x4f, 0xc9, 0x9b, 0xa1, 0xe1, 0x91, 0x49, 0x38, 0x6c,
+  0xdb, 0x0c, 0xa5, 0x1b, 0x21, 0xf6, 0x0c, 0xa5, 0x5d, 0x57, 0x79, 0xac,
+  0xdf, 0x3a, 0x69, 0xb8, 0xc1, 0xc2, 0x4d, 0x8a, 0x8d, 0x26, 0xd5, 0xe6,
+  0x44, 0x1c, 0xe7, 0x8d, 0x15, 0x0c, 0x12, 0x2e, 0xd9, 0xc4, 0xbc, 0x5c,
+  0xee, 0x38, 0x46, 0x79, 0xf3, 0xce, 0xbf, 0xc4, 0xf1, 0xd3, 0x6a, 0xb7,
+  0x25, 0x33, 0x19, 0x50, 0xd6, 0xb3, 0x99, 0x02, 0x12, 0x77, 0x49, 0x52,
+  0xcc, 0x86, 0x0b, 0xb4, 0xdb, 0x21, 0xd9, 0x61, 0xe5, 0x10, 0x0a, 0xc7,
+  0x2f, 0x4b, 0xdc, 0x2f, 0x5c, 0x14, 0xc2, 0x1b, 0x80, 0xc1, 0x36, 0xaf,
+  0x51, 0x84, 0x96, 0x63, 0x0d, 0x50, 0x94, 0x01, 0xfb, 0x9e, 0x30, 0x3e,
+  0x11, 0x93, 0x90, 0xf9, 0xdf, 0xc1, 0xfd, 0x3f, 0xed, 0x45, 0xdf, 0xa5,
+  0x37, 0x49, 0x91, 0xfe, 0x57, 0x80, 0x7f, 0x01, 0xe5, 0x7d, 0xb2, 0x3c,
+  0x4e, 0x6a, 0x7d, 0x2d, 0x76, 0x61, 0xf4, 0x54, 0xe6, 0x17, 0xb5, 0x5c,
+  0x4e, 0xc3, 0x31, 0xbe, 0xa3, 0x5b, 0xbd, 0x14, 0x8d, 0x2c, 0x04, 0xb3,
+  0x2a, 0x08, 0x83, 0x92, 0x3d, 0xcf, 0xe6, 0x4c, 0x15, 0xfa, 0x7b, 0xe8,
+  0x57, 0xe4, 0x93, 0x40, 0x3b, 0x8f, 0xb3, 0xd7, 0x20, 0xb6, 0xd4, 0x5b,
+  0x6c, 0x2a, 0x1b, 0xe7, 0xa0, 0x93, 0x27, 0x44, 0x29, 0x6c, 0x9d, 0x22,
+  0xab, 0x96, 0x38, 0x88, 0x3a, 0x7f, 0xc2, 0x58, 0xaa, 0xaf, 0x8f, 0x3a,
+  0xbd, 0x7a, 0x1c, 0xb2, 0x07, 0xd9, 0xb6, 0xc0, 0x7d, 0xa2, 0x9b, 0xb3,
+  0x6e, 0x4e, 0x90, 0xdb, 0x12, 0x6f, 0x67, 0x9c, 0x3e, 0x89, 0x5e, 0x48,
+  0xc9, 0x37, 0xd9, 0x6c, 0x7f, 0x4f, 0xf6, 0x71, 0x89, 0x5b, 0xcf, 0x5d,
+  0x91, 0x8f, 0x6e, 0x82, 0x32, 0x2d, 0xaf, 0xa9, 0x0a, 0x7e, 0xe7, 0xc3,
+  0x8f, 0x6e, 0xbf, 0x39, 0x39, 0x7a, 0xf6, 0xea, 0x64, 0x05, 0xd8, 0xa4,
+  0xe8, 0xdd, 0xb8, 0x4c, 0x9e, 0xda, 0x7d, 0x24, 0xbb, 0x5f, 0xc4, 0xc9,
+  0x25, 0xae, 0x60, 0x30, 0x74, 0x4e, 0x34, 0x6f, 0xbd, 0x42, 0x48, 0xe0,
+  0xc1, 0x57, 0x8e, 0xe8, 0x15, 0x8e, 0xa4, 0x34, 0x39, 0x9f, 0x6e, 0x51,
+  0x1a, 0x75, 0x0b, 0xfb, 0x6c, 0x43, 0x04, 0x83, 0xc1, 0x24, 0x99, 0xbd,
+  0x37, 0x58, 0x1d, 0xdc, 0x52, 0x17, 0xf1, 0x25, 0xb9, 0x06, 0x80, 0xfd,
+  0x50, 0xf2, 0x40, 0x43, 0x52, 0xdb, 0x3f, 0x16, 0xa8, 0x13, 0x4d, 0x93,
+  0xe2, 0xbd, 0xa2, 0x8f, 0x08, 0x88, 0x88, 0x4b, 0x8b, 0xa6, 0x34, 0x05,
+  0xcb, 0x32, 0xb1, 0x02, 0x8d, 0x04, 0xd2, 0x6e, 0xae, 0x4c, 0xe1, 0x1f,
+  0x83, 0x46, 0xd2, 0xc2, 0x8a, 0xd0, 0xbd, 0x8d, 0xb2, 0x26, 0xde, 0x66,
+  0x94, 0xf7, 0x3d, 0x9d, 0x57, 0x77, 0x46, 0x28, 0x25, 0xfb, 0x47, 0x73,
+  0x7d, 0x37, 0x3b, 0x9d, 0x2d, 0x4a, 0xe9, 0x0b, 0x68, 0x49, 0x8c, 0x31,
+  0x28, 0xde, 0x05, 0x9e, 0x41, 0x8e, 0x3b, 0x8d, 0x0a, 0x0c, 0x67, 0xea,
+  0xb1, 0x0e, 0x48, 0x1e, 0x35, 0x13, 0x39, 0x4f, 0x95, 0x91, 0x48, 0x32,
+  0x6b, 0x2a, 0x5d, 0xb8, 0xb6, 0x91, 0x82, 0x6c, 0x98, 0xaa, 0x4c, 0x29,
+  0x21, 0x16, 0x38, 0x42, 0x30, 0xdc, 0xe1, 0x68, 0x31, 0xda, 0xec, 0x44,
+  0x9d, 0xad, 0x96, 0x60, 0x42, 0x67, 0x02, 0xf5, 0xac, 0x97, 0x7f, 0x63,
+  0x04, 0xfc, 0x51, 0xd4, 0x61, 0x7a, 0xdb, 0xd9, 0x79, 0xba, 0xa6, 0xd8,
+  0xf4, 0xa2, 0x6b, 0x37, 0x9c, 0xcf, 0x82, 0xbb, 0xbd, 0xce, 0x69, 0x58,
+  0xe8, 0x6e, 0x81, 0x08, 0x05, 0xff, 0x1e, 0x68, 0xd4, 0x61, 0x9b, 0x30,
+  0x55, 0x49, 0xc1, 0xec, 0xc8, 0xd4, 0x07, 0x32, 0x41, 0x8f, 0xa2, 0xb4,
+  0x22, 0xd3, 0x11, 0xf5, 0xce, 0x06, 0x97, 0x86, 0xe2, 0xdc, 0x7b, 0xd1,
+  0x99, 0x29, 0xe0, 0x85, 0x4c, 0xbb, 0x2a, 0x86, 0x32, 0x56, 0xfa, 0x5d,
+  0x92, 0x73, 0x93, 0x49, 0x2b, 0x11, 0xa2, 0xe3, 0x6a, 0x8e, 0xb9, 0x19,
+  0xa6, 0x94, 0xa2, 0x95, 0xda, 0x71, 0x78, 0xae, 0xcd, 0x04, 0xa6, 0x0f,
+  0xa4, 0xca, 0x85, 0x04, 0x3c, 0xec, 0x8d, 0x66, 0xa0, 0xa5, 0x31, 0xf6,
+  0xb4, 0xcd, 0xb5, 0x94, 0x50, 0xfa, 0x09, 0xd0, 0xd5, 0x62, 0xee, 0xa8,
+  0x94, 0x5c, 0xf1, 0x0a, 0xa8, 0x78, 0x92, 0xcf, 0xba, 0x5e, 0x71, 0x5a,
+  0x0c, 0x5e, 0x17, 0x0f, 0x18, 0xe5, 0xb8, 0x4e, 0xe7, 0x39, 0xc8, 0x30,
+  0x83, 0x49, 0x6a, 0x02, 0x0d, 0xf8, 0x4d, 0xe5, 0x0e, 0xb6, 0x73, 0x3c,
+  0xc8, 0xde, 0xa9, 0xb5, 0xd8, 0x20, 0x34, 0x54, 0xb3, 0x11, 0x40, 0xf4,
+  0x5d, 0x06, 0xf6, 0xf4, 0xa6, 0x04, 0x12, 0x84, 0x5c, 0x05, 0x22, 0xbd,
+  0x64, 0x1c, 0x5f, 0x5b, 0xba, 0x6b, 0x75, 0x05, 0x5b, 0xe2, 0x5a, 0xbf,
+  0xa5, 0xe0, 0x30, 0x1c, 0xf2, 0xe6, 0x36, 0xd2, 0xa1, 0xe7, 0x83, 0x8a,
+  0x2b, 0x8c, 0x52, 0x04, 0x25, 0x04, 0x61, 0xfa, 0xaf, 0x45, 0x38, 0x40,
+  0x25, 0x29, 0x9d, 0xb1, 0xe9, 0x32, 0xd7, 0xca, 0xd9, 0xd1, 0xb0, 0xf0,
+  0x12, 0x7a, 0x47, 0x48, 0x2c, 0x40, 0xc0, 0xdc, 0xa2, 0x2c, 0xce, 0x1d,
+  0x26, 0xf5, 0xb2, 0x30, 0x82, 0x79, 0xcb, 0x70, 0x93, 0x92, 0xc8, 0x48,
+  0x8b, 0x53, 0xda, 0x95, 0x2f, 0x7d, 0x7c, 0x53, 0x9e, 0xa9, 0xad, 0x51,
+  0x29, 0x87, 0x51, 0x30, 0x4f, 0x49, 0x3c, 0xba, 0xce, 0x78, 0xfd, 0x39,
+  0xcd, 0x22, 0x81, 0x6b, 0x93, 0xa6, 0xc4, 0x29, 0xd1, 0x9e, 0xcf, 0x20,
+  0x4d, 0x18, 0xe4, 0x10, 0xc5, 0x74, 0x44, 0xc4, 0xcf, 0xc8, 0x6f, 0xc0,
+  0x97, 0xf1, 0x95, 0x56, 0x47, 0x28, 0x52, 0xcc, 0x46, 0x46, 0xe4, 0x54,
+  0x9a, 0x45, 0xa2, 0x18, 0x77, 0x5e, 0x70, 0x16, 0x1b, 0x56, 0x0a, 0xe3,
+  0x7e, 0x45, 0x02, 0x9b, 0x21, 0x77, 0x61, 0x49, 0x0a, 0x61, 0x17, 0xb1,
+  0x47, 0xbe, 0xcf, 0x3d, 0x49, 0xaa, 0x17, 0x84, 0xbe, 0x62, 0x21, 0x23,
+  0xfa, 0x4b, 0x5a, 0x0c, 0xd2, 0x22, 0x87, 0x79, 0xff, 0xed, 0xb1, 0xa6,
+  0x15, 0x6b, 0x29, 0x0b, 0xd6, 0x0a, 0xe4, 0x84, 0xe2, 0x31, 0xe2, 0xa1,
+  0x7b, 0xb1, 0x2b, 0x8c, 0x4d, 0x84, 0x6b, 0xab, 0x6f, 0xba, 0x9a, 0x41,
+  0x93, 0x42, 0xbb, 0x64, 0x0b, 0x02, 0xea, 0x43, 0xbe, 0x3c, 0x0e, 0x5e,
+  0x31, 0x06, 0x98, 0x98, 0x02, 0x37, 0x48, 0xe4, 0x24, 0x20, 0xdf, 0x28,
+  0x1f, 0x54, 0x09, 0xcd, 0xcf, 0x0c, 0xfb, 0x22, 0x63, 0x73, 0xed, 0x4b,
+  0xc5, 0x9e, 0xf1, 0x01, 0x0f, 0x4c, 0x96, 0x0a, 0x8e, 0x25, 0x43, 0xb2,
+  0x69, 0xc6, 0xb2, 0xa3, 0x36, 0x57, 0x5e, 0xa1, 0x42, 0x84, 0x66, 0x2d,
+  0xb2, 0xef, 0x85, 0x0d, 0x16, 0xb4, 0x66, 0xaf, 0x2f, 0x4e, 0x5f, 0x75,
+  0x1b, 0xa7, 0x4e, 0x04, 0x5b, 0xa7, 0xbc, 0xac, 0x72, 0x1c, 0x21, 0x29,
+  0xdf, 0x79, 0x51, 0x44, 0xb2, 0x1c, 0x26, 0xd8, 0x8b, 0xdc, 0xdf, 0xb4,
+  0x72, 0x5d, 0xc9, 0x87, 0x29, 0x04, 0xc9, 0x50, 0x4d, 0x7e, 0xbc, 0xac,
+  0xbe, 0x25, 0x0a, 0x69, 0xb0, 0xa4, 0xad, 0x27, 0x2b, 0x29, 0xdc, 0x30,
+  0xc0, 0x6b, 0xa4, 0x8a, 0x02, 0x5d, 0x01, 0x4b, 0xea, 0x35, 0xda, 0x5e,
+  0x79, 0x2a, 0xc8, 0x5d, 0xd2, 0x8c, 0x0e, 0xce, 0xb3, 0xfc, 0x66, 0x16,
+  0x9f, 0x22, 0x76, 0x73, 0x74, 0x9a, 0x5f, 0xe2, 0x01, 0x7a, 0x1d, 0x36,
+  0xd8, 0xbe, 0x3d, 0x7f, 0x1d, 0x6d, 0xa2, 0xd8, 0x83, 0xf5, 0x4d, 0xa4,
+  0x5e, 0x36, 0x3e, 0xba, 0x25, 0x46, 0x93, 0x92, 0x45, 0x61, 0x19, 0x4d,
+  0x37, 0x3a, 0xf9, 0xf1, 0xe8, 0xd5, 0xf9, 0xe9, 0xc9, 0xcf, 0x9c, 0xd7,
+  0xe1, 0x4d, 0x07, 0x3f, 0xfe, 0xd6, 0xb9, 0xbd, 0x28, 0x04, 0x06, 0x43,
+  0xe4, 0x60, 0x24, 0xc1, 0xc2, 0xa2, 0xb8, 0xf5, 0xcc, 0x15, 0x6d, 0x19,
+  0x96, 0xf3, 0x97, 0xb1, 0x56, 0x7f, 0x26, 0x86, 0x35, 0xc8, 0x66, 0x68,
+  0xf0, 0x21, 0x10, 0x55, 0x2c, 0xcb, 0x08, 0x03, 0x23, 0xf2, 0xf7, 0x2a,
+  0xb5, 0xe8, 0x71, 0xe8, 0x46, 0xaf, 0x35, 0x95, 0xb1, 0x4b, 0x9b, 0x8e,
+  0x47, 0xf0, 0x59, 0x76, 0x49, 0x21, 0x3b, 0x8d, 0x14, 0x2e, 0x31, 0x04,
+  0x20, 0x1d, 0x34, 0xe9, 0x19, 0xab, 0xdc, 0x68, 0x88, 0x58, 0x99, 0x4e,
+  0xd8, 0x3d, 0xd3, 0x7a, 0x35, 0x32, 0x87, 0xa4, 0x5d, 0x24, 0xa8, 0x9c,
+  0xe6, 0xe8, 0x14, 0x3a, 0x07, 0x75, 0x57, 0xde, 0x40, 0xb1, 0x0e, 0x30,
+  0x85, 0xf0, 0xa5, 0x20, 0x79, 0x1b, 0x86, 0xeb, 0x1f, 0x44, 0x9d, 0x78,
+  0x11, 0x1d, 0x74, 0x96, 0x48, 0x30, 0x9f, 0xcb, 0x25, 0x47, 0xfb, 0x56,
+  0x1c, 0x94, 0x29, 0x30, 0xf9, 0x35, 0x3d, 0x72, 0xb3, 0x6e, 0x5d, 0x18,
+  0x08, 0xab, 0x70, 0xae, 0x93, 0xad, 0xd1, 0xd4, 0x2b, 0xba, 0x5f, 0x69,
+  0x1c, 0xea, 0x85, 0x1b, 0x2d, 0x0a, 0xb5, 0x6f, 0x1a, 0x0f, 0x00, 0xfb,
+  0x71, 0x81, 0x01, 0x09, 0xef, 0x27, 0x5c, 0xbc, 0x4b, 0xdf, 0x86, 0x4d,
+  0x94, 0x05, 0x37, 0x0f, 0x07, 0xf3, 0x81, 0xde, 0xb6, 0x01, 0x64, 0xc4,
+  0xce, 0x65, 0xbc, 0x7c, 0x3a, 0x14, 0xa3, 0x26, 0x16, 0x96, 0x7c, 0x04,
+  0xea, 0xdb, 0x11, 0x47, 0x20, 0x10, 0xb8, 0x98, 0xdf, 0x1c, 0x6d, 0xe2,
+  0xc6, 0x37, 0x1b, 0x12, 0xf4, 0xd7, 0x11, 0x19, 0x0d, 0xef, 0x90, 0x0e,
+  0x6b, 0x74, 0x98, 0x35, 0x8f, 0xa3, 0x07, 0x16, 0xb2, 0x71, 0xb8, 0x11,
+  0xc9, 0x83, 0xfa, 0x64, 0xf3, 0xc6, 0xa4, 0xf7, 0x24, 0xb8, 0x4b, 0x61,
+  0xcd, 0x35, 0x98, 0x99, 0x01, 0x1c, 0xe0, 0x36, 0x87, 0x7b, 0x15, 0xb9,
+  0xc8, 0x0c, 0x4f, 0xed, 0x84, 0xea, 0x73, 0x4a, 0xf0, 0x58, 0x12, 0xb0,
+  0x7d, 0x9b, 0x91, 0xcb, 0x58, 0xff, 0xa0, 0x63, 0x4d, 0x46, 0xa3, 0x8c,
+  0x25, 0x32, 0x72, 0x95, 0x5b, 0xc2, 0x82, 0x3e, 0x29, 0xcf, 0xb6, 0xe5,
+  0x08, 0x73, 0xd2, 0x2c, 0x5a, 0xcf, 0x48, 0x43, 0x0a, 0xa2, 0x15, 0xba,
+  0x70, 0x78, 0x1c, 0xf8, 0xe3, 0xd3, 0x21, 0x6f, 0x1f, 0x9d, 0x4c, 0xcd,
+  0x9f, 0x9d, 0xe4, 0x39, 0xba, 0x1d, 0x70, 0x07, 0xdb, 0x7a, 0x57, 0x5f,
+  0x93, 0xb5, 0xf7, 0xf1, 0xf5, 0x6f, 0xdc, 0xe1, 0xa4, 0xca, 0xe0, 0x93,
+  0x22, 0xa2, 0x88, 0xe9, 0xa7, 0xdb, 0x02, 0x5d, 0x6c, 0x2a, 0x05, 0x98,
+  0xc8, 0x93, 0x46, 0xdc, 0x8f, 0xa0, 0x88, 0x7c, 0x76, 0xc7, 0xbc, 0x14,
+  0xb5, 0x27, 0x98, 0x56, 0x03, 0x25, 0x42, 0xa4, 0x21, 0xae, 0xbc, 0x7f,
+  0x2c, 0xb2, 0x74, 0x79, 0x54, 0x8a, 0x9e, 0x9f, 0x75, 0xd0, 0xdc, 0xfd,
+  0xdc, 0xf1, 0xa6, 0x35, 0xc0, 0x0b, 0xfc, 0xb8, 0x9f, 0x2d, 0x48, 0x07,
+  0xb3, 0x16, 0x37, 0x71, 0x71, 0x16, 0xeb, 0x56, 0x5f, 0xc1, 0x50, 0x0e,
+  0x62, 0x26, 0xfb, 0x59, 0xb4, 0x36, 0x76, 0xa5, 0xc5, 0x99, 0xff, 0x37,
+  0x61, 0x48, 0x01, 0x20, 0x98, 0x67, 0x12, 0x71, 0xe4, 0x06, 0x98, 0x08,
+  0xbe, 0x1f, 0xbb, 0x83, 0x44, 0xed, 0xd7, 0x08, 0x57, 0x0d, 0x02, 0xce,
+  0xc8, 0x59, 0xeb, 0xd9, 0x6c, 0x2e, 0x1c, 0x3d, 0x83, 0x63, 0x9d, 0x4c,
+  0x64, 0x38, 0x39, 0xfc, 0x30, 0x3c, 0x46, 0x9b, 0xc0, 0xbc, 0x7c, 0x62,
+  0x25, 0xda, 0xb6, 0x7f, 0x2b, 0xb3, 0x30, 0xbd, 0x8f, 0x49, 0x6b, 0x70,
+  0xec, 0xef, 0x24, 0xfd, 0x00, 0xdd, 0x5a, 0xd0, 0xf8, 0x7b, 0xcd, 0xf8,
+  0xc3, 0x96, 0xd3, 0xdb, 0x74, 0xb8, 0xa8, 0x82, 0xc8, 0x6e, 0x17, 0x57,
+  0x5a, 0x87, 0x95, 0x87, 0xb4, 0x49, 0x3c, 0x44, 0x6a, 0xff, 0x75, 0xce,
+  0xb5, 0x44, 0xe1, 0x41, 0x67, 0x4b, 0xa2, 0x04, 0x29, 0x64, 0xc7, 0xd6,
+  0x2e, 0xf4, 0x4e, 0x3a, 0x46, 0x5c, 0xcb, 0x90, 0x8b, 0x94, 0xfd, 0x64,
+  0x36, 0xdc, 0x37, 0xd8, 0x3d, 0x9c, 0xf0, 0x22, 0xd8, 0xfb, 0x73, 0xf6,
+  0x10, 0x39, 0x9d, 0xcb, 0xe1, 0x1a, 0xaa, 0xf3, 0xa8, 0xf4, 0xb8, 0xa0,
+  0xd7, 0x73, 0x4e, 0xa0, 0x7f, 0xd1, 0xd1, 0x35, 0xb0, 0x06, 0xb2, 0x72,
+  0xe9, 0xab, 0xba, 0xf8, 0x1e, 0x04, 0x41, 0x32, 0xa9, 0xe2, 0xf2, 0x7a,
+  0x18, 0x86, 0x08, 0x11, 0x8c, 0x3f, 0x53, 0xfb, 0xe3, 0x08, 0x1e, 0xee,
+  0x5f, 0x0f, 0x0f, 0xd4, 0x0a, 0xe2, 0x5c, 0xdb, 0xde, 0x64, 0x8f, 0xca,
+  0xbb, 0xd9, 0xf0, 0xea, 0xd9, 0xeb, 0x7e, 0xb8, 0x69, 0xa2, 0x71, 0x1a,
+  0x3e, 0x59, 0x0a, 0x13, 0x7a, 0x1a, 0xe4, 0x0b, 0xac, 0x56, 0xcd, 0x8e,
+  0x79, 0x29, 0x34, 0x8e, 0xe5, 0xbe, 0x8e, 0x9c, 0x6f, 0xc3, 0xcd, 0xd5,
+  0x5f, 0x31, 0xc6, 0x76, 0xf4, 0xb1, 0x32, 0x23, 0x14, 0xa1, 0x92, 0x40,
+  0x24, 0xe2, 0x04, 0x57, 0x24, 0x68, 0xe9, 0x36, 0x3b, 0x8b, 0x2e, 0xe0,
+  0x74, 0xa4, 0x2d, 0x16, 0x4e, 0xc6, 0x81, 0x57, 0x5b, 0x2f, 0xaf, 0x26,
+  0x59, 0x6d, 0xa9, 0x2c, 0x70, 0xb4, 0x7c, 0xa9, 0x81, 0xbd, 0x44, 0xeb,
+  0xd8, 0x9a, 0x78, 0xea, 0xbd, 0xc6, 0x8e, 0xaf, 0x92, 0xe2, 0x38, 0x9f,
+  0x5d, 0x87, 0x47, 0xd5, 0x08, 0x2c, 0x67, 0xc3, 0x9b, 0xd3, 0xef, 0x10,
+  0xde, 0x4e, 0x86, 0x15, 0x15, 0xa3, 0xa5, 0x7a, 0xd6, 0x9a, 0x3c, 0x14,
+  0x6e, 0x6e, 0x13, 0xc3, 0x0f, 0xa2, 0x93, 0xef, 0x8e, 0x9f, 0xbd, 0x3c,
+  0xde, 0x6a, 0x8e, 0xe4, 0x19, 0xe3, 0xef, 0xb2, 0x8d, 0x97, 0x6f, 0x6a,
+  0xde, 0x28, 0x43, 0x76, 0xce, 0x20, 0xe8, 0x61, 0xe1, 0x5b, 0x2c, 0xf6,
+  0xb6, 0x74, 0x39, 0x45, 0x04, 0xaf, 0xb4, 0x28, 0xf2, 0x82, 0xf8, 0xd3,
+  0x7b, 0x0d, 0x84, 0x9b, 0xa6, 0x53, 0x8c, 0xa8, 0x30, 0xc2, 0x0d, 0x97,
+  0x84, 0x25, 0xb1, 0x9d, 0x3a, 0x8f, 0xc3, 0xcd, 0x8d, 0x50, 0x3b, 0x40,
+  0x51, 0x89, 0xf3, 0xf8, 0x3d, 0xbb, 0xff, 0x65, 0x99, 0x60, 0x6d, 0x1e,
+  0x62, 0x45, 0x34, 0xdc, 0x18, 0xb5, 0xbf, 0xfe, 0x51, 0xff, 0xb4, 0x29,
+  0x43, 0x1b, 0xde, 0x04, 0xb7, 0x05, 0x6a, 0xcc, 0x8c, 0x7c, 0x19, 0xee,
+  0xd5, 0x94, 0xa9, 0x39, 0x7e, 0x73, 0xf4, 0x0a, 0xc8, 0x8c, 0xc3, 0x37,
+  0xfc, 0xc0, 0x7f, 0x5a, 0x1a, 0xf8, 0x98, 0x46, 0xe1, 0x6d, 0xf5, 0xf7,
+  0xfd, 0x7e, 0x7c, 0x74, 0xfe, 0x32, 0xdc, 0x85, 0x7c, 0x29, 0x65, 0xdc,
+  0xd9, 0xa3, 0xed, 0xb5, 0xf0, 0xa2, 0x7f, 0xd1, 0xd7, 0x1f, 0x3a, 0x26,
+  0x3a, 0x91, 0x69, 0x59, 0x83, 0x3c, 0xd7, 0xc7, 0x81, 0xe6, 0xf6, 0xf8,
+  0xc7, 0xf6, 0x9e, 0x79, 0xc1, 0x00, 0xad, 0xe9, 0xfa, 0xf4, 0x02, 0xaf,
+  0xed, 0xcb, 0x6b, 0xfb, 0xcb, 0x5e, 0x0b, 0xbc, 0xd7, 0x8f, 0x43, 0x85,
+  0xe5, 0x3d, 0x0e, 0x90, 0x05, 0x52, 0x25, 0x96, 0x95, 0x4c, 0x7f, 0xf9,
+  0xec, 0x75, 0xbd, 0x01, 0x13, 0xa4, 0x80, 0xdf, 0xc4, 0x0a, 0xd3, 0x26,
+  0x42, 0xa0, 0xa3, 0x5e, 0x06, 0x0c, 0xc5, 0xe7, 0xd7, 0x4f, 0x9c, 0xd8,
+  0x0c, 0xdc, 0x48, 0xfa, 0xc8, 0x28, 0x31, 0xde, 0x1b, 0xaa, 0xfc, 0x87,
+  0x27, 0x65, 0x4c, 0x03, 0x7f, 0x7b, 0xec, 0x91, 0xd8, 0xb2, 0xbd, 0x3c,
+  0x4d, 0x8a, 0xcb, 0x34, 0x10, 0x47, 0xe1, 0xad, 0x95, 0x99, 0xaa, 0x0d,
+  0xee, 0x82, 0xdb, 0x73, 0x82, 0xaf, 0x73, 0x14, 0x45, 0x57, 0x82, 0x29,
+  0xe8, 0xa3, 0xa2, 0x8d, 0xbd, 0xc1, 0x5c, 0xf7, 0xbe, 0xff, 0xce, 0x1b,
+  0x06, 0x50, 0xeb, 0x6f, 0xc8, 0xbb, 0x0d, 0x03, 0x1b, 0xa5, 0x2e, 0xef,
+  0xda, 0xbc, 0xce, 0x92, 0xe8, 0xf2, 0xb7, 0x6c, 0x4e, 0xe0, 0x6c, 0x98,
+  0x91, 0xb6, 0x45, 0x77, 0xb7, 0xc9, 0x5b, 0x08, 0x77, 0xc7, 0x03, 0x32,
+  0x8c, 0x6f, 0xf9, 0x4a, 0xbc, 0x42, 0x21, 0xae, 0xdf, 0x3f, 0xbd, 0xf7,
+  0x42, 0x18, 0xa9, 0xaf, 0x9e, 0x18, 0xd6, 0xcc, 0x2f, 0x43, 0x15, 0x5a,
+  0x7e, 0xac, 0xb3, 0x31, 0xf8, 0xc2, 0xbb, 0x1f, 0xbe, 0x0b, 0x8f, 0x86,
+  0x5a, 0x1b, 0xa5, 0x88, 0x7f, 0x29, 0xd1, 0x5a, 0xe8, 0xc7, 0x02, 0x5d,
+  0x7f, 0x04, 0x37, 0xe4, 0x64, 0x2e, 0xc5, 0xe4, 0x5b, 0xdb, 0x3e, 0xc7,
+  0x6a, 0xad, 0xfc, 0x03, 0x9f, 0xbb, 0x52, 0x3e, 0x7e, 0xbe, 0x18, 0x4c,
+  0x60, 0xed, 0xfb, 0x8b, 0xf1, 0x38, 0xbb, 0x8d, 0x4e, 0x33, 0xa9, 0x77,
+  0x2b, 0x1a, 0x96, 0x66, 0x21, 0x65, 0xe5, 0x92, 0x5b, 0x82, 0x33, 0x60,
+  0xe8, 0x84, 0xd6, 0xd0, 0x4a, 0x2c, 0xf6, 0x26, 0x4b, 0x76, 0x9d, 0x39,
+  0xf7, 0x55, 0x2e, 0xc6, 0x71, 0xdb, 0xe6, 0xdd, 0xa6, 0xa5, 0xaf, 0xbc,
+  0xf7, 0xcf, 0x5f, 0x9f, 0x7c, 0x7f, 0xa6, 0x3f, 0xd6, 0x59, 0xd1, 0x3e,
+  0xcf, 0x1a, 0x7f, 0x98, 0xe4, 0x56, 0x20, 0x22, 0x84, 0xe3, 0xc5, 0xcb,
+  0xdf, 0x16, 0x8a, 0x26, 0xdb, 0xb5, 0x36, 0xd3, 0x65, 0xc8, 0x77, 0x3f,
+  0x08, 0xd9, 0x65, 0x37, 0x5d, 0xf4, 0x77, 0xc2, 0xbf, 0xe8, 0xde, 0xef,
+  0xd3, 0x9a, 0x81, 0x70, 0x1d, 0xc2, 0xa4, 0xee, 0x03, 0x6f, 0x95, 0x1f,
+  0x4b, 0xc7, 0x2a, 0xa0, 0x2c, 0x2d, 0xd2, 0x11, 0x21, 0xdd, 0xf4, 0xb9,
+  0x3c, 0xcc, 0x1b, 0x0e, 0x00, 0x3c, 0x17, 0x53, 0xca, 0xd6, 0xb2, 0x25,
+  0x69, 0x59, 0x68, 0xd8, 0xf9, 0x60, 0x69, 0x4a, 0xbc, 0x28, 0x5f, 0xd1,
+  0x05, 0x19, 0x7e, 0x91, 0xaf, 0x6a, 0xb9, 0x42, 0xcd, 0xb5, 0xba, 0x74,
+  0x5e, 0x6f, 0x67, 0x19, 0x7a, 0xf9, 0x5a, 0x80, 0xe1, 0xf8, 0x4b, 0xc3,
+  0x8a, 0x73, 0xe3, 0xce, 0x0f, 0xb5, 0x73, 0xdb, 0xa7, 0x98, 0xd5, 0xb2,
+  0xb5, 0xad, 0x5b, 0x89, 0x8e, 0x2d, 0xeb, 0x97, 0x54, 0x8b, 0xd8, 0xf8,
+  0x5b, 0x59, 0x8d, 0x56, 0x71, 0x20, 0x7c, 0x66, 0x4b, 0x12, 0xa2, 0x6d,
+  0xee, 0x1a, 0xb3, 0x99, 0xf0, 0x30, 0x56, 0xf1, 0x9e, 0x9a, 0x83, 0xd9,
+  0x20, 0x04, 0xde, 0x0b, 0x44, 0x3e, 0x54, 0x1f, 0x2c, 0xa0, 0x4a, 0xd6,
+  0x73, 0x9c, 0x3d, 0x1d, 0xd2, 0x2a, 0x8f, 0xa4, 0x99, 0xf9, 0x00, 0x70,
+  0x57, 0xec, 0x29, 0x9b, 0xcc, 0x59, 0xbd, 0x7b, 0x85, 0x7f, 0x4e, 0x93,
+  0xd9, 0xc2, 0xf5, 0x3b, 0xc5, 0x37, 0xf8, 0x29, 0x55, 0xb3, 0xc1, 0x70,
+  0x8e, 0xe8, 0x90, 0xf5, 0xb8, 0x6f, 0x02, 0x96, 0x27, 0xee, 0x50, 0x91,
+  0xb4, 0x5d, 0x8d, 0x8f, 0x2c, 0x0f, 0xe4, 0xa9, 0x4f, 0xc6, 0x28, 0x4a,
+  0x26, 0xc6, 0xd7, 0x39, 0xe2, 0x3b, 0xc7, 0xcf, 0xfd, 0x2d, 0x7a, 0xaa,
+  0xee, 0x51, 0x2b, 0x91, 0x98, 0x8d, 0xc5, 0xfb, 0x4c, 0xa9, 0xa3, 0x58,
+  0x6e, 0x2e, 0x9f, 0x91, 0xfd, 0x9c, 0x0b, 0xe3, 0xb0, 0xf7, 0x1f, 0x78,
+  0xcb, 0x28, 0x64, 0x79, 0xc2, 0x40, 0xb4, 0xd9, 0x62, 0x3a, 0x40, 0x17,
+  0xef, 0xd8, 0x20, 0x75, 0x97, 0xec, 0x40, 0x92, 0x5e, 0x7c, 0xab, 0x77,
+  0x12, 0x00, 0x0a, 0x9d, 0xc0, 0x62, 0x10, 0xf8, 0x5f, 0x87, 0xc7, 0x83,
+  0x58, 0x55, 0x28, 0x55, 0xaa, 0xd7, 0x95, 0xf2, 0x16, 0xd4, 0xdc, 0xc0,
+  0x0a, 0xae, 0xb4, 0xcf, 0x6e, 0x91, 0x40, 0xca, 0x83, 0x28, 0x6c, 0xdf,
+  0x6a, 0xfa, 0x43, 0x47, 0x83, 0x27, 0x6b, 0xd6, 0x56, 0xd3, 0x9c, 0x59,
+  0x95, 0x00, 0xda, 0x35, 0xc7, 0x92, 0x52, 0xc2, 0x3c, 0xee, 0x1a, 0x34,
+  0x1a, 0x77, 0x82, 0x6a, 0xa3, 0x5d, 0x83, 0x48, 0x05, 0xbc, 0xba, 0x65,
+  0x4a, 0x7b, 0x51, 0x3f, 0x6e, 0xb9, 0x18, 0x94, 0x55, 0x56, 0x2d, 0x7c,
+  0x76, 0x23, 0xc1, 0x33, 0x6c, 0x4a, 0xcd, 0xc5, 0x6f, 0x63, 0x01, 0xbc,
+  0xc9, 0x10, 0x85, 0xf9, 0x7a, 0x55, 0x97, 0x16, 0x94, 0x53, 0x4f, 0x06,
+  0x8c, 0xc0, 0x3b, 0xc9, 0x6f, 0xbc, 0x82, 0x0f, 0xa8, 0x21, 0xdb, 0xd1,
+  0xd5, 0xb1, 0xbb, 0xa0, 0x81, 0xdf, 0xff, 0x53, 0xbf, 0x7c, 0x87, 0x8b,
+  0xf5, 0x2f, 0x5d, 0x2c, 0x19, 0x76, 0xe2, 0xb9, 0x4c, 0xc8, 0xf8, 0xf7,
+  0x7b, 0x5a, 0x94, 0x5f, 0x31, 0x12, 0x9c, 0x57, 0x06, 0xcb, 0xe1, 0x50,
+  0x73, 0xbf, 0xef, 0x19, 0x69, 0x4d, 0x9b, 0x40, 0xf0, 0x57, 0x36, 0x31,
+  0x0c, 0xee, 0x3c, 0xfb, 0x13, 0xd2, 0xe0, 0xcf, 0xb3, 0x2e, 0xd2, 0x71,
+  0x52, 0xc0, 0x40, 0x2e, 0xc9, 0xf5, 0x85, 0x65, 0x11, 0x68, 0x1b, 0x7f,
+  0x2e, 0xa4, 0xe2, 0x4a, 0x95, 0x0c, 0xc4, 0xdf, 0xce, 0x9f, 0x87, 0xd5,
+  0x77, 0x93, 0x63, 0xa3, 0xeb, 0x5c, 0xab, 0xe6, 0x04, 0x2d, 0x25, 0xc5,
+  0xc8, 0xd8, 0x0a, 0x07, 0x5a, 0x1a, 0x81, 0x49, 0xb5, 0xb9, 0xf7, 0x54,
+  0xbe, 0x40, 0xca, 0xa6, 0xe8, 0xab, 0xa4, 0x1b, 0xd9, 0x30, 0x9c, 0xdf,
+  0xff, 0x93, 0xf3, 0x67, 0xfe, 0xe5, 0x7b, 0x48, 0x79, 0x1c, 0x35, 0x53,
+  0xa5, 0xd8, 0xef, 0x89, 0xe8, 0x28, 0x4e, 0x8e, 0x0c, 0xae, 0xb3, 0x2a,
+  0x32, 0xb8, 0xbc, 0x64, 0x77, 0x0d, 0xe5, 0x5c, 0xfc, 0x9e, 0xdb, 0xf8,
+  0x27, 0x6f, 0x91, 0x86, 0x8c, 0xb1, 0x56, 0x9d, 0x49, 0xfe, 0x00, 0x1a,
+  0x64, 0xa9, 0x1e, 0x9a, 0x7a, 0x14, 0x39, 0x1a, 0x6c, 0x1c, 0x50, 0xa3,
+  0xc5, 0x3e, 0xb0, 0xe9, 0x3a, 0x97, 0x4c, 0x2c, 0x3f, 0xb9, 0x09, 0xb6,
+  0xf8, 0x2c, 0x9b, 0x70, 0x8a, 0x19, 0xe2, 0x4e, 0x30, 0xf9, 0xf8, 0x49,
+  0x7a, 0x5c, 0x8c, 0x1b, 0x76, 0x9f, 0xe8, 0x9e, 0x98, 0xb9, 0x93, 0x24,
+  0xd2, 0x15, 0x4d, 0x4b, 0x82, 0xb6, 0x19, 0x68, 0x59, 0xfa, 0xba, 0xb9,
+  0x42, 0x66, 0xd8, 0x5c, 0x79, 0xda, 0x66, 0x60, 0x07, 0xd3, 0x29, 0xfa,
+  0x49, 0x4d, 0xb2, 0x85, 0x94, 0x8f, 0xfb, 0xb2, 0x86, 0xdd, 0xa0, 0xa2,
+  0xde, 0xd9, 0xc5, 0xc9, 0x01, 0x0d, 0xf9, 0xf7, 0x71, 0x79, 0x37, 0x1d,
+  0xe4, 0x13, 0xe1, 0x72, 0x48, 0xeb, 0x40, 0xb0, 0xfa, 0x19, 0x9f, 0x49,
+  0x8a, 0x66, 0x8a, 0x9d, 0x6a, 0x03, 0xbe, 0x93, 0x9d, 0x16, 0x98, 0xcc,
+  0x4b, 0xf9, 0x90, 0xf1, 0x1b, 0x11, 0x04, 0x02, 0x56, 0xf3, 0xf7, 0x91,
+  0x22, 0xf0, 0x03, 0x17, 0x26, 0x0f, 0xd2, 0x8d, 0x75, 0xff, 0x89, 0x81,
+  0x38, 0x18, 0xa7, 0x10, 0xa2, 0x57, 0xe7, 0x60, 0x1a, 0x9b, 0x50, 0xa8,
+  0x4e, 0x83, 0x6c, 0xc0, 0x3b, 0xc2, 0x74, 0xe3, 0x57, 0x8f, 0xf9, 0xa3,
+  0xf8, 0x02, 0x3f, 0x92, 0x90, 0x6f, 0x25, 0x24, 0xe4, 0x06, 0x8a, 0x3a,
+  0xd2, 0x0d, 0x40, 0x71, 0x46, 0xa1, 0xfc, 0x11, 0xd4, 0x8c, 0x81, 0xb1,
+  0x7b, 0xe3, 0x24, 0x9a, 0x9f, 0x96, 0x97, 0xce, 0xb0, 0xf9, 0x18, 0x4c,
+  0x31, 0x4c, 0xfa, 0x32, 0xed, 0x45, 0x9b, 0x6e, 0xf5, 0xdd, 0xc7, 0xbd,
+  0x1d, 0xcf, 0x5a, 0x91, 0xde, 0xc2, 0x59, 0xa2, 0x28, 0x7e, 0xd3, 0x04,
+  0x5c, 0x1f, 0x58, 0x2f, 0x15, 0xb6, 0xc6, 0x7c, 0x29, 0x93, 0xb0, 0x11,
+  0x72, 0x9b, 0x4d, 0x48, 0xd3, 0xf0, 0xff, 0x5a, 0x3a, 0x55, 0xfe, 0xff,
+  0x8e, 0x25, 0x01, 0x38, 0x11, 0xcb, 0x9b, 0xa1, 0x38, 0x0d, 0x90, 0x28,
+  0xa6, 0x89, 0x64, 0x8a, 0x70, 0x6a, 0x88, 0xe1, 0xbc, 0x5a, 0x87, 0x8e,
+  0x32, 0x99, 0x81, 0x2b, 0xf4, 0x56, 0x35, 0x87, 0x07, 0x33, 0x13, 0x08,
+  0x43, 0x09, 0xb3, 0x47, 0x47, 0x51, 0x36, 0x36, 0x6a, 0x75, 0x85, 0x18,
+  0x32, 0xa8, 0x95, 0x60, 0xcb, 0x2b, 0xf6, 0x28, 0xd7, 0x18, 0x00, 0x63,
+  0x49, 0x6d, 0x84, 0x7d, 0x16, 0x36, 0x4a, 0x34, 0x40, 0x82, 0x51, 0x28,
+  0x72, 0x26, 0x7a, 0x49, 0x7e, 0x28, 0x66, 0x46, 0x0b, 0xf6, 0x63, 0xe1,
+  0x41, 0xcb, 0xa7, 0xe8, 0x10, 0xad, 0x32, 0xeb, 0x2e, 0x5c, 0x31, 0x3a,
+  0x33, 0x14, 0x66, 0x18, 0x6e, 0x20, 0xaa, 0x47, 0x4f, 0xe3, 0x6a, 0xfe,
+  0x0e, 0xe8, 0xb2, 0xb8, 0x7b, 0x47, 0xf9, 0x58, 0x17, 0x8e, 0xeb, 0x9d,
+  0x3e, 0xa0, 0xc5, 0x61, 0xb4, 0xe3, 0xc5, 0x1c, 0x87, 0x43, 0xe7, 0x6b,
+  0x92, 0xb3, 0xe5, 0x29, 0x9f, 0xad, 0x5c, 0x27, 0x27, 0xe1, 0xc7, 0xa9,
+  0x55, 0xf1, 0x45, 0x90, 0x07, 0xbe, 0xfb, 0xb5, 0x44, 0x51, 0x12, 0xee,
+  0xc9, 0xe8, 0xcf, 0xfd, 0xb3, 0xd7, 0x51, 0x3e, 0xc0, 0x82, 0xef, 0x22,
+  0xe5, 0xc0, 0xe9, 0x27, 0x06, 0xde, 0xac, 0xd5, 0x15, 0x12, 0x15, 0xfc,
+  0x23, 0xa5, 0xdc, 0xdd, 0xd2, 0xf3, 0xdf, 0xf0, 0x4e, 0x67, 0x26, 0x6a,
+  0xe1, 0x8f, 0x49, 0x2a, 0x2a, 0x56, 0x6c, 0x57, 0x91, 0xdc, 0x95, 0x5d,
+  0x29, 0x66, 0xac, 0x58, 0xbb, 0x09, 0xfb, 0x6e, 0x8c, 0x14, 0x6c, 0xaa,
+  0xd9, 0xe1, 0x69, 0x5e, 0xde, 0x9c, 0xc8, 0x66, 0xe6, 0x55, 0x12, 0x36,
+  0x7c, 0xf5, 0x21, 0x70, 0x40, 0xe4, 0x42, 0x20, 0x6b, 0x8d, 0x9d, 0x44,
+  0x86, 0xfb, 0x73, 0x93, 0x16, 0x38, 0xa6, 0x2e, 0x85, 0xee, 0xdc, 0xe3,
+  0xd8, 0x72, 0x94, 0x07, 0xe6, 0xdd, 0xce, 0xe7, 0x69, 0x02, 0x8b, 0x84,
+  0x7e, 0x30, 0xbd, 0x3b, 0x6e, 0x32, 0xcc, 0x73, 0x39, 0xb9, 0x45, 0x60,
+  0x70, 0x0e, 0xa5, 0x5e, 0xac, 0x58, 0x22, 0xac, 0x3b, 0x94, 0x60, 0xbf,
+  0x4e, 0x41, 0xb5, 0xf4, 0x8e, 0x16, 0xfb, 0xb2, 0xc8, 0x17, 0x73, 0x8e,
+  0x61, 0x77, 0xe2, 0xab, 0x56, 0x8c, 0xce, 0x70, 0x7d, 0xc5, 0xd0, 0x40,
+  0x19, 0x51, 0x83, 0x02, 0x39, 0x0f, 0x88, 0x65, 0x34, 0xb6, 0xe9, 0xad,
+  0x18, 0x5d, 0xc9, 0xf8, 0x4f, 0xb2, 0x77, 0x44, 0x6a, 0x20, 0xee, 0x04,
+  0x72, 0x39, 0xd0, 0x2f, 0xf5, 0xce, 0xf2, 0xca, 0x3a, 0xab, 0x34, 0x84,
+  0x48, 0x0f, 0xd0, 0x90, 0xb8, 0x80, 0x33, 0xc6, 0x7c, 0x66, 0xb3, 0xd5,
+  0xe7, 0x94, 0x3c, 0xf5, 0x36, 0xb4, 0x48, 0x33, 0xd2, 0x38, 0x12, 0x19,
+  0xf3, 0x10, 0x0c, 0xb1, 0xb6, 0x8c, 0x8b, 0x53, 0x48, 0x9b, 0xe3, 0x6a,
+  0x1f, 0x8e, 0xf6, 0xb8, 0x6a, 0x79, 0x78, 0x5a, 0x9b, 0x12, 0xeb, 0x44,
+  0x76, 0xc5, 0x2d, 0xe6, 0x79, 0xc4, 0x0e, 0x1a, 0xf5, 0xf6, 0xc2, 0xa3,
+  0x33, 0x8a, 0x21, 0x8b, 0x82, 0xf8, 0x99, 0x83, 0x27, 0xcf, 0x1b, 0x88,
+  0xe3, 0x8b, 0xcc, 0x85, 0xa0, 0x88, 0xcc, 0x2b, 0x58, 0xb9, 0x7b, 0xbf,
+  0x3d, 0xde, 0x09, 0x5c, 0x35, 0xca, 0x44, 0x54, 0xe6, 0x0e, 0xf3, 0x12,
+  0x7b, 0xc5, 0xbf, 0x4f, 0x03, 0xc8, 0x01, 0x94, 0x76, 0xf9, 0x2e, 0x9b,
+  0xbb, 0xe2, 0xec, 0xcb, 0xf3, 0x08, 0x1d, 0xe6, 0x84, 0xcb, 0x22, 0xd7,
+  0x23, 0x67, 0x67, 0x62, 0xc0, 0xb0, 0x7c, 0x40, 0xdc, 0x7b, 0xe5, 0x0a,
+  0x0f, 0x19, 0x80, 0x9a, 0x5c, 0x2e, 0x0e, 0xa8, 0x54, 0xac, 0xbc, 0x40,
+  0x3d, 0x30, 0x68, 0x5f, 0x7d, 0x14, 0x88, 0xe2, 0x89, 0x7c, 0xc3, 0x6c,
+  0xcb, 0x0c, 0xc8, 0x86, 0x60, 0x66, 0xc0, 0xc3, 0x8d, 0xe8, 0x43, 0xab,
+  0x32, 0x3a, 0xe3, 0x76, 0x06, 0xb6, 0x62, 0x06, 0xb6, 0xb2, 0xfd, 0x17,
+  0x5e, 0x00, 0x21, 0xe1, 0x8d, 0xd6, 0x18, 0x15, 0xee, 0xbe, 0x7c, 0xae,
+  0x81, 0x70, 0x8d, 0x5e, 0x99, 0xb9, 0xaf, 0x5e, 0x3a, 0x09, 0x1b, 0xae,
+  0x49, 0x39, 0x7b, 0x01, 0x2a, 0x80, 0xe9, 0xe9, 0x09, 0x29, 0x51, 0x24,
+  0xe5, 0xd9, 0xe2, 0x74, 0x41, 0x01, 0x8a, 0xcc, 0x37, 0x54, 0x28, 0x52,
+  0x46, 0xe3, 0x5e, 0x11, 0x2b, 0x46, 0x11, 0x3a, 0x94, 0xd8, 0xa3, 0xd1,
+  0x2e, 0xcc, 0xa1, 0x94, 0x35, 0xf6, 0x6e, 0x2d, 0x7f, 0x05, 0x56, 0x5c,
+  0x3a, 0xaa, 0x95, 0x6c, 0x62, 0x00, 0x59, 0x42, 0xe9, 0x1e, 0x08, 0x62,
+  0x45, 0xbc, 0xaf, 0x90, 0x0a, 0xbd, 0xa0, 0x28, 0x18, 0x6c, 0xb0, 0xd5,
+  0x57, 0x22, 0x96, 0x7c, 0x5c, 0x94, 0xea, 0x71, 0x7e, 0xd9, 0x27, 0xc1,
+  0x9d, 0x52, 0xab, 0x24, 0xa4, 0xd8, 0x1c, 0xb6, 0xfb, 0x48, 0x7d, 0xfb,
+  0x2d, 0x9b, 0xa0, 0x63, 0x2b, 0xcd, 0x26, 0xd0, 0x72, 0xe8, 0x87, 0xcc,
+  0xa8, 0x50, 0xe4, 0x1d, 0xe7, 0x98, 0x50, 0x6a, 0x89, 0xe3, 0x9e, 0xa4,
+  0xd0, 0xec, 0x13, 0x48, 0x97, 0x04, 0x62, 0x87, 0xfc, 0x28, 0xe4, 0x4e,
+  0xa5, 0x72, 0x95, 0xca, 0x28, 0x1f, 0x63, 0x46, 0xa1, 0xc6, 0x57, 0xf9,
+  0x0d, 0x61, 0xe4, 0x47, 0xab, 0x79, 0xb6, 0xb2, 0xe4, 0x48, 0x14, 0x63,
+  0xda, 0x05, 0x4e, 0x98, 0xfd, 0x2d, 0x2d, 0x72, 0x11, 0xd0, 0xa3, 0x0f,
+  0x94, 0x96, 0x89, 0xe5, 0xbe, 0x2b, 0xcb, 0x09, 0xb2, 0xd1, 0x6c, 0x7c,
+  0x07, 0x8b, 0x58, 0xb6, 0xd6, 0xa6, 0x68, 0xcc, 0x14, 0xd3, 0x9d, 0x64,
+  0xae, 0x8e, 0x5f, 0x68, 0xa3, 0x24, 0x23, 0xf2, 0x3c, 0x45, 0x05, 0x32,
+  0x2d, 0xaa, 0x6c, 0x9c, 0xad, 0xe2, 0x51, 0x28, 0x79, 0x53, 0xf7, 0x36,
+  0x76, 0x4e, 0xee, 0x14, 0xa3, 0xd8, 0xf4, 0xa2, 0x1d, 0xb1, 0xb4, 0xaf,
+  0x5c, 0xb8, 0x5a, 0x4b, 0xd8, 0x88, 0x0d, 0x17, 0xad, 0x9f, 0xe6, 0xc7,
+  0xa1, 0xd3, 0xac, 0xf4, 0xf2, 0x8e, 0x64, 0x7f, 0x8e, 0xf1, 0x94, 0x24,
+  0x6e, 0x73, 0x32, 0xb0, 0x51, 0x3a, 0xce, 0xaa, 0x48, 0x83, 0x20, 0xac,
+  0x65, 0xef, 0x56, 0x8a, 0xa9, 0x42, 0x7d, 0x91, 0x43, 0x99, 0xd1, 0x26,
+  0x6e, 0xe4, 0x8d, 0x94, 0x9f, 0x9d, 0x26, 0xb7, 0x31, 0x7d, 0x57, 0x46,
+  0x6d, 0xce, 0x04, 0x87, 0x01, 0x6e, 0x49, 0x22, 0x91, 0xaa, 0x94, 0x6c,
+  0x02, 0x41, 0x42, 0x13, 0xfc, 0xaf, 0x21, 0x06, 0xa9, 0x48, 0x0e, 0x63,
+  0xb2, 0xea, 0xe4, 0x4b, 0xf9, 0xed, 0x1b, 0x0a, 0x47, 0x26, 0x23, 0xdc,
+  0x25, 0x15, 0x7f, 0xca, 0x7b, 0xfe, 0x3a, 0x61, 0xcd, 0x81, 0x1a, 0xf1,
+  0x47, 0x6f, 0xf8, 0xb3, 0x03, 0x23, 0x2f, 0x99, 0x88, 0x55, 0x55, 0x32,
+  0xd7, 0xa0, 0xd6, 0x27, 0xc1, 0xcd, 0x41, 0xf1, 0xde, 0x5c, 0x96, 0x17,
+  0x56, 0xe2, 0x87, 0x1b, 0xb3, 0x71, 0x61, 0xba, 0xa6, 0x16, 0x3c, 0x7b,
+  0xeb, 0xdc, 0x34, 0xf6, 0x7e, 0x94, 0xeb, 0x91, 0x6e, 0xc7, 0xbc, 0x08,
+  0xdf, 0x7f, 0x32, 0x2a, 0xbd, 0x00, 0x2f, 0x58, 0x23, 0xa7, 0x61, 0x7d,
+  0xda, 0xfb, 0x4f, 0x59, 0xbd, 0x08, 0x8e, 0x9f, 0x42, 0x68, 0x34, 0x5c,
+  0x68, 0x13, 0x2d, 0x99, 0x54, 0x10, 0x0e, 0x9d, 0x55, 0x33, 0x93, 0x68,
+  0x4a, 0x7d, 0x07, 0x12, 0x61, 0x24, 0x35, 0xb5, 0x46, 0x1f, 0x44, 0x83,
+  0xf2, 0xc5, 0x26, 0xd6, 0xa8, 0x63, 0x03, 0xfe, 0x10, 0xe1, 0xbc, 0x46,
+  0xc6, 0xc5, 0xb4, 0x75, 0x8f, 0x4b, 0x05, 0x67, 0xe2, 0x8a, 0x73, 0x9c,
+  0xe2, 0xb9, 0xf2, 0x70, 0x63, 0xcd, 0xb5, 0x77, 0x23, 0x18, 0x3e, 0xe5,
+  0xb9, 0x73, 0xe4, 0x4f, 0x5e, 0x61, 0x24, 0xdd, 0x14, 0x96, 0x85, 0xb8,
+  0x19, 0xd7, 0x32, 0x14, 0xa9, 0x91, 0xac, 0x41, 0xfa, 0xfc, 0x4a, 0x79,
+  0xd1, 0xad, 0xc9, 0x48, 0xc5, 0xee, 0x64, 0xc7, 0x31, 0x53, 0x7c, 0x9b,
+  0xeb, 0x2b, 0xea, 0x2e, 0xdc, 0xf3, 0xe6, 0x2f, 0xd0, 0xc3, 0x46, 0xc1,
+  0x65, 0x8c, 0x5b, 0xd7, 0x52, 0x9a, 0x98, 0xa6, 0xa5, 0x09, 0x5a, 0xcb,
+  0xa6, 0xa5, 0x78, 0x6a, 0x66, 0x46, 0xd4, 0xe4, 0x8a, 0x71, 0xb4, 0xf6,
+  0x68, 0x04, 0x05, 0xde, 0x5d, 0xee, 0x32, 0xbc, 0x94, 0xb4, 0x92, 0x8e,
+  0x79, 0x7c, 0x79, 0x8f, 0x2e, 0xb3, 0x0d, 0x77, 0x2d, 0x48, 0x05, 0x2d,
+  0x93, 0x95, 0x9e, 0x6b, 0xbb, 0xa8, 0xb8, 0x01, 0xff, 0xb1, 0x7b, 0x08,
+  0x17, 0xe6, 0xc8, 0xd2, 0x26, 0x4e, 0x2b, 0xc1, 0x88, 0xeb, 0x4b, 0xbb,
+  0x5d, 0xfc, 0x8c, 0x63, 0x9a, 0x82, 0x0b, 0xb1, 0x5c, 0x14, 0x1c, 0xe6,
+  0xb9, 0x5a, 0x08, 0x53, 0x87, 0x91, 0x69, 0x0f, 0xeb, 0x78, 0xe2, 0x3a,
+  0xcd, 0x29, 0x34, 0x09, 0xe3, 0xef, 0x5a, 0x46, 0x65, 0x56, 0x9b, 0xf6,
+  0x59, 0x87, 0xa5, 0x70, 0x11, 0x1f, 0x69, 0x54, 0xdc, 0xda, 0x7d, 0xc6,
+  0xf4, 0xa1, 0xc2, 0x4a, 0x53, 0x3c, 0x21, 0xf9, 0xc3, 0x88, 0x0d, 0xf7,
+  0xb0, 0xa0, 0xad, 0x92, 0x4f, 0x6a, 0x22, 0xc8, 0x6a, 0x46, 0xe6, 0xc8,
+  0x27, 0x5f, 0xf8, 0x9e, 0x28, 0xa0, 0x20, 0xf3, 0xe7, 0x73, 0x4e, 0x6a,
+  0x44, 0xd3, 0x43, 0x9e, 0x21, 0xad, 0xcf, 0xba, 0x62, 0x12, 0xb4, 0xee,
+  0xc5, 0x9a, 0x2f, 0x64, 0x79, 0xe7, 0x2d, 0x8e, 0x12, 0x12, 0x2c, 0xeb,
+  0xdc, 0xf4, 0x49, 0x48, 0xe6, 0x16, 0x87, 0x64, 0x6d, 0x70, 0x3c, 0xba,
+  0x25, 0xc3, 0x53, 0xd0, 0x96, 0x87, 0x0e, 0x4e, 0xeb, 0xd3, 0x9b, 0x93,
+  0xca, 0x62, 0xce, 0x68, 0x95, 0x08, 0x4f, 0xd9, 0xf9, 0xdd, 0x88, 0xbc,
+  0x3f, 0x36, 0xc1, 0x9d, 0x54, 0x44, 0x92, 0xca, 0xa4, 0x6c, 0x35, 0x46,
+  0xaa, 0xb0, 0x8b, 0x75, 0x85, 0xe5, 0x82, 0x1e, 0xd7, 0x3c, 0x5e, 0x46,
+  0x53, 0x8b, 0x56, 0x2f, 0x19, 0x5e, 0x78, 0xef, 0x92, 0xf9, 0x5c, 0x2e,
+  0xf5, 0xd5, 0x94, 0xcb, 0x35, 0x17, 0x11, 0xa5, 0x8b, 0x0e, 0x03, 0x97,
+  0xb7, 0xac, 0xf2, 0xfc, 0xbd, 0x4d, 0x70, 0x25, 0x1d, 0x0d, 0xe1, 0x6e,
+  0x57, 0x52, 0xee, 0x24, 0x52, 0xfa, 0xdf, 0xee, 0xf7, 0x5f, 0x6c, 0xa7,
+  0xd5, 0x50, 0xa5, 0x8b, 0x6d, 0x9b, 0xee, 0x64, 0x2c, 0xa9, 0x2b, 0x9a,
+  0x23, 0xf9, 0x06, 0x71, 0x21, 0x88, 0x86, 0x8d, 0x37, 0xba, 0x17, 0x9c,
+  0x72, 0xdd, 0x82, 0xf4, 0x91, 0x27, 0x25, 0x55, 0xd4, 0x75, 0x2e, 0x0d,
+  0x5b, 0x30, 0x0d, 0x11, 0x05, 0x6c, 0xb6, 0x2e, 0xad, 0x3e, 0x8e, 0x2b,
+  0xa6, 0x82, 0x36, 0x50, 0xcc, 0x1c, 0x58, 0xcc, 0xff, 0xed, 0xbb, 0x47,
+  0xde, 0x35, 0x34, 0xb1, 0x73, 0xfc, 0x2b, 0x79, 0xd2, 0x56, 0x0f, 0x78,
+  0x8e, 0x86, 0x3f, 0x96, 0xe2, 0x56, 0x8f, 0xf8, 0xfe, 0x43, 0xbe, 0xf7,
+  0x88, 0x19, 0xcf, 0x4c, 0xe5, 0x48, 0x1c, 0x30, 0x39, 0x90, 0x25, 0xd4,
+  0x89, 0x0e, 0xdf, 0x20, 0xbd, 0xf4, 0x43, 0x1c, 0x83, 0x37, 0xb3, 0x06,
+  0x84, 0x26, 0x94, 0x95, 0x9b, 0xc6, 0xa6, 0x5d, 0xc9, 0x6e, 0x2c, 0x25,
+  0x11, 0xf2, 0x32, 0x5f, 0x39, 0xba, 0x44, 0xaa, 0xf7, 0x22, 0x2f, 0x77,
+  0xfc, 0xe3, 0x43, 0xa5, 0x1f, 0x07, 0x23, 0x03, 0x48, 0x67, 0x55, 0x73,
+  0x28, 0xb9, 0x32, 0xa2, 0xcb, 0x35, 0x86, 0x26, 0xb7, 0xec, 0x85, 0xd1,
+  0xb0, 0x56, 0x91, 0x07, 0xc6, 0x2b, 0x4f, 0x26, 0x46, 0x23, 0x5b, 0x79,
+  0x8f, 0xc0, 0x1d, 0x34, 0xd7, 0xe5, 0x41, 0xba, 0x20, 0x32, 0x61, 0x32,
+  0xed, 0xea, 0xc1, 0xe8, 0x46, 0xf7, 0x26, 0x05, 0xca, 0x5b, 0xb2, 0x16,
+  0x08, 0x5b, 0xe4, 0x97, 0xac, 0xe8, 0x54, 0x23, 0x1e, 0xbf, 0x4c, 0x86,
+  0xaa, 0x64, 0xaf, 0x1a, 0x1d, 0x99, 0x91, 0x7a, 0x8d, 0x45, 0xb0, 0x98,
+  0xbf, 0x46, 0x0a, 0xe0, 0x3c, 0x81, 0x7b, 0xdd, 0xc1, 0x88, 0x2c, 0x8a,
+  0xeb, 0x64, 0xdc, 0x19, 0xce, 0x62, 0x95, 0xe1, 0xe5, 0xa7, 0x71, 0x7c,
+  0xe6, 0xc3, 0x80, 0xa9, 0x17, 0x28, 0x9f, 0xda, 0x93, 0x50, 0x3b, 0x08,
+  0xd1, 0x1a, 0x72, 0xa5, 0x41, 0xfb, 0xb0, 0x39, 0x1c, 0x8d, 0x03, 0xcf,
+  0x51, 0x14, 0x93, 0x32, 0x5f, 0x2d, 0x88, 0xd1, 0x7a, 0xd2, 0x8c, 0x38,
+  0xd1, 0x16, 0xf3, 0x89, 0x38, 0x0c, 0x02, 0xf4, 0x33, 0x3c, 0x06, 0x95,
+  0x12, 0xc0, 0x6a, 0xb3, 0x3e, 0xec, 0x48, 0x78, 0x03, 0x44, 0x47, 0xa8,
+  0xab, 0x0c, 0xfe, 0x2a, 0x2b, 0x32, 0x20, 0xe7, 0xa3, 0x50, 0xd6, 0xdd,
+  0x7d, 0x48, 0x02, 0x35, 0xd6, 0xc0, 0xc9, 0x63, 0x4b, 0x4e, 0x6d, 0x67,
+  0x0d, 0x8c, 0x0a, 0xa9, 0xc4, 0x29, 0x45, 0x7c, 0xdc, 0xc3, 0xa1, 0x0d,
+  0x2d, 0x81, 0x82, 0xed, 0xb5, 0x94, 0xcd, 0x46, 0xe9, 0x6d, 0x4d, 0xcd,
+  0xcf, 0x6c, 0x24, 0x70, 0x37, 0xda, 0x89, 0xe9, 0x81, 0x95, 0xba, 0xc7,
+  0xb3, 0x34, 0x26, 0xdc, 0x34, 0x14, 0x49, 0xa0, 0x59, 0x2c, 0x84, 0x7b,
+  0x95, 0xe8, 0xb1, 0x2b, 0x39, 0x6f, 0xda, 0xe9, 0x68, 0xd5, 0xa1, 0xa3,
+  0x28, 0xa4, 0x22, 0x03, 0xce, 0x1a, 0x69, 0xb3, 0x84, 0x23, 0x79, 0x9f,
+  0x59, 0x5a, 0xe7, 0x79, 0xfb, 0x7a, 0xd1, 0x72, 0xdb, 0x3c, 0x7d, 0xb2,
+  0x6b, 0xa0, 0x08, 0xbc, 0x62, 0xa7, 0xc4, 0x1d, 0xae, 0x25, 0x49, 0x18,
+  0xa1, 0x16, 0x1d, 0xe2, 0x1a, 0xa2, 0x25, 0xf6, 0x31, 0x35, 0xa8, 0x1d,
+  0x2c, 0x6f, 0xae, 0x4d, 0x9f, 0x22, 0x48, 0x52, 0x2b, 0x76, 0x2e, 0x49,
+  0x65, 0x65, 0xa2, 0xfe, 0x74, 0x90, 0xa4, 0x37, 0xd1, 0xc6, 0xef, 0xff,
+  0x69, 0x4c, 0x25, 0xff, 0xfa, 0x79, 0xb6, 0xb1, 0x5e, 0x16, 0x9a, 0x0f,
+  0x09, 0x1b, 0x04, 0x32, 0xbb, 0x4d, 0x80, 0xb3, 0x05, 0xd3, 0xfa, 0xcb,
+  0xe4, 0x9a, 0x13, 0x4e, 0x15, 0x2e, 0x5d, 0x63, 0x0a, 0xea, 0x65, 0x44,
+  0xaa, 0x5a, 0xe5, 0x8a, 0xb2, 0x0a, 0x60, 0x18, 0x80, 0xbe, 0x84, 0x51,
+  0x82, 0x74, 0xa3, 0x4f, 0xd3, 0x2a, 0x21, 0x85, 0x18, 0x3e, 0xa0, 0xf4,
+  0x8c, 0x91, 0x46, 0x7b, 0xa2, 0xb7, 0xa0, 0x2a, 0x32, 0x90, 0xb4, 0x29,
+  0x4d, 0xc8, 0x56, 0xb1, 0x0c, 0xa4, 0x64, 0x0a, 0xf2, 0x15, 0xf5, 0x66,
+  0xec, 0xf1, 0xb7, 0xa3, 0xcb, 0x1e, 0x53, 0x6e, 0x8f, 0xd2, 0xce, 0xb4,
+  0x35, 0x9c, 0x7d, 0x97, 0x78, 0x3e, 0x5a, 0x08, 0x42, 0xcd, 0x49, 0xc0,
+  0x4c, 0xa4, 0xa5, 0x18, 0xeb, 0xed, 0x4e, 0x89, 0x05, 0x51, 0x2c, 0x8d,
+  0x69, 0xb3, 0x67, 0xaa, 0xae, 0x84, 0x62, 0x0a, 0x0d, 0x0a, 0x84, 0x49,
+  0xb3, 0xd4, 0x68, 0x59, 0x33, 0x65, 0x3b, 0x57, 0x8c, 0x66, 0xbb, 0x49,
+  0x8a, 0x19, 0xc7, 0xf9, 0x36, 0x53, 0x19, 0xcb, 0x72, 0x11, 0x0a, 0x36,
+  0x77, 0x12, 0x26, 0x69, 0x07, 0x97, 0xa6, 0x4b, 0xda, 0xe8, 0xd6, 0xfb,
+  0x27, 0x4c, 0x52, 0xab, 0xeb, 0xa6, 0x4b, 0xf2, 0x50, 0x62, 0x26, 0x03,
+  0x54, 0xf6, 0xd7, 0xa2, 0xd8, 0x66, 0x8d, 0xf1, 0xae, 0x17, 0x03, 0x1b,
+  0x02, 0xf2, 0x7e, 0xfe, 0xf2, 0xf4, 0xc4, 0xa4, 0xa5, 0xfd, 0xbf, 0xdb,
+  0x3d, 0x1c, 0x4a, 0x31, 0xf4, 0x12, 0xa0, 0x18, 0x66, 0xcd, 0xc1, 0xcc,
+  0x53, 0x1c, 0x36, 0xfd, 0xa8, 0x06, 0xc0, 0x76, 0xf2, 0xfa, 0x6f, 0x2f,
+  0xdf, 0x9c, 0xbd, 0x7e, 0x75, 0xf2, 0xfa, 0xe2, 0x0b, 0x37, 0x92, 0xc9,
+  0xc6, 0x80, 0x39, 0xc1, 0x58, 0x5e, 0xec, 0xaa, 0x06, 0x38, 0x48, 0xd4,
+  0x45, 0x11, 0xc1, 0xe6, 0xcb, 0x5f, 0x3d, 0xb7, 0x39, 0xe7, 0x21, 0x75,
+  0x3c, 0xe3, 0xbe, 0xcd, 0xd1, 0xcc, 0x3b, 0xc2, 0x60, 0x82, 0x1e, 0xbb,
+  0xaa, 0x49, 0x05, 0xa1, 0x08, 0x35, 0x3c, 0x33, 0x18, 0xe4, 0x40, 0xd9,
+  0x9c, 0xa5, 0x13, 0xa4, 0xac, 0x91, 0x43, 0xd6, 0x6b, 0x5c, 0x1b, 0x84,
+  0xdd, 0xc8, 0xb7, 0x0c, 0xd6, 0x81, 0x9a, 0x6c, 0x68, 0x36, 0x5a, 0xe6,
+  0x89, 0x24, 0x59, 0xea, 0x96, 0x30, 0x2f, 0xf5, 0x26, 0x61, 0x42, 0x72,
+  0xee, 0x10, 0xb7, 0xe6, 0x2f, 0x3f, 0xdf, 0x8c, 0xe3, 0x71, 0x66, 0xf0,
+  0x93, 0xda, 0x6a, 0x81, 0x22, 0x7e, 0x39, 0x44, 0x0d, 0xeb, 0x9b, 0x9f,
+  0x0e, 0xf0, 0x58, 0xfc, 0xe2, 0x17, 0x91, 0x2c, 0x9d, 0x21, 0x88, 0x68,
+  0xe1, 0x60, 0xfd, 0xe0, 0x41, 0x36, 0x4b, 0x49, 0x5e, 0xa4, 0x77, 0xe7,
+  0x6f, 0xce, 0x7e, 0xfc, 0xfb, 0x47, 0xee, 0xc2, 0x89, 0xdf, 0xff, 0x09,
+  0x13, 0xd7, 0xb4, 0xf1, 0x5f, 0x3e, 0x7a, 0x6f, 0xf5, 0xe6, 0xbb, 0x12,
+  0x52, 0x48, 0x57, 0x4c, 0x40, 0x8b, 0x60, 0x4c, 0x43, 0x46, 0x31, 0xb5,
+  0x19, 0xad, 0x91, 0x63, 0x4d, 0x33, 0x09, 0x35, 0x24, 0xc9, 0x95, 0x75,
+  0xe2, 0x4c, 0x7c, 0x40, 0xd6, 0x1e, 0x83, 0xcb, 0xd9, 0x8c, 0x8b, 0xae,
+  0x20, 0x2e, 0x22, 0xa4, 0x62, 0x97, 0x61, 0x17, 0x29, 0x8f, 0xcf, 0x2c,
+  0xc8, 0xd1, 0xe9, 0xe9, 0x47, 0x5d, 0x05, 0xb8, 0xd8, 0xb1, 0xc6, 0x8b,
+  0xb6, 0x15, 0x1b, 0xbd, 0x4a, 0x9e, 0x5e, 0x51, 0xcc, 0xf3, 0xf5, 0x99,
+  0x8c, 0xe6, 0x90, 0x54, 0xba, 0xb8, 0x4c, 0x41, 0x11, 0xa3, 0x08, 0x1f,
+  0x2d, 0x16, 0x8e, 0x03, 0x2b, 0xb7, 0x39, 0x81, 0xac, 0xfc, 0xc6, 0x8b,
+  0x2c, 0xc7, 0x7b, 0x5c, 0x9e, 0x92, 0x80, 0x25, 0x5a, 0x4d, 0xc1, 0xd8,
+  0xa1, 0xa4, 0xfd, 0xdc, 0xa0, 0xa1, 0x63, 0x48, 0x3b, 0xa7, 0xb3, 0xe1,
+  0x35, 0x00, 0x03, 0xf1, 0x51, 0x64, 0x11, 0x15, 0x0d, 0x2e, 0x81, 0x22,
+  0x2b, 0xdf, 0x13, 0x9e, 0x01, 0x1e, 0x4f, 0x52, 0x04, 0x14, 0xdf, 0x12,
+  0x15, 0x35, 0x1a, 0x93, 0x00, 0xff, 0x5a, 0x88, 0x9b, 0xac, 0x0c, 0x8d,
+  0x0e, 0x85, 0xa5, 0x84, 0x45, 0x28, 0x74, 0x63, 0xb0, 0x87, 0x29, 0xa9,
+  0x01, 0xae, 0x48, 0xcd, 0x75, 0x8e, 0xcd, 0x2f, 0x0d, 0x04, 0x67, 0x1c,
+  0x40, 0xb1, 0xee, 0x4a, 0xca, 0x2c, 0x3d, 0xc0, 0x5d, 0x57, 0x65, 0x3a,
+  0x19, 0x87, 0x31, 0x04, 0x82, 0xac, 0x42, 0xd0, 0x2f, 0x4b, 0xc5, 0x05,
+  0x50, 0x6a, 0xc5, 0xcd, 0x4a, 0x09, 0x22, 0x1a, 0x7d, 0x93, 0xbe, 0x69,
+  0x58, 0x08, 0xd1, 0x89, 0x4c, 0xac, 0x71, 0x0e, 0xc6, 0xd5, 0x86, 0x4e,
+  0x75, 0x4b, 0xbf, 0x66, 0xfd, 0x8c, 0x20, 0x60, 0x9b, 0x53, 0x51, 0x58,
+  0x17, 0x09, 0xba, 0x8c, 0x6f, 0x99, 0xe1, 0x00, 0x25, 0xf2, 0xf6, 0xb8,
+  0xd0, 0x2f, 0xfa, 0xcd, 0x7d, 0x9a, 0xb3, 0xa8, 0x96, 0x34, 0xab, 0x0a,
+  0xf3, 0xef, 0x2a, 0x71, 0x45, 0xf1, 0xfb, 0x84, 0x76, 0x8d, 0xa7, 0xcb,
+  0x19, 0x66, 0xec, 0xd7, 0x3f, 0xaa, 0x6a, 0x43, 0xe0, 0x7b, 0xf2, 0x3e,
+  0x83, 0x44, 0x3f, 0x57, 0x1c, 0x8a, 0x33, 0xae, 0x3d, 0x6d, 0x86, 0x49,
+  0xaa, 0x18, 0x0f, 0x92, 0x85, 0x6e, 0x45, 0xed, 0x4f, 0x5b, 0xd2, 0x2e,
+  0x39, 0xdc, 0x46, 0xa9, 0x9e, 0xc9, 0x5e, 0xe8, 0xbe, 0x86, 0xe8, 0xa7,
+  0x00, 0x19, 0xd6, 0x43, 0x48, 0x3e, 0x53, 0x0f, 0x45, 0x8b, 0xf2, 0x76,
+  0x04, 0xe1, 0x83, 0x92, 0x2e, 0x4d, 0x3a, 0x98, 0x9c, 0x20, 0x02, 0xb6,
+  0x19, 0x28, 0xbe, 0x97, 0x71, 0x81, 0xc3, 0x35, 0x37, 0xc9, 0xcb, 0x50,
+  0x15, 0xb3, 0x01, 0x26, 0x3f, 0x01, 0xc7, 0x68, 0x49, 0xf3, 0xb4, 0x03,
+  0x52, 0x17, 0xae, 0x04, 0x4b, 0xa2, 0x51, 0x00, 0x31, 0xb3, 0x88, 0xed,
+  0x51, 0x9a, 0x08, 0x06, 0x43, 0xe6, 0x8c, 0xc6, 0x15, 0x30, 0x20, 0x73,
+  0xc4, 0x2d, 0x9e, 0x2c, 0x2d, 0x1d, 0x5e, 0xa4, 0x92, 0x95, 0x21, 0xb6,
+  0x9e, 0x44, 0x59, 0x31, 0xde, 0x81, 0x07, 0x51, 0xd4, 0x39, 0x38, 0xd8,
+  0xed, 0x98, 0x50, 0xfa, 0x26, 0x81, 0x13, 0x10, 0x4f, 0x89, 0x0f, 0xed,
+  0xe0, 0x63, 0x9c, 0x37, 0x90, 0xa2, 0xcf, 0x96, 0xb8, 0x08, 0xf5, 0xe4,
+  0xb0, 0xd1, 0xf3, 0xf3, 0x67, 0x47, 0x17, 0x47, 0xd1, 0x21, 0x50, 0xd5,
+  0x37, 0x3e, 0x70, 0x9a, 0xc5, 0x5e, 0x6d, 0xf8, 0xeb, 0x15, 0x2c, 0x9e,
+  0xdc, 0xff, 0x55, 0x71, 0x27, 0x36, 0xe5, 0x71, 0x26, 0xc0, 0x0e, 0x57,
+  0xb9, 0x07, 0x4d, 0x66, 0xc0, 0xee, 0x7b, 0x8a, 0x0f, 0x3c, 0x2f, 0xb2,
+  0x29, 0x22, 0x19, 0xe1, 0xc3, 0xb6, 0x69, 0x9c, 0x2e, 0x32, 0xa7, 0xc5,
+  0xac, 0xc6, 0x61, 0x8f, 0xcf, 0x4e, 0xdf, 0xbe, 0x7a, 0xdd, 0x8f, 0x0e,
+  0x11, 0xb8, 0x97, 0x8c, 0x39, 0x37, 0xd9, 0xc8, 0xaf, 0x1f, 0xc1, 0xfc,
+  0xb0, 0xdb, 0xa8, 0x26, 0x60, 0xb5, 0x5c, 0x93, 0xd7, 0x5e, 0xd6, 0xb4,
+  0xa3, 0x36, 0x78, 0x2b, 0xd3, 0x19, 0xf7, 0xa6, 0xf1, 0x0e, 0xd8, 0x7a,
+  0x22, 0xc0, 0xf3, 0xa8, 0x6e, 0x02, 0x91, 0x5f, 0x22, 0x0d, 0xc4, 0x83,
+  0xa4, 0x90, 0xfc, 0xcb, 0x9b, 0x59, 0x00, 0x7a, 0x98, 0x64, 0x71, 0x1c,
+  0x9e, 0x53, 0x18, 0x80, 0x6b, 0x0d, 0x80, 0x10, 0xb8, 0x60, 0x6c, 0x3a,
+  0xa4, 0x4b, 0x29, 0x90, 0x46, 0x3c, 0xf6, 0xa6, 0x56, 0xb9, 0xe7, 0x18,
+  0xce, 0xd7, 0xbb, 0xe3, 0xa3, 0x77, 0xdf, 0xbd, 0x7d, 0xfd, 0xec, 0xf4,
+  0x24, 0x5c, 0xb1, 0x41, 0xd7, 0xa0, 0x36, 0x41, 0x91, 0xa3, 0x40, 0xe2,
+  0x4c, 0x50, 0x23, 0x62, 0x7d, 0xb1, 0xd1, 0xee, 0x8b, 0xb3, 0x57, 0x27,
+  0x41, 0x52, 0xd0, 0x16, 0xc5, 0xc7, 0xc8, 0xf6, 0x20, 0xb3, 0x63, 0x34,
+  0x19, 0xb8, 0x19, 0x86, 0xef, 0x4b, 0x5d, 0x1f, 0xa6, 0x08, 0x8e, 0x1c,
+  0xc9, 0x3c, 0x00, 0x8e, 0x0c, 0xc3, 0x47, 0x68, 0xd7, 0x1b, 0x54, 0x61,
+  0xd6, 0x27, 0x23, 0x61, 0xb9, 0xca, 0x66, 0x0b, 0xc6, 0x72, 0xa7, 0xd6,
+  0xa3, 0x1f, 0x9f, 0x7d, 0xff, 0xee, 0xf8, 0xec, 0x75, 0xf3, 0xb8, 0x3e,
+  0x7f, 0xf9, 0x3d, 0x0d, 0xbd, 0x31, 0x9b, 0x7e, 0xff, 0xf4, 0xdd, 0x77,
+  0x47, 0xc7, 0x7f, 0x39, 0x79, 0xfd, 0x2c, 0x3a, 0x74, 0x12, 0x7a, 0x03,
+  0x93, 0x5b, 0x85, 0x86, 0xd0, 0xd1, 0x4c, 0xe2, 0x8e, 0x05, 0xa1, 0x17,
+  0x47, 0x6d, 0xd6, 0xbc, 0x7c, 0x39, 0x5b, 0xd6, 0x20, 0x04, 0xb8, 0xcd,
+  0x10, 0x64, 0x01, 0x25, 0x4c, 0x63, 0x7c, 0x8a, 0x33, 0x24, 0xd1, 0x69,
+  0x97, 0xe1, 0x64, 0xd9, 0xd5, 0x16, 0x79, 0x3f, 0x35, 0x3e, 0x83, 0xd6,
+  0x64, 0x9a, 0x00, 0x41, 0x3b, 0xf6, 0x61, 0xed, 0x3c, 0x52, 0x19, 0xe8,
+  0xc6, 0x00, 0x6b, 0x93, 0xd1, 0xfa, 0x3a, 0x7f, 0x4f, 0xd0, 0x7f, 0x8a,
+  0x2c, 0x4d, 0xcd, 0x86, 0x60, 0x4b, 0x04, 0xef, 0x30, 0xb1, 0xb3, 0x76,
+  0xcf, 0x86, 0x05, 0xe9, 0x66, 0xd1, 0xb0, 0x4a, 0xee, 0x2c, 0x48, 0x6b,
+  0x18, 0xad, 0x3a, 0x9c, 0xe7, 0x6b, 0x86, 0x2b, 0xf7, 0xc4, 0x26, 0xce,
+  0x3b, 0x76, 0xe6, 0xbd, 0x75, 0x00, 0x0b, 0x93, 0x14, 0x65, 0x39, 0xe9,
+  0x46, 0x97, 0xb3, 0x45, 0x35, 0x01, 0xbe, 0x75, 0x59, 0xbe, 0xcf, 0xbc,
+  0x8c, 0x19, 0x60, 0x06, 0x23, 0xfa, 0x76, 0x56, 0xc2, 0x3f, 0xf9, 0x1c,
+  0x1a, 0xc0, 0x77, 0x8a, 0x45, 0x49, 0x9f, 0x96, 0xc0, 0x24, 0x66, 0xb3,
+  0x94, 0xb0, 0xb2, 0x31, 0x21, 0x97, 0xed, 0xf5, 0xb8, 0x8b, 0x70, 0xa6,
+  0xf2, 0x89, 0x97, 0xdd, 0x0c, 0x2f, 0x9b, 0x01, 0x2f, 0x3b, 0x42, 0x4c,
+  0xda, 0xe2, 0x6c, 0xc4, 0xff, 0xe8, 0x60, 0x36, 0xd9, 0xa6, 0x53, 0x15,
+  0x84, 0xb9, 0x2b, 0x2f, 0x71, 0x93, 0x93, 0x90, 0xa1, 0xb3, 0x17, 0x9d,
+  0x22, 0xee, 0x86, 0x24, 0x1d, 0x18, 0x60, 0x28, 0x8e, 0x97, 0x10, 0xa5,
+  0x53, 0x54, 0xd2, 0x9e, 0x73, 0xc4, 0x7d, 0x48, 0x1c, 0x39, 0x59, 0x7a,
+  0x92, 0xd8, 0xc0, 0xc5, 0x98, 0xb3, 0xa4, 0x09, 0x9a, 0xf9, 0xfd, 0xf5,
+  0xf4, 0xec, 0xfb, 0x67, 0x2f, 0xdf, 0xd0, 0x14, 0x9d, 0xda, 0x25, 0xa1,
+  0xd9, 0x86, 0x0e, 0x55, 0x1d, 0xfa, 0xa1, 0x6b, 0x60, 0xcb, 0xab, 0x86,
+  0x98, 0xd7, 0xc4, 0xef, 0x76, 0xf4, 0xc3, 0x44, 0xc2, 0x74, 0x9d, 0x65,
+  0xaa, 0x53, 0x18, 0x72, 0xe3, 0xd1, 0x02, 0x63, 0xe1, 0xff, 0x31, 0xc9,
+  0x2f, 0xcb, 0x40, 0x74, 0x26, 0x9f, 0x5c, 0xd3, 0x40, 0xd7, 0x80, 0x48,
+  0xb2, 0xf9, 0x84, 0xe9, 0x0b, 0xff, 0x1d, 0x49, 0xe2, 0x2a, 0xaf, 0x27,
+  0x82, 0x7c, 0x86, 0xbc, 0xe3, 0x4e, 0x08, 0x56, 0x36, 0x8a, 0x36, 0x81,
+  0xfe, 0xaf, 0xd2, 0xdb, 0xad, 0x5e, 0xf4, 0x8c, 0xae, 0xdc, 0xd4, 0x29,
+  0xf6, 0x59, 0xa6, 0x8a, 0x60, 0xf0, 0xff, 0x2d, 0xee, 0xda, 0x7a, 0xdb,
+  0x56, 0x8e, 0xf0, 0xbb, 0x7e, 0x05, 0x11, 0x14, 0x68, 0x0e, 0xe0, 0xab,
+  0x2c, 0xc9, 0x52, 0x1e, 0x1a, 0x38, 0xb6, 0x4e, 0x6c, 0x9c, 0x24, 0x36,
+  0x44, 0x25, 0x4e, 0x81, 0x02, 0x05, 0x6d, 0xd1, 0x32, 0x1b, 0x99, 0xf2,
+  0xa1, 0xa4, 0x63, 0x3b, 0xbf, 0xbe, 0x3b, 0xf3, 0xcd, 0xec, 0x0e, 0xb9,
+  0x54, 0xda, 0x93, 0x3e, 0xf4, 0xc5, 0xb0, 0x69, 0x72, 0x97, 0xbb, 0x9c,
+  0x9d, 0xfb, 0x7c, 0xa3, 0xd1, 0xdc, 0xdb, 0x58, 0x50, 0x3a, 0xbb, 0x81,
+  0xf8, 0x3e, 0x83, 0x2e, 0xec, 0x25, 0xd7, 0x04, 0x55, 0x8a, 0xcd, 0xbb,
+  0x71, 0x02, 0x81, 0x5b, 0xe1, 0xb6, 0x40, 0x13, 0xa4, 0xe7, 0xe3, 0x0f,
+  0x1f, 0x18, 0x01, 0x6b, 0x06, 0x6c, 0xd6, 0x2f, 0x1f, 0xd3, 0xa4, 0xce,
+  0x8d, 0xdd, 0xde, 0xcd, 0x72, 0xc6, 0x21, 0x2d, 0xee, 0x3c, 0x34, 0xf7,
+  0xd9, 0xe9, 0x07, 0x52, 0xc5, 0x33, 0x42, 0x75, 0x2b, 0x9e, 0x5f, 0x45,
+  0xfd, 0x0d, 0x73, 0x8b, 0xa8, 0x4a, 0x1c, 0xf5, 0x74, 0x3c, 0x99, 0xfe,
+  0x53, 0x29, 0xe0, 0xcf, 0x4a, 0x1e, 0xae, 0x99, 0x69, 0x48, 0x1e, 0x3f,
+  0x28, 0xb9, 0x52, 0xda, 0x9b, 0x42, 0xfd, 0x8c, 0x40, 0x73, 0xc3, 0xfe,
+  0x36, 0xfe, 0xbb, 0xa3, 0x56, 0x0c, 0xeb, 0x9b, 0xc2, 0xfc, 0xad, 0x1d,
+  0x33, 0x0d, 0x5e, 0x87, 0x6d, 0xb6, 0x46, 0x28, 0x68, 0x12, 0xa4, 0x4b,
+  0x29, 0xb2, 0x8a, 0xd5, 0x39, 0xf6, 0xdd, 0x49, 0xb7, 0x64, 0x42, 0x02,
+  0x14, 0x60, 0x57, 0x92, 0x78, 0x81, 0x4c, 0x24, 0xbd, 0x99, 0x0a, 0x83,
+  0xb9, 0x48, 0xea, 0x9e, 0xc1, 0xea, 0x98, 0xdf, 0xc6, 0x96, 0x1c, 0x40,
+  0x70, 0x00, 0xec, 0x46, 0x76, 0x5d, 0xb6, 0x78, 0xf9, 0x0e, 0x85, 0x90,
+  0x66, 0x71, 0xac, 0xe9, 0x8e, 0xcc, 0x54, 0x37, 0x20, 0x61, 0x9c, 0x21,
+  0x20, 0x82, 0x8f, 0x5b, 0xe6, 0x91, 0xe9, 0x05, 0xe8, 0x7b, 0x1e, 0x02,
+  0x14, 0x41, 0xd8, 0x08, 0xda, 0x82, 0xe1, 0x9a, 0x3a, 0xd3, 0x3a, 0xf5,
+  0xe8, 0x9b, 0xb8, 0xc7, 0x9f, 0x02, 0xe5, 0xa1, 0x94, 0x79, 0x11, 0x77,
+  0xa7, 0x79, 0xa2, 0x61, 0x2c, 0x58, 0xc6, 0x9b, 0xe4, 0xd2, 0xb1, 0x53,
+  0xb7, 0xf9, 0x0c, 0xc0, 0x45, 0x3a, 0x91, 0x63, 0xa3, 0xef, 0x96, 0xa4,
+  0x07, 0xf3, 0xc5, 0xe4, 0x7d, 0xb9, 0xe1, 0x5e, 0xd0, 0xc9, 0xa7, 0x34,
+  0x6d, 0xc1, 0x1d, 0x24, 0xfe, 0xea, 0x6e, 0x34, 0x1e, 0xa3, 0x74, 0x3c,
+  0x71, 0x06, 0x0e, 0xbe, 0xe2, 0xff, 0x43, 0x4b, 0x65, 0x2d, 0x6c, 0x47,
+  0x95, 0xd5, 0x9d, 0x30, 0x3a, 0x6b, 0xaa, 0x28, 0xbb, 0x84, 0xae, 0x9a,
+  0xc4, 0x0a, 0x5f, 0x43, 0xd9, 0xd3, 0x16, 0x09, 0x7c, 0x0e, 0x5e, 0xfd,
+  0xc5, 0xac, 0xed, 0x1f, 0x27, 0x8f, 0x28, 0x0a, 0x22, 0x2e, 0x72, 0x46,
+  0x10, 0x87, 0x61, 0x0b, 0x9a, 0xcc, 0x79, 0x9b, 0x78, 0x09, 0x0c, 0xde,
+  0x37, 0xbc, 0x86, 0x2a, 0xdc, 0xd8, 0x13, 0x56, 0xa6, 0x74, 0x5b, 0x44,
+  0x6c, 0xc4, 0x38, 0xac, 0x64, 0xdc, 0xd7, 0x45, 0x88, 0x36, 0xfb, 0x80,
+  0xa7, 0xc3, 0xfd, 0x9c, 0x5e, 0x3a, 0xad, 0xdc, 0xfd, 0x32, 0xfe, 0xf5,
+  0xe2, 0x6b, 0xf0, 0x82, 0x4e, 0x83, 0x8b, 0x05, 0x65, 0xfb, 0x51, 0x8b,
+  0x25, 0x81, 0xe7, 0x35, 0x8e, 0x1b, 0x96, 0x35, 0xc5, 0x33, 0x92, 0x5a,
+  0x00, 0x07, 0xea, 0x01, 0x10, 0xea, 0x7a, 0xf6, 0xf3, 0x4b, 0x80, 0xf5,
+  0x08, 0x5b, 0x44, 0xcb, 0xb7, 0xfe, 0x1b, 0x56, 0xc2, 0xad, 0xd3, 0x69,
+  0xdd, 0x7c, 0x29, 0xb7, 0x40, 0xb1, 0xb7, 0xe4, 0x02, 0x39, 0xcb, 0x3b,
+  0x46, 0x4f, 0x87, 0x4d, 0x96, 0x99, 0x36, 0x40, 0x4e, 0x69, 0xdb, 0x31,
+  0x03, 0x29, 0x37, 0x5a, 0xbb, 0x83, 0xb7, 0x06, 0x43, 0xd2, 0x9c, 0xeb,
+  0x86, 0xd1, 0xcb, 0x58, 0x71, 0x7e, 0x98, 0xfa, 0x22, 0x64, 0xe5, 0x62,
+  0x3d, 0x72, 0xae, 0x2b, 0x45, 0x92, 0x56, 0x6f, 0x6a, 0x2e, 0x4c, 0xb7,
+  0x45, 0xad, 0x98, 0x9f, 0x00, 0xcc, 0x63, 0x0f, 0x7a, 0x73, 0x76, 0x9e,
+  0x55, 0xbf, 0x20, 0xdc, 0x5b, 0x9a, 0xde, 0xda, 0x52, 0x02, 0x46, 0x9b,
+  0x2f, 0xc7, 0xa5, 0xee, 0x3c, 0x5d, 0xfd, 0x60, 0xea, 0x78, 0xe5, 0x11,
+  0xcc, 0x12, 0xe1, 0x75, 0xac, 0x7a, 0x3f, 0x1a, 0x83, 0x1c, 0xdb, 0xbf,
+  0x6f, 0x0a, 0xc7, 0xbe, 0x73, 0x24, 0x42, 0xee, 0xee, 0xe2, 0xa1, 0xc6,
+  0x18, 0xd9, 0x4f, 0x0d, 0x92, 0xd5, 0x47, 0xe9, 0xff, 0xcc, 0x20, 0xfd,
+  0xc6, 0x18, 0xf7, 0x3f, 0x35, 0xc8, 0xae, 0xba, 0xba, 0x3a, 0x9d, 0xf1,
+  0xd7, 0x8b, 0xa9, 0x33, 0x68, 0xcf, 0x6a, 0x67, 0xa6, 0x12, 0x8e, 0x42,
+  0x6a, 0x74, 0xe9, 0x28, 0xcf, 0x3d, 0x3a, 0x2b, 0xee, 0x58, 0x01, 0x5b,
+  0x4b, 0xd9, 0x04, 0x85, 0xe2, 0x56, 0x0a, 0x9e, 0x58, 0x54, 0x68, 0xdf,
+  0x44, 0x09, 0xd3, 0x1c, 0x8b, 0x31, 0x08, 0xc0, 0xa6, 0xe2, 0x79, 0x15,
+  0x50, 0x33, 0x50, 0xbb, 0x88, 0x16, 0xe3, 0x7e, 0xc4, 0x12, 0x08, 0xa7,
+  0x0c, 0x8d, 0xb7, 0x56, 0x7f, 0x53, 0xc1, 0xe0, 0xc8, 0x9e, 0x99, 0x31,
+  0x07, 0xa1, 0x38, 0x08, 0x37, 0x6e, 0x00, 0x30, 0x22, 0x5b, 0x68, 0x33,
+  0x90, 0x6d, 0xa0, 0xd5, 0x03, 0x11, 0xbe, 0x48, 0x0e, 0x54, 0x2c, 0x8f,
+  0xd0, 0x83, 0x2e, 0xe0, 0x7f, 0xd4, 0xe0, 0xb0, 0xb3, 0x5b, 0xb7, 0x14,
+  0x6d, 0xa0, 0x15, 0x9b, 0x05, 0x04, 0x30, 0x5a, 0x6d, 0x9a, 0x39, 0x12,
+  0x87, 0x22, 0x20, 0xca, 0xda, 0xd1, 0xe2, 0x43, 0x25, 0x12, 0x8c, 0x14,
+  0xcf, 0x99, 0x22, 0x42, 0x6a, 0x50, 0x6a, 0x55, 0x03, 0x22, 0x8c, 0x14,
+  0x6b, 0x3f, 0x84, 0x9f, 0xa7, 0x2b, 0x56, 0x66, 0x56, 0x2c, 0xa0, 0xae,
+  0x4b, 0x05, 0x70, 0xf1, 0xdd, 0xa8, 0x1b, 0x47, 0xde, 0x97, 0xed, 0xb6,
+  0x7a, 0xc1, 0x69, 0xe7, 0x33, 0x1c, 0xc1, 0xd5, 0x4b, 0xb9, 0xce, 0x9e,
+  0x59, 0x11, 0x26, 0xb6, 0x22, 0x2d, 0xb7, 0xc2, 0x93, 0x3d, 0xad, 0xc3,
+  0xf3, 0x8d, 0xbd, 0x88, 0x37, 0x69, 0x78, 0x53, 0xc3, 0xd7, 0x21, 0xb1,
+  0x41, 0x21, 0x9f, 0x45, 0x27, 0x2d, 0x2a, 0x86, 0x16, 0xdc, 0xed, 0xb4,
+  0x14, 0xff, 0xf8, 0x49, 0x15, 0x3f, 0x7a, 0x89, 0x54, 0xa6, 0xfc, 0x99,
+  0x64, 0x4d, 0xc1, 0xa9, 0xfc, 0xda, 0x43, 0x88, 0x34, 0x54, 0xde, 0x2f,
+  0xe9, 0x9b, 0xdb, 0xf0, 0xd7, 0x59, 0x30, 0x55, 0x55, 0x89, 0x66, 0x4b,
+  0xde, 0x40, 0xb4, 0x9d, 0x70, 0xfb, 0x76, 0x93, 0x11, 0x74, 0x3d, 0x43,
+  0xba, 0x66, 0x25, 0x9c, 0x17, 0xfa, 0x05, 0xda, 0xe1, 0x26, 0xc3, 0x26,
+  0xf4, 0xc5, 0x6e, 0xf7, 0xde, 0x6e, 0x01, 0x4b, 0xb4, 0xbc, 0x0c, 0xae,
+  0x3b, 0x09, 0x0b, 0x91, 0xc3, 0xf0, 0xd6, 0xdf, 0xcd, 0x29, 0x28, 0xf1,
+  0x26, 0xac, 0x1a, 0x49, 0x4d, 0x03, 0x3b, 0x0b, 0x1e, 0xd4, 0x79, 0xd0,
+  0x2b, 0x2a, 0x4c, 0x63, 0xf3, 0xf0, 0xc2, 0x3c, 0x37, 0xf9, 0x7f, 0x31,
+  0xcb, 0x71, 0x93, 0x5e, 0x4c, 0x8a, 0x1f, 0x4f, 0xe3, 0xef, 0x1c, 0x4a,
+  0xc0, 0x3b, 0x27, 0x1c, 0x4f, 0x89, 0x47, 0x54, 0xf9, 0xe3, 0x42, 0x16,
+  0x2c, 0x57, 0x38, 0x03, 0x9d, 0x83, 0xd6, 0x70, 0xb4, 0xf8, 0xb7, 0x71,
+  0xb6, 0xbc, 0x8d, 0xad, 0x8d, 0x64, 0x5e, 0x27, 0x01, 0xe0, 0x98, 0xa5,
+  0xe6, 0x02, 0x85, 0x27, 0x43, 0x0c, 0x86, 0x4b, 0x54, 0xa1, 0xee, 0x84,
+  0xe2, 0xd2, 0xff, 0xad, 0x4f, 0xc4, 0x40, 0x85, 0x70, 0xab, 0x1b, 0xaf,
+  0x01, 0xed, 0xd8, 0xa6, 0x02, 0x0e, 0x70, 0xb0, 0xc1, 0x18, 0x77, 0x26,
+  0x2b, 0xa5, 0xcb, 0x52, 0x45, 0x65, 0x77, 0x7b, 0xc9, 0xc7, 0x65, 0x54,
+  0xb9, 0xbc, 0xbc, 0x5b, 0x0b, 0xc2, 0x38, 0xd5, 0xf5, 0x62, 0x7b, 0x9c,
+  0xb5, 0x3d, 0x17, 0x1d, 0xdb, 0xf4, 0xdf, 0x24, 0xca, 0xf7, 0x01, 0x6c,
+  0xc7, 0x6f, 0xd8, 0x57, 0x5c, 0xb6, 0xbc, 0x5d, 0xb3, 0x66, 0xfe, 0xf0,
+  0xc0, 0xef, 0x03, 0x2f, 0x8b, 0x8a, 0xb2, 0xf9, 0x5b, 0x38, 0x63, 0x8a,
+  0xbb, 0x2e, 0x3e, 0x65, 0xcc, 0xc9, 0xbc, 0xa5, 0x1c, 0x22, 0x41, 0xfa,
+  0xa5, 0x48, 0x9b, 0x8d, 0xbd, 0xdf, 0x5c, 0x53, 0x95, 0x21, 0xc1, 0x04,
+  0xc5, 0xfa, 0x00, 0x92, 0x12, 0xb9, 0xb9, 0xc3, 0x01, 0x52, 0xcf, 0xa8,
+  0x91, 0x25, 0xcd, 0x90, 0x29, 0x54, 0x29, 0xbe, 0x25, 0xee, 0x4f, 0x5d,
+  0xb5, 0x8c, 0xfd, 0x18, 0x7a, 0x23, 0x98, 0xf5, 0x1c, 0xfa, 0xf5, 0x3c,
+  0x31, 0xa5, 0x5c, 0x9d, 0xa4, 0xa9, 0xd2, 0xc9, 0x69, 0x0b, 0x49, 0xa8,
+  0x17, 0x79, 0xf1, 0xe2, 0x1b, 0x26, 0xc5, 0x3c, 0x55, 0x06, 0x69, 0x94,
+  0x2b, 0x1c, 0x82, 0xd9, 0x9d, 0x01, 0x3d, 0xbc, 0x7d, 0xb9, 0x4f, 0xb5,
+  0x4d, 0x04, 0x94, 0x78, 0xa3, 0xd9, 0x41, 0xbb, 0x81, 0x8c, 0x3c, 0x65,
+  0xda, 0x66, 0x06, 0xe8, 0xd5, 0xfc, 0x2d, 0x72, 0x78, 0x3a, 0x8e, 0x44,
+  0x8c, 0xcc, 0xbc, 0xc8, 0x51, 0xbc, 0xe8, 0x2f, 0x58, 0xd4, 0xce, 0xff,
+  0xb4, 0xe8, 0x2f, 0x2d, 0x8b, 0xee, 0x35, 0xe6, 0xea, 0x76, 0x8f, 0x05,
+  0x03, 0xa9, 0xb6, 0xc1, 0xe0, 0x18, 0x98, 0x0d, 0x2b, 0x76, 0x37, 0xee,
+  0x6a, 0xf3, 0xf5, 0xc8, 0x13, 0x1f, 0x4e, 0xaf, 0x99, 0xaa, 0xef, 0xa7,
+  0xba, 0xcd, 0x4a, 0x1a, 0x8f, 0xd4, 0x37, 0x30, 0x9f, 0x98, 0xf9, 0x69,
+  0x80, 0x8c, 0x82, 0x1e, 0x4f, 0x54, 0xd5, 0xb6, 0xa5, 0x12, 0x45, 0x5f,
+  0xc3, 0xcc, 0x33, 0xf0, 0xb1, 0xe9, 0xfd, 0xae, 0xe6, 0xc6, 0x9f, 0x30,
+  0x93, 0x5e, 0xe4, 0x0f, 0x4c, 0x9a, 0xf0, 0x05, 0x04, 0xed, 0x18, 0x98,
+  0x9e, 0x77, 0x55, 0xc6, 0x2d, 0xc5, 0x17, 0xd9, 0x4b, 0x4b, 0x4f, 0x27,
+  0xc9, 0x9a, 0xa2, 0xe8, 0x10, 0x77, 0x00, 0x9d, 0xe7, 0x25, 0x45, 0x41,
+  0x58, 0x25, 0x11, 0xbf, 0x24, 0x79, 0x36, 0x39, 0x65, 0xfe, 0xce, 0xa7,
+  0x2c, 0xc9, 0xac, 0x11, 0xbe, 0x38, 0x65, 0x40, 0xac, 0x9b, 0x08, 0x2d,
+  0xed, 0xbd, 0xe8, 0x0e, 0x8f, 0xc3, 0xbe, 0xf9, 0x6d, 0x22, 0x9b, 0x1d,
+  0xcd, 0x10, 0xec, 0xe6, 0x09, 0x3b, 0x31, 0x89, 0xa0, 0x5a, 0x71, 0x1d,
+  0xd1, 0xa5, 0x3c, 0x1c, 0x66, 0x01, 0x43, 0xbe, 0x22, 0x6e, 0x27, 0x5d,
+  0x85, 0xf7, 0x9c, 0x81, 0x49, 0x0a, 0x0a, 0xda, 0x14, 0x4b, 0x98, 0x11,
+  0x56, 0x7b, 0x16, 0xd2, 0xe5, 0xea, 0xa4, 0x3b, 0x6a, 0x79, 0x57, 0x2d,
+  0x5f, 0xd9, 0x17, 0x46, 0x1b, 0x7a, 0xcd, 0x68, 0x4e, 0x53, 0x9e, 0x4c,
+  0xc6, 0xd3, 0x09, 0x27, 0x7d, 0x13, 0x0b, 0x88, 0x6c, 0xed, 0xac, 0xfa,
+  0xc5, 0x77, 0x43, 0x11, 0x7e, 0x16, 0x54, 0x94, 0xc0, 0x22, 0xd0, 0x28,
+  0xcb, 0x7f, 0x71, 0xfc, 0xa9, 0xcf, 0xf9, 0xa2, 0x5c, 0x6c, 0x79, 0xc8,
+  0x07, 0xad, 0xb7, 0xf0, 0xea, 0x76, 0x43, 0x45, 0xd3, 0x23, 0x7d, 0x13,
+  0x10, 0xa5, 0x20, 0x31, 0xec, 0x49, 0x75, 0x8a, 0xa2, 0xf7, 0x90, 0xce,
+  0xa3, 0x8a, 0x06, 0x0a, 0xf5, 0x96, 0x55, 0x9b, 0x34, 0xf6, 0xf5, 0xc0,
+  0xa2, 0x1b, 0x68, 0x2d, 0xb0, 0xe9, 0xd8, 0x85, 0x22, 0x77, 0xc3, 0x43,
+  0xd1, 0x17, 0xb7, 0x77, 0x70, 0x10, 0x17, 0xf9, 0x67, 0x37, 0x8e, 0xad,
+  0x8a, 0xa2, 0x27, 0x28, 0x5c, 0x40, 0xe6, 0xe1, 0xef, 0xc5, 0xaa, 0xee,
+  0x8a, 0xec, 0x9e, 0xdd, 0x5d, 0xda, 0xad, 0xd8, 0xb8, 0xe9, 0x82, 0xc3,
+  0x5c, 0x33, 0x24, 0x98, 0xec, 0x57, 0x83, 0xb1, 0x00, 0x2e, 0x0c, 0x05,
+  0x54, 0xc1, 0xf1, 0xc8, 0x0e, 0x3c, 0xc9, 0xb0, 0x8a, 0xde, 0x2a, 0xe2,
+  0xde, 0xdd, 0x70, 0xe2, 0x2d, 0x1b, 0x49, 0xa7, 0x97, 0x13, 0x21, 0xb0,
+  0x58, 0x3a, 0x73, 0xbd, 0x03, 0xdd, 0xe0, 0x15, 0xe7, 0x9d, 0x96, 0x06,
+  0x15, 0x7c, 0x52, 0x68, 0x5c, 0xdf, 0x7e, 0xd6, 0xcc, 0x8a, 0xf3, 0x3f,
+  0x21, 0xe0, 0x38, 0x59, 0xdb, 0x17, 0x01, 0xc5, 0xd4, 0x86, 0xc4, 0x7a,
+  0x2a, 0xcd, 0x43, 0x38, 0x64, 0x97, 0x38, 0xbd, 0x00, 0x81, 0x24, 0x1a,
+  0x12, 0x38, 0x48, 0x6a, 0x68, 0x2c, 0x0e, 0x0a, 0x2d, 0xa2, 0x8b, 0xe8,
+  0x10, 0x07, 0xe8, 0x32, 0xf4, 0x9c, 0x06, 0x7f, 0x97, 0x45, 0x7a, 0x83,
+  0x9c, 0x2e, 0x73, 0x4a, 0x15, 0x7a, 0x32, 0x4b, 0x55, 0x52, 0x86, 0xec,
+  0x82, 0xdb, 0xdd, 0x48, 0x7c, 0x58, 0xdb, 0xc0, 0xda, 0x2c, 0x41, 0xfd,
+  0x36, 0x32, 0xff, 0xea, 0x72, 0x32, 0x4d, 0xbc, 0xc8, 0xe7, 0x99, 0xf9,
+  0x52, 0xe3, 0xf0, 0x10, 0x14, 0x00, 0x7b, 0x6f, 0x02, 0xee, 0x4e, 0x94,
+  0xe2, 0x21, 0xa6, 0xc2, 0xba, 0x31, 0xc4, 0x0e, 0x47, 0xed, 0x66, 0x4b,
+  0xb8, 0x50, 0x03, 0xa3, 0x11, 0x2f, 0x32, 0x4b, 0x99, 0x6d, 0xed, 0x8f,
+  0x02, 0xb0, 0xf4, 0xd1, 0x61, 0x0b, 0x9f, 0x20, 0x71, 0x30, 0x19, 0xa7,
+  0x53, 0xec, 0x18, 0xfd, 0x16, 0xbd, 0x37, 0x70, 0x6b, 0xe5, 0x62, 0x64,
+  0xbf, 0x78, 0xca, 0xa0, 0xf2, 0x31, 0xf2, 0x60, 0xd3, 0xf8, 0x1e, 0xe0,
+  0xd7, 0xec, 0xd8, 0x91, 0xa9, 0x5a, 0x64, 0x8e, 0x29, 0x74, 0xc2, 0x87,
+  0x9b, 0x2f, 0xbc, 0x92, 0x49, 0x5e, 0x39, 0xb5, 0x4c, 0x0e, 0xc4, 0xb2,
+  0xfa, 0x66, 0x86, 0xe8, 0x19, 0x36, 0x41, 0x62, 0x4a, 0x46, 0xb8, 0x00,
+  0x66, 0xf2, 0x82, 0x2f, 0xee, 0x2a, 0xad, 0xb0, 0xac, 0x00, 0x55, 0xe0,
+  0xbe, 0x30, 0x4e, 0xdf, 0x07, 0x79, 0x54, 0x53, 0x30, 0xef, 0x42, 0x97,
+  0xb5, 0xd0, 0x87, 0xb5, 0xb6, 0x06, 0xcd, 0x1d, 0x81, 0xd4, 0xdf, 0x65,
+  0xb3, 0x50, 0x73, 0x88, 0xb5, 0xd7, 0xa4, 0x82, 0x44, 0x13, 0x59, 0x47,
+  0xcb, 0xaa, 0x45, 0x41, 0xd9, 0x2b, 0x37, 0xb0, 0x1a, 0xe9, 0xb1, 0xb6,
+  0xc6, 0xdb, 0x66, 0x0e, 0x11, 0x3f, 0xe4, 0x84, 0xbc, 0x35, 0x62, 0xda,
+  0x4d, 0x85, 0x33, 0x1c, 0x94, 0x7d, 0x8a, 0x26, 0x79, 0x21, 0xb1, 0x97,
+  0x5c, 0x51, 0x00, 0x99, 0xf5, 0xa6, 0xd5, 0xdb, 0x30, 0x1c, 0x8e, 0x09,
+  0xa5, 0x35, 0xa9, 0x1a, 0x40, 0x40, 0xbf, 0x7b, 0xb8, 0xc2, 0x98, 0xbf,
+  0xc1, 0x64, 0x8e, 0xd6, 0x3b, 0x0a, 0x0f, 0xaf, 0xdc, 0x52, 0x6e, 0xef,
+  0xa3, 0x5b, 0x7a, 0x42, 0x59, 0x9b, 0x12, 0x5a, 0xa5, 0xe7, 0xcc, 0x74,
+  0x9a, 0xe9, 0x7b, 0xb0, 0xd1, 0xc8, 0x23, 0xdc, 0xe9, 0x3d, 0x35, 0x0e,
+  0x6e, 0x86, 0x82, 0x28, 0x38, 0x91, 0xad, 0xa2, 0xbe, 0x27, 0xee, 0xcc,
+  0x90, 0x22, 0xe7, 0xc6, 0x2a, 0x89, 0xcf, 0x7a, 0xaf, 0x65, 0x2d, 0x1f,
+  0x9a, 0xf7, 0xd6, 0xb7, 0x9f, 0x89, 0x40, 0xf8, 0xea, 0x49, 0x7a, 0x3d,
+  0xd0, 0xa2, 0xa7, 0x1b, 0x2f, 0xbd, 0x6a, 0x6f, 0x27, 0x15, 0xd7, 0xe2,
+  0x3c, 0xbc, 0xc9, 0xb8, 0x7d, 0x43, 0xe6, 0x84, 0xbb, 0x55, 0xfe, 0x7b,
+  0xfd, 0x30, 0xd4, 0x1d, 0x41, 0xf3, 0xf9, 0xb1, 0x02, 0xf7, 0x71, 0x8c,
+  0x47, 0xba, 0xd9, 0x14, 0xfe, 0xb6, 0x9a, 0x8a, 0xf7, 0x1f, 0xfa, 0x01,
+  0xf5, 0x8e, 0xc5, 0x26, 0x26, 0xa3, 0xb8, 0x7c, 0x09, 0x98, 0x08, 0x7b,
+  0xc8, 0x5d, 0x86, 0x07, 0x8f, 0x26, 0xf0, 0xff, 0x11, 0x27, 0xf0, 0xbd,
+  0x78, 0x88, 0x1e, 0xb2, 0xe7, 0x48, 0xc0, 0x3f, 0x6c, 0x1e, 0xa4, 0x1a,
+  0xd8, 0xcc, 0x34, 0x14, 0x17, 0x07, 0xca, 0xd7, 0xb5, 0x9b, 0x4b, 0xe0,
+  0xa3, 0x4b, 0x6f, 0x4a, 0x87, 0xaa, 0x8a, 0x19, 0xd7, 0x86, 0xfa, 0x4a,
+  0xe2, 0xb8, 0xad, 0x33, 0xf5, 0x68, 0x02, 0x30, 0x07, 0xd4, 0x5d, 0xf5,
+  0x35, 0x2c, 0x15, 0xb5, 0x53, 0x7c, 0x0e, 0x72, 0x1f, 0xfe, 0xb5, 0xbd,
+  0x9d, 0x46, 0x95, 0xff, 0x8b, 0x15, 0xc9, 0x3d, 0x88, 0x1b, 0xe0, 0xa0,
+  0x61, 0x95, 0x84, 0x29, 0x1b, 0x18, 0x5e, 0x6f, 0x24, 0xbe, 0x32, 0xf1,
+  0x8f, 0x50, 0xf2, 0x76, 0x49, 0x6d, 0xcb, 0x1b, 0x39, 0x9b, 0xfd, 0x6e,
+  0xf0, 0x9a, 0x8a, 0x5c, 0x2c, 0xf4, 0xc4, 0x91, 0x7e, 0xef, 0xf6, 0x9c,
+  0x90, 0x45, 0xe7, 0x3b, 0x92, 0x71, 0xa6, 0xed, 0xc5, 0x7c, 0xc3, 0x1a,
+  0x68, 0x19, 0x6d, 0xd0, 0x80, 0x66, 0x92, 0xa3, 0xc0, 0x74, 0xaa, 0x97,
+  0x47, 0x0e, 0xb4, 0xcc, 0x49, 0x95, 0x6f, 0x39, 0x04, 0x7d, 0x30, 0xba,
+  0x53, 0x1c, 0x55, 0x52, 0x3b, 0xe3, 0xc7, 0x58, 0xa3, 0x6e, 0x44, 0xaf,
+  0xfb, 0x7d, 0xeb, 0x09, 0xa0, 0xc6, 0xa9, 0x12, 0x97, 0xe1, 0x38, 0x0c,
+  0xe9, 0x15, 0xe6, 0xde, 0x81, 0xbf, 0x97, 0x13, 0x41, 0x4a, 0xe9, 0x70,
+  0xf4, 0x83, 0x27, 0x86, 0x9a, 0x8c, 0x0d, 0x9d, 0x5e, 0x03, 0x35, 0xd0,
+  0x52, 0x4c, 0x99, 0xb0, 0xd7, 0xeb, 0xfa, 0xa3, 0x86, 0x97, 0x85, 0xa4,
+  0x4d, 0xa0, 0x26, 0x5e, 0x54, 0xf1, 0x78, 0x6f, 0xcf, 0xd3, 0x00, 0x82,
+  0xf5, 0x8a, 0x2a, 0x8f, 0x6b, 0xa5, 0xc7, 0xca, 0xb7, 0x72, 0x8b, 0x4e,
+  0xad, 0xc7, 0x13, 0xe4, 0x7a, 0x7a, 0xb2, 0x0d, 0x4b, 0x85, 0x09, 0xd4,
+  0x4c, 0x72, 0x28, 0x64, 0xee, 0x96, 0xbc, 0x9c, 0x97, 0xc5, 0x77, 0xc5,
+  0x07, 0x26, 0xa9, 0xca, 0x4d, 0x64, 0x6b, 0xca, 0xcd, 0xe0, 0x48, 0xe8,
+  0xe8, 0xb9, 0xa0, 0x43, 0xc3, 0xda, 0x38, 0x97, 0xbd, 0x53, 0x76, 0x72,
+  0x5e, 0x43, 0x82, 0x1e, 0xf4, 0x44, 0x0f, 0x52, 0x65, 0x95, 0xa4, 0x21,
+  0xad, 0x73, 0xc1, 0xcd, 0xe0, 0x9a, 0x8c, 0x73, 0x20, 0x92, 0x48, 0xbe,
+  0x14, 0xbb, 0xd8, 0x48, 0xfb, 0x13, 0x9e, 0x49, 0x20, 0x9d, 0x55, 0xfe,
+  0x84, 0xf0, 0x51, 0x16, 0xab, 0x3f, 0x83, 0xc1, 0x16, 0x4f, 0xe1, 0x0a,
+  0x62, 0x6c, 0xcc, 0xa4, 0x62, 0xee, 0x3f, 0xf6, 0x84, 0x6e, 0xba, 0x0a,
+  0x6a, 0x0b, 0xb5, 0x1d, 0xdb, 0x29, 0x51, 0xd9, 0xb3, 0x78, 0x34, 0x40,
+  0xe1, 0x33, 0x04, 0x22, 0x9b, 0xae, 0x7c, 0x3f, 0xfd, 0x62, 0x39, 0x4f,
+  0x6c, 0x3b, 0x85, 0x01, 0x28, 0xe6, 0x57, 0x0e, 0x64, 0x06, 0x6d, 0xbd,
+  0x4c, 0xa6, 0x6d, 0xd8, 0x83, 0x83, 0x91, 0x7c, 0x7a, 0x95, 0x60, 0xde,
+  0x7c, 0xdc, 0xf6, 0xc4, 0xf1, 0x81, 0x55, 0x20, 0x67, 0x94, 0x7b, 0x0a,
+  0x7c, 0xd4, 0xad, 0x0f, 0xe0, 0xc3, 0x5f, 0x2c, 0x08, 0xf6, 0x7e, 0x81,
+  0x7b, 0x42, 0xbb, 0xb2, 0x70, 0x5b, 0xb7, 0xc6, 0x06, 0xa7, 0x56, 0xa5,
+  0x49, 0x2e, 0xce, 0xcc, 0x8d, 0x47, 0x61, 0x81, 0xd9, 0x82, 0xe4, 0xf3,
+  0x0b, 0x5c, 0x47, 0xab, 0xe4, 0x35, 0x3d, 0x65, 0x10, 0x3f, 0x8e, 0x41,
+  0x19, 0x9f, 0x96, 0x88, 0x7f, 0xf2, 0xfe, 0x47, 0xf7, 0x1c, 0xd7, 0x4e,
+  0x98, 0x6a, 0xce, 0x5a, 0x8e, 0x2f, 0xf4, 0x9d, 0xbc, 0xa6, 0x70, 0xde,
+  0x5b, 0x75, 0xa1, 0x55, 0xd4, 0xcb, 0x6b, 0xf5, 0xd6, 0x0e, 0x33, 0xb4,
+  0x35, 0xfd, 0x70, 0x9e, 0xf9, 0xd4, 0x0a, 0x6f, 0x7f, 0x93, 0x19, 0x55,
+  0xf7, 0x77, 0x99, 0x11, 0xf0, 0x29, 0x9c, 0xc0, 0xdd, 0x94, 0xe1, 0xbc,
+  0xc2, 0x4e, 0x12, 0xf0, 0xbf, 0x99, 0x6d, 0xf9, 0x96, 0xa6, 0xe7, 0xea,
+  0xae, 0x31, 0xde, 0xc6, 0x83, 0x06, 0x75, 0xae, 0xee, 0x37, 0x30, 0x4c,
+  0xfd, 0x8a, 0xda, 0x60, 0x5b, 0x86, 0xdd, 0x06, 0xd3, 0x60, 0x0d, 0xeb,
+  0xd4, 0xbd, 0x2d, 0x2c, 0x57, 0x26, 0x0e, 0x04, 0xd4, 0x9e, 0xaa, 0x25,
+  0xdc, 0x6a, 0xe4, 0x39, 0x09, 0x03, 0x88, 0x74, 0xa7, 0x5a, 0x92, 0x4a,
+  0x32, 0xb9, 0x9a, 0x27, 0x67, 0xd8, 0xf3, 0x5b, 0x44, 0x1f, 0xf7, 0xca,
+  0x99, 0xc2, 0x5b, 0x8d, 0xdd, 0x21, 0x0e, 0xe9, 0xc7, 0x62, 0x85, 0x10,
+  0x9d, 0x23, 0xb5, 0xc9, 0x34, 0xbd, 0x4a, 0x4e, 0xd3, 0xfc, 0x77, 0xc9,
+  0xf4, 0x33, 0xbc, 0x65, 0x38, 0x68, 0xbf, 0x3b, 0x15, 0x6f, 0xd6, 0x05,
+  0x77, 0x60, 0x75, 0xfb, 0x59, 0x7b, 0xe8, 0x58, 0x08, 0x4e, 0x5d, 0xdd,
+  0x70, 0xfa, 0xd0, 0xab, 0x31, 0xb7, 0x59, 0xd4, 0xbe, 0xce, 0x70, 0x18,
+  0x14, 0xf9, 0xfb, 0x4d, 0xf9, 0xcd, 0xab, 0x48, 0xd2, 0x4e, 0x49, 0x3f,
+  0x95, 0x79, 0x62, 0xa4, 0xc4, 0x67, 0x7c, 0x7f, 0xbe, 0x78, 0x42, 0xb2,
+  0x17, 0xd5, 0xdd, 0x26, 0x61, 0x46, 0xc7, 0xc1, 0x6a, 0xb5, 0x38, 0xa3,
+  0x03, 0x2f, 0xc0, 0xa4, 0xf1, 0xc2, 0x37, 0x4e, 0xf3, 0x14, 0x0a, 0xd2,
+  0x64, 0xed, 0xc7, 0xa2, 0x24, 0xab, 0x3b, 0xdc, 0x62, 0x46, 0x90, 0xd3,
+  0x57, 0xfe, 0xe1, 0x58, 0x94, 0xb0, 0x7f, 0xc3, 0xe1, 0x81, 0x7f, 0x66,
+  0x6e, 0x07, 0x21, 0xa4, 0x14, 0xf5, 0x7b, 0x10, 0xe2, 0x2b, 0x4a, 0xf5,
+  0x31, 0x35, 0x1c, 0x47, 0xfe, 0xa1, 0x23, 0xa5, 0x5c, 0xea, 0x41, 0xd3,
+  0xa6, 0xcf, 0x21, 0x3f, 0x82, 0x05, 0x37, 0x03, 0x6b, 0x8b, 0x76, 0x19,
+  0x46, 0xe8, 0xe9, 0x08, 0x8d, 0x36, 0x08, 0x7e, 0x30, 0xef, 0xd5, 0xc8,
+  0x22, 0xd3, 0x62, 0xd4, 0xd7, 0xe0, 0x8a, 0xf2, 0x2e, 0xa0, 0x2a, 0x7a,
+  0xe7, 0x97, 0xf5, 0x7e, 0xed, 0x1f, 0xc9, 0xdb, 0x47, 0x8e, 0xae, 0x66,
+  0x2f, 0xa0, 0x3f, 0xe7, 0xf6, 0x82, 0xa7, 0x0b, 0x1e, 0x0e, 0x7e, 0xbf,
+  0x08, 0x11, 0xf0, 0x07, 0x9e, 0xaf, 0x11, 0xe8, 0x97, 0xd3, 0x7e, 0x2c,
+  0xb5, 0xa8, 0x62, 0x2b, 0x19, 0xf2, 0x70, 0xa1, 0x21, 0xd0, 0xce, 0x4d,
+  0x84, 0x58, 0x57, 0x77, 0xef, 0xc6, 0xc2, 0x2e, 0x12, 0xc0, 0xd4, 0xf0,
+  0xec, 0x45, 0x87, 0xe0, 0xb1, 0x0b, 0x5f, 0x1b, 0x81, 0xb0, 0xb4, 0xb7,
+  0x23, 0x65, 0x67, 0x5a, 0x4c, 0xc8, 0xaf, 0x5f, 0x71, 0xb4, 0x7c, 0x23,
+  0x26, 0x89, 0x08, 0x32, 0xc5, 0x4a, 0xb0, 0x11, 0xba, 0x19, 0x7d, 0x2c,
+  0x0e, 0x6d, 0x55, 0xf9, 0x22, 0xa7, 0x5e, 0x8c, 0x30, 0xed, 0x98, 0xcb,
+  0xb5, 0x25, 0x5f, 0xbb, 0xdd, 0x44, 0x3c, 0x9c, 0x92, 0x2d, 0xd9, 0x97,
+  0x8b, 0x2e, 0xc1, 0xf0, 0xed, 0xb9, 0x37, 0x78, 0xf7, 0xf9, 0x7d, 0x6a,
+  0x63, 0xff, 0xdc, 0x1b, 0x3b, 0x7f, 0x26, 0x77, 0x02, 0x60, 0x50, 0x49,
+  0x2f, 0xf7, 0x5f, 0x40, 0x7d, 0x4c, 0xd2, 0x63, 0x72, 0xb5, 0xb9, 0x79,
+  0xa0, 0x88, 0x79, 0x89, 0xfa, 0xb6, 0x86, 0x4f, 0xd5, 0x3d, 0x44, 0xfa,
+  0xec, 0x5f, 0x29, 0x7c, 0x38, 0x47, 0x0f, 0x0c, 0x4a, 0x1d, 0x2e, 0x93,
+  0xf7, 0xc5, 0xfa, 0x7c, 0x73, 0xf3, 0xc6, 0x47, 0xc5, 0xe7, 0x6e, 0xcc,
+  0xcd, 0x0d, 0x25, 0xc2, 0xef, 0xd3, 0xc0, 0xf8, 0xc1, 0x23, 0xae, 0x3a,
+  0x9d, 0x93, 0xcf, 0xd3, 0xf3, 0xcb, 0x49, 0x9a, 0xec, 0x13, 0x1c, 0xe8,
+  0x74, 0x72, 0xf1, 0xee, 0xf3, 0xd4, 0xfd, 0xa9, 0x73, 0x9c, 0x65, 0x65,
+  0xe1, 0xd4, 0x8f, 0x74, 0x9d, 0x97, 0x8e, 0x5b, 0xcd, 0x75, 0xf3, 0xd1,
+  0x14, 0xd7, 0x51, 0xf9, 0xb2, 0x52, 0xc4, 0x77, 0xca, 0x0e, 0x5a, 0x0a,
+  0xc7, 0x91, 0x2e, 0x15, 0x25, 0x4a, 0xf7, 0x96, 0xc1, 0x5d, 0x51, 0x34,
+  0x70, 0x4c, 0xb5, 0xfa, 0x24, 0x99, 0x9e, 0x9f, 0x7c, 0xfa, 0x2d, 0xd5,
+  0xbc, 0x8d, 0xeb, 0xeb, 0xeb, 0x66, 0x64, 0x9f, 0x4d, 0x87, 0x55, 0xde,
+  0xe9, 0xa4, 0xe3, 0x71, 0x72, 0xf2, 0x21, 0xbd, 0xd4, 0x1b, 0xee, 0xd6,
+  0x8f, 0xaf, 0x0f, 0x7f, 0x71, 0x1a, 0xf6, 0x3c, 0x5f, 0xbb, 0x5f, 0x3a,
+  0x9d, 0x7f, 0x03, 0x79, 0x3a, 0x77, 0xa4, 0x90, 0xdd, 0x03, 0x00,
 };
 #define BUF_SIZE 0x10000
 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
@@ -10939,9 +12244,5 @@ void hugehelp(void)
   }
   inflateEnd(&z);
 }
-#else /* !USE_MANUAL */
-/* built-in manual is disabled, blank function */
-#include "tool_hugehelp.h"
-void hugehelp(void) {}
 #endif /* USE_MANUAL */
 #endif /* HAVE_LIBZ */
index 06f73e540844cb1c9281b79645d222ec21a68498..d5880ac251d749dd6b74a382710bff48ba9edb2d 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
+#ifdef USE_MANUAL
 void hugehelp(void);
+#else
+/* do nothing if not there */
+#define hugehelp()
+#endif
 
 #endif /* HEADER_CURL_TOOL_HUGEHELP_H */
index ef53fce34134ecf0ef680b64ce91e6d8e1ee1a7c..801fd579f3696029e13371e11894a7b27803a9b3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
 
 /* global variable definitions, for libcurl run-time info */
 
+static const char *no_protos = NULL;
+
 curl_version_info_data *curlinfo = NULL;
-long built_in_protos = 0;
+const char * const *built_in_protos = &no_protos;
+
+size_t proto_count = 0;
 
-static struct proto_name_pattern {
-  const char *proto_name;
-  long        proto_pattern;
+const char *proto_file = NULL;
+const char *proto_ftp = NULL;
+const char *proto_ftps = NULL;
+const char *proto_http = NULL;
+const char *proto_https = NULL;
+const char *proto_rtsp = NULL;
+const char *proto_scp = NULL;
+const char *proto_sftp = NULL;
+const char *proto_tftp = NULL;
+
+static struct proto_name_tokenp {
+  const char   *proto_name;
+  const char  **proto_tokenp;
 } const possibly_built_in[] = {
-  { "dict",   CURLPROTO_DICT   },
-  { "file",   CURLPROTO_FILE   },
-  { "ftp",    CURLPROTO_FTP    },
-  { "ftps",   CURLPROTO_FTPS   },
-  { "gopher", CURLPROTO_GOPHER },
-  { "gophers",CURLPROTO_GOPHERS},
-  { "http",   CURLPROTO_HTTP   },
-  { "https",  CURLPROTO_HTTPS  },
-  { "imap",   CURLPROTO_IMAP   },
-  { "imaps",  CURLPROTO_IMAPS  },
-  { "ldap",   CURLPROTO_LDAP   },
-  { "ldaps",  CURLPROTO_LDAPS  },
-  { "mqtt",   CURLPROTO_MQTT   },
-  { "pop3",   CURLPROTO_POP3   },
-  { "pop3s",  CURLPROTO_POP3S  },
-  { "rtmp",   CURLPROTO_RTMP   },
-  { "rtmps",  CURLPROTO_RTMPS  },
-  { "rtsp",   CURLPROTO_RTSP   },
-  { "scp",    CURLPROTO_SCP    },
-  { "sftp",   CURLPROTO_SFTP   },
-  { "smb",    CURLPROTO_SMB    },
-  { "smbs",   CURLPROTO_SMBS   },
-  { "smtp",   CURLPROTO_SMTP   },
-  { "smtps",  CURLPROTO_SMTPS  },
-  { "telnet", CURLPROTO_TELNET },
-  { "tftp",   CURLPROTO_TFTP   },
-  {  NULL,    0                }
+  { "file",     &proto_file  },
+  { "ftp",      &proto_ftp   },
+  { "ftps",     &proto_ftps  },
+  { "http",     &proto_http  },
+  { "https",    &proto_https },
+  { "rtsp",     &proto_rtsp  },
+  { "scp",      &proto_scp   },
+  { "sftp",     &proto_sftp  },
+  { "tftp",     &proto_tftp  },
+  {  NULL,      NULL         }
 };
 
 /*
  * libcurl_info_init: retrieves run-time information about libcurl,
  * setting a global pointer 'curlinfo' to libcurl's run-time info
- * struct, and a global bit pattern 'built_in_protos' composed of
- * CURLPROTO_* bits indicating which protocols are actually built
- * into library being used.
+ * struct, count protocols and flag those we are interested in.
  */
 
 CURLcode get_libcurl_info(void)
 {
-  const char *const *proto;
+  CURLcode result = CURLE_OK;
 
   /* Pointer to libcurl's run-time version information */
   curlinfo = curl_version_info(CURLVERSION_NOW);
   if(!curlinfo)
     return CURLE_FAILED_INIT;
 
-  /* Build CURLPROTO_* bit pattern with libcurl's built-in protocols */
-  built_in_protos = 0;
   if(curlinfo->protocols) {
-    for(proto = curlinfo->protocols; *proto; proto++) {
-      struct proto_name_pattern const *p;
-      for(p = possibly_built_in; p->proto_name; p++) {
-        if(curl_strequal(*proto, p->proto_name)) {
-          built_in_protos |= p->proto_pattern;
+    const char *const *builtin;
+    const struct proto_name_tokenp *p;
+
+    built_in_protos = curlinfo->protocols;
+
+    for(builtin = built_in_protos; !result && *builtin; builtin++) {
+      /* Identify protocols we are interested in. */
+      for(p = possibly_built_in; p->proto_name; p++)
+        if(curl_strequal(p->proto_name, *builtin)) {
+          *p->proto_tokenp = *builtin;
           break;
         }
-      }
     }
+    proto_count = builtin - built_in_protos;
   }
 
   return CURLE_OK;
 }
 
-/*
- * scheme2protocol() returns the protocol bit for the specified URL scheme
+/* Tokenize a protocol name.
+ * Return the address of the protocol name listed by the library, or NULL if
+ * not found.
+ * Although this may seem useless, this always returns the same address for
+ * a given protocol and thus allows comparing pointers rather than strings.
+ * In addition, the returned pointer is not deallocated until the program ends.
  */
-long scheme2protocol(const char *scheme)
+
+const char *proto_token(const char *proto)
 {
-  struct proto_name_pattern const *p;
-  for(p = possibly_built_in; p->proto_name; p++) {
-    if(curl_strequal(scheme, p->proto_name))
-      return p->proto_pattern;
-  }
-  return 0;
+  const char * const *builtin;
+
+  if(!proto)
+    return NULL;
+  for(builtin = built_in_protos; *builtin; builtin++)
+    if(curl_strequal(*builtin, proto))
+      break;
+  return *builtin;
 }
index 823ced7334edd1feb09f456fece250cc685a4ed7..40e5aff3eebd835a6b7eb56994435fe40b22d6d9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
 /* global variable declarations, for libcurl run-time info */
 
+
 extern curl_version_info_data *curlinfo;
-extern long built_in_protos;
+extern const char * const *built_in_protos;
+extern size_t proto_count;
+
+extern const char *proto_file;
+extern const char *proto_ftp;
+extern const char *proto_ftps;
+extern const char *proto_http;
+extern const char *proto_https;
+extern const char *proto_rtsp;
+extern const char *proto_scp;
+extern const char *proto_sftp;
+extern const char *proto_tftp;
 
 CURLcode get_libcurl_info(void);
-long scheme2protocol(const char *scheme);
+const char *proto_token(const char *proto);
 
 #endif /* HEADER_CURL_TOOL_LIBINFO_H */
index 448fc7cb30f2fd2b07933fa722173e937410dfb5..6a2d10fb69a53d85bedd67262b1f0568db6d4841 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel.se>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel.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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_help.h"
@@ -62,7 +64,7 @@ const struct helptxt helptext[] = {
    "Verify the status of the server cert via OCSP-staple",
    CURLHELP_TLS},
   {"    --cert-type <type>",
-   "Certificate type (DER/PEM/ENG)",
+   "Certificate type (DER/PEM/ENG/P12)",
    CURLHELP_TLS},
   {"    --ciphers <list of ciphers>",
    "SSL ciphers to use",
@@ -119,7 +121,7 @@ const struct helptxt helptext[] = {
    "HTTP POST data, '@' allowed",
    CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
   {"    --data-urlencode <data>",
-   "HTTP POST data url encoded",
+   "HTTP POST data URL encoded",
    CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
   {"    --delegation <LEVEL>",
    "GSS-API delegation permission",
@@ -137,7 +139,7 @@ const struct helptxt helptext[] = {
    "Inhibit using EPSV",
    CURLHELP_FTP},
   {"    --disallow-username-in-url",
-   "Disallow username in url",
+   "Disallow username in URL",
    CURLHELP_CURL | CURLHELP_HTTP},
   {"    --dns-interface <interface>",
    "Interface to use for DNS requests",
@@ -179,7 +181,7 @@ const struct helptxt helptext[] = {
    "How long to wait for 100-continue",
    CURLHELP_HTTP},
   {"-f, --fail",
-   "Fail silently (no output at all) on HTTP errors",
+   "Fail fast with no output on HTTP errors",
    CURLHELP_IMPORTANT | CURLHELP_HTTP},
   {"    --fail-early",
    "Fail on first transfer error, do not continue",
@@ -195,7 +197,7 @@ const struct helptxt helptext[] = {
    CURLHELP_HTTP | CURLHELP_UPLOAD},
   {"    --form-escape",
    "Escape multipart form field/file names using backslash",
-   CURLHELP_HTTP | CURLHELP_POST},
+   CURLHELP_HTTP | CURLHELP_UPLOAD},
   {"    --form-string <name=string>",
    "Specify multipart MIME data",
    CURLHELP_HTTP | CURLHELP_UPLOAD},
@@ -249,7 +251,7 @@ const struct helptxt helptext[] = {
    CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_FILE},
   {"-H, --header <header/@file>",
    "Pass custom header(s) to server",
-   CURLHELP_HTTP},
+   CURLHELP_HTTP | CURLHELP_IMAP | CURLHELP_SMTP},
   {"-h, --help <category>",
    "Get help for commands",
    CURLHELP_IMPORTANT | CURLHELP_CURL},
@@ -298,6 +300,9 @@ const struct helptxt helptext[] = {
   {"-6, --ipv6",
    "Resolve names to IPv6 addresses",
    CURLHELP_CONNECTION | CURLHELP_DNS},
+  {"    --json <data>",
+   "HTTP POST JSON",
+   CURLHELP_HTTP | CURLHELP_POST | CURLHELP_UPLOAD},
   {"-j, --junk-session-cookies",
    "Ignore session cookies read from file",
    CURLHELP_HTTP},
@@ -382,6 +387,9 @@ const struct helptxt helptext[] = {
   {"-N, --no-buffer",
    "Disable buffering of the output stream",
    CURLHELP_CURL},
+  {"    --no-clobber",
+   "Do not overwrite files that already exist",
+   CURLHELP_CURL | CURLHELP_OUTPUT},
   {"    --no-keepalive",
    "Disable TCP keepalive on the connection",
    CURLHELP_CONNECTION},
@@ -553,6 +561,9 @@ const struct helptxt helptext[] = {
   {"-r, --range <range>",
    "Retrieve only the bytes within RANGE",
    CURLHELP_HTTP | CURLHELP_FTP | CURLHELP_SFTP | CURLHELP_FILE},
+  {"    --rate <max request rate>",
+   "Request rate for serial transfers",
+   CURLHELP_CONNECTION},
   {"    --raw",
    "Do HTTP \"raw\"; no transfer decoding",
    CURLHELP_HTTP},
@@ -571,6 +582,9 @@ const struct helptxt helptext[] = {
   {"-R, --remote-time",
    "Set the remote file's time on the local output",
    CURLHELP_OUTPUT},
+  {"    --remove-on-error",
+   "Remove output file on errors",
+   CURLHELP_CURL},
   {"-X, --request <method>",
    "Specify request method to use",
    CURLHELP_CONNECTION},
@@ -579,7 +593,7 @@ const struct helptxt helptext[] = {
    CURLHELP_HTTP},
   {"    --resolve <[+]host:port:addr[,addr]...>",
    "Resolve the host+port to this address",
-   CURLHELP_CONNECTION},
+   CURLHELP_CONNECTION | CURLHELP_DNS},
   {"    --retry <num>",
    "Retry request if transient problems occur",
    CURLHELP_CURL},
index 7db2e93590d1f333d1a005e1c38897a6eaf51238..434979dea3de5767f5927de7a3c77331b73bd6d6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
 #include <signal.h>
 #endif
 
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
 #ifdef USE_NSS
 #include <nspr.h>
 #include <plarenas.h>
@@ -41,7 +47,6 @@
 #include "curlx.h"
 
 #include "tool_cfgable.h"
-#include "tool_convert.h"
 #include "tool_doswin.h"
 #include "tool_msgs.h"
 #include "tool_operate.h"
@@ -79,29 +84,30 @@ int _CRT_glob = 0;
 /* if we build a static library for unit tests, there is no main() function */
 #ifndef UNITTESTS
 
+#if defined(HAVE_PIPE) && defined(HAVE_FCNTL)
 /*
  * Ensure that file descriptors 0, 1 and 2 (stdin, stdout, stderr) are
  * open before starting to run.  Otherwise, the first three network
  * sockets opened by curl could be used for input sources, downloaded data
  * or error logs as they will effectively be stdin, stdout and/or stderr.
+ *
+ * fcntl's F_GETFD instruction returns -1 if the file descriptor is closed,
+ * otherwise it returns "the file descriptor flags (which typically can only
+ * be FD_CLOEXEC, which is not set here).
  */
-static void main_checkfds(void)
+static int main_checkfds(void)
 {
-#ifdef HAVE_PIPE
-  int fd[2] = { STDIN_FILENO, STDIN_FILENO };
-  while(fd[0] == STDIN_FILENO ||
-        fd[0] == STDOUT_FILENO ||
-        fd[0] == STDERR_FILENO ||
-        fd[1] == STDIN_FILENO ||
-        fd[1] == STDOUT_FILENO ||
-        fd[1] == STDERR_FILENO)
-    if(pipe(fd) < 0)
-      return;   /* Out of handles. This isn't really a big problem now, but
-                   will be when we try to create a socket later. */
-  close(fd[0]);
-  close(fd[1]);
-#endif
+  int fd[2];
+  while((fcntl(STDIN_FILENO, F_GETFD) == -1) ||
+        (fcntl(STDOUT_FILENO, F_GETFD) == -1) ||
+        (fcntl(STDERR_FILENO, F_GETFD) == -1))
+    if(pipe(fd))
+      return 1;
+  return 0;
 }
+#else
+#define main_checkfds() 0
+#endif
 
 #ifdef CURLDEBUG
 static void memory_tracking_init(void)
@@ -211,7 +217,6 @@ static void main_free(struct GlobalConfig *config)
   /* Cleanup the easy handle */
   /* Main cleanup */
   curl_global_cleanup();
-  convert_cleanup();
 #ifdef USE_NSS
   if(PR_Initialized()) {
     /* prevent valgrind from reporting still reachable mem from NSPR arenas */
@@ -259,7 +264,10 @@ int main(int argc, char *argv[])
   }
 #endif
 
-  main_checkfds();
+  if(main_checkfds()) {
+    fprintf(stderr, "curl: out of file descriptors\n");
+    return CURLE_FAILED_INIT;
+  }
 
 #if defined(HAVE_SIGNAL) && defined(SIGPIPE)
   (void)signal(SIGPIPE, SIG_IGN);
@@ -279,6 +287,11 @@ int main(int argc, char *argv[])
     main_free(&global);
   }
 
+#ifdef WIN32
+  /* Flush buffers of all streams opened in write or update mode */
+  fflush(NULL);
+#endif
+
 #ifdef __NOVELL_LIBC__
   if(!getenv("_IN_NETWARE_BASH_"))
     tool_pressanykey();
index 74226ce5a6ed5c828840f1282ee0de6f57cfaf06..a1fd1070e96755987b501d16af0d9c9bad50ea98 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 184adbae90b1d4bee5498a1e431980138d6eb275..a880a667ebb8784515d5ff6a8afd721ab785ea9d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -57,7 +59,7 @@ static void voutf(struct GlobalConfig *config,
       if(len > width) {
         size_t cut = width-1;
 
-        while(!ISSPACE(ptr[cut]) && cut) {
+        while(!ISBLANK(ptr[cut]) && cut) {
           cut--;
         }
         if(0 == cut)
index c2ab6064a70dea319bf54dafc675ca738069baea..e35884e9da40ea7684af30431c89818299974525 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index fe2c43b55b45c45916e930ccb80e26afc709506c..43c1c5e6c4e32e2dea81e1de8ac2253d6ecd036d 100644 (file)
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -90,8 +92,6 @@
 CURLcode curl_easy_perform_ev(CURL *easy);
 #endif
 
-#define CURLseparator  "--_curl_--"
-
 #ifndef O_BINARY
 /* since O_BINARY as used in bitmasks, setting it to zero makes it usable in
    source code but yet it doesn't ruin anything */
@@ -205,6 +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;
 
 /* add_per_transfer creates a new 'per_transfer' node in the linked
    list of transfers */
@@ -227,6 +228,8 @@ static CURLcode add_per_transfer(struct per_transfer **per)
   }
   *per = p;
   all_xfers++; /* count total number of transfers added */
+  all_pers++;
+
   return CURLE_OK;
 }
 
@@ -254,6 +257,7 @@ static struct per_transfer *del_per_transfer(struct per_transfer *per)
     transfersl = p;
 
   free(per);
+  all_pers--;
 
   return n;
 }
@@ -265,20 +269,15 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
   struct_stat fileinfo;
   CURLcode result = CURLE_OK;
 
-  if(per->separator_err)
-    fprintf(global->errors, "%s\n", per->separator_err);
-  if(per->separator)
-    printf("%s\n", per->separator);
-
   if(per->uploadfile && !stdin_upload(per->uploadfile)) {
     /* VMS Note:
      *
      * Reading binary from files can be a problem...  Only FIXED, VAR
-     * etc WITHOUT implied CC will work Others need a \n appended to a
-     * line
+     * etc WITHOUT implied CC will work. Others need a \n appended to
+     * line
      *
-     * - Stat gives a size but this is UNRELIABLE in VMS As a f.e. a
-     * fixed file with implied CC needs to have a byte added for every
+     * - Stat gives a size but this is UNRELIABLE in VMS. E.g.
+     * fixed file with implied CC needs to have a byte added for every
      * record processed, this can be derived from Filesize & recordsize
      * for VARiable record files the records need to be counted!  for
      * every record add 1 for linefeed and subtract 2 for the record
@@ -332,6 +331,45 @@ static CURLcode pre_transfer(struct GlobalConfig *global,
   return result;
 }
 
+#ifdef __AMIGA__
+static void AmigaSetComment(struct per_transfer *per,
+                            CURLcode result)
+{
+  struct OutStruct *outs = &per->outs;
+  if(!result && outs->s_isreg && outs->filename) {
+    /* Set the url (up to 80 chars) as comment for the file */
+    if(strlen(per->this_url) > 78)
+      per->this_url[79] = '\0';
+    SetComment(outs->filename, per->this_url);
+  }
+}
+#else
+#define AmigaSetComment(x,y) Curl_nop_stmt
+#endif
+
+/* When doing serial transfers, we use a single fixed error area */
+static char global_errorbuffer[CURL_ERROR_SIZE];
+
+void single_transfer_cleanup(struct OperationConfig *config)
+{
+  if(config) {
+    struct State *state = &config->state;
+    if(state->urls) {
+      /* Free list of remaining URLs */
+      glob_cleanup(state->urls);
+      state->urls = NULL;
+    }
+    Curl_safefree(state->outfiles);
+    Curl_safefree(state->httpgetfields);
+    Curl_safefree(state->uploadfile);
+    if(state->inglob) {
+      /* Free list of globbed upload files */
+      glob_cleanup(state->inglob);
+      state->inglob = NULL;
+    }
+  }
+}
+
 /*
  * Call this after a transfer has completed.
  */
@@ -363,9 +401,9 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
   else
 #endif
     if(!config->synthetic_error && result && global->showerror) {
+      const char *msg = per->errorbuffer;
       fprintf(global->errors, "curl: (%d) %s\n", result,
-              (per->errorbuffer[0]) ? per->errorbuffer :
-              curl_easy_strerror(result));
+              (msg && msg[0]) ? msg : curl_easy_strerror(result));
       if(result == CURLE_PEER_FAILED_VERIFICATION)
         fputs(CURL_CA_CERT_ERRORMSG, global->errors);
     }
@@ -383,7 +421,7 @@ 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, fileno(outs->stream));
+    int rc = fwrite_xattr(curl, per->this_url, fileno(outs->stream));
     if(rc)
       warnf(config->global, "Error setting extended attributes on '%s': %s\n",
             outs->filename, strerror(errno));
@@ -442,14 +480,15 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
         retry = RETRY_CONNREFUSED;
     }
     else if((CURLE_OK == result) ||
-            (config->failonerror &&
+            ((config->failonerror || config->failwithbody) &&
              (CURLE_HTTP_RETURNED_ERROR == result))) {
       /* If it returned OK. _or_ failonerror was enabled and it
          returned due to such an error, check for HTTP transient
          errors to retry on. */
-      long protocol = 0;
-      curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
-      if((protocol == CURLPROTO_HTTP) || (protocol == CURLPROTO_HTTPS)) {
+      const char *scheme;
+      curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
+      scheme = proto_token(scheme);
+      if(scheme == proto_http || scheme == proto_https) {
         /* This was HTTP(S) */
         curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
 
@@ -476,13 +515,13 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
       }
     } /* if CURLE_OK */
     else if(result) {
-      long protocol = 0;
+      const char *scheme;
 
       curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
-      curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
+      curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
+      scheme = proto_token(scheme);
 
-      if((protocol == CURLPROTO_FTP || protocol == CURLPROTO_FTPS) &&
-         response / 100 == 4)
+      if((scheme == proto_ftp || scheme == proto_ftps) && response / 100 == 4)
         /*
          * This is typically when the FTP server only allows a certain
          * amount of users and we are not one of them.  All 4xx codes
@@ -602,8 +641,14 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
       if(global->showerror)
         fprintf(global->errors, "curl: (%d) Failed writing body\n", result);
     }
+    if(result && config->rm_partial) {
+      notef(global, "Removing output file: %s\n", outs->filename);
+      unlink(outs->filename);
+    }
   }
 
+  AmigaSetComment(per, result);
+
   /* File time can only be set _after_ the file has been closed */
   if(!result && config->remote_time && outs->s_isreg && outs->filename) {
     /* Ask libcurl if we got a remote file time */
@@ -633,41 +678,22 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
   if(outs->alloc_filename)
     free(outs->filename);
   free(per->this_url);
-  free(per->separator_err);
-  free(per->separator);
   free(per->outfile);
   free(per->uploadfile);
+  if(global->parallel)
+    free(per->errorbuffer);
 
   return result;
 }
 
-static void single_transfer_cleanup(struct OperationConfig *config)
-{
-  if(config) {
-    struct State *state = &config->state;
-    if(state->urls) {
-      /* Free list of remaining URLs */
-      glob_cleanup(state->urls);
-      state->urls = NULL;
-    }
-    Curl_safefree(state->outfiles);
-    Curl_safefree(state->httpgetfields);
-    Curl_safefree(state->uploadfile);
-    if(state->inglob) {
-      /* Free list of globbed upload files */
-      glob_cleanup(state->inglob);
-      state->inglob = NULL;
-    }
-  }
-}
-
 /*
- * Return the proto bit for the scheme used in the given URL
+ * Return the protocol token for the scheme used in the given URL
  */
-static long url_proto(char *url)
+static const char *url_proto(char *url)
 {
   CURLU *uh = curl_url();
-  long proto = 0;
+  const char *proto = NULL;
+
   if(uh) {
     if(url) {
       if(!curl_url_set(uh, CURLUPART_URL, url,
@@ -676,18 +702,17 @@ static long url_proto(char *url)
         if(!curl_url_get(uh, CURLUPART_SCHEME, &schemep,
                          CURLU_DEFAULT_SCHEME) &&
            schemep) {
-          proto = scheme2protocol(schemep);
+          proto = proto_token(schemep);
           curl_free(schemep);
         }
       }
     }
     curl_url_cleanup(uh);
   }
-  return proto;
+  return proto? proto: "???";   /* Never match if not found. */
 }
 
 /* create the next (singular) transfer */
-
 static CURLcode single_transfer(struct GlobalConfig *global,
                                 struct OperationConfig *config,
                                 CURLSH *share,
@@ -780,7 +805,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
     }
 
     {
-      int separator;
       unsigned long urlnum;
 
       if(!state->up && !infiles)
@@ -820,10 +844,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
       else
         urlnum = state->urlnum;
 
-      /* if multiple files extracted to stdout, insert separators! */
-      separator = ((!state->outfiles ||
-                    !strcmp(state->outfiles, "-")) && urlnum > 1);
-
       if(state->up < state->infilenum) {
         struct per_transfer *per = NULL;
         struct OutStruct *outs;
@@ -832,7 +852,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         struct OutStruct *etag_save;
         struct HdrCbData *hdrcbdata = NULL;
         struct OutStruct etag_first;
-        long use_proto;
+        const char *use_proto;
         CURL *curl;
 
         /* --etag-save */
@@ -927,6 +947,12 @@ static CURLcode single_transfer(struct GlobalConfig *global,
             result = CURLE_OUT_OF_MEMORY;
             break;
           }
+          if(SetHTTPrequest(config, HTTPREQ_PUT, &config->httpreq)) {
+            Curl_safefree(per->uploadfile);
+            curl_easy_cleanup(curl);
+            result = CURLE_FAILED_INIT;
+            break;
+          }
         }
         *added = TRUE;
         per->config = config;
@@ -1030,6 +1056,11 @@ static CURLcode single_transfer(struct GlobalConfig *global,
               warnf(global, "bad output glob!\n");
               break;
             }
+            if(!*per->outfile) {
+              warnf(global, "output glob produces empty string!\n");
+              result = CURLE_WRITE_ERROR;
+              break;
+            }
           }
 
           if(config->output_dir && *config->output_dir) {
@@ -1100,12 +1131,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
           /*
            * We have specified a file to upload and it isn't "-".
            */
-          char *nurl = add_file_name_to_url(per->this_url, per->uploadfile);
-          if(!nurl) {
-            result = CURLE_OUT_OF_MEMORY;
+          result = add_file_name_to_url(per->curl, &per->this_url,
+                                        per->uploadfile);
+          if(result)
             break;
-          }
-          per->this_url = nurl;
         }
         else if(per->uploadfile && stdin_upload(per->uploadfile)) {
           /* count to see if there are more than one auth bit set
@@ -1124,7 +1153,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
 
           /*
            * If the user has also selected --anyauth or --proxy-anyauth
-           * we should warn him/her.
+           * we should warn them.
            */
           if(config->proxyanyauth || (authbits>1)) {
             warnf(global,
@@ -1159,52 +1188,23 @@ static CURLcode single_transfer(struct GlobalConfig *global,
           global->isatty = orig_isatty;
         }
 
-        if(urlnum > 1 && !global->mute) {
-          per->separator_err =
-            aprintf("\n[%lu/%lu]: %s --> %s",
-                    state->li + 1, urlnum, per->this_url,
-                    per->outfile ? per->outfile : "<stdout>");
-          if(separator)
-            per->separator = aprintf("%s%s", CURLseparator, per->this_url);
-        }
         if(httpgetfields) {
-          char *urlbuffer;
-          /* Find out whether the url contains a file name */
-          const char *pc = strstr(per->this_url, "://");
-          char sep = '?';
-          if(pc)
-            pc += 3;
-          else
-            pc = per->this_url;
-
-          pc = strrchr(pc, '/'); /* check for a slash */
-
-          if(pc) {
-            /* there is a slash present in the URL */
-
-            if(strchr(pc, '?'))
-              /* Ouch, there's already a question mark in the URL string, we
-                 then append the data with an ampersand separator instead! */
-              sep = '&';
-          }
-          /*
-           * Then append ? followed by the get fields to the url.
-           */
-          if(pc)
-            urlbuffer = aprintf("%s%c%s", per->this_url, sep, httpgetfields);
-          else
-            /* Append  / before the ? to create a well-formed url
-               if the url contains a hostname only
-            */
-            urlbuffer = aprintf("%s/?%s", per->this_url, httpgetfields);
-
-          if(!urlbuffer) {
-            result = CURLE_OUT_OF_MEMORY;
-            break;
+          CURLU *uh = curl_url();
+          if(uh) {
+            char *updated;
+            if(curl_url_set(uh, CURLUPART_URL, per->this_url,
+                            CURLU_GUESS_SCHEME) ||
+               curl_url_set(uh, CURLUPART_QUERY, httpgetfields,
+                            CURLU_APPENDQUERY) ||
+               curl_url_get(uh, CURLUPART_URL, &updated, CURLU_GUESS_SCHEME)) {
+              curl_url_cleanup(uh);
+              result = CURLE_OUT_OF_MEMORY;
+              break;
+            }
+            Curl_safefree(per->this_url); /* free previous URL */
+            per->this_url = updated; /* use our new URL instead! */
+            curl_url_cleanup(uh);
           }
-
-          Curl_safefree(per->this_url); /* free previous URL */
-          per->this_url = urlbuffer; /* use our new URL instead! */
         }
 
         if(!global->errors)
@@ -1226,14 +1226,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         if(result)
           break;
 
-        /* here */
         use_proto = url_proto(per->this_url);
-#if 0
-        if(!(use_proto & built_in_protos)) {
-          warnf(global, "URL is '%s' but no support for the scheme\n",
-                per->this_url);
-        }
-#endif
 
         if(!config->tcp_nodelay)
           my_setopt(curl, CURLOPT_TCP_NODELAY, 0L);
@@ -1281,45 +1274,51 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         if(config->oauth_bearer)
           my_setopt_str(curl, CURLOPT_XOAUTH2_BEARER, config->oauth_bearer);
 
-        {
-          my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
-          /* new in libcurl 7.5 */
-          if(config->proxy)
-            my_setopt_enum(curl, CURLOPT_PROXYTYPE, config->proxyver);
-
-          my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
-
-          /* new in libcurl 7.3 */
-          my_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, config->proxytunnel?1L:0L);
-
-          /* new in libcurl 7.52.0 */
-          if(config->preproxy)
-            my_setopt_str(curl, CURLOPT_PRE_PROXY, config->preproxy);
-
-          /* new in libcurl 7.10.6 */
-          if(config->proxyanyauth)
-            my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
-                              (long)CURLAUTH_ANY);
-          else if(config->proxynegotiate)
-            my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
-                              (long)CURLAUTH_GSSNEGOTIATE);
-          else if(config->proxyntlm)
-            my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
-                              (long)CURLAUTH_NTLM);
-          else if(config->proxydigest)
-            my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
-                              (long)CURLAUTH_DIGEST);
-          else if(config->proxybasic)
-            my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
-                              (long)CURLAUTH_BASIC);
-
-          /* new in libcurl 7.19.4 */
-          my_setopt_str(curl, CURLOPT_NOPROXY, config->noproxy);
-
-          my_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS,
-                    config->suppress_connect_headers?1L:0L);
+        my_setopt_str(curl, CURLOPT_PROXY, config->proxy);
+
+        if(config->proxy && result) {
+          errorf(global, "proxy support is disabled in this libcurl\n");
+          config->synthetic_error = TRUE;
+          result = CURLE_NOT_BUILT_IN;
+          break;
         }
 
+        /* new in libcurl 7.5 */
+        if(config->proxy)
+          my_setopt_enum(curl, CURLOPT_PROXYTYPE, config->proxyver);
+
+        my_setopt_str(curl, CURLOPT_PROXYUSERPWD, config->proxyuserpwd);
+
+        /* new in libcurl 7.3 */
+        my_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, config->proxytunnel?1L:0L);
+
+        /* new in libcurl 7.52.0 */
+        if(config->preproxy)
+          my_setopt_str(curl, CURLOPT_PRE_PROXY, config->preproxy);
+
+        /* new in libcurl 7.10.6 */
+        if(config->proxyanyauth)
+          my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+                            (long)CURLAUTH_ANY);
+        else if(config->proxynegotiate)
+          my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+                            (long)CURLAUTH_GSSNEGOTIATE);
+        else if(config->proxyntlm)
+          my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+                            (long)CURLAUTH_NTLM);
+        else if(config->proxydigest)
+          my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+                            (long)CURLAUTH_DIGEST);
+        else if(config->proxybasic)
+          my_setopt_bitmask(curl, CURLOPT_PROXYAUTH,
+                            (long)CURLAUTH_BASIC);
+
+        /* new in libcurl 7.19.4 */
+        my_setopt_str(curl, CURLOPT_NOPROXY, config->noproxy);
+
+        my_setopt(curl, CURLOPT_SUPPRESS_CONNECT_HEADERS,
+                  config->suppress_connect_headers?1L:0L);
+
         my_setopt(curl, CURLOPT_FAILONERROR, config->failonerror?1L:0L);
         my_setopt(curl, CURLOPT_REQUEST_TARGET, config->request_target);
         my_setopt(curl, CURLOPT_UPLOAD, per->uploadfile?1L:0L);
@@ -1341,7 +1340,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
           my_setopt_str(curl, CURLOPT_LOGIN_OPTIONS, config->login_options);
         my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
         my_setopt_str(curl, CURLOPT_RANGE, config->range);
-        my_setopt(curl, CURLOPT_ERRORBUFFER, per->errorbuffer);
+        if(!global->parallel) {
+          per->errorbuffer = global_errorbuffer;
+          my_setopt(curl, CURLOPT_ERRORBUFFER, global_errorbuffer);
+        }
         my_setopt(curl, CURLOPT_TIMEOUT_MS, (long)(config->timeout * 1000));
 
         switch(config->httpreq) {
@@ -1376,13 +1378,12 @@ static CURLcode single_transfer(struct GlobalConfig *global,
 
         my_setopt_slist(curl, CURLOPT_HTTPHEADER, config->headers);
 
-        if(built_in_protos & (CURLPROTO_HTTP | CURLPROTO_RTSP)) {
+        if(proto_http || proto_rtsp) {
           my_setopt_str(curl, CURLOPT_REFERER, config->referer);
           my_setopt_str(curl, CURLOPT_USERAGENT, config->useragent);
         }
 
-        if(built_in_protos & CURLPROTO_HTTP) {
-
+        if(proto_http) {
           long postRedir = 0;
 
           my_setopt(curl, CURLOPT_FOLLOWLOCATION,
@@ -1432,9 +1433,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
             return result;
           }
 
-        } /* (built_in_protos & CURLPROTO_HTTP) */
+        } /* (proto_http) */
 
-        my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
+        if(proto_ftp)
+          my_setopt_str(curl, CURLOPT_FTPPORT, config->ftpport);
         my_setopt(curl, CURLOPT_LOW_SPEED_LIMIT,
                   config->low_speed_limit);
         my_setopt(curl, CURLOPT_LOW_SPEED_TIME, config->low_speed_time);
@@ -1451,7 +1453,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         my_setopt_str(curl, CURLOPT_KEYPASSWD, config->key_passwd);
         my_setopt_str(curl, CURLOPT_PROXY_KEYPASSWD, config->proxy_key_passwd);
 
-        if(use_proto & (CURLPROTO_SCP|CURLPROTO_SFTP)) {
+        if(use_proto == proto_scp || use_proto == proto_sftp) {
 
           /* SSH and SSL private key uses same command-line option */
           /* new in libcurl 7.16.1 */
@@ -1491,8 +1493,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         }
         /* For the time being if --proxy-capath is not set then we use the
            --capath value for it, if any. See #1257 */
-        if((config->proxy_capath || config->capath) &&
-           !tool_setopt_skip(CURLOPT_PROXY_CAPATH)) {
+        if(config->proxy_capath || config->capath) {
           result = res_setopt_str(curl, CURLOPT_PROXY_CAPATH,
                                   (config->proxy_capath ?
                                    config->proxy_capath :
@@ -1687,8 +1688,9 @@ static CURLcode single_transfer(struct GlobalConfig *global,
 
           my_setopt_enum(curl, CURLOPT_SSLVERSION,
                          config->ssl_version | config->ssl_version_max);
-          my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
-                         config->proxy_ssl_version);
+          if(config->proxy)
+            my_setopt_enum(curl, CURLOPT_PROXY_SSLVERSION,
+                           config->proxy_ssl_version);
 
           {
             long mask =
@@ -1722,7 +1724,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         if(config->path_as_is)
           my_setopt(curl, CURLOPT_PATH_AS_IS, 1L);
 
-        if((use_proto & (CURLPROTO_SCP|CURLPROTO_SFTP)) &&
+        if((use_proto == proto_scp || use_proto == proto_sftp) &&
            !config->insecure_ok) {
           char *known = findfile(".ssh/known_hosts", FALSE);
           if(known) {
@@ -1752,18 +1754,20 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         if(config->cookies) {
           struct curlx_dynbuf cookies;
           struct curl_slist *cl;
-          CURLcode ret;
 
           /* The maximum size needs to match MAX_NAME in cookie.h */
-          curlx_dyn_init(&cookies, 4096);
+#define MAX_COOKIE_LINE 4096
+          curlx_dyn_init(&cookies, MAX_COOKIE_LINE);
           for(cl = config->cookies; cl; cl = cl->next) {
             if(cl == config->cookies)
-              ret = curlx_dyn_addf(&cookies, "%s", cl->data);
+              result = curlx_dyn_addf(&cookies, "%s", cl->data);
             else
-              ret = curlx_dyn_addf(&cookies, ";%s", cl->data);
+              result = curlx_dyn_addf(&cookies, ";%s", cl->data);
 
-            if(ret) {
-              result = CURLE_OUT_OF_MEMORY;
+            if(result) {
+              warnf(global,
+                    "skipped provided cookie, the cookie header "
+                    "would go over %u bytes\n", MAX_COOKIE_LINE);
               break;
             }
           }
@@ -1828,8 +1832,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         my_setopt_slist(curl, CURLOPT_TELNETOPTIONS, config->telnet_options);
 
         /* new in libcurl 7.7: */
-        my_setopt_str(curl, CURLOPT_RANDOM_FILE, config->random_file);
-        my_setopt_str(curl, CURLOPT_EGDSOCKET, config->egd_file);
         my_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS,
                   (long)(config->connecttimeout * 1000));
 
@@ -1932,7 +1934,9 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         my_setopt(curl, CURLOPT_FTP_SKIP_PASV_IP, config->ftp_skip_ip?1L:0L);
 
         /* curl 7.15.1 */
-        my_setopt(curl, CURLOPT_FTP_FILEMETHOD, (long)config->ftp_filemethod);
+        if(proto_ftp)
+          my_setopt(curl, CURLOPT_FTP_FILEMETHOD,
+                    (long)config->ftp_filemethod);
 
         /* curl 7.15.2 */
         if(config->localport) {
@@ -1967,7 +1971,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
           my_setopt(curl, CURLOPT_TCP_KEEPALIVE, 0L);
 
         /* curl 7.20.0 */
-        if(config->tftp_blksize)
+        if(config->tftp_blksize && proto_tftp)
           my_setopt(curl, CURLOPT_TFTP_BLKSIZE, config->tftp_blksize);
 
         if(config->mail_from)
@@ -1988,9 +1992,10 @@ static CURLcode single_transfer(struct GlobalConfig *global,
           my_setopt(curl, CURLOPT_NEW_FILE_PERMS, config->create_file_mode);
 
         if(config->proto_present)
-          my_setopt_flags(curl, CURLOPT_PROTOCOLS, config->proto);
+          my_setopt_str(curl, CURLOPT_PROTOCOLS_STR, config->proto_str);
         if(config->proto_redir_present)
-          my_setopt_flags(curl, CURLOPT_REDIR_PROTOCOLS, config->proto_redir);
+          my_setopt_str(curl, CURLOPT_REDIR_PROTOCOLS_STR,
+                        config->proto_redir_str);
 
         if(config->content_disposition
            && (urlnode->flags & GETOUT_USEREMOTE))
@@ -2053,10 +2058,6 @@ static CURLcode single_transfer(struct GlobalConfig *global,
         if(config->sasl_ir)
           my_setopt(curl, CURLOPT_SASL_IR, 1L);
 
-        if(config->nonpn) {
-          my_setopt(curl, CURLOPT_SSL_ENABLE_NPN, 0L);
-        }
-
         if(config->noalpn) {
           my_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L);
         }
@@ -2083,7 +2084,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
                         (long)(config->expect100timeout*1000));
 
         /* new in 7.48.0 */
-        if(config->tftp_no_options)
+        if(config->tftp_no_options && proto_tftp)
           my_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
 
         /* new in 7.59.0 */
@@ -2146,6 +2147,7 @@ static CURLcode single_transfer(struct GlobalConfig *global,
     }
     break;
   }
+  Curl_safefree(state->outfiles);
 
   if(!*added || result) {
     *added = FALSE;
@@ -2171,11 +2173,14 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
   CURLcode result = CURLE_OK;
   CURLMcode mcode;
   bool sleeping = FALSE;
+  char *errorbuf;
   *addedp = FALSE;
   *morep = FALSE;
-  result = create_transfer(global, share, addedp);
-  if(result)
-    return result;
+  if(all_pers < (global->parallel_max*2)) {
+    result = create_transfer(global, share, addedp);
+    if(result)
+      return result;
+  }
   for(per = transfers; per && (all_added < global->parallel_max);
       per = per->next) {
     bool getadded = FALSE;
@@ -2187,11 +2192,16 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
       sleeping = TRUE;
       continue;
     }
+    per->added = TRUE;
 
     result = pre_transfer(global, per);
     if(result)
       return result;
 
+    errorbuf = malloc(CURL_ERROR_SIZE);
+    if(!errorbuf)
+      return CURLE_OUT_OF_MEMORY;
+
     /* parallel connect means that we don't set PIPEWAIT since pipewait
        will make libcurl prefer multiplexing */
     (void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT,
@@ -2202,12 +2212,20 @@ static CURLcode add_parallel_transfers(struct GlobalConfig *global,
     (void)curl_easy_setopt(per->curl, CURLOPT_NOPROGRESS, 0L);
 
     mcode = curl_multi_add_handle(multi, per->curl);
-    if(mcode)
-      return CURLE_OUT_OF_MEMORY;
+    if(mcode) {
+      DEBUGASSERT(mcode == CURLM_OUT_OF_MEMORY);
+      result = CURLE_OUT_OF_MEMORY;
+    }
 
-    result = create_transfer(global, share, &getadded);
-    if(result)
+    if(!result)
+      result = create_transfer(global, share, &getadded);
+    if(result) {
+      free(errorbuf);
       return result;
+    }
+    errorbuf[0] = 0;
+    (void)curl_easy_setopt(per->curl, CURLOPT_ERRORBUFFER, errorbuf);
+    per->errorbuffer = errorbuf;
     per->added = TRUE;
     all_added++;
     *addedp = TRUE;
@@ -2281,8 +2299,9 @@ static CURLcode parallel_transfers(struct GlobalConfig *global,
           curl_multi_remove_handle(multi, easy);
 
           if(ended->abort && tres == CURLE_ABORTED_BY_CALLBACK) {
-            msnprintf(ended->errorbuffer, sizeof(ended->errorbuffer),
-              "Transfer aborted due to critical error in another transfer");
+            msnprintf(ended->errorbuffer, CURL_ERROR_SIZE,
+                      "Transfer aborted due to critical error "
+                      "in another transfer");
           }
           tres = post_per_transfer(global, ended, tres, &retry, &delay);
           progress_finalize(ended); /* before it goes away */
@@ -2365,19 +2384,20 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
   }
   for(per = transfers; per;) {
     bool retry;
-    long delay;
+    long delay_ms;
     bool bailout = FALSE;
+    struct timeval start;
     result = pre_transfer(global, per);
     if(result)
       break;
 
-#ifndef CURL_DISABLE_LIBCURL_OPTION
     if(global->libcurl) {
       result = easysrc_perform();
       if(result)
         break;
     }
-#endif
+
+    start = tvnow();
 #ifdef CURLDEBUG
     if(global->test_event_based)
       result = curl_easy_perform_ev(per->curl);
@@ -2385,9 +2405,9 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
 #endif
       result = curl_easy_perform(per->curl);
 
-    returncode = post_per_transfer(global, per, result, &retry, &delay);
+    returncode = post_per_transfer(global, per, result, &retry, &delay_ms);
     if(retry) {
-      tool_go_sleep(delay);
+      tool_go_sleep(delay_ms);
       continue;
     }
 
@@ -2405,6 +2425,18 @@ static CURLcode serial_transfers(struct GlobalConfig *global,
 
     if(bailout)
       break;
+
+    if(per && global->ms_per_transfer) {
+      /* how long time did the most recent transfer take in number of
+         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",
+              milli, global->ms_per_transfer - milli);
+        /* The transfer took less time than wanted. Wait a little. */
+        tool_go_sleep(global->ms_per_transfer - milli);
+      }
+    }
   }
   if(returncode)
     /* returncode errors have priority */
@@ -2454,8 +2486,10 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
      */
     result = curl_easy_getinfo(curltls, CURLINFO_TLS_SSL_PTR,
                                &tls_backend_info);
-    if(result)
+    if(result) {
+      curl_easy_cleanup(curltls);
       return result;
+    }
 
     /* Set the CA cert locations specified in the environment. For Windows if
      * no environment-specified filename is found then check for CA bundle
@@ -2472,6 +2506,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
         config->cacert = strdup(env);
         if(!config->cacert) {
           curl_free(env);
+          curl_easy_cleanup(curltls);
           errorf(global, "out of memory\n");
           return CURLE_OUT_OF_MEMORY;
         }
@@ -2482,6 +2517,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
           config->capath = strdup(env);
           if(!config->capath) {
             curl_free(env);
+            curl_easy_cleanup(curltls);
             helpf(global->errors, "out of memory\n");
             return CURLE_OUT_OF_MEMORY;
           }
@@ -2493,6 +2529,7 @@ static CURLcode transfer_per_config(struct GlobalConfig *global,
             config->cacert = strdup(env);
             if(!config->cacert) {
               curl_free(env);
+              curl_easy_cleanup(curltls);
               errorf(global, "out of memory\n");
               return CURLE_OUT_OF_MEMORY;
             }
@@ -2625,16 +2662,16 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
         tool_list_engines();
       else if(res == PARAM_LIBCURL_UNSUPPORTED_PROTOCOL)
         result = CURLE_UNSUPPORTED_PROTOCOL;
+      else if(res == PARAM_READ_ERROR)
+        result = CURLE_READ_ERROR;
       else
         result = CURLE_FAILED_INIT;
     }
     else {
-#ifndef CURL_DISABLE_LIBCURL_OPTION
       if(global->libcurl) {
         /* Initialise the libcurl source output */
         result = easysrc_init();
       }
-#endif
 
       /* Perform the main operations */
       if(!result) {
@@ -2642,12 +2679,10 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
         struct OperationConfig *operation = global->first;
         CURLSH *share = curl_share_init();
         if(!share) {
-#ifndef CURL_DISABLE_LIBCURL_OPTION
           if(global->libcurl) {
             /* Cleanup the libcurl source output */
             easysrc_cleanup();
           }
-#endif
           return CURLE_OUT_OF_MEMORY;
         }
 
@@ -2671,7 +2706,6 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
         result = run_all_transfers(global, share, result);
 
         curl_share_cleanup(share);
-#ifndef CURL_DISABLE_LIBCURL_OPTION
         if(global->libcurl) {
           /* Cleanup the libcurl source output */
           easysrc_cleanup();
@@ -2679,7 +2713,6 @@ CURLcode operate(struct GlobalConfig *global, int argc, argv_item_t argv[])
           /* Dump the libcurl code if previously enabled */
           dumpeasysrc(global);
         }
-#endif
       }
       else
         errorf(global, "out of memory\n");
index 61994052f64d723c1d4bc29dcc0e5054c7d6e8dd..c714da1bc25fe3806d113d74b5d8e9f66c3ef924 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_cb_hdr.h"
@@ -50,7 +52,6 @@ struct per_transfer {
   struct HdrCbData hdrcbdata;
   long num_headers;
   bool was_last_header_empty;
-  char errorbuffer[CURL_ERROR_SIZE];
 
   bool added; /* set TRUE when added to the multi handle */
   time_t startat; /* when doing parallel transfers, this is a retry transfer
@@ -69,12 +70,13 @@ struct per_transfer {
   bool ultotal_added;
 
   /* NULL or malloced */
-  char *separator_err;
-  char *separator;
   char *uploadfile;
+  char *errorbuffer; /* alloced and assigned while this is used for a
+                        transfer */
 };
 
 CURLcode operate(struct GlobalConfig *config, int argc, argv_item_t argv[]);
+void single_transfer_cleanup(struct OperationConfig *config);
 
 extern struct per_transfer *transfers; /* first node */
 
index 0a209bf6598b7f268709957aeb16dfa58fbd4e59..eb58772fb9c9b98e309c8c8c381f985bf846dae9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
+#include "tool_operate.h"
 
 #include "strcase.h"
 
@@ -28,7 +31,6 @@
 #include "curlx.h"
 
 #include "tool_cfgable.h"
-#include "tool_convert.h"
 #include "tool_doswin.h"
 #include "tool_operhlp.h"
 
@@ -50,6 +52,7 @@ void clean_getout(struct OperationConfig *config)
     }
     config->url_list = NULL;
   }
+  single_transfer_cleanup(config);
 }
 
 bool output_expected(const char *url, const char *uploadfile)
@@ -72,61 +75,73 @@ bool stdin_upload(const char *uploadfile)
  * Adds the file name to the URL if it doesn't already have one.
  * url will be freed before return if the returned pointer is different
  */
-char *add_file_name_to_url(char *url, const char *filename)
+CURLcode add_file_name_to_url(CURL *curl, char **inurlp, const char *filename)
 {
-  /* If no file name part is given in the URL, we add this file name */
-  char *ptr = strstr(url, "://");
-  CURL *curl = curl_easy_init(); /* for url escaping */
-  if(!curl)
-    return NULL; /* error! */
-  if(ptr)
-    ptr += 3;
-  else
-    ptr = url;
-  ptr = strrchr(ptr, '/');
-  if(!ptr || !*++ptr) {
-    /* The URL has no file name part, add the local file name. In order
-       to be able to do so, we have to create a new URL in another
-       buffer.*/
-
-    /* We only want the part of the local path that is on the right
-       side of the rightmost slash and backslash. */
-    const char *filep = strrchr(filename, '/');
-    char *file2 = strrchr(filep?filep:filename, '\\');
-    char *encfile;
-
-    if(file2)
-      filep = file2 + 1;
-    else if(filep)
-      filep++;
-    else
-      filep = filename;
-
-    /* URL encode the file name */
-    encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
-    if(encfile) {
-      char *urlbuffer;
-      if(ptr)
-        /* there is a trailing slash on the URL */
-        urlbuffer = aprintf("%s%s", url, encfile);
+  CURLcode result = CURLE_OUT_OF_MEMORY;
+  CURLU *uh = curl_url();
+  char *path = NULL;
+  if(uh) {
+    char *ptr;
+    if(curl_url_set(uh, CURLUPART_URL, *inurlp,
+                    CURLU_GUESS_SCHEME|CURLU_NON_SUPPORT_SCHEME))
+      goto fail;
+    if(curl_url_get(uh, CURLUPART_PATH, &path, 0))
+      goto fail;
+
+    ptr = strrchr(path, '/');
+    if(!ptr || !*++ptr) {
+      /* The URL path has no file name part, add the local file name. In order
+         to be able to do so, we have to create a new URL in another buffer.*/
+
+      /* We only want the part of the local path that is on the right
+         side of the rightmost slash and backslash. */
+      const char *filep = strrchr(filename, '/');
+      char *file2 = strrchr(filep?filep:filename, '\\');
+      char *encfile;
+
+      if(file2)
+        filep = file2 + 1;
+      else if(filep)
+        filep++;
       else
-        /* there is no trailing slash on the URL */
-        urlbuffer = aprintf("%s/%s", url, encfile);
-
-      curl_free(encfile);
-
-      if(!urlbuffer) {
-        url = NULL;
-        goto end;
+        filep = filename;
+
+      /* URL encode the file name */
+      encfile = curl_easy_escape(curl, filep, 0 /* use strlen */);
+      if(encfile) {
+        char *newpath;
+        char *newurl;
+        CURLUcode uerr;
+        if(ptr)
+          /* there is a trailing slash on the path */
+          newpath = aprintf("%s%s", path, encfile);
+        else
+          /* there is no trailing slash on the path */
+          newpath = aprintf("%s/%s", path, encfile);
+
+        curl_free(encfile);
+
+        if(!newpath)
+          goto fail;
+        uerr = curl_url_set(uh, CURLUPART_PATH, newpath, 0);
+        free(newpath);
+        if(uerr)
+          goto fail;
+        if(curl_url_get(uh, CURLUPART_URL, &newurl, CURLU_DEFAULT_SCHEME))
+          goto fail;
+        free(*inurlp);
+        *inurlp = newurl;
+        result = CURLE_OK;
       }
-
-      Curl_safefree(url);
-      url = urlbuffer; /* use our new URL instead! */
     }
+    else
+      /* nothing to do */
+      result = CURLE_OK;
   }
-  end:
-  curl_easy_cleanup(curl);
-  return url;
+  fail:
+  curl_url_cleanup(uh);
+  curl_free(path);
+  return result;
 }
 
 /* Extracts the name portion of the URL.
@@ -136,61 +151,65 @@ char *add_file_name_to_url(char *url, const char *filename)
 CURLcode get_url_file_name(char **filename, const char *url)
 {
   const char *pc, *pc2;
+  CURLU *uh = curl_url();
+  char *path = NULL;
+
+  if(!uh)
+    return CURLE_OUT_OF_MEMORY;
 
   *filename = NULL;
 
-  /* Find and get the remote file name */
-  pc = strstr(url, "://");
-  if(pc)
-    pc += 3;
-  else
-    pc = url;
-
-  pc2 = strrchr(pc, '\\');
-  pc = strrchr(pc, '/');
-  if(pc2 && (!pc || pc < pc2))
-    pc = pc2;
-
-  if(pc)
-    /* duplicate the string beyond the slash */
-    pc++;
-  else
-    /* no slash => empty string */
-    pc = "";
-
-  *filename = strdup(pc);
-  if(!*filename)
-    return CURLE_OUT_OF_MEMORY;
+  if(!curl_url_set(uh, CURLUPART_URL, url, CURLU_GUESS_SCHEME) &&
+     !curl_url_get(uh, CURLUPART_PATH, &path, 0)) {
+    curl_url_cleanup(uh);
+
+    pc = strrchr(path, '/');
+    pc2 = strrchr(pc ? pc + 1 : path, '\\');
+    if(pc2)
+      pc = pc2;
+
+    if(pc)
+      /* duplicate the string beyond the slash */
+      pc++;
+    else
+      /* no slash => empty string */
+      pc = "";
+
+    *filename = strdup(pc);
+    curl_free(path);
+    if(!*filename)
+      return CURLE_OUT_OF_MEMORY;
 
 #if defined(MSDOS) || defined(WIN32)
-  {
-    char *sanitized;
-    SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0);
-    Curl_safefree(*filename);
-    if(sc)
-      return CURLE_URL_MALFORMAT;
-    *filename = sanitized;
-  }
+    {
+      char *sanitized;
+      SANITIZEcode sc = sanitize_file_name(&sanitized, *filename, 0);
+      Curl_safefree(*filename);
+      if(sc)
+        return CURLE_URL_MALFORMAT;
+      *filename = sanitized;
+    }
 #endif /* MSDOS || WIN32 */
 
-  /* in case we built debug enabled, we allow an environment variable
-   * named CURL_TESTDIR to prefix the given file name to put it into a
-   * specific directory
-   */
+    /* in case we built debug enabled, we allow an environment variable
+     * named CURL_TESTDIR to prefix the given file name to put it into a
+     * specific directory
+     */
 #ifdef DEBUGBUILD
-  {
-    char *tdir = curlx_getenv("CURL_TESTDIR");
-    if(tdir) {
-      char buffer[512]; /* suitably large */
-      msnprintf(buffer, sizeof(buffer), "%s/%s", tdir, *filename);
-      Curl_safefree(*filename);
-      *filename = strdup(buffer); /* clone the buffer */
-      curl_free(tdir);
-      if(!*filename)
-        return CURLE_OUT_OF_MEMORY;
+    {
+      char *tdir = curlx_getenv("CURL_TESTDIR");
+      if(tdir) {
+        char *alt = aprintf("%s/%s", tdir, *filename);
+        Curl_safefree(*filename);
+        *filename = alt;
+        curl_free(tdir);
+        if(!*filename)
+          return CURLE_OUT_OF_MEMORY;
+      }
     }
-  }
 #endif
-
-  return CURLE_OK;
+    return CURLE_OK;
+  }
+  curl_url_cleanup(uh);
+  return CURLE_URL_MALFORMAT;
 }
index 482f6e50a30ae78ffd6acf23024ced2eb209a048..8018d1a67c7e3d853a5898927235c1421c7952f3 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -31,7 +33,7 @@ bool output_expected(const char *url, const char *uploadfile);
 
 bool stdin_upload(const char *uploadfile);
 
-char *add_file_name_to_url(char *url, const char *filename);
+CURLcode add_file_name_to_url(CURL *curl, char **inurlp, const char *filename);
 
 CURLcode get_url_file_name(char **filename, const char *url);
 
index e570ca1b1f50c9feca4188a95e960546a7dffa41..81feaba7e81e8bd2db67d252bfbf7959ec92e1a0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index e1fb1ee9cca246ca8ec7168384755190ed97fa83..c5cc32260673eef713a04a5bd17c457491e5cadd 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 8ac6cf53e04cdca55a9e931648810fa2218658d2..05afb8d3a4753d6489c1f5c772f8605b351131af 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -32,6 +34,8 @@
 #include "tool_getpass.h"
 #include "tool_msgs.h"
 #include "tool_paramhlp.h"
+#include "tool_libinfo.h"
+#include "tool_util.h"
 #include "tool_version.h"
 #include "dynbuf.h"
 
@@ -64,6 +68,7 @@ struct getout *new_getout(struct OperationConfig *config)
 ParameterError file2string(char **bufp, FILE *file)
 {
   struct curlx_dynbuf dyn;
+  DEBUGASSERT(MAX_FILE2STRING < INT_MAX); /* needs to fit in an int later */
   curlx_dyn_init(&dyn, MAX_FILE2STRING);
   if(file) {
     char buffer[256];
@@ -90,14 +95,22 @@ ParameterError file2memory(char **bufp, size_t *size, FILE *file)
   if(file) {
     size_t nread;
     struct curlx_dynbuf dyn;
+    /* The size needs to fit in an int later */
+    DEBUGASSERT(MAX_FILE2MEMORY < INT_MAX);
     curlx_dyn_init(&dyn, MAX_FILE2MEMORY);
     do {
       char buffer[4096];
       nread = fread(buffer, 1, sizeof(buffer), file);
+      if(ferror(file)) {
+        curlx_dyn_free(&dyn);
+        *size = 0;
+        *bufp = NULL;
+        return PARAM_READ_ERROR;
+      }
       if(nread)
         if(curlx_dyn_addn(&dyn, buffer, nread))
           return PARAM_NO_MEM;
-    } while(nread);
+    } while(!feof(file));
     *size = curlx_dyn_len(&dyn);
     *bufp = curlx_dyn_ptr(&dyn);
   }
@@ -108,21 +121,6 @@ ParameterError file2memory(char **bufp, size_t *size, FILE *file)
   return PARAM_OK;
 }
 
-void cleanarg(char *str)
-{
-#ifdef HAVE_WRITABLE_ARGV
-  /* now that GetStr has copied the contents of nextarg, wipe the next
-   * argument out so that the username:password isn't displayed in the
-   * system process list */
-  if(str) {
-    size_t len = strlen(str);
-    memset(str, ' ', len);
-  }
-#else
-  (void)str;
-#endif
-}
-
 /*
  * Parse the string and write the long in the given address. Return PARAM_OK
  * on success, otherwise a parameter specific error enum.
@@ -220,7 +218,7 @@ ParameterError str2unummax(long *val, const char *str, long max)
  * data.
  */
 
-static ParameterError str2double(double *val, const char *str, long max)
+static ParameterError str2double(double *val, const char *str, double max)
 {
   if(str) {
     char *endptr;
@@ -253,7 +251,7 @@ static ParameterError str2double(double *val, const char *str, long max)
  * data.
  */
 
-ParameterError str2udouble(double *valp, const char *str, long max)
+ParameterError str2udouble(double *valp, const char *str, double max)
 {
   double value;
   ParameterError result = str2double(&value, str, max);
@@ -267,8 +265,55 @@ ParameterError str2udouble(double *valp, const char *str, long max)
 }
 
 /*
- * Parse the string and modify the long in the given address. Return
- * non-zero on failure, zero on success.
+ * Implement protocol sets in null-terminated array of protocol name pointers.
+ */
+
+/* Return index of prototype token in set, card(set) if not found.
+   Can be called with proto == NULL to get card(set). */
+static size_t protoset_index(const char * const *protoset, const char *proto)
+{
+  const char * const *p = protoset;
+
+  DEBUGASSERT(proto == proto_token(proto));     /* Ensure it is tokenized. */
+
+  for(; *p; p++)
+    if(proto == *p)
+      break;
+  return p - protoset;
+}
+
+/* Include protocol token in set. */
+static void protoset_set(const char **protoset, const char *proto)
+{
+  if(proto) {
+    size_t n = protoset_index(protoset, proto);
+
+    if(!protoset[n]) {
+      DEBUGASSERT(n < proto_count);
+      protoset[n] = proto;
+      protoset[n + 1] = NULL;
+    }
+  }
+}
+
+/* Exclude protocol token from set. */
+static void protoset_clear(const char **protoset, const char *proto)
+{
+  if(proto) {
+    size_t n = protoset_index(protoset, proto);
+
+    if(protoset[n]) {
+      size_t m = protoset_index(protoset, NULL) - 1;
+
+      protoset[n] = protoset[m];
+      protoset[m] = NULL;
+    }
+  }
+}
+
+/*
+ * Parse the string and provide an allocated libcurl compatible protocol
+ * string output. Return non-zero on failure, zero on success.
  *
  * The string is a list of protocols
  *
@@ -277,48 +322,42 @@ ParameterError str2udouble(double *valp, const char *str, long max)
  * data.
  */
 
-long proto2num(struct OperationConfig *config, long *val, const char *str)
+#define MAX_PROTOSTRING (64*11) /* Enough room for 64 10-chars proto names. */
+
+ParameterError proto2num(struct OperationConfig *config,
+                         const char * const *val, char **ostr, const char *str)
 {
   char *buffer;
   const char *sep = ",";
   char *token;
+  const char **protoset;
+  struct curlx_dynbuf obuf;
+  size_t proto;
+  CURLcode result;
 
-  static struct sprotos {
-    const char *name;
-    long bit;
-  } const protos[] = {
-    { "all", CURLPROTO_ALL },
-    { "http", CURLPROTO_HTTP },
-    { "https", CURLPROTO_HTTPS },
-    { "ftp", CURLPROTO_FTP },
-    { "ftps", CURLPROTO_FTPS },
-    { "scp", CURLPROTO_SCP },
-    { "sftp", CURLPROTO_SFTP },
-    { "telnet", CURLPROTO_TELNET },
-    { "ldap", CURLPROTO_LDAP },
-    { "ldaps", CURLPROTO_LDAPS },
-    { "dict", CURLPROTO_DICT },
-    { "file", CURLPROTO_FILE },
-    { "tftp", CURLPROTO_TFTP },
-    { "imap", CURLPROTO_IMAP },
-    { "imaps", CURLPROTO_IMAPS },
-    { "pop3", CURLPROTO_POP3 },
-    { "pop3s", CURLPROTO_POP3S },
-    { "smtp", CURLPROTO_SMTP },
-    { "smtps", CURLPROTO_SMTPS },
-    { "rtsp", CURLPROTO_RTSP },
-    { "gopher", CURLPROTO_GOPHER },
-    { "smb", CURLPROTO_SMB },
-    { "smbs", CURLPROTO_SMBS },
-    { NULL, 0 }
-  };
+  curlx_dyn_init(&obuf, MAX_PROTOSTRING);
 
   if(!str)
-    return 1;
+    return PARAM_OPTION_AMBIGUOUS;
 
   buffer = strdup(str); /* because strtok corrupts it */
   if(!buffer)
-    return 1;
+    return PARAM_NO_MEM;
+
+  protoset = malloc((proto_count + 1) * sizeof(*protoset));
+  if(!protoset) {
+    free(buffer);
+    return PARAM_NO_MEM;
+  }
+
+  /* Preset protocol set with default values. */
+  protoset[0] = NULL;
+  for(; *val; val++) {
+    const char *p = proto_token(*val);
+
+    if(p)
+      protoset_set(protoset, p);
+  }
 
   /* Allow strtok() here since this isn't used threaded */
   /* !checksrc! disable BANNEDFUNC 2 */
@@ -327,8 +366,6 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
       token = strtok(NULL, sep)) {
     enum e_action { allow, deny, set } action = allow;
 
-    struct sprotos const *pp;
-
     /* Process token modifiers */
     while(!ISALNUM(*token)) { /* may be NULL if token is all modifiers */
       switch (*token++) {
@@ -342,38 +379,62 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
         action = allow;
         break;
       default: /* Includes case of terminating NULL */
-        Curl_safefree(buffer);
-        return 1;
+        free(buffer);
+        free((char *) protoset);
+        return PARAM_BAD_USE;
       }
     }
 
-    for(pp = protos; pp->name; pp++) {
-      if(curl_strequal(token, pp->name)) {
+    if(curl_strequal(token, "all")) {
+      switch(action) {
+      case deny:
+        protoset[0] = NULL;
+        break;
+      case allow:
+      case set:
+        memcpy((char *) protoset,
+               built_in_protos, (proto_count + 1) * sizeof(*protoset));
+        break;
+      }
+    }
+    else {
+      const char *p = proto_token(token);
+
+      if(p)
         switch(action) {
         case deny:
-          *val &= ~(pp->bit);
-          break;
-        case allow:
-          *val |= pp->bit;
+          protoset_clear(protoset, p);
           break;
         case set:
-          *val = pp->bit;
+          protoset[0] = NULL;
+          /* FALLTHROUGH */
+        case allow:
+          protoset_set(protoset, p);
           break;
         }
-        break;
+      else { /* unknown protocol */
+        /* If they have specified only this protocol, we say treat it as
+           if no protocols are allowed */
+        if(action == set)
+          protoset[0] = NULL;
+        warnf(config->global, "unrecognized protocol '%s'\n", token);
       }
     }
-
-    if(!(pp->name)) { /* unknown protocol */
-      /* If they have specified only this protocol, we say treat it as
-         if no protocols are allowed */
-      if(action == set)
-        *val = 0;
-      warnf(config->global, "unrecognized protocol '%s'\n", token);
-    }
   }
-  Curl_safefree(buffer);
-  return 0;
+  free(buffer);
+
+  /* We need the protocols in alphabetic order for CI tests requirements. */
+  qsort((char *) protoset, protoset_index(protoset, NULL), sizeof(*protoset),
+        struplocompare4sort);
+
+  result = curlx_dyn_addn(&obuf, "", 0);
+  for(proto = 0; protoset[proto] && !result; proto++)
+    result = curlx_dyn_addf(&obuf, "%s,", protoset[proto]);
+  free((char *) protoset);
+  curlx_dyn_setlen(&obuf, curlx_dyn_len(&obuf) - 1);
+  *ostr = curlx_dyn_ptr(&obuf);
+
+  return *ostr ? PARAM_OK : PARAM_NO_MEM;
 }
 
 /**
@@ -384,16 +445,13 @@ long proto2num(struct OperationConfig *config, long *val, const char *str)
  * @return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL  protocol not supported
  * @return PARAM_REQUIRES_PARAMETER   missing parameter
  */
-int check_protocol(const char *str)
+ParameterError check_protocol(const char *str)
 {
-  const char * const *pp;
-  const curl_version_info_data *curlinfo = curl_version_info(CURLVERSION_NOW);
   if(!str)
     return PARAM_REQUIRES_PARAMETER;
-  for(pp = curlinfo->protocols; *pp; pp++) {
-    if(curl_strequal(*pp, str))
-      return PARAM_OK;
-  }
+
+  if(proto_token(str))
+    return PARAM_OK;
   return PARAM_LIBCURL_UNSUPPORTED_PROTOCOL;
 }
 
@@ -548,11 +606,45 @@ static char *my_useragent(void)
   return strdup(CURL_NAME "/" CURL_VERSION);
 }
 
+#define isheadersep(x) ((((x)==':') || ((x)==';')))
+
+/*
+ * inlist() returns true if the given 'checkfor' header is present in the
+ * header list.
+ */
+static bool inlist(const struct curl_slist *head,
+                   const char *checkfor)
+{
+  size_t thislen = strlen(checkfor);
+  DEBUGASSERT(thislen);
+  DEBUGASSERT(checkfor[thislen-1] != ':');
+
+  for(; head; head = head->next) {
+    if(curl_strnequal(head->data, checkfor, thislen) &&
+       isheadersep(head->data[thislen]) )
+      return TRUE;
+  }
+
+  return FALSE;
+}
+
 CURLcode get_args(struct OperationConfig *config, const size_t i)
 {
   CURLcode result = CURLE_OK;
   bool last = (config->next ? FALSE : TRUE);
 
+  if(config->jsoned) {
+    ParameterError err = PARAM_OK;
+    /* --json also implies json Content-Type: and Accept: headers - if
+       they are not set with -H */
+    if(!inlist(config->headers, "Content-Type"))
+      err = add2list(&config->headers, "Content-Type: application/json");
+    if(!err && !inlist(config->headers, "Accept"))
+      err = add2list(&config->headers, "Accept: application/json");
+    if(err)
+      return CURLE_OUT_OF_MEMORY;
+  }
+
   /* Check we have a password for the given host user */
   if(config->userpwd && !config->oauth_bearer) {
     result = checkpasswd("host", i, last, &config->userpwd);
index 32b0fc49b01199ecaaecc9bc346f02683b3b241d..7d68583e67714fd55217fdb42b8d566ff498587c 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
+#include "tool_libinfo.h"
 
 struct getout *new_getout(struct OperationConfig *config);
 
@@ -29,17 +32,17 @@ ParameterError file2string(char **bufp, FILE *file);
 
 ParameterError file2memory(char **bufp, size_t *size, FILE *file);
 
-void cleanarg(char *str);
-
 ParameterError str2num(long *val, const char *str);
 ParameterError str2unum(long *val, const char *str);
 ParameterError oct2nummax(long *val, const char *str, long max);
 ParameterError str2unummax(long *val, const char *str, long max);
-ParameterError str2udouble(double *val, const char *str, long max);
+ParameterError str2udouble(double *val, const char *str, double max);
 
-long proto2num(struct OperationConfig *config, long *val, const char *str);
+ParameterError proto2num(struct OperationConfig *config,
+                         const char * const *val, char **obuf,
+                         const char *str);
 
-int check_protocol(const char *str);
+ParameterError check_protocol(const char *str);
 
 ParameterError str2offset(curl_off_t *val, const char *str);
 
index ddb345c6d8168d3fe90876a5aa12cf8a5ef591c9..a166757f86b7de8f909026d22c6fde120dbb0822 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -84,15 +86,10 @@ int parseconfig(const char *filename, struct GlobalConfig *global)
   int rc = 0;
   struct OperationConfig *operation = global->last;
   char *pathalloc = NULL;
-#ifdef WIN32
-#define DOTSCORE TRUE /* look for underscore-prefixed name too */
-#else
-#define DOTSCORE FALSE
-#endif
 
   if(!filename) {
     /* NULL means load .curlrc from homedir! */
-    char *curlrc = findfile(".curlrc", DOTSCORE);
+    char *curlrc = findfile(".curlrc", CURLRC_DOTSCORE);
     if(curlrc) {
       file = fopen(curlrc, FOPEN_READTEXT);
       if(!file) {
index 5748c87e70815f147ca259115f1dfbbc1c296d69..90af619615fc57c794411fa11bb5c0187e5537b9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 031f8b8d43bda8592e20f9a93118a84148217978..266177b6ecd9fe5e407771b7971731bb91ec1d67 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_operate.h"
@@ -159,8 +161,8 @@ static bool indexwrapped;
 static struct speedcount speedstore[SPEEDCNT];
 
 /*
-  |DL% UL%  Dled  Uled  Xfers  Live   Qd Total     Current  Left    Speed
-  |  6 --   9.9G     0     2     2     0  0:00:40  0:00:02  0:00:37 4087M
+  |DL% UL%  Dled  Uled  Xfers  Live Total     Current  Left    Speed
+  |  6 --   9.9G     0     2     2   0:00:40  0:00:02  0:00:37 4087M
 */
 bool progress_meter(struct GlobalConfig *global,
                     struct timeval *start,
@@ -179,7 +181,7 @@ bool progress_meter(struct GlobalConfig *global,
 
   if(!header) {
     header = TRUE;
-    fputs("DL% UL%  Dled  Uled  Xfers  Live   Qd "
+    fputs("DL% UL%  Dled  Uled  Xfers  Live "
           "Total     Current  Left    Speed\n",
           global->errors);
   }
@@ -197,7 +199,6 @@ bool progress_meter(struct GlobalConfig *global,
     bool dlknown = TRUE;
     bool ulknown = TRUE;
     curl_off_t all_running = 0; /* in progress */
-    curl_off_t all_queued = 0;  /* pending */
     curl_off_t speed = 0;
     unsigned int i;
     stamp = now;
@@ -223,9 +224,7 @@ bool progress_meter(struct GlobalConfig *global,
         all_ultotal += per->ultotal;
         per->ultotal_added = TRUE;
       }
-      if(!per->added)
-        all_queued++;
-      else
+      if(per->added)
         all_running++;
     }
     if(dlknown && all_dltotal)
@@ -266,6 +265,8 @@ bool progress_meter(struct GlobalConfig *global,
         dl = all_dlnow;
         ul = all_ulnow;
       }
+      if(!deltams) /* no division by zero please */
+        deltams++;
       dls = (curl_off_t)((double)dl / ((double)deltams/1000.0));
       uls = (curl_off_t)((double)ul / ((double)deltams/1000.0));
       speed = dls > uls ? dls : uls;
@@ -292,8 +293,7 @@ bool progress_meter(struct GlobalConfig *global,
             "%s " /* Uled */
             "%5" CURL_FORMAT_CURL_OFF_T " " /* Xfers */
             "%5" CURL_FORMAT_CURL_OFF_T " " /* Live */
-            "%5" CURL_FORMAT_CURL_OFF_T " " /* Queued */
-            "%s "  /* Total time */
+            " %s "  /* Total time */
             "%s "  /* Current time */
             "%s "  /* Time left */
             "%s "  /* Speed */
@@ -305,7 +305,6 @@ bool progress_meter(struct GlobalConfig *global,
             max5data(all_ulnow, buffer[1]),
             all_xfers,
             all_running,
-            all_queued,
             time_total,
             time_spent,
             time_left,
index da9bdedd2fa0dad9e9decefabcff2e294d1a76f0..5f68474ff3c2ca282c9c9d8c22a81ff69cad621e 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 543a953fda83310e10cc07312c3f8f06ec543fdb..70e44d4ed2755d7770dcaebaebb6f9e875c938b0 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -127,7 +129,8 @@ typedef enum {
   HTTPREQ_GET,
   HTTPREQ_HEAD,
   HTTPREQ_MIMEPOST,
-  HTTPREQ_SIMPLEPOST
+  HTTPREQ_SIMPLEPOST,
+  HTTPREQ_PUT
 } HttpReq;
 
 
index 4c86eb321dd8c26e0ffc8c4790884a33e334cc35..3db2fe3c68d8611fd4b8b223d2111b8e4e0f48cd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -30,8 +32,8 @@
 #include "tool_cfgable.h"
 #include "tool_easysrc.h"
 #include "tool_setopt.h"
-#include "tool_convert.h"
 #include "tool_msgs.h"
+#include "dynbuf.h"
 
 #include "memdebug.h" /* keep this as LAST include */
 
@@ -144,35 +146,6 @@ const struct NameValue setopt_nv_CURL_NETRC[] = {
   NVEND,
 };
 
-/* These mappings essentially triplicated - see
- * tool_libinfo.c and tool_paramhlp.c */
-const struct NameValue setopt_nv_CURLPROTO[] = {
-  NV(CURLPROTO_ALL),            /* combination */
-  NV(CURLPROTO_DICT),
-  NV(CURLPROTO_FILE),
-  NV(CURLPROTO_FTP),
-  NV(CURLPROTO_FTPS),
-  NV(CURLPROTO_GOPHER),
-  NV(CURLPROTO_HTTP),
-  NV(CURLPROTO_HTTPS),
-  NV(CURLPROTO_IMAP),
-  NV(CURLPROTO_IMAPS),
-  NV(CURLPROTO_LDAP),
-  NV(CURLPROTO_LDAPS),
-  NV(CURLPROTO_POP3),
-  NV(CURLPROTO_POP3S),
-  NV(CURLPROTO_RTSP),
-  NV(CURLPROTO_SCP),
-  NV(CURLPROTO_SFTP),
-  NV(CURLPROTO_SMB),
-  NV(CURLPROTO_SMBS),
-  NV(CURLPROTO_SMTP),
-  NV(CURLPROTO_SMTPS),
-  NV(CURLPROTO_TELNET),
-  NV(CURLPROTO_TFTP),
-  NVEND,
-};
-
 /* These options have non-zero default values. */
 static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
   NV1(CURLOPT_SSL_VERIFYPEER, 1),
@@ -222,7 +195,7 @@ static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
 
 #define REM0(s) ADD((&easysrc_toohard, s))
 #define REM1(f,a) ADDF((&easysrc_toohard, f,a))
-#define REM2(f,a,b) ADDF((&easysrc_toohard, f,a,b))
+#define REM3(f,a,b,c) ADDF((&easysrc_toohard, f,a,b,c))
 
 /* Escape string to C string syntax.  Return NULL if out of memory.
  * Is this correct for those wacky EBCDIC guys? */
@@ -233,9 +206,11 @@ static const struct NameValue setopt_nv_CURLNONZERODEFAULTS[] = {
 static char *c_escape(const char *str, curl_off_t len)
 {
   const char *s;
-  unsigned char c;
-  char *escaped, *e;
   unsigned int cutoff = 0;
+  CURLcode result;
+  struct curlx_dynbuf escaped;
+
+  curlx_dyn_init(&escaped, 4 * MAX_STRING_LENGTH_OUTPUT + 3);
 
   if(len == ZERO_TERMINATED)
     len = strlen(str);
@@ -246,45 +221,44 @@ static char *c_escape(const char *str, curl_off_t len)
     cutoff = 3;
   }
 
-  /* Allocate space based on worst-case */
-  escaped = malloc(4 * (size_t)len + 1 + cutoff);
-  if(!escaped)
-    return NULL;
-
-  e = escaped;
-  for(s = str; len; s++, len--) {
-    c = *s;
-    if(c == '\n') {
-      strcpy(e, "\\n");
-      e += 2;
-    }
-    else if(c == '\r') {
-      strcpy(e, "\\r");
-      e += 2;
-    }
-    else if(c == '\t') {
-      strcpy(e, "\\t");
-      e += 2;
-    }
-    else if(c == '\\') {
-      strcpy(e, "\\\\");
-      e += 2;
-    }
-    else if(c == '"') {
-      strcpy(e, "\\\"");
-      e += 2;
-    }
-    else if(!isprint(c)) {
-      msnprintf(e, 5, "\\x%02x", (unsigned)c);
-      e += 4;
+  result = curlx_dyn_addn(&escaped, STRCONST(""));
+  for(s = str; !result && len; s++, len--) {
+    /* escape question marks as well, to prevent generating accidental
+       trigraphs */
+    static const char from[] = "\t\r\n?\"\\";
+    static const char to[] = "\\t\\r\\n\\?\\\"\\\\";
+    const char *p = strchr(from, *s);
+
+    if(!p && ISPRINT(*s))
+      continue;
+
+    result = curlx_dyn_addn(&escaped, str, s - str);
+    str = s + 1;
+
+    if(!result) {
+      if(p && *p)
+        result = curlx_dyn_addn(&escaped, to + 2 * (p - from), 2);
+      else {
+        const char *format = "\\x%02x";
+
+        if(len > 1 && ISXDIGIT(s[1])) {
+          /* Octal escape to avoid >2 digit hex. */
+          format = "\\%03o";
+        }
+
+        result = curlx_dyn_addf(&escaped, format,
+                                (unsigned int) *(unsigned char *) s);
+      }
     }
-    else
-      *e++ = c;
   }
-  while(cutoff--)
-    *e++ = '.';
-  *e = '\0';
-  return escaped;
+
+  if(!result)
+    result = curlx_dyn_addn(&escaped, str, s - str);
+
+  if(!result)
+    (void) !curlx_dyn_addn(&escaped, "...", cutoff);
+
+  return curlx_dyn_ptr(&escaped);
 }
 
 /* setopt wrapper for enum types */
@@ -474,25 +448,7 @@ static CURLcode libcurl_generate_mime_part(CURL *curl,
     break;
 
   case TOOLMIME_DATA:
-#ifdef CURL_DOES_CONVERSIONS
-    /* Data will be set in ASCII, thus issue a comment with clear text. */
-    escaped = c_escape(part->data, ZERO_TERMINATED);
-    NULL_CHECK(escaped);
-    CODE1("/* \"%s\" */", escaped);
-
-    /* Our data is always textual: convert it to ASCII. */
-    {
-      size_t size = strlen(part->data);
-      char *cp = malloc(size + 1);
-
-      NULL_CHECK(cp);
-      memcpy(cp, part->data, size + 1);
-      ret = convert_to_network(cp, size);
-      data = cp;
-    }
-#else
     data = part->data;
-#endif
     if(!ret) {
       Curl_safefree(escaped);
       escaped = c_escape(data, ZERO_TERMINATED);
@@ -566,11 +522,6 @@ static CURLcode libcurl_generate_mime_part(CURL *curl,
   }
 
 nomem:
-#ifdef CURL_DOES_CONVERSIONS
-  if(data)
-    free((char *) data);
-#endif
-
   Curl_safefree(escaped);
   return ret;
 }
@@ -684,7 +635,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
     /* function pointers are never printable */
     if(tag >= CURLOPTTYPE_FUNCTIONPOINT) {
       if(pval) {
-        value = "functionpointer";
+        value = "function pointer";
         remark = TRUE;
       }
       else
@@ -696,7 +647,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
       escape = TRUE;
     }
     else if(pval) {
-      value = "objectpointer";
+      value = "object pointer";
       remark = TRUE;
     }
     else
@@ -722,7 +673,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
 
     /* blobs are never printable */
     if(pblob) {
-      value = "blobpointer";
+      value = "blob pointer";
       remark = TRUE;
     }
     else
@@ -737,7 +688,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
     /* we only use this for real if --libcurl was used */
 
     if(remark)
-      REM2("%s set to a %s", name, value);
+      REM3("%s was set to a%s %s", name, (*value == 'o' ? "n" : ""), value);
     else {
       if(escape) {
         curl_off_t len = ZERO_TERMINATED;
@@ -763,123 +714,3 @@ CURLcode tool_setopt(CURL *curl, bool str, struct GlobalConfig *global,
 #include "tool_setopt.h"
 
 #endif /* CURL_DISABLE_LIBCURL_OPTION */
-
-/*
- * tool_setopt_skip() allows the curl tool code to avoid setopt options that
- * are explicitly disabled in the build.
- */
-bool tool_setopt_skip(CURLoption tag)
-{
-#ifdef CURL_DISABLE_PROXY
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_HAPROXYPROTOCOL:
-  case CURLOPT_HTTPPROXYTUNNEL:
-  case CURLOPT_NOPROXY:
-  case CURLOPT_PRE_PROXY:
-  case CURLOPT_PROXY:
-  case CURLOPT_PROXYAUTH:
-  case CURLOPT_PROXY_CAINFO:
-  case CURLOPT_PROXY_CAPATH:
-  case CURLOPT_PROXY_CRLFILE:
-  case CURLOPT_PROXYHEADER:
-  case CURLOPT_PROXY_KEYPASSWD:
-  case CURLOPT_PROXYPASSWORD:
-  case CURLOPT_PROXY_PINNEDPUBLICKEY:
-  case CURLOPT_PROXYPORT:
-  case CURLOPT_PROXY_SERVICE_NAME:
-  case CURLOPT_PROXY_SSLCERT:
-  case CURLOPT_PROXY_SSLCERTTYPE:
-  case CURLOPT_PROXY_SSL_CIPHER_LIST:
-  case CURLOPT_PROXY_SSLKEY:
-  case CURLOPT_PROXY_SSLKEYTYPE:
-  case CURLOPT_PROXY_SSL_OPTIONS:
-  case CURLOPT_PROXY_SSL_VERIFYHOST:
-  case CURLOPT_PROXY_SSL_VERIFYPEER:
-  case CURLOPT_PROXY_SSLVERSION:
-  case CURLOPT_PROXY_TLS13_CIPHERS:
-  case CURLOPT_PROXY_TLSAUTH_PASSWORD:
-  case CURLOPT_PROXY_TLSAUTH_TYPE:
-  case CURLOPT_PROXY_TLSAUTH_USERNAME:
-  case CURLOPT_PROXY_TRANSFER_MODE:
-  case CURLOPT_PROXYTYPE:
-  case CURLOPT_PROXYUSERNAME:
-  case CURLOPT_PROXYUSERPWD:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-#ifdef CURL_DISABLE_FTP
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_FTPPORT:
-  case CURLOPT_FTP_ACCOUNT:
-  case CURLOPT_FTP_ALTERNATIVE_TO_USER:
-  case CURLOPT_FTP_FILEMETHOD:
-  case CURLOPT_FTP_SKIP_PASV_IP:
-  case CURLOPT_FTP_USE_EPRT:
-  case CURLOPT_FTP_USE_EPSV:
-  case CURLOPT_FTP_USE_PRET:
-  case CURLOPT_KRBLEVEL:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-#ifdef CURL_DISABLE_RTSP
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_INTERLEAVEDATA:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-#if defined(CURL_DISABLE_HTTP) || defined(CURL_DISABLE_COOKIES)
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_COOKIE:
-  case CURLOPT_COOKIEFILE:
-  case CURLOPT_COOKIEJAR:
-  case CURLOPT_COOKIESESSION:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-#if defined(CURL_DISABLE_TELNET)
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_TELNETOPTIONS:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-#ifdef CURL_DISABLE_TFTP
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_TFTP_BLKSIZE:
-  case CURLOPT_TFTP_NO_OPTIONS:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-#ifdef CURL_DISABLE_NETRC
-#define USED_TAG
-  switch(tag) {
-  case CURLOPT_NETRC:
-  case CURLOPT_NETRC_FILE:
-    return TRUE;
-  default:
-    break;
-  }
-#endif
-
-#ifndef USED_TAG
-  (void)tag;
-#endif
-  return FALSE;
-}
index da442986284e38d612ede1e981e4239f4dc828f1..bc5afe9bcb9f713c8439a751f1ed174177877083 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
  * Macros used in operate()
  */
 
-#define SETOPT_CHECK(v,opt) do {                \
-    if(!tool_setopt_skip(opt)) {                \
-      result = (v);                             \
-      if(result)                                \
-        break;                                  \
-    }                                           \
+#define SETOPT_CHECK(v,opt) do {              \
+    result = (v);                             \
   } while(0)
 
-/* allow removed features to simulate success: */
-bool tool_setopt_skip(CURLoption tag);
-
 #ifndef CURL_DISABLE_LIBCURL_OPTION
 
 /* Associate symbolic names with option values */
@@ -62,7 +57,6 @@ extern const struct NameValue setopt_nv_CURLFTPSSL_CCC[];
 extern const struct NameValue setopt_nv_CURLUSESSL[];
 extern const struct NameValueUnsigned setopt_nv_CURLSSLOPT[];
 extern const struct NameValue setopt_nv_CURL_NETRC[];
-extern const struct NameValue setopt_nv_CURLPROTO[];
 extern const struct NameValueUnsigned setopt_nv_CURLAUTH[];
 extern const struct NameValueUnsigned setopt_nv_CURLHSTS[];
 
@@ -78,8 +72,6 @@ extern const struct NameValueUnsigned setopt_nv_CURLHSTS[];
 #define setopt_nv_CURLOPT_SSL_OPTIONS setopt_nv_CURLSSLOPT
 #define setopt_nv_CURLOPT_PROXY_SSL_OPTIONS setopt_nv_CURLSSLOPT
 #define setopt_nv_CURLOPT_NETRC setopt_nv_CURL_NETRC
-#define setopt_nv_CURLOPT_PROTOCOLS setopt_nv_CURLPROTO
-#define setopt_nv_CURLOPT_REDIR_PROTOCOLS setopt_nv_CURLPROTO
 #define setopt_nv_CURLOPT_PROXYTYPE setopt_nv_CURLPROXY
 #define setopt_nv_CURLOPT_PROXYAUTH setopt_nv_CURLAUTH
 #define setopt_nv_CURLOPT_SOCKS5_AUTH setopt_nv_CURLAUTH
index d8786ecd95273222986279909feb0e0d8b5e10c1..16fa00e7d1d5376ef8fe15f5f4ff6410e36ee26f 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #define CURL_NO_OLDIES
 #  define main(x,y) curl_main(x,y)
 #endif
 
-#ifdef TPF
-#  undef select
-   /* change which select is used for the curl command line tool */
-#  define select(a,b,c,d,e) tpf_select_bsd(a,b,c,d,e)
-   /* and turn off the progress meter */
-#  define CONF_DEFAULT (0|CONF_NOPROGRESS)
-#endif
-
 #ifndef OS
 #  define OS "unknown"
 #endif
index c9ed5a3e27f2517cdb18e03c66e59ba58cb4dcb3..c52425f9ab483157e9ec75c5da45bd7e305f9c88 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index ac51941c6e2056111d1482f374eed6cbf2765d63..d84b467a4293c862d27f70e3a0b9083c6c399a2a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 83fbc727f5e50be35af9d4de3a39f9c90226ab65..402f1c9827c79691add0d9c7a4ef40dbc1454ed7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_strdup.h"
 
index 82ef0eb61e814463cd9915421ed5dfa5c6d9d64d..c31c0465224b11b5ace8aa6974adc2856cb21969 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index df882b28a976b1a8429f1a1c6d16a48143104975..fae8b131f82530dfd19a4c9b2110bf70ae40b95d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -686,6 +688,9 @@ CURLcode glob_match_url(char **result, char *filename, struct URLGlob *glob)
       return CURLE_OUT_OF_MEMORY;
   }
 
+  if(curlx_dyn_addn(&dyn, "", 0))
+    return CURLE_OUT_OF_MEMORY;
+
 #if defined(MSDOS) || defined(WIN32)
   {
     char *sanitized;
index 687f57cadb2d148238479161d82d79dd67ffc48a..80c1537f9d3fe94cceea31e9e19003c7565fcf57 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index a16852c68b456a9b0d954fe4b81d6bc610cd6fee..fb4829f84ac770bf1be1c72656877d35ffcfca04 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
+#if defined(HAVE_STRCASECMP) && defined(HAVE_STRINGS_H)
+#include <strings.h>
+#endif
+
 #include "tool_util.h"
 
 #include "memdebug.h" /* keep this as LAST include */
@@ -133,3 +139,27 @@ long tvdiff(struct timeval newer, struct timeval older)
   return (long)(newer.tv_sec-older.tv_sec)*1000+
     (long)(newer.tv_usec-older.tv_usec)/1000;
 }
+
+/* Case insensitive compare. Accept NULL pointers. */
+int struplocompare(const char *p1, const char *p2)
+{
+  if(!p1)
+    return p2? -1: 0;
+  if(!p2)
+    return 1;
+#ifdef HAVE_STRCASECMP
+  return strcasecmp(p1, p2);
+#elif defined(HAVE_STRCMPI)
+  return strcmpi(p1, p2);
+#elif defined(HAVE_STRICMP)
+  return stricmp(p1, p2);
+#else
+  return strcmp(p1, p2);
+#endif
+}
+
+/* Indirect version to use as qsort callback. */
+int struplocompare4sort(const void *p1, const void *p2)
+{
+  return struplocompare(* (char * const *) p1, * (char * const *) p2);
+}
index 4cc0b16ae22284582fa197a2a42e40701d47115a..72b355e685e4e33f44c7490e55c826ea1e7249a1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
@@ -33,4 +35,8 @@ struct timeval tvnow(void);
  */
 long tvdiff(struct timeval t1, struct timeval t2);
 
+/* Case insensitive comparison support. */
+int struplocompare(const char *p1, const char *p2);
+int struplocompare4sort(const void *p1, const void *p2);
+
 #endif /* HEADER_CURL_TOOL_UTIL_H */
index 2d35a73d51a32691b9a355d5fb78a0cab615d6b8..0bbb9a5092b08dd1af08db2bcb8ce6077ea8e6d1 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include <curl/curlver.h>
 
 #define CURL_NAME "curl"
 #define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.81.0"
+#define CURL_VERSION "7.86.0"
 #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
 #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
 #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
index a2678313a486ff4a7963a2d2c6109db5e915f7e8..7d45d5f109e34c03fb14f91d8bce1a8a0acc8053 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 34ac2381a06d8e87db06d706ab2a258680264939..949206dc58794d87789bd9ef9c8fd92348ad86e4 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
index 5b22a1a9cb991fabdb6db6f8b7699e5d65a3520a..2789ee20bf44a451386b03dc3a26d454d01499cb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #define ENABLE_CURLX_PRINTF
@@ -71,21 +73,22 @@ static const struct httpmap http_version[] = {
    */
 static const struct writeoutvar variables[] = {
   {"content_type", VAR_CONTENT_TYPE, CURLINFO_CONTENT_TYPE, writeString},
-  {"errormsg", VAR_ERRORMSG, 0, writeString},
-  {"exitcode", VAR_EXITCODE, 0, writeLong},
-  {"filename_effective", VAR_EFFECTIVE_FILENAME, 0, writeString},
+  {"errormsg", VAR_ERRORMSG, CURLINFO_NONE, writeString},
+  {"exitcode", VAR_EXITCODE, CURLINFO_NONE, writeLong},
+  {"filename_effective", VAR_EFFECTIVE_FILENAME, CURLINFO_NONE, writeString},
   {"ftp_entry_path", VAR_FTP_ENTRY_PATH, CURLINFO_FTP_ENTRY_PATH, writeString},
+  {"header_json", VAR_HEADER_JSON, CURLINFO_NONE, NULL},
   {"http_code", VAR_HTTP_CODE, CURLINFO_RESPONSE_CODE, writeLong},
   {"http_connect", VAR_HTTP_CODE_PROXY, CURLINFO_HTTP_CONNECTCODE, writeLong},
   {"http_version", VAR_HTTP_VERSION, CURLINFO_HTTP_VERSION, writeString},
-  {"json", VAR_JSON, 0, NULL},
+  {"json", VAR_JSON, CURLINFO_NONE, NULL},
   {"local_ip", VAR_LOCAL_IP, CURLINFO_LOCAL_IP, writeString},
   {"local_port", VAR_LOCAL_PORT, CURLINFO_LOCAL_PORT, writeLong},
   {"method", VAR_EFFECTIVE_METHOD, CURLINFO_EFFECTIVE_METHOD, writeString},
   {"num_connects", VAR_NUM_CONNECTS, CURLINFO_NUM_CONNECTS, writeLong},
-  {"num_headers", VAR_NUM_HEADERS, 0, writeLong},
+  {"num_headers", VAR_NUM_HEADERS, CURLINFO_NONE, writeLong},
   {"num_redirects", VAR_REDIRECT_COUNT, CURLINFO_REDIRECT_COUNT, writeLong},
-  {"onerror", VAR_ONERROR, 0, NULL},
+  {"onerror", VAR_ONERROR, CURLINFO_NONE, NULL},
   {"proxy_ssl_verify_result", VAR_PROXY_SSL_VERIFY_RESULT,
    CURLINFO_PROXY_SSL_VERIFYRESULT, writeLong},
   {"redirect_url", VAR_REDIRECT_URL, CURLINFO_REDIRECT_URL, writeString},
@@ -103,8 +106,8 @@ static const struct writeoutvar variables[] = {
   {"speed_upload", VAR_SPEED_UPLOAD, CURLINFO_SPEED_UPLOAD_T, writeOffset},
   {"ssl_verify_result", VAR_SSL_VERIFY_RESULT, CURLINFO_SSL_VERIFYRESULT,
    writeLong},
-  {"stderr", VAR_STDERR, 0, NULL},
-  {"stdout", VAR_STDOUT, 0, NULL},
+  {"stderr", VAR_STDERR, CURLINFO_NONE, NULL},
+  {"stdout", VAR_STDOUT, CURLINFO_NONE, NULL},
   {"time_appconnect", VAR_APPCONNECT_TIME, CURLINFO_APPCONNECT_TIME_T,
    writeTime},
   {"time_connect", VAR_CONNECT_TIME, CURLINFO_CONNECT_TIME_T, writeTime},
@@ -116,10 +119,10 @@ static const struct writeoutvar variables[] = {
   {"time_starttransfer", VAR_STARTTRANSFER_TIME, CURLINFO_STARTTRANSFER_TIME_T,
    writeTime},
   {"time_total", VAR_TOTAL_TIME, CURLINFO_TOTAL_TIME_T, writeTime},
-  {"url", VAR_INPUT_URL, 0, writeString},
+  {"url", VAR_INPUT_URL, CURLINFO_NONE, writeString},
   {"url_effective", VAR_EFFECTIVE_URL, CURLINFO_EFFECTIVE_URL, writeString},
-  {"urlnum", VAR_URLNUM, 0, writeLong},
-  {NULL, VAR_NONE, 0, NULL}
+  {"urlnum", VAR_URLNUM, CURLINFO_NONE, writeLong},
+  {NULL, VAR_NONE, CURLINFO_NONE, NULL}
 };
 
 static int writeTime(FILE *stream, const struct writeoutvar *wovar,
@@ -192,8 +195,8 @@ static int writeString(FILE *stream, const struct writeoutvar *wovar,
     switch(wovar->id) {
     case VAR_ERRORMSG:
       if(per_result) {
-        strinfo = per->errorbuffer[0] ? per->errorbuffer :
-                  curl_easy_strerror(per_result);
+        strinfo = (per->errorbuffer && per->errorbuffer[0]) ?
+          per->errorbuffer : curl_easy_strerror(per_result);
         valid = true;
       }
       break;
@@ -218,9 +221,8 @@ static int writeString(FILE *stream, const struct writeoutvar *wovar,
   if(valid) {
     DEBUGASSERT(strinfo);
     if(use_json) {
-      fprintf(stream, "\"%s\":\"", wovar->name);
-      jsonWriteString(stream, strinfo);
-      fputs("\"", stream);
+      fprintf(stream, "\"%s\":", wovar->name);
+      jsonWriteString(stream, strinfo, FALSE);
     }
     else
       fputs(strinfo, stream);
@@ -336,8 +338,8 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
       else {
         /* this is meant as a variable to output */
         char *end;
+        size_t vlen;
         if('{' == ptr[1]) {
-          char keepit;
           int i;
           bool match = FALSE;
           end = strchr(ptr, '}');
@@ -346,10 +348,10 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
             fputs("%{", stream);
             continue;
           }
-          keepit = *end;
-          *end = 0; /* null-terminate */
+          vlen = end - ptr;
           for(i = 0; variables[i].name; i++) {
-            if(curl_strequal(ptr, variables[i].name)) {
+            if((strlen(variables[i].name) == vlen) &&
+               curl_strnequal(ptr, variables[i].name, vlen)) {
               match = TRUE;
               switch(variables[i].id) {
               case VAR_ONERROR:
@@ -366,6 +368,9 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
               case VAR_JSON:
                 ourWriteOutJSON(stream, variables, per, per_result);
                 break;
+              case VAR_HEADER_JSON:
+                headerJSON(stream, per);
+                break;
               default:
                 (void)variables[i].writefunc(stream, &variables[i],
                                              per, per_result, false);
@@ -375,10 +380,29 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
             }
           }
           if(!match) {
-            fprintf(stderr, "curl: unknown --write-out variable: '%s'\n", ptr);
+            fprintf(stderr, "curl: unknown --write-out variable: '%.*s'\n",
+                    (int)vlen, ptr);
           }
           ptr = end + 1; /* pass the end */
-          *end = keepit;
+        }
+        else if(!strncmp("header{", &ptr[1], 7)) {
+          ptr += 8;
+          end = strchr(ptr, '}');
+          if(end) {
+            char hname[256]; /* holds the longest header field name */
+            struct curl_header *header;
+            vlen = end - ptr;
+            if(vlen < sizeof(hname)) {
+              memcpy(hname, ptr, vlen);
+              hname[vlen] = 0;
+              if(CURLHE_OK == curl_easy_header(per->curl, hname, 0,
+                                               CURLH_HEADER, -1, &header))
+                fputs(header->value, stream);
+            }
+            ptr = end + 1;
+          }
+          else
+            fputs("%header{", stream);
         }
         else {
           /* illegal syntax, then just output the characters that are used */
index b8f51ffaa3bbedad44146198757dad5e4232f223..c7cdb9771c7bb0fa4fbfab7bc18c3a4e97d04115 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_operate.h"
@@ -35,6 +37,7 @@ typedef enum {
   VAR_ERRORMSG,
   VAR_EXITCODE,
   VAR_FTP_ENTRY_PATH,
+  VAR_HEADER_JSON,
   VAR_HEADER_SIZE,
   VAR_HTTP_CODE,
   VAR_HTTP_CODE_PROXY,
index caa1ea6f3d1947f7697e7dce66d41ca6e2491686..a36d60c4f15387c43d36c84f1743f47e3ef883fe 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
 #include "tool_writeout_json.h"
 #include "tool_writeout.h"
 
-
-void jsonWriteString(FILE *stream, const char *in)
+void jsonWriteString(FILE *stream, const char *in, bool lowercase)
 {
   const char *i = in;
   const char *in_end = in + strlen(in);
 
+  fputc('\"', stream);
   for(; i < in_end; i++) {
     switch(*i) {
     case '\\':
@@ -63,11 +65,16 @@ void jsonWriteString(FILE *stream, const char *in)
         fprintf(stream, "u%04x", *i);
       }
       else {
-        fputc(*i, stream);
+        char out = *i;
+        if(lowercase && (out >= 'A' && out <= 'Z'))
+          /* do not use tolower() since that's locale specific */
+          out |= ('a' - 'A');
+        fputc(out, stream);
       }
       break;
     }
   }
+  fputc('\"', stream);
 }
 
 void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
@@ -85,7 +92,54 @@ void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
 
   /* The variables are sorted in alphabetical order but as a special case
      curl_version (which is not actually a --write-out variable) is last. */
-  fprintf(stream, "\"curl_version\":\"");
-  jsonWriteString(stream, curl_version());
-  fprintf(stream, "\"}");
+  fprintf(stream, "\"curl_version\":");
+  jsonWriteString(stream, curl_version(), FALSE);
+  fprintf(stream, "}");
+}
+
+#ifdef _MSC_VER
+/* warning C4706: assignment within conditional expression */
+#pragma warning(disable:4706)
+#endif
+
+void headerJSON(FILE *stream, struct per_transfer *per)
+{
+  struct curl_header *header;
+  struct curl_header *prev = NULL;
+
+  fputc('{', stream);
+  while((header = curl_easy_nextheader(per->curl, CURLH_HEADER, -1,
+                                       prev))) {
+    if(prev)
+      fputs(",\n", stream);
+    jsonWriteString(stream, header->name, TRUE);
+    fputc(':', stream);
+    prev = header;
+    if(header->amount > 1) {
+      if(!header->index) {
+        /* act on the 0-index entry and pull the others in, then output in a
+           JSON list */
+        size_t a = header->amount;
+        size_t i = 0;
+        char *name = header->name;
+        fputc('[', stream);
+        do {
+          jsonWriteString(stream, header->value, FALSE);
+          if(++i >= a)
+            break;
+          fputc(',', stream);
+          if(curl_easy_header(per->curl, name, i, CURLH_HEADER,
+                              -1, &header))
+            break;
+        } while(1);
+      }
+      fputc(']', stream);
+    }
+    else {
+      fputc('[', stream);
+      jsonWriteString(stream, header->value, FALSE);
+      fputc(']', stream);
+    }
+  }
+  fputs("\n}", stream);
 }
index f6b3a86afefb525fd31ae6b2e3f69be771e578ae..d8466051c58e4563fad3c824d0a83993554c803a 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 #include "tool_writeout.h"
 
 void ourWriteOutJSON(FILE *stream, const struct writeoutvar mappings[],
                      struct per_transfer *per, CURLcode per_result);
-
-void jsonWriteString(FILE *stream, const char *in);
+void headerJSON(FILE *stream, struct per_transfer *per);
+void jsonWriteString(FILE *stream, const char *in, bool lowercase);
 
 #endif /* HEADER_CURL_TOOL_WRITEOUT_H */
index 91fc4ed38609cb94ef7f040104c7cd1d84b8031a..bd0574996637e870d46bb2235fcd211f586367b9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
-
-#ifdef HAVE_FSETXATTR
-#  include <sys/xattr.h> /* header from libc, not from libattr */
-#  define USE_XATTR
-#elif (defined(__FreeBSD_version) && (__FreeBSD_version > 500000)) || \
-      defined(__MidnightBSD_version)
-#  include <sys/types.h>
-#  include <sys/extattr.h>
-#  define USE_XATTR
-#endif
-
 #include "tool_xattr.h"
 
 #include "memdebug.h" /* keep this as LAST include */
@@ -46,26 +37,25 @@ static const struct xattr_mapping {
    * https://freedesktop.org/wiki/CommonExtendedAttributes/
    */
   { "user.xdg.referrer.url", CURLINFO_REFERER },
-  { "user.xdg.origin.url",   CURLINFO_EFFECTIVE_URL },
   { "user.mime_type",        CURLINFO_CONTENT_TYPE },
   { NULL,                    CURLINFO_NONE } /* last element, abort here */
 };
 
-/* returns TRUE if a new URL is returned, that then needs to be freed */
+/* returns a new URL that needs to be freed */
 /* @unittest: 1621 */
 #ifdef UNITTESTS
-bool stripcredentials(char **url);
+char *stripcredentials(const char *url);
 #else
 static
 #endif
-bool stripcredentials(char **url)
+char *stripcredentials(const char *url)
 {
   CURLU *u;
   CURLUcode uc;
   char *nurl;
   u = curl_url();
   if(u) {
-    uc = curl_url_set(u, CURLUPART_URL, *url, 0);
+    uc = curl_url_set(u, CURLUPART_URL, url, 0);
     if(uc)
       goto error;
 
@@ -83,59 +73,64 @@ bool stripcredentials(char **url)
 
     curl_url_cleanup(u);
 
-    *url = nurl;
-    return TRUE;
+    return nurl;
   }
   error:
   curl_url_cleanup(u);
-  return FALSE;
+  return NULL;
 }
 
+static int xattr(int fd,
+                 const char *attr, /* name of the xattr */
+                 const char *value)
+{
+  int err = 0;
+  if(value) {
+#ifdef DEBUGBUILD
+    if(getenv("CURL_FAKE_XATTR")) {
+      printf("%s => %s\n", attr, value);
+    }
+    return 0;
+#endif
+#ifdef HAVE_FSETXATTR_6
+    err = fsetxattr(fd, attr, value, strlen(value), 0, 0);
+#elif defined(HAVE_FSETXATTR_5)
+    err = fsetxattr(fd, attr, value, strlen(value), 0);
+#elif defined(__FreeBSD_version) || defined(__MidnightBSD_version)
+    {
+      ssize_t rc = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER,
+                                  attr, value, strlen(value));
+      /* FreeBSD's extattr_set_fd returns the length of the extended
+         attribute */
+      err = (rc < 0 ? -1 : 0);
+    }
+#endif
+  }
+  return err;
+}
 /* store metadata from the curl request alongside the downloaded
  * file using extended attributes
  */
-int fwrite_xattr(CURL *curl, int fd)
+int fwrite_xattr(CURL *curl, const char *url, int fd)
 {
   int i = 0;
   int err = 0;
 
   /* loop through all xattr-curlinfo pairs and abort on a set error */
-  while(err == 0 && mappings[i].attr) {
+  while(!err && mappings[i].attr) {
     char *value = NULL;
     CURLcode result = curl_easy_getinfo(curl, mappings[i].info, &value);
-    if(!result && value) {
-      bool freeptr = FALSE;
-      if(CURLINFO_EFFECTIVE_URL == mappings[i].info)
-        freeptr = stripcredentials(&value);
-      if(value) {
-#ifdef HAVE_FSETXATTR_6
-        err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0, 0);
-#elif defined(HAVE_FSETXATTR_5)
-        err = fsetxattr(fd, mappings[i].attr, value, strlen(value), 0);
-#elif defined(__FreeBSD_version) || defined(__MidnightBSD_version)
-        {
-          ssize_t rc = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER,
-                                      mappings[i].attr, value, strlen(value));
-          /* FreeBSD's extattr_set_fd returns the length of the extended
-             attribute */
-          err = (rc < 0 ? -1 : 0);
-        }
-#endif
-        if(freeptr)
-          curl_free(value);
-      }
-    }
+    if(!result && value)
+      err = xattr(fd, mappings[i].attr, value);
     i++;
   }
-
+  if(!err) {
+    char *nurl = stripcredentials(url);
+    if(!nurl)
+      return 1;
+    err = xattr(fd, "user.xdg.origin.url", nurl);
+    curl_free(nurl);
+  }
   return err;
 }
-#else
-int fwrite_xattr(CURL *curl, int fd)
-{
-  (void)curl;
-  (void)fd;
-
-  return 0;
-}
 #endif
index 8d741aaab9602ab268586452d1d0b1f4b74dafde..e85d4cded513bc824dfd2bd085a6e5213bcc2b50 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "tool_setup.h"
 
-int fwrite_xattr(CURL *curl, int fd);
+#ifdef HAVE_FSETXATTR
+#  include <sys/xattr.h> /* header from libc, not from libattr */
+#  define USE_XATTR
+#elif (defined(__FreeBSD_version) && (__FreeBSD_version > 500000)) || \
+      defined(__MidnightBSD_version)
+#  include <sys/types.h>
+#  include <sys/extattr.h>
+#  define USE_XATTR
+#endif
+
+#ifdef USE_XATTR
+int fwrite_xattr(CURL *curl, const char *url, int fd);
+
+#else
+#define fwrite_xattr(a,b,c) 0
+#endif
 
 #endif /* HEADER_CURL_TOOL_XATTR_H */
index 5771bd2c9fd53c1ef6f4df3a27384d4caf5d44b1..8ce7610f93a1477fe0add6adb6a9d69b7776b859 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 add_custom_target(testdeps)
 add_subdirectory(data)
index bfd5d221e5e613f1fc9a43ce8d4b6d5843de821a..464c2eb5e54eeb996e4f94e16d88951e6040e8f0 100644 (file)
@@ -1,18 +1,24 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
 # curl test suite file format
 
-The curl test suite's file format is very simple and extensible, closely
-resembling XML. All data for a single test case resides in a single ASCII
-file. Labels mark the beginning and the end of all sections, and each label
-must be written in its own line.  Comments are either XML-style (enclosed with
-`<!--` and `-->`) or shell script style (beginning with `#`) and must appear
-on their own lines and not alongside actual test data.  Most test data files
-are syntactically valid XML, although a few files are not (lack of support for
+The curl test suite's file format is simple and extendable, closely resembling
+XML. All data for a single test case resides in a single ASCII file. Labels
+mark the beginning and the end of all sections, and each label must be written
+in its own line. Comments are either XML-style (enclosed with `<!--` and
+`-->`) or shell script style (beginning with `#`) and must appear on their own
+lines and not alongside actual test data. Most test data files are
+syntactically valid XML, although a few files are not (lack of support for
 character entities and the preservation of CR/LF characters at the end of
 lines are the biggest differences).
 
 Each test case source exists as a file matching the format
-`tests/data/testNUM`, where NUM is the unique test number, and must begin with
-a 'testcase' tag, which encompasses the remainder of the file.
+`tests/data/testNUM`, where `NUM` is the unique test number, and must begin
+with a `testcase` tag, which encompasses the remainder of the file.
 
 # Preprocessing
 
@@ -56,10 +62,10 @@ For example, to insert the binary octets 0, 1 and 255 into the test file:
 ## Repeat content
 
 In the preprocess stage, a special instruction can be used to have runtests.pl
-generate a repetetive sequence of bytes.
+generate a repetitive sequence of bytes.
 
 To insert a sequence of repeat bytes, use this syntax to make the `<string>`
-get repeated `<number>` of times. The number has to be 1 or large and the
+get repeated `<number>` of times. The number has to be 1 or larger and the
 string may contain `%HH` hexadecimal codes:
 
     %repeat[<number> x <string>]%
@@ -73,13 +79,13 @@ For example, to insert the word hello a 100 times:
 Lines in the test file can be made to appear conditionally on a specific
 feature (see the "features" section below) being set or not set. If the
 specific feature is present, the following lines will be output, otherwise it
-outputs nothing, until a following else or endif clause. Like this:
+outputs nothing, until a following else or `endif` clause. Like this:
 
     %if brotli
     Accept-Encoding
     %endif
 
-It can also check for the inversed condition, so if the feature us *not* set by
+It can also check for the inverse condition, so if the feature is *not* set by
 the use of an exclamation mark:
 
     %if !brotli
@@ -114,7 +120,7 @@ Available substitute variables include:
 - `%FTPSPORT` - Port number of the FTPS server
 - `%FTPTIME2` - Timeout in seconds that should be just sufficient to receive a
   response from the test FTP server
-- `%FTPTIME3` - Even longer than %FTPTIME2
+- `%FTPTIME3` - Even longer than `%FTPTIME2`
 - `%GOPHER6PORT` - IPv6 port number of the Gopher server
 - `%GOPHERPORT` - Port number of the Gopher server
 - `%GOPHERSPORT` - Port number of the Gophers server
@@ -128,6 +134,7 @@ Available substitute variables include:
 - `%HTTPTLS6PORT` - IPv6 port number of the HTTP TLS server
 - `%HTTPTLSPORT` - Port number of the HTTP TLS server
 - `%HTTPUNIXPATH` - Path to the Unix socket of the HTTP server
+- `%SOCKSUNIXPATH` - Absolute Path to the Unix socket of the SOCKS server
 - `%IMAP6PORT` - IPv6 port number of the IMAP server
 - `%IMAPPORT` - Port number of the IMAP server
 - `%MQTTPORT` - Port number of the MQTT server
@@ -158,8 +165,9 @@ Available substitute variables include:
 
 # `<testcase>`
 
-Each test is always specified entirely within the testcase tag. Each test case
-is split up in four main sections: `info`, `reply`, `client` and `verify`.
+Each test is always specified entirely within the `testcase` tag. Each test
+case is split up in four main sections: `info`, `reply`, `client` and
+`verify`.
 
 - **info** provides information about the test case
 
@@ -178,17 +186,17 @@ that will be checked/used if specified.
 
 ### `<keywords>`
 A newline-separated list of keywords describing what this test case uses and
-tests. Try to use already used keywords.  These keywords will be used for
+tests. Try to use already used keywords. These keywords will be used for
 statistical/informational purposes and for choosing or skipping classes of
-tests.  "Keywords" must begin with an alphabetic character, "-", "[" or "{"
-and may actually consist of multiple words separated by spaces which are
-treated together as a single identifier.
+tests. Keywords must begin with an alphabetic character, `-`, `[` or `{` and
+may actually consist of multiple words separated by spaces which are treated
+together as a single identifier.
 
 When using curl built with Hyper, the keywords must include HTTP or HTTPS for
 'hyper mode' to kick in and make line ending checks work for tests.
 ## `<reply>`
 
-### `<data [nocheck="yes"] [sendzero="yes"] [base64="yes"] [hex="yes"]>`
+### `<data [nocheck="yes"] [sendzero="yes"] [base64="yes"] [hex="yes"] [nonewline="yes"]>`
 
 data to be sent to the client on its request and later verified that it
 arrived safely. Set `nocheck="yes"` to prevent the test script from verifying
@@ -214,29 +222,32 @@ much sense for other sections than "data").
 `hex=yes` means that the data is a sequence of hex pairs. It will get decoded
 and used as "raw" data.
 
+`nonewline=yes` means that the last byte (the trailing newline character)
+should be cut off from the data before sending or comparing it.
+
 For FTP file listings, the `<data>` section will be used *only* if you make
-sure that there has been a CWD done first to a directory named `test-[num]`
-where [num] is the test case number. Otherwise the ftp server can't know from
+sure that there has been a CWD done first to a directory named `test-[NUM]`
+where `NUM` is the test case number. Otherwise the ftp server can't know from
 which test file to load the list content.
 
 ### `<dataNUM>`
 
-Send back this contents instead of the <data> one. The num is set by:
+Send back this contents instead of the <data> one. The `NUM` is set by:
 
  - The test number in the request line is >10000 and this is the remainder
    of [test case number]%10000.
- - The request was HTTP and included digest details, which adds 1000 to NUM
- - If a HTTP request is NTLM type-1, it adds 1001 to num
- - If a HTTP request is NTLM type-3, it adds 1002 to num
- - If a HTTP request is Basic and num is already >=1000, it adds 1 to num
- - If a HTTP request is Negotiate, num gets incremented by one for each
+ - The request was HTTP and included digest details, which adds 1000 to `NUM`
+ - If a HTTP request is NTLM type-1, it adds 1001 to `NUM`
+ - If a HTTP request is NTLM type-3, it adds 1002 to `NUM`
+ - If a HTTP request is Basic and `NUM` is already >=1000, it adds 1 to `NUM`
+ - If a HTTP request is Negotiate, `NUM` gets incremented by one for each
    request with Negotiate authorization header on the same test case.
 
-Dynamically changing num in this way allows the test harness to be used to
+Dynamically changing `NUM` in this way allows the test harness to be used to
 test authentication negotiation where several different requests must be sent
 to complete a transfer. The response to each request is found in its own data
-section.  Validating the entire negotiation sequence can be done by specifying
-a datacheck section.
+section. Validating the entire negotiation sequence can be done by specifying
+a `datacheck` section.
 
 ### `<connect>`
 The connect section is used instead of the 'data' for all CONNECT
@@ -255,14 +266,14 @@ Use the `mode="text"` attribute if the output is in text mode on platforms
 that have a text/binary difference.
 
 ### `<datacheckNUM [nonewline="yes"] [mode="text"]>`
-The contents of numbered datacheck sections are appended to the non-numbered
+The contents of numbered `datacheck` sections are appended to the non-numbered
 one.
 
 ### `<size>`
 number to return on a ftp SIZE command (set to -1 to make this command fail)
 
 ### `<mdtm>`
-what to send back if the client sends a (FTP) MDTM command, set to -1 to
+what to send back if the client sends a (FTP) `MDTM` command, set to -1 to
 have it return that the file doesn't exist
 
 ### `<postcmd>`
@@ -312,7 +323,7 @@ about to issue.
   server will NOT wait for the full request body to get sent
 - `idle` - do nothing after receiving the request, just "sit idle"
 - `stream` - continuously send data to the client, never-ending
-- `writedelay: [secs]` delay this amount between reply packets
+- `writedelay: [msecs]` delay this amount between reply packets
 - `skip: [num]` - instructs the server to ignore reading this many bytes from
   a PUT or POST request
 - `rtp: part [num] channel [num] size [num]` - stream a fake RTP packet for
@@ -333,33 +344,43 @@ about to issue.
 ### `<server>`
 What server(s) this test case requires/uses. Available servers:
 
+- `dict`
 - `file`
-- `ftp-ipv6`
 - `ftp`
+- `ftp-ipv6`
 - `ftps`
 - `gopher`
+- `gopher-ipv6`
 - `gophers`
+- `http`
+- `http/2`
 - `http-ipv6`
 - `http-proxy`
-- `http-unix`
-- `http/2`
-- `http`
 - `https`
-- `httptls+srp-ipv6`
+- `https-proxy`
 - `httptls+srp`
+- `httptls+srp-ipv6`
+- `http-unix`
 - `imap`
 - `mqtt`
 - `none`
 - `pop3`
-- `rtsp-ipv6`
 - `rtsp`
+- `rtsp-ipv6`
 - `scp`
 - `sftp`
+- `smb`
 - `smtp`
 - `socks4`
 - `socks5`
+- `socks5unix`
+- `telnet`
+- `tftp`
 
-Give only one per line.  This subsection is mandatory.
+Give only one per line. This subsection is mandatory (use `none` if no servers
+are required). Servers that require a special server certificate can have the
+PEM certificate file name (found in the `certs` directory) appended to the
+server name separated by a space.
 
 ### `<features>`
 A list of features that MUST be present in the client/library for this test to
@@ -373,6 +394,7 @@ SKIPPED.
 Features testable here are:
 
 - `alt-svc`
+- `bearssl`
 - `c-ares`
 - `cookies`
 - `crypto`
@@ -381,6 +403,7 @@ Features testable here are:
 - `getrlimit`
 - `GnuTLS`
 - `GSS-API`
+- `h2c`
 - `HSTS`
 - `HTTP-auth`
 - `http/2`
@@ -392,6 +415,7 @@ Features testable here are:
 - `ld_preload`
 - `libssh2`
 - `libssh`
+- `oldlibssh` (versions before 0.9.4)
 - `libz`
 - `manual`
 - `Mime`
@@ -402,6 +426,7 @@ Features testable here are:
 - `parsedate`
 - `proxy`
 - `PSL`
+- `rustls`
 - `Schannel`
 - `sectransp`
 - `shuffle-dns`
@@ -421,10 +446,12 @@ Features testable here are:
 - `wakeup`
 - `win32`
 - `wolfssh`
+- `wolfssl`
+- `xattr`
 
-as well as each protocol that curl supports.  A protocol only needs to be
-specified if it is different from the server (useful when the server
-is `none`).
+as well as each protocol that curl supports. A protocol only needs to be
+specified if it is different from the server (useful when the server is
+`none`).
 
 ### `<killserver>`
 Using the same syntax as in `<server>` but when mentioned here these servers
@@ -445,8 +472,8 @@ to have failed.
 
 ### `<tool>`
 Name of tool to invoke instead of "curl". This tool must be built and exist
-either in the libtest/ directory (if the tool name starts with 'lib') or in
-the unit/ directory (if the tool name starts with 'unit').
+either in the `libtest/` directory (if the tool name starts with `lib`) or in
+the `unit/` directory (if the tool name starts with `unit`).
 
 ### `<name>`
 Brief test case description, shown when the test runs.
@@ -490,33 +517,33 @@ Set `option="no-include"` to prevent the test script to slap on the
 `--include` argument.
 
 Set `option="binary-trace"` to use `--trace` instead of `--trace-ascii` for
-tracing.  Suitable for binary-oriented protocols such as MQTT.
+tracing. Suitable for binary-oriented protocols such as MQTT.
 
 Set `timeout="secs"` to override default server logs advisor read lock
-timeout.  This timeout is used by the test harness, once that the command has
+timeout. This timeout is used by the test harness, once that the command has
 completed execution, to wait for the test server to write out server side log
 files and remove the lock that advised not to read them. The "secs" parameter
 is the not negative integer number of seconds for the timeout. This `timeout`
 attribute is documented for completeness sake, but is deep test harness stuff
-and only needed for very singular and specific test cases. Avoid using it.
+and only needed for singular and specific test cases. Avoid using it.
 
 Set `delay="secs"` to introduce a time delay once that the command has
 completed execution and before the `<postcheck>` section runs. The "secs"
 parameter is the not negative integer number of seconds for the delay. This
-'delay' attribute is intended for very specific test cases, and normally not
+'delay' attribute is intended for specific test cases, and normally not
 needed.
 
 ### `<file name="log/filename" [nonewline="yes"]>`
 This creates the named file with this content before the test case is run,
 which is useful if the test case needs a file to act on.
 
-If 'nonewline="yes"` is used, the created file will have the final newline
+If `nonewline="yes"` is used, the created file will have the final newline
 stripped off.
 
 ### `<stdin [nonewline="yes"]>`
 Pass this given data on stdin to the tool.
 
-If 'nonewline' is set, we will cut off the trailing newline of this given data
+If `nonewline` is set, we will cut off the trailing newline of this given data
 before comparing with the one actually received by the client
 
 ## `<verify>`
@@ -527,7 +554,7 @@ example.
 
 ### `<strip>`
 One regex per line that is removed from the protocol dumps before the
-comparison is made. This is very useful to remove dependencies on dynamically
+comparison is made. This is useful to remove dependencies on dynamically
 changing protocol data such as port numbers or user-agent strings.
 
 ### `<strippart>`
@@ -536,7 +563,7 @@ advanced. Example: `s/^EPRT .*/EPRT stripped/`.
 
 ### `<protocol [nonewline="yes"]>`
 
-the protocol dump curl should transmit, if 'nonewline' is set, we will cut off
+the protocol dump curl should transmit, if `nonewline` is set, we will cut off
 the trailing newline of this given data before comparing with the one actually
 sent by the client The `<strip>` and `<strippart>` rules are applied before
 comparisons are made.
@@ -544,7 +571,7 @@ comparisons are made.
 ### `<proxy [nonewline="yes"]>`
 
 The protocol dump curl should transmit to a HTTP proxy (when the http-proxy
-server is used), if 'nonewline' is set, we will cut off the trailing newline
+server is used), if `nonewline` is set, we will cut off the trailing newline
 of this given data before comparing with the one actually sent by the client
 The `<strip>` and `<strippart>` rules are applied before comparisons are made.
 
@@ -554,7 +581,7 @@ This verifies that this data was passed to stderr.
 Use the mode="text" attribute if the output is in text mode on platforms that
 have a text/binary difference.
 
-If 'nonewline' is set, we will cut off the trailing newline of this given data
+If `nonewline` is set, we will cut off the trailing newline of this given data
 before comparing with the one actually received by the client
 
 ### `<stdout [mode="text"] [nonewline="yes"]>`
@@ -563,11 +590,11 @@ This verifies that this data was passed to stdout.
 Use the mode="text" attribute if the output is in text mode on platforms that
 have a text/binary difference.
 
-If 'nonewline' is set, we will cut off the trailing newline of this given data
+If `nonewline` is set, we will cut off the trailing newline of this given data
 before comparing with the one actually received by the client
 
 ### `<file name="log/filename" [mode="text"]>`
-The file's contents must be identical to this after the test is complete.  Use
+The file's contents must be identical to this after the test is complete. Use
 the mode="text" attribute if the output is in text mode on platforms that have
 a text/binary difference.
 
@@ -586,7 +613,7 @@ compared with what is stored in the test file. This is pretty
 advanced. Example: "s/^EPRT .*/EPRT stripped/"
 
 ### `<stripfile1>`
-1 to 4 can be appended to 'stripfile' to strip the corresponding <fileN>
+1 to 4 can be appended to `stripfile` to strip the corresponding <fileN>
 content
 
 ### `<stripfile2>`
index 7c64981838f77c30be2ed22a11f04f9dc73e71dc..829e125d25735a69c63da4b45e25eadd9fab7284 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 HTMLPAGES = testcurl.html runtests.html
@@ -32,7 +34,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           \
  manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  \
  negtelnetserver.py smbserver.py util.py                                      \
  disable-scan.pl manpage-syntax.pl error-codes.pl badsymbols.pl               \
- azure.pm appveyor.pm version-scan.pl options-scan.pl
+ azure.pm appveyor.pm version-scan.pl options-scan.pl markdown-uppercase.pl
 
 DISTCLEANFILES = configurehelp.pm
 
@@ -73,7 +75,7 @@ TEST_E = -a -e
 TEST_NF = -a -p !flaky
 
 # special CI target derived from nonflaky with CI-specific flags
-TEST_CI = $(TEST_NF) -r -rm
+TEST_CI = $(TEST_NF) -rm
 endif
 
 # make sure that PERL is pointing to an executable
index 984428107babb754c5ce962d548ac909480de42b..1e4575f541f7f9a7d01ec2fabbd3270268252037 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = { \
@@ -111,15 +113,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = tests
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -268,6 +268,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -285,6 +286,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -342,6 +344,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -360,12 +363,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -432,7 +436,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -449,7 +452,7 @@ EXTRA_DIST = ftpserver.pl httpserver.pl secureserver.pl runtests.pl           \
  manpage-scan.pl nroff-scan.pl http2-server.pl dictserver.py                  \
  negtelnetserver.py smbserver.py util.py                                      \
  disable-scan.pl manpage-syntax.pl error-codes.pl badsymbols.pl               \
- azure.pm appveyor.pm version-scan.pl options-scan.pl
+ azure.pm appveyor.pm version-scan.pl options-scan.pl markdown-uppercase.pl
 
 DISTCLEANFILES = configurehelp.pm
 @BUILD_UNITTESTS_FALSE@BUILD_UNIT = 
@@ -477,7 +480,7 @@ MAN2HTML = roffit $< >$@
 @CROSSCOMPILING_FALSE@TEST_NF = -a -p !flaky
 
 # special CI target derived from nonflaky with CI-specific flags
-@CROSSCOMPILING_FALSE@TEST_CI = $(TEST_NF) -r -rm
+@CROSSCOMPILING_FALSE@TEST_CI = $(TEST_NF) -rm
 all: all-recursive
 
 .SUFFIXES:
@@ -491,9 +494,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu tests/Makefile
+         $(AUTOMAKE) --foreign tests/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
index db884a2bea509f292da166b01d4944ed5f35865c..7fff0a534b38e71cbd26f5747a93c824935b68e8 100644 (file)
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
 # The curl Test Suite
 
 # Running
@@ -47,7 +53,7 @@
   continue to work independent on what port numbers the test servers actually
   use.
 
-  See [FILEFORMAT](FILEFORMAT.md) for the port number variables.
+  See [`FILEFORMAT`](FILEFORMAT.md) for the port number variables.
 
 ### Test servers
 
   Tests which use the ssh test server, SCP/SFTP/SOCKS tests, might be badly
   influenced by the output of system wide or user specific shell startup
   scripts, .bashrc, .profile, /etc/csh.cshrc, .login, /etc/bashrc, etc. which
-  output text messages or escape sequences on user login.  When these shell
+  output text messages or escape sequences on user login. When these shell
   startup messages or escape sequences are output they might corrupt the
   expected stream of data which flows to the sftp-server or from the ssh
-  client which can result in bad test behavior or even prevent the test
-  server from running.
+  client which can result in bad test behavior or even prevent the test server
+  from running.
 
   If the test suite ssh or sftp server fails to start up and logs the message
   'Received message too long' then you are certainly suffering the unwanted
-  output of a shell startup script.  Locate, cleanup or adjust the shell
+  output of a shell startup script. Locate, cleanup or adjust the shell
   script.
 
 ### Memory test
   The test script will check that all allocated memory is freed properly IF
   curl has been built with the `CURLDEBUG` define set. The script will
   automatically detect if that is the case, and it will use the
-  'memanalyze.pl' script to analyze the memory debugging output.
+  `memanalyze.pl` script to analyze the memory debugging output.
 
   Also, if you run tests on a machine where valgrind is found, the script will
   use valgrind to run the test with (unless you use `-n`) to further verify
   correctness.
 
-  runtests.pl's `-t` option will enable torture testing mode, which runs each
+  The `runtests.pl` `-t` option enables torture testing mode. It runs each
   test many times and makes each different memory allocation fail on each
-  successive run.  This tests the out of memory error handling code to ensure
+  successive run. This tests the out of memory error handling code to ensure
   that memory leaks do not occur even in those situations. It can help to
   compile curl with `CPPFLAGS=-DMEMDEBUG_LOG_SYNC` when using this option, to
   ensure that the memory log file is properly written even if curl crashes.
 ### Debug
 
   If a test case fails, you can conveniently get the script to invoke the
-  debugger (gdb) for you with the server running and the exact same command
-  line parameters that failed. Just invoke `runtests.pl <test number> -g` and
-  then just type 'run' in the debugger to perform the command through the
-  debugger.
+  debugger (gdb) for you with the server running and the same command line
+  parameters that failed. Just invoke `runtests.pl <test number> -g` and then
+  just type 'run' in the debugger to perform the command through the debugger.
 
 ### Logs
 
   All test cases are put in the `data/` subdirectory. Each test is stored in
   the file named according to the test number.
 
-  See [FILEFORMAT.md](FILEFORMAT.md) for a description of the test case file
+  See [`FILEFORMAT`](FILEFORMAT.md) for a description of the test case file
   format.
 
 ### Code coverage
 
   gcc provides a tool that can determine the code coverage figures for the
-  test suite.  To use it, configure curl with `CFLAGS='-fprofile-arcs
-  -ftest-coverage -g -O0'`.  Make sure you run the normal and torture tests to
+  test suite. To use it, configure curl with `CFLAGS='-fprofile-arcs
+  -ftest-coverage -g -O0'`. Make sure you run the normal and torture tests to
   get more full coverage, i.e. do:
 
     make test
     make test-torture
 
-  The graphical tool ggcov can be used to browse the source and create
-  coverage reports on *NIX hosts:
+  The graphical tool `ggcov` can be used to browse the source and create
+  coverage reports on \*nix hosts:
 
     ggcov -r lib src
 
-  The text mode tool gcov may also be used, but it doesn't handle object files
-  in more than one directory very well.
+  The text mode tool `gcov` may also be used, but it doesn't handle object
+  files in more than one directory correctly.
 
 ### Remote testing
 
   The runtests.pl script provides some hooks to allow curl to be tested on a
-  machine where perl can not be run.  The test framework in this case runs on
+  machine where perl can not be run. The test framework in this case runs on
   a workstation where perl is available, while curl itself is run on a remote
-  system using ssh or some other remote execution method.  See the comments at
+  system using ssh or some other remote execution method. See the comments at
   the beginning of runtests.pl for details.
 
 ## Test case numbering
 
   These files are `tests/data/test[num]` where `[num]` is just a unique
   identifier described above, and the XML-like file format of them is
-  described in the separate [FILEFORMAT.md](FILEFORMAT.md) document.
+  described in the separate [`FILEFORMAT`](FILEFORMAT.md) document.
 
 ### curl tests
 
index bc905c1d65f75ca48b3fecdc89ac78f5efb6b9fd..18215346424a7a5a8062d2ba611647f035be6279 100644 (file)
@@ -5,8 +5,8 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-# Copyright (C) 2020, Marc Hoersken, <info@marc-hoersken.de>
+# Copyright (C) 2020-2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2020-2022, Marc Hoersken, <info@marc-hoersken.de>
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 use strict;
index 4f64622b0d9f1a84f862e4d7a48c8dfda225037e..e6d3bf8f742b5d9cbc2b069c8b1793c571564d57 100644 (file)
@@ -5,8 +5,8 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
-# Copyright (C) 2020, Marc Hoersken, <info@marc-hoersken.de>
+# Copyright (C) 2020-2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2020-2022, Marc Hoersken, <info@marc-hoersken.de>
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 use strict;
index 73daa502469d8f57d0d170f4f6c6f5cd4950c7ac..392b190f8f7d54a7da0b3a7f9ae9413999fd389c 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010-2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010-2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # This script grew out of help from Przemyslaw Iskra and Balint Szilakszi
index c406417ad65c97cfa0f4d1354ff2dfcfec2aff04..0563e079e416dd7a42cf43c5a4a771f687ce3265 100644 (file)
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign
 
index f6873d46e14743d3fa37134903ffe77d6cd9dad0..a631c1b5162a4779aee176fd210a2d7ad6382b13 100644 (file)
@@ -89,15 +89,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = tests/certs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -247,6 +245,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -264,6 +263,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -321,6 +321,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -339,12 +340,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -411,7 +413,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -438,6 +439,8 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign
 SUBDIRS = scripts
index 0f381ee7ae4e62889ecf62847bf2094052047bbb..c7e8a16c2f0a884498f31e40ddf1edd9332d12af 100644 (file)
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign
 
index 91676ff062460c696690702215a0ee53d25039a2..c1d63cc94bbbad9f3d40f9df24cf1654700ca22a 100644 (file)
@@ -89,15 +89,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = tests/certs/scripts
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -189,6 +187,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -206,6 +205,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -263,6 +263,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -281,12 +282,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -353,7 +355,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -380,6 +381,8 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign
 SCRIPTFILES = \
index 963f34350fdc0ad3bce8c2c9da1ffebc5beb79c4..cca09c7e35edfea169c68de5ddedf333422847de 100755 (executable)
@@ -1,9 +1,27 @@
 #!/bin/bash
-
-# (c) CopyRight 2000 - 2020, EdelWeb for EdelKey and OpenEvidence
-# Author: Peter Sylvester
-
-# "libre" for integration with curl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2000 - 2022, EdelWeb for EdelKey and OpenEvidence
+#
+# 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
+#
+###########################################################################
 
 OPENSSL=openssl
 if [ -f /usr/local/ssl/bin/openssl ] ; then
index dcbc0486bf9e7e1f92adeed429aea8a777620727..24fb395f6faacc32f1c69b97950fc75079f5da57 100755 (executable)
@@ -1,9 +1,27 @@
 #!/bin/bash
-
-# (c) CopyRight 2000 - 2020, EdelWeb for EdelKey and OpenEvidence
-# Author: Peter Sylvester
-
-# "libre" for integration with curl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2000 - 2022, EdelWeb for EdelKey and OpenEvidence
+#
+# 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
+#
+###########################################################################
 
 OPENSSL=openssl
 if [ -f /usr/local/ssl/bin/openssl ] ; then
index 883d58358a136449d67d6edfefb90235a0af544c..dfe0fe2f8ab347403228eea532d27e434f69ec65 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Loads 'TESTCASES' from for the 'make show' target in runtests.pl
 transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
 include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake")
-
-# Prints all available test cases. Do not quote TESTCASES, it must be displayed
-# as a space-separated string rather than comma-separated (a list in CMake).
-add_custom_target(show COMMAND echo ${TESTCASES})
index 371ebc481730a3cf3f6d48ff39922adebbe5aa0b..d4a451b1d1eda1a0ae988ff7cfacea8ff04a6468 100644 (file)
@@ -1,3 +1,27 @@
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 1998 - 2022, 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
+#
+###########################################################################
+#
 # This file can be used to specify test cases that should not run when all
 # test cases are run by runtests.pl. Just add the plain test case numbers, one
 # per line.
 %if hyper
 265
 266
-357
-358
-359
 565
 579
-580
-581
 587
-670
-671
-672
-673
-718
+# 1021 re-added here due to flakiness
 1021
+1117
 1417
 1533
 1540
 1591
-1700
-1701
-1702
-1800
+1941
+1942
+1943
+2301
+2302
 %endif
 2043
+# Tests that are disabled here for rustls are SUPPOSED to work
+%if rustls
+312
+313
+400
+401
+403
+404
+406
+407
+408
+409
+1112
+1272
+%endif
+# The CRL test doesn't work with wolfSSL
+%if wolfssl
+313
+%endif
+# The CRL test doesn't work with BearSSL
+%if bearssl
+313
+%endif
index 2e10bd4d171d76f5e96371ae697864e6f51fef2e..e627f16c53cb85f00da8461a72750d3da60531d6 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 iall:
 install:
@@ -27,21 +29,3 @@ test:
 include Makefile.inc
 
 EXTRA_DIST = $(TESTCASES) DISABLED CMakeLists.txt
-
-filecheck:
-       @mkdir test-place; \
-       cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
-       rm -f test-place/*~; \
-       for f in $(EXTRA_DIST); do \
-         if test -f "$(top_srcdir)/tests/data/$$f"; then \
-           rm -f "test-place/$$f"; \
-         else \
-           echo "$$f is listed but missing!"; \
-         fi \
-       done; \
-       echo "Local files not present in EXTRA_DIST:" ; \
-       ls test-place; \
-       ! ls test-place | grep . >/dev/null ; \
-       RC=$$? ; \
-       rm -rf test-place ; \
-       exit $$RC
index 81381085189e295d528879ad7fa8bdab430cd362..f16966f9a7f046cd7f4ec96a7faf49b2d685cbb6 100644 (file)
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 VPATH = @srcdir@
 am__is_gnu_make = { \
@@ -111,15 +113,13 @@ build_triplet = @build@
 host_triplet = @host@
 subdir = tests/data
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -211,6 +211,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -228,6 +229,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -285,6 +287,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -303,12 +306,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -375,7 +379,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -423,16 +426,17 @@ test334 test335 test336 test337 test338 test339 test340 test341 test342 \
 test343 test344 test345 test346 test347 test348 test349 test350 test351 \
 test352 test353 test354 test355 test356 test357 test358 test359 test360 \
 test361 test362 test363 test364 test365 test366 test367 test368 test369 \
-test370 test371 \
-\
-test392 test393 test394 test395 test396 test397 \
+test370 test371 test372 test373 test374 test375 test376 test378 test379 \
+test380 test381 test383 test384 test385 test386 test387 test388 test389 \
+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 \
 \
-test400 test401 test402 test403 test404 test405 test406 test407 test408 \
-test409 test410 \
+test430 test431 test432 test433 test434 test435 test436 \
 \
-test430 test431 test432 test433 test434 test435 \
+test440 test441 test442 test443 test444 test445 \
 \
-test490 test491 test492 test493 test494 \
+test490 test491 test492 test493 test494 test495 test496 \
 \
 test500 test501 test502 test503 test504 test505 test506 test507 test508 \
 test509 test510 test511 test512 test513 test514 test515 test516 test517 \
@@ -450,10 +454,11 @@ test608 test609 test610 test611 test612 test613 test614 test615 test616 \
 test617 test618 test619 test620 test621 test622 test623 test624 test625 \
 test626 test627 test628 test629 test630 test631 test632 test633 test634 \
 test635 test636 test637 test638 test639 test640 test641 test642 \
-test643         test645 test646 test647 test648 test649 test650 test651 \
+test643 test644 test645 test646 test647 test648 test649 test650 test651 \
 test652 test653 test654 test655 test656 test658 test659 test660 test661 \
 test662 test663 test664 test665 test666 test667 test668 test669 \
 test670 test671 test672 test673 test674 test675 test676 test677 test678 \
+test679 test680 test681 test682 test683 test684 test685 \
 \
 test700 test701 test702 test703 test704 test705 test706 test707 test708 \
 test709 test710 test711 test712 test713 test714 test715 test716 test717 \
@@ -469,7 +474,7 @@ 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 \
+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 \
@@ -479,7 +484,7 @@ 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 \
+test972 test973 test974 test975 test976 test977 \
 \
 test980 test981 test982 test983 test984 test985 test986 \
 \
@@ -519,7 +524,7 @@ test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
 test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
 test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
 test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
-test1272 test1273 \
+test1272 test1273 test1274 test1275 \
 \
 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
 test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
@@ -544,40 +549,46 @@ test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 \
 test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 \
 test1448 test1449 test1450 test1451 test1452 test1453 test1454 test1455 \
 test1456 test1457 test1458 test1459 test1460 test1461 test1462 test1463 \
-test1464 test1465 test1466 \
+test1464 test1465 test1466 test1467 test1468 \
 \
 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
 test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
 test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
 test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
 test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
-test1540          test1542 \
+test1540          test1542 test1543 \
 \
 test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
 test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
 test1566 test1567 test1568 test1569 test1570 \
 \
-test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
+test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 \
 \
 test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
-test1608 test1609 test1610 test1611 test1612 test1613 \
+test1608 test1609 test1610 test1611 test1612 test1613 test1614 \
 \
 test1620 test1621 \
 \
-test1630 test1631 test1632 test1633 test1634 \
+test1630 test1631 test1632 test1633 test1634 test1635 \
 \
 test1650 test1651 test1652 test1653 test1654 test1655 \
 test1660 test1661 \
 \
+test1670 test1671 \
+\
+test1680 test1681 test1682 test1683 \
+\
 test1700 test1701 test1702 test1703 \
 \
 test1800 test1801 \
 \
                                     test1904 test1905 test1906 test1907 \
 test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
-test1916 test1917 test1918 \
+test1916 test1917 test1918 test1919 \
 \
-test1933 test1934 test1935 test1936 test1937 test1938 test1939 \
+test1933 test1934 test1935 test1936 test1937 test1938 test1939 test1940 \
+test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 \
+test1955 \
 \
 test2000 test2001 test2002 test2003 test2004 \
 \
@@ -595,10 +606,12 @@ test2100 \
 \
 test2200 test2201 test2202 test2203 test2204 test2205 \
 \
+test2300 test2301 test2302 test2303 \
+\
 test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
 test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \
 test3016 test3017 test3018 test3019 test3020 test3021 test3022 test3023 \
-test3024 test3025
+test3024 test3025 test3026 test3027
 
 
 # TESTCASES are taken from Makefile.inc
@@ -615,9 +628,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Ma
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/data/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/data/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnu tests/data/Makefile
+         $(AUTOMAKE) --foreign tests/data/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -804,7 +817,7 @@ uninstall-am:
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -817,29 +830,13 @@ uninstall-am:
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 iall:
 install:
 test:
 
-filecheck:
-       @mkdir test-place; \
-       cp "$(top_srcdir)"/tests/data/test[0-9]* test-place/; \
-       rm -f test-place/*~; \
-       for f in $(EXTRA_DIST); do \
-         if test -f "$(top_srcdir)/tests/data/$$f"; then \
-           rm -f "test-place/$$f"; \
-         else \
-           echo "$$f is listed but missing!"; \
-         fi \
-       done; \
-       echo "Local files not present in EXTRA_DIST:" ; \
-       ls test-place; \
-       ! ls test-place | grep . >/dev/null ; \
-       RC=$$? ; \
-       rm -rf test-place ; \
-       exit $$RC
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 9e0372b6ec7a3907a64d6b341573cb9df0e5d77e..cbb27973cb5c74fa6c382529b6b78d65e378abf6 100644 (file)
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # this list is in numerical order
@@ -61,16 +63,17 @@ test334 test335 test336 test337 test338 test339 test340 test341 test342 \
 test343 test344 test345 test346 test347 test348 test349 test350 test351 \
 test352 test353 test354 test355 test356 test357 test358 test359 test360 \
 test361 test362 test363 test364 test365 test366 test367 test368 test369 \
-test370 test371 \
-\
-test392 test393 test394 test395 test396 test397 \
+test370 test371 test372 test373 test374 test375 test376 test378 test379 \
+test380 test381 test383 test384 test385 test386 test387 test388 test389 \
+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 \
 \
-test400 test401 test402 test403 test404 test405 test406 test407 test408 \
-test409 test410 \
+test430 test431 test432 test433 test434 test435 test436 \
 \
-test430 test431 test432 test433 test434 test435 \
+test440 test441 test442 test443 test444 test445 \
 \
-test490 test491 test492 test493 test494 \
+test490 test491 test492 test493 test494 test495 test496 \
 \
 test500 test501 test502 test503 test504 test505 test506 test507 test508 \
 test509 test510 test511 test512 test513 test514 test515 test516 test517 \
@@ -88,10 +91,11 @@ test608 test609 test610 test611 test612 test613 test614 test615 test616 \
 test617 test618 test619 test620 test621 test622 test623 test624 test625 \
 test626 test627 test628 test629 test630 test631 test632 test633 test634 \
 test635 test636 test637 test638 test639 test640 test641 test642 \
-test643         test645 test646 test647 test648 test649 test650 test651 \
+test643 test644 test645 test646 test647 test648 test649 test650 test651 \
 test652 test653 test654 test655 test656 test658 test659 test660 test661 \
 test662 test663 test664 test665 test666 test667 test668 test669 \
 test670 test671 test672 test673 test674 test675 test676 test677 test678 \
+test679 test680 test681 test682 test683 test684 test685 \
 \
 test700 test701 test702 test703 test704 test705 test706 test707 test708 \
 test709 test710 test711 test712 test713 test714 test715 test716 test717 \
@@ -107,7 +111,7 @@ 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 \
+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 \
@@ -117,7 +121,7 @@ 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 \
+test972 test973 test974 test975 test976 test977 \
 \
 test980 test981 test982 test983 test984 test985 test986 \
 \
@@ -157,7 +161,7 @@ test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 \
 test1248 test1249 test1250 test1251 test1252 test1253 test1254 test1255 \
 test1256 test1257 test1258 test1259 test1260 test1261 test1262 test1263 \
 test1264 test1265 test1266 test1267 test1268 test1269 test1270 test1271 \
-test1272 test1273 \
+test1272 test1273 test1274 test1275 \
 \
 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
 test1288 test1289 test1290 test1291 test1292 test1293 test1294 test1295 \
@@ -182,40 +186,46 @@ test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 \
 test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 \
 test1448 test1449 test1450 test1451 test1452 test1453 test1454 test1455 \
 test1456 test1457 test1458 test1459 test1460 test1461 test1462 test1463 \
-test1464 test1465 test1466 \
+test1464 test1465 test1466 test1467 test1468 \
 \
 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
 test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
 test1516 test1517 test1518 test1519 test1520 test1521 test1522 test1523 \
 test1524 test1525 test1526 test1527 test1528 test1529 test1530 test1531 \
 test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 \
-test1540          test1542 \
+test1540          test1542 test1543 \
 \
 test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 \
 test1558 test1559 test1560 test1561 test1562 test1563 test1564 test1565 \
 test1566 test1567 test1568 test1569 test1570 \
 \
-test1590 test1591 test1592 test1593 test1594 test1595 test1596 \
+test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 \
 \
 test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
-test1608 test1609 test1610 test1611 test1612 test1613 \
+test1608 test1609 test1610 test1611 test1612 test1613 test1614 \
 \
 test1620 test1621 \
 \
-test1630 test1631 test1632 test1633 test1634 \
+test1630 test1631 test1632 test1633 test1634 test1635 \
 \
 test1650 test1651 test1652 test1653 test1654 test1655 \
 test1660 test1661 \
 \
+test1670 test1671 \
+\
+test1680 test1681 test1682 test1683 \
+\
 test1700 test1701 test1702 test1703 \
 \
 test1800 test1801 \
 \
                                     test1904 test1905 test1906 test1907 \
 test1908 test1909 test1910 test1911 test1912 test1913 test1914 test1915 \
-test1916 test1917 test1918 \
+test1916 test1917 test1918 test1919 \
 \
-test1933 test1934 test1935 test1936 test1937 test1938 test1939 \
+test1933 test1934 test1935 test1936 test1937 test1938 test1939 test1940 \
+test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 \
+test1955 \
 \
 test2000 test2001 test2002 test2003 test2004 \
 \
@@ -233,7 +243,9 @@ test2100 \
 \
 test2200 test2201 test2202 test2203 test2204 test2205 \
 \
+test2300 test2301 test2302 test2303 \
+\
 test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 \
 test3008 test3009 test3010 test3011 test3012 test3013 test3014 test3015 \
 test3016 test3017 test3018 test3019 test3020 test3021 test3022 test3023 \
-test3024 test3025
+test3024 test3025 test3026 test3027
index 59d2ff8698ab8aaa9269c86ca752af08d0af7553..df42f713430792b6ca46eaf6b52894812e79722b 100644 (file)
@@ -59,7 +59,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index d33f35b9c50f341d1fddbcbbc6c888576e20744e..ca58be6f4e8d58deb6aeb63bdad79ad858b74732 100644 (file)
@@ -58,7 +58,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index cb2b6d69cfc18ec9d79298a712abe35191c6c262..3b75081bd4d1163c08b3f7155418adcd47904c4f 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 </server>
index b115c31ffe5ad5b637bf474c0aaf5d9be7e997da..fee52702fbab2f7ec595176cf5e4e44afa91aaf2 100644 (file)
@@ -7,6 +7,7 @@ HTTP CONNECT
 HTTP proxy
 HTTP proxy NTLM auth
 chunked Transfer-Encoding
+NTLM
 </keywords>
 </info>
 
@@ -88,24 +89,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy CONNECT auth NTLM with chunked-encoded 407 response
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -119,7 +110,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Proxy-Connection: Keep-Alive\r
 \r
index 9afe95f4bbdf145d066bfe24856903b866620b7d..bb34615fd6118e8164f0ba30de0f8339947fbb7e 100644 (file)
@@ -7,6 +7,7 @@ HTTP CONNECT
 HTTP proxy
 HTTP proxy NTLM auth
 --proxy-anyauth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -17,7 +18,7 @@ HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
 Proxy-Authenticate: NTLM\r
 Content-Length: 16\r
 Connection: close\r
-
+\r
 data to discard
 </connect>
 
@@ -26,7 +27,7 @@ data to discard
 HTTP/1.1 407 Authorization Required to proxy me my dear\r
 Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
 Content-Length: 28\r
-
+\r
 27 bytes and newline to ign
 </connect1001>
 
@@ -64,11 +65,11 @@ HTTP/1.1 407 Authorization Required to proxy me my dear swsclose
 Proxy-Authenticate: NTLM\r
 Content-Length: 16\r
 Connection: close\r
-
+\r
 HTTP/1.1 407 Authorization Required to proxy me my dear\r
 Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
 Content-Length: 28\r
-
+\r
 HTTP/1.1 200 Things are fine in proxy land\r
 Server: Microsoft-IIS/5.0\r
 Content-Type: text/html; charset=iso-8859-1\r
@@ -93,24 +94,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy CONNECT with any proxyauth and proxy offers NTLM and close
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth --proxytunnel
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -129,7 +120,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Proxy-Connection: Keep-Alive\r
 \r
index 565a1b7285b8158d18bc82c1b542b6da5fe03607..ec41651a217c0fe7ec08b7788509184efeeaa109 100644 (file)
@@ -25,6 +25,7 @@ none
 <features>
 idn
 http
+proxy
 </features>
 <setenv>
 LC_ALL=
index a2b98cc943c200fe9ed358ba9ad917775865d297..73d8aefed5c57c7ba92322e5d21fe6c2247f2827 100644 (file)
@@ -23,6 +23,7 @@ none
 <features>
 idn
 http
+proxy
 </features>
 <setenv>
 LC_ALL=
index 5ed267b55b73ab8fb78b261d6a874901663fe0a2..e81e19f263b95deecd1fb7e7c801d5ca1dd7fe20 100644 (file)
@@ -7,7 +7,6 @@ IPv6
 PASV
 LIST
 --interface
-IPv6
 </keywords>
 </info>
 
index bd5de2568476b05f8f76d1537954de6d2c9816f1..06abcf1fb6cc4e11ecd264671fdfec38f799861b 100644 (file)
@@ -51,6 +51,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 81014845ff466faa44c791ef82eef88beb9dde25..1f5b4526ff70218751c9b955385f37e39046ef9b 100644 (file)
@@ -27,7 +27,7 @@ still ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index 8bef0e1e03fa00317a62453b36b0c78d42d09986..02e9a85650a9d97e09c10c2082f8c9afc24d3a9e 100644 (file)
@@ -28,7 +28,7 @@ still ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index efb8413b267da2c759a2c0d8bb7ed4d0aefb1c51..d4cc082d10c0f54f91fb51709c81fe7b9110d792 100644 (file)
@@ -73,7 +73,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/%TESTNUMBER", response="a1c7931ece9e8617bae2715045e4f49f"\r
+Authorization: Digest username="testuser", realm="test \"this\" realm!!", nonce="1053604145", uri="/%TESTNUMBER", response="df3246f44d2bc8de0e9f8fc4d7cf6e95"\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index a06a0517378fa2bd2bf9b04ba519d2cf1bc05921..396933838235a2b3b31586b91002f2b63533a446 100644 (file)
@@ -11,15 +11,18 @@ cookiejar
 # Server-side
 <reply>
 <data>
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Server: test-server/fake
-Content-Type: text/html
-Funny-head: yesyes swsclose
-Set-Cookie: foobar=name;
-Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";
-Set-Cookie: partmatch=present; domain=.0.0.1; path=/;
-
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Type: text/html\r
+Funny-head: yesyes swsclose\r
+Set-Cookie: foobar=name;\r
+Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/";\r
+Set-Cookie: partmatch=present; domain=.0.0.1; path=/;\r
+Set-Cookie: foo        bar=barfoo\r
+Set-Cookie: bar        foo=\r
+Set-Cookie: bar=foo    bar\r
+\r
 </data>
 </reply>
 
index 315fce3fc8be009dc2b697c1bf5e8dd245a8308b..f14182c87d693fa8c14ad4baeba5990ea670e07a 100644 (file)
@@ -25,7 +25,7 @@ Content-Length: 0
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index 7a883bfe1abe1576c83611b4ef64755bdcd5c24b..3543e751b32bf7f253234b3fbde7a1654b4e4401 100644 (file)
@@ -41,6 +41,9 @@ chunky-trailer: header data
 another-header: yes\r
 %endif
 </datacheck>
+<servercmd>
+writedelay: 10
+</servercmd>
 </reply>
 
 #
index 50466aa32263caf097feee97aadf2c03152788ba..405aa861e3c816f1f10c9ea1dfc1ea73322977d0 100644 (file)
@@ -31,7 +31,7 @@ partial body
 </data1>
 
 <servercmd>
-writedelay: 1
+writedelay: 1000
 </servercmd>
 </reply>
 
index cd15f549fe45230163191f892a2bfd9a184876bf..ae6c323acb6d2f975459372e69f8b7e7dc5e4d7d 100644 (file)
@@ -19,6 +19,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 37a55427fac40f59d85c51130a1a4fbf19703ec9..e0aae514f9ab2fdf673557ef228e1fa9d70cd9f3 100644 (file)
@@ -28,83 +28,94 @@ Verify CURL_EXTERN order
 
 <verify>
 <stdout>
-CURL_EXTERN int curl_strequal(const char *s1, const char *s2);
-CURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n);
-CURL_EXTERN curl_mime *curl_mime_init(CURL *easy);
-CURL_EXTERN void curl_mime_free(curl_mime *mime);
-CURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);
-CURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name);
-CURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);
-CURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,
-CURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,
-CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,
-CURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,
-CURL_EXTERN void curl_formfree(struct curl_httppost *form);
-CURL_EXTERN char *curl_getenv(const char *variable);
-CURL_EXTERN char *curl_version(void);
-CURL_EXTERN char *curl_easy_escape(CURL *handle,
-CURL_EXTERN char *curl_escape(const char *string,
-CURL_EXTERN char *curl_easy_unescape(CURL *handle,
-CURL_EXTERN char *curl_unescape(const char *string,
-CURL_EXTERN void curl_free(void *p);
-CURL_EXTERN CURLcode curl_global_init(long flags);
-CURL_EXTERN CURLcode curl_global_init_mem(long flags,
-CURL_EXTERN void curl_global_cleanup(void);
-CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,
-CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,
-CURL_EXTERN void curl_slist_free_all(struct curl_slist *);
-CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);
-CURL_EXTERN CURLSH *curl_share_init(void);
-CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);
-CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);
-CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);
-CURL_EXTERN const char *curl_easy_strerror(CURLcode);
-CURL_EXTERN const char *curl_share_strerror(CURLSHcode);
-CURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);
-CURL_EXTERN CURL *curl_easy_init(void);
-CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
-CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
-CURL_EXTERN void curl_easy_cleanup(CURL *curl);
-CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
-CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);
-CURL_EXTERN void curl_easy_reset(CURL *curl);
-CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
-CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
-CURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);
-CURL_EXTERN int curl_mprintf(const char *format, ...);
-CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);
-CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);
-CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
-CURL_EXTERN int curl_mvprintf(const char *format, va_list args);
-CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);
-CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);
-CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
-CURL_EXTERN char *curl_maprintf(const char *format, ...);
-CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);
-CURL_EXTERN CURLM *curl_multi_init(void);
-CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);
-CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
-CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
-CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
-CURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,
-CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
-CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
-CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
-CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
+CURL_EXTERN int curl_strequal
+CURL_EXTERN int curl_strnequal
+CURL_EXTERN curl_mime *curl_mime_init
+CURL_EXTERN void curl_mime_free
+CURL_EXTERN curl_mimepart *curl_mime_addpart
+CURL_EXTERN CURLcode curl_mime_name
+CURL_EXTERN CURLcode curl_mime_filename
+CURL_EXTERN CURLcode curl_mime_type
+CURL_EXTERN CURLcode curl_mime_encoder
+CURL_EXTERN CURLcode curl_mime_data
+CURL_EXTERN CURLcode curl_mime_filedata
+CURL_EXTERN CURLcode curl_mime_data_cb
+CURL_EXTERN CURLcode curl_mime_subparts
+CURL_EXTERN CURLcode curl_mime_headers
+CURL_EXTERN CURLFORMcode curl_formadd
+CURL_EXTERN int curl_formget
+CURL_EXTERN void curl_formfree
+CURL_EXTERN char *curl_getenv
+CURL_EXTERN char *curl_version
+CURL_EXTERN char *curl_easy_escape
+CURL_EXTERN char *curl_escape
+CURL_EXTERN char *curl_easy_unescape
+CURL_EXTERN char *curl_unescape
+CURL_EXTERN void curl_free
+CURL_EXTERN CURLcode curl_global_init
+CURL_EXTERN CURLcode curl_global_init_mem
+CURL_EXTERN void curl_global_cleanup
+CURL_EXTERN CURLsslset curl_global_sslset
+CURL_EXTERN struct curl_slist *curl_slist_append
+CURL_EXTERN void curl_slist_free_all
+CURL_EXTERN time_t curl_getdate
+CURL_EXTERN CURLSH *curl_share_init
+CURL_EXTERN CURLSHcode curl_share_setopt
+CURL_EXTERN CURLSHcode curl_share_cleanup
+CURL_EXTERN curl_version_info_data *curl_version_info
+CURL_EXTERN const char *curl_easy_strerror
+CURL_EXTERN const char *curl_share_strerror
+CURL_EXTERN CURLcode curl_easy_pause
+CURL_EXTERN CURL *curl_easy_init
+CURL_EXTERN CURLcode curl_easy_setopt
+CURL_EXTERN CURLcode curl_easy_perform
+CURL_EXTERN void curl_easy_cleanup
+CURL_EXTERN CURLcode curl_easy_getinfo
+CURL_EXTERN CURL *curl_easy_duphandle
+CURL_EXTERN void curl_easy_reset
+CURL_EXTERN CURLcode curl_easy_recv
+CURL_EXTERN CURLcode curl_easy_send
+CURL_EXTERN CURLcode curl_easy_upkeep
+CURL_EXTERN int curl_mprintf
+CURL_EXTERN int curl_mfprintf
+CURL_EXTERN int curl_msprintf
+CURL_EXTERN int curl_msnprintf
+CURL_EXTERN int curl_mvprintf
+CURL_EXTERN int curl_mvfprintf
+CURL_EXTERN int curl_mvsprintf
+CURL_EXTERN int curl_mvsnprintf
+CURL_EXTERN char *curl_maprintf
+CURL_EXTERN char *curl_mvaprintf
+CURL_EXTERN CURLM *curl_multi_init
+CURL_EXTERN CURLMcode curl_multi_add_handle
+CURL_EXTERN CURLMcode curl_multi_remove_handle
+CURL_EXTERN CURLMcode curl_multi_fdset
+CURL_EXTERN CURLMcode curl_multi_wait
+CURL_EXTERN CURLMcode curl_multi_poll
+CURL_EXTERN CURLMcode curl_multi_wakeup
+CURL_EXTERN CURLMcode curl_multi_perform
+CURL_EXTERN CURLMcode curl_multi_cleanup
+CURL_EXTERN CURLMsg *curl_multi_info_read
+CURL_EXTERN const char *curl_multi_strerror
+CURL_EXTERN CURLMcode curl_multi_socket
+CURL_EXTERN CURLMcode curl_multi_socket_action
+CURL_EXTERN CURLMcode curl_multi_socket_all
+CURL_EXTERN CURLMcode curl_multi_timeout
+CURL_EXTERN CURLMcode curl_multi_setopt
+CURL_EXTERN CURLMcode curl_multi_assign
+CURL_EXTERN char *curl_pushheader_bynum
+CURL_EXTERN char *curl_pushheader_byname
+CURL_EXTERN CURLU *curl_url
+CURL_EXTERN void curl_url_cleanup
+CURL_EXTERN CURLU *curl_url_dup
+CURL_EXTERN CURLUcode curl_url_get
+CURL_EXTERN CURLUcode curl_url_set
+CURL_EXTERN const char *curl_url_strerror
+CURL_EXTERN const struct curl_easyoption *curl_easy_option_by_name
+CURL_EXTERN const struct curl_easyoption *curl_easy_option_by_id
+CURL_EXTERN const struct curl_easyoption *curl_easy_option_next
+CURL_EXTERN CURLHcode curl_easy_header
+CURL_EXTERN struct curl_header *curl_easy_nextheader
 </stdout>
 </verify>
 
index 3771f5d0bb0156f7891131b122054eba464d5be0..3352ba0583bbe1c10101c8bf840690fa5a6c74c4 100644 (file)
@@ -19,6 +19,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 47b4f22aad01d26eaafc6a0602620a6cd9b614b3..eb672efa4e8186a4426e8c960cba5130c5996983 100644 (file)
@@ -16,7 +16,7 @@ checksrc
 </name>
 
 <command type="perl">
-%SRCDIR/../lib/checksrc.pl log/code%TESTNUMBER.c
+%SRCDIR/../scripts/checksrc.pl log/code%TESTNUMBER.c
 </command>
 <file name="log/code%TESTNUMBER.c">
 /* test source code
index e4662b697fc0840865366dd012f9237f21dd04b7..8b3834cdab4eb320f9597c22b0c9b5273880524d 100644 (file)
@@ -19,6 +19,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 53abf908f6d348d8a9db892ca68c56fd124169bd..a8be5c1e4300d3743a12e830abba92311b255796 100644 (file)
@@ -14,6 +14,9 @@ MULTIPART
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 smtp
 </server>
index 229e443d909127c4ad9f89e87510a971b9397720..c7f21d6f8fadc8ed20ca8f766adb34bf2b7953aa 100644 (file)
@@ -19,6 +19,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 037eb16d8e3ebecef0ac3fa40eead7b5aec3af89..89cfe61eaf48bb50575d4c1cd64399c7fd111afa 100644 (file)
@@ -39,7 +39,7 @@ HTTP GET with -J without Content-Disposition
 CURL_TESTDIR=%PWD/log
 </setenv>
 <command option="no-output,no-include">
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER?junk -J -O
 </command>
 </client>
 
@@ -47,7 +47,7 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER -J -O
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-GET /%TESTNUMBER HTTP/1.1\r
+GET /%TESTNUMBER?junk HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
index 5a93089717e76178102654ef4f31106c08a0a9cd..d445f937639f2cb7b11fb5c23a5bbf3c0797f497 100644 (file)
@@ -23,6 +23,9 @@ boo
 
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 </server>
index 02e0681a9add2160a52ac1a141943d54c6de831f..6fc59d38bf50d8f92235c2b76ed5b970eb45279a 100644 (file)
@@ -6,6 +6,7 @@ HTTP
 HTTP GET
 HTTP NTLM auth
 HTTP proxy
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -60,27 +61,17 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with server NTLM authorization using a proxy
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm --proxy http://%HOSTIP:%HTTPPORT
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -95,7 +86,7 @@ Proxy-Connection: Keep-Alive
 \r
 GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
index b04958eeb6b63b11b65d37747d025472a2b47953..24e7f7391956496a362416a354eb1c2a4173eec3 100644 (file)
@@ -63,25 +63,21 @@ Accept: */*
 \r
 </protocol>
 <stdout>
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0001
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 15\r
 \r
 the number one
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 16\r
 \r
 two is nice too
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0001
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 15\r
 \r
 the number one
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 16\r
index cfb541c9c382dbe9e443d19504e0506b8899ec97..5fbf640e863aa69c1d236905d4116af622ef354b 100644 (file)
@@ -10,7 +10,7 @@ TFTP RRQ
 # Server-side
 <reply>
 <servercmd>
-writedelay: 2
+writedelay: 2000
 </servercmd>
 # ~1200 bytes (so that they don't fit in two 512 byte chunks)
 <data nocheck="yes">
index 721c03e738036e2b188ff339ca5338c659716647..c289e8c0bd71389de660eb7829f9247f6eb85a5e 100644 (file)
@@ -22,6 +22,9 @@ foo
 
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 </server>
index cae3e995adba56a553b3c086813bddcb5a9d7c1f..554b173ef282736e97a666c272a0ba3c92d18be3 100644 (file)
@@ -22,6 +22,9 @@ foo
 
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 </server>
index 13fe3b3d9ed4fcd72974e166606ddf3e4f2fec0a..262cf3c9bcc41283a3aa08a6155c0fca6747cdcf 100644 (file)
@@ -23,6 +23,9 @@ foo
 
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test1274 b/tests/data/test1274
new file mode 100644 (file)
index 0000000..f640a69
--- /dev/null
@@ -0,0 +1,75 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+header line folding
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/\r
+ fake\r
+ folded\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Content-Length: 6\r
+Connection:                                              \r
+   close\r
+\r
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP header line folding
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -D log/out%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<file name="log/out%TESTNUMBER">
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+%if hyper
+Server: test-server/ fake folded\r
+%else
+Server: test-server/\r
+ fake\r
+ folded\r
+%endif
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Content-Length: 6\r
+%if hyper
+Connection: close\r
+%else
+Connection:                                              \r
+   close\r
+%endif
+\r
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1275 b/tests/data/test1275
new file mode 100644 (file)
index 0000000..d1cb223
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+<info>
+<keywords>
+documentation
+markdown
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+
+<name>
+Verify capital letters after period in markdown files
+</name>
+
+<command type="perl">
+%SRCDIR/markdown-uppercase.pl %SRCDIR/..
+</command>
+</client>
+
+</testcase>
index 82488619471de7b3f47202122c155a18ba95dbdc..fb39ebcd038a8596757bdefab6e210ec2fb3ffd6 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 0c7d1b02df831b652001c3820022c975c473ad8d..3e827365c2fabb74a0f26b55c82ca2fcf2419d9e 100644 (file)
@@ -16,6 +16,7 @@ none
 <features>
 unittest
 http
+Mime
 </features>
  <name>
 formpost unit tests
index 3d3faa8afd6d1c30682dd6eafd436505b997b2af..dd66df71ac4633b07cc124d8caf3c8f670f6f2a9 100644 (file)
@@ -22,6 +22,9 @@ Connection: close
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index ffd5048a781d6d6bf937d2050418d6e412fa1e90..ddc9aaa7f5b8063213de3bc4dc195c2b92cf29c6 100644 (file)
@@ -46,7 +46,7 @@ HTTP with --resolve and hostname with trailing dot
 <verify>
 <protocol>
 GET /%TESTNUMBER HTTP/1.1\r
-Host: example.com:%HTTPPORT\r
+Host: example.com.:%HTTPPORT\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index e9fe83f7c6e7d0ea74f2798bf47d75bd921a81bc..ad0d2def77c0c96774582b71194f7d0e00eee8fe 100644 (file)
@@ -34,7 +34,7 @@ dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
 ftp
 </server>
  <name>
-FTP (compulsory .netrc; ignored user/passwd) dir list PASV
+FTP compulsory .netrc; ignore passwd in URL
  </name>
  <command>
 -n --netrc-file log/netrc%TESTNUMBER ftp://mary:mark@%HOSTIP:%FTPPORT/
@@ -42,7 +42,7 @@ FTP (compulsory .netrc; ignored user/passwd) dir list PASV
 <file name="log/netrc%TESTNUMBER" >
 # the following two lines were created while testing curl
 machine %HOSTIP login user1 password passwd1
-machine %HOSTIP login user2 password passwd2
+machine %HOSTIP login mary password drfrank
 </file>
 </client>
 
@@ -50,8 +50,8 @@ machine %HOSTIP login user2 password passwd2
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-USER user1\r
-PASS passwd1\r
+USER mary\r
+PASS drfrank\r
 PWD\r
 EPSV\r
 TYPE A\r
index b4d29d3791275c704897d33527f976c4d0a39fe3..a92b2f22e00b76b1eb01ea38616ec3bb51b985fe 100644 (file)
@@ -82,18 +82,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index 65efc474ceb54a4910d5ff9bedc6e7402cbae9fc..bbd3e7b6481a32f5d005985676a118add99c824c 100644 (file)
@@ -31,6 +31,11 @@ http
  <name>
 --libcurl for GET with various options
  </name>
+<features>
+http
+ftp
+file
+</features>
 <setenv>
 SSL_CERT_FILE=
 </setenv>
@@ -91,26 +96,24 @@ int main(int argc, char *argv[])
   curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L);
 %endif
   curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
-  curl_easy_setopt(hnd, CURLOPT_PROTOCOLS, (long)CURLPROTO_FILE |
-                                           (long)CURLPROTO_FTP |
-                                           (long)CURLPROTO_HTTP);
+  curl_easy_setopt(hnd, CURLOPT_PROTOCOLS_STR, "file,ftp,http");
 
   /* Here is a list of options the curl code used that cannot get generated
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index c111af4a9a79321e2cc523aacdf9ef92d75223fd..667be124c0296198123dc46e1537fa46362d007f 100644 (file)
@@ -87,18 +87,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index f86f0111ca7c9ce89ef57fd00ba8e2ab1b8ec954..5ecf2d28cc04b06cfbdc96ae6ba38a94b646e323 100644 (file)
@@ -69,7 +69,7 @@ int main(int argc, char *argv[])
 
   hnd = curl_easy_init();
   curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
-  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER?foo=bar&baz=quux");
+  curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER\?foo=bar&baz=quux");
   curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
   curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
   curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
@@ -82,18 +82,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index 3b41c5cefad042e4851a8b40a0f839fd4fe5641b..ae37c3065b47bda96e0afedfb113e29a2c859fd1 100644 (file)
@@ -23,6 +23,9 @@ Connection: close
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
@@ -156,18 +159,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index aa7cf4da14156e4132d6fffdca4bc3aad153a362..31b7d6971a85c235e0a05a76779c81c2a56f36c9 100644 (file)
@@ -96,18 +96,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index 969df638e8bc063e954c753713c13c2a819df578..0be9bfa61510e5677334fd9dca17eadcbf4cd272 100644 (file)
@@ -89,18 +89,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index 7f48de2d181f135da95867d74d6e3d181e2f22ce..d5bfb7f5d3c4f812d97830e9ef8d39eec720b4dd 100644 (file)
@@ -69,18 +69,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index 92905faba951549090d36e256856530b9fb126da..415e35902b4f6400a0f0621a98f1384bb9e99ff9 100644 (file)
@@ -74,18 +74,18 @@ int main(int argc, char *argv[])
      as source easily. You may choose to either not use them or implement
      them yourself.
 
-  CURLOPT_WRITEDATA set to a objectpointer
-  CURLOPT_WRITEFUNCTION set to a functionpointer
-  CURLOPT_READDATA set to a objectpointer
-  CURLOPT_READFUNCTION set to a functionpointer
-  CURLOPT_SEEKDATA set to a objectpointer
-  CURLOPT_SEEKFUNCTION set to a functionpointer
-  CURLOPT_ERRORBUFFER set to a objectpointer
-  CURLOPT_STDERR set to a objectpointer
-  CURLOPT_DEBUGFUNCTION set to a functionpointer
-  CURLOPT_DEBUGDATA set to a objectpointer
-  CURLOPT_HEADERFUNCTION set to a functionpointer
-  CURLOPT_HEADERDATA set to a objectpointer
+  CURLOPT_WRITEDATA was set to an object pointer
+  CURLOPT_WRITEFUNCTION was set to a function pointer
+  CURLOPT_READDATA was set to an object pointer
+  CURLOPT_READFUNCTION was set to a function pointer
+  CURLOPT_SEEKDATA was set to an object pointer
+  CURLOPT_SEEKFUNCTION was set to a function pointer
+  CURLOPT_ERRORBUFFER was set to an object pointer
+  CURLOPT_STDERR was set to an object pointer
+  CURLOPT_DEBUGFUNCTION was set to a function pointer
+  CURLOPT_DEBUGDATA was set to an object pointer
+  CURLOPT_HEADERFUNCTION was set to a function pointer
+  CURLOPT_HEADERDATA was set to an object pointer
 
   */
 
index fde8bf1d60ee8111c7075ce4547c5e89740ff494..e8c2b00c52b70653b827718e65ece3f1154b4898 100644 (file)
@@ -17,6 +17,7 @@ mkdir -p %PWD/log/test%TESTNUMBER.dir/.ssh
 </precheck>
 <features>
 sftp
+!oldlibssh
 </features>
  <name>
 SFTP with corrupted known_hosts
@@ -35,6 +36,7 @@ CURL_HOME=%PWD/log/test%TESTNUMBER.dir
 
 # Verify data after the test has been "shot"
 <verify>
+# old libssh installs return the wrong thing
 <errorcode>
 60
 </errorcode>
index 847f8d1fb68f4ca6c22751611db8244d655b0d88..65797a405a2bc39753a5346585efeb1deb8cd530 100644 (file)
@@ -33,7 +33,7 @@ curl important --help
 <stdout mode="text">
 Usage: curl [options...] <url>
  -d, --data <data>          HTTP POST data
- -f, --fail                 Fail silently (no output at all) on HTTP errors
+ -f, --fail                 Fail fast with no output on HTTP errors
  -h, --help <category>      Get help for commands
  -i, --include              Include protocol response headers in the output
  -o, --output <file>        Write to file instead of stdout
index e8caaa2eff3195e3a9d6afba16a744a4bb5a8716..1a28fb1c3f29961ca7230d6af6d2a51a3bca6ad4 100644 (file)
Binary files a/tests/data/test1465 and b/tests/data/test1465 differ
diff --git a/tests/data/test1467 b/tests/data/test1467
new file mode 100644 (file)
index 0000000..1be4c2c
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+SOCKS5
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+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>
+proxy
+unix-sockets
+</features>
+<server>
+http
+socks5unix
+</server>
+ <name>
+HTTP GET via SOCKS5 proxy via unix sockets
+ </name>
+ <command>
+--socks5 localhost%SOCKSUNIXPATH http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1468 b/tests/data/test1468
new file mode 100644 (file)
index 0000000..1ff6ada
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+SOCKS5
+SOCKS5h
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+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>
+proxy
+unix-sockets
+</features>
+<server>
+http
+socks5unix
+</server>
+ <name>
+HTTP GET with host name using SOCKS5h via unix sockets
+ </name>
+ <command>
+http://this.is.a.host.name:%HTTPPORT/%TESTNUMBER --proxy socks5h://localhost%SOCKSUNIXPATH
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: this.is.a.host.name:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<socks>
+atyp 3 => this.is.a.host.name
+</socks>
+</verify>
+</testcase>
index a23b573891840fca07b346a588762013533e33f3..fb906bf4bcf35bd192119c096752647a976bbc5c 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -59,26 +60,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with NTLM authorization and --fail
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm --fail
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -92,7 +83,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index 9a10e0e7d438b37ca5898d08d6c669bb7a36928b..9d9263a5677ee4a53dc4f36f9d9bfedd306a7b72 100644 (file)
@@ -26,8 +26,11 @@ ftp
 <tool>
 lib%TESTNUMBER
 </tool>
+<killserver>
+ftp
+</killserver>
  <name>
-FTP with multi interface and slow LIST response 
+FTP with multi interface and slow LIST response
  </name>
  <command>
 ftp://%HOSTIP:%FTPPORT/%TESTNUMBER/
index de31a43c9048879d2dc88d0718db018c6ad511e0..a22b0765e51c65cfb743216cf8de3e37633c49c6 100644 (file)
@@ -17,7 +17,7 @@ Funny-head: yesyes
 AA
 </data>
 <servercmd>
-writedelay: 1
+writedelay: 1000
 </servercmd>
 </reply>
 #
index d92ec219fa8201c3d01d9363d28aa589d3b7c278..ba5cf29cebd7c4161cc5ec8cf595ee075c6505ef 100644 (file)
@@ -94,7 +94,7 @@ e58: Problem with the local SSL certificate
 e59: Couldn't use specified SSL cipher
 e60: SSL peer certificate or SSH remote key was not OK
 e61: Unrecognized or bad HTTP Content or Transfer-Encoding
-e62: Invalid LDAP URL
+e62: Unknown error
 e63: Maximum file size exceeded
 e64: Requested SSL level failed
 e65: Send failed since rewinding of the data stream failed
@@ -107,8 +107,8 @@ e71: TFTP: Illegal operation
 e72: TFTP: Unknown transfer ID
 e73: Remote file already exists
 e74: TFTP: No such user
-e75: Conversion failed
-e76: Caller must register CURLOPT_CONV_ callback options
+e75: Unknown error
+e76: Unknown error
 e77: Problem with the SSL CA cert (path? access rights?)
 e78: Remote file not found
 e79: Error in the SSH layer
@@ -131,7 +131,8 @@ e95: HTTP/3 error
 e96: QUIC connection error
 e97: proxy handshake error
 e98: SSL Client Certificate required
-e99: Unknown error
+e99: Unrecoverable error in select/poll
+e100: Unknown error
 m-1: Please call curl_multi_perform() soon
 m0: No error
 m1: Invalid multi handle
@@ -145,7 +146,8 @@ m8: API function called from within callback
 m9: Wakeup is unavailable or failed
 m10: A libcurl function was given a bad argument
 m11: Operation was aborted by an application callback
-m12: Unknown error
+m12: Unrecoverable error in select/poll
+m13: Unknown error
 s0: No error
 s1: Unknown share option
 s2: Share currently in use
@@ -158,7 +160,7 @@ u1: An invalid CURLU pointer was passed as argument
 u2: An invalid 'part' argument was passed as argument
 u3: Malformed input to a URL function
 u4: Port number was not a decimal number between 0 and 65535
-u5: This libcurl build doesn't support the given URL scheme
+u5: Unsupported URL scheme
 u6: URL decode error, most likely because of rubbish in the input
 u7: A memory function failed
 u8: Credentials was passed in the URL when prohibited
@@ -181,7 +183,7 @@ u24: Bad password
 u25: Bad path
 u26: Bad query
 u27: Bad scheme
-u28: Unsupported number of slashes
+u28: Unsupported number of slashes following scheme
 u29: Bad user
 u30: CURLUcode unknown
 </stdout>
index 818cbb68dcb0ec5e4c7c4c6a24094ef453b7a0c6..2dc82655583c78f4b29bd24622c2f00b7c35ca2d 100644 (file)
@@ -34,7 +34,9 @@ Got 4 bytes but pausing!
 datad474
 MyCoolTrailerHeader: amazingtrailer\r
 </datacheck>
-
+<servercmd>
+writedelay: 10
+</servercmd>
 </reply>
 # Client-side
 <client>
diff --git a/tests/data/test1543 b/tests/data/test1543
new file mode 100644 (file)
index 0000000..be7ede2
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+CURLOPT_CURLU
+</keywords>
+</info>
+#
+# Similar to 1518 but using CURLOPT_CURLU
+#
+# Server-side
+<reply>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 17 Mar 2016 14:41:00 GMT
+Server: test-server/fake
+X-Special: swsclose
+Content-Length: 0
+Connection: close
+
+</data2>
+<data nocheck="yes">
+HTTP/1.1 302 redirect
+Date: Thu, 17 Mar 2016 14:41:00 GMT
+Server: test-server/fake
+Content-Type: text/plain; charset=US-ASCII
+Location: ../%TESTNUMBER0002
+Content-Length: 0
+Connection: close
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+# tool is what to use instead of 'curl'
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<name>
+CURLOPT_CURLU, URL with space and CURLINFO_EFFECTIVE_URL
+</name>
+<command>
+"http://%HOSTIP:%HTTPPORT/ /with/ space/ /file"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%20/with/%20space/%20/file HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+GET /%20/with/%20space/%TESTNUMBER0002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+res 0
+status 200
+redirects 1
+effectiveurl http://%HOSTIP:%HTTPPORT/%20/with/%20space/%TESTNUMBER0002
+redirecturl blank
+</stdout>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
index 8eabab653ec3846eb14097fdd6efed5384279bf7..2d916c9759c23769700d1feb4a404b9d0e1c9f1e 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP PUT
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -78,26 +79,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP PUT with --anyauth authorization (picking NTLM)
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -T log/put%TESTNUMBER -u testuser:testpass --anyauth
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 <file name="log/put%TESTNUMBER">
 This is data we upload with PUT
 a second line
@@ -125,7 +116,7 @@ Content-Length: 0
 \r
 PUT /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Content-Length: 85\r
index bc8303211045e0b3e68a14b3debd8fd569c62c7b..595eb5ba59b9ad279f7e0231ecee1bf2da4fd1be 100644 (file)
@@ -28,6 +28,9 @@ body
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 imap
 </server>
index fbfea08c6ff058be76265f17fc2a214e38f9e2cc..882b257805616fcc7fc60ccdaf4425c7942d4c5e 100644 (file)
@@ -35,12 +35,12 @@ nomnom
 HTTP/1.1 200 OK
 Date: Tue, 09 Nov 2010 14:49:00 GMT
 Server: test-server/fake
-Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER; httponly;
-Set-Cookie: super=secret; domain=example.com; path=/%TESTNUMBER/; httponly;
-Set-Cookie: super=secret; domain=example.com; path=/15; httponly;
+Set-Cookie: super=plain; domain=example.com; path=/%TESTNUMBER; httponly;
+Set-Cookie: super=plain; domain=example.com; path=/%TESTNUMBER/; httponly;
+Set-Cookie: super=plain; domain=example.com; path=/15; httponly;
 Set-Cookie: public=yes; domain=example.com; path=/foo;
-Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login/en;
-Set-Cookie: supersuper=secret; domain=example.com; path=/%TESTNUMBER/login;
+Set-Cookie: supersuper=plain; domain=example.com; path=/%TESTNUMBER/login/en;
+Set-Cookie: supersuper=plain; domain=example.com; path=/%TESTNUMBER/login;
 Set-Cookie: secureoverhttp=yes; domain=example.com; path=/%TESTNUMBER; secure;
 Set-Cookie: __Secure-SID=22345; Domain=example.com
 Set-Cookie: __Secure-SID=22346; Secure; Domain=example.com
@@ -94,11 +94,12 @@ Accept: */*
 # This file was generated by libcurl! Edit at your own risk.
 
 .example.com   TRUE    /foo    FALSE   0       public  yes
+#HttpOnly_.example.com TRUE    /15     FALSE   0       super   plain
 www.example.com        FALSE   /       TRUE    0       __Host-SID      12346
 .example.com   TRUE    /       TRUE    0       supersupersuper secret
 .example.com   TRUE    /       TRUE    0       __Secure-SID    12346
 .example.com   TRUE    /%TESTNUMBER/login/     TRUE    0       supersuper      secret
-#HttpOnly_.example.com TRUE    /15     FALSE   0       super   secret
+.example.com   TRUE    /1561   TRUE    0       super   secret
 </file>
 
 </verify>
index 2fbaf65c05a3d7ae238edefd79f797a40313d175..23861365e745f80583c0a2b57dbe53094a58c570 100644 (file)
@@ -17,6 +17,9 @@ Silly-header: yeeeees
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index bfaa7545c990ffb0a341a7009be86657269863f4..dbb81cc29f503a756d47ad9ddd11cbaff42dad53 100644 (file)
@@ -28,6 +28,9 @@ body
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 imap
 </server>
diff --git a/tests/data/test1597 b/tests/data/test1597
new file mode 100644 (file)
index 0000000..047bf7b
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+<info>
+<keywords>
+CURLOPT_PROTOCOLS_STR
+</keywords>
+</info>
+
+# Server-side
+<reply>
+</reply>
+# Client-side
+<client>
+<server>
+none
+</server>
+<name>
+CURLOPT_PROTOCOLS_STR
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+-
+</command>
+</client>
+
+<verify>
+<stdout>
+Tested 15 strings
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1614 b/tests/data/test1614
new file mode 100644 (file)
index 0000000..4a9d54e
--- /dev/null
@@ -0,0 +1,25 @@
+<testcase>
+<info>
+<keywords>
+unittest
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+proxy
+</features>
+ <name>
+cidr comparisons
+ </name>
+</client>
+<errorcode>
+0
+</errorcode>
+</testcase>
index 344f1042d5957542f7bfcc56a8dce373ce6fc57a..b763c3ca8957564bac3f7faeb96f6535bf873d9d 100644 (file)
@@ -20,6 +20,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test1635 b/tests/data/test1635
new file mode 100644 (file)
index 0000000..399846c
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+RETRY-AFTER
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 429 too many requests swsbounce
+Retry-After: 1
+Content-Length: 4
+
+moo
+</data>
+<data1 nocheck="yes">
+HTTP/1.1 200 OK
+Content-Length: 4
+Connection: close
+
+hey
+</data1>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+--retry with a 429 response and Retry-After: and --fail-with-body
+</name>
+<command option="no-include">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --retry 1  --fail-with-body
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+moo
+hey
+</stdout>
+</verify>
+</testcase>
index 3ee1d69b60c843ae96a6dc23f39182a57eca9bd5..bcbf377555cf1e862acf9ecc83c4a5d4850b263c 100644 (file)
@@ -20,6 +20,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test1670 b/tests/data/test1670
new file mode 100644 (file)
index 0000000..6d8722f
--- /dev/null
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-w
+%header
+</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
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+<name>
+-w individual header output
+</name>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w '%header{etag} %header{nope} %header{DATE}\n' -o log/%TESTNUMBER.out
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<stdout mode="text">
+"21025-dc7-39462498"  Tue, 09 Nov 2010 14:49:00 GMT
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1671 b/tests/data/test1671
new file mode 100644 (file)
index 0000000..e45ea78
--- /dev/null
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+-w
+%header
+</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
+Set-Cookie: firstcookie=want1; path=/
+Funny-head: yesyes
+Set-Cookie: 2cookie=want2; path=/
+Content-Type: text/html
+Set-Cookie: cookie3=want3; path=/
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+<name>
+-w header JSON output
+</name>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w '%{header_json}\n' -o log/%TESTNUMBER.out
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<stdout mode="text">
+{"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"],
+"set-cookie":["firstcookie=want1; path=/","2cookie=want2; path=/","cookie3=want3; path=/"],
+"content-length":["6"],
+"connection":["close"]
+}
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1680 b/tests/data/test1680
new file mode 100644 (file)
index 0000000..7d8167c
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET with explicit clobber
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/exist%TESTNUMBER --clobber
+</command>
+<file name="log/exist%TESTNUMBER">
+to be overwritten
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<file name="log/exist%TESTNUMBER">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1681 b/tests/data/test1681
new file mode 100644 (file)
index 0000000..cfc8a5d
--- /dev/null
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--no-clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET without clobber
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/exist%TESTNUMBER --no-clobber -w '%{filename_effective}\n'
+</command>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+<file1 name="log/exist%TESTNUMBER.1">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</file1>
+<stdout mode="text">
+log/exist%TESTNUMBER.1
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1682 b/tests/data/test1682
new file mode 100644 (file)
index 0000000..e981c20
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--no-clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET without clobber and --output-dir
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --output-dir log -o exist%TESTNUMBER --no-clobber
+</command>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+<file1 name="log/exist%TESTNUMBER.1">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</file1>
+</verify>
+</testcase>
diff --git a/tests/data/test1683 b/tests/data/test1683
new file mode 100644 (file)
index 0000000..93d27d7
--- /dev/null
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--no-clobber
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.0 200 OK
+Connection: close
+Content-Type: text/plain
+Content-Length: 4
+
+foo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<name>
+HTTP GET without clobber when 100 files already exist
+</name>
+<server>
+http
+</server>
+<features>
+http
+</features>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/exist%TESTNUMBER --no-clobber
+</command>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+<precheck>
+perl -e 'for my $i ((1..100)) { my $filename = "log/exist%TESTNUMBER.$i"; open(FH, ">", $filename) or die $!; print FH "to stay the same" ; close(FH) }'
+# python3 -c 'for i in range(1, 101): open("log/exist%TESTNUMBER.{}".format(i), mode="w").write("to stay the same")'
+</precheck>
+<postcheck>
+perl -e 'for my $i ((1..100)) { my $filename = "log/exist%TESTNUMBER.$i"; open(FH, "<", $filename) or die $!; (<FH> eq "to stay the same" and <FH> eq "") or die "incorrect $filename" ; close(FH) }'
+# python3 -c 'for i in range(1, 101): assert open("log/exist%TESTNUMBER.{}".format(i), mode="r").read(17) == "to stay the same"'
+</postcheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+23
+</errorcode>
+<file name="log/exist%TESTNUMBER">
+to stay the same
+</file>
+</verify>
+</testcase>
index a5e5ba539c3d2bea538b372170e26a6e8a871e0c..3a86cdf516a84dbe3310a815f6c28487f7e1e246 100644 (file)
@@ -6,6 +6,7 @@ HTTP GET
 HTTP proxy
 HTTP proxy NTLM auth
 HTTP Digest auth
+NTLM
 </keywords>
 </info>
 
@@ -79,24 +80,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP with proxy-requiring-NTLM to site-requiring-Digest
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -111,7 +102,7 @@ Proxy-Connection: Keep-Alive
 \r
 GET http://data.from.server.requiring.digest.hohoho.com/%TESTNUMBER HTTP/1.1\r
 Host: data.from.server.requiring.digest.hohoho.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
index 28874a92e4919773f5974a37f14afc3d4ee5683b..22767cb5a69b5bbdb4181dff2632f9f30ff73fbc 100644 (file)
@@ -18,6 +18,7 @@ HTTP proxy NTLM auth
 http
 </server>
 <features>
+Mime
 NTLM
 SSL
 !SSPI
index 9cf873928549e4f6f0510b483660ee8403a2f468..7f78bcf5f92eda6df38db5a84e48523b683bfaa5 100644 (file)
@@ -11,26 +11,26 @@ HTTP/2
 # 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
-
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 <data1>
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+\r
 -maa-
 </data1>
 </reply>
@@ -38,6 +38,9 @@ Content-Type: text/html
 #
 # Client-side
 <client>
+<features>
+h2c
+</features>
 <server>
 http
 http/2
index c4687d9117ec4b63f5354d92e3b2cfc977c14743..22f6147d0503a9442cf2c54cadf8e9f2f9a72680 100644 (file)
@@ -11,17 +11,17 @@ HTTP/2
 # 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
-
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT\r
+ETag: "21025-dc7-39462498"\r
+Accept-Ranges: bytes\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+\r
 -foo-
 </data>
 </reply>
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+h2c
+</features>
 <server>
 http
 http/2
index b679c7bca1d23d9c7fc94cb9f6dcece9841e60ff..1da9bc6b585771b58608b3f9b4d744ec375c6248 100644 (file)
@@ -28,6 +28,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+h2c
+</features>
 <server>
 http
 http/2
index 0968616230632df1abc590d1a7540e5cac5ea36f..a3356c976586dc01fdd90c57e17463796cec2310 100644 (file)
@@ -21,6 +21,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index d8090c5d5f1e7c87eca2d482119cb93cd7557f3c..b0b7c5f7a4b276f6aa2794b4ffbd2502d1c396ce 100644 (file)
@@ -21,7 +21,7 @@ This is not the real page
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index 5385434486e0c7a7c953475ffde00f5a0a47921f..382e1a70bd9e257f4b82ec28f837767d55ff5406 100644 (file)
@@ -45,7 +45,7 @@ content for you
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index c190f0523f09d3a3bb62e1d0731db542eafeecfd..6ee5fd06e06abb2066eb635d5b0e6c2a8b1244a2 100644 (file)
@@ -21,7 +21,7 @@ Content-Type: text/html; charset=iso-8859-1
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index 11b953ea67b06ca685d820f2767569cf25d08bfc..888745889dd25081e4d92af63eb2fb6fd925d272 100644 (file)
@@ -65,19 +65,16 @@ Accept: */*
 \r
 </protocol>
 <stdout>
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 4\r
 \r
 moo
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0002
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 4\r
 \r
 foo
---_curl_--%HOSTIP:%HTTPPORT/%TESTNUMBER0003
 HTTP/1.1 200 OK\r
 Funny-head: yesyes\r
 Content-Length: 4\r
index 85e247c3cb9b4141e2f0578ad3fec53afc56d404..d7cc73af4181914a4c41926c95c5d419ab225d5d 100644 (file)
@@ -23,6 +23,9 @@ Content-Type: text/html
 
 # Client-side
 <client>
+<features>
+h2c
+</features>
 <server>
 http
 </server>
index 35232b82cc4e188f7f4bdb8a9745afb2e8ee6ba4..0f0c91cc86b4bf4e3df3a7f9cdd4a15622ff48a3 100644 (file)
@@ -21,6 +21,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test1919 b/tests/data/test1919
new file mode 100644 (file)
index 0000000..9861387
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+conn-reuse
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Content-Length: 6
+
+-foo-
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+
+# This created a memory leak in 7.83.1 and earlier
+<name>
+set CURLOPT_XOAUTH2_BEARER and do connection reuse
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Bearer c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca1\r
+Accept: */*\r
+\r
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Bearer c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca1\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
index d2aabb1fed9e57334d5e87e621585a9be1818376..3f3e8ac2cd93a57878b4cc20a3481f8998b00cbe 100644 (file)
@@ -47,7 +47,7 @@ lib%TESTNUMBER
 </tool>
 
 <command>
-http://xxx:yyy@%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://xxx:yyy@127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
 </command>
 </client>
 
@@ -60,8 +60,8 @@ http://xxx:yyy@%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
 </strip>
 <protocol>
 GET /%TESTNUMBER/testapi/test HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-xxx-date, Signature=d2c2dff48c59ec49dc31ef94f18c5dc1ac3eae2a70d51633a4342dadc0683664\r
+Host: 127.0.0.1:9000\r
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-xxx-date, Signature=3d8e00a02e437211a596143dcd590fcc805b731365c68f7f48951ea6eda39c4f\r
 X-Xxx-Date: 19700101T000000Z\r
 \r
 </protocol>
index 35fa318c11e88f4b24481251ae358c6784e81385..a131df49e7ce301edbeb33e74f31597f90955555 100644 (file)
@@ -47,7 +47,7 @@ lib%TESTNUMBER
 </tool>
 
 <command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
 </command>
 </client>
 
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
 </strip>
 <protocol>
 GET /%TESTNUMBER/testapi/test HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=938937ca7da6bb3dbf15e30928265ec6f061532d035d2afda92fa7cb10feb196\r
+Host: 127.0.0.1:9000\r
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=cf8dc9a4af903a1a9bb1385d8e2366d780afb501e266436598438395e502d58c\r
 X-Yyy-Date: 19700101T000000Z\r
 \r
 </protocol>
index 6d48f325ccd58ed314e4c2f32479a99a4cdcf6b3..d39a864715612a27a2ce85e669e292a7e849a6ef 100644 (file)
@@ -47,7 +47,7 @@ lib%TESTNUMBER
 </tool>
 
 <command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
 </command>
 </client>
 
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
 </strip>
 <protocol>
 GET /%TESTNUMBER/testapi/test HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=240750deb9263d4c8ece71c016f3919b56e518249390ef075740f94ef8df846f\r
+Host: 127.0.0.1:9000\r
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=a0b11b97b54689428d4188b788ed32865d607822d85d3e91cf06141f479dac0b\r
 X-Yyy-Date: 19700101T000000Z\r
 \r
 </protocol>
index 366abd64b27301d1ab12611075332504b4af35f6..a0d38403b7115e60bac37ddd813d20b4f3c485f6 100644 (file)
@@ -47,7 +47,7 @@ lib%TESTNUMBER
 </tool>
 
 <command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
 </command>
 </client>
 
@@ -60,8 +60,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
 </strip>
 <protocol>
 GET /%TESTNUMBER/testapi/test HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/sss/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=f32cf87977cea5d3274b524b53e5d28f4aac54c372f710ae0cc3a9ececaf169f\r
+Host: 127.0.0.1:9000\r
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/rrr/sss/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=026b713d76b0789bd224c5e41322f74eed088f8a22fd15183ca68376c575c5b0\r
 X-Yyy-Date: 19700101T000000Z\r
 \r
 </protocol>
index e24445ac6a0ffc2e6a752abaa00564a31668e5e3..ca1214b835197ccf7139a2f2b5d0ba0cdb3e015a 100644 (file)
@@ -48,7 +48,7 @@ lib%TESTNUMBER
 </tool>
 
 <command>
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
+http://127.0.0.1:9000/%TESTNUMBER/testapi/test 127.0.0.1:9000:%HOSTIP:%HTTPPORT
 </command>
 </client>
 
@@ -61,8 +61,8 @@ http://%HOSTIP:%HTTPPORT/%TESTNUMBER/testapi/test
 </strip>
 <protocol nonewline="yes">
 POST /%TESTNUMBER/testapi/test HTTP/1.1\r
-Host: %HOSTIP:%HTTPPORT\r
-Authorization: PROVIDER14-HMAC-SHA256 Credential=keyId/19700101/region/service/provider14_request, SignedHeaders=content-type;host;x-provider2-date, Signature=391e410177d0e9ee80728082446ef69d6b29157fe71f8b4805fce7c186fd956d\r
+Host: 127.0.0.1:9000\r
+Authorization: PROVIDER14-HMAC-SHA256 Credential=keyId/19700101/region/service/provider14_request, SignedHeaders=content-type;host;x-provider2-date, Signature=4928ccf97a9e71fe27f91db5a3b3c943b6080d25e6f4df8593d4c38e7d1e849b\r
 X-Provider2-Date: 19700101T000000Z\r
 Content-Length: 8\r
 \r
index 5341de00f3eae5125ee0e81b80fb1c8a82d98994..565a54ffe68f95202e8748f6c5863f2bf2f79c32 100644 (file)
Binary files a/tests/data/test1938 and b/tests/data/test1938 differ
diff --git a/tests/data/test1940 b/tests/data/test1940
new file mode 100644 (file)
index 0000000..7f621b4
--- /dev/null
@@ -0,0 +1,62 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Fold: is
+ folding a     
+   line
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /%TESTNUMBER0002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+ Fold == is folding a line
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1941 b/tests/data/test1941
new file mode 100644 (file)
index 0000000..fe3f1de
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<connect>
+HTTP/1.1 200 Sure go ahead\r
+Server: from the connect\r
+Silly-thing: yes yes\r
+\r
+</connect>
+</reply>
+
+# Client-side
+<client>
+<features>
+proxy
+SSL
+headers-api
+</features>
+<server>
+http
+http-proxy
+</server>
+
+<name>
+curl_easy_header with CONNECT
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://hello:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT hello:%HTTPPORT HTTP/1.1\r
+Host: hello:%HTTPPORT\r
+Proxy-Connection: Keep-Alive\r
+\r
+</proxy>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /%TESTNUMBER0002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+ Server == from the connect
+ Silly-thing == yes yes
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1942 b/tests/data/test1942
new file mode 100644 (file)
index 0000000..9079800
--- /dev/null
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 100 continue
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: maybe different
+
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+</reply>
+
+# Client-side
+<client>
+<features>
+http
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with 1xx response
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /%TESTNUMBER0002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == maybe different
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1943 b/tests/data/test1943
new file mode 100644 (file)
index 0000000..194ff11
--- /dev/null
@@ -0,0 +1,62 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 funky chunky!\r
+Server: fakeit/0.9 fakeitbad/1.0\r
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Transfer-Encoding: chunked\r
+Trailer: server\r
+Connection: mooo\r
+\r
+40\r
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
+30\r
+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\r
+21;heresatest=moooo\r
+cccccccccccccccccccccccccccccccc
+\r
+0\r
+Server: sent-as-trailer\r
+\r
+</data>
+</reply>
+
+# Client-side
+<client>
+<features>
+http
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with trailers
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == fakeit/0.9 fakeitbad/1.0
+ Server == sent-as-trailer
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1944 b/tests/data/test1944
new file mode 100644 (file)
index 0000000..ad0920d
--- /dev/null
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: 1cookie=data1;
+Set-Cookie: 2cookie=data2;
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with redirect
+</name>
+<tool>
+lib1940
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 09 Nov 2010 14:49:00 GMT
+ Server == the other one
+ Content-Type == text/html
+ Content-Length == 0
+- Set-Cookie == 1cookie=data1; (0/2)
+- Set-Cookie == 2cookie=data2; (1/2)
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1945 b/tests/data/test1945
new file mode 100644 (file)
index 0000000..86fa147
--- /dev/null
@@ -0,0 +1,76 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+CONNECT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<connect>
+HTTP/1.1 200 Sure go ahead\r
+Server: from the connect\r
+Silly-thing: yes yes\r
+\r
+</connect>
+</reply>
+
+# Client-side
+<client>
+<features>
+proxy
+SSL
+headers-api
+</features>
+<server>
+http
+http-proxy
+</server>
+
+<name>
+curl_easy_nextheader with server + CONNECT
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://hello:%HTTPPORT/%TESTNUMBER %HOSTIP:%PROXYPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<proxy>
+CONNECT hello:%HTTPPORT HTTP/1.1\r
+Host: hello:%HTTPPORT\r
+Proxy-Connection: Keep-Alive\r
+\r
+</proxy>
+<stdout>
+ Server == from the connect (0/2)
+ Silly-thing == yes yes (0/1)
+ Date == Thu, 09 Nov 2010 14:49:00 GMT (0/1)
+ Server == test with trailing space (1/2)
+ Content-Type == text/html (0/1)
+ Content-Length == 0 (0/1)
+ Set-Cookie == onecookie=data; (0/3)
+ Set-Cookie == secondcookie=2data; (1/3)
+ Set-Cookie == cookie3=data3; (2/3)
+ Location == /19450002 (0/1)
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1946 b/tests/data/test1946
new file mode 100644 (file)
index 0000000..220df01
--- /dev/null
@@ -0,0 +1,68 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_header
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: 1cookie=data1;
+Set-Cookie: 2cookie=data2;
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_header with redirect but get headers from first request
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+ Date == Thu, 01 Nov 2001 14:49:00 GMT
+ Server == test with trailing space
+ Content-Type == text/html
+ Content-Length == 0
+ Location == /19460002
+- Set-Cookie == onecookie=data; (0/3)
+- Set-Cookie == secondcookie=2data; (1/3)
+- Set-Cookie == cookie3=data3; (2/3)
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1947 b/tests/data/test1947
new file mode 100644 (file)
index 0000000..f159e4d
--- /dev/null
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+curl_easy_nextheader
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 01 Nov 2001 14:49:00 GMT
+Server:       test with trailing space     
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: onecookie=data;
+Set-Cookie: secondcookie=2data;
+Set-Cookie: cookie3=data3;
+Location: /%TESTNUMBER0002
+
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+Set-Cookie: 1cookie=data1;
+Set-Cookie: 2cookie=data2;
+
+</data2>
+
+<data3 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: the other one
+Content-Type: text/html
+Content-Length: 0
+
+</data3>
+</reply>
+
+# Client-side
+<client>
+<features>
+headers-api
+</features>
+<server>
+http
+</server>
+
+<name>
+curl_easy_nextheader on second request after first did redirects
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER0003
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<stdout>
+count = 2
+count = 1
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1948 b/tests/data/test1948
new file mode 100644 (file)
index 0000000..639523d
--- /dev/null
@@ -0,0 +1,73 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+HTTP PUT
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 01 Nov 2001 14:49:00 GMT\r
+Content-Type: text/html\r
+Content-Length: 6\r
+\r
+hello
+</data>
+<datacheck>
+HTTP/1.1 200 OK\r
+Date: Thu, 01 Nov 2001 14:49:00 GMT\r
+Content-Type: text/html\r
+Content-Length: 6\r
+\r
+hello
+HTTP/1.1 200 OK\r
+Date: Thu, 01 Nov 2001 14:49:00 GMT\r
+Content-Type: text/html\r
+Content-Length: 6\r
+\r
+hello
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+
+<name>
+CURLOPT_POST after CURLOPT_UPLOAD reusing handle
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+PUT /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+Content-Length: 22\r
+Expect: 100-continue\r
+\r
+This is test PUT data
+POST /1948 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Accept: */*\r
+Content-Length: 22\r
+Content-Type: application/x-www-form-urlencoded\r
+\r
+This is test PUT data
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1955 b/tests/data/test1955
new file mode 100644 (file)
index 0000000..5ebbc54
--- /dev/null
@@ -0,0 +1,75 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+CURLOPT_AWS_SIGV4
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 302 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Content-Length: 0
+Location: /%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Type: text/html
+Content-Length: 0
+
+</data2>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+# this relies on the debug feature which allow to set the time
+<features>
+SSL
+debug
+crypto
+</features>
+<setenv>
+CURL_FORCEHOST=1
+</setenv>
+
+<name>
+HTTP AWS_SIGV4 with X-Xxx-Content-Sha256
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+
+<command>
+http://exam.ple.com:9000/%TESTNUMBER/testapi/test exam.ple.com:9000:%HOSTIP:%HTTPPORT
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+^Content-Type:.*
+^Accept:.*
+</strip>
+<protocol>
+GET /%TESTNUMBER/testapi/test HTTP/1.1\r
+Host: exam.ple.com:9000\r
+Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/ple/exam/xxx4_request, SignedHeaders=content-type;host;tesmixcase;test0;test1;test2;test_space;x-xxx-date, Signature=819251feec8de52dfaa992320241f23d27cefa979c93e039ae7df03ac486ed16\r
+X-Xxx-Date: 19700101T000000Z\r
+test2: 1234\r
+test_space: t  s  m       end    \r
+tesMixCase: MixCase\r
+\r
+</protocol>
+</verify>
+</testcase>
index 5ab8b858220be084a84ec4c1d3bd296286a23672..4794d3c0e9c443bd2ae414376338bf9aadb360cb 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP GET
 HTTP Basic auth
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -205,21 +206,12 @@ http
 libauthretry
 </tool>
 
- <name>
+<name>
 HTTP authorization retry (Basic switching to NTLM)
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER basic ntlm
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -237,7 +229,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0300 HTTP/1.1\r
@@ -252,7 +244,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0400 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0500 HTTP/1.1\r
@@ -262,7 +254,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0500 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 </protocol>
index 8895612524147a25561b62f0a868b37c7668fc7c..0ad03db587d09e6694f60a03127553620fdcfbc5 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP GET
 HTTP Digest auth
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -241,21 +242,12 @@ http
 libauthretry
 </tool>
 
- <name>
+<name>
 HTTP authorization retry (Digest switching to NTLM)
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER digest ntlm
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -277,7 +269,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0300 HTTP/1.1\r
@@ -296,7 +288,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0400 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0500 HTTP/1.1\r
@@ -306,7 +298,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0500 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 </protocol>
index 53b433e83a667cb59068d74cf3fbe6c9939a336b..616fec179d30f58cdf0891001f9915c7f205f352 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP GET
 HTTP Basic auth
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -178,21 +179,12 @@ http
 libauthretry
 </tool>
 
- <name>
+<name>
 HTTP authorization retry (NTLM switching to Basic)
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm basic
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -205,7 +197,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0100 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
@@ -220,7 +212,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0300 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0400 HTTP/1.1\r
index dc3dfe855e54fe401367bf5354285a3d3b2322b4..8931ca749d41be177f802108776e5afc8a7aa605 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP GET
 HTTP Digest auth
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -230,21 +231,12 @@ http
 libauthretry
 </tool>
 
- <name>
+<name>
 HTTP authorization retry (NTLM switching to Digest)
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm digest
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -257,7 +249,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0100 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
@@ -272,7 +264,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0300 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0400 HTTP/1.1\r
index 6a8399546f3ea15558e0d5b0515fc4d435105e89..20dd874131fee972a844967f2612f839992dd35b 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -244,21 +245,12 @@ http
 libauthretry
 </tool>
 
- <name>
+<name>
 HTTP authorization retry (NTLM)
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER ntlm ntlm
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -271,7 +263,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0100 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
@@ -281,7 +273,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0300 HTTP/1.1\r
@@ -291,7 +283,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0300 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0400 HTTP/1.1\r
@@ -301,7 +293,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0400 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABANgKEcT5xUUBHw5+0m4FjWTGNzg6PeHJHbaPwNwCt/tXcnIeTQCTMAg12SPDyNXMf3Rlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 GET /%TESTNUMBER0500 HTTP/1.1\r
@@ -311,7 +303,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0500 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 </protocol>
index 08ac715154a39a6be2a20b9e671ff9876d95cb5c..72c7cc4d210aee01b16664ff81be3c3a607689c7 100644 (file)
@@ -6,6 +6,7 @@ HTTP GET
 HTTP Basic auth
 HTTP NTLM auth
 flaky
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -76,21 +77,12 @@ http
 libntlmconnect
 </tool>
 
- <name>
+<name>
 NTLM connection mapping
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -113,7 +105,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER0200 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoABAI+/Fp9IERAQ74OsdNPbBpg7o8CVwLSO4DtFyIcZHUMKVktWIu92s2892OVpd2JzqnRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 \r
 </protocol>
index daff038d7c09d42fa3a5600d9fe0a9c4ade0fd63..c400f26307228d35901a6216ff60d85972792fe2 100644 (file)
@@ -59,7 +59,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index 0bf160c7d2ec57b395fe9a3b53cfbddf90bf02f4..3170c99a11c740084c6f02689baef84e439e72a5 100644 (file)
@@ -59,7 +59,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index e0b4505ef3ad62057622f298ddb67b5e1f9f3613..11dd155265d3625c0687fba7de4bc53094893841 100644 (file)
@@ -59,7 +59,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index dd3641546f5e85210ef3c35c6737848f83e0974f..c6b3dee5a6a89ddbcbe08b7ea5cae420fd4b0d0e 100644 (file)
@@ -27,6 +27,9 @@ contents2
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index a6733e737beb2423d60b0b256270d586c3e10602..add9292522007c2b51d26cae65423b6a932b5e7a 100644 (file)
@@ -19,6 +19,12 @@ Connection: close
 \r
 This server reply is for testing a simple Location: following
 </data>
+<data2>
+HTTP/1.1 200 This is another weirdo text message swsclose\r
+Connection: close\r
+\r
+Thanks for following.
+</data2>
 </reply>
 
 # Client-side
@@ -36,9 +42,6 @@ http://user:pass@%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER#anchor --location --r
 
 # Verify data after the test has been "shot"
 <verify>
-<errorcode>
-52
-</errorcode>
 <protocol>
 GET /we/want/our/%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
@@ -60,6 +63,10 @@ Location: data/%TESTNUMBER0002.txt?coolsite=yes
 Content-Length: 62\r
 Connection: close\r
 \r
+HTTP/1.1 200 This is another weirdo text message swsclose\r
+Connection: close\r
+\r
+Thanks for following.
 http://%HOSTIP:%HTTPPORT/we/want/our/%TESTNUMBER
 </stdout>
 </verify>
index 59a293d66306273b511f43fdbb0c312a0faacfc8..887d04fbeef74c5184314a0abf8e5e198a2a6a3d 100644 (file)
@@ -6,6 +6,7 @@ HTTP GET
 HTTP CONNECT
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -79,24 +80,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy CONNECT auth NTLM
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -110,7 +101,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Proxy-Connection: Keep-Alive\r
 \r
index 8e4e847e09f7ec2aa2bccf51058ddee33043a7ee..5c099cf34e9de86b81933c0f019653d4a3962bde 100644 (file)
@@ -13,6 +13,9 @@ multiple HTTP requests
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index b9ddc1c7248d8230e735819b1ffa83e702f6cb36..877d9276ce80f3596de81203080d10a38b7afdf4 100644 (file)
@@ -6,6 +6,7 @@ HTTP POST
 HTTP CONNECT
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -79,24 +80,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP 1.0 proxy CONNECT auth NTLM and then POST
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy1.0 http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -110,7 +101,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.0\r
 Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Proxy-Connection: Keep-Alive\r
 \r
diff --git a/tests/data/test2300 b/tests/data/test2300
new file mode 100644 (file)
index 0000000..997acfa
--- /dev/null
@@ -0,0 +1,62 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 101 Switching to WebSockets swsclose\r
+Server: test-server/fake\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Sec-WebSocket-Accept: HkPsVga7+8LuxM4RGQ5p9tZHeYs=\r
+\r
+</data>
+# allow upgrade
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+# for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+ <name>
+WebSockets upgrade only
+ </name>
+ <command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nocheck="yes">
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Sec-WebSocket-Version: 13\r
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==\r
+\r
+</protocol>
+<errorcode>
+52
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test2301 b/tests/data/test2301
new file mode 100644 (file)
index 0000000..1f8ed66
--- /dev/null
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes" nonewline="yes">
+HTTP/1.1 101 Switching to WebSockets\r
+Server: test-server/fake\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Something: else\r
+Sec-WebSocket-Accept: HkPsVga7+8LuxM4RGQ5p9tZHeYs=\r
+\r
+%hex[%89%00]hex%
+</data>
+# allow upgrade
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+# require debug for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+<name>
+WebSockets via callback (raw mode) + curl_ws_send()
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nocheck="yes" nonewline="yes">
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: webbie-sox/3\r
+Accept: */*\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Sec-WebSocket-Version: 13\r
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==\r
+\r
+%hex[%8a%00]hex%
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test2302 b/tests/data/test2302
new file mode 100644 (file)
index 0000000..013c324
--- /dev/null
@@ -0,0 +1,70 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+# Sends a PING + a 5 byte hello TEXT
+<reply>
+<data nocheck="yes" nonewline="yes">
+HTTP/1.1 101 Switching to WebSockets\r
+Server: test-server/fake\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Something: else\r
+Sec-WebSocket-Accept: HkPsVga7+8LuxM4RGQ5p9tZHeYs=\r
+\r
+%hex[%89%00%81%05hello]hex%
+</data>
+# allow upgrade
+<servercmd>
+upgrade
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+# require debug for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+<name>
+WebSockets via callback (frame mode) + curl_ws_send()
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# PONG with no data and the 32 bit mask
+#
+<verify>
+<protocol nocheck="yes" nonewline="yes">
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: webbie-sox/3\r
+Accept: */*\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Sec-WebSocket-Version: 13\r
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==\r
+\r
+%hex[%8a%808321]hex%
+</protocol>
+<stdout mode="text">
+68 65 6c 6c 6f 
+RECFLAGS: 1
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test2303 b/tests/data/test2303
new file mode 100644 (file)
index 0000000..dbd1115
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+WebSockets
+</keywords>
+</info>
+
+#
+<reply>
+<data nocheck="yes" nonewline="yes">
+HTTP/1.1 200 Oblivious\r
+Server: test-server/fake\r
+Something: else\r
+Content-Length:  6\r
+\r
+hello
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+# require debug for the forced CURL_ENTROPY
+<features>
+debug
+ws
+</features>
+<server>
+http
+</server>
+<name>
+WebSockets but gets a 200 back
+</name>
+<tool>
+lib2302
+</tool>
+<command>
+ws://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: webbie-sox/3\r
+Accept: */*\r
+Upgrade: websocket\r
+Connection: Upgrade\r
+Sec-WebSocket-Version: 13\r
+Sec-WebSocket-Key: NDMyMTUzMjE2MzIxNzMyMQ==\r
+\r
+</protocol>
+# 22 == CURLE_HTTP_RETURNED_ERROR
+<errorcode>
+22
+</errorcode>
+</verify>
+</testcase>
index 3ba2885a5752a202894074630fc2b1b61acfc032..230fcc31ad65e9bb9f3e98530231c5570057ff5a 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP POST
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -54,24 +55,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy-auth NTLM and then POST
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm -d "postit"
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -88,7 +79,7 @@ Content-Type: application/x-www-form-urlencoded
 \r
 POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
index 337fef7ee16704c06275cca631f58cdd0a7e3a2d..3952571b6ed1da73a07febec45d5d8f47b9a44e9 100644 (file)
@@ -6,6 +6,7 @@ HTTP GET
 HTTP proxy
 HTTP proxy NTLM auth
 --proxy-anyauth
+NTLM
 </keywords>
 </info>
 
@@ -75,24 +76,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP POST with --proxy-anyauth, picking NTLM
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-anyauth -d "postit"
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -117,7 +108,7 @@ Content-Type: application/x-www-form-urlencoded
 \r
 POST http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
index 2d19f0ded617be3b3a8a6ce5392464bef5e28272..569b4107deda795d46d972107d21f04ccef770de 100644 (file)
@@ -45,7 +45,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index 22b383370a00c1b7b35f6561be729cb92cbb7881..383d07d9a6c6273e590d1c21a9e3f7ad7652afeb 100644 (file)
@@ -55,7 +55,7 @@ ok
 
 # Client-side
 <client>
-# 
+#
 <server>
 http
 </server>
index c0f8c18c76b685dd9a2a7658a31f5a502295ab02..748980007f39fcad04faff7d84359dfde1bfc1fe 100644 (file)
@@ -56,6 +56,7 @@ ok
 http
 </server>
 <features>
+Mime
 !SSPI
 crypto
 proxy
index 4b5deee1822e13f2c6bbc58b7b67043a849f7f58..9f64cca1258c51f83edeb481174ba941148416a9 100644 (file)
@@ -52,6 +52,7 @@ ok
 http
 </server>
 <features>
+Mime
 !SSPI
 crypto
 proxy
index 43994b05fe24a57c3343b0beebc76c08dcff3c32..d119d667232e016cfaadbc4c5b41b763408bf272 100644 (file)
Binary files a/tests/data/test262 and b/tests/data/test262 differ
index 889cf06c4163612eb0b5d8bd07b92cfe10ffb7b1..c6db8964eee01e4ff1981856e173d435d1118dda 100644 (file)
@@ -6,6 +6,7 @@ HTTP POST
 HTTP CONNECT
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -80,24 +81,14 @@ http
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com.%TESTNUMBER:%HTTPPORT/path/%TESTNUMBER0002 --proxy http://%HOSTIP:%HTTPPORT --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit"
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -111,7 +102,7 @@ Proxy-Connection: Keep-Alive
 \r
 CONNECT test.remote.example.com.%TESTNUMBER:%HTTPPORT HTTP/1.1\r
 Host: test.remote.example.com.%TESTNUMBER:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Proxy-Connection: Keep-Alive\r
 \r
index 6b5d2e6c775d3fa7dbc11dcd4881313621b3dd73..4f5f359d803ba6da05d47e422918b3e693ea263b 100644 (file)
@@ -37,6 +37,9 @@ Connection: mooo
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccc
 chunky-trailer: header data\r
 </datacheck>
+<servercmd>
+writedelay: 10
+</servercmd>
 </reply>
 
 #
index a07f67e48d740af5869199d5fe454744925c747b..f24c7f6a917888819e524aac8b7f1c35f7b0b733 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP POST
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -58,26 +59,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP POST with NTLM authorization and added custom headers
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no"
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -95,7 +86,7 @@ Content-Type: application/x-www-form-urlencoded
 \r
 POST /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Header1: yes\r
index 466b793741dcd7866f4d02311f2afb4c9d82855c..62d264fa37cbab6f71994685c8b2254938f20348 100644 (file)
@@ -20,6 +20,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 1b23ff048268256430c9563d32f93e323a92280e..775dd91f827ac24f55560f2575c6ba3445c7d0f3 100644 (file)
@@ -33,7 +33,7 @@ SFTP correct sha256 host key
 <setenv>
 # Needed for MSYS2 to not treat the argument as a POSIX path list
 # that has to be converted to Windows paths
-MSYS2_ARG_CONV_EXCL=/
+MSYS2_ARG_CONV_EXCL=*
 </setenv>
 <file name="log/file%TESTNUMBER.txt">
 test
index 3e117701ad97a5a3f7646dea21d22c5bdad7b99a..a9dbcb0f2b71ff34a0850231ae5020c5961cf962 100644 (file)
@@ -33,7 +33,7 @@ SCP correct sha256 host key
 <setenv>
 # Needed for MSYS2 to not treat the argument as a POSIX path list
 # that has to be converted to Windows paths
-MSYS2_ARG_CONV_EXCL=/
+MSYS2_ARG_CONV_EXCL=*
 </setenv>
 <file name="log/file%TESTNUMBER.txt">
 test
diff --git a/tests/data/test3026 b/tests/data/test3026
new file mode 100644 (file)
index 0000000..ee9b306
--- /dev/null
@@ -0,0 +1,45 @@
+<testcase>
+<info>
+<keywords>
+curl_global_init
+thread-safe
+slow
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+# require the threaded resolver only because it means pthreads might
+# be used for it
+<features>
+threadsafe
+threaded-resolver
+</features>
+<server>
+none
+</server>
+<name>
+curl_global_init thread-safety
+</name>
+<tool>
+lib%TESTNUMBER
+</tool>
+<command>
+none
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test3027 b/tests/data/test3027
new file mode 100644 (file)
index 0000000..6d7aeb6
--- /dev/null
@@ -0,0 +1,55 @@
+<testcase>
+<info>
+<keywords>
+FTP
+CURLOPT_FILETIME
+MDTM fail
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<servercmd>
+REPLY MDTM 550 Permission denied
+</servercmd>
+<data>
+data blobb
+</data>
+
+# data is sent to stdout
+</reply>
+
+# Client-side
+<client>
+<server>
+ftp
+</server>
+ <name>
+Get a file via FTP but 550 after MDTM command
+ </name>
+<tool>
+lib3027
+</tool>
+<command option="no-include">
+ftp://%HOSTIP:%FTPPORT/%TESTNUMBER
+</command>
+<stdout>
+data blobb
+</stdout>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER anonymous\r
+PASS ftp@example.com\r
+PWD\r
+MDTM %TESTNUMBER\r
+EPSV\r
+TYPE I\r
+SIZE %TESTNUMBER\r
+RETR %TESTNUMBER\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
index b4030725d020e40d12653be7eaf7a708ecf671cb..b632af74fc62f20317797d34f1f8a3139f300812 100644 (file)
@@ -21,6 +21,7 @@ blablabla
 # Client-side
 <client>
 <features>
+Mime
 SSL
 </features>
 <server>
index ac277264d89679c5753edcba48107a039940e15e..6dfd2d268d16fea42cbeb121985ca413deda0482 100644 (file)
@@ -22,6 +22,7 @@ Server: test-server/fake
 Content-Length: 4\r
 Content-Type: text/html\r
 Funny-head: yesyes\r
+Set-Cookie: blankdomain=sure; domain=; path=/
 %if !hyper
 Set-Cookie: foobar=name; domain=anything.com; path=/ ; secure\r
 Set-Cookie:ismatch=this  ; domain=test31.curl; path=/silly/\r
@@ -162,6 +163,7 @@ test31.curl FALSE   /we/want/       FALSE   2118138987      nodomain        value
 #HttpOnly_.test31.curl TRUE    /p1/    FALSE   0       httpo1  value1
 .test31.curl   TRUE    /overwrite      FALSE   0       overwrite       this2
 .test31.curl   TRUE    /silly/ FALSE   0       ismatch this
+test31.curl    FALSE   /       FALSE   0       blankdomain     sure
 </file>
 </verify>
 </testcase>
index 0f8795899793e16fedd699a5b80a01c6bf5ea1f7..9f6459487c3db78297dfa978875087b1048ae2e7 100644 (file)
@@ -16,7 +16,9 @@ Content-Length: 6
 Connection: close
 Content-Type: text/html
 Funny-head: yesyes
+Alt-Svc: h1="nowhere.foo:-1"
 Alt-Svc: h1="nowhere.foo:81", un-kno22!wn=":82"
+Alt-Svc: h1="nowhere.foo:70000"
 
 -foo-
 </data>
index d1ddc1b9e7e81b7dc7276eb6523eb8d6b640eaf9..0f8a9801bbcb58d3f352126f8d1ec531c3c1d48e 100644 (file)
@@ -12,14 +12,14 @@ HTTP/2
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
-
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0\r
+\r
 -foo-
 </data>
 </reply>
@@ -30,6 +30,7 @@ Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
 <features>
 alt-svc
 debug
+h2c
 </features>
 <server>
 http
index c1b1cb86c5b0727964ca12b4bdaabb7be20c6c5e..0e684e39e5aa503139ab473c610504bb8f4a7ada 100644 (file)
@@ -12,14 +12,14 @@ HTTP/2
 # Server-side
 <reply>
 <data nocheck="yes">
-HTTP/1.1 200 OK
-Date: Tue, 09 Nov 2010 14:49:00 GMT
-Content-Length: 6
-Connection: close
-Content-Type: text/html
-Funny-head: yesyes
-Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
-
+HTTP/1.1 200 OK\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Content-Length: 6\r
+Connection: close\r
+Content-Type: text/html\r
+Funny-head: yesyes\r
+Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0\r
+\r
 -foo-
 </data>
 </reply>
@@ -30,6 +30,7 @@ Alt-Svc: h2=":%HTTP2PORT", ma=315360000; persist=0
 <features>
 alt-svc
 debug
+h2c
 </features>
 <server>
 https
index 2f13b5723a72dd45945c61ba2d27a1e76f04169f..505ce34ea9a92085c761342927ad12059be8d364 100644 (file)
@@ -27,7 +27,7 @@ Connection: close
 http
 </server>
  <name>
-Appened dash if -r range specified without one
+Append dash if -r range specified without one
  </name>
  <command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -r 4
diff --git a/tests/data/test372 b/tests/data/test372
new file mode 100644 (file)
index 0000000..e1cf356
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 22 Jul 2010 11:22:33 GMT\r
+Connection: close\r
+Content-Type: text/html\r
+X-Control: swsclose\r
+Content-Length: 2\r
+\r
+%hex[%00]hex%
+</data>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Binary zero in data element.
+</name>
+<features>
+proxy
+</features>
+<command>
+--raw http://%HOSTIP:%HTTPPORT/binary-zero-in-data-section/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /binary-zero-in-data-section/%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test373 b/tests/data/test373
new file mode 100644 (file)
index 0000000..b11f227
--- /dev/null
@@ -0,0 +1,78 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+chunked transfer encoding
+</keywords>
+</info>
+
+<reply>
+<data>
+HTTP/1.1 200 OK\r
+Date: Thu, 22 Jul 2010 11:22:33 GMT\r
+Connection: close\r
+Content-Type: text/html\r
+Transfer-Encoding: chunked\r
+X-Control: swsclose\r
+\r
+100\r
+%repeat[255 x %00]%
+\r
+100\r
+%repeat[255 x %00]%
+\r
+100\r
+%repeat[255 x %00]%
+\r
+100\r
+%repeat[255 x %00]%
+\r
+0\r
+\r
+</data>
+
+<datacheck>
+HTTP/1.1 200 OK\r
+Date: Thu, 22 Jul 2010 11:22:33 GMT\r
+Connection: close\r
+Content-Type: text/html\r
+Transfer-Encoding: chunked\r
+X-Control: swsclose\r
+\r
+%repeat[255 x %00]%
+%repeat[255 x %00]%
+%repeat[255 x %00]%
+%repeat[255 x %00]%
+</datacheck>
+
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Chunked transfer encoding - Multiple valid chunks with binary zeros.
+</name>
+<features>
+proxy
+</features>
+<command>
+http://%HOSTIP:%HTTPPORT/chunked-transfer-encoding/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /chunked-transfer-encoding/%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test374 b/tests/data/test374
new file mode 100644 (file)
index 0000000..d85bb78
--- /dev/null
@@ -0,0 +1,49 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+gif data
+</keywords>
+</info>
+
+<reply>
+<data nonewline="yes">
+HTTP/1.1 200 OK\r
+Date: Thu, 22 Jul 2010 11:22:33 GMT\r
+Connection: close\r
+Content-Type: image/gif\r
+X-Control: swsclose\r
+\r
+%hex[%47%49%46%38%39%61%14%00%14%00%a1%04%00%fe%00%00%ff%00%00%1e%42%ee%1f%42%ef%21%ff%0b%4e%45%54%53%43%41%50%45%32%2e%30%03%01%00%00%00%21%fe%24%43%72%65%61%74%65%64%20%62%79%20%46%61%62%69%61%6e%20%4b%65%69%6c%20%77%69%74%68%20%54%68%65%20%47%49%4d%50%00%21%f9%04%00%0a%00%ff%00%2c%00%00%00%00%14%00%14%00%00%02%11%8c%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%21%f9%04%01%0a%00%02%00%2c%00%00%00%00%14%00%14%00%00%02%11%9c%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%21%f9%04%00%0a%00%ff%00%2c%00%00%00%00%14%00%14%00%00%02%11%94%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%21%f9%04%00%0a%00%ff%00%2c%00%00%00%00%14%00%14%00%00%02%11%84%8f%a9%cb%ed%0f%a3%9c%b4%da%8b%b3%de%bc%fb%af%15%00%3b]hex%
+</data>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<name>
+Valid gif with two frames. No new line in data section.
+</name>
+<features>
+proxy
+</features>
+<command>
+http://%HOSTIP:%HTTPPORT/gif/%TESTNUMBER
+</command>
+</client>
+
+<verify>
+<protocol>
+GET /gif/%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test375 b/tests/data/test375
new file mode 100644 (file)
index 0000000..aefc8e4
--- /dev/null
@@ -0,0 +1,33 @@
+<testcase>
+<info>
+<keywords>
+CURL_DISABLE_PROXY
+</keywords>
+</info>
+
+<client>
+<features>
+!proxy
+</features>
+<server>
+none
+</server>
+<name>
+Disabled proxy should make curl fail with --proxy
+</name>
+<command>
+-x wohoo http://example.com/
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stderr mode="text">
+curl: proxy support is disabled in this libcurl
+</stderr>
+<errorcode>
+4
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test376 b/tests/data/test376
new file mode 100644 (file)
index 0000000..34924c7
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Crafted to cause error 18
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK swsclose
+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: 75
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+--remove-on-error
+ </name>
+ <command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/save-%TESTNUMBER --remove-on-error
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot". hyper doesn't do error 18
+<verify>
+<errorcode>
+%if hyper
+56
+%else
+18
+%endif
+</errorcode>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+
+# the file should be empty now
+<file name="log/save-%TESTNUMBER">
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test378 b/tests/data/test378
new file mode 100644 (file)
index 0000000..650e7d4
--- /dev/null
@@ -0,0 +1,39 @@
+<testcase>
+<info>
+<keywords>
+HTTP PUT
+HTTP POST
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+Reject using -T and -d at once
+ </name>
+ <command>
+-T log/%TESTNUMBER -d input http://never-accessed
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+2
+</errorcode>
+<stderr mode="text">
+Warning: You can only select one HTTP request method! You asked for both PUT 
+Warning: (-T, --upload-file) and POST (-d, --data).
+</stderr>
+</verify>
+</testcase>
diff --git a/tests/data/test379 b/tests/data/test379
new file mode 100644 (file)
index 0000000..c7ffc17
--- /dev/null
@@ -0,0 +1,71 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Crafted to cause error
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK swsclose
+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: 75
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<file name="log/save">
+exists before command runs
+</file>
+<server>
+http
+</server>
+ <name>
+--remove-on-error with --no-clobber and an added number
+ </name>
+ <command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -o log/save --remove-on-error --no-clobber
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot". hyper doesn't do error 18
+<verify>
+<errorcode>
+%if hyper
+56
+%else
+18
+%endif
+</errorcode>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+
+# this file should be untouched
+<file name="log/save">
+exists before command runs
+</file>
+# the file should be empty now
+<file2 name="log/save.1">
+</file2>
+</verify>
+</testcase>
diff --git a/tests/data/test380 b/tests/data/test380
new file mode 100644 (file)
index 0000000..a1849c1
--- /dev/null
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+LIST
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# When doing LIST, we get the default list output hard-coded in the test
+# FTP server
+<datacheck mode="text">
+total 20
+drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
+drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
+drwxr-xr-x   2 98       98           512 May  2  1996 .NeXT
+-r--r--r--   1 0        1             35 Jul 16  1996 README
+lrwxrwxrwx   1 0        1              7 Dec  9  1999 bin -> usr/bin
+dr-xr-xr-x   2 0        1            512 Oct  1  1997 dev
+drwxrwxrwx   2 98       98           512 May 29 16:04 download.html
+dr-xr-xr-x   2 0        1            512 Nov 30  1995 etc
+drwxrwxrwx   2 98       1            512 Oct 30 14:33 pub
+dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+ftp
+</server>
+<name>
+pick netrc password based on user name in URL
+</name>
+
+<command>
+--netrc --netrc-file log/netrc%TESTNUMBER ftp://mary@%HOSTIP:%FTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+# the following two lines were created while testing curl
+machine %HOSTIP login frankenstein password wrongone
+machine %HOSTIP login mary password yram
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER mary\r
+PASS yram\r
+PWD\r
+EPSV\r
+TYPE A\r
+LIST\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test381 b/tests/data/test381
new file mode 100644 (file)
index 0000000..c44fa74
--- /dev/null
@@ -0,0 +1,67 @@
+<testcase>
+<info>
+<keywords>
+FTP
+EPSV
+LIST
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# When doing LIST, we get the default list output hard-coded in the test
+# FTP server
+<datacheck mode="text">
+total 20
+drwxr-xr-x   8 98       98           512 Oct 22 13:06 .
+drwxr-xr-x   8 98       98           512 Oct 22 13:06 ..
+drwxr-xr-x   2 98       98           512 May  2  1996 .NeXT
+-r--r--r--   1 0        1             35 Jul 16  1996 README
+lrwxrwxrwx   1 0        1              7 Dec  9  1999 bin -> usr/bin
+dr-xr-xr-x   2 0        1            512 Oct  1  1997 dev
+drwxrwxrwx   2 98       98           512 May 29 16:04 download.html
+dr-xr-xr-x   2 0        1            512 Nov 30  1995 etc
+drwxrwxrwx   2 98       1            512 Oct 30 14:33 pub
+dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+ftp
+</server>
+
+# When CURL_NETRC_REQUIRED is set, the password in the URL is ignored and
+# using the netrc is mandatory.
+#
+<name>
+netrc-optional lets URL creds override netrc
+</name>
+
+<command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER ftp://mary:drfrank@%HOSTIP:%FTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+# the following two lines were created while testing curl
+machine %HOSTIP login frankenstein password wrongone
+machine %HOSTIP login mary password yram
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER mary\r
+PASS drfrank\r
+PWD\r
+EPSV\r
+TYPE A\r
+LIST\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test383 b/tests/data/test383
new file mode 100644 (file)
index 0000000..6ba8f5e
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+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>
+<server>
+http
+</server>
+ <name>
+HTTP with --json
+ </name>
+ <command>
+--json '{ "drink": "coffe" }' http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Content-Type: application/json\r
+Accept: application/json\r
+Content-Length: 20\r
+\r
+{ "drink": "coffe" }
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test384 b/tests/data/test384
new file mode 100644 (file)
index 0000000..9651f9f
--- /dev/null
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+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>
+<server>
+http
+</server>
+ <name>
+HTTP with --json from stdin
+ </name>
+<stdin>
+{ "drink": "coffe" }
+</stdin>
+<command>
+--json @- http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H "Accept: foobar/*"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+POST /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: foobar/*\r
+Content-Type: application/json\r
+Content-Length: 21\r
+\r
+{ "drink": "coffe" }
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test385 b/tests/data/test385
new file mode 100644 (file)
index 0000000..ee543fa
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+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>
+<server>
+http
+</server>
+ <name>
+HTTP with --json x 2
+ </name>
+ <command>
+--json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://%HOSTIP:%HTTPPORT/%TESTNUMBER -H "Content-Type: drinks/hot"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Content-Type: drinks/hot\r
+Accept: application/json\r
+Content-Length: 40\r
+\r
+{ "drink": "coffe", "crunch": "cookie" }
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test386 b/tests/data/test386
new file mode 100644 (file)
index 0000000..5e2fd6a
--- /dev/null
@@ -0,0 +1,74 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP POST
+--json
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+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>
+<data2>
+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
+
+hello
+</data2>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP with --json + --next
+ </name>
+ <command>
+--json '{ "drink": "coffe" }' http://%HOSTIP:%HTTPPORT/%TESTNUMBER --next http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+POST /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Content-Type: application/json\r
+Accept: application/json\r
+Content-Length: 20\r
+\r
+{ "drink": "coffe" }GET /%TESTNUMBER0002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test387 b/tests/data/test387
new file mode 100644 (file)
index 0000000..015ec25
--- /dev/null
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+gzip
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK\r
+Transfer-Encoding: gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip,gzip\r
+\r
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Response with overly long compression chain
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -sS
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+
+# CURLE_BAD_CONTENT_ENCODING is 61
+<errorcode>
+61
+</errorcode>
+<stderr mode="text">
+curl: (61) Reject response due to 5 content encodings
+</stderr>
+</verify>
+</testcase>
diff --git a/tests/data/test388 b/tests/data/test388
new file mode 100644 (file)
index 0000000..3a0214a
--- /dev/null
@@ -0,0 +1,156 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP Digest auth
+</keywords>
+</info>
+
+# Server-side
+<reply>
+# First reply back and ask for Digest auth
+<data1>
+HTTP/1.1 401 Authorization Required swsclose\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 26\r
+\r
+This is not the real page
+</data1>
+
+# second reply back
+<data2>
+HTTP/1.1 401 Authorization Required swsclose\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 26\r
+\r
+This is not the real page
+</data2>
+
+# This is supposed to be returned when the server gets a
+# Authorization: Digest line passed-in from the client
+<data1001>
+HTTP/1.1 200 OK\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 23\r
+\r
+This IS the real page!
+</data1001>
+
+#
+# This is the second request, and this sends back a response saying that
+# the request contained stale data. We want an update. Set swsbounce to
+# bounce on to data1003 on the second request.
+<data1002>
+HTTP/1.1 401 Authorization re-negotiation please swsbounce\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 26\r
+\r
+This is not the real page
+</data1002>
+
+# The second request to the 1002 section will bounce this one back instead
+# thanks to the swsbounce keyword up there
+<data1003>
+HTTP/1.1 200 OK\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 30\r
+\r
+This IS the second real page!
+</data1003>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+!SSPI
+crypto
+</features>
+ <name>
+HTTP with Digest and multiple qop values with leading space
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER0001 -u testuser:testpass --digest http://%HOSTIP:%HTTPPORT/%TESTNUMBER0002
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^Authorization.*cnonce
+</strip>
+<protocol>
+GET /%TESTNUMBER0001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /%TESTNUMBER0001 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0001", response="ea598bbfdb5c54b7352c977e3885e44d"\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /%TESTNUMBER0002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /%TESTNUMBER0002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/%TESTNUMBER0002", response="921a8e6db782d6359db1f40d9ed7e6a6"\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /%TESTNUMBER0002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Digest username="testuser", realm="testrealm", nonce="999999", uri="/%TESTNUMBER0002", cnonce="MTA4MzIy", nc="00000001", qop="auth", response="25291c357671604a16c0242f56721c07", algorithm=MD5\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+HTTP/1.1 401 Authorization Required swsclose\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 26\r
+\r
+HTTP/1.1 200 OK\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 23\r
+\r
+This IS the real page!
+HTTP/1.1 401 Authorization Required swsclose\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 26\r
+\r
+HTTP/1.1 401 Authorization re-negotiation please swsbounce\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 26\r
+\r
+HTTP/1.1 200 OK\r
+Server: Apache/1.3.27 (Darwin) PHP/4.1.2\r
+Content-Type: text/html; charset=iso-8859-1\r
+Content-Length: 30\r
+\r
+This IS the second real page!
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test389 b/tests/data/test389
new file mode 100644 (file)
index 0000000..f805bc2
--- /dev/null
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+.localhost
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+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>
+<server>
+http
+</server>
+ <name>
+*.localhost is a local host
+ </name>
+ <command>
+http://curlmachine.localhost:%HTTPPORT/%TESTNUMBER
+</command>
+# Ensure that we're running on localhost
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: curlmachine.localhost:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
index 81c7119bc721cde45480363b771be78bbbde12ea..f48e639f8c51b400950f5c6bfe97c162b528109f 100644 (file)
@@ -19,6 +19,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test390 b/tests/data/test390
new file mode 100644 (file)
index 0000000..80e8c2b
--- /dev/null
@@ -0,0 +1,48 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+FTP
+parallel
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Content-Length: 10001
+Content-Type: text/html
+
+%repeat[1000 x hellohttp!]%
+</data>
+
+<data2 nocheck="yes">
+%repeat[1000 x hello ftp!]%
+</data2>
+
+</reply>
+
+#
+# Client-side
+<client>
+<file name="log/test%TESTNUMBER.txt">
+%repeat[1000 x hellofile!]%
+</file>
+<server>
+http
+ftp
+</server>
+<name>
+curl HTTP, FILE and FTP in parallel
+</name>
+<command option="no-output">
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER file://localhost%FILE_PWD/log/test%TESTNUMBER.txt ftp://%HOSTIP:%FTPPORT/%TESTNUMBER0002 --parallel -o log/%TESTNUMBER.a -o log/%TESTNUMBER.b -o log/%TESTNUMBER.c
+</command>
+</client>
+
+#
+<verify>
+</verify>
+</testcase>
diff --git a/tests/data/test391 b/tests/data/test391
new file mode 100644 (file)
index 0000000..1eff2ef
--- /dev/null
@@ -0,0 +1,72 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+--path-as-is
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 OK
+Content-Length: 6
+Content-Type: text/html
+Location: ../%TESTNUMBER0002
+
+-foo-
+</data>
+<data2>
+HTTP/1.1 200 OK
+Content-Length: 6
+Content-Type: text/html
+
+-muu-
+</data2>
+<datacheck>
+HTTP/1.1 301 OK
+Content-Length: 6
+Content-Type: text/html
+Location: ../%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Content-Length: 6
+Content-Type: text/html
+
+-muu-
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+--path-as-is with redirect, keeping dotdots
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/../../%TESTNUMBER --path-as-is -L
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /../../%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /../%TESTNUMBER0002 HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test398 b/tests/data/test398
new file mode 100644 (file)
index 0000000..b949064
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</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
+
+hello
+</data>
+<datacheck>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Reject HTTP/1.1 response with colon-less header
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<errorcode>
+%if hyper
+1
+%else
+8
+%endif
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test399 b/tests/data/test399
new file mode 100644 (file)
index 0000000..da4bae5
--- /dev/null
@@ -0,0 +1,32 @@
+<testcase>
+<info>
+<keywords>
+URL
+</keywords>
+</info>
+
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+65536 bytes long host name in URL
+</name>
+<file name="log/input%TESTNUM">
+url = http://%repeat[65536 x a]%/399
+</file>
+<command>
+-K log/input%TESTNUM
+</command>
+</client>
+
+<verify>
+# 3 == CURLE_URL_MALFORMAT
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>
index aaf0ae78b97ad31834428b15eef48851b4886da4..7a133307d1452b4de603743c2ca5dcabb980557c 100644 (file)
@@ -12,6 +12,9 @@ FAILURE
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test411 b/tests/data/test411
new file mode 100644 (file)
index 0000000..912f07c
--- /dev/null
@@ -0,0 +1,43 @@
+<testcase>
+<info>
+<keywords>
+-K
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+ <name>
+-K with missing file causes error
+ </name>
+ <command>
+-K log/missing http://localhost
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<stderr mode="text">
+curl: cannot read config from 'log/missing'
+curl: option -K: error encountered when reading a file
+%if manual
+curl: try 'curl --help' or 'curl --manual' for more information
+%else
+curl: try 'curl --help' for more information
+%endif
+</stderr>
+<errorcode>
+26
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test412 b/tests/data/test412
new file mode 100644 (file)
index 0000000..0dbc0ce
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+Alt-Svc
+trailing-dot
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+alt-svc
+debug
+</features>
+<server>
+http
+</server>
+ <name>
+alt-svc using host name with trailing dot in URL
+ </name>
+<setenv>
+# make debug-curl accept Alt-Svc over plain HTTP
+CURL_ALTSVC_HTTP="yeah"
+</setenv>
+ <command>
+--alt-svc "log/altsvc-%TESTNUMBER" "http://whohoo.:12345/%TESTNUMBER"
+</command>
+<file name="log/altsvc-%TESTNUMBER">
+h1 whohoo 12345 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
+</file>
+
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: whohoo.:12345\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Alt-Used: %HOSTIP:%HTTPPORT\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test413 b/tests/data/test413
new file mode 100644 (file)
index 0000000..975b3e3
--- /dev/null
@@ -0,0 +1,64 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+Alt-Svc
+trailing-dot
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+alt-svc
+debug
+</features>
+<server>
+http
+</server>
+ <name>
+alt-svc using host name with trailing dot on host from file
+ </name>
+<setenv>
+# make debug-curl accept Alt-Svc over plain HTTP
+CURL_ALTSVC_HTTP="yeah"
+</setenv>
+ <command>
+--alt-svc "log/altsvc-%TESTNUMBER" "http://whohoo:12345/%TESTNUMBER"
+</command>
+<file name="log/altsvc-%TESTNUMBER">
+h1 whohoo. 12345 h1 %HOSTIP %HTTPPORT "20290222 22:19:28" 0 0
+</file>
+
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: whohoo:12345\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Alt-Used: %HOSTIP:%HTTPPORT\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test414 b/tests/data/test414
new file mode 100644 (file)
index 0000000..2211d0f
--- /dev/null
@@ -0,0 +1,84 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 301 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Set-Cookie: SESSIONID=originaltoken; secure
+Set-Cookie: second=originaltoken; secure; path=/a
+Location: http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER0002
+
+-foo-
+</data>
+
+<data2>
+HTTP/1.1 301 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Set-Cookie: SESSIONID=hacker; domain=attack.invalid;
+Set-Cookie: second=replacement; path=/a/b
+Location: https://attack.invalid:%HTTPSPORT/a/b/%TESTNUMBER0003
+
+-foo-
+</data2>
+
+<data3>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+
+-foo-
+</data3>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+https
+</server>
+<name>
+HTTPS sec-cookie, HTTP redirect, same name cookie, redirect back
+</name>
+<command>
+https://attack.invalid:%HTTPSPORT/a/b/%TESTNUMBER -k -c log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPSPORT:%HOSTIP --resolve attack.invalid:%HTTPPORT:%HOSTIP -L
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1\r
+Host: attack.invalid:%HTTPSPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /a/b/%TESTNUMBER0002 HTTP/1.1\r
+Host: attack.invalid:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /a/b/%TESTNUMBER0003 HTTP/1.1\r
+Host: attack.invalid:%HTTPSPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Cookie: SESSIONID=originaltoken; second=originaltoken\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test415 b/tests/data/test415
new file mode 100644 (file)
index 0000000..e659680
--- /dev/null
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK swsclose
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: \r-6
+Content-Type: text/html
+Funny-head: yesyes
+
+moooooooooooo
+</data>
+<datacheck>
+%if hyper
+%else
+HTTP/1.1 200 OK swsclose
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+%endif
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP response with control code then negative Content-Length
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+
+# Hyper curl returns unsupported protocol
+# bullt-in curl returns weird_server_reply
+<errorcode>
+%if hyper
+1
+%else
+8
+%endif
+</errorcode>
+</verify>
+</testcase>
index eed9e29819c365082f841ab2e989633c8cc38a9b..cfcca66dc7546740d2917b1e9a70b8c8a4b1a85e 100644 (file)
@@ -23,7 +23,7 @@ Content-Length: 0
 http
 </server>
 <name>
-verify -w local/remote port+ip after connecton re-use
+verify -w local/remote port+ip after connection re-use
 </name>
 <command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER http://%HOSTIP:%HTTPPORT/%TESTNUMBER -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n'
diff --git a/tests/data/test436 b/tests/data/test436
new file mode 100644 (file)
index 0000000..0a62cfb
--- /dev/null
@@ -0,0 +1,58 @@
+<testcase>
+<info>
+<keywords>
+--config
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK\r
+Content-Length: 6\r
+Content-Type: text/1\r
+\r
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<file1 name="log/.config/curlrc">
+--next
+header = "a: a"
+data = "curlrc read"
+</file1>
+<server>
+http
+</server>
+<setenv>
+CURL_HOME=%PWD/log
+XDG_CONFIG_HOME=
+</setenv>
+<name>
+Find .curlrc in .config/curlrc via CURL_HOME
+</name>
+<command>
+%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol nonewline="yes">
+POST /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+a: a\r
+Content-Length: 11\r
+Content-Type: application/x-www-form-urlencoded\r
+\r
+curlrc read
+</protocol>
+</verify>
+</testcase>
index 0ec2f4b79474b64947a9f6f54c731fd9cadb856e..4f39bc1eb7d5dd0fac153aaa0049f63b3f2c0a39 100644 (file)
@@ -20,6 +20,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test440 b/tests/data/test440
new file mode 100644 (file)
index 0000000..0986cda
--- /dev/null
@@ -0,0 +1,73 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+HSTS
+trailing-dot
+</keywords>
+</info>
+
+<reply>
+
+# we use this as response to a CONNECT
+<connect nocheck="yes">
+HTTP/1.1 403 not OK at all\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Funny-head: yesyes\r
+\r
+-foo-
+</connect>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<features>
+HSTS
+proxy
+https
+</features>
+
+# no trailing dot in the file only in the URL
+<file name="log/input%TESTNUMBER">
+this.hsts.example "99991001 04:47:41"
+</file>
+
+<name>
+HSTS with trailing-dot host name in URL but none in hsts file
+</name>
+<command>
+-x http://%HOSTIP:%HTTPPORT http://this.hsts.example./%TESTNUMBER --hsts log/input%TESTNUMBER -w '%{url_effective}\n'
+</command>
+</client>
+
+<verify>
+# we let it CONNECT to the server to confirm HSTS but deny from there
+<protocol>
+CONNECT this.hsts.example.:443 HTTP/1.1\r
+Host: this.hsts.example.:443\r
+User-Agent: curl/%VERSION\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+<stdout>
+HTTP/1.1 403 not OK at all\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Funny-head: yesyes\r
+\r
+https://this.hsts.example./%TESTNUMBER
+</stdout>
+# Proxy CONNECT aborted
+<errorcode>
+56
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test441 b/tests/data/test441
new file mode 100644 (file)
index 0000000..6fbf7be
--- /dev/null
@@ -0,0 +1,73 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+HSTS
+trailing-dot
+</keywords>
+</info>
+
+<reply>
+
+# we use this as response to a CONNECT
+<connect nocheck="yes">
+HTTP/1.1 403 not OK at all\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Funny-head: yesyes\r
+\r
+-foo-
+</connect>
+</reply>
+
+<client>
+<server>
+http
+</server>
+<features>
+HSTS
+proxy
+https
+</features>
+
+# no trailing dot in the file only in the URL
+<file name="log/input%TESTNUMBER">
+this.hsts.example. "99991001 04:47:41"
+</file>
+
+<name>
+HSTS with no t-dot host name in URL but t-dot in file
+</name>
+<command>
+-x http://%HOSTIP:%HTTPPORT http://this.hsts.example/%TESTNUMBER --hsts log/input%TESTNUMBER -w '%{url_effective}\n'
+</command>
+</client>
+
+<verify>
+# we let it CONNECT to the server to confirm HSTS but deny from there
+<protocol>
+CONNECT this.hsts.example:443 HTTP/1.1\r
+Host: this.hsts.example:443\r
+User-Agent: curl/%VERSION\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+<stdout>
+HTTP/1.1 403 not OK at all\r
+Date: Tue, 09 Nov 2010 14:49:00 GMT\r
+Server: test-server/fake\r
+Content-Length: 6\r
+Connection: close\r
+Funny-head: yesyes\r
+\r
+https://this.hsts.example/%TESTNUMBER
+</stdout>
+# Proxy CONNECT aborted
+<errorcode>
+56
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test442 b/tests/data/test442
new file mode 100644 (file)
index 0000000..baab4aa
--- /dev/null
@@ -0,0 +1,210 @@
+<testcase>
+# perl:
+#
+# for(1 .. 151) {
+#    print join("\t",
+#               "attack.invalid", "TRUE", "/", "FALSE", "0",
+#               "name$_", "could-be-large-$_")."\n";
+# }
+#
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Send capped huge number of matching cookies
+</name>
+<command>
+http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER -b log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPPORT:%HOSTIP -L
+</command>
+<file name="log/cookie%TESTNUMBER" mode="text">
+attack.invalid TRUE    /       FALSE   0       name1   could-be-large-1
+attack.invalid TRUE    /       FALSE   0       name2   could-be-large-2
+attack.invalid TRUE    /       FALSE   0       name3   could-be-large-3
+attack.invalid TRUE    /       FALSE   0       name4   could-be-large-4
+attack.invalid TRUE    /       FALSE   0       name5   could-be-large-5
+attack.invalid TRUE    /       FALSE   0       name6   could-be-large-6
+attack.invalid TRUE    /       FALSE   0       name7   could-be-large-7
+attack.invalid TRUE    /       FALSE   0       name8   could-be-large-8
+attack.invalid TRUE    /       FALSE   0       name9   could-be-large-9
+attack.invalid TRUE    /       FALSE   0       name10  could-be-large-10
+attack.invalid TRUE    /       FALSE   0       name11  could-be-large-11
+attack.invalid TRUE    /       FALSE   0       name12  could-be-large-12
+attack.invalid TRUE    /       FALSE   0       name13  could-be-large-13
+attack.invalid TRUE    /       FALSE   0       name14  could-be-large-14
+attack.invalid TRUE    /       FALSE   0       name15  could-be-large-15
+attack.invalid TRUE    /       FALSE   0       name16  could-be-large-16
+attack.invalid TRUE    /       FALSE   0       name17  could-be-large-17
+attack.invalid TRUE    /       FALSE   0       name18  could-be-large-18
+attack.invalid TRUE    /       FALSE   0       name19  could-be-large-19
+attack.invalid TRUE    /       FALSE   0       name20  could-be-large-20
+attack.invalid TRUE    /       FALSE   0       name21  could-be-large-21
+attack.invalid TRUE    /       FALSE   0       name22  could-be-large-22
+attack.invalid TRUE    /       FALSE   0       name23  could-be-large-23
+attack.invalid TRUE    /       FALSE   0       name24  could-be-large-24
+attack.invalid TRUE    /       FALSE   0       name25  could-be-large-25
+attack.invalid TRUE    /       FALSE   0       name26  could-be-large-26
+attack.invalid TRUE    /       FALSE   0       name27  could-be-large-27
+attack.invalid TRUE    /       FALSE   0       name28  could-be-large-28
+attack.invalid TRUE    /       FALSE   0       name29  could-be-large-29
+attack.invalid TRUE    /       FALSE   0       name30  could-be-large-30
+attack.invalid TRUE    /       FALSE   0       name31  could-be-large-31
+attack.invalid TRUE    /       FALSE   0       name32  could-be-large-32
+attack.invalid TRUE    /       FALSE   0       name33  could-be-large-33
+attack.invalid TRUE    /       FALSE   0       name34  could-be-large-34
+attack.invalid TRUE    /       FALSE   0       name35  could-be-large-35
+attack.invalid TRUE    /       FALSE   0       name36  could-be-large-36
+attack.invalid TRUE    /       FALSE   0       name37  could-be-large-37
+attack.invalid TRUE    /       FALSE   0       name38  could-be-large-38
+attack.invalid TRUE    /       FALSE   0       name39  could-be-large-39
+attack.invalid TRUE    /       FALSE   0       name40  could-be-large-40
+attack.invalid TRUE    /       FALSE   0       name41  could-be-large-41
+attack.invalid TRUE    /       FALSE   0       name42  could-be-large-42
+attack.invalid TRUE    /       FALSE   0       name43  could-be-large-43
+attack.invalid TRUE    /       FALSE   0       name44  could-be-large-44
+attack.invalid TRUE    /       FALSE   0       name45  could-be-large-45
+attack.invalid TRUE    /       FALSE   0       name46  could-be-large-46
+attack.invalid TRUE    /       FALSE   0       name47  could-be-large-47
+attack.invalid TRUE    /       FALSE   0       name48  could-be-large-48
+attack.invalid TRUE    /       FALSE   0       name49  could-be-large-49
+attack.invalid TRUE    /       FALSE   0       name50  could-be-large-50
+attack.invalid TRUE    /       FALSE   0       name51  could-be-large-51
+attack.invalid TRUE    /       FALSE   0       name52  could-be-large-52
+attack.invalid TRUE    /       FALSE   0       name53  could-be-large-53
+attack.invalid TRUE    /       FALSE   0       name54  could-be-large-54
+attack.invalid TRUE    /       FALSE   0       name55  could-be-large-55
+attack.invalid TRUE    /       FALSE   0       name56  could-be-large-56
+attack.invalid TRUE    /       FALSE   0       name57  could-be-large-57
+attack.invalid TRUE    /       FALSE   0       name58  could-be-large-58
+attack.invalid TRUE    /       FALSE   0       name59  could-be-large-59
+attack.invalid TRUE    /       FALSE   0       name60  could-be-large-60
+attack.invalid TRUE    /       FALSE   0       name61  could-be-large-61
+attack.invalid TRUE    /       FALSE   0       name62  could-be-large-62
+attack.invalid TRUE    /       FALSE   0       name63  could-be-large-63
+attack.invalid TRUE    /       FALSE   0       name64  could-be-large-64
+attack.invalid TRUE    /       FALSE   0       name65  could-be-large-65
+attack.invalid TRUE    /       FALSE   0       name66  could-be-large-66
+attack.invalid TRUE    /       FALSE   0       name67  could-be-large-67
+attack.invalid TRUE    /       FALSE   0       name68  could-be-large-68
+attack.invalid TRUE    /       FALSE   0       name69  could-be-large-69
+attack.invalid TRUE    /       FALSE   0       name70  could-be-large-70
+attack.invalid TRUE    /       FALSE   0       name71  could-be-large-71
+attack.invalid TRUE    /       FALSE   0       name72  could-be-large-72
+attack.invalid TRUE    /       FALSE   0       name73  could-be-large-73
+attack.invalid TRUE    /       FALSE   0       name74  could-be-large-74
+attack.invalid TRUE    /       FALSE   0       name75  could-be-large-75
+attack.invalid TRUE    /       FALSE   0       name76  could-be-large-76
+attack.invalid TRUE    /       FALSE   0       name77  could-be-large-77
+attack.invalid TRUE    /       FALSE   0       name78  could-be-large-78
+attack.invalid TRUE    /       FALSE   0       name79  could-be-large-79
+attack.invalid TRUE    /       FALSE   0       name80  could-be-large-80
+attack.invalid TRUE    /       FALSE   0       name81  could-be-large-81
+attack.invalid TRUE    /       FALSE   0       name82  could-be-large-82
+attack.invalid TRUE    /       FALSE   0       name83  could-be-large-83
+attack.invalid TRUE    /       FALSE   0       name84  could-be-large-84
+attack.invalid TRUE    /       FALSE   0       name85  could-be-large-85
+attack.invalid TRUE    /       FALSE   0       name86  could-be-large-86
+attack.invalid TRUE    /       FALSE   0       name87  could-be-large-87
+attack.invalid TRUE    /       FALSE   0       name88  could-be-large-88
+attack.invalid TRUE    /       FALSE   0       name89  could-be-large-89
+attack.invalid TRUE    /       FALSE   0       name90  could-be-large-90
+attack.invalid TRUE    /       FALSE   0       name91  could-be-large-91
+attack.invalid TRUE    /       FALSE   0       name92  could-be-large-92
+attack.invalid TRUE    /       FALSE   0       name93  could-be-large-93
+attack.invalid TRUE    /       FALSE   0       name94  could-be-large-94
+attack.invalid TRUE    /       FALSE   0       name95  could-be-large-95
+attack.invalid TRUE    /       FALSE   0       name96  could-be-large-96
+attack.invalid TRUE    /       FALSE   0       name97  could-be-large-97
+attack.invalid TRUE    /       FALSE   0       name98  could-be-large-98
+attack.invalid TRUE    /       FALSE   0       name99  could-be-large-99
+attack.invalid TRUE    /       FALSE   0       name100 could-be-large-100
+attack.invalid TRUE    /       FALSE   0       name101 could-be-large-101
+attack.invalid TRUE    /       FALSE   0       name102 could-be-large-102
+attack.invalid TRUE    /       FALSE   0       name103 could-be-large-103
+attack.invalid TRUE    /       FALSE   0       name104 could-be-large-104
+attack.invalid TRUE    /       FALSE   0       name105 could-be-large-105
+attack.invalid TRUE    /       FALSE   0       name106 could-be-large-106
+attack.invalid TRUE    /       FALSE   0       name107 could-be-large-107
+attack.invalid TRUE    /       FALSE   0       name108 could-be-large-108
+attack.invalid TRUE    /       FALSE   0       name109 could-be-large-109
+attack.invalid TRUE    /       FALSE   0       name110 could-be-large-110
+attack.invalid TRUE    /       FALSE   0       name111 could-be-large-111
+attack.invalid TRUE    /       FALSE   0       name112 could-be-large-112
+attack.invalid TRUE    /       FALSE   0       name113 could-be-large-113
+attack.invalid TRUE    /       FALSE   0       name114 could-be-large-114
+attack.invalid TRUE    /       FALSE   0       name115 could-be-large-115
+attack.invalid TRUE    /       FALSE   0       name116 could-be-large-116
+attack.invalid TRUE    /       FALSE   0       name117 could-be-large-117
+attack.invalid TRUE    /       FALSE   0       name118 could-be-large-118
+attack.invalid TRUE    /       FALSE   0       name119 could-be-large-119
+attack.invalid TRUE    /       FALSE   0       name120 could-be-large-120
+attack.invalid TRUE    /       FALSE   0       name121 could-be-large-121
+attack.invalid TRUE    /       FALSE   0       name122 could-be-large-122
+attack.invalid TRUE    /       FALSE   0       name123 could-be-large-123
+attack.invalid TRUE    /       FALSE   0       name124 could-be-large-124
+attack.invalid TRUE    /       FALSE   0       name125 could-be-large-125
+attack.invalid TRUE    /       FALSE   0       name126 could-be-large-126
+attack.invalid TRUE    /       FALSE   0       name127 could-be-large-127
+attack.invalid TRUE    /       FALSE   0       name128 could-be-large-128
+attack.invalid TRUE    /       FALSE   0       name129 could-be-large-129
+attack.invalid TRUE    /       FALSE   0       name130 could-be-large-130
+attack.invalid TRUE    /       FALSE   0       name131 could-be-large-131
+attack.invalid TRUE    /       FALSE   0       name132 could-be-large-132
+attack.invalid TRUE    /       FALSE   0       name133 could-be-large-133
+attack.invalid TRUE    /       FALSE   0       name134 could-be-large-134
+attack.invalid TRUE    /       FALSE   0       name135 could-be-large-135
+attack.invalid TRUE    /       FALSE   0       name136 could-be-large-136
+attack.invalid TRUE    /       FALSE   0       name137 could-be-large-137
+attack.invalid TRUE    /       FALSE   0       name138 could-be-large-138
+attack.invalid TRUE    /       FALSE   0       name139 could-be-large-139
+attack.invalid TRUE    /       FALSE   0       name140 could-be-large-140
+attack.invalid TRUE    /       FALSE   0       name141 could-be-large-141
+attack.invalid TRUE    /       FALSE   0       name142 could-be-large-142
+attack.invalid TRUE    /       FALSE   0       name143 could-be-large-143
+attack.invalid TRUE    /       FALSE   0       name144 could-be-large-144
+attack.invalid TRUE    /       FALSE   0       name145 could-be-large-145
+attack.invalid TRUE    /       FALSE   0       name146 could-be-large-146
+attack.invalid TRUE    /       FALSE   0       name147 could-be-large-147
+attack.invalid TRUE    /       FALSE   0       name148 could-be-large-148
+attack.invalid TRUE    /       FALSE   0       name149 could-be-large-149
+attack.invalid TRUE    /       FALSE   0       name150 could-be-large-150
+attack.invalid TRUE    /       FALSE   0       name151 could-be-large-151
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1\r
+Host: attack.invalid:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Cookie: name150=could-be-large-150; name149=could-be-large-149; name148=could-be-large-148; name147=could-be-large-147; name146=could-be-large-146; name145=could-be-large-145; name144=could-be-large-144; name143=could-be-large-143; name142=could-be-large-142; name141=could-be-large-141; name140=could-be-large-140; name139=could-be-large-139; name138=could-be-large-138; name137=could-be-large-137; name136=could-be-large-136; name135=could-be-large-135; name134=could-be-large-134; name133=could-be-large-133; name132=could-be-large-132; name131=could-be-large-131; name130=could-be-large-130; name129=could-be-large-129; name128=could-be-large-128; name127=could-be-large-127; name126=could-be-large-126; name125=could-be-large-125; name124=could-be-large-124; name123=could-be-large-123; name122=could-be-large-122; name121=could-be-large-121; name120=could-be-large-120; name119=could-be-large-119; name118=could-be-large-118; name117=could-be-large-117; name116=could-be-large-116; name115=could-be-large-115; name114=could-be-large-114; name113=could-be-large-113; name112=could-be-large-112; name111=could-be-large-111; name110=could-be-large-110; name109=could-be-large-109; name108=could-be-large-108; name107=could-be-large-107; name106=could-be-large-106; name105=could-be-large-105; name104=could-be-large-104; name103=could-be-large-103; name102=could-be-large-102; name101=could-be-large-101; name100=could-be-large-100; name99=could-be-large-99; name98=could-be-large-98; name97=could-be-large-97; name96=could-be-large-96; name95=could-be-large-95; name94=could-be-large-94; name93=could-be-large-93; name92=could-be-large-92; name91=could-be-large-91; name90=could-be-large-90; name89=could-be-large-89; name88=could-be-large-88; name87=could-be-large-87; name86=could-be-large-86; name85=could-be-large-85; name84=could-be-large-84; name83=could-be-large-83; name82=could-be-large-82; name81=could-be-large-81; name80=could-be-large-80; name79=could-be-large-79; name78=could-be-large-78; name77=could-be-large-77; name76=could-be-large-76; name75=could-be-large-75; name74=could-be-large-74; name73=could-be-large-73; name72=could-be-large-72; name71=could-be-large-71; name70=could-be-large-70; name69=could-be-large-69; name68=could-be-large-68; name67=could-be-large-67; name66=could-be-large-66; name65=could-be-large-65; name64=could-be-large-64; name63=could-be-large-63; name62=could-be-large-62; name61=could-be-large-61; name60=could-be-large-60; name59=could-be-large-59; name58=could-be-large-58; name57=could-be-large-57; name56=could-be-large-56; name55=could-be-large-55; name54=could-be-large-54; name53=could-be-large-53; name52=could-be-large-52; name51=could-be-large-51; name50=could-be-large-50; name49=could-be-large-49; name48=could-be-large-48; name47=could-be-large-47; name46=could-be-large-46; name45=could-be-large-45; name44=could-be-large-44; name43=could-be-large-43; name42=could-be-large-42; name41=could-be-large-41; name40=could-be-large-40; name39=could-be-large-39; name38=could-be-large-38; name37=could-be-large-37; name36=could-be-large-36; name35=could-be-large-35; name34=could-be-large-34; name33=could-be-large-33; name32=could-be-large-32; name31=could-be-large-31; name30=could-be-large-30; name29=could-be-large-29; name28=could-be-large-28; name27=could-be-large-27; name26=could-be-large-26; name25=could-be-large-25; name24=could-be-large-24; name23=could-be-large-23; name22=could-be-large-22; name21=could-be-large-21; name20=could-be-large-20; name19=could-be-large-19; name18=could-be-large-18; name17=could-be-large-17; name16=could-be-large-16; name15=could-be-large-15; name14=could-be-large-14; name13=could-be-large-13; name12=could-be-large-12; name11=could-be-large-11; name10=could-be-large-10; name9=could-be-large-9; name8=could-be-large-8; name7=could-be-large-7; name6=could-be-large-6; name5=could-be-large-5; name4=could-be-large-4; name3=could-be-large-3; name2=could-be-large-2; name1=could-be-large-1\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test443 b/tests/data/test443
new file mode 100644 (file)
index 0000000..f984e73
--- /dev/null
@@ -0,0 +1,79 @@
+<testcase>
+# perl:
+#
+#for(1 .. 20) {
+#    print join("\t",
+#               "attack.invalid", "TRUE", "/", "FALSE", "0",
+#               "huge-$_", ('a' x 500)."-$_")."\n";
+#}
+#
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Cookie header in request no longer than 8K
+</name>
+<command>
+http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER -b log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPPORT:%HOSTIP -L
+</command>
+<file name="log/cookie%TESTNUMBER" mode="text">
+attack.invalid TRUE    /       FALSE   0       huge-1  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1
+attack.invalid TRUE    /       FALSE   0       huge-2  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-2
+attack.invalid TRUE    /       FALSE   0       huge-3  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3
+attack.invalid TRUE    /       FALSE   0       huge-4  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4
+attack.invalid TRUE    /       FALSE   0       huge-5  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5
+attack.invalid TRUE    /       FALSE   0       huge-6  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6
+attack.invalid TRUE    /       FALSE   0       huge-7  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7
+attack.invalid TRUE    /       FALSE   0       huge-8  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8
+attack.invalid TRUE    /       FALSE   0       huge-9  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9
+attack.invalid TRUE    /       FALSE   0       huge-10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10
+attack.invalid TRUE    /       FALSE   0       huge-11 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11
+attack.invalid TRUE    /       FALSE   0       huge-12 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12
+attack.invalid TRUE    /       FALSE   0       huge-13 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13
+attack.invalid TRUE    /       FALSE   0       huge-14 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14
+attack.invalid TRUE    /       FALSE   0       huge-15 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15
+attack.invalid TRUE    /       FALSE   0       huge-16 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16
+attack.invalid TRUE    /       FALSE   0       huge-17 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17
+attack.invalid TRUE    /       FALSE   0       huge-18 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18
+attack.invalid TRUE    /       FALSE   0       huge-19 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19
+attack.invalid TRUE    /       FALSE   0       huge-20 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1\r
+Host: attack.invalid:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Cookie: huge-20=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20; huge-19=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19; huge-18=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18; huge-17=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17; huge-16=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16; huge-15=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15; huge-14=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14; huge-13=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13; huge-12=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12; huge-11=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11; huge-10=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10; huge-9=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9; huge-8=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8; huge-7=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7; huge-6=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test444 b/tests/data/test444
new file mode 100644 (file)
index 0000000..89d671c
--- /dev/null
@@ -0,0 +1,190 @@
+<testcase>
+# perl:
+#
+#for(1 .. 200) {
+#
+#}
+#
+<info>
+<keywords>
+HTTP
+cookies
+--resolve
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Set-Cookie: cookie-1=yes;
+Set-Cookie: cookie-2=yes;
+Set-Cookie: cookie-3=yes;
+Set-Cookie: cookie-4=yes;
+Set-Cookie: cookie-5=yes;
+Set-Cookie: cookie-6=yes;
+Set-Cookie: cookie-7=yes;
+Set-Cookie: cookie-8=yes;
+Set-Cookie: cookie-9=yes;
+Set-Cookie: cookie-10=yes;
+Set-Cookie: cookie-11=yes;
+Set-Cookie: cookie-12=yes;
+Set-Cookie: cookie-13=yes;
+Set-Cookie: cookie-14=yes;
+Set-Cookie: cookie-15=yes;
+Set-Cookie: cookie-16=yes;
+Set-Cookie: cookie-17=yes;
+Set-Cookie: cookie-18=yes;
+Set-Cookie: cookie-19=yes;
+Set-Cookie: cookie-20=yes;
+Set-Cookie: cookie-21=yes;
+Set-Cookie: cookie-22=yes;
+Set-Cookie: cookie-23=yes;
+Set-Cookie: cookie-24=yes;
+Set-Cookie: cookie-25=yes;
+Set-Cookie: cookie-26=yes;
+Set-Cookie: cookie-27=yes;
+Set-Cookie: cookie-28=yes;
+Set-Cookie: cookie-29=yes;
+Set-Cookie: cookie-30=yes;
+Set-Cookie: cookie-31=yes;
+Set-Cookie: cookie-32=yes;
+Set-Cookie: cookie-33=yes;
+Set-Cookie: cookie-34=yes;
+Set-Cookie: cookie-35=yes;
+Set-Cookie: cookie-36=yes;
+Set-Cookie: cookie-37=yes;
+Set-Cookie: cookie-38=yes;
+Set-Cookie: cookie-39=yes;
+Set-Cookie: cookie-40=yes;
+Set-Cookie: cookie-41=yes;
+Set-Cookie: cookie-42=yes;
+Set-Cookie: cookie-43=yes;
+Set-Cookie: cookie-44=yes;
+Set-Cookie: cookie-45=yes;
+Set-Cookie: cookie-46=yes;
+Set-Cookie: cookie-47=yes;
+Set-Cookie: cookie-48=yes;
+Set-Cookie: cookie-49=yes;
+Set-Cookie: cookie-50=yes;
+Set-Cookie: cookie-51=yes;
+Set-Cookie: cookie-52=yes;
+Set-Cookie: cookie-53=yes;
+Set-Cookie: cookie-54=yes;
+Set-Cookie: cookie-55=yes;
+Set-Cookie: cookie-56=yes;
+Set-Cookie: cookie-57=yes;
+Set-Cookie: cookie-58=yes;
+Set-Cookie: cookie-59=yes;
+Set-Cookie: cookie-60=yes;
+Set-Cookie: cookie-61=yes;
+Set-Cookie: cookie-62=yes;
+Set-Cookie: cookie-63=yes;
+Set-Cookie: cookie-64=yes;
+Set-Cookie: cookie-65=yes;
+Set-Cookie: cookie-66=yes;
+Set-Cookie: cookie-67=yes;
+Set-Cookie: cookie-68=yes;
+Set-Cookie: cookie-69=yes;
+Set-Cookie: cookie-70=yes;
+Set-Cookie: cookie-71=yes;
+Set-Cookie: cookie-72=yes;
+Set-Cookie: cookie-73=yes;
+Set-Cookie: cookie-74=yes;
+Set-Cookie: cookie-75=yes;
+Set-Cookie: cookie-76=yes;
+Set-Cookie: cookie-77=yes;
+Set-Cookie: cookie-78=yes;
+Set-Cookie: cookie-79=yes;
+Set-Cookie: cookie-80=yes;
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+Many Set-Cookie response headers
+</name>
+<command>
+http://attack.invalid:%HTTPPORT/a/b/%TESTNUMBER -c log/cookie%TESTNUMBER --resolve attack.invalid:%HTTPPORT:%HOSTIP
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /a/b/%TESTNUMBER HTTP/1.1\r
+Host: attack.invalid:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<file name="log/cookie%TESTNUMBER" mode="text">
+# Netscape HTTP Cookie File
+# https://curl.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-50       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-49       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-48       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-47       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-46       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-45       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-44       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-43       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-42       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-41       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-40       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-39       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-38       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-37       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-36       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-35       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-34       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-33       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-32       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-31       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-30       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-29       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-28       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-27       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-26       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-25       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-24       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-23       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-22       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-21       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-20       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-19       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-18       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-17       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-16       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-15       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-14       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-13       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-12       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-11       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-10       yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-9        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-8        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-7        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-6        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-5        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-4        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-3        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-2        yes
+attack.invalid FALSE   /a/b/   FALSE   0       cookie-1        yes
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test445 b/tests/data/test445
new file mode 100644 (file)
index 0000000..0406c0f
--- /dev/null
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<connect>
+HTTP/1.1 503 no just no
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+
+-foo-
+</connect>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+gopher
+dict
+http
+ftp
+imap
+ldap
+mqtt
+pop3
+rtsp
+scp
+sftp
+smb
+smtp
+</features>
+<server>
+http-proxy
+</server>
+ <name>
+Refuse tunneling protocols through HTTP proxy
+ </name>
+ <command>
+-x http://%HOSTIP:%PROXYPORT/%TESTNUMBER -p gopher://127.0.0.1 dict://127.0.0.1 http://moo https://example telnet://another ftp://yes ftps://again imap://more ldap://perhaps mqtt://yes pop3://mail rtsp://harder scp://copy sftp://files smb://wird smtp://send
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+# refused in the CONNECT
+<errorcode>
+56
+</errorcode>
+</verify>
+</testcase>
index db053d1050bd72a62df08ef77af6225149f1e47f..f0c41105bdf6e407a207614bdfd648464a5ccd6b 100644 (file)
@@ -2,6 +2,7 @@
 <info>
 <keywords>
 HTTP
+HTTP proxy
 HSTS
 url_effective
 </keywords>
diff --git a/tests/data/test495 b/tests/data/test495
new file mode 100644 (file)
index 0000000..deba48a
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+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>
+<server>
+http
+</server>
+<name>
+user+password in URL with optional netrc
+</name>
+# the key is the URL encoded user, which needs to be sent encoded in the
+# Authorization: header
+<command>
+http://foo%40bar:secret@%HOSTIP:%HTTPPORT/%TESTNUMBER --netrc-optional
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic Zm9vQGJhcjpzZWNyZXQ=\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test496 b/tests/data/test496
new file mode 100644 (file)
index 0000000..19050f3
--- /dev/null
@@ -0,0 +1,36 @@
+<testcase>
+<info>
+<keywords>
+curl tool
+cmdline
+parallel
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<name>
+parallel upload missing file
+</name>
+ <command>
+0 -Z -Tz
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+26
+</errorcode>
+</verify>
+</testcase>
index 994907a9b00c5d5f5f3ac627737bd0418dae537f..6bcf25de59ba04388fb8507126d591b4bd1c8dd8 100644 (file)
@@ -44,6 +44,8 @@ USER anonymous
 PASS ftp@example.com\r
 PWD\r
 MDTM %TESTNUMBER\r
+TYPE I\r
+SIZE %TESTNUMBER\r
 QUIT\r
 </protocol>
 </verify>
index c441cfb2f5602b35480916c1d2c64cd1303d9706..5f7d210a5c624c68e3b3be8e0068802c734a0ee8 100644 (file)
@@ -21,6 +21,9 @@ OK
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 93ee7903cc603b12d794f8ffc20e0a15ea6f6c16..de07800814a83d68ad3ba3ab5689377f743ce33b 100644 (file)
@@ -6,6 +6,7 @@ HTTP POST
 POST callback
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -78,24 +79,14 @@ lib%TESTNUMBER
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy auth NTLM with POST data from read callback
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -119,7 +110,7 @@ Content-Type: application/x-www-form-urlencoded
 \r
 POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
 Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index 72e816bbbf60863c3f2d82b5a05484927d886ab7..98b43642bd20b8201cfc0e7ec1f5c3c350b79961 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP POST
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -78,24 +79,14 @@ lib%TESTNUMBER
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -119,7 +110,7 @@ Content-Type: application/x-www-form-urlencoded
 \r
 POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
 Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index 8488be60be163c5269d1f9da938e296f73b9249d..cee6164276e9872fd6dfc9c778a4674af63ef354 100644 (file)
@@ -38,6 +38,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index b19949fd22dc64b53296a0bd4b00cfe2ae8d0555..f3633f0b1c64733cccc3200c6ab333ab29341eb5 100644 (file)
@@ -10,6 +10,7 @@ POST callback
 HTTP proxy
 HTTP proxy NTLM auth
 multi
+NTLM
 </keywords>
 </info>
 
@@ -83,24 +84,14 @@ lib%TESTNUMBER
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy auth NTLM with POST data from read callback multi-if
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT testuser:testpass
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -124,7 +115,7 @@ Content-Type: application/x-www-form-urlencoded
 \r
 POST http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
 Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 Content-Length: 36\r
index 01d7189a81a95d98c1aa89a2f9e50881d22f2dce..75765b224f955ee0049889cfe080954ddf49cd42 100644 (file)
@@ -36,7 +36,7 @@ a few bytes
 # Verify data after the test has been "shot"
 <verify>
 <protocol>
-PUT /we/want/%TESTNUMBERte%5B%5Dst.txt HTTP/1.1\r
+PUT /we/want/%TESTNUMBERte%5b%5dst.txt HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
index fb234440b7d5edd93711f04a5edb993cc292d61e..7a7d2499c94c4bd58bd56d338925a9491fae3780 100644 (file)
@@ -36,6 +36,9 @@ OK
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index a40e4bf80f3f283f2ad47846337d1d7c9e0ad4f7..6af7d9936dcaaae9f5126f29fb89000d00dfd627 100644 (file)
@@ -16,6 +16,9 @@ flaky
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 02fe54315fd6c46a1ed48f4ad380ecc304edd555..6f4597877657d88c76ddc0942945be7f0f785d43 100644 (file)
@@ -22,6 +22,9 @@ OK
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 045b0371867d085da8ba6a232b5a0db2fa7c3f65..00ef1b1901c1bacb6fb953201ca94e31417ee979 100644 (file)
@@ -6,6 +6,7 @@ HTTP POST
 POST callback
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -76,24 +77,14 @@ lib%TESTNUMBER
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
- <name>
+<name>
 HTTP proxy offers Negotiate+NTLM, use only NTLM
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://test.remote.example.com/path/%TESTNUMBER http://%HOSTIP:%HTTPPORT
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -113,7 +104,7 @@ Proxy-Connection: Keep-Alive
 \r
 GET http://test.remote.example.com/path/%TESTNUMBER HTTP/1.1\r
 Host: test.remote.example.com\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAAIAAgAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAAAgACAHAAAAALAAsAcgAAAAAAAAAAAAAAhoIBAAQt1KW5CgG4YdWWcfXyfXBz1ZMCzYp37xYjBiAizmw58O6eQS7yR66eqYGWeSwl9W1lV09SS1NUQVRJT04=\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
 \r
index 65bb99059d6b41425abb820474c7e21615f0495f..ca6c5416ad471f44fb12afecf42fd1ce8ffc4dfc 100644 (file)
@@ -39,6 +39,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
diff --git a/tests/data/test644 b/tests/data/test644
new file mode 100644 (file)
index 0000000..c067d03
--- /dev/null
@@ -0,0 +1,85 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+xattr
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 301 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: fake/data
+Funny-head: yesyes
+Location: data/%TESTNUMBER0002.txt?coolsite=yes
+
+-foo-
+</data>
+<data2 nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/real
+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-
+</data2>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<features>
+debug
+xattr
+</features>
+# simulate the xattr operations
+<setenv>
+CURL_FAKE_XATTR=1
+</setenv>
+<name>
+--xattr with redirect
+</name>
+<command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --xattr -L -o log/out%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+GET /data/%TESTNUMBER0002.txt?coolsite=yes HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<stdout mode="text">
+user.mime_type => text/html
+user.xdg.origin.url => http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</stdout>
+</verify>
+</testcase>
index d5ce825bb888a41b20c0015e6b42f4187924d320..5230972220631b5d1b513aeeb53a8e6e0b18d8f7 100644 (file)
@@ -39,6 +39,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 4c4297c920a7ca9cc6785f3d0c130af82252a287..3418fa24c1440b02633efd21d07b71abc4903320 100644 (file)
@@ -14,6 +14,9 @@ MULTIPART
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 smtp
 </server>
index a609ad97d147489e07d03fd95a85c12ed489f0b0..90d44c2c4bfb7298f7ebc6045541fce495b25354 100644 (file)
@@ -15,6 +15,9 @@ MULTIPART
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 imap
 </server>
index 3683530d749bd9ae5c94269ed76a4d5a323f38cf..fe32cd5ee9a88a42de5033700019ee8b3aced842 100644 (file)
@@ -14,6 +14,9 @@ MULTIPART
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 smtp
 </server>
index 0f759f0de95b40f540cee61a03a2f3e8f8465ca2..668cdc75a0f244f7d9f55bfc094db100a4b0b139 100644 (file)
@@ -14,6 +14,9 @@ MULTIPART
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 smtp
 </server>
index 0e4c5d3c29d3959e9bd440d0c2086ae053799b01..e2626b75238fae966708814c54c7f5c94a69ee59 100644 (file)
@@ -23,6 +23,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index be2cbe405d0aeead0d78095e56df7989d6bfef64..38f21c3ad14130334e9fb5110806c7bfa094d923 100644 (file)
@@ -23,6 +23,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index f4b997216bc76ad3ed8cfa7973d62a96a828208d..d3ff7a0f7164b231fa440240b0cdc5959b972938 100644 (file)
@@ -14,6 +14,9 @@ MIME
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 smtp
 </server>
index db62c985b3ca63de08a2c579561b6c22efce0c60..fa018be250a1fc4a8302bb4c335689e02ab033a3 100644 (file)
@@ -39,6 +39,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index d8da0da1da0a5cabd52cf5ee656dcaced8e5119e..5716a0ba6bde22936c9842a14affc939f4a2700f 100644 (file)
@@ -39,6 +39,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index d8b3356bc91115db3e10ff4606edda12b6bfa9ed..14fbe4933f1351852b8c9075b4e53efdb8e1c438 100644 (file)
@@ -32,6 +32,9 @@ OK
 #
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index e54e15b0e09a0e818b21d9d36050d453fcd83f80..7546453944217c7a79172a5702dc2761b6ca4246 100644 (file)
@@ -32,6 +32,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 0606e370710c72ae0ce57d30aad345557a3b13dd..c1a0f8f19fffcf90fd2089af00b9718f880520d7 100644 (file)
@@ -32,6 +32,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 20c02a63801f28893c2c1b3431a52fac60a20e55..7f1be86b3700969de17159cd500212bf1136fa6f 100644 (file)
@@ -21,6 +21,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 0e50450b4dbcc89f5c023eae325728dbf956152d..b2790099dd6a7c9a7d524d017875bf052760c5a7 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -58,26 +59,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with NTLM authorization
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -91,7 +82,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index 4d1056c55baf03a29d25d3fe05ccca1f23466604..b7b5a90cb3c5c8939c4adbf53bd20c56bc6de2d9 100644 (file)
@@ -32,6 +32,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index b6550aa3dcec6d725a46e439100c08b225b3dd98..110038298fceef1a1c5861b6b634c21e6638e388 100644 (file)
@@ -32,6 +32,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 43d183e2da3a372e06adbccd33c58435f4480471..d7f1cccb0d6f7093f18f56c4b657f57ed5d70233 100644 (file)
@@ -32,6 +32,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index e263810fd3b1e3d62141eeb758108cef729f9f6a..0fd3f37320261e233dc7848da867eac46bb436ad 100644 (file)
@@ -32,6 +32,9 @@ hello
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index b0933bede6df744c8d3ac6d15f79abaceb578c06..fdc5a7631d7ca70b0ee523c156f8b1da9494552c 100644 (file)
@@ -12,7 +12,7 @@ HTTP Basic auth
 HTTP/1.1 200 OK swsclose\r
 Date: Thu, 09 Nov 2010 14:49:00 GMT\r
 Content-Type: text/html\r
-Content-Length: 26
+Content-Length: 26\r
 \r
 the content would go here
 </data>
diff --git a/tests/data/test679 b/tests/data/test679
new file mode 100644 (file)
index 0000000..53b20c6
--- /dev/null
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+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>
+<server>
+http
+</server>
+ <name>
+netrc with quoted password
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password "with spaces and \"\n\r\t\a"
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic dXNlcjE6d2l0aCBzcGFjZXMgYW5kICIKDQlh\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
index cd3378b5a0c8c9738dbb7b0311032715fc418177..b6d8f67cb5bfdc8d7c3b17a74bb2014c08953d62 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -57,26 +58,16 @@ Wrong password dude. Get it fixed and return.
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with NTLM authorization and wrong password
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -90,7 +81,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
diff --git a/tests/data/test680 b/tests/data/test680
new file mode 100644 (file)
index 0000000..23e194d
--- /dev/null
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+http
+</features>
+ <name>
+netrc with quoted password but missing end quote
+ </name>
+ <command>
+--netrc --netrc-file log/netrc%TESTNUMBER http://user1@http.example/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password "with spaces and \"\n\r\t\a
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+26
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test681 b/tests/data/test681
new file mode 100644 (file)
index 0000000..d98393d
--- /dev/null
@@ -0,0 +1,51 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Content-Length: 6
+Connection: close
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+--remote-name-all with --no-remote-name
+</name>
+<command option="no-include">
+--remote-name-all --no-remote-name --output-dir log http://%HOSTIP:%HTTPPORT/%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+<stdout>
+-foo-
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test682 b/tests/data/test682
new file mode 100644 (file)
index 0000000..dfe076e
--- /dev/null
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with multiple logins - pick first
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user1@%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password passwd1
+machine %HOSTIP login user2 password passwd2
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic %b64[user1:passwd1]b64%\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test683 b/tests/data/test683
new file mode 100644 (file)
index 0000000..cf6ea44
--- /dev/null
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with multiple logins - pick second
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user2@%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP login user1 password passwd1
+machine %HOSTIP login user2 password passwd2
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic %b64[user2:passwd2]b64%\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test684 b/tests/data/test684
new file mode 100644 (file)
index 0000000..d7391a1
--- /dev/null
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with no login
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP password 5up3r53cr37
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET / HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic %b64[:5up3r53cr37]b64%\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test685 b/tests/data/test685
new file mode 100644 (file)
index 0000000..ba520bd
--- /dev/null
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+netrc
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Fri, 05 Aug 2022 10:09:00 GMT
+Server: test-server/fake
+Content-Type: text/plain
+Content-Length: 6
+Connection: close
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+netrc with no login - provided user
+ </name>
+ <command>
+--netrc-optional --netrc-file log/netrc%TESTNUMBER http://user@%HOSTIP:%HTTPPORT/
+</command>
+<file name="log/netrc%TESTNUMBER" >
+machine %HOSTIP password 5up3r53cr37
+</file>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+</protocol>
+GET / HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic %b64[user:5up3r53cr37]b64%\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+</verify>
+</testcase>
index edaa3d8cfc1ea7986542e32a2010df26253bc199..1df70f3d9c96e7ed8da172e79e2275de4c252015 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -74,26 +75,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with NTLM, Basic or Wild-and-crazy authorization
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -112,7 +103,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index 23e00376647a4e9ea26481afaf5288ef5f8f7b37..e2a0d3320d7a4a0e038c738d3ca17ad4432f39b6 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 socks4
index db22d668ed57518c13c2bf70e16778d306b90c2a..f4cd7f14b3494a251805ea302cb41e2da4f64ec7 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 socks5
index dd84ffe26339c5475844a6af7fb21a2ac263c4c8..4e06f88890c42350cfc664590c69f0da0f4ef8bb 100644 (file)
@@ -20,6 +20,9 @@ response 91
 
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 socks4
 </server>
index b0531e78830aa3ee384d58f83bd0c182d6451295..873f129892b1653e29f2b93e10b9231f438e0b0d 100644 (file)
@@ -31,6 +31,9 @@ dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 socks4
index d4c3ab7c676edb743b829ec00ec2f46b1bd2caaa..e58919345345e2488115fbdc6271b4cc8d5d2822 100644 (file)
@@ -31,6 +31,9 @@ dr-xr-xr-x   5 0        1            512 Oct  1  1997 usr
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 socks5
index ff5b91444a52c9ad75cfded6e1360431331d12f3..72f4dcec8e8ff27fccdcdbdb788629e20627a1c0 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 socks4
index 9d43c7521a4f943d50630ab6c71029eea476bf79..d6380aff2b36bb9856fdd5ac00a68f230360c649 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 socks5
index 7f8b049b23c379e6472b74de0195cf0d4c426e33..56c36e1b611db0777efb67aff312e65e177c0868 100644 (file)
@@ -21,6 +21,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 5302022fe1d15b0ec157a22202899484717acc35..6400eefb3859f53654547d461ba22103b4212b8e 100644 (file)
@@ -29,6 +29,9 @@ Funny-head: yesyes
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 http
 socks5
index a70631a08e5ba5849e5a76a899f2a88485a1419b..e5f1c39fd6fe9b4b889849c1286405e48c5e1ced 100644 (file)
@@ -22,6 +22,9 @@ silly content
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 socks5
index 0c6a643383a8266d6f5487b83a1d10938a48ba36..dbdf1adbec83eba7d8a12313150675e90772499b 100644 (file)
@@ -19,6 +19,9 @@ silly content
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 socks5
index 1803f8e9ea8a54ffbfd9bdb4a50747b41cf5f469..8c94a9cc12adb2f093ad8073ea0d378ca50f3f49 100644 (file)
@@ -20,6 +20,9 @@ silly content
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 socks5
index b405bcd96d2761b13f73472dbc5feb2a22bfe5da..1e042404e2856bb3370099211f26fde7998cf4c4 100644 (file)
@@ -35,6 +35,9 @@ silly content
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 http-proxy
index 1bbceb7900de03fd92468c7af98e7a38b3a1077b..d3d89d514b7a5f9168377c685573b8f531a07d7d 100644 (file)
@@ -36,6 +36,9 @@ silly content
 #
 # Client-side
 <client>
+<features>
+proxy
+</features>
 <server>
 ftp
 http-proxy
index 6ab6c5a31edc3ccd5a5fc7383a7750f56503e645..613647aa0e7ee43fd442e0e9e7eb88894df1e528 100644 (file)
@@ -17,11 +17,13 @@ HTTP proxy Digest auth
 <connect>
 HTTP/1.1 407 Authorization Required to proxy me swsclose\r
 Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"\r
+\r
 </connect>
 
 <datacheck>
 HTTP/1.1 407 Authorization Required to proxy me swsclose\r
 Proxy-Authenticate: Digest realm="weirdorealm", nonce="12345"\r
+\r
 </datacheck>
 </reply>
 
index a8548e6c2ea5a49a898e1e3a0576bd016c55b406..fa44a5a6aa27a5ced1d1fc4e1e384fd170f0b527 100644 (file)
@@ -46,6 +46,36 @@ Set-Cookie: trailingspace    = removed; path=/we/want;
 Set-Cookie: nocookie=yes; path=/WE;
 Set-Cookie: blexp=yesyes; domain=%HOSTIP; domain=%HOSTIP; expiry=totally bad;
 Set-Cookie: partialip=nono; domain=.0.0.1;
+Set-Cookie: cookie1=%hex[%01-junk]hex%
+Set-Cookie: cookie2=%hex[%02-junk]hex%
+Set-Cookie: cookie3=%hex[%03-junk]hex%
+Set-Cookie: cookie4=%hex[%04-junk]hex%
+Set-Cookie: cookie5=%hex[%05-junk]hex%
+Set-Cookie: cookie6=%hex[%06-junk]hex%
+Set-Cookie: cookie7=%hex[%07-junk]hex%
+Set-Cookie: cookie8=%hex[%08-junk]hex%
+Set-Cookie: cookie9=%hex[junk--%09]hex%
+Set-Cookie: cookie11=%hex[%0b-junk]hex%
+Set-Cookie: cookie12=%hex[%0c-junk]hex%
+Set-Cookie: cookie14=%hex[%0e-junk]hex%
+Set-Cookie: cookie15=%hex[%0f-junk]hex%
+Set-Cookie: cookie16=%hex[%10-junk]hex%
+Set-Cookie: cookie17=%hex[%11-junk]hex%
+Set-Cookie: cookie18=%hex[%12-junk]hex%
+Set-Cookie: cookie19=%hex[%13-junk]hex%
+Set-Cookie: cookie20=%hex[%14-junk]hex%
+Set-Cookie: cookie21=%hex[%15-junk]hex%
+Set-Cookie: cookie22=%hex[%16-junk]hex%
+Set-Cookie: cookie23=%hex[%17-junk]hex%
+Set-Cookie: cookie24=%hex[%18-junk]hex%
+Set-Cookie: cookie25=%hex[%19-junk]hex%
+Set-Cookie: cookie26=%hex[%1a-junk]hex%
+Set-Cookie: cookie27=%hex[%1b-junk]hex%
+Set-Cookie: cookie28=%hex[%1c-junk]hex%
+Set-Cookie: cookie29=%hex[%1d-junk]hex%
+Set-Cookie: cookie30=%hex[%1e-junk]hex%
+Set-Cookie: cookie31=%hex[%1f-junk]hex%
+Set-Cookie: cookie31=%hex[%7f-junk]hex%
 
 </file>
 <precheck>
@@ -60,7 +90,7 @@ GET /we/want/%TESTNUMBER HTTP/1.1
 Host: %HOSTIP:%HTTPPORT\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
-Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes\r
+Cookie: name with space=is weird but; trailingspace=removed; cookie=perhaps; cookie=yes; foobar=name; blexp=yesyes; cookie9=junk--\r
 \r
 </protocol>
 </verify>
index 1808bab18d64587b71d788c14293c3b526013888..f692f34f46e85042417c9cb251eebc57971c13c0 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP GET
 HTTP proxy
 HTTP proxy NTLM auth
+NTLM
 </keywords>
 </info>
 
@@ -57,27 +58,17 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 proxy
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with proxy using NTLM authorization
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER --proxy-user testuser:testpass -x http://%HOSTIP:%HTTPPORT --proxy-ntlm
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -92,7 +83,7 @@ Proxy-Connection: Keep-Alive
 \r
 GET http://%HOSTIP:%HTTPPORT/%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 Proxy-Connection: Keep-Alive\r
index 257115ba4821314d694de35202c8388dccc53244..61db77dc3c362c98c0f1420caec690fa766a709d 100644 (file)
@@ -4,6 +4,7 @@
 IMAP
 SASL
 SASL AUTH NTLM
+NTLM
 </keywords>
 </info>
 
@@ -14,7 +15,7 @@ SASL AUTH NTLM
 AUTH NTLM
 REPLY AUTHENTICATE +
 REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= A002 OK AUTHENTICATE completed
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed
 </servercmd>
 <data>
 From: me@somewhere\r
@@ -37,23 +38,13 @@ imap
 NTLM
 SSL
 !SSPI
-debug
 </features>
- <name>
+<name>
 IMAP NTLM authentication
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 #
@@ -63,7 +54,7 @@ chkhostname curlhost
 A001 CAPABILITY\r
 A002 AUTHENTICATE NTLM\r
 TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 A003 SELECT %TESTNUMBER\r
 A004 FETCH 1 BODY[]\r
 A005 LOGOUT\r
index 79e449b793f029d44a48a9119e3de08a9d97091f..493775381f096af56c095c5b3a5be24e84476443 100644 (file)
@@ -5,6 +5,7 @@ IMAP
 SASL
 SASL AUTH NTLM
 SASL-IR
+NTLM
 </keywords>
 </info>
 
@@ -15,7 +16,7 @@ SASL-IR
 AUTH NTLM
 CAPA SASL-IR
 REPLY AUTHENTICATE + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= A002 OK AUTHENTICATE completed
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed
 </servercmd>
 <data>
 From: me@somewhere\r
@@ -38,23 +39,13 @@ imap
 NTLM
 SSL
 !SSPI
-debug
 </features>
- <name>
+<name>
 IMAP NTLM authentication with initial response
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 'imap://%HOSTIP:%IMAPPORT/%TESTNUMBER/;MAILINDEX=1' -u testuser:testpass
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 #
@@ -63,7 +54,7 @@ chkhostname curlhost
 <protocol>
 A001 CAPABILITY\r
 A002 AUTHENTICATE NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 A003 SELECT %TESTNUMBER\r
 A004 FETCH 1 BODY[]\r
 A005 LOGOUT\r
index 8e608eb571df1aef08e9e6d634cd4677b6c93d1c..2234087ee04b6b98545eeccbde308dae537d1237 100644 (file)
@@ -34,7 +34,7 @@ pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -l -u user:secret
 # Verify data after the test has been "shot"
 <verify>
 <errorcode>
-56
+8
 </errorcode>
 <protocol>
 CAPA\r
index 24b1166c6437c4d372689cbebcf369bfd7f3d2d4..0ab1ab39717236d13b4313e1f98641b1c09c7697 100644 (file)
@@ -34,7 +34,7 @@ pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret
 # Verify data after the test has been "shot"
 <verify>
 <errorcode>
-56
+8
 </errorcode>
 <protocol>
 CAPA\r
index 9216608af152b09f96dd460ed428c070e7b5afe8..6807fa56f170ab73b880dc5af1928b311c1488f5 100644 (file)
@@ -6,6 +6,7 @@ SASL
 SASL AUTH NTLM
 RFC1734
 RFC5034
+NTLM
 </keywords>
 </info>
 
@@ -16,7 +17,7 @@ RFC5034
 AUTH NTLM
 REPLY AUTH +
 REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= +OK Login successful
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= +OK Login successful
 </servercmd>
 <data>
 From: me@somewhere\r
@@ -39,23 +40,13 @@ pop3
 NTLM
 SSL
 !SSPI
-debug
 </features>
- <name>
+<name>
 POP3 NTLM authentication
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 #
@@ -65,7 +56,7 @@ chkhostname curlhost
 CAPA\r
 AUTH NTLM\r
 TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 RETR %TESTNUMBER\r
 QUIT\r
 </protocol>
index 67c810788dc276cf1a78987f2c00453eaadc2cc9..0f5f3be9b1381737cd3ac8fc81a06c1248e8511c 100644 (file)
@@ -7,6 +7,7 @@ SASL AUTH NTLM
 SASL-IR
 RFC1734
 RFC5034
+NTLM
 </keywords>
 </info>
 
@@ -16,7 +17,7 @@ RFC5034
 <servercmd>
 AUTH NTLM
 REPLY AUTH + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= +OK Login successful
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= +OK Login successful
 </servercmd>
 <data>
 From: me@somewhere\r
@@ -39,23 +40,13 @@ pop3
 NTLM
 SSL
 !SSPI
-debug
 </features>
- <name>
+<name>
 POP3 NTLM authentication with initial response
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u testuser:testpass --sasl-ir
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 #
@@ -64,7 +55,7 @@ chkhostname curlhost
 <protocol>
 CAPA\r
 AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 RETR %TESTNUMBER\r
 QUIT\r
 </protocol>
index 6781e0479de5ac40070078641032f76f6dc77158..fb621ae2b9515948963ba3aeb5aa339c0c001bbe 100644 (file)
@@ -5,6 +5,7 @@ HTTP
 HTTP GET
 HTTP NTLM auth
 followlocation
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -91,26 +92,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with NTLM and follow-location
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --ntlm -L
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -124,7 +115,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
@@ -136,7 +127,7 @@ Accept: */*
 \r
 GET /you/%TESTNUMBER0010 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
diff --git a/tests/data/test898 b/tests/data/test898
new file mode 100644 (file)
index 0000000..33bcb29
--- /dev/null
@@ -0,0 +1,94 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--location
+Authorization
+Cookie
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP with custom auth and cookies redirected to HTTP on a diff port
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.com -L -H "Authorization: Basic am9lOnNlY3JldA==" -H "Cookie: userpwd=am9lOnNlY3JldA=="
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.com/ HTTP/1.1\r
+Host: firsthost.com\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+Authorization: Basic am9lOnNlY3JldA==\r
+Cookie: userpwd=am9lOnNlY3JldA==\r
+\r
+GET http://firsthost.com:9999/a/path/%TESTNUMBER0002 HTTP/1.1\r
+Host: firsthost.com:9999\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+</verify>
+</testcase>
index e3aa2b6af9bcb58e73d1fcece17f28440f8201df..fc53b70435f84083f0bd9e668f33a8482e24ecd7 100644 (file)
@@ -20,6 +20,9 @@ blablabla
 
 # Client-side
 <client>
+<features>
+Mime
+</features>
 <server>
 http
 </server>
index 9ca9972a4eaee960a76ecfc23df9e42abddbb201..b043ce0431b0f9d1591cb131510a1c79ed684847 100644 (file)
@@ -6,6 +6,7 @@ HTTP GET
 HTTP NTLM auth
 --anyauth
 followlocation
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -129,26 +130,16 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
 </server>
- <name>
+<name>
 HTTP with NTLM via --anyauth, and then follow-location with NTLM again
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+</name>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER -u testuser:testpass --anyauth -L
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -167,7 +158,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
@@ -184,7 +175,7 @@ Accept: */*
 \r
 GET /you/%TESTNUMBER0010 HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index 9330d0aa3b7eec448971724687cd4e47cd32929f..863dce698c7b8ff40e5c2cbdebeb0757020656f6 100644 (file)
@@ -5,6 +5,7 @@ SMTP
 SASL
 SASL AUTH NTLM
 RFC4954
+NTLM
 </keywords>
 </info>
 
@@ -15,7 +16,7 @@ RFC4954
 AUTH NTLM
 REPLY AUTH 334 NTLM supported
 REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= 334 TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= 235 Authenticated
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= 235 Authenticated
 </servercmd>
 </reply>
 
@@ -29,26 +30,16 @@ smtp
 NTLM
 SSL
 !SSPI
-debug
 </features>
- <name>
+<name>
 SMTP NTLM authentication
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
+</name>
 <stdin>
 mail body\r
 </stdin>
- <command>
+<command>
 smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass -T -
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 #
@@ -58,7 +49,7 @@ chkhostname curlhost
 EHLO %TESTNUMBER\r
 AUTH NTLM\r
 TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 MAIL FROM:<sender@example.com>\r
 RCPT TO:<recipient@example.com>\r
 DATA\r
index 5f8f585fcaa04a4c07e7957d2d499a7efebc388a..2fc020128a3d791ad633f831091c4d8e7d8ba5c7 100644 (file)
@@ -4,6 +4,7 @@
 HTTP
 HTTP GET
 HTTP NTLM auth
+NTLM
 </keywords>
 </info>
 # Server-side
@@ -75,7 +76,6 @@ Finally, this is the real page!
 NTLM
 SSL
 !SSPI
-debug
 </features>
 <server>
 http
@@ -83,18 +83,9 @@ http
  <name>
 HTTP with NTLM/Negotiate/Basic, anyauth and user with domain, with size 0
  </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
- <command>
+<command>
 http://%HOSTIP:%HTTPPORT/%TESTNUMBER --anyauth -u mydomain\\myself:secret
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 # Verify data after the test has been "shot"
@@ -113,7 +104,7 @@ Accept: */*
 \r
 GET /%TESTNUMBER HTTP/1.1\r
 Host: %HOSTIP:%HTTPPORT\r
-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAAIAAgAfgAAAAAAAAAAAAAAhoIBAMIyJpR5mHpg2FZha5kRaFZ9436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmY3VybGhvc3Q=\r
+Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAgACABwAAAABgAGAHgAAAALAAsAfgAAAAAAAAAAAAAAhoIBAMIyJpR5mHpg2FZha5kRaFZ9436GAxPu0C5llxexSQ5QzVkiLSfkcpVyRgCXXqR+Am15ZG9tYWlubXlzZWxmV09SS1NUQVRJT04=\r
 User-Agent: curl/%VERSION\r
 Accept: */*\r
 \r
index 57c4a789331984916c3f259be6054096a7e683ed..36820ceb74c027bd1f063e4316f23fd4aa0c0930 100644 (file)
@@ -6,6 +6,7 @@ SASL
 SASL AUTH NTLM
 SASL-IR
 RFC4954
+NTLM
 </keywords>
 </info>
 
@@ -15,7 +16,7 @@ RFC4954
 <servercmd>
 AUTH NTLM
 REPLY AUTH 334 TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==\r
-REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q= 235 Authenticated
+REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= 235 Authenticated
 </servercmd>
 </reply>
 
@@ -29,26 +30,16 @@ smtp
 NTLM
 SSL
 !SSPI
-debug
 </features>
- <name>
+<name>
 SMTP NTLM authentication with initial response
- </name>
- <setenv>
-# we force our own host name, in order to make the test machine independent
-CURL_GETHOSTNAME=curlhost
-# we try to use the LD_PRELOAD hack, if not a debug build
-LD_PRELOAD=%PWD/libtest/.libs/libhostname.so
- </setenv>
+</name>
 <stdin>
 mail body\r
 </stdin>
- <command>
+<command>
 smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u testuser:testpass --sasl-ir -T -
 </command>
-<precheck>
-chkhostname curlhost
-</precheck>
 </client>
 
 #
@@ -57,7 +48,7 @@ chkhostname curlhost
 <protocol>\r
 EHLO %TESTNUMBER\r
 AUTH NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=\r
-TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAAIAAgAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyY3VybGhvc3Q=\r
+TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04=\r
 MAIL FROM:<sender@example.com>\r
 RCPT TO:<recipient@example.com>\r
 DATA\r
index aed6f4b8d80335ea86adbdd79515449f5ceb3c9a..248cce9a7f248a33dab82420ffcdf31521bef332 100644 (file)
@@ -31,9 +31,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient
 #
 # Verify data after the test has been "shot"
 <verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
 <errorcode>
-56
+8
 </errorcode>
 <protocol>
 EHLO %TESTNUMBER\r
index 5859f92fc5826842ed4f4d4cb5ee4251db60fd75..097385fe2a598cb0ca15f4be585323ea3b88951b 100644 (file)
@@ -38,9 +38,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren
 #
 # Verify data after the test has been "shot"
 <verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
 <errorcode>
-56
+8
 </errorcode>
 <protocol>
 EHLO %TESTNUMBER\r
index ce3de334268e8789a018eb426a6ff907f5b8e9fc..1df15808404be54c1b187d3163b0e2f56614b56e 100644 (file)
@@ -38,9 +38,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt Användaren@example.com
 #
 # Verify data after the test has been "shot"
 <verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
 <errorcode>
-56
+8
 </errorcode>
 <protocol>
 EHLO %TESTNUMBER\r
index 02e2653532e674968c5aec671791758cea466f8e..9cd10f574527b5c36b9cb11712bff8d909fb67c3 100644 (file)
@@ -39,9 +39,9 @@ smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt user@åäö.se
 #
 # Verify data after the test has been "shot"
 <verify>
-# 56 - CURLE_RECV_ERROR
+# 8 - CURLE_WEIRD_SERVER_REPLY
 <errorcode>
-56
+8
 </errorcode>
 <protocol>
 EHLO %TESTNUMBER\r
index 22b252a96a38ee328f7e4d4696b14d0431fa438a..4ddc87162242586f30cb043ee69a3f5394612142 100644 (file)
@@ -29,7 +29,7 @@ LC_CTYPE=en_US.UTF-8
 perl -MI18N::Langinfo=langinfo,CODESET -e 'die "Needs a UTF-8 locale" if (lc(langinfo(CODESET())) ne "utf-8");'
 </precheck>
  <name>
-SMTP without SMTPUTF8 support (IDN Enabked) - UTF-8 based recipient (host part only)
+SMTP without SMTPUTF8 support (IDN Enabled) - UTF-8 based recipient (host part only)
  </name>
 <stdin>
 From: different\r
index 971f1faf65791d905d89fbbcc6cc094f8b2acf24..0bcf04e39c8b6392ddd817a88c66c38ef60af0ee 100644 (file)
@@ -28,9 +28,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i
 #
 # Client-side
 <client>
-<precheck>
-/usr/bin/which jsonlint-php >log/%TESTNUMBER-check
-</precheck>
+
 <server>
 http
 </server>
@@ -47,7 +45,7 @@ CURL_VERSION=curl-unit-test-fake-version
 Verify JSON output
 </name>
 <command option="no-include">
-http://%HOSTIP:%HTTPPORT/%TESTNUMBER -s --write-out '%{json}' -o log/out972 | jsonlint-php -q
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -s --write-out '%{json}\n' -o log/out972
 </command>
 </client>
 
@@ -61,5 +59,8 @@ User-Agent: curl/%VERSION
 Accept: */*\r
 \r
 </protocol>
+<stdout mode="text">
+{"content_type":"text/html","errormsg":null,"exitcode":0,"filename_effective":"log/out972","ftp_entry_path":null,"http_code":200,"http_connect":0,"http_version":"1.1","local_ip":"%HOSTIP","local_port":13,"method":"GET","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_effective":"http://%HOSTIP:%HTTPPORT/%TESTNUMBER","urlnum":0,"curl_version":"curl-unit-test-fake-version"}
+</stdout>
 </verify>
 </testcase>
diff --git a/tests/data/test973 b/tests/data/test973
new file mode 100644 (file)
index 0000000..6ced107
--- /dev/null
@@ -0,0 +1,88 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+FTP
+--location
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+data
+    to
+      see
+that FTP
+works
+  so does it?
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+data
+    to
+      see
+that FTP
+works
+  so does it?
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+ftp
+</server>
+ <name>
+HTTP with auth redirected to FTP w/o auth
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER -L -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic am9lOnNlY3JldA==\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+USER anonymous\r
+PASS ftp@example.com\r
+PWD\r
+CWD a\r
+CWD path\r
+EPSV\r
+TYPE I\r
+SIZE %TESTNUMBER0002\r
+RETR %TESTNUMBER0002\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test974 b/tests/data/test974
new file mode 100644 (file)
index 0000000..5a834ac
--- /dev/null
@@ -0,0 +1,91 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--location
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP with auth redirected to HTTP on a diff port w/o auth
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.com -L -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.com/ HTTP/1.1\r
+Host: firsthost.com\r
+Authorization: Basic am9lOnNlY3JldA==\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+GET http://firsthost.com:9999/a/path/%TESTNUMBER0002 HTTP/1.1\r
+Host: firsthost.com:9999\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test975 b/tests/data/test975
new file mode 100644 (file)
index 0000000..85e03e4
--- /dev/null
@@ -0,0 +1,88 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+FTP
+--location-trusted
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+data
+    to
+      see
+that FTP
+works
+  so does it?
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: ftp://%HOSTIP:%FTPPORT/a/path/%TESTNUMBER0002
+
+data
+    to
+      see
+that FTP
+works
+  so does it?
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+ftp
+</server>
+ <name>
+HTTP with auth redirected to FTP allowing auth to continue
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/%TESTNUMBER --location-trusted -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET /%TESTNUMBER HTTP/1.1\r
+Host: %HOSTIP:%HTTPPORT\r
+Authorization: Basic am9lOnNlY3JldA==\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+\r
+USER joe\r
+PASS secret\r
+PWD\r
+CWD a\r
+CWD path\r
+EPSV\r
+TYPE I\r
+SIZE %TESTNUMBER0002\r
+RETR %TESTNUMBER0002\r
+QUIT\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test976 b/tests/data/test976
new file mode 100644 (file)
index 0000000..b2d9488
--- /dev/null
@@ -0,0 +1,92 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+--location-trusted
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+</data>
+<data2>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</data2>
+
+<datacheck>
+HTTP/1.1 301 redirect
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Location: http://firsthost.com:9999/a/path/%TESTNUMBER0002
+
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Connection: close
+Content-Type: text/html
+
+hey
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP with auth redirected to HTTP on a diff port --location-trusted
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.com --location-trusted -u joe:secret
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.com/ HTTP/1.1\r
+Host: firsthost.com\r
+Authorization: Basic am9lOnNlY3JldA==\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+GET http://firsthost.com:9999/a/path/%TESTNUMBER0002 HTTP/1.1\r
+Host: firsthost.com:9999\r
+Authorization: Basic am9lOnNlY3JldA==\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test977 b/tests/data/test977
new file mode 100644 (file)
index 0000000..cecfd13
--- /dev/null
@@ -0,0 +1,61 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+cookies
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Tue, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 0
+Connection: close
+Content-Type: text/html
+Set-Cookie: a=b; Domain=.me.;
+
+</data>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+proxy
+</features>
+<server>
+http
+</server>
+ <name>
+URL with trailing dot and receiving a cookie for the TLD with dot
+ </name>
+ <command>
+-x http://%HOSTIP:%HTTPPORT http://firsthost.me. -c log/cookies%TESTNUMBER
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+GET http://firsthost.me./ HTTP/1.1\r
+Host: firsthost.me.\r
+User-Agent: curl/%VERSION\r
+Accept: */*\r
+Proxy-Connection: Keep-Alive\r
+\r
+</protocol>
+<file name="log/cookies%TESTNUMBER" mode="text">
+# Netscape HTTP Cookie File
+# https://curl.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+</file>
+</verify>
+</testcase>
index 702d255c65a696937cffa9142f7bc005fc790e37..5e38ffa07833a6e0074055a1c1759ae4b60267b4 100755 (executable)
@@ -7,7 +7,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2008 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2008 - 2022, 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
@@ -20,6 +20,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 """ DICT server """
index a55d8180ced71b11767156a300fdf34d8d053ffa..641c6af24be6c7189c260af2df53e8f11259d2af 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 %file_chmod1 = (
   'name'      => 'chmod1',
index 65f5b03cb6984e6fb8042be12d9d1e2b607244de..5d09bff27c91ceb226691c0007c2d531ef6a875a 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 
@@ -63,7 +65,7 @@ sub scan_file {
     my ($source)=@_;
     open F, "<$source";
     while(<F>) {
-        if(/(CURL_DISABLE_[A-Z_]+)/g) {
+        while(s/(CURL_DISABLE_[A-Z_]+)//) {
             my ($sym)=($1);
             $file{$sym} = $source;
         }
@@ -93,7 +95,7 @@ sub scan_docs {
     my $line = 0;
     while(<F>) {
         $line++;
-        if(/^## (CURL_DISABLE_[A-Z_]+)/g) {
+        if(/^## `(CURL_DISABLE_[A-Z_]+)/g) {
             my ($sym)=($1);
             $docs{$sym} = $line;
         }
index e626f7ccb90a072f6e39d0e7f3242e757600b568..5d28886cff452c1e0bafe216567cbda2837b3113 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #
index 4eaff3a98c1760ed5e298cdeb2ade0d4d0919494..ac089f75f9c49a25757f604dcb6944ea65f8b818 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #
@@ -34,6 +36,9 @@ my @incs = (
     "$root/include/curl/easy.h",
     "$root/include/curl/mprintf.h",
     "$root/include/curl/multi.h",
+    "$root/include/curl/urlapi.h",
+    "$root/include/curl/options.h",
+    "$root/include/curl/header.h",
     );
 
 my $verbose=0;
@@ -47,12 +52,28 @@ my %rem;
 sub scanheader {
     my ($f)=@_;
     open H, "<$f" || die;
+    my $first = "";
     while(<H>) {
-        if (/^(CURL_EXTERN.*)/) {
+        if (/^(^CURL_EXTERN .*)\(/) {
             my $decl = $1;
             $decl =~ s/\r$//;
             print "$decl\n";
         }
+        elsif (/^(^CURL_EXTERN .*)/) {
+            # handle two-line declarations
+            my $decl = $1;
+            $decl =~ s/\r$//;
+            $first = $decl;
+        }
+        elsif($first) {
+            if (/^(.*)\(/) {
+                my $decl = $1;
+                $decl =~ s/\r$//;
+                $first .= $decl;
+                print "$first\n";
+            }
+            $first = "";
+        }
     }
     close H;
 }
index 50c82b83756388a36404d8c8f598e12fcb076c1f..428befddfc3468815dbc829a96a750adfac4aa50 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 BEGIN {
index b74ac5bb740f2f97650991eb5d30a0789ce9525d..422fdc2ccc82d058e79859e6af22883bd7c9ba9c 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # This is a server designed for the curl test suite.
index 348bdd44d64073639467b3c2854f982244e5f08d..f8cb6effc757a320ade294855d70631e4e92e255 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 #use strict;
@@ -55,7 +57,7 @@ sub getpartattr {
         if(!$inside && ($_ =~ /^ *\<$section/)) {
             $inside++;
         }
-        if((1 ==$inside) && ( ($_ =~ /^ *\<$part([^>]*)/) ||
+        if((1 ==$inside) && ( ($_ =~ /^ *\<$part ([^>]*)/) ||
                               !(defined($part)) )
              ) {
             $inside++;
index 9708c8939e85f4a8fc452cf47db32683c46f7ba6..09ada660bb5b8a127407af025214213d1918e64e 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2016 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # This script invokes nghttpx properly to have it serve HTTP/2 for us.
index 3b8622810936816412ce72210be027c13dc47029..64573aa431555e960146cf1698b0aa2a7350425f 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 BEGIN {
index 6d5bd6a12afd114febacdee2d394df1669f9d298..e547c6a644218981cdcbb00e5898dbc72ee1adc4 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 set(TARGET_LABEL_PREFIX "Test ")
 
index 82c3adef5bb56a8274236ee2dd5bf2ab7988281b..4a22f5282a816a7a0eb4a48502404379da3e498f 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
@@ -29,20 +31,10 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
 
-if USE_EMBEDDED_ARES
-AM_CPPFLAGS = -I$(top_srcdir)/include        \
-              -I$(top_builddir)/lib          \
-              -I$(top_srcdir)/lib            \
-              -I$(top_builddir)/ares         \
-              -I$(top_srcdir)/ares
-else
 AM_CPPFLAGS = -I$(top_srcdir)/include        \
               -I$(top_builddir)/lib          \
               -I$(top_srcdir)/lib
-endif
 
 EXTRA_DIST = test307.pl test610.pl test613.pl test1013.pl test1022.pl   \
   Makefile.inc notexists.pl CMakeLists.txt mk-lib1521.pl .checksrc
@@ -140,7 +132,7 @@ CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
 
 if CURLDEBUG
 # for debug builds, we scan the sources on all regular make invokes
index 05d144527cc1883473a1cb6294d9eec275dd4797..b7b0361058807efb30bdecacd8a14b5569488e8a 100644 (file)
@@ -138,21 +138,25 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
        lib1532$(EXEEXT) lib1533$(EXEEXT) lib1534$(EXEEXT) \
        lib1535$(EXEEXT) lib1536$(EXEEXT) lib1537$(EXEEXT) \
        lib1538$(EXEEXT) lib1539$(EXEEXT) lib1540$(EXEEXT) \
-       lib1542$(EXEEXT) lib1550$(EXEEXT) lib1551$(EXEEXT) \
-       lib1552$(EXEEXT) lib1553$(EXEEXT) lib1554$(EXEEXT) \
-       lib1555$(EXEEXT) lib1556$(EXEEXT) lib1557$(EXEEXT) \
-       lib1558$(EXEEXT) lib1559$(EXEEXT) lib1560$(EXEEXT) \
-       lib1564$(EXEEXT) lib1565$(EXEEXT) lib1567$(EXEEXT) \
-       lib1568$(EXEEXT) lib1569$(EXEEXT) lib1591$(EXEEXT) \
-       lib1592$(EXEEXT) lib1593$(EXEEXT) lib1594$(EXEEXT) \
-       lib1596$(EXEEXT) lib1905$(EXEEXT) lib1906$(EXEEXT) \
-       lib1907$(EXEEXT) lib1908$(EXEEXT) lib1910$(EXEEXT) \
-       lib1911$(EXEEXT) lib1912$(EXEEXT) lib1913$(EXEEXT) \
-       lib1915$(EXEEXT) lib1916$(EXEEXT) lib1917$(EXEEXT) \
-       lib1918$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \
+       lib1542$(EXEEXT) lib1543$(EXEEXT) lib1550$(EXEEXT) \
+       lib1551$(EXEEXT) lib1552$(EXEEXT) lib1553$(EXEEXT) \
+       lib1554$(EXEEXT) lib1555$(EXEEXT) lib1556$(EXEEXT) \
+       lib1557$(EXEEXT) lib1558$(EXEEXT) lib1559$(EXEEXT) \
+       lib1560$(EXEEXT) lib1564$(EXEEXT) lib1565$(EXEEXT) \
+       lib1567$(EXEEXT) lib1568$(EXEEXT) lib1569$(EXEEXT) \
+       lib1591$(EXEEXT) lib1592$(EXEEXT) lib1593$(EXEEXT) \
+       lib1594$(EXEEXT) lib1596$(EXEEXT) lib1597$(EXEEXT) \
+       lib1905$(EXEEXT) lib1906$(EXEEXT) lib1907$(EXEEXT) \
+       lib1908$(EXEEXT) lib1910$(EXEEXT) lib1911$(EXEEXT) \
+       lib1912$(EXEEXT) lib1913$(EXEEXT) lib1915$(EXEEXT) \
+       lib1916$(EXEEXT) lib1917$(EXEEXT) lib1918$(EXEEXT) \
+       lib1919$(EXEEXT) lib1933$(EXEEXT) lib1934$(EXEEXT) \
        lib1935$(EXEEXT) lib1936$(EXEEXT) lib1937$(EXEEXT) \
-       lib1938$(EXEEXT) lib1939$(EXEEXT) lib3010$(EXEEXT) \
-       lib3025$(EXEEXT)
+       lib1938$(EXEEXT) lib1939$(EXEEXT) lib1940$(EXEEXT) \
+       lib1945$(EXEEXT) lib1946$(EXEEXT) lib1947$(EXEEXT) \
+       lib1948$(EXEEXT) lib1955$(EXEEXT) lib2301$(EXEEXT) \
+       lib2302$(EXEEXT) lib3010$(EXEEXT) lib3025$(EXEEXT) \
+       lib3026$(EXEEXT) lib3027$(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
@@ -165,15 +169,13 @@ noinst_PROGRAMS = chkhostname$(EXEEXT) libauthretry$(EXEEXT) \
 @BUILD_STUB_GSS_FALSE@libstubgss_la_DEPENDENCIES =
 subdir = tests/libtest
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -226,7 +228,6 @@ am__dirstamp = $(am__leading_dot)dirstamp
 am_chkdecimalpoint_OBJECTS =  \
        chkdecimalpoint-chkdecimalpoint.$(OBJEXT) \
        ../../lib/chkdecimalpoint-mprintf.$(OBJEXT) \
-       ../../lib/chkdecimalpoint-curl_ctype.$(OBJEXT) \
        ../../lib/chkdecimalpoint-dynbuf.$(OBJEXT) \
        ../../lib/chkdecimalpoint-strdup.$(OBJEXT)
 chkdecimalpoint_OBJECTS = $(am_chkdecimalpoint_OBJECTS)
@@ -234,7 +235,8 @@ chkdecimalpoint_DEPENDENCIES =
 am_chkhostname_OBJECTS = chkhostname-chkhostname.$(OBJEXT) \
        ../../lib/chkhostname-curl_gethostname.$(OBJEXT)
 chkhostname_OBJECTS = $(am_chkhostname_OBJECTS)
-am__objects_1 = lib1156-first.$(OBJEXT)
+am__objects_1 = ../../lib/lib1156-timediff.$(OBJEXT) \
+       lib1156-first.$(OBJEXT)
 am__objects_2 = lib1156-testutil.$(OBJEXT)
 am__objects_3 = ../../lib/lib1156-warnless.$(OBJEXT)
 am_lib1156_OBJECTS = lib1156-lib1156.$(OBJEXT) $(am__objects_1) \
@@ -245,262 +247,301 @@ lib1156_OBJECTS = $(am_lib1156_OBJECTS)
 @USE_EXPLICIT_LIB_DEPS_TRUE@am__DEPENDENCIES_1 =  \
 @USE_EXPLICIT_LIB_DEPS_TRUE@   $(top_builddir)/lib/libcurl.la
 lib1156_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_4 = lib1500-first.$(OBJEXT)
+am__objects_4 = ../../lib/lib1500-timediff.$(OBJEXT) \
+       lib1500-first.$(OBJEXT)
 am__objects_5 = lib1500-testutil.$(OBJEXT)
 am_lib1500_OBJECTS = lib1500-lib1500.$(OBJEXT) $(am__objects_4) \
        $(am__objects_5)
 lib1500_OBJECTS = $(am_lib1500_OBJECTS)
 lib1500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_6 = lib1501-first.$(OBJEXT)
+am__objects_6 = ../../lib/lib1501-timediff.$(OBJEXT) \
+       lib1501-first.$(OBJEXT)
 am__objects_7 = lib1501-testutil.$(OBJEXT)
 am__objects_8 = ../../lib/lib1501-warnless.$(OBJEXT)
 am_lib1501_OBJECTS = lib1501-lib1501.$(OBJEXT) $(am__objects_6) \
        $(am__objects_7) $(am__objects_8)
 lib1501_OBJECTS = $(am_lib1501_OBJECTS)
 lib1501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_9 = lib1502-first.$(OBJEXT)
+am__objects_9 = ../../lib/lib1502-timediff.$(OBJEXT) \
+       lib1502-first.$(OBJEXT)
 am__objects_10 = lib1502-testutil.$(OBJEXT)
 am__objects_11 = ../../lib/lib1502-warnless.$(OBJEXT)
 am_lib1502_OBJECTS = lib1502-lib1502.$(OBJEXT) $(am__objects_9) \
        $(am__objects_10) $(am__objects_11)
 lib1502_OBJECTS = $(am_lib1502_OBJECTS)
 lib1502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_12 = lib1503-first.$(OBJEXT)
+am__objects_12 = ../../lib/lib1503-timediff.$(OBJEXT) \
+       lib1503-first.$(OBJEXT)
 am__objects_13 = lib1503-testutil.$(OBJEXT)
 am__objects_14 = ../../lib/lib1503-warnless.$(OBJEXT)
 am_lib1503_OBJECTS = lib1503-lib1502.$(OBJEXT) $(am__objects_12) \
        $(am__objects_13) $(am__objects_14)
 lib1503_OBJECTS = $(am_lib1503_OBJECTS)
 lib1503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_15 = lib1504-first.$(OBJEXT)
+am__objects_15 = ../../lib/lib1504-timediff.$(OBJEXT) \
+       lib1504-first.$(OBJEXT)
 am__objects_16 = lib1504-testutil.$(OBJEXT)
 am__objects_17 = ../../lib/lib1504-warnless.$(OBJEXT)
 am_lib1504_OBJECTS = lib1504-lib1502.$(OBJEXT) $(am__objects_15) \
        $(am__objects_16) $(am__objects_17)
 lib1504_OBJECTS = $(am_lib1504_OBJECTS)
 lib1504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_18 = lib1505-first.$(OBJEXT)
+am__objects_18 = ../../lib/lib1505-timediff.$(OBJEXT) \
+       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__objects_21 = lib1506-first.$(OBJEXT)
+am__objects_21 = ../../lib/lib1506-timediff.$(OBJEXT) \
+       lib1506-first.$(OBJEXT)
 am__objects_22 = lib1506-testutil.$(OBJEXT)
 am__objects_23 = ../../lib/lib1506-warnless.$(OBJEXT)
 am_lib1506_OBJECTS = lib1506-lib1506.$(OBJEXT) $(am__objects_21) \
        $(am__objects_22) $(am__objects_23)
 lib1506_OBJECTS = $(am_lib1506_OBJECTS)
 lib1506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_24 = lib1507-first.$(OBJEXT)
+am__objects_24 = ../../lib/lib1507-timediff.$(OBJEXT) \
+       lib1507-first.$(OBJEXT)
 am__objects_25 = lib1507-testutil.$(OBJEXT)
 am__objects_26 = ../../lib/lib1507-warnless.$(OBJEXT)
 am_lib1507_OBJECTS = lib1507-lib1507.$(OBJEXT) $(am__objects_24) \
        $(am__objects_25) $(am__objects_26)
 lib1507_OBJECTS = $(am_lib1507_OBJECTS)
 lib1507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_27 = lib1508-first.$(OBJEXT)
+am__objects_27 = ../../lib/lib1508-timediff.$(OBJEXT) \
+       lib1508-first.$(OBJEXT)
 am__objects_28 = lib1508-testutil.$(OBJEXT)
 am__objects_29 = ../../lib/lib1508-warnless.$(OBJEXT)
 am_lib1508_OBJECTS = lib1508-lib1508.$(OBJEXT) $(am__objects_27) \
        $(am__objects_28) $(am__objects_29)
 lib1508_OBJECTS = $(am_lib1508_OBJECTS)
 lib1508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_30 = lib1509-first.$(OBJEXT)
+am__objects_30 = ../../lib/lib1509-timediff.$(OBJEXT) \
+       lib1509-first.$(OBJEXT)
 am__objects_31 = lib1509-testutil.$(OBJEXT)
 am__objects_32 = ../../lib/lib1509-warnless.$(OBJEXT)
 am_lib1509_OBJECTS = lib1509-lib1509.$(OBJEXT) $(am__objects_30) \
        $(am__objects_31) $(am__objects_32)
 lib1509_OBJECTS = $(am_lib1509_OBJECTS)
 lib1509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_33 = lib1510-first.$(OBJEXT)
+am__objects_33 = ../../lib/lib1510-timediff.$(OBJEXT) \
+       lib1510-first.$(OBJEXT)
 am__objects_34 = lib1510-testutil.$(OBJEXT)
 am__objects_35 = ../../lib/lib1510-warnless.$(OBJEXT)
 am_lib1510_OBJECTS = lib1510-lib1510.$(OBJEXT) $(am__objects_33) \
        $(am__objects_34) $(am__objects_35)
 lib1510_OBJECTS = $(am_lib1510_OBJECTS)
 lib1510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_36 = lib1511-first.$(OBJEXT)
+am__objects_36 = ../../lib/lib1511-timediff.$(OBJEXT) \
+       lib1511-first.$(OBJEXT)
 am__objects_37 = lib1511-testutil.$(OBJEXT)
 am__objects_38 = ../../lib/lib1511-warnless.$(OBJEXT)
 am_lib1511_OBJECTS = lib1511-lib1511.$(OBJEXT) $(am__objects_36) \
        $(am__objects_37) $(am__objects_38)
 lib1511_OBJECTS = $(am_lib1511_OBJECTS)
 lib1511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_39 = lib1512-first.$(OBJEXT)
+am__objects_39 = ../../lib/lib1512-timediff.$(OBJEXT) \
+       lib1512-first.$(OBJEXT)
 am__objects_40 = lib1512-testutil.$(OBJEXT)
 am__objects_41 = ../../lib/lib1512-warnless.$(OBJEXT)
 am_lib1512_OBJECTS = lib1512-lib1512.$(OBJEXT) $(am__objects_39) \
        $(am__objects_40) $(am__objects_41)
 lib1512_OBJECTS = $(am_lib1512_OBJECTS)
 lib1512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_42 = lib1513-first.$(OBJEXT)
+am__objects_42 = ../../lib/lib1513-timediff.$(OBJEXT) \
+       lib1513-first.$(OBJEXT)
 am__objects_43 = lib1513-testutil.$(OBJEXT)
 am__objects_44 = ../../lib/lib1513-warnless.$(OBJEXT)
 am_lib1513_OBJECTS = lib1513-lib1513.$(OBJEXT) $(am__objects_42) \
        $(am__objects_43) $(am__objects_44)
 lib1513_OBJECTS = $(am_lib1513_OBJECTS)
 lib1513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_45 = lib1514-first.$(OBJEXT)
+am__objects_45 = ../../lib/lib1514-timediff.$(OBJEXT) \
+       lib1514-first.$(OBJEXT)
 am__objects_46 = lib1514-testutil.$(OBJEXT)
 am__objects_47 = ../../lib/lib1514-warnless.$(OBJEXT)
 am_lib1514_OBJECTS = lib1514-lib1514.$(OBJEXT) $(am__objects_45) \
        $(am__objects_46) $(am__objects_47)
 lib1514_OBJECTS = $(am_lib1514_OBJECTS)
 lib1514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_48 = lib1515-first.$(OBJEXT)
+am__objects_48 = ../../lib/lib1515-timediff.$(OBJEXT) \
+       lib1515-first.$(OBJEXT)
 am__objects_49 = lib1515-testutil.$(OBJEXT)
 am__objects_50 = ../../lib/lib1515-warnless.$(OBJEXT)
 am_lib1515_OBJECTS = lib1515-lib1515.$(OBJEXT) $(am__objects_48) \
        $(am__objects_49) $(am__objects_50)
 lib1515_OBJECTS = $(am_lib1515_OBJECTS)
 lib1515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_51 = lib1517-first.$(OBJEXT)
+am__objects_51 = ../../lib/lib1517-timediff.$(OBJEXT) \
+       lib1517-first.$(OBJEXT)
 am_lib1517_OBJECTS = lib1517-lib1517.$(OBJEXT) $(am__objects_51)
 lib1517_OBJECTS = $(am_lib1517_OBJECTS)
 lib1517_LDADD = $(LDADD)
 lib1517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_52 = lib1518-first.$(OBJEXT)
+am__objects_52 = ../../lib/lib1518-timediff.$(OBJEXT) \
+       lib1518-first.$(OBJEXT)
 am_lib1518_OBJECTS = lib1518-lib1518.$(OBJEXT) $(am__objects_52)
 lib1518_OBJECTS = $(am_lib1518_OBJECTS)
 lib1518_LDADD = $(LDADD)
 lib1518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_53 = lib1520-first.$(OBJEXT)
+am__objects_53 = ../../lib/lib1520-timediff.$(OBJEXT) \
+       lib1520-first.$(OBJEXT)
 am_lib1520_OBJECTS = lib1520-lib1520.$(OBJEXT) $(am__objects_53)
 lib1520_OBJECTS = $(am_lib1520_OBJECTS)
 lib1520_LDADD = $(LDADD)
 lib1520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_54 = lib1521-first.$(OBJEXT)
+am__objects_54 = ../../lib/lib1521-timediff.$(OBJEXT) \
+       lib1521-first.$(OBJEXT)
 nodist_lib1521_OBJECTS = lib1521-lib1521.$(OBJEXT) $(am__objects_54)
 lib1521_OBJECTS = $(nodist_lib1521_OBJECTS)
 lib1521_LDADD = $(LDADD)
 lib1521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_55 = lib1522-first.$(OBJEXT)
+am__objects_55 = ../../lib/lib1522-timediff.$(OBJEXT) \
+       lib1522-first.$(OBJEXT)
 am__objects_56 = lib1522-testutil.$(OBJEXT)
 am__objects_57 = lib1522-testtrace.$(OBJEXT)
 am_lib1522_OBJECTS = lib1522-lib1522.$(OBJEXT) $(am__objects_55) \
        $(am__objects_56) $(am__objects_57)
 lib1522_OBJECTS = $(am_lib1522_OBJECTS)
 lib1522_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_58 = lib1523-first.$(OBJEXT)
+am__objects_58 = ../../lib/lib1523-timediff.$(OBJEXT) \
+       lib1523-first.$(OBJEXT)
 am_lib1523_OBJECTS = lib1523-lib1523.$(OBJEXT) $(am__objects_58)
 lib1523_OBJECTS = $(am_lib1523_OBJECTS)
 lib1523_LDADD = $(LDADD)
 lib1523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_59 = lib1525-first.$(OBJEXT)
+am__objects_59 = ../../lib/lib1525-timediff.$(OBJEXT) \
+       lib1525-first.$(OBJEXT)
 am__objects_60 = lib1525-testutil.$(OBJEXT)
 am__objects_61 = ../../lib/lib1525-warnless.$(OBJEXT)
 am_lib1525_OBJECTS = lib1525-lib1525.$(OBJEXT) $(am__objects_59) \
        $(am__objects_60) $(am__objects_61)
 lib1525_OBJECTS = $(am_lib1525_OBJECTS)
 lib1525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_62 = lib1526-first.$(OBJEXT)
+am__objects_62 = ../../lib/lib1526-timediff.$(OBJEXT) \
+       lib1526-first.$(OBJEXT)
 am__objects_63 = lib1526-testutil.$(OBJEXT)
 am__objects_64 = ../../lib/lib1526-warnless.$(OBJEXT)
 am_lib1526_OBJECTS = lib1526-lib1526.$(OBJEXT) $(am__objects_62) \
        $(am__objects_63) $(am__objects_64)
 lib1526_OBJECTS = $(am_lib1526_OBJECTS)
 lib1526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_65 = lib1527-first.$(OBJEXT)
+am__objects_65 = ../../lib/lib1527-timediff.$(OBJEXT) \
+       lib1527-first.$(OBJEXT)
 am__objects_66 = lib1527-testutil.$(OBJEXT)
 am__objects_67 = ../../lib/lib1527-warnless.$(OBJEXT)
 am_lib1527_OBJECTS = lib1527-lib1527.$(OBJEXT) $(am__objects_65) \
        $(am__objects_66) $(am__objects_67)
 lib1527_OBJECTS = $(am_lib1527_OBJECTS)
 lib1527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_68 = lib1528-first.$(OBJEXT)
+am__objects_68 = ../../lib/lib1528-timediff.$(OBJEXT) \
+       lib1528-first.$(OBJEXT)
 am__objects_69 = lib1528-testutil.$(OBJEXT)
 am__objects_70 = ../../lib/lib1528-warnless.$(OBJEXT)
 am_lib1528_OBJECTS = lib1528-lib1528.$(OBJEXT) $(am__objects_68) \
        $(am__objects_69) $(am__objects_70)
 lib1528_OBJECTS = $(am_lib1528_OBJECTS)
 lib1528_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_71 = lib1529-first.$(OBJEXT)
+am__objects_71 = ../../lib/lib1529-timediff.$(OBJEXT) \
+       lib1529-first.$(OBJEXT)
 am__objects_72 = lib1529-testutil.$(OBJEXT)
 am__objects_73 = ../../lib/lib1529-warnless.$(OBJEXT)
 am_lib1529_OBJECTS = lib1529-lib1529.$(OBJEXT) $(am__objects_71) \
        $(am__objects_72) $(am__objects_73)
 lib1529_OBJECTS = $(am_lib1529_OBJECTS)
 lib1529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_74 = lib1530-first.$(OBJEXT)
+am__objects_74 = ../../lib/lib1530-timediff.$(OBJEXT) \
+       lib1530-first.$(OBJEXT)
 am__objects_75 = lib1530-testutil.$(OBJEXT)
 am__objects_76 = ../../lib/lib1530-warnless.$(OBJEXT)
 am_lib1530_OBJECTS = lib1530-lib1530.$(OBJEXT) $(am__objects_74) \
        $(am__objects_75) $(am__objects_76)
 lib1530_OBJECTS = $(am_lib1530_OBJECTS)
 lib1530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_77 = lib1531-first.$(OBJEXT)
+am__objects_77 = ../../lib/lib1531-timediff.$(OBJEXT) \
+       lib1531-first.$(OBJEXT)
 am__objects_78 = lib1531-testutil.$(OBJEXT)
 am__objects_79 = ../../lib/lib1531-warnless.$(OBJEXT)
 am_lib1531_OBJECTS = lib1531-lib1531.$(OBJEXT) $(am__objects_77) \
        $(am__objects_78) $(am__objects_79)
 lib1531_OBJECTS = $(am_lib1531_OBJECTS)
 lib1531_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_80 = lib1532-first.$(OBJEXT)
+am__objects_80 = ../../lib/lib1532-timediff.$(OBJEXT) \
+       lib1532-first.$(OBJEXT)
 am__objects_81 = lib1532-testutil.$(OBJEXT)
 am__objects_82 = ../../lib/lib1532-warnless.$(OBJEXT)
 am_lib1532_OBJECTS = lib1532-lib1532.$(OBJEXT) $(am__objects_80) \
        $(am__objects_81) $(am__objects_82)
 lib1532_OBJECTS = $(am_lib1532_OBJECTS)
 lib1532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_83 = lib1533-first.$(OBJEXT)
+am__objects_83 = ../../lib/lib1533-timediff.$(OBJEXT) \
+       lib1533-first.$(OBJEXT)
 am__objects_84 = lib1533-testutil.$(OBJEXT)
 am__objects_85 = ../../lib/lib1533-warnless.$(OBJEXT)
 am_lib1533_OBJECTS = lib1533-lib1533.$(OBJEXT) $(am__objects_83) \
        $(am__objects_84) $(am__objects_85)
 lib1533_OBJECTS = $(am_lib1533_OBJECTS)
 lib1533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_86 = lib1534-first.$(OBJEXT)
+am__objects_86 = ../../lib/lib1534-timediff.$(OBJEXT) \
+       lib1534-first.$(OBJEXT)
 am__objects_87 = lib1534-testutil.$(OBJEXT)
 am__objects_88 = ../../lib/lib1534-warnless.$(OBJEXT)
 am_lib1534_OBJECTS = lib1534-lib1534.$(OBJEXT) $(am__objects_86) \
        $(am__objects_87) $(am__objects_88)
 lib1534_OBJECTS = $(am_lib1534_OBJECTS)
 lib1534_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_89 = lib1535-first.$(OBJEXT)
+am__objects_89 = ../../lib/lib1535-timediff.$(OBJEXT) \
+       lib1535-first.$(OBJEXT)
 am__objects_90 = lib1535-testutil.$(OBJEXT)
 am__objects_91 = ../../lib/lib1535-warnless.$(OBJEXT)
 am_lib1535_OBJECTS = lib1535-lib1535.$(OBJEXT) $(am__objects_89) \
        $(am__objects_90) $(am__objects_91)
 lib1535_OBJECTS = $(am_lib1535_OBJECTS)
 lib1535_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_92 = lib1536-first.$(OBJEXT)
+am__objects_92 = ../../lib/lib1536-timediff.$(OBJEXT) \
+       lib1536-first.$(OBJEXT)
 am__objects_93 = lib1536-testutil.$(OBJEXT)
 am__objects_94 = ../../lib/lib1536-warnless.$(OBJEXT)
 am_lib1536_OBJECTS = lib1536-lib1536.$(OBJEXT) $(am__objects_92) \
        $(am__objects_93) $(am__objects_94)
 lib1536_OBJECTS = $(am_lib1536_OBJECTS)
 lib1536_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_95 = lib1537-first.$(OBJEXT)
+am__objects_95 = ../../lib/lib1537-timediff.$(OBJEXT) \
+       lib1537-first.$(OBJEXT)
 am__objects_96 = lib1537-testutil.$(OBJEXT)
 am__objects_97 = ../../lib/lib1537-warnless.$(OBJEXT)
 am_lib1537_OBJECTS = lib1537-lib1537.$(OBJEXT) $(am__objects_95) \
        $(am__objects_96) $(am__objects_97)
 lib1537_OBJECTS = $(am_lib1537_OBJECTS)
 lib1537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_98 = lib1538-first.$(OBJEXT)
+am__objects_98 = ../../lib/lib1538-timediff.$(OBJEXT) \
+       lib1538-first.$(OBJEXT)
 am__objects_99 = lib1538-testutil.$(OBJEXT)
 am__objects_100 = ../../lib/lib1538-warnless.$(OBJEXT)
 am_lib1538_OBJECTS = lib1538-lib1538.$(OBJEXT) $(am__objects_98) \
        $(am__objects_99) $(am__objects_100)
 lib1538_OBJECTS = $(am_lib1538_OBJECTS)
 lib1538_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_101 = lib1539-first.$(OBJEXT)
+am__objects_101 = ../../lib/lib1539-timediff.$(OBJEXT) \
+       lib1539-first.$(OBJEXT)
 am__objects_102 = lib1539-testutil.$(OBJEXT)
 am__objects_103 = ../../lib/lib1539-warnless.$(OBJEXT)
 am_lib1539_OBJECTS = lib1539-lib1514.$(OBJEXT) $(am__objects_101) \
        $(am__objects_102) $(am__objects_103)
 lib1539_OBJECTS = $(am_lib1539_OBJECTS)
 lib1539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_104 = lib1540-first.$(OBJEXT)
+am__objects_104 = ../../lib/lib1540-timediff.$(OBJEXT) \
+       lib1540-first.$(OBJEXT)
 am__objects_105 = lib1540-testutil.$(OBJEXT)
 am__objects_106 = ../../lib/lib1540-warnless.$(OBJEXT)
 am_lib1540_OBJECTS = lib1540-lib1540.$(OBJEXT) $(am__objects_104) \
        $(am__objects_105) $(am__objects_106)
 lib1540_OBJECTS = $(am_lib1540_OBJECTS)
 lib1540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_107 = lib1542-first.$(OBJEXT)
+am__objects_107 = ../../lib/lib1542-timediff.$(OBJEXT) \
+       lib1542-first.$(OBJEXT)
 am__objects_108 = lib1542-testutil.$(OBJEXT)
 am__objects_109 = lib1542-testtrace.$(OBJEXT)
 am__objects_110 = ../../lib/lib1542-warnless.$(OBJEXT)
@@ -508,896 +549,1110 @@ am_lib1542_OBJECTS = lib1542-lib1542.$(OBJEXT) $(am__objects_107) \
        $(am__objects_108) $(am__objects_109) $(am__objects_110)
 lib1542_OBJECTS = $(am_lib1542_OBJECTS)
 lib1542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_111 = lib1550-first.$(OBJEXT)
-am_lib1550_OBJECTS = lib1550-lib1550.$(OBJEXT) $(am__objects_111)
+am__objects_111 = ../../lib/lib1543-timediff.$(OBJEXT) \
+       lib1543-first.$(OBJEXT)
+am_lib1543_OBJECTS = lib1543-lib1518.$(OBJEXT) $(am__objects_111)
+lib1543_OBJECTS = $(am_lib1543_OBJECTS)
+lib1543_LDADD = $(LDADD)
+lib1543_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_112 = ../../lib/lib1550-timediff.$(OBJEXT) \
+       lib1550-first.$(OBJEXT)
+am_lib1550_OBJECTS = lib1550-lib1550.$(OBJEXT) $(am__objects_112)
 lib1550_OBJECTS = $(am_lib1550_OBJECTS)
 lib1550_LDADD = $(LDADD)
 lib1550_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_112 = lib1551-first.$(OBJEXT)
-am_lib1551_OBJECTS = lib1551-lib1551.$(OBJEXT) $(am__objects_112)
+am__objects_113 = ../../lib/lib1551-timediff.$(OBJEXT) \
+       lib1551-first.$(OBJEXT)
+am_lib1551_OBJECTS = lib1551-lib1551.$(OBJEXT) $(am__objects_113)
 lib1551_OBJECTS = $(am_lib1551_OBJECTS)
 lib1551_LDADD = $(LDADD)
 lib1551_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_113 = lib1552-first.$(OBJEXT)
-am__objects_114 = lib1552-testutil.$(OBJEXT)
-am_lib1552_OBJECTS = lib1552-lib1552.$(OBJEXT) $(am__objects_113) \
-       $(am__objects_114)
+am__objects_114 = ../../lib/lib1552-timediff.$(OBJEXT) \
+       lib1552-first.$(OBJEXT)
+am__objects_115 = lib1552-testutil.$(OBJEXT)
+am_lib1552_OBJECTS = lib1552-lib1552.$(OBJEXT) $(am__objects_114) \
+       $(am__objects_115)
 lib1552_OBJECTS = $(am_lib1552_OBJECTS)
 lib1552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_115 = lib1553-first.$(OBJEXT)
-am__objects_116 = lib1553-testutil.$(OBJEXT)
-am_lib1553_OBJECTS = lib1553-lib1553.$(OBJEXT) $(am__objects_115) \
-       $(am__objects_116)
+am__objects_116 = ../../lib/lib1553-timediff.$(OBJEXT) \
+       lib1553-first.$(OBJEXT)
+am__objects_117 = lib1553-testutil.$(OBJEXT)
+am_lib1553_OBJECTS = lib1553-lib1553.$(OBJEXT) $(am__objects_116) \
+       $(am__objects_117)
 lib1553_OBJECTS = $(am_lib1553_OBJECTS)
 lib1553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_117 = lib1554-first.$(OBJEXT)
-am_lib1554_OBJECTS = lib1554-lib1554.$(OBJEXT) $(am__objects_117)
+am__objects_118 = ../../lib/lib1554-timediff.$(OBJEXT) \
+       lib1554-first.$(OBJEXT)
+am_lib1554_OBJECTS = lib1554-lib1554.$(OBJEXT) $(am__objects_118)
 lib1554_OBJECTS = $(am_lib1554_OBJECTS)
 lib1554_LDADD = $(LDADD)
 lib1554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_118 = lib1555-first.$(OBJEXT)
-am__objects_119 = lib1555-testutil.$(OBJEXT)
-am__objects_120 = ../../lib/lib1555-warnless.$(OBJEXT)
-am_lib1555_OBJECTS = lib1555-lib1555.$(OBJEXT) $(am__objects_118) \
-       $(am__objects_119) $(am__objects_120)
+am__objects_119 = ../../lib/lib1555-timediff.$(OBJEXT) \
+       lib1555-first.$(OBJEXT)
+am__objects_120 = lib1555-testutil.$(OBJEXT)
+am__objects_121 = ../../lib/lib1555-warnless.$(OBJEXT)
+am_lib1555_OBJECTS = lib1555-lib1555.$(OBJEXT) $(am__objects_119) \
+       $(am__objects_120) $(am__objects_121)
 lib1555_OBJECTS = $(am_lib1555_OBJECTS)
 lib1555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_121 = lib1556-first.$(OBJEXT)
-am__objects_122 = lib1556-testutil.$(OBJEXT)
-am__objects_123 = ../../lib/lib1556-warnless.$(OBJEXT)
-am_lib1556_OBJECTS = lib1556-lib1556.$(OBJEXT) $(am__objects_121) \
-       $(am__objects_122) $(am__objects_123)
+am__objects_122 = ../../lib/lib1556-timediff.$(OBJEXT) \
+       lib1556-first.$(OBJEXT)
+am__objects_123 = lib1556-testutil.$(OBJEXT)
+am__objects_124 = ../../lib/lib1556-warnless.$(OBJEXT)
+am_lib1556_OBJECTS = lib1556-lib1556.$(OBJEXT) $(am__objects_122) \
+       $(am__objects_123) $(am__objects_124)
 lib1556_OBJECTS = $(am_lib1556_OBJECTS)
 lib1556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_124 = lib1557-first.$(OBJEXT)
-am__objects_125 = lib1557-testutil.$(OBJEXT)
-am__objects_126 = ../../lib/lib1557-warnless.$(OBJEXT)
-am_lib1557_OBJECTS = lib1557-lib1557.$(OBJEXT) $(am__objects_124) \
-       $(am__objects_125) $(am__objects_126)
+am__objects_125 = ../../lib/lib1557-timediff.$(OBJEXT) \
+       lib1557-first.$(OBJEXT)
+am__objects_126 = lib1557-testutil.$(OBJEXT)
+am__objects_127 = ../../lib/lib1557-warnless.$(OBJEXT)
+am_lib1557_OBJECTS = lib1557-lib1557.$(OBJEXT) $(am__objects_125) \
+       $(am__objects_126) $(am__objects_127)
 lib1557_OBJECTS = $(am_lib1557_OBJECTS)
 lib1557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_127 = first.$(OBJEXT)
-am__objects_128 = testutil.$(OBJEXT)
-am__objects_129 = ../../lib/warnless.$(OBJEXT)
-am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_127) \
-       $(am__objects_128) $(am__objects_129)
+am__objects_128 = ../../lib/timediff.$(OBJEXT) first.$(OBJEXT)
+am__objects_129 = testutil.$(OBJEXT)
+am__objects_130 = ../../lib/warnless.$(OBJEXT)
+am_lib1558_OBJECTS = lib1558.$(OBJEXT) $(am__objects_128) \
+       $(am__objects_129) $(am__objects_130)
 lib1558_OBJECTS = $(am_lib1558_OBJECTS)
 lib1558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_127) \
-       $(am__objects_128) $(am__objects_129)
+am_lib1559_OBJECTS = lib1559.$(OBJEXT) $(am__objects_128) \
+       $(am__objects_129) $(am__objects_130)
 lib1559_OBJECTS = $(am_lib1559_OBJECTS)
 lib1559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_127) \
-       $(am__objects_128) $(am__objects_129)
+am_lib1560_OBJECTS = lib1560.$(OBJEXT) $(am__objects_128) \
+       $(am__objects_129) $(am__objects_130)
 lib1560_OBJECTS = $(am_lib1560_OBJECTS)
 lib1560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_130 = lib1564-first.$(OBJEXT)
-am__objects_131 = lib1564-testutil.$(OBJEXT)
-am__objects_132 = ../../lib/lib1564-warnless.$(OBJEXT)
-am_lib1564_OBJECTS = lib1564-lib1564.$(OBJEXT) $(am__objects_130) \
-       $(am__objects_131) $(am__objects_132)
+am__objects_131 = ../../lib/lib1564-timediff.$(OBJEXT) \
+       lib1564-first.$(OBJEXT)
+am__objects_132 = lib1564-testutil.$(OBJEXT)
+am__objects_133 = ../../lib/lib1564-warnless.$(OBJEXT)
+am_lib1564_OBJECTS = lib1564-lib1564.$(OBJEXT) $(am__objects_131) \
+       $(am__objects_132) $(am__objects_133)
 lib1564_OBJECTS = $(am_lib1564_OBJECTS)
 lib1564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_133 = lib1565-first.$(OBJEXT)
-am__objects_134 = lib1565-testutil.$(OBJEXT)
-am__objects_135 = ../../lib/lib1565-warnless.$(OBJEXT)
-am_lib1565_OBJECTS = lib1565-lib1565.$(OBJEXT) $(am__objects_133) \
-       $(am__objects_134) $(am__objects_135)
+am__objects_134 = ../../lib/lib1565-timediff.$(OBJEXT) \
+       lib1565-first.$(OBJEXT)
+am__objects_135 = lib1565-testutil.$(OBJEXT)
+am__objects_136 = ../../lib/lib1565-warnless.$(OBJEXT)
+am_lib1565_OBJECTS = lib1565-lib1565.$(OBJEXT) $(am__objects_134) \
+       $(am__objects_135) $(am__objects_136)
 lib1565_OBJECTS = $(am_lib1565_OBJECTS)
 lib1565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_136 = lib1567-first.$(OBJEXT)
-am_lib1567_OBJECTS = lib1567-lib1567.$(OBJEXT) $(am__objects_136)
+am__objects_137 = ../../lib/lib1567-timediff.$(OBJEXT) \
+       lib1567-first.$(OBJEXT)
+am_lib1567_OBJECTS = lib1567-lib1567.$(OBJEXT) $(am__objects_137)
 lib1567_OBJECTS = $(am_lib1567_OBJECTS)
 lib1567_LDADD = $(LDADD)
 lib1567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_137 = lib1568-first.$(OBJEXT)
-am_lib1568_OBJECTS = lib1568-lib1568.$(OBJEXT) $(am__objects_137)
+am__objects_138 = ../../lib/lib1568-timediff.$(OBJEXT) \
+       lib1568-first.$(OBJEXT)
+am_lib1568_OBJECTS = lib1568-lib1568.$(OBJEXT) $(am__objects_138)
 lib1568_OBJECTS = $(am_lib1568_OBJECTS)
 lib1568_LDADD = $(LDADD)
 lib1568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_138 = lib1569-first.$(OBJEXT)
-am_lib1569_OBJECTS = lib1569-lib1569.$(OBJEXT) $(am__objects_138)
+am__objects_139 = ../../lib/lib1569-timediff.$(OBJEXT) \
+       lib1569-first.$(OBJEXT)
+am_lib1569_OBJECTS = lib1569-lib1569.$(OBJEXT) $(am__objects_139)
 lib1569_OBJECTS = $(am_lib1569_OBJECTS)
 lib1569_LDADD = $(LDADD)
 lib1569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_139 = lib1591-first.$(OBJEXT)
-am__objects_140 = lib1591-testutil.$(OBJEXT)
-am__objects_141 = ../../lib/lib1591-warnless.$(OBJEXT)
-am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_139) \
-       $(am__objects_140) $(am__objects_141)
+am__objects_140 = ../../lib/lib1591-timediff.$(OBJEXT) \
+       lib1591-first.$(OBJEXT)
+am__objects_141 = lib1591-testutil.$(OBJEXT)
+am__objects_142 = ../../lib/lib1591-warnless.$(OBJEXT)
+am_lib1591_OBJECTS = lib1591-lib1591.$(OBJEXT) $(am__objects_140) \
+       $(am__objects_141) $(am__objects_142)
 lib1591_OBJECTS = $(am_lib1591_OBJECTS)
 lib1591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_142 = lib1592-first.$(OBJEXT)
-am__objects_143 = lib1592-testutil.$(OBJEXT)
-am__objects_144 = ../../lib/lib1592-warnless.$(OBJEXT)
-am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_142) \
-       $(am__objects_143) $(am__objects_144)
+am__objects_143 = ../../lib/lib1592-timediff.$(OBJEXT) \
+       lib1592-first.$(OBJEXT)
+am__objects_144 = lib1592-testutil.$(OBJEXT)
+am__objects_145 = ../../lib/lib1592-warnless.$(OBJEXT)
+am_lib1592_OBJECTS = lib1592-lib1592.$(OBJEXT) $(am__objects_143) \
+       $(am__objects_144) $(am__objects_145)
 lib1592_OBJECTS = $(am_lib1592_OBJECTS)
 lib1592_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_127) \
-       $(am__objects_128) $(am__objects_129)
+am_lib1593_OBJECTS = lib1593.$(OBJEXT) $(am__objects_128) \
+       $(am__objects_129) $(am__objects_130)
 lib1593_OBJECTS = $(am_lib1593_OBJECTS)
 lib1593_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_127) \
-       $(am__objects_128) $(am__objects_129)
+am_lib1594_OBJECTS = lib1594.$(OBJEXT) $(am__objects_128) \
+       $(am__objects_129) $(am__objects_130)
 lib1594_OBJECTS = $(am_lib1594_OBJECTS)
 lib1594_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_145 = lib1596-first.$(OBJEXT)
-am__objects_146 = lib1596-testutil.$(OBJEXT)
-am__objects_147 = ../../lib/lib1596-warnless.$(OBJEXT)
-am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_145) \
-       $(am__objects_146) $(am__objects_147)
+am__objects_146 = ../../lib/lib1596-timediff.$(OBJEXT) \
+       lib1596-first.$(OBJEXT)
+am__objects_147 = lib1596-testutil.$(OBJEXT)
+am__objects_148 = ../../lib/lib1596-warnless.$(OBJEXT)
+am_lib1596_OBJECTS = lib1596-lib1594.$(OBJEXT) $(am__objects_146) \
+       $(am__objects_147) $(am__objects_148)
 lib1596_OBJECTS = $(am_lib1596_OBJECTS)
 lib1596_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_148 = lib1905-first.$(OBJEXT)
-am__objects_149 = lib1905-testutil.$(OBJEXT)
-am__objects_150 = ../../lib/lib1905-warnless.$(OBJEXT)
-am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_148) \
-       $(am__objects_149) $(am__objects_150)
+am_lib1597_OBJECTS = lib1597.$(OBJEXT) $(am__objects_128) \
+       $(am__objects_129) $(am__objects_130)
+lib1597_OBJECTS = $(am_lib1597_OBJECTS)
+lib1597_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_149 = ../../lib/lib1905-timediff.$(OBJEXT) \
+       lib1905-first.$(OBJEXT)
+am__objects_150 = lib1905-testutil.$(OBJEXT)
+am__objects_151 = ../../lib/lib1905-warnless.$(OBJEXT)
+am_lib1905_OBJECTS = lib1905-lib1905.$(OBJEXT) $(am__objects_149) \
+       $(am__objects_150) $(am__objects_151)
 lib1905_OBJECTS = $(am_lib1905_OBJECTS)
 lib1905_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_151 = lib1906-first.$(OBJEXT)
-am__objects_152 = lib1906-testutil.$(OBJEXT)
-am__objects_153 = ../../lib/lib1906-warnless.$(OBJEXT)
-am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_151) \
-       $(am__objects_152) $(am__objects_153)
+am__objects_152 = ../../lib/lib1906-timediff.$(OBJEXT) \
+       lib1906-first.$(OBJEXT)
+am__objects_153 = lib1906-testutil.$(OBJEXT)
+am__objects_154 = ../../lib/lib1906-warnless.$(OBJEXT)
+am_lib1906_OBJECTS = lib1906-lib1906.$(OBJEXT) $(am__objects_152) \
+       $(am__objects_153) $(am__objects_154)
 lib1906_OBJECTS = $(am_lib1906_OBJECTS)
 lib1906_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_154 = lib1907-first.$(OBJEXT)
-am__objects_155 = lib1907-testutil.$(OBJEXT)
-am__objects_156 = ../../lib/lib1907-warnless.$(OBJEXT)
-am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_154) \
-       $(am__objects_155) $(am__objects_156)
+am__objects_155 = ../../lib/lib1907-timediff.$(OBJEXT) \
+       lib1907-first.$(OBJEXT)
+am__objects_156 = lib1907-testutil.$(OBJEXT)
+am__objects_157 = ../../lib/lib1907-warnless.$(OBJEXT)
+am_lib1907_OBJECTS = lib1907-lib1907.$(OBJEXT) $(am__objects_155) \
+       $(am__objects_156) $(am__objects_157)
 lib1907_OBJECTS = $(am_lib1907_OBJECTS)
 lib1907_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_157 = lib1908-first.$(OBJEXT)
-am__objects_158 = lib1908-testutil.$(OBJEXT)
-am__objects_159 = ../../lib/lib1908-warnless.$(OBJEXT)
-am_lib1908_OBJECTS = lib1908-lib1908.$(OBJEXT) $(am__objects_157) \
-       $(am__objects_158) $(am__objects_159)
+am__objects_158 = ../../lib/lib1908-timediff.$(OBJEXT) \
+       lib1908-first.$(OBJEXT)
+am__objects_159 = lib1908-testutil.$(OBJEXT)
+am__objects_160 = ../../lib/lib1908-warnless.$(OBJEXT)
+am_lib1908_OBJECTS = lib1908-lib1908.$(OBJEXT) $(am__objects_158) \
+       $(am__objects_159) $(am__objects_160)
 lib1908_OBJECTS = $(am_lib1908_OBJECTS)
 lib1908_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_160 = lib1910-first.$(OBJEXT)
-am__objects_161 = lib1910-testutil.$(OBJEXT)
-am__objects_162 = ../../lib/lib1910-warnless.$(OBJEXT)
-am_lib1910_OBJECTS = lib1910-lib1910.$(OBJEXT) $(am__objects_160) \
-       $(am__objects_161) $(am__objects_162)
+am__objects_161 = ../../lib/lib1910-timediff.$(OBJEXT) \
+       lib1910-first.$(OBJEXT)
+am__objects_162 = lib1910-testutil.$(OBJEXT)
+am__objects_163 = ../../lib/lib1910-warnless.$(OBJEXT)
+am_lib1910_OBJECTS = lib1910-lib1910.$(OBJEXT) $(am__objects_161) \
+       $(am__objects_162) $(am__objects_163)
 lib1910_OBJECTS = $(am_lib1910_OBJECTS)
 lib1910_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_163 = lib1911-first.$(OBJEXT)
-am__objects_164 = lib1911-testutil.$(OBJEXT)
-am__objects_165 = ../../lib/lib1911-warnless.$(OBJEXT)
-am_lib1911_OBJECTS = lib1911-lib1911.$(OBJEXT) $(am__objects_163) \
-       $(am__objects_164) $(am__objects_165)
+am__objects_164 = ../../lib/lib1911-timediff.$(OBJEXT) \
+       lib1911-first.$(OBJEXT)
+am__objects_165 = lib1911-testutil.$(OBJEXT)
+am__objects_166 = ../../lib/lib1911-warnless.$(OBJEXT)
+am_lib1911_OBJECTS = lib1911-lib1911.$(OBJEXT) $(am__objects_164) \
+       $(am__objects_165) $(am__objects_166)
 lib1911_OBJECTS = $(am_lib1911_OBJECTS)
 lib1911_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_166 = lib1912-first.$(OBJEXT)
-am__objects_167 = lib1912-testutil.$(OBJEXT)
-am__objects_168 = ../../lib/lib1912-warnless.$(OBJEXT)
-am_lib1912_OBJECTS = lib1912-lib1912.$(OBJEXT) $(am__objects_166) \
-       $(am__objects_167) $(am__objects_168)
+am__objects_167 = ../../lib/lib1912-timediff.$(OBJEXT) \
+       lib1912-first.$(OBJEXT)
+am__objects_168 = lib1912-testutil.$(OBJEXT)
+am__objects_169 = ../../lib/lib1912-warnless.$(OBJEXT)
+am_lib1912_OBJECTS = lib1912-lib1912.$(OBJEXT) $(am__objects_167) \
+       $(am__objects_168) $(am__objects_169)
 lib1912_OBJECTS = $(am_lib1912_OBJECTS)
 lib1912_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_169 = lib1913-first.$(OBJEXT)
-am__objects_170 = lib1913-testutil.$(OBJEXT)
-am__objects_171 = ../../lib/lib1913-warnless.$(OBJEXT)
-am_lib1913_OBJECTS = lib1913-lib1913.$(OBJEXT) $(am__objects_169) \
-       $(am__objects_170) $(am__objects_171)
+am__objects_170 = ../../lib/lib1913-timediff.$(OBJEXT) \
+       lib1913-first.$(OBJEXT)
+am__objects_171 = lib1913-testutil.$(OBJEXT)
+am__objects_172 = ../../lib/lib1913-warnless.$(OBJEXT)
+am_lib1913_OBJECTS = lib1913-lib1913.$(OBJEXT) $(am__objects_170) \
+       $(am__objects_171) $(am__objects_172)
 lib1913_OBJECTS = $(am_lib1913_OBJECTS)
 lib1913_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_172 = lib1915-first.$(OBJEXT)
-am__objects_173 = lib1915-testutil.$(OBJEXT)
-am__objects_174 = ../../lib/lib1915-warnless.$(OBJEXT)
-am_lib1915_OBJECTS = lib1915-lib1915.$(OBJEXT) $(am__objects_172) \
-       $(am__objects_173) $(am__objects_174)
+am__objects_173 = ../../lib/lib1915-timediff.$(OBJEXT) \
+       lib1915-first.$(OBJEXT)
+am__objects_174 = lib1915-testutil.$(OBJEXT)
+am__objects_175 = ../../lib/lib1915-warnless.$(OBJEXT)
+am_lib1915_OBJECTS = lib1915-lib1915.$(OBJEXT) $(am__objects_173) \
+       $(am__objects_174) $(am__objects_175)
 lib1915_OBJECTS = $(am_lib1915_OBJECTS)
 lib1915_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_175 = lib1916-first.$(OBJEXT)
-am__objects_176 = ../../lib/lib1916-warnless.$(OBJEXT)
-am_lib1916_OBJECTS = lib1916-lib1916.$(OBJEXT) $(am__objects_175) \
-       $(am__objects_176)
+am__objects_176 = ../../lib/lib1916-timediff.$(OBJEXT) \
+       lib1916-first.$(OBJEXT)
+am__objects_177 = ../../lib/lib1916-warnless.$(OBJEXT)
+am_lib1916_OBJECTS = lib1916-lib1916.$(OBJEXT) $(am__objects_176) \
+       $(am__objects_177)
 lib1916_OBJECTS = $(am_lib1916_OBJECTS)
 lib1916_LDADD = $(LDADD)
 lib1916_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_177 = lib1917-first.$(OBJEXT)
-am__objects_178 = ../../lib/lib1917-warnless.$(OBJEXT)
-am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_177) \
-       $(am__objects_178)
+am__objects_178 = ../../lib/lib1917-timediff.$(OBJEXT) \
+       lib1917-first.$(OBJEXT)
+am__objects_179 = ../../lib/lib1917-warnless.$(OBJEXT)
+am_lib1917_OBJECTS = lib1917-lib1916.$(OBJEXT) $(am__objects_178) \
+       $(am__objects_179)
 lib1917_OBJECTS = $(am_lib1917_OBJECTS)
 lib1917_LDADD = $(LDADD)
 lib1917_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_179 = lib1918-first.$(OBJEXT)
-am__objects_180 = ../../lib/lib1918-warnless.$(OBJEXT)
-am_lib1918_OBJECTS = lib1918-lib1918.$(OBJEXT) $(am__objects_179) \
-       $(am__objects_180)
+am__objects_180 = ../../lib/lib1918-timediff.$(OBJEXT) \
+       lib1918-first.$(OBJEXT)
+am__objects_181 = ../../lib/lib1918-warnless.$(OBJEXT)
+am_lib1918_OBJECTS = lib1918-lib1918.$(OBJEXT) $(am__objects_180) \
+       $(am__objects_181)
 lib1918_OBJECTS = $(am_lib1918_OBJECTS)
 lib1918_LDADD = $(LDADD)
 lib1918_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_181 = lib1933-first.$(OBJEXT)
-am__objects_182 = lib1933-testutil.$(OBJEXT)
-am__objects_183 = ../../lib/lib1933-warnless.$(OBJEXT)
-am_lib1933_OBJECTS = lib1933-lib1933.$(OBJEXT) $(am__objects_181) \
-       $(am__objects_182) $(am__objects_183)
+am__objects_182 = ../../lib/lib1919-timediff.$(OBJEXT) \
+       lib1919-first.$(OBJEXT)
+am__objects_183 = ../../lib/lib1919-warnless.$(OBJEXT)
+am_lib1919_OBJECTS = lib1919-lib1919.$(OBJEXT) $(am__objects_182) \
+       $(am__objects_183)
+lib1919_OBJECTS = $(am_lib1919_OBJECTS)
+lib1919_LDADD = $(LDADD)
+lib1919_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_184 = ../../lib/lib1933-timediff.$(OBJEXT) \
+       lib1933-first.$(OBJEXT)
+am__objects_185 = lib1933-testutil.$(OBJEXT)
+am__objects_186 = ../../lib/lib1933-warnless.$(OBJEXT)
+am_lib1933_OBJECTS = lib1933-lib1933.$(OBJEXT) $(am__objects_184) \
+       $(am__objects_185) $(am__objects_186)
 lib1933_OBJECTS = $(am_lib1933_OBJECTS)
 lib1933_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_184 = lib1934-first.$(OBJEXT)
-am__objects_185 = lib1934-testutil.$(OBJEXT)
-am__objects_186 = ../../lib/lib1934-warnless.$(OBJEXT)
-am_lib1934_OBJECTS = lib1934-lib1934.$(OBJEXT) $(am__objects_184) \
-       $(am__objects_185) $(am__objects_186)
+am__objects_187 = ../../lib/lib1934-timediff.$(OBJEXT) \
+       lib1934-first.$(OBJEXT)
+am__objects_188 = lib1934-testutil.$(OBJEXT)
+am__objects_189 = ../../lib/lib1934-warnless.$(OBJEXT)
+am_lib1934_OBJECTS = lib1934-lib1934.$(OBJEXT) $(am__objects_187) \
+       $(am__objects_188) $(am__objects_189)
 lib1934_OBJECTS = $(am_lib1934_OBJECTS)
 lib1934_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_187 = lib1935-first.$(OBJEXT)
-am__objects_188 = lib1935-testutil.$(OBJEXT)
-am__objects_189 = ../../lib/lib1935-warnless.$(OBJEXT)
-am_lib1935_OBJECTS = lib1935-lib1935.$(OBJEXT) $(am__objects_187) \
-       $(am__objects_188) $(am__objects_189)
+am__objects_190 = ../../lib/lib1935-timediff.$(OBJEXT) \
+       lib1935-first.$(OBJEXT)
+am__objects_191 = lib1935-testutil.$(OBJEXT)
+am__objects_192 = ../../lib/lib1935-warnless.$(OBJEXT)
+am_lib1935_OBJECTS = lib1935-lib1935.$(OBJEXT) $(am__objects_190) \
+       $(am__objects_191) $(am__objects_192)
 lib1935_OBJECTS = $(am_lib1935_OBJECTS)
 lib1935_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_190 = lib1936-first.$(OBJEXT)
-am__objects_191 = lib1936-testutil.$(OBJEXT)
-am__objects_192 = ../../lib/lib1936-warnless.$(OBJEXT)
-am_lib1936_OBJECTS = lib1936-lib1936.$(OBJEXT) $(am__objects_190) \
-       $(am__objects_191) $(am__objects_192)
+am__objects_193 = ../../lib/lib1936-timediff.$(OBJEXT) \
+       lib1936-first.$(OBJEXT)
+am__objects_194 = lib1936-testutil.$(OBJEXT)
+am__objects_195 = ../../lib/lib1936-warnless.$(OBJEXT)
+am_lib1936_OBJECTS = lib1936-lib1936.$(OBJEXT) $(am__objects_193) \
+       $(am__objects_194) $(am__objects_195)
 lib1936_OBJECTS = $(am_lib1936_OBJECTS)
 lib1936_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_193 = lib1937-first.$(OBJEXT)
-am_lib1937_OBJECTS = lib1937-lib1937.$(OBJEXT) $(am__objects_193)
+am__objects_196 = ../../lib/lib1937-timediff.$(OBJEXT) \
+       lib1937-first.$(OBJEXT)
+am_lib1937_OBJECTS = lib1937-lib1937.$(OBJEXT) $(am__objects_196)
 lib1937_OBJECTS = $(am_lib1937_OBJECTS)
 lib1937_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_194 = lib1938-first.$(OBJEXT)
-am_lib1938_OBJECTS = lib1938-lib1938.$(OBJEXT) $(am__objects_194)
+am__objects_197 = ../../lib/lib1938-timediff.$(OBJEXT) \
+       lib1938-first.$(OBJEXT)
+am_lib1938_OBJECTS = lib1938-lib1938.$(OBJEXT) $(am__objects_197)
 lib1938_OBJECTS = $(am_lib1938_OBJECTS)
 lib1938_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_195 = lib1939-first.$(OBJEXT)
-am_lib1939_OBJECTS = lib1939-lib1939.$(OBJEXT) $(am__objects_195)
+am__objects_198 = ../../lib/lib1939-timediff.$(OBJEXT) \
+       lib1939-first.$(OBJEXT)
+am_lib1939_OBJECTS = lib1939-lib1939.$(OBJEXT) $(am__objects_198)
 lib1939_OBJECTS = $(am_lib1939_OBJECTS)
 lib1939_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_196 = lib3010-first.$(OBJEXT)
-am__objects_197 = lib3010-testutil.$(OBJEXT)
-am__objects_198 = ../../lib/lib3010-warnless.$(OBJEXT)
-am_lib3010_OBJECTS = lib3010-lib3010.$(OBJEXT) $(am__objects_196) \
-       $(am__objects_197) $(am__objects_198)
+am__objects_199 = ../../lib/lib1940-timediff.$(OBJEXT) \
+       lib1940-first.$(OBJEXT)
+am_lib1940_OBJECTS = lib1940-lib1940.$(OBJEXT) $(am__objects_199)
+lib1940_OBJECTS = $(am_lib1940_OBJECTS)
+lib1940_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_200 = ../../lib/lib1945-timediff.$(OBJEXT) \
+       lib1945-first.$(OBJEXT)
+am_lib1945_OBJECTS = lib1945-lib1945.$(OBJEXT) $(am__objects_200)
+lib1945_OBJECTS = $(am_lib1945_OBJECTS)
+lib1945_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_201 = ../../lib/lib1946-timediff.$(OBJEXT) \
+       lib1946-first.$(OBJEXT)
+am_lib1946_OBJECTS = lib1946-lib1940.$(OBJEXT) $(am__objects_201)
+lib1946_OBJECTS = $(am_lib1946_OBJECTS)
+lib1946_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_202 = ../../lib/lib1947-timediff.$(OBJEXT) \
+       lib1947-first.$(OBJEXT)
+am_lib1947_OBJECTS = lib1947-lib1947.$(OBJEXT) $(am__objects_202)
+lib1947_OBJECTS = $(am_lib1947_OBJECTS)
+lib1947_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_203 = ../../lib/lib1948-timediff.$(OBJEXT) \
+       lib1948-first.$(OBJEXT)
+am_lib1948_OBJECTS = lib1948-lib1948.$(OBJEXT) $(am__objects_203)
+lib1948_OBJECTS = $(am_lib1948_OBJECTS)
+lib1948_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_204 = ../../lib/lib1955-timediff.$(OBJEXT) \
+       lib1955-first.$(OBJEXT)
+am__objects_205 = lib1955-testutil.$(OBJEXT)
+am__objects_206 = ../../lib/lib1955-warnless.$(OBJEXT)
+am_lib1955_OBJECTS = lib1955-lib1955.$(OBJEXT) $(am__objects_204) \
+       $(am__objects_205) $(am__objects_206)
+lib1955_OBJECTS = $(am_lib1955_OBJECTS)
+lib1955_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_lib2301_OBJECTS = lib2301.$(OBJEXT) $(am__objects_128)
+lib2301_OBJECTS = $(am_lib2301_OBJECTS)
+lib2301_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_lib2302_OBJECTS = lib2302.$(OBJEXT) $(am__objects_128)
+lib2302_OBJECTS = $(am_lib2302_OBJECTS)
+lib2302_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_207 = ../../lib/lib3010-timediff.$(OBJEXT) \
+       lib3010-first.$(OBJEXT)
+am__objects_208 = lib3010-testutil.$(OBJEXT)
+am__objects_209 = ../../lib/lib3010-warnless.$(OBJEXT)
+am_lib3010_OBJECTS = lib3010-lib3010.$(OBJEXT) $(am__objects_207) \
+       $(am__objects_208) $(am__objects_209)
 lib3010_OBJECTS = $(am_lib3010_OBJECTS)
 lib3010_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_199 = lib3025-first.$(OBJEXT)
-am__objects_200 = lib3025-testutil.$(OBJEXT)
-am__objects_201 = ../../lib/lib3025-warnless.$(OBJEXT)
-am_lib3025_OBJECTS = lib3025-lib3025.$(OBJEXT) $(am__objects_199) \
-       $(am__objects_200) $(am__objects_201)
+am__objects_210 = ../../lib/lib3025-timediff.$(OBJEXT) \
+       lib3025-first.$(OBJEXT)
+am__objects_211 = lib3025-testutil.$(OBJEXT)
+am__objects_212 = ../../lib/lib3025-warnless.$(OBJEXT)
+am_lib3025_OBJECTS = lib3025-lib3025.$(OBJEXT) $(am__objects_210) \
+       $(am__objects_211) $(am__objects_212)
 lib3025_OBJECTS = $(am_lib3025_OBJECTS)
 lib3025_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_202 = lib500-first.$(OBJEXT)
-am__objects_203 = lib500-testutil.$(OBJEXT)
-am__objects_204 = lib500-testtrace.$(OBJEXT)
-am__objects_205 = ../../lib/lib500-curl_multibyte.$(OBJEXT)
-am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_202) \
-       $(am__objects_203) $(am__objects_204) $(am__objects_205)
+am__objects_213 = ../../lib/lib3026-timediff.$(OBJEXT) \
+       lib3026-first.$(OBJEXT)
+am__objects_214 = lib3026-testutil.$(OBJEXT)
+am__objects_215 = ../../lib/lib3026-warnless.$(OBJEXT)
+am_lib3026_OBJECTS = lib3026-lib3026.$(OBJEXT) $(am__objects_213) \
+       $(am__objects_214) $(am__objects_215)
+lib3026_OBJECTS = $(am_lib3026_OBJECTS)
+lib3026_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_216 = ../../lib/lib3027-timediff.$(OBJEXT) \
+       lib3027-first.$(OBJEXT)
+am__objects_217 = lib3027-testutil.$(OBJEXT)
+am__objects_218 = ../../lib/lib3027-warnless.$(OBJEXT)
+am_lib3027_OBJECTS = lib3027-lib3027.$(OBJEXT) $(am__objects_216) \
+       $(am__objects_217) $(am__objects_218)
+lib3027_OBJECTS = $(am_lib3027_OBJECTS)
+lib3027_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_219 = ../../lib/lib500-timediff.$(OBJEXT) \
+       lib500-first.$(OBJEXT)
+am__objects_220 = lib500-testutil.$(OBJEXT)
+am__objects_221 = lib500-testtrace.$(OBJEXT)
+am__objects_222 = ../../lib/lib500-curl_multibyte.$(OBJEXT)
+am_lib500_OBJECTS = lib500-lib500.$(OBJEXT) $(am__objects_219) \
+       $(am__objects_220) $(am__objects_221) $(am__objects_222)
 lib500_OBJECTS = $(am_lib500_OBJECTS)
 lib500_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_206 = lib501-first.$(OBJEXT)
-am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_206)
+am__objects_223 = ../../lib/lib501-timediff.$(OBJEXT) \
+       lib501-first.$(OBJEXT)
+am_lib501_OBJECTS = lib501-lib501.$(OBJEXT) $(am__objects_223)
 lib501_OBJECTS = $(am_lib501_OBJECTS)
 lib501_LDADD = $(LDADD)
 lib501_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_207 = lib502-first.$(OBJEXT)
-am__objects_208 = lib502-testutil.$(OBJEXT)
-am__objects_209 = ../../lib/lib502-warnless.$(OBJEXT)
-am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_207) \
-       $(am__objects_208) $(am__objects_209)
+am__objects_224 = ../../lib/lib502-timediff.$(OBJEXT) \
+       lib502-first.$(OBJEXT)
+am__objects_225 = lib502-testutil.$(OBJEXT)
+am__objects_226 = ../../lib/lib502-warnless.$(OBJEXT)
+am_lib502_OBJECTS = lib502-lib502.$(OBJEXT) $(am__objects_224) \
+       $(am__objects_225) $(am__objects_226)
 lib502_OBJECTS = $(am_lib502_OBJECTS)
 lib502_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_210 = lib503-first.$(OBJEXT)
-am__objects_211 = lib503-testutil.$(OBJEXT)
-am__objects_212 = ../../lib/lib503-warnless.$(OBJEXT)
-am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_210) \
-       $(am__objects_211) $(am__objects_212)
+am__objects_227 = ../../lib/lib503-timediff.$(OBJEXT) \
+       lib503-first.$(OBJEXT)
+am__objects_228 = lib503-testutil.$(OBJEXT)
+am__objects_229 = ../../lib/lib503-warnless.$(OBJEXT)
+am_lib503_OBJECTS = lib503-lib503.$(OBJEXT) $(am__objects_227) \
+       $(am__objects_228) $(am__objects_229)
 lib503_OBJECTS = $(am_lib503_OBJECTS)
 lib503_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_213 = lib504-first.$(OBJEXT)
-am__objects_214 = lib504-testutil.$(OBJEXT)
-am__objects_215 = ../../lib/lib504-warnless.$(OBJEXT)
-am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_213) \
-       $(am__objects_214) $(am__objects_215)
+am__objects_230 = ../../lib/lib504-timediff.$(OBJEXT) \
+       lib504-first.$(OBJEXT)
+am__objects_231 = lib504-testutil.$(OBJEXT)
+am__objects_232 = ../../lib/lib504-warnless.$(OBJEXT)
+am_lib504_OBJECTS = lib504-lib504.$(OBJEXT) $(am__objects_230) \
+       $(am__objects_231) $(am__objects_232)
 lib504_OBJECTS = $(am_lib504_OBJECTS)
 lib504_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_216 = lib505-first.$(OBJEXT)
-am__objects_217 = ../../lib/lib505-curl_multibyte.$(OBJEXT)
-am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_216) \
-       $(am__objects_217)
+am__objects_233 = ../../lib/lib505-timediff.$(OBJEXT) \
+       lib505-first.$(OBJEXT)
+am__objects_234 = ../../lib/lib505-curl_multibyte.$(OBJEXT)
+am_lib505_OBJECTS = lib505-lib505.$(OBJEXT) $(am__objects_233) \
+       $(am__objects_234)
 lib505_OBJECTS = $(am_lib505_OBJECTS)
 lib505_LDADD = $(LDADD)
 lib505_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_218 = lib506-first.$(OBJEXT)
-am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_218)
+am__objects_235 = ../../lib/lib506-timediff.$(OBJEXT) \
+       lib506-first.$(OBJEXT)
+am_lib506_OBJECTS = lib506-lib506.$(OBJEXT) $(am__objects_235)
 lib506_OBJECTS = $(am_lib506_OBJECTS)
 lib506_LDADD = $(LDADD)
 lib506_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_219 = lib507-first.$(OBJEXT)
-am__objects_220 = lib507-testutil.$(OBJEXT)
-am__objects_221 = ../../lib/lib507-warnless.$(OBJEXT)
-am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_219) \
-       $(am__objects_220) $(am__objects_221)
+am__objects_236 = ../../lib/lib507-timediff.$(OBJEXT) \
+       lib507-first.$(OBJEXT)
+am__objects_237 = lib507-testutil.$(OBJEXT)
+am__objects_238 = ../../lib/lib507-warnless.$(OBJEXT)
+am_lib507_OBJECTS = lib507-lib507.$(OBJEXT) $(am__objects_236) \
+       $(am__objects_237) $(am__objects_238)
 lib507_OBJECTS = $(am_lib507_OBJECTS)
 lib507_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_222 = lib508-first.$(OBJEXT)
-am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_222)
+am__objects_239 = ../../lib/lib508-timediff.$(OBJEXT) \
+       lib508-first.$(OBJEXT)
+am_lib508_OBJECTS = lib508-lib508.$(OBJEXT) $(am__objects_239)
 lib508_OBJECTS = $(am_lib508_OBJECTS)
 lib508_LDADD = $(LDADD)
 lib508_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_223 = lib509-first.$(OBJEXT)
-am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_223)
+am__objects_240 = ../../lib/lib509-timediff.$(OBJEXT) \
+       lib509-first.$(OBJEXT)
+am_lib509_OBJECTS = lib509-lib509.$(OBJEXT) $(am__objects_240)
 lib509_OBJECTS = $(am_lib509_OBJECTS)
 lib509_LDADD = $(LDADD)
 lib509_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_224 = lib510-first.$(OBJEXT)
-am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_224)
+am__objects_241 = ../../lib/lib510-timediff.$(OBJEXT) \
+       lib510-first.$(OBJEXT)
+am_lib510_OBJECTS = lib510-lib510.$(OBJEXT) $(am__objects_241)
 lib510_OBJECTS = $(am_lib510_OBJECTS)
 lib510_LDADD = $(LDADD)
 lib510_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_225 = lib511-first.$(OBJEXT)
-am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_225)
+am__objects_242 = ../../lib/lib511-timediff.$(OBJEXT) \
+       lib511-first.$(OBJEXT)
+am_lib511_OBJECTS = lib511-lib511.$(OBJEXT) $(am__objects_242)
 lib511_OBJECTS = $(am_lib511_OBJECTS)
 lib511_LDADD = $(LDADD)
 lib511_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_226 = lib512-first.$(OBJEXT)
-am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_226)
+am__objects_243 = ../../lib/lib512-timediff.$(OBJEXT) \
+       lib512-first.$(OBJEXT)
+am_lib512_OBJECTS = lib512-lib512.$(OBJEXT) $(am__objects_243)
 lib512_OBJECTS = $(am_lib512_OBJECTS)
 lib512_LDADD = $(LDADD)
 lib512_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_227 = lib513-first.$(OBJEXT)
-am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_227)
+am__objects_244 = ../../lib/lib513-timediff.$(OBJEXT) \
+       lib513-first.$(OBJEXT)
+am_lib513_OBJECTS = lib513-lib513.$(OBJEXT) $(am__objects_244)
 lib513_OBJECTS = $(am_lib513_OBJECTS)
 lib513_LDADD = $(LDADD)
 lib513_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_228 = lib514-first.$(OBJEXT)
-am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_228)
+am__objects_245 = ../../lib/lib514-timediff.$(OBJEXT) \
+       lib514-first.$(OBJEXT)
+am_lib514_OBJECTS = lib514-lib514.$(OBJEXT) $(am__objects_245)
 lib514_OBJECTS = $(am_lib514_OBJECTS)
 lib514_LDADD = $(LDADD)
 lib514_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_229 = lib515-first.$(OBJEXT)
-am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_229)
+am__objects_246 = ../../lib/lib515-timediff.$(OBJEXT) \
+       lib515-first.$(OBJEXT)
+am_lib515_OBJECTS = lib515-lib515.$(OBJEXT) $(am__objects_246)
 lib515_OBJECTS = $(am_lib515_OBJECTS)
 lib515_LDADD = $(LDADD)
 lib515_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_230 = lib516-first.$(OBJEXT)
-am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_230)
+am__objects_247 = ../../lib/lib516-timediff.$(OBJEXT) \
+       lib516-first.$(OBJEXT)
+am_lib516_OBJECTS = lib516-lib516.$(OBJEXT) $(am__objects_247)
 lib516_OBJECTS = $(am_lib516_OBJECTS)
 lib516_LDADD = $(LDADD)
 lib516_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_231 = lib517-first.$(OBJEXT)
-am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_231)
+am__objects_248 = ../../lib/lib517-timediff.$(OBJEXT) \
+       lib517-first.$(OBJEXT)
+am_lib517_OBJECTS = lib517-lib517.$(OBJEXT) $(am__objects_248)
 lib517_OBJECTS = $(am_lib517_OBJECTS)
 lib517_LDADD = $(LDADD)
 lib517_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_232 = lib518-first.$(OBJEXT)
-am__objects_233 = ../../lib/lib518-warnless.$(OBJEXT)
-am__objects_234 = ../../lib/lib518-curl_multibyte.$(OBJEXT)
-am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_232) \
-       $(am__objects_233) $(am__objects_234)
+am__objects_249 = ../../lib/lib518-timediff.$(OBJEXT) \
+       lib518-first.$(OBJEXT)
+am__objects_250 = ../../lib/lib518-warnless.$(OBJEXT)
+am__objects_251 = ../../lib/lib518-curl_multibyte.$(OBJEXT)
+am_lib518_OBJECTS = lib518-lib518.$(OBJEXT) $(am__objects_249) \
+       $(am__objects_250) $(am__objects_251)
 lib518_OBJECTS = $(am_lib518_OBJECTS)
 lib518_LDADD = $(LDADD)
 lib518_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_235 = lib519-first.$(OBJEXT)
-am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_235)
+am__objects_252 = ../../lib/lib519-timediff.$(OBJEXT) \
+       lib519-first.$(OBJEXT)
+am_lib519_OBJECTS = lib519-lib519.$(OBJEXT) $(am__objects_252)
 lib519_OBJECTS = $(am_lib519_OBJECTS)
 lib519_LDADD = $(LDADD)
 lib519_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_236 = lib520-first.$(OBJEXT)
-am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_236)
+am__objects_253 = ../../lib/lib520-timediff.$(OBJEXT) \
+       lib520-first.$(OBJEXT)
+am_lib520_OBJECTS = lib520-lib520.$(OBJEXT) $(am__objects_253)
 lib520_OBJECTS = $(am_lib520_OBJECTS)
 lib520_LDADD = $(LDADD)
 lib520_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_237 = lib521-first.$(OBJEXT)
-am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_237)
+am__objects_254 = ../../lib/lib521-timediff.$(OBJEXT) \
+       lib521-first.$(OBJEXT)
+am_lib521_OBJECTS = lib521-lib521.$(OBJEXT) $(am__objects_254)
 lib521_OBJECTS = $(am_lib521_OBJECTS)
 lib521_LDADD = $(LDADD)
 lib521_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_238 = lib523-first.$(OBJEXT)
-am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_238)
+am__objects_255 = ../../lib/lib523-timediff.$(OBJEXT) \
+       lib523-first.$(OBJEXT)
+am_lib523_OBJECTS = lib523-lib523.$(OBJEXT) $(am__objects_255)
 lib523_OBJECTS = $(am_lib523_OBJECTS)
 lib523_LDADD = $(LDADD)
 lib523_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_239 = lib524-first.$(OBJEXT)
-am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_239)
+am__objects_256 = ../../lib/lib524-timediff.$(OBJEXT) \
+       lib524-first.$(OBJEXT)
+am_lib524_OBJECTS = lib524-lib524.$(OBJEXT) $(am__objects_256)
 lib524_OBJECTS = $(am_lib524_OBJECTS)
 lib524_LDADD = $(LDADD)
 lib524_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_240 = lib525-first.$(OBJEXT)
-am__objects_241 = lib525-testutil.$(OBJEXT)
-am__objects_242 = ../../lib/lib525-warnless.$(OBJEXT)
-am__objects_243 = ../../lib/lib525-curl_multibyte.$(OBJEXT)
-am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_240) \
-       $(am__objects_241) $(am__objects_242) $(am__objects_243)
+am__objects_257 = ../../lib/lib525-timediff.$(OBJEXT) \
+       lib525-first.$(OBJEXT)
+am__objects_258 = lib525-testutil.$(OBJEXT)
+am__objects_259 = ../../lib/lib525-warnless.$(OBJEXT)
+am__objects_260 = ../../lib/lib525-curl_multibyte.$(OBJEXT)
+am_lib525_OBJECTS = lib525-lib525.$(OBJEXT) $(am__objects_257) \
+       $(am__objects_258) $(am__objects_259) $(am__objects_260)
 lib525_OBJECTS = $(am_lib525_OBJECTS)
 lib525_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_244 = lib526-first.$(OBJEXT)
-am__objects_245 = lib526-testutil.$(OBJEXT)
-am__objects_246 = ../../lib/lib526-warnless.$(OBJEXT)
-am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_244) \
-       $(am__objects_245) $(am__objects_246)
+am__objects_261 = ../../lib/lib526-timediff.$(OBJEXT) \
+       lib526-first.$(OBJEXT)
+am__objects_262 = lib526-testutil.$(OBJEXT)
+am__objects_263 = ../../lib/lib526-warnless.$(OBJEXT)
+am_lib526_OBJECTS = lib526-lib526.$(OBJEXT) $(am__objects_261) \
+       $(am__objects_262) $(am__objects_263)
 lib526_OBJECTS = $(am_lib526_OBJECTS)
 lib526_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_247 = lib527-first.$(OBJEXT)
-am__objects_248 = lib527-testutil.$(OBJEXT)
-am__objects_249 = ../../lib/lib527-warnless.$(OBJEXT)
-am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_247) \
-       $(am__objects_248) $(am__objects_249)
+am__objects_264 = ../../lib/lib527-timediff.$(OBJEXT) \
+       lib527-first.$(OBJEXT)
+am__objects_265 = lib527-testutil.$(OBJEXT)
+am__objects_266 = ../../lib/lib527-warnless.$(OBJEXT)
+am_lib527_OBJECTS = lib527-lib526.$(OBJEXT) $(am__objects_264) \
+       $(am__objects_265) $(am__objects_266)
 lib527_OBJECTS = $(am_lib527_OBJECTS)
 lib527_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_250 = lib529-first.$(OBJEXT)
-am__objects_251 = lib529-testutil.$(OBJEXT)
-am__objects_252 = ../../lib/lib529-warnless.$(OBJEXT)
-am__objects_253 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
-am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_250) \
-       $(am__objects_251) $(am__objects_252) $(am__objects_253)
+am__objects_267 = ../../lib/lib529-timediff.$(OBJEXT) \
+       lib529-first.$(OBJEXT)
+am__objects_268 = lib529-testutil.$(OBJEXT)
+am__objects_269 = ../../lib/lib529-warnless.$(OBJEXT)
+am__objects_270 = ../../lib/lib529-curl_multibyte.$(OBJEXT)
+am_lib529_OBJECTS = lib529-lib525.$(OBJEXT) $(am__objects_267) \
+       $(am__objects_268) $(am__objects_269) $(am__objects_270)
 lib529_OBJECTS = $(am_lib529_OBJECTS)
 lib529_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_254 = lib530-first.$(OBJEXT)
-am__objects_255 = lib530-testutil.$(OBJEXT)
-am__objects_256 = ../../lib/lib530-warnless.$(OBJEXT)
-am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_254) \
-       $(am__objects_255) $(am__objects_256)
+am__objects_271 = ../../lib/lib530-timediff.$(OBJEXT) \
+       lib530-first.$(OBJEXT)
+am__objects_272 = lib530-testutil.$(OBJEXT)
+am__objects_273 = ../../lib/lib530-warnless.$(OBJEXT)
+am_lib530_OBJECTS = lib530-lib530.$(OBJEXT) $(am__objects_271) \
+       $(am__objects_272) $(am__objects_273)
 lib530_OBJECTS = $(am_lib530_OBJECTS)
 lib530_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_257 = lib532-first.$(OBJEXT)
-am__objects_258 = lib532-testutil.$(OBJEXT)
-am__objects_259 = ../../lib/lib532-warnless.$(OBJEXT)
-am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_257) \
-       $(am__objects_258) $(am__objects_259)
+am__objects_274 = ../../lib/lib532-timediff.$(OBJEXT) \
+       lib532-first.$(OBJEXT)
+am__objects_275 = lib532-testutil.$(OBJEXT)
+am__objects_276 = ../../lib/lib532-warnless.$(OBJEXT)
+am_lib532_OBJECTS = lib532-lib526.$(OBJEXT) $(am__objects_274) \
+       $(am__objects_275) $(am__objects_276)
 lib532_OBJECTS = $(am_lib532_OBJECTS)
 lib532_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_260 = lib533-first.$(OBJEXT)
-am__objects_261 = lib533-testutil.$(OBJEXT)
-am__objects_262 = ../../lib/lib533-warnless.$(OBJEXT)
-am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_260) \
-       $(am__objects_261) $(am__objects_262)
+am__objects_277 = ../../lib/lib533-timediff.$(OBJEXT) \
+       lib533-first.$(OBJEXT)
+am__objects_278 = lib533-testutil.$(OBJEXT)
+am__objects_279 = ../../lib/lib533-warnless.$(OBJEXT)
+am_lib533_OBJECTS = lib533-lib533.$(OBJEXT) $(am__objects_277) \
+       $(am__objects_278) $(am__objects_279)
 lib533_OBJECTS = $(am_lib533_OBJECTS)
 lib533_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_263 = lib537-first.$(OBJEXT)
-am__objects_264 = ../../lib/lib537-warnless.$(OBJEXT)
-am__objects_265 = ../../lib/lib537-curl_multibyte.$(OBJEXT)
-am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_263) \
-       $(am__objects_264) $(am__objects_265)
+am__objects_280 = ../../lib/lib537-timediff.$(OBJEXT) \
+       lib537-first.$(OBJEXT)
+am__objects_281 = ../../lib/lib537-warnless.$(OBJEXT)
+am__objects_282 = ../../lib/lib537-curl_multibyte.$(OBJEXT)
+am_lib537_OBJECTS = lib537-lib537.$(OBJEXT) $(am__objects_280) \
+       $(am__objects_281) $(am__objects_282)
 lib537_OBJECTS = $(am_lib537_OBJECTS)
 lib537_LDADD = $(LDADD)
 lib537_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_266 = lib539-first.$(OBJEXT)
-am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_266)
+am__objects_283 = ../../lib/lib539-timediff.$(OBJEXT) \
+       lib539-first.$(OBJEXT)
+am_lib539_OBJECTS = lib539-lib539.$(OBJEXT) $(am__objects_283)
 lib539_OBJECTS = $(am_lib539_OBJECTS)
 lib539_LDADD = $(LDADD)
 lib539_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_267 = lib540-first.$(OBJEXT)
-am__objects_268 = lib540-testutil.$(OBJEXT)
-am__objects_269 = ../../lib/lib540-warnless.$(OBJEXT)
-am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_267) \
-       $(am__objects_268) $(am__objects_269)
+am__objects_284 = ../../lib/lib540-timediff.$(OBJEXT) \
+       lib540-first.$(OBJEXT)
+am__objects_285 = lib540-testutil.$(OBJEXT)
+am__objects_286 = ../../lib/lib540-warnless.$(OBJEXT)
+am_lib540_OBJECTS = lib540-lib540.$(OBJEXT) $(am__objects_284) \
+       $(am__objects_285) $(am__objects_286)
 lib540_OBJECTS = $(am_lib540_OBJECTS)
 lib540_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_270 = lib541-first.$(OBJEXT)
-am__objects_271 = ../../lib/lib541-curl_multibyte.$(OBJEXT)
-am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_270) \
-       $(am__objects_271)
+am__objects_287 = ../../lib/lib541-timediff.$(OBJEXT) \
+       lib541-first.$(OBJEXT)
+am__objects_288 = ../../lib/lib541-curl_multibyte.$(OBJEXT)
+am_lib541_OBJECTS = lib541-lib541.$(OBJEXT) $(am__objects_287) \
+       $(am__objects_288)
 lib541_OBJECTS = $(am_lib541_OBJECTS)
 lib541_LDADD = $(LDADD)
 lib541_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_272 = lib542-first.$(OBJEXT)
-am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_272)
+am__objects_289 = ../../lib/lib542-timediff.$(OBJEXT) \
+       lib542-first.$(OBJEXT)
+am_lib542_OBJECTS = lib542-lib542.$(OBJEXT) $(am__objects_289)
 lib542_OBJECTS = $(am_lib542_OBJECTS)
 lib542_LDADD = $(LDADD)
 lib542_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_273 = lib543-first.$(OBJEXT)
-am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_273)
+am__objects_290 = ../../lib/lib543-timediff.$(OBJEXT) \
+       lib543-first.$(OBJEXT)
+am_lib543_OBJECTS = lib543-lib543.$(OBJEXT) $(am__objects_290)
 lib543_OBJECTS = $(am_lib543_OBJECTS)
 lib543_LDADD = $(LDADD)
 lib543_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_274 = lib544-first.$(OBJEXT)
-am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_274)
+am__objects_291 = ../../lib/lib544-timediff.$(OBJEXT) \
+       lib544-first.$(OBJEXT)
+am_lib544_OBJECTS = lib544-lib544.$(OBJEXT) $(am__objects_291)
 lib544_OBJECTS = $(am_lib544_OBJECTS)
 lib544_LDADD = $(LDADD)
 lib544_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_275 = lib545-first.$(OBJEXT)
-am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_275)
+am__objects_292 = ../../lib/lib545-timediff.$(OBJEXT) \
+       lib545-first.$(OBJEXT)
+am_lib545_OBJECTS = lib545-lib544.$(OBJEXT) $(am__objects_292)
 lib545_OBJECTS = $(am_lib545_OBJECTS)
 lib545_LDADD = $(LDADD)
 lib545_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_276 = lib547-first.$(OBJEXT)
-am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_276)
+am__objects_293 = ../../lib/lib547-timediff.$(OBJEXT) \
+       lib547-first.$(OBJEXT)
+am_lib547_OBJECTS = lib547-lib547.$(OBJEXT) $(am__objects_293)
 lib547_OBJECTS = $(am_lib547_OBJECTS)
 lib547_LDADD = $(LDADD)
 lib547_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_277 = lib548-first.$(OBJEXT)
-am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_277)
+am__objects_294 = ../../lib/lib548-timediff.$(OBJEXT) \
+       lib548-first.$(OBJEXT)
+am_lib548_OBJECTS = lib548-lib547.$(OBJEXT) $(am__objects_294)
 lib548_OBJECTS = $(am_lib548_OBJECTS)
 lib548_LDADD = $(LDADD)
 lib548_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_278 = lib549-first.$(OBJEXT)
-am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_278)
+am__objects_295 = ../../lib/lib549-timediff.$(OBJEXT) \
+       lib549-first.$(OBJEXT)
+am_lib549_OBJECTS = lib549-lib549.$(OBJEXT) $(am__objects_295)
 lib549_OBJECTS = $(am_lib549_OBJECTS)
 lib549_LDADD = $(LDADD)
 lib549_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_279 = lib552-first.$(OBJEXT)
-am__objects_280 = ../../lib/lib552-warnless.$(OBJEXT)
-am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_279) \
-       $(am__objects_280)
+am__objects_296 = ../../lib/lib552-timediff.$(OBJEXT) \
+       lib552-first.$(OBJEXT)
+am__objects_297 = ../../lib/lib552-warnless.$(OBJEXT)
+am_lib552_OBJECTS = lib552-lib552.$(OBJEXT) $(am__objects_296) \
+       $(am__objects_297)
 lib552_OBJECTS = $(am_lib552_OBJECTS)
 lib552_LDADD = $(LDADD)
 lib552_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_281 = lib553-first.$(OBJEXT)
-am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_281)
+am__objects_298 = ../../lib/lib553-timediff.$(OBJEXT) \
+       lib553-first.$(OBJEXT)
+am_lib553_OBJECTS = lib553-lib553.$(OBJEXT) $(am__objects_298)
 lib553_OBJECTS = $(am_lib553_OBJECTS)
 lib553_LDADD = $(LDADD)
 lib553_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_282 = lib554-first.$(OBJEXT)
-am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_282)
+am__objects_299 = ../../lib/lib554-timediff.$(OBJEXT) \
+       lib554-first.$(OBJEXT)
+am_lib554_OBJECTS = lib554-lib554.$(OBJEXT) $(am__objects_299)
 lib554_OBJECTS = $(am_lib554_OBJECTS)
 lib554_LDADD = $(LDADD)
 lib554_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_283 = lib555-first.$(OBJEXT)
-am__objects_284 = lib555-testutil.$(OBJEXT)
-am__objects_285 = ../../lib/lib555-warnless.$(OBJEXT)
-am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_283) \
-       $(am__objects_284) $(am__objects_285)
+am__objects_300 = ../../lib/lib555-timediff.$(OBJEXT) \
+       lib555-first.$(OBJEXT)
+am__objects_301 = lib555-testutil.$(OBJEXT)
+am__objects_302 = ../../lib/lib555-warnless.$(OBJEXT)
+am_lib555_OBJECTS = lib555-lib555.$(OBJEXT) $(am__objects_300) \
+       $(am__objects_301) $(am__objects_302)
 lib555_OBJECTS = $(am_lib555_OBJECTS)
 lib555_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_286 = lib556-first.$(OBJEXT)
-am__objects_287 = ../../lib/lib556-warnless.$(OBJEXT)
-am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_286) \
-       $(am__objects_287)
+am__objects_303 = ../../lib/lib556-timediff.$(OBJEXT) \
+       lib556-first.$(OBJEXT)
+am__objects_304 = ../../lib/lib556-warnless.$(OBJEXT)
+am_lib556_OBJECTS = lib556-lib556.$(OBJEXT) $(am__objects_303) \
+       $(am__objects_304)
 lib556_OBJECTS = $(am_lib556_OBJECTS)
 lib556_LDADD = $(LDADD)
 lib556_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_288 = lib557-first.$(OBJEXT)
-am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_288)
+am__objects_305 = ../../lib/lib557-timediff.$(OBJEXT) \
+       lib557-first.$(OBJEXT)
+am_lib557_OBJECTS = lib557-lib557.$(OBJEXT) $(am__objects_305)
 lib557_OBJECTS = $(am_lib557_OBJECTS)
 lib557_LDADD = $(LDADD)
 lib557_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_289 = lib558-first.$(OBJEXT)
-am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_289)
+am__objects_306 = ../../lib/lib558-timediff.$(OBJEXT) \
+       lib558-first.$(OBJEXT)
+am_lib558_OBJECTS = lib558-lib558.$(OBJEXT) $(am__objects_306)
 lib558_OBJECTS = $(am_lib558_OBJECTS)
 lib558_LDADD = $(LDADD)
 lib558_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_290 = lib559-first.$(OBJEXT)
-am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_290)
+am__objects_307 = ../../lib/lib559-timediff.$(OBJEXT) \
+       lib559-first.$(OBJEXT)
+am_lib559_OBJECTS = lib559-lib559.$(OBJEXT) $(am__objects_307)
 lib559_OBJECTS = $(am_lib559_OBJECTS)
 lib559_LDADD = $(LDADD)
 lib559_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_291 = lib560-first.$(OBJEXT)
-am__objects_292 = lib560-testutil.$(OBJEXT)
-am__objects_293 = ../../lib/lib560-warnless.$(OBJEXT)
-am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_291) \
-       $(am__objects_292) $(am__objects_293)
+am__objects_308 = ../../lib/lib560-timediff.$(OBJEXT) \
+       lib560-first.$(OBJEXT)
+am__objects_309 = lib560-testutil.$(OBJEXT)
+am__objects_310 = ../../lib/lib560-warnless.$(OBJEXT)
+am_lib560_OBJECTS = lib560-lib560.$(OBJEXT) $(am__objects_308) \
+       $(am__objects_309) $(am__objects_310)
 lib560_OBJECTS = $(am_lib560_OBJECTS)
 lib560_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_294 = lib562-first.$(OBJEXT)
-am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_294)
+am__objects_311 = ../../lib/lib562-timediff.$(OBJEXT) \
+       lib562-first.$(OBJEXT)
+am_lib562_OBJECTS = lib562-lib562.$(OBJEXT) $(am__objects_311)
 lib562_OBJECTS = $(am_lib562_OBJECTS)
 lib562_LDADD = $(LDADD)
 lib562_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_295 = lib564-first.$(OBJEXT)
-am__objects_296 = lib564-testutil.$(OBJEXT)
-am__objects_297 = ../../lib/lib564-warnless.$(OBJEXT)
-am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_295) \
-       $(am__objects_296) $(am__objects_297)
+am__objects_312 = ../../lib/lib564-timediff.$(OBJEXT) \
+       lib564-first.$(OBJEXT)
+am__objects_313 = lib564-testutil.$(OBJEXT)
+am__objects_314 = ../../lib/lib564-warnless.$(OBJEXT)
+am_lib564_OBJECTS = lib564-lib564.$(OBJEXT) $(am__objects_312) \
+       $(am__objects_313) $(am__objects_314)
 lib564_OBJECTS = $(am_lib564_OBJECTS)
 lib564_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_298 = lib565-first.$(OBJEXT)
-am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_298)
+am__objects_315 = ../../lib/lib565-timediff.$(OBJEXT) \
+       lib565-first.$(OBJEXT)
+am_lib565_OBJECTS = lib565-lib510.$(OBJEXT) $(am__objects_315)
 lib565_OBJECTS = $(am_lib565_OBJECTS)
 lib565_LDADD = $(LDADD)
 lib565_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_299 = lib566-first.$(OBJEXT)
-am__objects_300 = ../../lib/lib566-curl_multibyte.$(OBJEXT)
-am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_299) \
-       $(am__objects_300)
+am__objects_316 = ../../lib/lib566-timediff.$(OBJEXT) \
+       lib566-first.$(OBJEXT)
+am__objects_317 = ../../lib/lib566-curl_multibyte.$(OBJEXT)
+am_lib566_OBJECTS = lib566-lib566.$(OBJEXT) $(am__objects_316) \
+       $(am__objects_317)
 lib566_OBJECTS = $(am_lib566_OBJECTS)
 lib566_LDADD = $(LDADD)
 lib566_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_301 = lib567-first.$(OBJEXT)
-am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_301)
+am__objects_318 = ../../lib/lib567-timediff.$(OBJEXT) \
+       lib567-first.$(OBJEXT)
+am_lib567_OBJECTS = lib567-lib567.$(OBJEXT) $(am__objects_318)
 lib567_OBJECTS = $(am_lib567_OBJECTS)
 lib567_LDADD = $(LDADD)
 lib567_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_302 = lib568-first.$(OBJEXT)
-am__objects_303 = ../../lib/lib568-curl_multibyte.$(OBJEXT)
-am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_302) \
-       $(am__objects_303)
+am__objects_319 = ../../lib/lib568-timediff.$(OBJEXT) \
+       lib568-first.$(OBJEXT)
+am__objects_320 = ../../lib/lib568-curl_multibyte.$(OBJEXT)
+am_lib568_OBJECTS = lib568-lib568.$(OBJEXT) $(am__objects_319) \
+       $(am__objects_320)
 lib568_OBJECTS = $(am_lib568_OBJECTS)
 lib568_LDADD = $(LDADD)
 lib568_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_304 = lib569-first.$(OBJEXT)
-am__objects_305 = ../../lib/lib569-curl_multibyte.$(OBJEXT)
-am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_304) \
-       $(am__objects_305)
+am__objects_321 = ../../lib/lib569-timediff.$(OBJEXT) \
+       lib569-first.$(OBJEXT)
+am__objects_322 = ../../lib/lib569-curl_multibyte.$(OBJEXT)
+am_lib569_OBJECTS = lib569-lib569.$(OBJEXT) $(am__objects_321) \
+       $(am__objects_322)
 lib569_OBJECTS = $(am_lib569_OBJECTS)
 lib569_LDADD = $(LDADD)
 lib569_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_306 = lib570-first.$(OBJEXT)
-am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_306)
+am__objects_323 = ../../lib/lib570-timediff.$(OBJEXT) \
+       lib570-first.$(OBJEXT)
+am_lib570_OBJECTS = lib570-lib570.$(OBJEXT) $(am__objects_323)
 lib570_OBJECTS = $(am_lib570_OBJECTS)
 lib570_LDADD = $(LDADD)
 lib570_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_307 = lib571-first.$(OBJEXT)
-am__objects_308 = ../../lib/lib571-warnless.$(OBJEXT)
-am__objects_309 = ../../lib/lib571-curl_multibyte.$(OBJEXT)
-am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_307) \
-       $(am__objects_308) $(am__objects_309)
+am__objects_324 = ../../lib/lib571-timediff.$(OBJEXT) \
+       lib571-first.$(OBJEXT)
+am__objects_325 = ../../lib/lib571-warnless.$(OBJEXT)
+am__objects_326 = ../../lib/lib571-curl_multibyte.$(OBJEXT)
+am_lib571_OBJECTS = lib571-lib571.$(OBJEXT) $(am__objects_324) \
+       $(am__objects_325) $(am__objects_326)
 lib571_OBJECTS = $(am_lib571_OBJECTS)
 lib571_LDADD = $(LDADD)
 lib571_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_310 = lib572-first.$(OBJEXT)
-am__objects_311 = ../../lib/lib572-curl_multibyte.$(OBJEXT)
-am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_310) \
-       $(am__objects_311)
+am__objects_327 = ../../lib/lib572-timediff.$(OBJEXT) \
+       lib572-first.$(OBJEXT)
+am__objects_328 = ../../lib/lib572-curl_multibyte.$(OBJEXT)
+am_lib572_OBJECTS = lib572-lib572.$(OBJEXT) $(am__objects_327) \
+       $(am__objects_328)
 lib572_OBJECTS = $(am_lib572_OBJECTS)
 lib572_LDADD = $(LDADD)
 lib572_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_312 = lib573-first.$(OBJEXT)
-am__objects_313 = lib573-testutil.$(OBJEXT)
-am__objects_314 = ../../lib/lib573-warnless.$(OBJEXT)
-am__objects_315 = lib573-testtrace.$(OBJEXT)
-am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_312) \
-       $(am__objects_313) $(am__objects_314) $(am__objects_315)
+am__objects_329 = ../../lib/lib573-timediff.$(OBJEXT) \
+       lib573-first.$(OBJEXT)
+am__objects_330 = lib573-testutil.$(OBJEXT)
+am__objects_331 = ../../lib/lib573-warnless.$(OBJEXT)
+am__objects_332 = lib573-testtrace.$(OBJEXT)
+am_lib573_OBJECTS = lib573-lib573.$(OBJEXT) $(am__objects_329) \
+       $(am__objects_330) $(am__objects_331) $(am__objects_332)
 lib573_OBJECTS = $(am_lib573_OBJECTS)
 lib573_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_316 = lib574-first.$(OBJEXT)
-am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_316)
+am__objects_333 = ../../lib/lib574-timediff.$(OBJEXT) \
+       lib574-first.$(OBJEXT)
+am_lib574_OBJECTS = lib574-lib574.$(OBJEXT) $(am__objects_333)
 lib574_OBJECTS = $(am_lib574_OBJECTS)
 lib574_LDADD = $(LDADD)
 lib574_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_317 = lib575-first.$(OBJEXT)
-am__objects_318 = lib575-testutil.$(OBJEXT)
-am__objects_319 = ../../lib/lib575-warnless.$(OBJEXT)
-am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_317) \
-       $(am__objects_318) $(am__objects_319)
+am__objects_334 = ../../lib/lib575-timediff.$(OBJEXT) \
+       lib575-first.$(OBJEXT)
+am__objects_335 = lib575-testutil.$(OBJEXT)
+am__objects_336 = ../../lib/lib575-warnless.$(OBJEXT)
+am_lib575_OBJECTS = lib575-lib575.$(OBJEXT) $(am__objects_334) \
+       $(am__objects_335) $(am__objects_336)
 lib575_OBJECTS = $(am_lib575_OBJECTS)
 lib575_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_320 = lib576-first.$(OBJEXT)
-am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_320)
+am__objects_337 = ../../lib/lib576-timediff.$(OBJEXT) \
+       lib576-first.$(OBJEXT)
+am_lib576_OBJECTS = lib576-lib576.$(OBJEXT) $(am__objects_337)
 lib576_OBJECTS = $(am_lib576_OBJECTS)
 lib576_LDADD = $(LDADD)
 lib576_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_321 = lib578-first.$(OBJEXT)
-am__objects_322 = ../../lib/lib578-curl_multibyte.$(OBJEXT)
-am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_321) \
-       $(am__objects_322)
+am__objects_338 = ../../lib/lib578-timediff.$(OBJEXT) \
+       lib578-first.$(OBJEXT)
+am__objects_339 = ../../lib/lib578-curl_multibyte.$(OBJEXT)
+am_lib578_OBJECTS = lib578-lib578.$(OBJEXT) $(am__objects_338) \
+       $(am__objects_339)
 lib578_OBJECTS = $(am_lib578_OBJECTS)
 lib578_LDADD = $(LDADD)
 lib578_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_323 = lib579-first.$(OBJEXT)
-am__objects_324 = ../../lib/lib579-curl_multibyte.$(OBJEXT)
-am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_323) \
-       $(am__objects_324)
+am__objects_340 = ../../lib/lib579-timediff.$(OBJEXT) \
+       lib579-first.$(OBJEXT)
+am__objects_341 = ../../lib/lib579-curl_multibyte.$(OBJEXT)
+am_lib579_OBJECTS = lib579-lib579.$(OBJEXT) $(am__objects_340) \
+       $(am__objects_341)
 lib579_OBJECTS = $(am_lib579_OBJECTS)
 lib579_LDADD = $(LDADD)
 lib579_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_325 = lib582-first.$(OBJEXT)
-am__objects_326 = lib582-testutil.$(OBJEXT)
-am__objects_327 = ../../lib/lib582-warnless.$(OBJEXT)
-am__objects_328 = ../../lib/lib582-curl_multibyte.$(OBJEXT)
-am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_325) \
-       $(am__objects_326) $(am__objects_327) $(am__objects_328)
+am__objects_342 = ../../lib/lib582-timediff.$(OBJEXT) \
+       lib582-first.$(OBJEXT)
+am__objects_343 = lib582-testutil.$(OBJEXT)
+am__objects_344 = ../../lib/lib582-warnless.$(OBJEXT)
+am__objects_345 = ../../lib/lib582-curl_multibyte.$(OBJEXT)
+am_lib582_OBJECTS = lib582-lib582.$(OBJEXT) $(am__objects_342) \
+       $(am__objects_343) $(am__objects_344) $(am__objects_345)
 lib582_OBJECTS = $(am_lib582_OBJECTS)
 lib582_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_329 = lib583-first.$(OBJEXT)
-am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_329)
+am__objects_346 = ../../lib/lib583-timediff.$(OBJEXT) \
+       lib583-first.$(OBJEXT)
+am_lib583_OBJECTS = lib583-lib583.$(OBJEXT) $(am__objects_346)
 lib583_OBJECTS = $(am_lib583_OBJECTS)
 lib583_LDADD = $(LDADD)
 lib583_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_330 = lib584-first.$(OBJEXT)
-am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_330)
+am__objects_347 = ../../lib/lib584-timediff.$(OBJEXT) \
+       lib584-first.$(OBJEXT)
+am_lib584_OBJECTS = lib584-lib589.$(OBJEXT) $(am__objects_347)
 lib584_OBJECTS = $(am_lib584_OBJECTS)
 lib584_LDADD = $(LDADD)
 lib584_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_331 = lib585-first.$(OBJEXT)
-am__objects_332 = lib585-testutil.$(OBJEXT)
-am__objects_333 = lib585-testtrace.$(OBJEXT)
-am__objects_334 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
-am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_331) \
-       $(am__objects_332) $(am__objects_333) $(am__objects_334)
+am__objects_348 = ../../lib/lib585-timediff.$(OBJEXT) \
+       lib585-first.$(OBJEXT)
+am__objects_349 = lib585-testutil.$(OBJEXT)
+am__objects_350 = lib585-testtrace.$(OBJEXT)
+am__objects_351 = ../../lib/lib585-curl_multibyte.$(OBJEXT)
+am_lib585_OBJECTS = lib585-lib500.$(OBJEXT) $(am__objects_348) \
+       $(am__objects_349) $(am__objects_350) $(am__objects_351)
 lib585_OBJECTS = $(am_lib585_OBJECTS)
 lib585_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_335 = lib586-first.$(OBJEXT)
-am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_335)
+am__objects_352 = ../../lib/lib586-timediff.$(OBJEXT) \
+       lib586-first.$(OBJEXT)
+am_lib586_OBJECTS = lib586-lib586.$(OBJEXT) $(am__objects_352)
 lib586_OBJECTS = $(am_lib586_OBJECTS)
 lib586_LDADD = $(LDADD)
 lib586_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_336 = lib587-first.$(OBJEXT)
-am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_336)
+am__objects_353 = ../../lib/lib587-timediff.$(OBJEXT) \
+       lib587-first.$(OBJEXT)
+am_lib587_OBJECTS = lib587-lib554.$(OBJEXT) $(am__objects_353)
 lib587_OBJECTS = $(am_lib587_OBJECTS)
 lib587_LDADD = $(LDADD)
 lib587_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_337 = lib589-first.$(OBJEXT)
-am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_337)
+am__objects_354 = ../../lib/lib589-timediff.$(OBJEXT) \
+       lib589-first.$(OBJEXT)
+am_lib589_OBJECTS = lib589-lib589.$(OBJEXT) $(am__objects_354)
 lib589_OBJECTS = $(am_lib589_OBJECTS)
 lib589_LDADD = $(LDADD)
 lib589_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_338 = lib590-first.$(OBJEXT)
-am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_338)
+am__objects_355 = ../../lib/lib590-timediff.$(OBJEXT) \
+       lib590-first.$(OBJEXT)
+am_lib590_OBJECTS = lib590-lib590.$(OBJEXT) $(am__objects_355)
 lib590_OBJECTS = $(am_lib590_OBJECTS)
 lib590_LDADD = $(LDADD)
 lib590_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_339 = lib591-first.$(OBJEXT)
-am__objects_340 = lib591-testutil.$(OBJEXT)
-am__objects_341 = ../../lib/lib591-warnless.$(OBJEXT)
-am__objects_342 = ../../lib/lib591-curl_multibyte.$(OBJEXT)
-am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_339) \
-       $(am__objects_340) $(am__objects_341) $(am__objects_342)
+am__objects_356 = ../../lib/lib591-timediff.$(OBJEXT) \
+       lib591-first.$(OBJEXT)
+am__objects_357 = lib591-testutil.$(OBJEXT)
+am__objects_358 = ../../lib/lib591-warnless.$(OBJEXT)
+am__objects_359 = ../../lib/lib591-curl_multibyte.$(OBJEXT)
+am_lib591_OBJECTS = lib591-lib591.$(OBJEXT) $(am__objects_356) \
+       $(am__objects_357) $(am__objects_358) $(am__objects_359)
 lib591_OBJECTS = $(am_lib591_OBJECTS)
 lib591_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_343 = lib597-first.$(OBJEXT)
-am__objects_344 = lib597-testutil.$(OBJEXT)
-am__objects_345 = ../../lib/lib597-warnless.$(OBJEXT)
-am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_343) \
-       $(am__objects_344) $(am__objects_345)
+am__objects_360 = ../../lib/lib597-timediff.$(OBJEXT) \
+       lib597-first.$(OBJEXT)
+am__objects_361 = lib597-testutil.$(OBJEXT)
+am__objects_362 = ../../lib/lib597-warnless.$(OBJEXT)
+am_lib597_OBJECTS = lib597-lib597.$(OBJEXT) $(am__objects_360) \
+       $(am__objects_361) $(am__objects_362)
 lib597_OBJECTS = $(am_lib597_OBJECTS)
 lib597_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_346 = lib598-first.$(OBJEXT)
-am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_346)
+am__objects_363 = ../../lib/lib598-timediff.$(OBJEXT) \
+       lib598-first.$(OBJEXT)
+am_lib598_OBJECTS = lib598-lib598.$(OBJEXT) $(am__objects_363)
 lib598_OBJECTS = $(am_lib598_OBJECTS)
 lib598_LDADD = $(LDADD)
 lib598_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_347 = lib599-first.$(OBJEXT)
-am__objects_348 = ../../lib/lib599-curl_multibyte.$(OBJEXT)
-am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_347) \
-       $(am__objects_348)
+am__objects_364 = ../../lib/lib599-timediff.$(OBJEXT) \
+       lib599-first.$(OBJEXT)
+am__objects_365 = ../../lib/lib599-curl_multibyte.$(OBJEXT)
+am_lib599_OBJECTS = lib599-lib599.$(OBJEXT) $(am__objects_364) \
+       $(am__objects_365)
 lib599_OBJECTS = $(am_lib599_OBJECTS)
 lib599_LDADD = $(LDADD)
 lib599_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_349 = lib643-first.$(OBJEXT)
-am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_349)
+am__objects_366 = ../../lib/lib643-timediff.$(OBJEXT) \
+       lib643-first.$(OBJEXT)
+am_lib643_OBJECTS = lib643-lib643.$(OBJEXT) $(am__objects_366)
 lib643_OBJECTS = $(am_lib643_OBJECTS)
 lib643_LDADD = $(LDADD)
 lib643_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_350 = lib645-first.$(OBJEXT)
-am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_350)
+am__objects_367 = ../../lib/lib645-timediff.$(OBJEXT) \
+       lib645-first.$(OBJEXT)
+am_lib645_OBJECTS = lib645-lib643.$(OBJEXT) $(am__objects_367)
 lib645_OBJECTS = $(am_lib645_OBJECTS)
 lib645_LDADD = $(LDADD)
 lib645_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_351 = lib650-first.$(OBJEXT)
-am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_351)
+am__objects_368 = ../../lib/lib650-timediff.$(OBJEXT) \
+       lib650-first.$(OBJEXT)
+am_lib650_OBJECTS = lib650-lib650.$(OBJEXT) $(am__objects_368)
 lib650_OBJECTS = $(am_lib650_OBJECTS)
 lib650_LDADD = $(LDADD)
 lib650_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_352 = lib651-first.$(OBJEXT)
-am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_352)
+am__objects_369 = ../../lib/lib651-timediff.$(OBJEXT) \
+       lib651-first.$(OBJEXT)
+am_lib651_OBJECTS = lib651-lib651.$(OBJEXT) $(am__objects_369)
 lib651_OBJECTS = $(am_lib651_OBJECTS)
 lib651_LDADD = $(LDADD)
 lib651_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_353 = lib652-first.$(OBJEXT)
-am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_353)
+am__objects_370 = ../../lib/lib652-timediff.$(OBJEXT) \
+       lib652-first.$(OBJEXT)
+am_lib652_OBJECTS = lib652-lib652.$(OBJEXT) $(am__objects_370)
 lib652_OBJECTS = $(am_lib652_OBJECTS)
 lib652_LDADD = $(LDADD)
 lib652_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_354 = lib653-first.$(OBJEXT)
-am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_354)
+am__objects_371 = ../../lib/lib653-timediff.$(OBJEXT) \
+       lib653-first.$(OBJEXT)
+am_lib653_OBJECTS = lib653-lib653.$(OBJEXT) $(am__objects_371)
 lib653_OBJECTS = $(am_lib653_OBJECTS)
 lib653_LDADD = $(LDADD)
 lib653_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_355 = lib654-first.$(OBJEXT)
-am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_355)
+am__objects_372 = ../../lib/lib654-timediff.$(OBJEXT) \
+       lib654-first.$(OBJEXT)
+am_lib654_OBJECTS = lib654-lib654.$(OBJEXT) $(am__objects_372)
 lib654_OBJECTS = $(am_lib654_OBJECTS)
 lib654_LDADD = $(LDADD)
 lib654_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_356 = lib655-first.$(OBJEXT)
-am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_356)
+am__objects_373 = ../../lib/lib655-timediff.$(OBJEXT) \
+       lib655-first.$(OBJEXT)
+am_lib655_OBJECTS = lib655-lib655.$(OBJEXT) $(am__objects_373)
 lib655_OBJECTS = $(am_lib655_OBJECTS)
 lib655_LDADD = $(LDADD)
 lib655_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_357 = lib658-first.$(OBJEXT)
-am__objects_358 = lib658-testutil.$(OBJEXT)
-am__objects_359 = ../../lib/lib658-warnless.$(OBJEXT)
-am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_357) \
-       $(am__objects_358) $(am__objects_359)
+am__objects_374 = ../../lib/lib658-timediff.$(OBJEXT) \
+       lib658-first.$(OBJEXT)
+am__objects_375 = lib658-testutil.$(OBJEXT)
+am__objects_376 = ../../lib/lib658-warnless.$(OBJEXT)
+am_lib658_OBJECTS = lib658-lib658.$(OBJEXT) $(am__objects_374) \
+       $(am__objects_375) $(am__objects_376)
 lib658_OBJECTS = $(am_lib658_OBJECTS)
 lib658_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_360 = lib659-first.$(OBJEXT)
-am__objects_361 = lib659-testutil.$(OBJEXT)
-am__objects_362 = ../../lib/lib659-warnless.$(OBJEXT)
-am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_360) \
-       $(am__objects_361) $(am__objects_362)
+am__objects_377 = ../../lib/lib659-timediff.$(OBJEXT) \
+       lib659-first.$(OBJEXT)
+am__objects_378 = lib659-testutil.$(OBJEXT)
+am__objects_379 = ../../lib/lib659-warnless.$(OBJEXT)
+am_lib659_OBJECTS = lib659-lib659.$(OBJEXT) $(am__objects_377) \
+       $(am__objects_378) $(am__objects_379)
 lib659_OBJECTS = $(am_lib659_OBJECTS)
 lib659_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_363 = lib661-first.$(OBJEXT)
-am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_363)
+am__objects_380 = ../../lib/lib661-timediff.$(OBJEXT) \
+       lib661-first.$(OBJEXT)
+am_lib661_OBJECTS = lib661-lib661.$(OBJEXT) $(am__objects_380)
 lib661_OBJECTS = $(am_lib661_OBJECTS)
 lib661_LDADD = $(LDADD)
 lib661_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_364 = lib666-first.$(OBJEXT)
-am_lib666_OBJECTS = lib666-lib666.$(OBJEXT) $(am__objects_364)
+am__objects_381 = ../../lib/lib666-timediff.$(OBJEXT) \
+       lib666-first.$(OBJEXT)
+am_lib666_OBJECTS = lib666-lib666.$(OBJEXT) $(am__objects_381)
 lib666_OBJECTS = $(am_lib666_OBJECTS)
 lib666_LDADD = $(LDADD)
 lib666_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_365 = lib667-first.$(OBJEXT)
-am__objects_366 = lib667-testutil.$(OBJEXT)
-am__objects_367 = ../../lib/lib667-warnless.$(OBJEXT)
-am_lib667_OBJECTS = lib667-lib667.$(OBJEXT) $(am__objects_365) \
-       $(am__objects_366) $(am__objects_367)
+am__objects_382 = ../../lib/lib667-timediff.$(OBJEXT) \
+       lib667-first.$(OBJEXT)
+am__objects_383 = lib667-testutil.$(OBJEXT)
+am__objects_384 = ../../lib/lib667-warnless.$(OBJEXT)
+am_lib667_OBJECTS = lib667-lib667.$(OBJEXT) $(am__objects_382) \
+       $(am__objects_383) $(am__objects_384)
 lib667_OBJECTS = $(am_lib667_OBJECTS)
 lib667_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_368 = lib668-first.$(OBJEXT)
-am__objects_369 = lib668-testutil.$(OBJEXT)
-am__objects_370 = ../../lib/lib668-warnless.$(OBJEXT)
-am_lib668_OBJECTS = lib668-lib668.$(OBJEXT) $(am__objects_368) \
-       $(am__objects_369) $(am__objects_370)
+am__objects_385 = ../../lib/lib668-timediff.$(OBJEXT) \
+       lib668-first.$(OBJEXT)
+am__objects_386 = lib668-testutil.$(OBJEXT)
+am__objects_387 = ../../lib/lib668-warnless.$(OBJEXT)
+am_lib668_OBJECTS = lib668-lib668.$(OBJEXT) $(am__objects_385) \
+       $(am__objects_386) $(am__objects_387)
 lib668_OBJECTS = $(am_lib668_OBJECTS)
 lib668_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_371 = lib670-first.$(OBJEXT)
-am__objects_372 = lib670-testutil.$(OBJEXT)
-am__objects_373 = ../../lib/lib670-warnless.$(OBJEXT)
-am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_371) \
-       $(am__objects_372) $(am__objects_373)
+am__objects_388 = ../../lib/lib670-timediff.$(OBJEXT) \
+       lib670-first.$(OBJEXT)
+am__objects_389 = lib670-testutil.$(OBJEXT)
+am__objects_390 = ../../lib/lib670-warnless.$(OBJEXT)
+am_lib670_OBJECTS = lib670-lib670.$(OBJEXT) $(am__objects_388) \
+       $(am__objects_389) $(am__objects_390)
 lib670_OBJECTS = $(am_lib670_OBJECTS)
 lib670_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_374 = lib671-first.$(OBJEXT)
-am__objects_375 = lib671-testutil.$(OBJEXT)
-am__objects_376 = ../../lib/lib671-warnless.$(OBJEXT)
-am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_374) \
-       $(am__objects_375) $(am__objects_376)
+am__objects_391 = ../../lib/lib671-timediff.$(OBJEXT) \
+       lib671-first.$(OBJEXT)
+am__objects_392 = lib671-testutil.$(OBJEXT)
+am__objects_393 = ../../lib/lib671-warnless.$(OBJEXT)
+am_lib671_OBJECTS = lib671-lib670.$(OBJEXT) $(am__objects_391) \
+       $(am__objects_392) $(am__objects_393)
 lib671_OBJECTS = $(am_lib671_OBJECTS)
 lib671_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_377 = lib672-first.$(OBJEXT)
-am__objects_378 = lib672-testutil.$(OBJEXT)
-am__objects_379 = ../../lib/lib672-warnless.$(OBJEXT)
-am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_377) \
-       $(am__objects_378) $(am__objects_379)
+am__objects_394 = ../../lib/lib672-timediff.$(OBJEXT) \
+       lib672-first.$(OBJEXT)
+am__objects_395 = lib672-testutil.$(OBJEXT)
+am__objects_396 = ../../lib/lib672-warnless.$(OBJEXT)
+am_lib672_OBJECTS = lib672-lib670.$(OBJEXT) $(am__objects_394) \
+       $(am__objects_395) $(am__objects_396)
 lib672_OBJECTS = $(am_lib672_OBJECTS)
 lib672_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_380 = lib673-first.$(OBJEXT)
-am__objects_381 = lib673-testutil.$(OBJEXT)
-am__objects_382 = ../../lib/lib673-warnless.$(OBJEXT)
-am_lib673_OBJECTS = lib673-lib670.$(OBJEXT) $(am__objects_380) \
-       $(am__objects_381) $(am__objects_382)
+am__objects_397 = ../../lib/lib673-timediff.$(OBJEXT) \
+       lib673-first.$(OBJEXT)
+am__objects_398 = lib673-testutil.$(OBJEXT)
+am__objects_399 = ../../lib/lib673-warnless.$(OBJEXT)
+am_lib673_OBJECTS = lib673-lib670.$(OBJEXT) $(am__objects_397) \
+       $(am__objects_398) $(am__objects_399)
 lib673_OBJECTS = $(am_lib673_OBJECTS)
 lib673_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_383 = lib674-first.$(OBJEXT)
-am__objects_384 = lib674-testutil.$(OBJEXT)
-am__objects_385 = ../../lib/lib674-warnless.$(OBJEXT)
-am_lib674_OBJECTS = lib674-lib674.$(OBJEXT) $(am__objects_383) \
-       $(am__objects_384) $(am__objects_385)
+am__objects_400 = ../../lib/lib674-timediff.$(OBJEXT) \
+       lib674-first.$(OBJEXT)
+am__objects_401 = lib674-testutil.$(OBJEXT)
+am__objects_402 = ../../lib/lib674-warnless.$(OBJEXT)
+am_lib674_OBJECTS = lib674-lib674.$(OBJEXT) $(am__objects_400) \
+       $(am__objects_401) $(am__objects_402)
 lib674_OBJECTS = $(am_lib674_OBJECTS)
 lib674_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_386 = lib676-first.$(OBJEXT)
-am__objects_387 = lib676-testutil.$(OBJEXT)
-am__objects_388 = ../../lib/lib676-warnless.$(OBJEXT)
-am_lib676_OBJECTS = lib676-lib676.$(OBJEXT) $(am__objects_386) \
-       $(am__objects_387) $(am__objects_388)
+am__objects_403 = ../../lib/lib676-timediff.$(OBJEXT) \
+       lib676-first.$(OBJEXT)
+am__objects_404 = lib676-testutil.$(OBJEXT)
+am__objects_405 = ../../lib/lib676-warnless.$(OBJEXT)
+am_lib676_OBJECTS = lib676-lib676.$(OBJEXT) $(am__objects_403) \
+       $(am__objects_404) $(am__objects_405)
 lib676_OBJECTS = $(am_lib676_OBJECTS)
 lib676_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_389 = lib677-first.$(OBJEXT)
-am__objects_390 = lib677-testutil.$(OBJEXT)
-am__objects_391 = ../../lib/lib677-warnless.$(OBJEXT)
-am__objects_392 = ../../lib/lib677-curl_multibyte.$(OBJEXT)
-am_lib677_OBJECTS = lib677-lib677.$(OBJEXT) $(am__objects_389) \
-       $(am__objects_390) $(am__objects_391) $(am__objects_392)
+am__objects_406 = ../../lib/lib677-timediff.$(OBJEXT) \
+       lib677-first.$(OBJEXT)
+am__objects_407 = lib677-testutil.$(OBJEXT)
+am__objects_408 = ../../lib/lib677-warnless.$(OBJEXT)
+am__objects_409 = ../../lib/lib677-curl_multibyte.$(OBJEXT)
+am_lib677_OBJECTS = lib677-lib677.$(OBJEXT) $(am__objects_406) \
+       $(am__objects_407) $(am__objects_408) $(am__objects_409)
 lib677_OBJECTS = $(am_lib677_OBJECTS)
 lib677_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_393 = lib678-first.$(OBJEXT)
-am__objects_394 = lib678-testutil.$(OBJEXT)
-am__objects_395 = ../../lib/lib678-warnless.$(OBJEXT)
-am__objects_396 = ../../lib/lib678-curl_multibyte.$(OBJEXT)
-am_lib678_OBJECTS = lib678-lib678.$(OBJEXT) $(am__objects_393) \
-       $(am__objects_394) $(am__objects_395) $(am__objects_396)
+am__objects_410 = ../../lib/lib678-timediff.$(OBJEXT) \
+       lib678-first.$(OBJEXT)
+am__objects_411 = lib678-testutil.$(OBJEXT)
+am__objects_412 = ../../lib/lib678-warnless.$(OBJEXT)
+am__objects_413 = ../../lib/lib678-curl_multibyte.$(OBJEXT)
+am_lib678_OBJECTS = lib678-lib678.$(OBJEXT) $(am__objects_410) \
+       $(am__objects_411) $(am__objects_412) $(am__objects_413)
 lib678_OBJECTS = $(am_lib678_OBJECTS)
 lib678_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_397 = libauthretry-first.$(OBJEXT)
+am__objects_414 = ../../lib/libauthretry-timediff.$(OBJEXT) \
+       libauthretry-first.$(OBJEXT)
 am_libauthretry_OBJECTS = libauthretry-libauthretry.$(OBJEXT) \
-       $(am__objects_397)
+       $(am__objects_414)
 libauthretry_OBJECTS = $(am_libauthretry_OBJECTS)
 libauthretry_LDADD = $(LDADD)
 libauthretry_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_398 = libntlmconnect-first.$(OBJEXT)
-am__objects_399 = libntlmconnect-testutil.$(OBJEXT)
-am__objects_400 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
+am__objects_415 = ../../lib/libntlmconnect-timediff.$(OBJEXT) \
+       libntlmconnect-first.$(OBJEXT)
+am__objects_416 = libntlmconnect-testutil.$(OBJEXT)
+am__objects_417 = ../../lib/libntlmconnect-warnless.$(OBJEXT)
 am_libntlmconnect_OBJECTS = libntlmconnect-libntlmconnect.$(OBJEXT) \
-       $(am__objects_398) $(am__objects_399) $(am__objects_400)
+       $(am__objects_415) $(am__objects_416) $(am__objects_417)
 libntlmconnect_OBJECTS = $(am_libntlmconnect_OBJECTS)
 libntlmconnect_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_401 = libprereq-first.$(OBJEXT)
-am__objects_402 = libprereq-testutil.$(OBJEXT)
-am__objects_403 = ../../lib/libprereq-warnless.$(OBJEXT)
+am__objects_418 = ../../lib/libprereq-timediff.$(OBJEXT) \
+       libprereq-first.$(OBJEXT)
+am__objects_419 = libprereq-testutil.$(OBJEXT)
+am__objects_420 = ../../lib/libprereq-warnless.$(OBJEXT)
 am_libprereq_OBJECTS = libprereq-libprereq.$(OBJEXT) \
-       $(am__objects_401) $(am__objects_402) $(am__objects_403)
+       $(am__objects_418) $(am__objects_419) $(am__objects_420)
 libprereq_OBJECTS = $(am_libprereq_OBJECTS)
 libprereq_DEPENDENCIES = $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -1415,130 +1670,324 @@ am__v_at_1 =
 DEFAULT_INCLUDES = 
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__maybe_remake_depfiles = depfiles
-am__depfiles_remade =  \
-       ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po \
-       ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po \
+am__depfiles_remade = ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po \
        ../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po \
        ../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po \
        ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po \
+       ../../lib/$(DEPDIR)/lib1156-timediff.Po \
        ../../lib/$(DEPDIR)/lib1156-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1500-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1501-timediff.Po \
        ../../lib/$(DEPDIR)/lib1501-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1502-timediff.Po \
        ../../lib/$(DEPDIR)/lib1502-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1503-timediff.Po \
        ../../lib/$(DEPDIR)/lib1503-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1504-timediff.Po \
        ../../lib/$(DEPDIR)/lib1504-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1505-timediff.Po \
        ../../lib/$(DEPDIR)/lib1505-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1506-timediff.Po \
        ../../lib/$(DEPDIR)/lib1506-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1507-timediff.Po \
        ../../lib/$(DEPDIR)/lib1507-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1508-timediff.Po \
        ../../lib/$(DEPDIR)/lib1508-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1509-timediff.Po \
        ../../lib/$(DEPDIR)/lib1509-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1510-timediff.Po \
        ../../lib/$(DEPDIR)/lib1510-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1511-timediff.Po \
        ../../lib/$(DEPDIR)/lib1511-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1512-timediff.Po \
        ../../lib/$(DEPDIR)/lib1512-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1513-timediff.Po \
        ../../lib/$(DEPDIR)/lib1513-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1514-timediff.Po \
        ../../lib/$(DEPDIR)/lib1514-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1515-timediff.Po \
        ../../lib/$(DEPDIR)/lib1515-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1517-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1518-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1520-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1521-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1522-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1523-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1525-timediff.Po \
        ../../lib/$(DEPDIR)/lib1525-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1526-timediff.Po \
        ../../lib/$(DEPDIR)/lib1526-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1527-timediff.Po \
        ../../lib/$(DEPDIR)/lib1527-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1528-timediff.Po \
        ../../lib/$(DEPDIR)/lib1528-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1529-timediff.Po \
        ../../lib/$(DEPDIR)/lib1529-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1530-timediff.Po \
        ../../lib/$(DEPDIR)/lib1530-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1531-timediff.Po \
        ../../lib/$(DEPDIR)/lib1531-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1532-timediff.Po \
        ../../lib/$(DEPDIR)/lib1532-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1533-timediff.Po \
        ../../lib/$(DEPDIR)/lib1533-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1534-timediff.Po \
        ../../lib/$(DEPDIR)/lib1534-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1535-timediff.Po \
        ../../lib/$(DEPDIR)/lib1535-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1536-timediff.Po \
        ../../lib/$(DEPDIR)/lib1536-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1537-timediff.Po \
        ../../lib/$(DEPDIR)/lib1537-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1538-timediff.Po \
        ../../lib/$(DEPDIR)/lib1538-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1539-timediff.Po \
        ../../lib/$(DEPDIR)/lib1539-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1540-timediff.Po \
        ../../lib/$(DEPDIR)/lib1540-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1542-timediff.Po \
        ../../lib/$(DEPDIR)/lib1542-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1543-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1550-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1551-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1552-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1553-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1554-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1555-timediff.Po \
        ../../lib/$(DEPDIR)/lib1555-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1556-timediff.Po \
        ../../lib/$(DEPDIR)/lib1556-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1557-timediff.Po \
        ../../lib/$(DEPDIR)/lib1557-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1564-timediff.Po \
        ../../lib/$(DEPDIR)/lib1564-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1565-timediff.Po \
        ../../lib/$(DEPDIR)/lib1565-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1567-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1568-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1569-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1591-timediff.Po \
        ../../lib/$(DEPDIR)/lib1591-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1592-timediff.Po \
        ../../lib/$(DEPDIR)/lib1592-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1596-timediff.Po \
        ../../lib/$(DEPDIR)/lib1596-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1905-timediff.Po \
        ../../lib/$(DEPDIR)/lib1905-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1906-timediff.Po \
        ../../lib/$(DEPDIR)/lib1906-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1907-timediff.Po \
        ../../lib/$(DEPDIR)/lib1907-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1908-timediff.Po \
        ../../lib/$(DEPDIR)/lib1908-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1910-timediff.Po \
        ../../lib/$(DEPDIR)/lib1910-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1911-timediff.Po \
        ../../lib/$(DEPDIR)/lib1911-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1912-timediff.Po \
        ../../lib/$(DEPDIR)/lib1912-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1913-timediff.Po \
        ../../lib/$(DEPDIR)/lib1913-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1915-timediff.Po \
        ../../lib/$(DEPDIR)/lib1915-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1916-timediff.Po \
        ../../lib/$(DEPDIR)/lib1916-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1917-timediff.Po \
        ../../lib/$(DEPDIR)/lib1917-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1918-timediff.Po \
        ../../lib/$(DEPDIR)/lib1918-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1919-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1919-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1933-timediff.Po \
        ../../lib/$(DEPDIR)/lib1933-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1934-timediff.Po \
        ../../lib/$(DEPDIR)/lib1934-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1935-timediff.Po \
        ../../lib/$(DEPDIR)/lib1935-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1936-timediff.Po \
        ../../lib/$(DEPDIR)/lib1936-warnless.Po \
+       ../../lib/$(DEPDIR)/lib1937-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1938-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1939-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1940-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1945-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1946-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1947-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1948-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1955-timediff.Po \
+       ../../lib/$(DEPDIR)/lib1955-warnless.Po \
+       ../../lib/$(DEPDIR)/lib3010-timediff.Po \
        ../../lib/$(DEPDIR)/lib3010-warnless.Po \
+       ../../lib/$(DEPDIR)/lib3025-timediff.Po \
        ../../lib/$(DEPDIR)/lib3025-warnless.Po \
+       ../../lib/$(DEPDIR)/lib3026-timediff.Po \
+       ../../lib/$(DEPDIR)/lib3026-warnless.Po \
+       ../../lib/$(DEPDIR)/lib3027-timediff.Po \
+       ../../lib/$(DEPDIR)/lib3027-warnless.Po \
        ../../lib/$(DEPDIR)/lib500-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib500-timediff.Po \
+       ../../lib/$(DEPDIR)/lib501-timediff.Po \
+       ../../lib/$(DEPDIR)/lib502-timediff.Po \
        ../../lib/$(DEPDIR)/lib502-warnless.Po \
+       ../../lib/$(DEPDIR)/lib503-timediff.Po \
        ../../lib/$(DEPDIR)/lib503-warnless.Po \
+       ../../lib/$(DEPDIR)/lib504-timediff.Po \
        ../../lib/$(DEPDIR)/lib504-warnless.Po \
        ../../lib/$(DEPDIR)/lib505-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib505-timediff.Po \
+       ../../lib/$(DEPDIR)/lib506-timediff.Po \
+       ../../lib/$(DEPDIR)/lib507-timediff.Po \
        ../../lib/$(DEPDIR)/lib507-warnless.Po \
+       ../../lib/$(DEPDIR)/lib508-timediff.Po \
+       ../../lib/$(DEPDIR)/lib509-timediff.Po \
+       ../../lib/$(DEPDIR)/lib510-timediff.Po \
+       ../../lib/$(DEPDIR)/lib511-timediff.Po \
+       ../../lib/$(DEPDIR)/lib512-timediff.Po \
+       ../../lib/$(DEPDIR)/lib513-timediff.Po \
+       ../../lib/$(DEPDIR)/lib514-timediff.Po \
+       ../../lib/$(DEPDIR)/lib515-timediff.Po \
+       ../../lib/$(DEPDIR)/lib516-timediff.Po \
+       ../../lib/$(DEPDIR)/lib517-timediff.Po \
        ../../lib/$(DEPDIR)/lib518-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib518-timediff.Po \
        ../../lib/$(DEPDIR)/lib518-warnless.Po \
+       ../../lib/$(DEPDIR)/lib519-timediff.Po \
+       ../../lib/$(DEPDIR)/lib520-timediff.Po \
+       ../../lib/$(DEPDIR)/lib521-timediff.Po \
+       ../../lib/$(DEPDIR)/lib523-timediff.Po \
+       ../../lib/$(DEPDIR)/lib524-timediff.Po \
        ../../lib/$(DEPDIR)/lib525-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib525-timediff.Po \
        ../../lib/$(DEPDIR)/lib525-warnless.Po \
+       ../../lib/$(DEPDIR)/lib526-timediff.Po \
        ../../lib/$(DEPDIR)/lib526-warnless.Po \
+       ../../lib/$(DEPDIR)/lib527-timediff.Po \
        ../../lib/$(DEPDIR)/lib527-warnless.Po \
        ../../lib/$(DEPDIR)/lib529-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib529-timediff.Po \
        ../../lib/$(DEPDIR)/lib529-warnless.Po \
+       ../../lib/$(DEPDIR)/lib530-timediff.Po \
        ../../lib/$(DEPDIR)/lib530-warnless.Po \
+       ../../lib/$(DEPDIR)/lib532-timediff.Po \
        ../../lib/$(DEPDIR)/lib532-warnless.Po \
+       ../../lib/$(DEPDIR)/lib533-timediff.Po \
        ../../lib/$(DEPDIR)/lib533-warnless.Po \
        ../../lib/$(DEPDIR)/lib537-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib537-timediff.Po \
        ../../lib/$(DEPDIR)/lib537-warnless.Po \
+       ../../lib/$(DEPDIR)/lib539-timediff.Po \
+       ../../lib/$(DEPDIR)/lib540-timediff.Po \
        ../../lib/$(DEPDIR)/lib540-warnless.Po \
        ../../lib/$(DEPDIR)/lib541-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib541-timediff.Po \
+       ../../lib/$(DEPDIR)/lib542-timediff.Po \
+       ../../lib/$(DEPDIR)/lib543-timediff.Po \
+       ../../lib/$(DEPDIR)/lib544-timediff.Po \
+       ../../lib/$(DEPDIR)/lib545-timediff.Po \
+       ../../lib/$(DEPDIR)/lib547-timediff.Po \
+       ../../lib/$(DEPDIR)/lib548-timediff.Po \
+       ../../lib/$(DEPDIR)/lib549-timediff.Po \
+       ../../lib/$(DEPDIR)/lib552-timediff.Po \
        ../../lib/$(DEPDIR)/lib552-warnless.Po \
+       ../../lib/$(DEPDIR)/lib553-timediff.Po \
+       ../../lib/$(DEPDIR)/lib554-timediff.Po \
+       ../../lib/$(DEPDIR)/lib555-timediff.Po \
        ../../lib/$(DEPDIR)/lib555-warnless.Po \
+       ../../lib/$(DEPDIR)/lib556-timediff.Po \
        ../../lib/$(DEPDIR)/lib556-warnless.Po \
+       ../../lib/$(DEPDIR)/lib557-timediff.Po \
+       ../../lib/$(DEPDIR)/lib558-timediff.Po \
+       ../../lib/$(DEPDIR)/lib559-timediff.Po \
+       ../../lib/$(DEPDIR)/lib560-timediff.Po \
        ../../lib/$(DEPDIR)/lib560-warnless.Po \
+       ../../lib/$(DEPDIR)/lib562-timediff.Po \
+       ../../lib/$(DEPDIR)/lib564-timediff.Po \
        ../../lib/$(DEPDIR)/lib564-warnless.Po \
+       ../../lib/$(DEPDIR)/lib565-timediff.Po \
        ../../lib/$(DEPDIR)/lib566-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib566-timediff.Po \
+       ../../lib/$(DEPDIR)/lib567-timediff.Po \
        ../../lib/$(DEPDIR)/lib568-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib568-timediff.Po \
        ../../lib/$(DEPDIR)/lib569-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib569-timediff.Po \
+       ../../lib/$(DEPDIR)/lib570-timediff.Po \
        ../../lib/$(DEPDIR)/lib571-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib571-timediff.Po \
        ../../lib/$(DEPDIR)/lib571-warnless.Po \
        ../../lib/$(DEPDIR)/lib572-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib572-timediff.Po \
+       ../../lib/$(DEPDIR)/lib573-timediff.Po \
        ../../lib/$(DEPDIR)/lib573-warnless.Po \
+       ../../lib/$(DEPDIR)/lib574-timediff.Po \
+       ../../lib/$(DEPDIR)/lib575-timediff.Po \
        ../../lib/$(DEPDIR)/lib575-warnless.Po \
+       ../../lib/$(DEPDIR)/lib576-timediff.Po \
        ../../lib/$(DEPDIR)/lib578-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib578-timediff.Po \
        ../../lib/$(DEPDIR)/lib579-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib579-timediff.Po \
        ../../lib/$(DEPDIR)/lib582-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib582-timediff.Po \
        ../../lib/$(DEPDIR)/lib582-warnless.Po \
+       ../../lib/$(DEPDIR)/lib583-timediff.Po \
+       ../../lib/$(DEPDIR)/lib584-timediff.Po \
        ../../lib/$(DEPDIR)/lib585-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib585-timediff.Po \
+       ../../lib/$(DEPDIR)/lib586-timediff.Po \
+       ../../lib/$(DEPDIR)/lib587-timediff.Po \
+       ../../lib/$(DEPDIR)/lib589-timediff.Po \
+       ../../lib/$(DEPDIR)/lib590-timediff.Po \
        ../../lib/$(DEPDIR)/lib591-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib591-timediff.Po \
        ../../lib/$(DEPDIR)/lib591-warnless.Po \
+       ../../lib/$(DEPDIR)/lib597-timediff.Po \
        ../../lib/$(DEPDIR)/lib597-warnless.Po \
+       ../../lib/$(DEPDIR)/lib598-timediff.Po \
        ../../lib/$(DEPDIR)/lib599-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib599-timediff.Po \
+       ../../lib/$(DEPDIR)/lib643-timediff.Po \
+       ../../lib/$(DEPDIR)/lib645-timediff.Po \
+       ../../lib/$(DEPDIR)/lib650-timediff.Po \
+       ../../lib/$(DEPDIR)/lib651-timediff.Po \
+       ../../lib/$(DEPDIR)/lib652-timediff.Po \
+       ../../lib/$(DEPDIR)/lib653-timediff.Po \
+       ../../lib/$(DEPDIR)/lib654-timediff.Po \
+       ../../lib/$(DEPDIR)/lib655-timediff.Po \
+       ../../lib/$(DEPDIR)/lib658-timediff.Po \
        ../../lib/$(DEPDIR)/lib658-warnless.Po \
+       ../../lib/$(DEPDIR)/lib659-timediff.Po \
        ../../lib/$(DEPDIR)/lib659-warnless.Po \
+       ../../lib/$(DEPDIR)/lib661-timediff.Po \
+       ../../lib/$(DEPDIR)/lib666-timediff.Po \
+       ../../lib/$(DEPDIR)/lib667-timediff.Po \
        ../../lib/$(DEPDIR)/lib667-warnless.Po \
+       ../../lib/$(DEPDIR)/lib668-timediff.Po \
        ../../lib/$(DEPDIR)/lib668-warnless.Po \
+       ../../lib/$(DEPDIR)/lib670-timediff.Po \
        ../../lib/$(DEPDIR)/lib670-warnless.Po \
+       ../../lib/$(DEPDIR)/lib671-timediff.Po \
        ../../lib/$(DEPDIR)/lib671-warnless.Po \
+       ../../lib/$(DEPDIR)/lib672-timediff.Po \
        ../../lib/$(DEPDIR)/lib672-warnless.Po \
+       ../../lib/$(DEPDIR)/lib673-timediff.Po \
        ../../lib/$(DEPDIR)/lib673-warnless.Po \
+       ../../lib/$(DEPDIR)/lib674-timediff.Po \
        ../../lib/$(DEPDIR)/lib674-warnless.Po \
+       ../../lib/$(DEPDIR)/lib676-timediff.Po \
        ../../lib/$(DEPDIR)/lib676-warnless.Po \
        ../../lib/$(DEPDIR)/lib677-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib677-timediff.Po \
        ../../lib/$(DEPDIR)/lib677-warnless.Po \
        ../../lib/$(DEPDIR)/lib678-curl_multibyte.Po \
+       ../../lib/$(DEPDIR)/lib678-timediff.Po \
        ../../lib/$(DEPDIR)/lib678-warnless.Po \
+       ../../lib/$(DEPDIR)/libauthretry-timediff.Po \
+       ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po \
        ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po \
+       ../../lib/$(DEPDIR)/libprereq-timediff.Po \
        ../../lib/$(DEPDIR)/libprereq-warnless.Po \
+       ../../lib/$(DEPDIR)/timediff.Po \
        ../../lib/$(DEPDIR)/warnless.Po \
        ./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po \
        ./$(DEPDIR)/chkhostname-chkhostname.Po ./$(DEPDIR)/first.Po \
@@ -1602,7 +2051,8 @@ am__depfiles_remade =  \
        ./$(DEPDIR)/lib1540-testutil.Po ./$(DEPDIR)/lib1542-first.Po \
        ./$(DEPDIR)/lib1542-lib1542.Po \
        ./$(DEPDIR)/lib1542-testtrace.Po \
-       ./$(DEPDIR)/lib1542-testutil.Po ./$(DEPDIR)/lib1550-first.Po \
+       ./$(DEPDIR)/lib1542-testutil.Po ./$(DEPDIR)/lib1543-first.Po \
+       ./$(DEPDIR)/lib1543-lib1518.Po ./$(DEPDIR)/lib1550-first.Po \
        ./$(DEPDIR)/lib1550-lib1550.Po ./$(DEPDIR)/lib1551-first.Po \
        ./$(DEPDIR)/lib1551-lib1551.Po ./$(DEPDIR)/lib1552-first.Po \
        ./$(DEPDIR)/lib1552-lib1552.Po ./$(DEPDIR)/lib1552-testutil.Po \
@@ -1626,35 +2076,47 @@ am__depfiles_remade =  \
        ./$(DEPDIR)/lib1592-testutil.Po ./$(DEPDIR)/lib1593.Po \
        ./$(DEPDIR)/lib1594.Po ./$(DEPDIR)/lib1596-first.Po \
        ./$(DEPDIR)/lib1596-lib1594.Po ./$(DEPDIR)/lib1596-testutil.Po \
-       ./$(DEPDIR)/lib1905-first.Po ./$(DEPDIR)/lib1905-lib1905.Po \
-       ./$(DEPDIR)/lib1905-testutil.Po ./$(DEPDIR)/lib1906-first.Po \
-       ./$(DEPDIR)/lib1906-lib1906.Po ./$(DEPDIR)/lib1906-testutil.Po \
-       ./$(DEPDIR)/lib1907-first.Po ./$(DEPDIR)/lib1907-lib1907.Po \
-       ./$(DEPDIR)/lib1907-testutil.Po ./$(DEPDIR)/lib1908-first.Po \
-       ./$(DEPDIR)/lib1908-lib1908.Po ./$(DEPDIR)/lib1908-testutil.Po \
-       ./$(DEPDIR)/lib1910-first.Po ./$(DEPDIR)/lib1910-lib1910.Po \
-       ./$(DEPDIR)/lib1910-testutil.Po ./$(DEPDIR)/lib1911-first.Po \
-       ./$(DEPDIR)/lib1911-lib1911.Po ./$(DEPDIR)/lib1911-testutil.Po \
-       ./$(DEPDIR)/lib1912-first.Po ./$(DEPDIR)/lib1912-lib1912.Po \
-       ./$(DEPDIR)/lib1912-testutil.Po ./$(DEPDIR)/lib1913-first.Po \
-       ./$(DEPDIR)/lib1913-lib1913.Po ./$(DEPDIR)/lib1913-testutil.Po \
-       ./$(DEPDIR)/lib1915-first.Po ./$(DEPDIR)/lib1915-lib1915.Po \
-       ./$(DEPDIR)/lib1915-testutil.Po ./$(DEPDIR)/lib1916-first.Po \
-       ./$(DEPDIR)/lib1916-lib1916.Po ./$(DEPDIR)/lib1917-first.Po \
-       ./$(DEPDIR)/lib1917-lib1916.Po ./$(DEPDIR)/lib1918-first.Po \
-       ./$(DEPDIR)/lib1918-lib1918.Po ./$(DEPDIR)/lib1933-first.Po \
-       ./$(DEPDIR)/lib1933-lib1933.Po ./$(DEPDIR)/lib1933-testutil.Po \
-       ./$(DEPDIR)/lib1934-first.Po ./$(DEPDIR)/lib1934-lib1934.Po \
-       ./$(DEPDIR)/lib1934-testutil.Po ./$(DEPDIR)/lib1935-first.Po \
-       ./$(DEPDIR)/lib1935-lib1935.Po ./$(DEPDIR)/lib1935-testutil.Po \
-       ./$(DEPDIR)/lib1936-first.Po ./$(DEPDIR)/lib1936-lib1936.Po \
-       ./$(DEPDIR)/lib1936-testutil.Po ./$(DEPDIR)/lib1937-first.Po \
-       ./$(DEPDIR)/lib1937-lib1937.Po ./$(DEPDIR)/lib1938-first.Po \
-       ./$(DEPDIR)/lib1938-lib1938.Po ./$(DEPDIR)/lib1939-first.Po \
-       ./$(DEPDIR)/lib1939-lib1939.Po ./$(DEPDIR)/lib3010-first.Po \
+       ./$(DEPDIR)/lib1597.Po ./$(DEPDIR)/lib1905-first.Po \
+       ./$(DEPDIR)/lib1905-lib1905.Po ./$(DEPDIR)/lib1905-testutil.Po \
+       ./$(DEPDIR)/lib1906-first.Po ./$(DEPDIR)/lib1906-lib1906.Po \
+       ./$(DEPDIR)/lib1906-testutil.Po ./$(DEPDIR)/lib1907-first.Po \
+       ./$(DEPDIR)/lib1907-lib1907.Po ./$(DEPDIR)/lib1907-testutil.Po \
+       ./$(DEPDIR)/lib1908-first.Po ./$(DEPDIR)/lib1908-lib1908.Po \
+       ./$(DEPDIR)/lib1908-testutil.Po ./$(DEPDIR)/lib1910-first.Po \
+       ./$(DEPDIR)/lib1910-lib1910.Po ./$(DEPDIR)/lib1910-testutil.Po \
+       ./$(DEPDIR)/lib1911-first.Po ./$(DEPDIR)/lib1911-lib1911.Po \
+       ./$(DEPDIR)/lib1911-testutil.Po ./$(DEPDIR)/lib1912-first.Po \
+       ./$(DEPDIR)/lib1912-lib1912.Po ./$(DEPDIR)/lib1912-testutil.Po \
+       ./$(DEPDIR)/lib1913-first.Po ./$(DEPDIR)/lib1913-lib1913.Po \
+       ./$(DEPDIR)/lib1913-testutil.Po ./$(DEPDIR)/lib1915-first.Po \
+       ./$(DEPDIR)/lib1915-lib1915.Po ./$(DEPDIR)/lib1915-testutil.Po \
+       ./$(DEPDIR)/lib1916-first.Po ./$(DEPDIR)/lib1916-lib1916.Po \
+       ./$(DEPDIR)/lib1917-first.Po ./$(DEPDIR)/lib1917-lib1916.Po \
+       ./$(DEPDIR)/lib1918-first.Po ./$(DEPDIR)/lib1918-lib1918.Po \
+       ./$(DEPDIR)/lib1919-first.Po ./$(DEPDIR)/lib1919-lib1919.Po \
+       ./$(DEPDIR)/lib1933-first.Po ./$(DEPDIR)/lib1933-lib1933.Po \
+       ./$(DEPDIR)/lib1933-testutil.Po ./$(DEPDIR)/lib1934-first.Po \
+       ./$(DEPDIR)/lib1934-lib1934.Po ./$(DEPDIR)/lib1934-testutil.Po \
+       ./$(DEPDIR)/lib1935-first.Po ./$(DEPDIR)/lib1935-lib1935.Po \
+       ./$(DEPDIR)/lib1935-testutil.Po ./$(DEPDIR)/lib1936-first.Po \
+       ./$(DEPDIR)/lib1936-lib1936.Po ./$(DEPDIR)/lib1936-testutil.Po \
+       ./$(DEPDIR)/lib1937-first.Po ./$(DEPDIR)/lib1937-lib1937.Po \
+       ./$(DEPDIR)/lib1938-first.Po ./$(DEPDIR)/lib1938-lib1938.Po \
+       ./$(DEPDIR)/lib1939-first.Po ./$(DEPDIR)/lib1939-lib1939.Po \
+       ./$(DEPDIR)/lib1940-first.Po ./$(DEPDIR)/lib1940-lib1940.Po \
+       ./$(DEPDIR)/lib1945-first.Po ./$(DEPDIR)/lib1945-lib1945.Po \
+       ./$(DEPDIR)/lib1946-first.Po ./$(DEPDIR)/lib1946-lib1940.Po \
+       ./$(DEPDIR)/lib1947-first.Po ./$(DEPDIR)/lib1947-lib1947.Po \
+       ./$(DEPDIR)/lib1948-first.Po ./$(DEPDIR)/lib1948-lib1948.Po \
+       ./$(DEPDIR)/lib1955-first.Po ./$(DEPDIR)/lib1955-lib1955.Po \
+       ./$(DEPDIR)/lib1955-testutil.Po ./$(DEPDIR)/lib2301.Po \
+       ./$(DEPDIR)/lib2302.Po ./$(DEPDIR)/lib3010-first.Po \
        ./$(DEPDIR)/lib3010-lib3010.Po ./$(DEPDIR)/lib3010-testutil.Po \
        ./$(DEPDIR)/lib3025-first.Po ./$(DEPDIR)/lib3025-lib3025.Po \
-       ./$(DEPDIR)/lib3025-testutil.Po ./$(DEPDIR)/lib500-first.Po \
+       ./$(DEPDIR)/lib3025-testutil.Po ./$(DEPDIR)/lib3026-first.Po \
+       ./$(DEPDIR)/lib3026-lib3026.Po ./$(DEPDIR)/lib3026-testutil.Po \
+       ./$(DEPDIR)/lib3027-first.Po ./$(DEPDIR)/lib3027-lib3027.Po \
+       ./$(DEPDIR)/lib3027-testutil.Po ./$(DEPDIR)/lib500-first.Po \
        ./$(DEPDIR)/lib500-lib500.Po ./$(DEPDIR)/lib500-testtrace.Po \
        ./$(DEPDIR)/lib500-testutil.Po ./$(DEPDIR)/lib501-first.Po \
        ./$(DEPDIR)/lib501-lib501.Po ./$(DEPDIR)/lib502-first.Po \
@@ -1820,85 +2282,25 @@ SOURCES = $(libhostname_la_SOURCES) $(libstubgss_la_SOURCES) \
        $(lib1533_SOURCES) $(lib1534_SOURCES) $(lib1535_SOURCES) \
        $(lib1536_SOURCES) $(lib1537_SOURCES) $(lib1538_SOURCES) \
        $(lib1539_SOURCES) $(lib1540_SOURCES) $(lib1542_SOURCES) \
-       $(lib1550_SOURCES) $(lib1551_SOURCES) $(lib1552_SOURCES) \
-       $(lib1553_SOURCES) $(lib1554_SOURCES) $(lib1555_SOURCES) \
-       $(lib1556_SOURCES) $(lib1557_SOURCES) $(lib1558_SOURCES) \
-       $(lib1559_SOURCES) $(lib1560_SOURCES) $(lib1564_SOURCES) \
-       $(lib1565_SOURCES) $(lib1567_SOURCES) $(lib1568_SOURCES) \
-       $(lib1569_SOURCES) $(lib1591_SOURCES) $(lib1592_SOURCES) \
-       $(lib1593_SOURCES) $(lib1594_SOURCES) $(lib1596_SOURCES) \
-       $(lib1905_SOURCES) $(lib1906_SOURCES) $(lib1907_SOURCES) \
-       $(lib1908_SOURCES) $(lib1910_SOURCES) $(lib1911_SOURCES) \
-       $(lib1912_SOURCES) $(lib1913_SOURCES) $(lib1915_SOURCES) \
-       $(lib1916_SOURCES) $(lib1917_SOURCES) $(lib1918_SOURCES) \
-       $(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
-       $(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \
-       $(lib1939_SOURCES) $(lib3010_SOURCES) $(lib3025_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) $(chkdecimalpoint_SOURCES) \
-       $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
-       $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
-       $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
-       $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
-       $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
-       $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
-       $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
-       $(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
-       $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
-       $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
-       $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
-       $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
-       $(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \
-       $(lib1542_SOURCES) $(lib1550_SOURCES) $(lib1551_SOURCES) \
+       $(lib1543_SOURCES) $(lib1550_SOURCES) $(lib1551_SOURCES) \
        $(lib1552_SOURCES) $(lib1553_SOURCES) $(lib1554_SOURCES) \
        $(lib1555_SOURCES) $(lib1556_SOURCES) $(lib1557_SOURCES) \
        $(lib1558_SOURCES) $(lib1559_SOURCES) $(lib1560_SOURCES) \
        $(lib1564_SOURCES) $(lib1565_SOURCES) $(lib1567_SOURCES) \
        $(lib1568_SOURCES) $(lib1569_SOURCES) $(lib1591_SOURCES) \
        $(lib1592_SOURCES) $(lib1593_SOURCES) $(lib1594_SOURCES) \
-       $(lib1596_SOURCES) $(lib1905_SOURCES) $(lib1906_SOURCES) \
-       $(lib1907_SOURCES) $(lib1908_SOURCES) $(lib1910_SOURCES) \
-       $(lib1911_SOURCES) $(lib1912_SOURCES) $(lib1913_SOURCES) \
-       $(lib1915_SOURCES) $(lib1916_SOURCES) $(lib1917_SOURCES) \
-       $(lib1918_SOURCES) $(lib1933_SOURCES) $(lib1934_SOURCES) \
-       $(lib1935_SOURCES) $(lib1936_SOURCES) $(lib1937_SOURCES) \
-       $(lib1938_SOURCES) $(lib1939_SOURCES) $(lib3010_SOURCES) \
-       $(lib3025_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
+       $(lib1596_SOURCES) $(lib1597_SOURCES) $(lib1905_SOURCES) \
+       $(lib1906_SOURCES) $(lib1907_SOURCES) $(lib1908_SOURCES) \
+       $(lib1910_SOURCES) $(lib1911_SOURCES) $(lib1912_SOURCES) \
+       $(lib1913_SOURCES) $(lib1915_SOURCES) $(lib1916_SOURCES) \
+       $(lib1917_SOURCES) $(lib1918_SOURCES) $(lib1919_SOURCES) \
+       $(lib1933_SOURCES) $(lib1934_SOURCES) $(lib1935_SOURCES) \
+       $(lib1936_SOURCES) $(lib1937_SOURCES) $(lib1938_SOURCES) \
+       $(lib1939_SOURCES) $(lib1940_SOURCES) $(lib1945_SOURCES) \
+       $(lib1946_SOURCES) $(lib1947_SOURCES) $(lib1948_SOURCES) \
+       $(lib1955_SOURCES) $(lib2301_SOURCES) $(lib2302_SOURCES) \
+       $(lib3010_SOURCES) $(lib3025_SOURCES) $(lib3026_SOURCES) \
+       $(lib3027_SOURCES) $(lib500_SOURCES) $(lib501_SOURCES) \
        $(lib502_SOURCES) $(lib503_SOURCES) $(lib504_SOURCES) \
        $(lib505_SOURCES) $(lib506_SOURCES) $(lib507_SOURCES) \
        $(lib508_SOURCES) $(lib509_SOURCES) $(lib510_SOURCES) \
@@ -1934,6 +2336,75 @@ DIST_SOURCES = $(libhostname_la_SOURCES) \
        $(lib676_SOURCES) $(lib677_SOURCES) $(lib678_SOURCES) \
        $(libauthretry_SOURCES) $(libntlmconnect_SOURCES) \
        $(libprereq_SOURCES)
+DIST_SOURCES = $(libhostname_la_SOURCES) \
+       $(am__libstubgss_la_SOURCES_DIST) $(chkdecimalpoint_SOURCES) \
+       $(chkhostname_SOURCES) $(lib1156_SOURCES) $(lib1500_SOURCES) \
+       $(lib1501_SOURCES) $(lib1502_SOURCES) $(lib1503_SOURCES) \
+       $(lib1504_SOURCES) $(lib1505_SOURCES) $(lib1506_SOURCES) \
+       $(lib1507_SOURCES) $(lib1508_SOURCES) $(lib1509_SOURCES) \
+       $(lib1510_SOURCES) $(lib1511_SOURCES) $(lib1512_SOURCES) \
+       $(lib1513_SOURCES) $(lib1514_SOURCES) $(lib1515_SOURCES) \
+       $(lib1517_SOURCES) $(lib1518_SOURCES) $(lib1520_SOURCES) \
+       $(lib1522_SOURCES) $(lib1523_SOURCES) $(lib1525_SOURCES) \
+       $(lib1526_SOURCES) $(lib1527_SOURCES) $(lib1528_SOURCES) \
+       $(lib1529_SOURCES) $(lib1530_SOURCES) $(lib1531_SOURCES) \
+       $(lib1532_SOURCES) $(lib1533_SOURCES) $(lib1534_SOURCES) \
+       $(lib1535_SOURCES) $(lib1536_SOURCES) $(lib1537_SOURCES) \
+       $(lib1538_SOURCES) $(lib1539_SOURCES) $(lib1540_SOURCES) \
+       $(lib1542_SOURCES) $(lib1543_SOURCES) $(lib1550_SOURCES) \
+       $(lib1551_SOURCES) $(lib1552_SOURCES) $(lib1553_SOURCES) \
+       $(lib1554_SOURCES) $(lib1555_SOURCES) $(lib1556_SOURCES) \
+       $(lib1557_SOURCES) $(lib1558_SOURCES) $(lib1559_SOURCES) \
+       $(lib1560_SOURCES) $(lib1564_SOURCES) $(lib1565_SOURCES) \
+       $(lib1567_SOURCES) $(lib1568_SOURCES) $(lib1569_SOURCES) \
+       $(lib1591_SOURCES) $(lib1592_SOURCES) $(lib1593_SOURCES) \
+       $(lib1594_SOURCES) $(lib1596_SOURCES) $(lib1597_SOURCES) \
+       $(lib1905_SOURCES) $(lib1906_SOURCES) $(lib1907_SOURCES) \
+       $(lib1908_SOURCES) $(lib1910_SOURCES) $(lib1911_SOURCES) \
+       $(lib1912_SOURCES) $(lib1913_SOURCES) $(lib1915_SOURCES) \
+       $(lib1916_SOURCES) $(lib1917_SOURCES) $(lib1918_SOURCES) \
+       $(lib1919_SOURCES) $(lib1933_SOURCES) $(lib1934_SOURCES) \
+       $(lib1935_SOURCES) $(lib1936_SOURCES) $(lib1937_SOURCES) \
+       $(lib1938_SOURCES) $(lib1939_SOURCES) $(lib1940_SOURCES) \
+       $(lib1945_SOURCES) $(lib1946_SOURCES) $(lib1947_SOURCES) \
+       $(lib1948_SOURCES) $(lib1955_SOURCES) $(lib2301_SOURCES) \
+       $(lib2302_SOURCES) $(lib3010_SOURCES) $(lib3025_SOURCES) \
+       $(lib3026_SOURCES) $(lib3027_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;; \
@@ -2002,6 +2473,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -2019,6 +2491,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -2078,6 +2551,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -2096,12 +2570,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -2168,7 +2643,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -2182,7 +2656,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -2195,11 +2669,10 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/lib $(am__append_1)
 
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
@@ -2209,13 +2682,8 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/ares \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/ares $(am__append_1)
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+       -I$(top_srcdir)/lib $(am__append_1)
 EXTRA_DIST = test307.pl test610.pl test613.pl test1013.pl test1022.pl   \
   Makefile.inc notexists.pl CMakeLists.txt mk-lib1521.pl .checksrc
 
@@ -2235,7 +2703,7 @@ LDADD = $(SUPPORTFILES_LIBS)
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -2248,6 +2716,8 @@ LDADD = $(SUPPORTFILES_LIBS)
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # files used only in some libcurl test programs
 TESTUTIL = testutil.c testutil.h
@@ -2262,9 +2732,9 @@ 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 = first.c test.h
+SUPPORTFILES = ../../lib/timediff.c ../../lib/timediff.h first.c test.h
 chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
- ../../lib/curl_ctype.c  ../../lib/dynbuf.c ../../lib/strdup.c
+ ../../lib/dynbuf.c ../../lib/strdup.c
 
 chkdecimalpoint_LDADD = 
 chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \
@@ -2633,6 +3103,8 @@ lib1540_CPPFLAGS = $(AM_CPPFLAGS)
 lib1542_SOURCES = lib1542.c $(SUPPORTFILES) $(TESTUTIL) $(TSTTRACE) $(WARNLESS)
 lib1542_LDADD = $(TESTUTIL_LIBS)
 lib1542_CPPFLAGS = $(AM_CPPFLAGS)
+lib1543_SOURCES = lib1518.c $(SUPPORTFILES)
+lib1543_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1543
 lib1550_SOURCES = lib1550.c $(SUPPORTFILES)
 lib1550_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1517
 lib1551_SOURCES = lib1551.c $(SUPPORTFILES)
@@ -2685,6 +3157,8 @@ lib1594_LDADD = $(TESTUTIL_LIBS)
 lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1596_LDADD = $(TESTUTIL_LIBS)
 lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
+lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1597_LDADD = $(TESTUTIL_LIBS)
 lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1905_LDADD = $(TESTUTIL_LIBS)
 lib1905_CPPFLAGS = $(AM_CPPFLAGS)
@@ -2718,6 +3192,8 @@ lib1917_SOURCES = lib1916.c $(SUPPORTFILES) $(WARNLESS)
 lib1917_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1917
 lib1918_SOURCES = lib1918.c $(SUPPORTFILES) $(WARNLESS)
 lib1918_CPPFLAGS = $(AM_CPPFLAGS)
+lib1919_SOURCES = lib1919.c $(SUPPORTFILES) $(WARNLESS)
+lib1919_CPPFLAGS = $(AM_CPPFLAGS)
 lib1933_SOURCES = lib1933.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1933_LDADD = $(TESTUTIL_LIBS)
 lib1933_CPPFLAGS = $(AM_CPPFLAGS)
@@ -2739,12 +3215,40 @@ lib1938_CPPFLAGS = $(AM_CPPFLAGS)
 lib1939_SOURCES = lib1939.c $(SUPPORTFILES)
 lib1939_LDADD = $(TESTUTIL_LIBS)
 lib1939_CPPFLAGS = $(AM_CPPFLAGS)
+lib1940_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1940_LDADD = $(TESTUTIL_LIBS)
+lib1940_CPPFLAGS = $(AM_CPPFLAGS)
+lib1945_SOURCES = lib1945.c $(SUPPORTFILES)
+lib1945_LDADD = $(TESTUTIL_LIBS)
+lib1945_CPPFLAGS = $(AM_CPPFLAGS)
+lib1946_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1946_LDADD = $(TESTUTIL_LIBS)
+lib1946_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1946
+lib1947_SOURCES = lib1947.c $(SUPPORTFILES)
+lib1947_LDADD = $(TESTUTIL_LIBS)
+lib1947_CPPFLAGS = $(AM_CPPFLAGS)
+lib1948_SOURCES = lib1948.c $(SUPPORTFILES)
+lib1948_LDADD = $(TESTUTIL_LIBS)
+lib1948_CPPFLAGS = $(AM_CPPFLAGS)
+lib1955_SOURCES = lib1955.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1955_LDADD = $(TESTUTIL_LIBS)
+lib1955_CPPFLAGS = $(AM_CPPFLAGS)
+lib2301_SOURCES = lib2301.c $(SUPPORTFILES)
+lib2301_LDADD = $(TESTUTIL_LIBS)
+lib2302_SOURCES = lib2302.c $(SUPPORTFILES)
+lib2302_LDADD = $(TESTUTIL_LIBS)
 lib3010_SOURCES = lib3010.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib3010_LDADD = $(TESTUTIL_LIBS)
 lib3010_CPPFLAGS = $(AM_CPPFLAGS)
 lib3025_SOURCES = lib3025.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib3025_LDADD = $(TESTUTIL_LIBS)
 lib3025_CPPFLAGS = $(AM_CPPFLAGS)
+lib3026_SOURCES = lib3026.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3026_LDADD = $(TESTUTIL_LIBS)
+lib3026_CPPFLAGS = $(AM_CPPFLAGS)
+lib3027_SOURCES = lib3027.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3027_LDADD = $(TESTUTIL_LIBS)
+lib3027_CPPFLAGS = $(AM_CPPFLAGS)
 @BUILD_LIBHOSTNAME_FALSE@noinst_LTLIBRARIES = $(am__append_7)
 
 # Makefile.inc provides the source defines (TESTUTIL, SUPPORTFILES,
@@ -2845,8 +3349,6 @@ libstubgss.la: $(libstubgss_la_OBJECTS) $(libstubgss_la_DEPENDENCIES) $(EXTRA_li
        @: > ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/chkdecimalpoint-mprintf.$(OBJEXT):  \
        ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/chkdecimalpoint-curl_ctype.$(OBJEXT):  \
-       ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/chkdecimalpoint-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/chkdecimalpoint-strdup.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -2861,270 +3363,374 @@ chkdecimalpoint$(EXEEXT): $(chkdecimalpoint_OBJECTS) $(chkdecimalpoint_DEPENDENC
 chkhostname$(EXEEXT): $(chkhostname_OBJECTS) $(chkhostname_DEPENDENCIES) $(EXTRA_chkhostname_DEPENDENCIES) 
        @rm -f chkhostname$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(chkhostname_OBJECTS) $(chkhostname_LDADD) $(LIBS)
+../../lib/lib1156-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1156-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1156$(EXEEXT): $(lib1156_OBJECTS) $(lib1156_DEPENDENCIES) $(EXTRA_lib1156_DEPENDENCIES) 
        @rm -f lib1156$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1156_OBJECTS) $(lib1156_LDADD) $(LIBS)
+../../lib/lib1500-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1500$(EXEEXT): $(lib1500_OBJECTS) $(lib1500_DEPENDENCIES) $(EXTRA_lib1500_DEPENDENCIES) 
        @rm -f lib1500$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1500_OBJECTS) $(lib1500_LDADD) $(LIBS)
+../../lib/lib1501-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1501-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1501$(EXEEXT): $(lib1501_OBJECTS) $(lib1501_DEPENDENCIES) $(EXTRA_lib1501_DEPENDENCIES) 
        @rm -f lib1501$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1501_OBJECTS) $(lib1501_LDADD) $(LIBS)
+../../lib/lib1502-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1502-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1502$(EXEEXT): $(lib1502_OBJECTS) $(lib1502_DEPENDENCIES) $(EXTRA_lib1502_DEPENDENCIES) 
        @rm -f lib1502$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1502_OBJECTS) $(lib1502_LDADD) $(LIBS)
+../../lib/lib1503-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1503-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1503$(EXEEXT): $(lib1503_OBJECTS) $(lib1503_DEPENDENCIES) $(EXTRA_lib1503_DEPENDENCIES) 
        @rm -f lib1503$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1503_OBJECTS) $(lib1503_LDADD) $(LIBS)
+../../lib/lib1504-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1504-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1504$(EXEEXT): $(lib1504_OBJECTS) $(lib1504_DEPENDENCIES) $(EXTRA_lib1504_DEPENDENCIES) 
        @rm -f lib1504$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1504_OBJECTS) $(lib1504_LDADD) $(LIBS)
+../../lib/lib1505-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1505-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1505$(EXEEXT): $(lib1505_OBJECTS) $(lib1505_DEPENDENCIES) $(EXTRA_lib1505_DEPENDENCIES) 
        @rm -f lib1505$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1505_OBJECTS) $(lib1505_LDADD) $(LIBS)
+../../lib/lib1506-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1506-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1506$(EXEEXT): $(lib1506_OBJECTS) $(lib1506_DEPENDENCIES) $(EXTRA_lib1506_DEPENDENCIES) 
        @rm -f lib1506$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1506_OBJECTS) $(lib1506_LDADD) $(LIBS)
+../../lib/lib1507-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1507-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1507$(EXEEXT): $(lib1507_OBJECTS) $(lib1507_DEPENDENCIES) $(EXTRA_lib1507_DEPENDENCIES) 
        @rm -f lib1507$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1507_OBJECTS) $(lib1507_LDADD) $(LIBS)
+../../lib/lib1508-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1508-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1508$(EXEEXT): $(lib1508_OBJECTS) $(lib1508_DEPENDENCIES) $(EXTRA_lib1508_DEPENDENCIES) 
        @rm -f lib1508$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1508_OBJECTS) $(lib1508_LDADD) $(LIBS)
+../../lib/lib1509-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1509-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1509$(EXEEXT): $(lib1509_OBJECTS) $(lib1509_DEPENDENCIES) $(EXTRA_lib1509_DEPENDENCIES) 
        @rm -f lib1509$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1509_OBJECTS) $(lib1509_LDADD) $(LIBS)
+../../lib/lib1510-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1510-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1510$(EXEEXT): $(lib1510_OBJECTS) $(lib1510_DEPENDENCIES) $(EXTRA_lib1510_DEPENDENCIES) 
        @rm -f lib1510$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1510_OBJECTS) $(lib1510_LDADD) $(LIBS)
+../../lib/lib1511-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1511-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1511$(EXEEXT): $(lib1511_OBJECTS) $(lib1511_DEPENDENCIES) $(EXTRA_lib1511_DEPENDENCIES) 
        @rm -f lib1511$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1511_OBJECTS) $(lib1511_LDADD) $(LIBS)
+../../lib/lib1512-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1512-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1512$(EXEEXT): $(lib1512_OBJECTS) $(lib1512_DEPENDENCIES) $(EXTRA_lib1512_DEPENDENCIES) 
        @rm -f lib1512$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1512_OBJECTS) $(lib1512_LDADD) $(LIBS)
+../../lib/lib1513-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1513-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1513$(EXEEXT): $(lib1513_OBJECTS) $(lib1513_DEPENDENCIES) $(EXTRA_lib1513_DEPENDENCIES) 
        @rm -f lib1513$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1513_OBJECTS) $(lib1513_LDADD) $(LIBS)
+../../lib/lib1514-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1514-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1514$(EXEEXT): $(lib1514_OBJECTS) $(lib1514_DEPENDENCIES) $(EXTRA_lib1514_DEPENDENCIES) 
        @rm -f lib1514$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1514_OBJECTS) $(lib1514_LDADD) $(LIBS)
+../../lib/lib1515-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1515-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1515$(EXEEXT): $(lib1515_OBJECTS) $(lib1515_DEPENDENCIES) $(EXTRA_lib1515_DEPENDENCIES) 
        @rm -f lib1515$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1515_OBJECTS) $(lib1515_LDADD) $(LIBS)
+../../lib/lib1517-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1517$(EXEEXT): $(lib1517_OBJECTS) $(lib1517_DEPENDENCIES) $(EXTRA_lib1517_DEPENDENCIES) 
        @rm -f lib1517$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1517_OBJECTS) $(lib1517_LDADD) $(LIBS)
+../../lib/lib1518-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1518$(EXEEXT): $(lib1518_OBJECTS) $(lib1518_DEPENDENCIES) $(EXTRA_lib1518_DEPENDENCIES) 
        @rm -f lib1518$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1518_OBJECTS) $(lib1518_LDADD) $(LIBS)
+../../lib/lib1520-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1520$(EXEEXT): $(lib1520_OBJECTS) $(lib1520_DEPENDENCIES) $(EXTRA_lib1520_DEPENDENCIES) 
        @rm -f lib1520$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1520_OBJECTS) $(lib1520_LDADD) $(LIBS)
+../../lib/lib1521-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1521$(EXEEXT): $(lib1521_OBJECTS) $(lib1521_DEPENDENCIES) $(EXTRA_lib1521_DEPENDENCIES) 
        @rm -f lib1521$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1521_OBJECTS) $(lib1521_LDADD) $(LIBS)
+../../lib/lib1522-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1522$(EXEEXT): $(lib1522_OBJECTS) $(lib1522_DEPENDENCIES) $(EXTRA_lib1522_DEPENDENCIES) 
        @rm -f lib1522$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1522_OBJECTS) $(lib1522_LDADD) $(LIBS)
+../../lib/lib1523-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1523$(EXEEXT): $(lib1523_OBJECTS) $(lib1523_DEPENDENCIES) $(EXTRA_lib1523_DEPENDENCIES) 
        @rm -f lib1523$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1523_OBJECTS) $(lib1523_LDADD) $(LIBS)
+../../lib/lib1525-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1525-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1525$(EXEEXT): $(lib1525_OBJECTS) $(lib1525_DEPENDENCIES) $(EXTRA_lib1525_DEPENDENCIES) 
        @rm -f lib1525$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1525_OBJECTS) $(lib1525_LDADD) $(LIBS)
+../../lib/lib1526-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1526-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1526$(EXEEXT): $(lib1526_OBJECTS) $(lib1526_DEPENDENCIES) $(EXTRA_lib1526_DEPENDENCIES) 
        @rm -f lib1526$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1526_OBJECTS) $(lib1526_LDADD) $(LIBS)
+../../lib/lib1527-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1527-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1527$(EXEEXT): $(lib1527_OBJECTS) $(lib1527_DEPENDENCIES) $(EXTRA_lib1527_DEPENDENCIES) 
        @rm -f lib1527$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1527_OBJECTS) $(lib1527_LDADD) $(LIBS)
+../../lib/lib1528-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1528-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1528$(EXEEXT): $(lib1528_OBJECTS) $(lib1528_DEPENDENCIES) $(EXTRA_lib1528_DEPENDENCIES) 
        @rm -f lib1528$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1528_OBJECTS) $(lib1528_LDADD) $(LIBS)
+../../lib/lib1529-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1529-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1529$(EXEEXT): $(lib1529_OBJECTS) $(lib1529_DEPENDENCIES) $(EXTRA_lib1529_DEPENDENCIES) 
        @rm -f lib1529$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1529_OBJECTS) $(lib1529_LDADD) $(LIBS)
+../../lib/lib1530-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1530-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1530$(EXEEXT): $(lib1530_OBJECTS) $(lib1530_DEPENDENCIES) $(EXTRA_lib1530_DEPENDENCIES) 
        @rm -f lib1530$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1530_OBJECTS) $(lib1530_LDADD) $(LIBS)
+../../lib/lib1531-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1531-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1531$(EXEEXT): $(lib1531_OBJECTS) $(lib1531_DEPENDENCIES) $(EXTRA_lib1531_DEPENDENCIES) 
        @rm -f lib1531$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1531_OBJECTS) $(lib1531_LDADD) $(LIBS)
+../../lib/lib1532-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1532-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1532$(EXEEXT): $(lib1532_OBJECTS) $(lib1532_DEPENDENCIES) $(EXTRA_lib1532_DEPENDENCIES) 
        @rm -f lib1532$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1532_OBJECTS) $(lib1532_LDADD) $(LIBS)
+../../lib/lib1533-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1533-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1533$(EXEEXT): $(lib1533_OBJECTS) $(lib1533_DEPENDENCIES) $(EXTRA_lib1533_DEPENDENCIES) 
        @rm -f lib1533$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1533_OBJECTS) $(lib1533_LDADD) $(LIBS)
+../../lib/lib1534-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1534-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1534$(EXEEXT): $(lib1534_OBJECTS) $(lib1534_DEPENDENCIES) $(EXTRA_lib1534_DEPENDENCIES) 
        @rm -f lib1534$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1534_OBJECTS) $(lib1534_LDADD) $(LIBS)
+../../lib/lib1535-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1535-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1535$(EXEEXT): $(lib1535_OBJECTS) $(lib1535_DEPENDENCIES) $(EXTRA_lib1535_DEPENDENCIES) 
        @rm -f lib1535$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1535_OBJECTS) $(lib1535_LDADD) $(LIBS)
+../../lib/lib1536-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1536-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1536$(EXEEXT): $(lib1536_OBJECTS) $(lib1536_DEPENDENCIES) $(EXTRA_lib1536_DEPENDENCIES) 
        @rm -f lib1536$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1536_OBJECTS) $(lib1536_LDADD) $(LIBS)
+../../lib/lib1537-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1537-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1537$(EXEEXT): $(lib1537_OBJECTS) $(lib1537_DEPENDENCIES) $(EXTRA_lib1537_DEPENDENCIES) 
        @rm -f lib1537$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1537_OBJECTS) $(lib1537_LDADD) $(LIBS)
+../../lib/lib1538-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1538-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1538$(EXEEXT): $(lib1538_OBJECTS) $(lib1538_DEPENDENCIES) $(EXTRA_lib1538_DEPENDENCIES) 
        @rm -f lib1538$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1538_OBJECTS) $(lib1538_LDADD) $(LIBS)
+../../lib/lib1539-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1539-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1539$(EXEEXT): $(lib1539_OBJECTS) $(lib1539_DEPENDENCIES) $(EXTRA_lib1539_DEPENDENCIES) 
        @rm -f lib1539$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1539_OBJECTS) $(lib1539_LDADD) $(LIBS)
+../../lib/lib1540-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1540-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1540$(EXEEXT): $(lib1540_OBJECTS) $(lib1540_DEPENDENCIES) $(EXTRA_lib1540_DEPENDENCIES) 
        @rm -f lib1540$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1540_OBJECTS) $(lib1540_LDADD) $(LIBS)
+../../lib/lib1542-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1542-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1542$(EXEEXT): $(lib1542_OBJECTS) $(lib1542_DEPENDENCIES) $(EXTRA_lib1542_DEPENDENCIES) 
        @rm -f lib1542$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1542_OBJECTS) $(lib1542_LDADD) $(LIBS)
+../../lib/lib1543-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1543$(EXEEXT): $(lib1543_OBJECTS) $(lib1543_DEPENDENCIES) $(EXTRA_lib1543_DEPENDENCIES) 
+       @rm -f lib1543$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1543_OBJECTS) $(lib1543_LDADD) $(LIBS)
+../../lib/lib1550-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1550$(EXEEXT): $(lib1550_OBJECTS) $(lib1550_DEPENDENCIES) $(EXTRA_lib1550_DEPENDENCIES) 
        @rm -f lib1550$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1550_OBJECTS) $(lib1550_LDADD) $(LIBS)
+../../lib/lib1551-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1551$(EXEEXT): $(lib1551_OBJECTS) $(lib1551_DEPENDENCIES) $(EXTRA_lib1551_DEPENDENCIES) 
        @rm -f lib1551$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1551_OBJECTS) $(lib1551_LDADD) $(LIBS)
+../../lib/lib1552-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1552$(EXEEXT): $(lib1552_OBJECTS) $(lib1552_DEPENDENCIES) $(EXTRA_lib1552_DEPENDENCIES) 
        @rm -f lib1552$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1552_OBJECTS) $(lib1552_LDADD) $(LIBS)
+../../lib/lib1553-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1553$(EXEEXT): $(lib1553_OBJECTS) $(lib1553_DEPENDENCIES) $(EXTRA_lib1553_DEPENDENCIES) 
        @rm -f lib1553$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1553_OBJECTS) $(lib1553_LDADD) $(LIBS)
+../../lib/lib1554-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1554$(EXEEXT): $(lib1554_OBJECTS) $(lib1554_DEPENDENCIES) $(EXTRA_lib1554_DEPENDENCIES) 
        @rm -f lib1554$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1554_OBJECTS) $(lib1554_LDADD) $(LIBS)
+../../lib/lib1555-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1555-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1555$(EXEEXT): $(lib1555_OBJECTS) $(lib1555_DEPENDENCIES) $(EXTRA_lib1555_DEPENDENCIES) 
        @rm -f lib1555$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1555_OBJECTS) $(lib1555_LDADD) $(LIBS)
+../../lib/lib1556-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1556-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1556$(EXEEXT): $(lib1556_OBJECTS) $(lib1556_DEPENDENCIES) $(EXTRA_lib1556_DEPENDENCIES) 
        @rm -f lib1556$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1556_OBJECTS) $(lib1556_LDADD) $(LIBS)
+../../lib/lib1557-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1557-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1557$(EXEEXT): $(lib1557_OBJECTS) $(lib1557_DEPENDENCIES) $(EXTRA_lib1557_DEPENDENCIES) 
        @rm -f lib1557$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1557_OBJECTS) $(lib1557_LDADD) $(LIBS)
+../../lib/timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
@@ -3139,36 +3745,50 @@ lib1559$(EXEEXT): $(lib1559_OBJECTS) $(lib1559_DEPENDENCIES) $(EXTRA_lib1559_DEP
 lib1560$(EXEEXT): $(lib1560_OBJECTS) $(lib1560_DEPENDENCIES) $(EXTRA_lib1560_DEPENDENCIES) 
        @rm -f lib1560$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1560_OBJECTS) $(lib1560_LDADD) $(LIBS)
+../../lib/lib1564-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1564-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1564$(EXEEXT): $(lib1564_OBJECTS) $(lib1564_DEPENDENCIES) $(EXTRA_lib1564_DEPENDENCIES) 
        @rm -f lib1564$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1564_OBJECTS) $(lib1564_LDADD) $(LIBS)
+../../lib/lib1565-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1565-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1565$(EXEEXT): $(lib1565_OBJECTS) $(lib1565_DEPENDENCIES) $(EXTRA_lib1565_DEPENDENCIES) 
        @rm -f lib1565$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1565_OBJECTS) $(lib1565_LDADD) $(LIBS)
+../../lib/lib1567-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1567$(EXEEXT): $(lib1567_OBJECTS) $(lib1567_DEPENDENCIES) $(EXTRA_lib1567_DEPENDENCIES) 
        @rm -f lib1567$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1567_OBJECTS) $(lib1567_LDADD) $(LIBS)
+../../lib/lib1568-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1568$(EXEEXT): $(lib1568_OBJECTS) $(lib1568_DEPENDENCIES) $(EXTRA_lib1568_DEPENDENCIES) 
        @rm -f lib1568$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1568_OBJECTS) $(lib1568_LDADD) $(LIBS)
+../../lib/lib1569-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1569$(EXEEXT): $(lib1569_OBJECTS) $(lib1569_DEPENDENCIES) $(EXTRA_lib1569_DEPENDENCIES) 
        @rm -f lib1569$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1569_OBJECTS) $(lib1569_LDADD) $(LIBS)
+../../lib/lib1591-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1591$(EXEEXT): $(lib1591_OBJECTS) $(lib1591_DEPENDENCIES) $(EXTRA_lib1591_DEPENDENCIES) 
        @rm -f lib1591$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1591_OBJECTS) $(lib1591_LDADD) $(LIBS)
+../../lib/lib1592-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1592-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
@@ -3183,216 +3803,372 @@ lib1593$(EXEEXT): $(lib1593_OBJECTS) $(lib1593_DEPENDENCIES) $(EXTRA_lib1593_DEP
 lib1594$(EXEEXT): $(lib1594_OBJECTS) $(lib1594_DEPENDENCIES) $(EXTRA_lib1594_DEPENDENCIES) 
        @rm -f lib1594$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1594_OBJECTS) $(lib1594_LDADD) $(LIBS)
+../../lib/lib1596-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1596-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1596$(EXEEXT): $(lib1596_OBJECTS) $(lib1596_DEPENDENCIES) $(EXTRA_lib1596_DEPENDENCIES) 
        @rm -f lib1596$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1596_OBJECTS) $(lib1596_LDADD) $(LIBS)
+
+lib1597$(EXEEXT): $(lib1597_OBJECTS) $(lib1597_DEPENDENCIES) $(EXTRA_lib1597_DEPENDENCIES) 
+       @rm -f lib1597$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1597_OBJECTS) $(lib1597_LDADD) $(LIBS)
+../../lib/lib1905-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1905-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1905$(EXEEXT): $(lib1905_OBJECTS) $(lib1905_DEPENDENCIES) $(EXTRA_lib1905_DEPENDENCIES) 
        @rm -f lib1905$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1905_OBJECTS) $(lib1905_LDADD) $(LIBS)
+../../lib/lib1906-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1906-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1906$(EXEEXT): $(lib1906_OBJECTS) $(lib1906_DEPENDENCIES) $(EXTRA_lib1906_DEPENDENCIES) 
        @rm -f lib1906$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1906_OBJECTS) $(lib1906_LDADD) $(LIBS)
+../../lib/lib1907-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1907-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1907$(EXEEXT): $(lib1907_OBJECTS) $(lib1907_DEPENDENCIES) $(EXTRA_lib1907_DEPENDENCIES) 
        @rm -f lib1907$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1907_OBJECTS) $(lib1907_LDADD) $(LIBS)
+../../lib/lib1908-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1908-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1908$(EXEEXT): $(lib1908_OBJECTS) $(lib1908_DEPENDENCIES) $(EXTRA_lib1908_DEPENDENCIES) 
        @rm -f lib1908$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1908_OBJECTS) $(lib1908_LDADD) $(LIBS)
+../../lib/lib1910-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1910-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1910$(EXEEXT): $(lib1910_OBJECTS) $(lib1910_DEPENDENCIES) $(EXTRA_lib1910_DEPENDENCIES) 
        @rm -f lib1910$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1910_OBJECTS) $(lib1910_LDADD) $(LIBS)
+../../lib/lib1911-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1911-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1911$(EXEEXT): $(lib1911_OBJECTS) $(lib1911_DEPENDENCIES) $(EXTRA_lib1911_DEPENDENCIES) 
        @rm -f lib1911$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1911_OBJECTS) $(lib1911_LDADD) $(LIBS)
+../../lib/lib1912-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1912-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1912$(EXEEXT): $(lib1912_OBJECTS) $(lib1912_DEPENDENCIES) $(EXTRA_lib1912_DEPENDENCIES) 
        @rm -f lib1912$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1912_OBJECTS) $(lib1912_LDADD) $(LIBS)
+../../lib/lib1913-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1913-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1913$(EXEEXT): $(lib1913_OBJECTS) $(lib1913_DEPENDENCIES) $(EXTRA_lib1913_DEPENDENCIES) 
        @rm -f lib1913$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1913_OBJECTS) $(lib1913_LDADD) $(LIBS)
+../../lib/lib1915-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1915-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1915$(EXEEXT): $(lib1915_OBJECTS) $(lib1915_DEPENDENCIES) $(EXTRA_lib1915_DEPENDENCIES) 
        @rm -f lib1915$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1915_OBJECTS) $(lib1915_LDADD) $(LIBS)
+../../lib/lib1916-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1916-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1916$(EXEEXT): $(lib1916_OBJECTS) $(lib1916_DEPENDENCIES) $(EXTRA_lib1916_DEPENDENCIES) 
        @rm -f lib1916$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1916_OBJECTS) $(lib1916_LDADD) $(LIBS)
+../../lib/lib1917-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1917-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1917$(EXEEXT): $(lib1917_OBJECTS) $(lib1917_DEPENDENCIES) $(EXTRA_lib1917_DEPENDENCIES) 
        @rm -f lib1917$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1917_OBJECTS) $(lib1917_LDADD) $(LIBS)
+../../lib/lib1918-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1918-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1918$(EXEEXT): $(lib1918_OBJECTS) $(lib1918_DEPENDENCIES) $(EXTRA_lib1918_DEPENDENCIES) 
        @rm -f lib1918$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1918_OBJECTS) $(lib1918_LDADD) $(LIBS)
+../../lib/lib1919-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib1919-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1919$(EXEEXT): $(lib1919_OBJECTS) $(lib1919_DEPENDENCIES) $(EXTRA_lib1919_DEPENDENCIES) 
+       @rm -f lib1919$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1919_OBJECTS) $(lib1919_LDADD) $(LIBS)
+../../lib/lib1933-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1933-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1933$(EXEEXT): $(lib1933_OBJECTS) $(lib1933_DEPENDENCIES) $(EXTRA_lib1933_DEPENDENCIES) 
        @rm -f lib1933$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1933_OBJECTS) $(lib1933_LDADD) $(LIBS)
+../../lib/lib1934-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1934-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1934$(EXEEXT): $(lib1934_OBJECTS) $(lib1934_DEPENDENCIES) $(EXTRA_lib1934_DEPENDENCIES) 
        @rm -f lib1934$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1934_OBJECTS) $(lib1934_LDADD) $(LIBS)
+../../lib/lib1935-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1935-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1935$(EXEEXT): $(lib1935_OBJECTS) $(lib1935_DEPENDENCIES) $(EXTRA_lib1935_DEPENDENCIES) 
        @rm -f lib1935$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1935_OBJECTS) $(lib1935_LDADD) $(LIBS)
+../../lib/lib1936-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib1936-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1936$(EXEEXT): $(lib1936_OBJECTS) $(lib1936_DEPENDENCIES) $(EXTRA_lib1936_DEPENDENCIES) 
        @rm -f lib1936$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1936_OBJECTS) $(lib1936_LDADD) $(LIBS)
+../../lib/lib1937-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1937$(EXEEXT): $(lib1937_OBJECTS) $(lib1937_DEPENDENCIES) $(EXTRA_lib1937_DEPENDENCIES) 
        @rm -f lib1937$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1937_OBJECTS) $(lib1937_LDADD) $(LIBS)
+../../lib/lib1938-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1938$(EXEEXT): $(lib1938_OBJECTS) $(lib1938_DEPENDENCIES) $(EXTRA_lib1938_DEPENDENCIES) 
        @rm -f lib1938$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1938_OBJECTS) $(lib1938_LDADD) $(LIBS)
+../../lib/lib1939-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib1939$(EXEEXT): $(lib1939_OBJECTS) $(lib1939_DEPENDENCIES) $(EXTRA_lib1939_DEPENDENCIES) 
        @rm -f lib1939$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib1939_OBJECTS) $(lib1939_LDADD) $(LIBS)
+../../lib/lib1940-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1940$(EXEEXT): $(lib1940_OBJECTS) $(lib1940_DEPENDENCIES) $(EXTRA_lib1940_DEPENDENCIES) 
+       @rm -f lib1940$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1940_OBJECTS) $(lib1940_LDADD) $(LIBS)
+../../lib/lib1945-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1945$(EXEEXT): $(lib1945_OBJECTS) $(lib1945_DEPENDENCIES) $(EXTRA_lib1945_DEPENDENCIES) 
+       @rm -f lib1945$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1945_OBJECTS) $(lib1945_LDADD) $(LIBS)
+../../lib/lib1946-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1946$(EXEEXT): $(lib1946_OBJECTS) $(lib1946_DEPENDENCIES) $(EXTRA_lib1946_DEPENDENCIES) 
+       @rm -f lib1946$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1946_OBJECTS) $(lib1946_LDADD) $(LIBS)
+../../lib/lib1947-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1947$(EXEEXT): $(lib1947_OBJECTS) $(lib1947_DEPENDENCIES) $(EXTRA_lib1947_DEPENDENCIES) 
+       @rm -f lib1947$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1947_OBJECTS) $(lib1947_LDADD) $(LIBS)
+../../lib/lib1948-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1948$(EXEEXT): $(lib1948_OBJECTS) $(lib1948_DEPENDENCIES) $(EXTRA_lib1948_DEPENDENCIES) 
+       @rm -f lib1948$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1948_OBJECTS) $(lib1948_LDADD) $(LIBS)
+../../lib/lib1955-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib1955-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib1955$(EXEEXT): $(lib1955_OBJECTS) $(lib1955_DEPENDENCIES) $(EXTRA_lib1955_DEPENDENCIES) 
+       @rm -f lib1955$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib1955_OBJECTS) $(lib1955_LDADD) $(LIBS)
+
+lib2301$(EXEEXT): $(lib2301_OBJECTS) $(lib2301_DEPENDENCIES) $(EXTRA_lib2301_DEPENDENCIES) 
+       @rm -f lib2301$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib2301_OBJECTS) $(lib2301_LDADD) $(LIBS)
+
+lib2302$(EXEEXT): $(lib2302_OBJECTS) $(lib2302_DEPENDENCIES) $(EXTRA_lib2302_DEPENDENCIES) 
+       @rm -f lib2302$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib2302_OBJECTS) $(lib2302_LDADD) $(LIBS)
+../../lib/lib3010-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib3010-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib3010$(EXEEXT): $(lib3010_OBJECTS) $(lib3010_DEPENDENCIES) $(EXTRA_lib3010_DEPENDENCIES) 
        @rm -f lib3010$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib3010_OBJECTS) $(lib3010_LDADD) $(LIBS)
+../../lib/lib3025-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib3025-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib3025$(EXEEXT): $(lib3025_OBJECTS) $(lib3025_DEPENDENCIES) $(EXTRA_lib3025_DEPENDENCIES) 
        @rm -f lib3025$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib3025_OBJECTS) $(lib3025_LDADD) $(LIBS)
+../../lib/lib3026-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib3026-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib3026$(EXEEXT): $(lib3026_OBJECTS) $(lib3026_DEPENDENCIES) $(EXTRA_lib3026_DEPENDENCIES) 
+       @rm -f lib3026$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib3026_OBJECTS) $(lib3026_LDADD) $(LIBS)
+../../lib/lib3027-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+../../lib/lib3027-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
+
+lib3027$(EXEEXT): $(lib3027_OBJECTS) $(lib3027_DEPENDENCIES) $(EXTRA_lib3027_DEPENDENCIES) 
+       @rm -f lib3027$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(lib3027_OBJECTS) $(lib3027_LDADD) $(LIBS)
+../../lib/lib500-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib500-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib500$(EXEEXT): $(lib500_OBJECTS) $(lib500_DEPENDENCIES) $(EXTRA_lib500_DEPENDENCIES) 
        @rm -f lib500$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib500_OBJECTS) $(lib500_LDADD) $(LIBS)
+../../lib/lib501-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib501$(EXEEXT): $(lib501_OBJECTS) $(lib501_DEPENDENCIES) $(EXTRA_lib501_DEPENDENCIES) 
        @rm -f lib501$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib501_OBJECTS) $(lib501_LDADD) $(LIBS)
+../../lib/lib502-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib502-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib502$(EXEEXT): $(lib502_OBJECTS) $(lib502_DEPENDENCIES) $(EXTRA_lib502_DEPENDENCIES) 
        @rm -f lib502$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib502_OBJECTS) $(lib502_LDADD) $(LIBS)
+../../lib/lib503-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib503-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib503$(EXEEXT): $(lib503_OBJECTS) $(lib503_DEPENDENCIES) $(EXTRA_lib503_DEPENDENCIES) 
        @rm -f lib503$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib503_OBJECTS) $(lib503_LDADD) $(LIBS)
+../../lib/lib504-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib504-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib504$(EXEEXT): $(lib504_OBJECTS) $(lib504_DEPENDENCIES) $(EXTRA_lib504_DEPENDENCIES) 
        @rm -f lib504$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib504_OBJECTS) $(lib504_LDADD) $(LIBS)
+../../lib/lib505-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib505-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib505$(EXEEXT): $(lib505_OBJECTS) $(lib505_DEPENDENCIES) $(EXTRA_lib505_DEPENDENCIES) 
        @rm -f lib505$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib505_OBJECTS) $(lib505_LDADD) $(LIBS)
+../../lib/lib506-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib506$(EXEEXT): $(lib506_OBJECTS) $(lib506_DEPENDENCIES) $(EXTRA_lib506_DEPENDENCIES) 
        @rm -f lib506$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib506_OBJECTS) $(lib506_LDADD) $(LIBS)
+../../lib/lib507-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib507-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib507$(EXEEXT): $(lib507_OBJECTS) $(lib507_DEPENDENCIES) $(EXTRA_lib507_DEPENDENCIES) 
        @rm -f lib507$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib507_OBJECTS) $(lib507_LDADD) $(LIBS)
+../../lib/lib508-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib508$(EXEEXT): $(lib508_OBJECTS) $(lib508_DEPENDENCIES) $(EXTRA_lib508_DEPENDENCIES) 
        @rm -f lib508$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib508_OBJECTS) $(lib508_LDADD) $(LIBS)
+../../lib/lib509-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib509$(EXEEXT): $(lib509_OBJECTS) $(lib509_DEPENDENCIES) $(EXTRA_lib509_DEPENDENCIES) 
        @rm -f lib509$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib509_OBJECTS) $(lib509_LDADD) $(LIBS)
+../../lib/lib510-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib510$(EXEEXT): $(lib510_OBJECTS) $(lib510_DEPENDENCIES) $(EXTRA_lib510_DEPENDENCIES) 
        @rm -f lib510$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib510_OBJECTS) $(lib510_LDADD) $(LIBS)
+../../lib/lib511-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib511$(EXEEXT): $(lib511_OBJECTS) $(lib511_DEPENDENCIES) $(EXTRA_lib511_DEPENDENCIES) 
        @rm -f lib511$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib511_OBJECTS) $(lib511_LDADD) $(LIBS)
+../../lib/lib512-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib512$(EXEEXT): $(lib512_OBJECTS) $(lib512_DEPENDENCIES) $(EXTRA_lib512_DEPENDENCIES) 
        @rm -f lib512$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib512_OBJECTS) $(lib512_LDADD) $(LIBS)
+../../lib/lib513-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib513$(EXEEXT): $(lib513_OBJECTS) $(lib513_DEPENDENCIES) $(EXTRA_lib513_DEPENDENCIES) 
        @rm -f lib513$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib513_OBJECTS) $(lib513_LDADD) $(LIBS)
+../../lib/lib514-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib514$(EXEEXT): $(lib514_OBJECTS) $(lib514_DEPENDENCIES) $(EXTRA_lib514_DEPENDENCIES) 
        @rm -f lib514$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib514_OBJECTS) $(lib514_LDADD) $(LIBS)
+../../lib/lib515-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib515$(EXEEXT): $(lib515_OBJECTS) $(lib515_DEPENDENCIES) $(EXTRA_lib515_DEPENDENCIES) 
        @rm -f lib515$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib515_OBJECTS) $(lib515_LDADD) $(LIBS)
+../../lib/lib516-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib516$(EXEEXT): $(lib516_OBJECTS) $(lib516_DEPENDENCIES) $(EXTRA_lib516_DEPENDENCIES) 
        @rm -f lib516$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib516_OBJECTS) $(lib516_LDADD) $(LIBS)
+../../lib/lib517-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib517$(EXEEXT): $(lib517_OBJECTS) $(lib517_DEPENDENCIES) $(EXTRA_lib517_DEPENDENCIES) 
        @rm -f lib517$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib517_OBJECTS) $(lib517_LDADD) $(LIBS)
+../../lib/lib518-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib518-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib518-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3401,26 +4177,38 @@ lib517$(EXEEXT): $(lib517_OBJECTS) $(lib517_DEPENDENCIES) $(EXTRA_lib517_DEPENDE
 lib518$(EXEEXT): $(lib518_OBJECTS) $(lib518_DEPENDENCIES) $(EXTRA_lib518_DEPENDENCIES) 
        @rm -f lib518$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib518_OBJECTS) $(lib518_LDADD) $(LIBS)
+../../lib/lib519-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib519$(EXEEXT): $(lib519_OBJECTS) $(lib519_DEPENDENCIES) $(EXTRA_lib519_DEPENDENCIES) 
        @rm -f lib519$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib519_OBJECTS) $(lib519_LDADD) $(LIBS)
+../../lib/lib520-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib520$(EXEEXT): $(lib520_OBJECTS) $(lib520_DEPENDENCIES) $(EXTRA_lib520_DEPENDENCIES) 
        @rm -f lib520$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib520_OBJECTS) $(lib520_LDADD) $(LIBS)
+../../lib/lib521-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib521$(EXEEXT): $(lib521_OBJECTS) $(lib521_DEPENDENCIES) $(EXTRA_lib521_DEPENDENCIES) 
        @rm -f lib521$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib521_OBJECTS) $(lib521_LDADD) $(LIBS)
+../../lib/lib523-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib523$(EXEEXT): $(lib523_OBJECTS) $(lib523_DEPENDENCIES) $(EXTRA_lib523_DEPENDENCIES) 
        @rm -f lib523$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib523_OBJECTS) $(lib523_LDADD) $(LIBS)
+../../lib/lib524-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib524$(EXEEXT): $(lib524_OBJECTS) $(lib524_DEPENDENCIES) $(EXTRA_lib524_DEPENDENCIES) 
        @rm -f lib524$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib524_OBJECTS) $(lib524_LDADD) $(LIBS)
+../../lib/lib525-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib525-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib525-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3429,18 +4217,24 @@ lib524$(EXEEXT): $(lib524_OBJECTS) $(lib524_DEPENDENCIES) $(EXTRA_lib524_DEPENDE
 lib525$(EXEEXT): $(lib525_OBJECTS) $(lib525_DEPENDENCIES) $(EXTRA_lib525_DEPENDENCIES) 
        @rm -f lib525$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib525_OBJECTS) $(lib525_LDADD) $(LIBS)
+../../lib/lib526-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib526-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib526$(EXEEXT): $(lib526_OBJECTS) $(lib526_DEPENDENCIES) $(EXTRA_lib526_DEPENDENCIES) 
        @rm -f lib526$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib526_OBJECTS) $(lib526_LDADD) $(LIBS)
+../../lib/lib527-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib527-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib527$(EXEEXT): $(lib527_OBJECTS) $(lib527_DEPENDENCIES) $(EXTRA_lib527_DEPENDENCIES) 
        @rm -f lib527$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib527_OBJECTS) $(lib527_LDADD) $(LIBS)
+../../lib/lib529-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib529-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib529-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3449,24 +4243,32 @@ lib527$(EXEEXT): $(lib527_OBJECTS) $(lib527_DEPENDENCIES) $(EXTRA_lib527_DEPENDE
 lib529$(EXEEXT): $(lib529_OBJECTS) $(lib529_DEPENDENCIES) $(EXTRA_lib529_DEPENDENCIES) 
        @rm -f lib529$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib529_OBJECTS) $(lib529_LDADD) $(LIBS)
+../../lib/lib530-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib530-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib530$(EXEEXT): $(lib530_OBJECTS) $(lib530_DEPENDENCIES) $(EXTRA_lib530_DEPENDENCIES) 
        @rm -f lib530$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib530_OBJECTS) $(lib530_LDADD) $(LIBS)
+../../lib/lib532-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib532-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib532$(EXEEXT): $(lib532_OBJECTS) $(lib532_DEPENDENCIES) $(EXTRA_lib532_DEPENDENCIES) 
        @rm -f lib532$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib532_OBJECTS) $(lib532_LDADD) $(LIBS)
+../../lib/lib533-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib533-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDENCIES) 
        @rm -f lib533$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib533_OBJECTS) $(lib533_LDADD) $(LIBS)
+../../lib/lib537-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib537-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib537-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3475,134 +4277,190 @@ lib533$(EXEEXT): $(lib533_OBJECTS) $(lib533_DEPENDENCIES) $(EXTRA_lib533_DEPENDE
 lib537$(EXEEXT): $(lib537_OBJECTS) $(lib537_DEPENDENCIES) $(EXTRA_lib537_DEPENDENCIES) 
        @rm -f lib537$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib537_OBJECTS) $(lib537_LDADD) $(LIBS)
+../../lib/lib539-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib539$(EXEEXT): $(lib539_OBJECTS) $(lib539_DEPENDENCIES) $(EXTRA_lib539_DEPENDENCIES) 
        @rm -f lib539$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib539_OBJECTS) $(lib539_LDADD) $(LIBS)
+../../lib/lib540-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib540-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib540$(EXEEXT): $(lib540_OBJECTS) $(lib540_DEPENDENCIES) $(EXTRA_lib540_DEPENDENCIES) 
        @rm -f lib540$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib540_OBJECTS) $(lib540_LDADD) $(LIBS)
+../../lib/lib541-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib541-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib541$(EXEEXT): $(lib541_OBJECTS) $(lib541_DEPENDENCIES) $(EXTRA_lib541_DEPENDENCIES) 
        @rm -f lib541$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib541_OBJECTS) $(lib541_LDADD) $(LIBS)
+../../lib/lib542-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib542$(EXEEXT): $(lib542_OBJECTS) $(lib542_DEPENDENCIES) $(EXTRA_lib542_DEPENDENCIES) 
        @rm -f lib542$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib542_OBJECTS) $(lib542_LDADD) $(LIBS)
+../../lib/lib543-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib543$(EXEEXT): $(lib543_OBJECTS) $(lib543_DEPENDENCIES) $(EXTRA_lib543_DEPENDENCIES) 
        @rm -f lib543$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib543_OBJECTS) $(lib543_LDADD) $(LIBS)
+../../lib/lib544-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib544$(EXEEXT): $(lib544_OBJECTS) $(lib544_DEPENDENCIES) $(EXTRA_lib544_DEPENDENCIES) 
        @rm -f lib544$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib544_OBJECTS) $(lib544_LDADD) $(LIBS)
+../../lib/lib545-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib545$(EXEEXT): $(lib545_OBJECTS) $(lib545_DEPENDENCIES) $(EXTRA_lib545_DEPENDENCIES) 
        @rm -f lib545$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib545_OBJECTS) $(lib545_LDADD) $(LIBS)
+../../lib/lib547-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib547$(EXEEXT): $(lib547_OBJECTS) $(lib547_DEPENDENCIES) $(EXTRA_lib547_DEPENDENCIES) 
        @rm -f lib547$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib547_OBJECTS) $(lib547_LDADD) $(LIBS)
+../../lib/lib548-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib548$(EXEEXT): $(lib548_OBJECTS) $(lib548_DEPENDENCIES) $(EXTRA_lib548_DEPENDENCIES) 
        @rm -f lib548$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib548_OBJECTS) $(lib548_LDADD) $(LIBS)
+../../lib/lib549-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib549$(EXEEXT): $(lib549_OBJECTS) $(lib549_DEPENDENCIES) $(EXTRA_lib549_DEPENDENCIES) 
        @rm -f lib549$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib549_OBJECTS) $(lib549_LDADD) $(LIBS)
+../../lib/lib552-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib552-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib552$(EXEEXT): $(lib552_OBJECTS) $(lib552_DEPENDENCIES) $(EXTRA_lib552_DEPENDENCIES) 
        @rm -f lib552$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib552_OBJECTS) $(lib552_LDADD) $(LIBS)
+../../lib/lib553-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib553$(EXEEXT): $(lib553_OBJECTS) $(lib553_DEPENDENCIES) $(EXTRA_lib553_DEPENDENCIES) 
        @rm -f lib553$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib553_OBJECTS) $(lib553_LDADD) $(LIBS)
+../../lib/lib554-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib554$(EXEEXT): $(lib554_OBJECTS) $(lib554_DEPENDENCIES) $(EXTRA_lib554_DEPENDENCIES) 
        @rm -f lib554$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib554_OBJECTS) $(lib554_LDADD) $(LIBS)
+../../lib/lib555-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib555-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib555$(EXEEXT): $(lib555_OBJECTS) $(lib555_DEPENDENCIES) $(EXTRA_lib555_DEPENDENCIES) 
        @rm -f lib555$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib555_OBJECTS) $(lib555_LDADD) $(LIBS)
+../../lib/lib556-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib556-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib556$(EXEEXT): $(lib556_OBJECTS) $(lib556_DEPENDENCIES) $(EXTRA_lib556_DEPENDENCIES) 
        @rm -f lib556$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib556_OBJECTS) $(lib556_LDADD) $(LIBS)
+../../lib/lib557-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib557$(EXEEXT): $(lib557_OBJECTS) $(lib557_DEPENDENCIES) $(EXTRA_lib557_DEPENDENCIES) 
        @rm -f lib557$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib557_OBJECTS) $(lib557_LDADD) $(LIBS)
+../../lib/lib558-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib558$(EXEEXT): $(lib558_OBJECTS) $(lib558_DEPENDENCIES) $(EXTRA_lib558_DEPENDENCIES) 
        @rm -f lib558$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib558_OBJECTS) $(lib558_LDADD) $(LIBS)
+../../lib/lib559-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib559$(EXEEXT): $(lib559_OBJECTS) $(lib559_DEPENDENCIES) $(EXTRA_lib559_DEPENDENCIES) 
        @rm -f lib559$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib559_OBJECTS) $(lib559_LDADD) $(LIBS)
+../../lib/lib560-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib560-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib560$(EXEEXT): $(lib560_OBJECTS) $(lib560_DEPENDENCIES) $(EXTRA_lib560_DEPENDENCIES) 
        @rm -f lib560$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib560_OBJECTS) $(lib560_LDADD) $(LIBS)
+../../lib/lib562-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib562$(EXEEXT): $(lib562_OBJECTS) $(lib562_DEPENDENCIES) $(EXTRA_lib562_DEPENDENCIES) 
        @rm -f lib562$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib562_OBJECTS) $(lib562_LDADD) $(LIBS)
+../../lib/lib564-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib564-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib564$(EXEEXT): $(lib564_OBJECTS) $(lib564_DEPENDENCIES) $(EXTRA_lib564_DEPENDENCIES) 
        @rm -f lib564$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib564_OBJECTS) $(lib564_LDADD) $(LIBS)
+../../lib/lib565-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib565$(EXEEXT): $(lib565_OBJECTS) $(lib565_DEPENDENCIES) $(EXTRA_lib565_DEPENDENCIES) 
        @rm -f lib565$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib565_OBJECTS) $(lib565_LDADD) $(LIBS)
+../../lib/lib566-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib566-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib566$(EXEEXT): $(lib566_OBJECTS) $(lib566_DEPENDENCIES) $(EXTRA_lib566_DEPENDENCIES) 
        @rm -f lib566$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib566_OBJECTS) $(lib566_LDADD) $(LIBS)
+../../lib/lib567-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib567$(EXEEXT): $(lib567_OBJECTS) $(lib567_DEPENDENCIES) $(EXTRA_lib567_DEPENDENCIES) 
        @rm -f lib567$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib567_OBJECTS) $(lib567_LDADD) $(LIBS)
+../../lib/lib568-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib568-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib568$(EXEEXT): $(lib568_OBJECTS) $(lib568_DEPENDENCIES) $(EXTRA_lib568_DEPENDENCIES) 
        @rm -f lib568$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib568_OBJECTS) $(lib568_LDADD) $(LIBS)
+../../lib/lib569-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib569-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib569$(EXEEXT): $(lib569_OBJECTS) $(lib569_DEPENDENCIES) $(EXTRA_lib569_DEPENDENCIES) 
        @rm -f lib569$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib569_OBJECTS) $(lib569_LDADD) $(LIBS)
+../../lib/lib570-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib570$(EXEEXT): $(lib570_OBJECTS) $(lib570_DEPENDENCIES) $(EXTRA_lib570_DEPENDENCIES) 
        @rm -f lib570$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib570_OBJECTS) $(lib570_LDADD) $(LIBS)
+../../lib/lib571-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib571-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib571-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3611,44 +4469,60 @@ lib570$(EXEEXT): $(lib570_OBJECTS) $(lib570_DEPENDENCIES) $(EXTRA_lib570_DEPENDE
 lib571$(EXEEXT): $(lib571_OBJECTS) $(lib571_DEPENDENCIES) $(EXTRA_lib571_DEPENDENCIES) 
        @rm -f lib571$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib571_OBJECTS) $(lib571_LDADD) $(LIBS)
+../../lib/lib572-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib572-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib572$(EXEEXT): $(lib572_OBJECTS) $(lib572_DEPENDENCIES) $(EXTRA_lib572_DEPENDENCIES) 
        @rm -f lib572$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib572_OBJECTS) $(lib572_LDADD) $(LIBS)
+../../lib/lib573-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib573-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib573$(EXEEXT): $(lib573_OBJECTS) $(lib573_DEPENDENCIES) $(EXTRA_lib573_DEPENDENCIES) 
        @rm -f lib573$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib573_OBJECTS) $(lib573_LDADD) $(LIBS)
+../../lib/lib574-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib574$(EXEEXT): $(lib574_OBJECTS) $(lib574_DEPENDENCIES) $(EXTRA_lib574_DEPENDENCIES) 
        @rm -f lib574$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib574_OBJECTS) $(lib574_LDADD) $(LIBS)
+../../lib/lib575-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib575-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib575$(EXEEXT): $(lib575_OBJECTS) $(lib575_DEPENDENCIES) $(EXTRA_lib575_DEPENDENCIES) 
        @rm -f lib575$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib575_OBJECTS) $(lib575_LDADD) $(LIBS)
+../../lib/lib576-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib576$(EXEEXT): $(lib576_OBJECTS) $(lib576_DEPENDENCIES) $(EXTRA_lib576_DEPENDENCIES) 
        @rm -f lib576$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib576_OBJECTS) $(lib576_LDADD) $(LIBS)
+../../lib/lib578-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib578-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib578$(EXEEXT): $(lib578_OBJECTS) $(lib578_DEPENDENCIES) $(EXTRA_lib578_DEPENDENCIES) 
        @rm -f lib578$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib578_OBJECTS) $(lib578_LDADD) $(LIBS)
+../../lib/lib579-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib579-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib579$(EXEEXT): $(lib579_OBJECTS) $(lib579_DEPENDENCIES) $(EXTRA_lib579_DEPENDENCIES) 
        @rm -f lib579$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib579_OBJECTS) $(lib579_LDADD) $(LIBS)
+../../lib/lib582-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib582-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib582-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3657,36 +4531,52 @@ lib579$(EXEEXT): $(lib579_OBJECTS) $(lib579_DEPENDENCIES) $(EXTRA_lib579_DEPENDE
 lib582$(EXEEXT): $(lib582_OBJECTS) $(lib582_DEPENDENCIES) $(EXTRA_lib582_DEPENDENCIES) 
        @rm -f lib582$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib582_OBJECTS) $(lib582_LDADD) $(LIBS)
+../../lib/lib583-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib583$(EXEEXT): $(lib583_OBJECTS) $(lib583_DEPENDENCIES) $(EXTRA_lib583_DEPENDENCIES) 
        @rm -f lib583$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib583_OBJECTS) $(lib583_LDADD) $(LIBS)
+../../lib/lib584-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib584$(EXEEXT): $(lib584_OBJECTS) $(lib584_DEPENDENCIES) $(EXTRA_lib584_DEPENDENCIES) 
        @rm -f lib584$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib584_OBJECTS) $(lib584_LDADD) $(LIBS)
+../../lib/lib585-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib585-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib585$(EXEEXT): $(lib585_OBJECTS) $(lib585_DEPENDENCIES) $(EXTRA_lib585_DEPENDENCIES) 
        @rm -f lib585$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib585_OBJECTS) $(lib585_LDADD) $(LIBS)
+../../lib/lib586-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib586$(EXEEXT): $(lib586_OBJECTS) $(lib586_DEPENDENCIES) $(EXTRA_lib586_DEPENDENCIES) 
        @rm -f lib586$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib586_OBJECTS) $(lib586_LDADD) $(LIBS)
+../../lib/lib587-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib587$(EXEEXT): $(lib587_OBJECTS) $(lib587_DEPENDENCIES) $(EXTRA_lib587_DEPENDENCIES) 
        @rm -f lib587$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib587_OBJECTS) $(lib587_LDADD) $(LIBS)
+../../lib/lib589-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib589$(EXEEXT): $(lib589_OBJECTS) $(lib589_DEPENDENCIES) $(EXTRA_lib589_DEPENDENCIES) 
        @rm -f lib589$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib589_OBJECTS) $(lib589_LDADD) $(LIBS)
+../../lib/lib590-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib590$(EXEEXT): $(lib590_OBJECTS) $(lib590_DEPENDENCIES) $(EXTRA_lib590_DEPENDENCIES) 
        @rm -f lib590$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib590_OBJECTS) $(lib590_LDADD) $(LIBS)
+../../lib/lib591-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib591-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib591-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3695,122 +4585,170 @@ lib590$(EXEEXT): $(lib590_OBJECTS) $(lib590_DEPENDENCIES) $(EXTRA_lib590_DEPENDE
 lib591$(EXEEXT): $(lib591_OBJECTS) $(lib591_DEPENDENCIES) $(EXTRA_lib591_DEPENDENCIES) 
        @rm -f lib591$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib591_OBJECTS) $(lib591_LDADD) $(LIBS)
+../../lib/lib597-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib597-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib597$(EXEEXT): $(lib597_OBJECTS) $(lib597_DEPENDENCIES) $(EXTRA_lib597_DEPENDENCIES) 
        @rm -f lib597$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib597_OBJECTS) $(lib597_LDADD) $(LIBS)
+../../lib/lib598-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib598$(EXEEXT): $(lib598_OBJECTS) $(lib598_DEPENDENCIES) $(EXTRA_lib598_DEPENDENCIES) 
        @rm -f lib598$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib598_OBJECTS) $(lib598_LDADD) $(LIBS)
+../../lib/lib599-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib599-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib599$(EXEEXT): $(lib599_OBJECTS) $(lib599_DEPENDENCIES) $(EXTRA_lib599_DEPENDENCIES) 
        @rm -f lib599$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib599_OBJECTS) $(lib599_LDADD) $(LIBS)
+../../lib/lib643-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib643$(EXEEXT): $(lib643_OBJECTS) $(lib643_DEPENDENCIES) $(EXTRA_lib643_DEPENDENCIES) 
        @rm -f lib643$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib643_OBJECTS) $(lib643_LDADD) $(LIBS)
+../../lib/lib645-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib645$(EXEEXT): $(lib645_OBJECTS) $(lib645_DEPENDENCIES) $(EXTRA_lib645_DEPENDENCIES) 
        @rm -f lib645$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib645_OBJECTS) $(lib645_LDADD) $(LIBS)
+../../lib/lib650-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib650$(EXEEXT): $(lib650_OBJECTS) $(lib650_DEPENDENCIES) $(EXTRA_lib650_DEPENDENCIES) 
        @rm -f lib650$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib650_OBJECTS) $(lib650_LDADD) $(LIBS)
+../../lib/lib651-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib651$(EXEEXT): $(lib651_OBJECTS) $(lib651_DEPENDENCIES) $(EXTRA_lib651_DEPENDENCIES) 
        @rm -f lib651$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib651_OBJECTS) $(lib651_LDADD) $(LIBS)
+../../lib/lib652-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib652$(EXEEXT): $(lib652_OBJECTS) $(lib652_DEPENDENCIES) $(EXTRA_lib652_DEPENDENCIES) 
        @rm -f lib652$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib652_OBJECTS) $(lib652_LDADD) $(LIBS)
+../../lib/lib653-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib653$(EXEEXT): $(lib653_OBJECTS) $(lib653_DEPENDENCIES) $(EXTRA_lib653_DEPENDENCIES) 
        @rm -f lib653$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib653_OBJECTS) $(lib653_LDADD) $(LIBS)
+../../lib/lib654-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib654$(EXEEXT): $(lib654_OBJECTS) $(lib654_DEPENDENCIES) $(EXTRA_lib654_DEPENDENCIES) 
        @rm -f lib654$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib654_OBJECTS) $(lib654_LDADD) $(LIBS)
+../../lib/lib655-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib655$(EXEEXT): $(lib655_OBJECTS) $(lib655_DEPENDENCIES) $(EXTRA_lib655_DEPENDENCIES) 
        @rm -f lib655$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib655_OBJECTS) $(lib655_LDADD) $(LIBS)
+../../lib/lib658-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib658-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib658$(EXEEXT): $(lib658_OBJECTS) $(lib658_DEPENDENCIES) $(EXTRA_lib658_DEPENDENCIES) 
        @rm -f lib658$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib658_OBJECTS) $(lib658_LDADD) $(LIBS)
+../../lib/lib659-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib659-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib659$(EXEEXT): $(lib659_OBJECTS) $(lib659_DEPENDENCIES) $(EXTRA_lib659_DEPENDENCIES) 
        @rm -f lib659$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib659_OBJECTS) $(lib659_LDADD) $(LIBS)
+../../lib/lib661-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib661$(EXEEXT): $(lib661_OBJECTS) $(lib661_DEPENDENCIES) $(EXTRA_lib661_DEPENDENCIES) 
        @rm -f lib661$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib661_OBJECTS) $(lib661_LDADD) $(LIBS)
+../../lib/lib666-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib666$(EXEEXT): $(lib666_OBJECTS) $(lib666_DEPENDENCIES) $(EXTRA_lib666_DEPENDENCIES) 
        @rm -f lib666$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib666_OBJECTS) $(lib666_LDADD) $(LIBS)
+../../lib/lib667-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib667-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib667$(EXEEXT): $(lib667_OBJECTS) $(lib667_DEPENDENCIES) $(EXTRA_lib667_DEPENDENCIES) 
        @rm -f lib667$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib667_OBJECTS) $(lib667_LDADD) $(LIBS)
+../../lib/lib668-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib668-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib668$(EXEEXT): $(lib668_OBJECTS) $(lib668_DEPENDENCIES) $(EXTRA_lib668_DEPENDENCIES) 
        @rm -f lib668$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib668_OBJECTS) $(lib668_LDADD) $(LIBS)
+../../lib/lib670-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib670-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib670$(EXEEXT): $(lib670_OBJECTS) $(lib670_DEPENDENCIES) $(EXTRA_lib670_DEPENDENCIES) 
        @rm -f lib670$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib670_OBJECTS) $(lib670_LDADD) $(LIBS)
+../../lib/lib671-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib671-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib671$(EXEEXT): $(lib671_OBJECTS) $(lib671_DEPENDENCIES) $(EXTRA_lib671_DEPENDENCIES) 
        @rm -f lib671$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib671_OBJECTS) $(lib671_LDADD) $(LIBS)
+../../lib/lib672-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib672-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib672$(EXEEXT): $(lib672_OBJECTS) $(lib672_DEPENDENCIES) $(EXTRA_lib672_DEPENDENCIES) 
        @rm -f lib672$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib672_OBJECTS) $(lib672_LDADD) $(LIBS)
+../../lib/lib673-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib673-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib673$(EXEEXT): $(lib673_OBJECTS) $(lib673_DEPENDENCIES) $(EXTRA_lib673_DEPENDENCIES) 
        @rm -f lib673$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib673_OBJECTS) $(lib673_LDADD) $(LIBS)
+../../lib/lib674-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib674-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib674$(EXEEXT): $(lib674_OBJECTS) $(lib674_DEPENDENCIES) $(EXTRA_lib674_DEPENDENCIES) 
        @rm -f lib674$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib674_OBJECTS) $(lib674_LDADD) $(LIBS)
+../../lib/lib676-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib676-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 lib676$(EXEEXT): $(lib676_OBJECTS) $(lib676_DEPENDENCIES) $(EXTRA_lib676_DEPENDENCIES) 
        @rm -f lib676$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib676_OBJECTS) $(lib676_LDADD) $(LIBS)
+../../lib/lib677-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib677-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib677-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3819,6 +4757,8 @@ lib676$(EXEEXT): $(lib676_OBJECTS) $(lib676_DEPENDENCIES) $(EXTRA_lib676_DEPENDE
 lib677$(EXEEXT): $(lib677_OBJECTS) $(lib677_DEPENDENCIES) $(EXTRA_lib677_DEPENDENCIES) 
        @rm -f lib677$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib677_OBJECTS) $(lib677_LDADD) $(LIBS)
+../../lib/lib678-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib678-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/lib678-curl_multibyte.$(OBJEXT): ../../lib/$(am__dirstamp) \
@@ -3827,16 +4767,22 @@ lib677$(EXEEXT): $(lib677_OBJECTS) $(lib677_DEPENDENCIES) $(EXTRA_lib677_DEPENDE
 lib678$(EXEEXT): $(lib678_OBJECTS) $(lib678_DEPENDENCIES) $(EXTRA_lib678_DEPENDENCIES) 
        @rm -f lib678$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(lib678_OBJECTS) $(lib678_LDADD) $(LIBS)
+../../lib/libauthretry-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 libauthretry$(EXEEXT): $(libauthretry_OBJECTS) $(libauthretry_DEPENDENCIES) $(EXTRA_libauthretry_DEPENDENCIES) 
        @rm -f libauthretry$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(libauthretry_OBJECTS) $(libauthretry_LDADD) $(LIBS)
+../../lib/libntlmconnect-timediff.$(OBJEXT):  \
+       ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/libntlmconnect-warnless.$(OBJEXT):  \
        ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp)
 
 libntlmconnect$(EXEEXT): $(libntlmconnect_OBJECTS) $(libntlmconnect_DEPENDENCIES) $(EXTRA_libntlmconnect_DEPENDENCIES) 
        @rm -f libntlmconnect$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(libntlmconnect_OBJECTS) $(libntlmconnect_LDADD) $(LIBS)
+../../lib/libprereq-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
+       ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/libprereq-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 
@@ -3851,129 +4797,324 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1156-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1156-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1500-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1501-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1501-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1502-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1502-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1503-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1503-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1504-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1504-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1505-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1505-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1506-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1506-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1507-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1507-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1508-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1508-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1509-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1509-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1510-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1510-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1511-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1511-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1512-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1512-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1513-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1513-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1514-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1514-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1515-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1515-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1517-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1518-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1520-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1521-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1522-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1523-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1525-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1525-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1526-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1526-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1527-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1528-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1529-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1530-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1530-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1531-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1531-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1532-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1532-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1533-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1533-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1534-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1534-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1535-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1535-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1536-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1536-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1537-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1537-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1538-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1538-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1539-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1539-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1540-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1540-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1542-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1542-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1543-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1550-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1551-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1552-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1553-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1554-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1555-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1556-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1557-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1564-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1564-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1565-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1565-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1567-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1568-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1569-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1591-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1592-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1596-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1905-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1906-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1907-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1908-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1908-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1910-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1910-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1911-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1911-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1912-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1912-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1913-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1913-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1915-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1915-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1916-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1916-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1917-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1917-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1918-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1918-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1919-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1919-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1933-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1933-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1934-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1934-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1935-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1935-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1936-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1936-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1937-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1938-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1939-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1940-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1945-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1946-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1947-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1948-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1955-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib1955-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3010-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3010-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3025-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3025-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3026-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3026-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3027-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib3027-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib500-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib500-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib501-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib502-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib503-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib504-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib505-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib505-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib506-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib507-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib508-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib509-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib510-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib511-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib512-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib513-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib514-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib515-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib516-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib517-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib518-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib519-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib520-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib521-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib523-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib524-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib525-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib526-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib527-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib529-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib530-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib532-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib533-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib537-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib539-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib540-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib540-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib541-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib541-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib542-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib543-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib544-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib545-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib547-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib548-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib549-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib552-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib552-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib553-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib554-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib555-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib555-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib556-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib556-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib557-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib558-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib559-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib560-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib560-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib562-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib564-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib564-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib565-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib566-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib566-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib567-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib568-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib568-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib569-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib569-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib570-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib571-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib572-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib572-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib573-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib573-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib574-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib575-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib575-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib576-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib578-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib578-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib579-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib579-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib582-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib583-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib584-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib585-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib585-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib586-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib587-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib589-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib590-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib591-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib597-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib597-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib598-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib599-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib599-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib643-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib645-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib650-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib651-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib652-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib653-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib654-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib655-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib658-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib658-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib659-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib659-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib661-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib666-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib667-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib667-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib668-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib668-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib670-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib670-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib671-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib671-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib672-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib672-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib673-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib673-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib674-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib674-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib676-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib676-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib677-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib677-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib677-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib678-curl_multibyte.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib678-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/lib678-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libauthretry-timediff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libntlmconnect-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libntlmconnect-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libprereq-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/libprereq-warnless.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkhostname-chkhostname.Po@am__quote@ # am--include-marker
@@ -4095,6 +5236,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542-lib1542.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542-testtrace.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1542-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1543-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1543-lib1518.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1550-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1550-lib1550.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1551-first.Po@am__quote@ # am--include-marker
@@ -4142,6 +5285,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-lib1594.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1596-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1597.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-lib1905.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1905-testutil.Po@am__quote@ # am--include-marker
@@ -4175,6 +5319,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1917-lib1916.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1918-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1918-lib1918.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1919-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1919-lib1919.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1933-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1933-lib1933.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1933-testutil.Po@am__quote@ # am--include-marker
@@ -4193,12 +5339,33 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1938-lib1938.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1939-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1939-lib1939.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1940-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1940-lib1940.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1945-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1945-lib1945.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1946-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1946-lib1940.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1947-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1947-lib1947.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1948-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1948-lib1948.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1955-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1955-lib1955.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib1955-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2301.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib2302.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010-lib3010.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3010-testutil.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025-lib3025.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3025-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3026-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3026-lib3026.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3026-testutil.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3027-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3027-lib3027.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib3027-testutil.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-lib500.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib500-testtrace.Po@am__quote@ # am--include-marker
@@ -4522,20 +5689,6 @@ chkdecimalpoint-chkdecimalpoint.obj: chkdecimalpoint.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkdecimalpoint-mprintf.obj `if test -f '../../lib/mprintf.c'; then $(CYGPATH_W) '../../lib/mprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/mprintf.c'; fi`
 
-../../lib/chkdecimalpoint-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkdecimalpoint-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo -c -o ../../lib/chkdecimalpoint-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/chkdecimalpoint-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkdecimalpoint-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-
-../../lib/chkdecimalpoint-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkdecimalpoint-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo -c -o ../../lib/chkdecimalpoint-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Tpo ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/chkdecimalpoint-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/chkdecimalpoint-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-
 ../../lib/chkdecimalpoint-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(chkdecimalpoint_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/chkdecimalpoint-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Tpo -c -o ../../lib/chkdecimalpoint-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Tpo ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
@@ -4606,6 +5759,20 @@ lib1156-lib1156.obj: lib1156.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1156-lib1156.obj `if test -f 'lib1156.c'; then $(CYGPATH_W) 'lib1156.c'; else $(CYGPATH_W) '$(srcdir)/lib1156.c'; fi`
 
+../../lib/lib1156-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1156-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1156-timediff.Tpo -c -o ../../lib/lib1156-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1156-timediff.Tpo ../../lib/$(DEPDIR)/lib1156-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1156-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1156-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1156-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1156-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1156-timediff.Tpo -c -o ../../lib/lib1156-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1156-timediff.Tpo ../../lib/$(DEPDIR)/lib1156-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1156-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1156-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1156-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1156_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1156-first.o -MD -MP -MF $(DEPDIR)/lib1156-first.Tpo -c -o lib1156-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1156-first.Tpo $(DEPDIR)/lib1156-first.Po
@@ -4662,6 +5829,20 @@ lib1500-lib1500.obj: lib1500.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1500-lib1500.obj `if test -f 'lib1500.c'; then $(CYGPATH_W) 'lib1500.c'; else $(CYGPATH_W) '$(srcdir)/lib1500.c'; fi`
 
+../../lib/lib1500-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1500-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1500-timediff.Tpo -c -o ../../lib/lib1500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1500-timediff.Tpo ../../lib/$(DEPDIR)/lib1500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1500-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1500-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1500-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1500-timediff.Tpo -c -o ../../lib/lib1500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1500-timediff.Tpo ../../lib/$(DEPDIR)/lib1500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1500-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1500-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1500-first.o -MD -MP -MF $(DEPDIR)/lib1500-first.Tpo -c -o lib1500-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1500-first.Tpo $(DEPDIR)/lib1500-first.Po
@@ -4704,6 +5885,20 @@ lib1501-lib1501.obj: lib1501.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1501-lib1501.obj `if test -f 'lib1501.c'; then $(CYGPATH_W) 'lib1501.c'; else $(CYGPATH_W) '$(srcdir)/lib1501.c'; fi`
 
+../../lib/lib1501-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1501-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1501-timediff.Tpo -c -o ../../lib/lib1501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1501-timediff.Tpo ../../lib/$(DEPDIR)/lib1501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1501-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1501-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1501-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1501-timediff.Tpo -c -o ../../lib/lib1501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1501-timediff.Tpo ../../lib/$(DEPDIR)/lib1501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1501-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1501-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1501-first.o -MD -MP -MF $(DEPDIR)/lib1501-first.Tpo -c -o lib1501-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1501-first.Tpo $(DEPDIR)/lib1501-first.Po
@@ -4760,6 +5955,20 @@ lib1502-lib1502.obj: lib1502.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1502-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
 
+../../lib/lib1502-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1502-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1502-timediff.Tpo -c -o ../../lib/lib1502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1502-timediff.Tpo ../../lib/$(DEPDIR)/lib1502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1502-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1502-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1502-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1502-timediff.Tpo -c -o ../../lib/lib1502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1502-timediff.Tpo ../../lib/$(DEPDIR)/lib1502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1502-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1502-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1502-first.o -MD -MP -MF $(DEPDIR)/lib1502-first.Tpo -c -o lib1502-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1502-first.Tpo $(DEPDIR)/lib1502-first.Po
@@ -4816,6 +6025,20 @@ lib1503-lib1502.obj: lib1502.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1503-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
 
+../../lib/lib1503-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1503-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1503-timediff.Tpo -c -o ../../lib/lib1503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1503-timediff.Tpo ../../lib/$(DEPDIR)/lib1503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1503-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1503-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1503-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1503-timediff.Tpo -c -o ../../lib/lib1503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1503-timediff.Tpo ../../lib/$(DEPDIR)/lib1503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1503-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1503-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1503-first.o -MD -MP -MF $(DEPDIR)/lib1503-first.Tpo -c -o lib1503-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1503-first.Tpo $(DEPDIR)/lib1503-first.Po
@@ -4872,6 +6095,20 @@ lib1504-lib1502.obj: lib1502.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1504-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
 
+../../lib/lib1504-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1504-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1504-timediff.Tpo -c -o ../../lib/lib1504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1504-timediff.Tpo ../../lib/$(DEPDIR)/lib1504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1504-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1504-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1504-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1504-timediff.Tpo -c -o ../../lib/lib1504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1504-timediff.Tpo ../../lib/$(DEPDIR)/lib1504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1504-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1504-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1504-first.o -MD -MP -MF $(DEPDIR)/lib1504-first.Tpo -c -o lib1504-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1504-first.Tpo $(DEPDIR)/lib1504-first.Po
@@ -4928,6 +6165,20 @@ lib1505-lib1502.obj: lib1502.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1505-lib1502.obj `if test -f 'lib1502.c'; then $(CYGPATH_W) 'lib1502.c'; else $(CYGPATH_W) '$(srcdir)/lib1502.c'; fi`
 
+../../lib/lib1505-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1505-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1505-timediff.Tpo -c -o ../../lib/lib1505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1505-timediff.Tpo ../../lib/$(DEPDIR)/lib1505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1505-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1505-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1505-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1505-timediff.Tpo -c -o ../../lib/lib1505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1505-timediff.Tpo ../../lib/$(DEPDIR)/lib1505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1505-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1505-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1505-first.o -MD -MP -MF $(DEPDIR)/lib1505-first.Tpo -c -o lib1505-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1505-first.Tpo $(DEPDIR)/lib1505-first.Po
@@ -4984,6 +6235,20 @@ lib1506-lib1506.obj: lib1506.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1506-lib1506.obj `if test -f 'lib1506.c'; then $(CYGPATH_W) 'lib1506.c'; else $(CYGPATH_W) '$(srcdir)/lib1506.c'; fi`
 
+../../lib/lib1506-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1506-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1506-timediff.Tpo -c -o ../../lib/lib1506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1506-timediff.Tpo ../../lib/$(DEPDIR)/lib1506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1506-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1506-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1506-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1506-timediff.Tpo -c -o ../../lib/lib1506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1506-timediff.Tpo ../../lib/$(DEPDIR)/lib1506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1506-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1506-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1506-first.o -MD -MP -MF $(DEPDIR)/lib1506-first.Tpo -c -o lib1506-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1506-first.Tpo $(DEPDIR)/lib1506-first.Po
@@ -5040,6 +6305,20 @@ lib1507-lib1507.obj: lib1507.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1507-lib1507.obj `if test -f 'lib1507.c'; then $(CYGPATH_W) 'lib1507.c'; else $(CYGPATH_W) '$(srcdir)/lib1507.c'; fi`
 
+../../lib/lib1507-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1507-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1507-timediff.Tpo -c -o ../../lib/lib1507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1507-timediff.Tpo ../../lib/$(DEPDIR)/lib1507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1507-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1507-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1507-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1507-timediff.Tpo -c -o ../../lib/lib1507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1507-timediff.Tpo ../../lib/$(DEPDIR)/lib1507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1507-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1507-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1507-first.o -MD -MP -MF $(DEPDIR)/lib1507-first.Tpo -c -o lib1507-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1507-first.Tpo $(DEPDIR)/lib1507-first.Po
@@ -5096,6 +6375,20 @@ lib1508-lib1508.obj: lib1508.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1508-lib1508.obj `if test -f 'lib1508.c'; then $(CYGPATH_W) 'lib1508.c'; else $(CYGPATH_W) '$(srcdir)/lib1508.c'; fi`
 
+../../lib/lib1508-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1508-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1508-timediff.Tpo -c -o ../../lib/lib1508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1508-timediff.Tpo ../../lib/$(DEPDIR)/lib1508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1508-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1508-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1508-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1508-timediff.Tpo -c -o ../../lib/lib1508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1508-timediff.Tpo ../../lib/$(DEPDIR)/lib1508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1508-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1508-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1508-first.o -MD -MP -MF $(DEPDIR)/lib1508-first.Tpo -c -o lib1508-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1508-first.Tpo $(DEPDIR)/lib1508-first.Po
@@ -5152,6 +6445,20 @@ lib1509-lib1509.obj: lib1509.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1509-lib1509.obj `if test -f 'lib1509.c'; then $(CYGPATH_W) 'lib1509.c'; else $(CYGPATH_W) '$(srcdir)/lib1509.c'; fi`
 
+../../lib/lib1509-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1509-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1509-timediff.Tpo -c -o ../../lib/lib1509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1509-timediff.Tpo ../../lib/$(DEPDIR)/lib1509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1509-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1509-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1509-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1509-timediff.Tpo -c -o ../../lib/lib1509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1509-timediff.Tpo ../../lib/$(DEPDIR)/lib1509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1509-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1509-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1509-first.o -MD -MP -MF $(DEPDIR)/lib1509-first.Tpo -c -o lib1509-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1509-first.Tpo $(DEPDIR)/lib1509-first.Po
@@ -5208,6 +6515,20 @@ lib1510-lib1510.obj: lib1510.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1510-lib1510.obj `if test -f 'lib1510.c'; then $(CYGPATH_W) 'lib1510.c'; else $(CYGPATH_W) '$(srcdir)/lib1510.c'; fi`
 
+../../lib/lib1510-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1510-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1510-timediff.Tpo -c -o ../../lib/lib1510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1510-timediff.Tpo ../../lib/$(DEPDIR)/lib1510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1510-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1510-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1510-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1510-timediff.Tpo -c -o ../../lib/lib1510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1510-timediff.Tpo ../../lib/$(DEPDIR)/lib1510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1510-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1510-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1510-first.o -MD -MP -MF $(DEPDIR)/lib1510-first.Tpo -c -o lib1510-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1510-first.Tpo $(DEPDIR)/lib1510-first.Po
@@ -5264,6 +6585,20 @@ lib1511-lib1511.obj: lib1511.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1511-lib1511.obj `if test -f 'lib1511.c'; then $(CYGPATH_W) 'lib1511.c'; else $(CYGPATH_W) '$(srcdir)/lib1511.c'; fi`
 
+../../lib/lib1511-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1511-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1511-timediff.Tpo -c -o ../../lib/lib1511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1511-timediff.Tpo ../../lib/$(DEPDIR)/lib1511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1511-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1511-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1511-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1511-timediff.Tpo -c -o ../../lib/lib1511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1511-timediff.Tpo ../../lib/$(DEPDIR)/lib1511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1511-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1511-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1511-first.o -MD -MP -MF $(DEPDIR)/lib1511-first.Tpo -c -o lib1511-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1511-first.Tpo $(DEPDIR)/lib1511-first.Po
@@ -5320,6 +6655,20 @@ lib1512-lib1512.obj: lib1512.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1512-lib1512.obj `if test -f 'lib1512.c'; then $(CYGPATH_W) 'lib1512.c'; else $(CYGPATH_W) '$(srcdir)/lib1512.c'; fi`
 
+../../lib/lib1512-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1512-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1512-timediff.Tpo -c -o ../../lib/lib1512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1512-timediff.Tpo ../../lib/$(DEPDIR)/lib1512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1512-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1512-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1512-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1512-timediff.Tpo -c -o ../../lib/lib1512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1512-timediff.Tpo ../../lib/$(DEPDIR)/lib1512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1512-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1512-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1512-first.o -MD -MP -MF $(DEPDIR)/lib1512-first.Tpo -c -o lib1512-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1512-first.Tpo $(DEPDIR)/lib1512-first.Po
@@ -5376,6 +6725,20 @@ lib1513-lib1513.obj: lib1513.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1513-lib1513.obj `if test -f 'lib1513.c'; then $(CYGPATH_W) 'lib1513.c'; else $(CYGPATH_W) '$(srcdir)/lib1513.c'; fi`
 
+../../lib/lib1513-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1513-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1513-timediff.Tpo -c -o ../../lib/lib1513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1513-timediff.Tpo ../../lib/$(DEPDIR)/lib1513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1513-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1513-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1513-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1513-timediff.Tpo -c -o ../../lib/lib1513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1513-timediff.Tpo ../../lib/$(DEPDIR)/lib1513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1513-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1513-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1513-first.o -MD -MP -MF $(DEPDIR)/lib1513-first.Tpo -c -o lib1513-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1513-first.Tpo $(DEPDIR)/lib1513-first.Po
@@ -5432,6 +6795,20 @@ lib1514-lib1514.obj: lib1514.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1514-lib1514.obj `if test -f 'lib1514.c'; then $(CYGPATH_W) 'lib1514.c'; else $(CYGPATH_W) '$(srcdir)/lib1514.c'; fi`
 
+../../lib/lib1514-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1514-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1514-timediff.Tpo -c -o ../../lib/lib1514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1514-timediff.Tpo ../../lib/$(DEPDIR)/lib1514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1514-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1514-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1514-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1514-timediff.Tpo -c -o ../../lib/lib1514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1514-timediff.Tpo ../../lib/$(DEPDIR)/lib1514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1514-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1514-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1514-first.o -MD -MP -MF $(DEPDIR)/lib1514-first.Tpo -c -o lib1514-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1514-first.Tpo $(DEPDIR)/lib1514-first.Po
@@ -5488,6 +6865,20 @@ lib1515-lib1515.obj: lib1515.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1515-lib1515.obj `if test -f 'lib1515.c'; then $(CYGPATH_W) 'lib1515.c'; else $(CYGPATH_W) '$(srcdir)/lib1515.c'; fi`
 
+../../lib/lib1515-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1515-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1515-timediff.Tpo -c -o ../../lib/lib1515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1515-timediff.Tpo ../../lib/$(DEPDIR)/lib1515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1515-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1515-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1515-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1515-timediff.Tpo -c -o ../../lib/lib1515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1515-timediff.Tpo ../../lib/$(DEPDIR)/lib1515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1515-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1515-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1515-first.o -MD -MP -MF $(DEPDIR)/lib1515-first.Tpo -c -o lib1515-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1515-first.Tpo $(DEPDIR)/lib1515-first.Po
@@ -5544,6 +6935,20 @@ lib1517-lib1517.obj: lib1517.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1517-lib1517.obj `if test -f 'lib1517.c'; then $(CYGPATH_W) 'lib1517.c'; else $(CYGPATH_W) '$(srcdir)/lib1517.c'; fi`
 
+../../lib/lib1517-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1517-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1517-timediff.Tpo -c -o ../../lib/lib1517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1517-timediff.Tpo ../../lib/$(DEPDIR)/lib1517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1517-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1517-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1517-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1517-timediff.Tpo -c -o ../../lib/lib1517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1517-timediff.Tpo ../../lib/$(DEPDIR)/lib1517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1517-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1517-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1517-first.o -MD -MP -MF $(DEPDIR)/lib1517-first.Tpo -c -o lib1517-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1517-first.Tpo $(DEPDIR)/lib1517-first.Po
@@ -5572,6 +6977,20 @@ lib1518-lib1518.obj: lib1518.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1518-lib1518.obj `if test -f 'lib1518.c'; then $(CYGPATH_W) 'lib1518.c'; else $(CYGPATH_W) '$(srcdir)/lib1518.c'; fi`
 
+../../lib/lib1518-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1518-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1518-timediff.Tpo -c -o ../../lib/lib1518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1518-timediff.Tpo ../../lib/$(DEPDIR)/lib1518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1518-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1518-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1518-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1518-timediff.Tpo -c -o ../../lib/lib1518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1518-timediff.Tpo ../../lib/$(DEPDIR)/lib1518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1518-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1518-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1518-first.o -MD -MP -MF $(DEPDIR)/lib1518-first.Tpo -c -o lib1518-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1518-first.Tpo $(DEPDIR)/lib1518-first.Po
@@ -5600,6 +7019,20 @@ lib1520-lib1520.obj: lib1520.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1520-lib1520.obj `if test -f 'lib1520.c'; then $(CYGPATH_W) 'lib1520.c'; else $(CYGPATH_W) '$(srcdir)/lib1520.c'; fi`
 
+../../lib/lib1520-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1520-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1520-timediff.Tpo -c -o ../../lib/lib1520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1520-timediff.Tpo ../../lib/$(DEPDIR)/lib1520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1520-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1520-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1520-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1520-timediff.Tpo -c -o ../../lib/lib1520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1520-timediff.Tpo ../../lib/$(DEPDIR)/lib1520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1520-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1520-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1520-first.o -MD -MP -MF $(DEPDIR)/lib1520-first.Tpo -c -o lib1520-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1520-first.Tpo $(DEPDIR)/lib1520-first.Po
@@ -5628,6 +7061,20 @@ lib1521-lib1521.obj: lib1521.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1521-lib1521.obj `if test -f 'lib1521.c'; then $(CYGPATH_W) 'lib1521.c'; else $(CYGPATH_W) '$(srcdir)/lib1521.c'; fi`
 
+../../lib/lib1521-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1521-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1521-timediff.Tpo -c -o ../../lib/lib1521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1521-timediff.Tpo ../../lib/$(DEPDIR)/lib1521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1521-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1521-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1521-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1521-timediff.Tpo -c -o ../../lib/lib1521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1521-timediff.Tpo ../../lib/$(DEPDIR)/lib1521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1521-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1521-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1521-first.o -MD -MP -MF $(DEPDIR)/lib1521-first.Tpo -c -o lib1521-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1521-first.Tpo $(DEPDIR)/lib1521-first.Po
@@ -5656,6 +7103,20 @@ lib1522-lib1522.obj: lib1522.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1522-lib1522.obj `if test -f 'lib1522.c'; then $(CYGPATH_W) 'lib1522.c'; else $(CYGPATH_W) '$(srcdir)/lib1522.c'; fi`
 
+../../lib/lib1522-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1522-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1522-timediff.Tpo -c -o ../../lib/lib1522-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1522-timediff.Tpo ../../lib/$(DEPDIR)/lib1522-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1522-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1522-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1522-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1522-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1522-timediff.Tpo -c -o ../../lib/lib1522-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1522-timediff.Tpo ../../lib/$(DEPDIR)/lib1522-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1522-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1522-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1522-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1522_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1522-first.o -MD -MP -MF $(DEPDIR)/lib1522-first.Tpo -c -o lib1522-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1522-first.Tpo $(DEPDIR)/lib1522-first.Po
@@ -5712,6 +7173,20 @@ lib1523-lib1523.obj: lib1523.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1523-lib1523.obj `if test -f 'lib1523.c'; then $(CYGPATH_W) 'lib1523.c'; else $(CYGPATH_W) '$(srcdir)/lib1523.c'; fi`
 
+../../lib/lib1523-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1523-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1523-timediff.Tpo -c -o ../../lib/lib1523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1523-timediff.Tpo ../../lib/$(DEPDIR)/lib1523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1523-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1523-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1523-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1523-timediff.Tpo -c -o ../../lib/lib1523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1523-timediff.Tpo ../../lib/$(DEPDIR)/lib1523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1523-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1523-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1523-first.o -MD -MP -MF $(DEPDIR)/lib1523-first.Tpo -c -o lib1523-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1523-first.Tpo $(DEPDIR)/lib1523-first.Po
@@ -5740,6 +7215,20 @@ lib1525-lib1525.obj: lib1525.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1525-lib1525.obj `if test -f 'lib1525.c'; then $(CYGPATH_W) 'lib1525.c'; else $(CYGPATH_W) '$(srcdir)/lib1525.c'; fi`
 
+../../lib/lib1525-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1525-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1525-timediff.Tpo -c -o ../../lib/lib1525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1525-timediff.Tpo ../../lib/$(DEPDIR)/lib1525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1525-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1525-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1525-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1525-timediff.Tpo -c -o ../../lib/lib1525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1525-timediff.Tpo ../../lib/$(DEPDIR)/lib1525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1525-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1525-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1525-first.o -MD -MP -MF $(DEPDIR)/lib1525-first.Tpo -c -o lib1525-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1525-first.Tpo $(DEPDIR)/lib1525-first.Po
@@ -5796,6 +7285,20 @@ lib1526-lib1526.obj: lib1526.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1526-lib1526.obj `if test -f 'lib1526.c'; then $(CYGPATH_W) 'lib1526.c'; else $(CYGPATH_W) '$(srcdir)/lib1526.c'; fi`
 
+../../lib/lib1526-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1526-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1526-timediff.Tpo -c -o ../../lib/lib1526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1526-timediff.Tpo ../../lib/$(DEPDIR)/lib1526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1526-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1526-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1526-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1526-timediff.Tpo -c -o ../../lib/lib1526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1526-timediff.Tpo ../../lib/$(DEPDIR)/lib1526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1526-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1526-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1526-first.o -MD -MP -MF $(DEPDIR)/lib1526-first.Tpo -c -o lib1526-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1526-first.Tpo $(DEPDIR)/lib1526-first.Po
@@ -5852,6 +7355,20 @@ lib1527-lib1527.obj: lib1527.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1527-lib1527.obj `if test -f 'lib1527.c'; then $(CYGPATH_W) 'lib1527.c'; else $(CYGPATH_W) '$(srcdir)/lib1527.c'; fi`
 
+../../lib/lib1527-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1527-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1527-timediff.Tpo -c -o ../../lib/lib1527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1527-timediff.Tpo ../../lib/$(DEPDIR)/lib1527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1527-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1527-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1527-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1527-timediff.Tpo -c -o ../../lib/lib1527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1527-timediff.Tpo ../../lib/$(DEPDIR)/lib1527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1527-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1527-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1527-first.o -MD -MP -MF $(DEPDIR)/lib1527-first.Tpo -c -o lib1527-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1527-first.Tpo $(DEPDIR)/lib1527-first.Po
@@ -5908,6 +7425,20 @@ lib1528-lib1528.obj: lib1528.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1528-lib1528.obj `if test -f 'lib1528.c'; then $(CYGPATH_W) 'lib1528.c'; else $(CYGPATH_W) '$(srcdir)/lib1528.c'; fi`
 
+../../lib/lib1528-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1528-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1528-timediff.Tpo -c -o ../../lib/lib1528-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1528-timediff.Tpo ../../lib/$(DEPDIR)/lib1528-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1528-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1528-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1528-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1528-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1528-timediff.Tpo -c -o ../../lib/lib1528-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1528-timediff.Tpo ../../lib/$(DEPDIR)/lib1528-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1528-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1528-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1528-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1528_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1528-first.o -MD -MP -MF $(DEPDIR)/lib1528-first.Tpo -c -o lib1528-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1528-first.Tpo $(DEPDIR)/lib1528-first.Po
@@ -5964,6 +7495,20 @@ lib1529-lib1529.obj: lib1529.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1529-lib1529.obj `if test -f 'lib1529.c'; then $(CYGPATH_W) 'lib1529.c'; else $(CYGPATH_W) '$(srcdir)/lib1529.c'; fi`
 
+../../lib/lib1529-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1529-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1529-timediff.Tpo -c -o ../../lib/lib1529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1529-timediff.Tpo ../../lib/$(DEPDIR)/lib1529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1529-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1529-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1529-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1529-timediff.Tpo -c -o ../../lib/lib1529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1529-timediff.Tpo ../../lib/$(DEPDIR)/lib1529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1529-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1529-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1529-first.o -MD -MP -MF $(DEPDIR)/lib1529-first.Tpo -c -o lib1529-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1529-first.Tpo $(DEPDIR)/lib1529-first.Po
@@ -6020,6 +7565,20 @@ lib1530-lib1530.obj: lib1530.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1530-lib1530.obj `if test -f 'lib1530.c'; then $(CYGPATH_W) 'lib1530.c'; else $(CYGPATH_W) '$(srcdir)/lib1530.c'; fi`
 
+../../lib/lib1530-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-timediff.Tpo -c -o ../../lib/lib1530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-timediff.Tpo ../../lib/$(DEPDIR)/lib1530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1530-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1530-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1530-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1530-timediff.Tpo -c -o ../../lib/lib1530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1530-timediff.Tpo ../../lib/$(DEPDIR)/lib1530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1530-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1530-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1530-first.o -MD -MP -MF $(DEPDIR)/lib1530-first.Tpo -c -o lib1530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1530-first.Tpo $(DEPDIR)/lib1530-first.Po
@@ -6076,6 +7635,20 @@ lib1531-lib1531.obj: lib1531.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1531-lib1531.obj `if test -f 'lib1531.c'; then $(CYGPATH_W) 'lib1531.c'; else $(CYGPATH_W) '$(srcdir)/lib1531.c'; fi`
 
+../../lib/lib1531-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-timediff.Tpo -c -o ../../lib/lib1531-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-timediff.Tpo ../../lib/$(DEPDIR)/lib1531-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1531-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1531-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1531-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1531-timediff.Tpo -c -o ../../lib/lib1531-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1531-timediff.Tpo ../../lib/$(DEPDIR)/lib1531-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1531-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1531-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1531-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1531_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1531-first.o -MD -MP -MF $(DEPDIR)/lib1531-first.Tpo -c -o lib1531-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1531-first.Tpo $(DEPDIR)/lib1531-first.Po
@@ -6132,6 +7705,20 @@ lib1532-lib1532.obj: lib1532.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1532-lib1532.obj `if test -f 'lib1532.c'; then $(CYGPATH_W) 'lib1532.c'; else $(CYGPATH_W) '$(srcdir)/lib1532.c'; fi`
 
+../../lib/lib1532-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1532-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1532-timediff.Tpo -c -o ../../lib/lib1532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1532-timediff.Tpo ../../lib/$(DEPDIR)/lib1532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1532-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1532-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1532-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1532-timediff.Tpo -c -o ../../lib/lib1532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1532-timediff.Tpo ../../lib/$(DEPDIR)/lib1532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1532-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1532-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1532-first.o -MD -MP -MF $(DEPDIR)/lib1532-first.Tpo -c -o lib1532-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1532-first.Tpo $(DEPDIR)/lib1532-first.Po
@@ -6188,6 +7775,20 @@ lib1533-lib1533.obj: lib1533.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1533-lib1533.obj `if test -f 'lib1533.c'; then $(CYGPATH_W) 'lib1533.c'; else $(CYGPATH_W) '$(srcdir)/lib1533.c'; fi`
 
+../../lib/lib1533-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1533-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1533-timediff.Tpo -c -o ../../lib/lib1533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1533-timediff.Tpo ../../lib/$(DEPDIR)/lib1533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1533-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1533-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1533-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1533-timediff.Tpo -c -o ../../lib/lib1533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1533-timediff.Tpo ../../lib/$(DEPDIR)/lib1533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1533-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1533-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1533-first.o -MD -MP -MF $(DEPDIR)/lib1533-first.Tpo -c -o lib1533-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1533-first.Tpo $(DEPDIR)/lib1533-first.Po
@@ -6244,6 +7845,20 @@ lib1534-lib1534.obj: lib1534.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1534-lib1534.obj `if test -f 'lib1534.c'; then $(CYGPATH_W) 'lib1534.c'; else $(CYGPATH_W) '$(srcdir)/lib1534.c'; fi`
 
+../../lib/lib1534-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1534-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1534-timediff.Tpo -c -o ../../lib/lib1534-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1534-timediff.Tpo ../../lib/$(DEPDIR)/lib1534-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1534-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1534-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1534-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1534-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1534-timediff.Tpo -c -o ../../lib/lib1534-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1534-timediff.Tpo ../../lib/$(DEPDIR)/lib1534-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1534-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1534-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1534-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1534_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1534-first.o -MD -MP -MF $(DEPDIR)/lib1534-first.Tpo -c -o lib1534-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1534-first.Tpo $(DEPDIR)/lib1534-first.Po
@@ -6300,6 +7915,20 @@ lib1535-lib1535.obj: lib1535.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1535-lib1535.obj `if test -f 'lib1535.c'; then $(CYGPATH_W) 'lib1535.c'; else $(CYGPATH_W) '$(srcdir)/lib1535.c'; fi`
 
+../../lib/lib1535-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1535-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1535-timediff.Tpo -c -o ../../lib/lib1535-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1535-timediff.Tpo ../../lib/$(DEPDIR)/lib1535-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1535-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1535-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1535-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1535-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1535-timediff.Tpo -c -o ../../lib/lib1535-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1535-timediff.Tpo ../../lib/$(DEPDIR)/lib1535-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1535-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1535-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1535-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1535_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1535-first.o -MD -MP -MF $(DEPDIR)/lib1535-first.Tpo -c -o lib1535-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1535-first.Tpo $(DEPDIR)/lib1535-first.Po
@@ -6356,6 +7985,20 @@ lib1536-lib1536.obj: lib1536.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1536-lib1536.obj `if test -f 'lib1536.c'; then $(CYGPATH_W) 'lib1536.c'; else $(CYGPATH_W) '$(srcdir)/lib1536.c'; fi`
 
+../../lib/lib1536-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1536-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1536-timediff.Tpo -c -o ../../lib/lib1536-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1536-timediff.Tpo ../../lib/$(DEPDIR)/lib1536-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1536-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1536-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1536-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1536-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1536-timediff.Tpo -c -o ../../lib/lib1536-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1536-timediff.Tpo ../../lib/$(DEPDIR)/lib1536-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1536-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1536-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1536-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1536_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1536-first.o -MD -MP -MF $(DEPDIR)/lib1536-first.Tpo -c -o lib1536-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1536-first.Tpo $(DEPDIR)/lib1536-first.Po
@@ -6412,6 +8055,20 @@ lib1537-lib1537.obj: lib1537.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1537-lib1537.obj `if test -f 'lib1537.c'; then $(CYGPATH_W) 'lib1537.c'; else $(CYGPATH_W) '$(srcdir)/lib1537.c'; fi`
 
+../../lib/lib1537-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1537-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1537-timediff.Tpo -c -o ../../lib/lib1537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1537-timediff.Tpo ../../lib/$(DEPDIR)/lib1537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1537-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1537-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1537-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1537-timediff.Tpo -c -o ../../lib/lib1537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1537-timediff.Tpo ../../lib/$(DEPDIR)/lib1537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1537-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1537-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1537-first.o -MD -MP -MF $(DEPDIR)/lib1537-first.Tpo -c -o lib1537-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1537-first.Tpo $(DEPDIR)/lib1537-first.Po
@@ -6468,6 +8125,20 @@ lib1538-lib1538.obj: lib1538.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1538-lib1538.obj `if test -f 'lib1538.c'; then $(CYGPATH_W) 'lib1538.c'; else $(CYGPATH_W) '$(srcdir)/lib1538.c'; fi`
 
+../../lib/lib1538-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1538-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1538-timediff.Tpo -c -o ../../lib/lib1538-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1538-timediff.Tpo ../../lib/$(DEPDIR)/lib1538-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1538-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1538-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1538-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1538-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1538-timediff.Tpo -c -o ../../lib/lib1538-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1538-timediff.Tpo ../../lib/$(DEPDIR)/lib1538-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1538-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1538-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1538-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1538_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1538-first.o -MD -MP -MF $(DEPDIR)/lib1538-first.Tpo -c -o lib1538-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1538-first.Tpo $(DEPDIR)/lib1538-first.Po
@@ -6524,6 +8195,20 @@ lib1539-lib1514.obj: lib1514.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1539-lib1514.obj `if test -f 'lib1514.c'; then $(CYGPATH_W) 'lib1514.c'; else $(CYGPATH_W) '$(srcdir)/lib1514.c'; fi`
 
+../../lib/lib1539-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1539-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1539-timediff.Tpo -c -o ../../lib/lib1539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1539-timediff.Tpo ../../lib/$(DEPDIR)/lib1539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1539-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1539-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1539-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1539-timediff.Tpo -c -o ../../lib/lib1539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1539-timediff.Tpo ../../lib/$(DEPDIR)/lib1539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1539-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1539-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1539-first.o -MD -MP -MF $(DEPDIR)/lib1539-first.Tpo -c -o lib1539-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1539-first.Tpo $(DEPDIR)/lib1539-first.Po
@@ -6580,6 +8265,20 @@ lib1540-lib1540.obj: lib1540.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1540-lib1540.obj `if test -f 'lib1540.c'; then $(CYGPATH_W) 'lib1540.c'; else $(CYGPATH_W) '$(srcdir)/lib1540.c'; fi`
 
+../../lib/lib1540-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1540-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1540-timediff.Tpo -c -o ../../lib/lib1540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1540-timediff.Tpo ../../lib/$(DEPDIR)/lib1540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1540-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1540-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1540-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1540-timediff.Tpo -c -o ../../lib/lib1540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1540-timediff.Tpo ../../lib/$(DEPDIR)/lib1540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1540-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1540-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1540-first.o -MD -MP -MF $(DEPDIR)/lib1540-first.Tpo -c -o lib1540-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1540-first.Tpo $(DEPDIR)/lib1540-first.Po
@@ -6636,6 +8335,20 @@ lib1542-lib1542.obj: lib1542.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1542-lib1542.obj `if test -f 'lib1542.c'; then $(CYGPATH_W) 'lib1542.c'; else $(CYGPATH_W) '$(srcdir)/lib1542.c'; fi`
 
+../../lib/lib1542-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1542-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1542-timediff.Tpo -c -o ../../lib/lib1542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1542-timediff.Tpo ../../lib/$(DEPDIR)/lib1542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1542-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1542-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1542-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1542-timediff.Tpo -c -o ../../lib/lib1542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1542-timediff.Tpo ../../lib/$(DEPDIR)/lib1542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1542-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1542-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1542-first.o -MD -MP -MF $(DEPDIR)/lib1542-first.Tpo -c -o lib1542-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1542-first.Tpo $(DEPDIR)/lib1542-first.Po
@@ -6692,6 +8405,48 @@ lib1542-testtrace.obj: testtrace.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1542-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
+lib1543-lib1518.o: lib1518.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-lib1518.o -MD -MP -MF $(DEPDIR)/lib1543-lib1518.Tpo -c -o lib1543-lib1518.o `test -f 'lib1518.c' || echo '$(srcdir)/'`lib1518.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-lib1518.Tpo $(DEPDIR)/lib1543-lib1518.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1518.c' object='lib1543-lib1518.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-lib1518.o `test -f 'lib1518.c' || echo '$(srcdir)/'`lib1518.c
+
+lib1543-lib1518.obj: lib1518.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-lib1518.obj -MD -MP -MF $(DEPDIR)/lib1543-lib1518.Tpo -c -o lib1543-lib1518.obj `if test -f 'lib1518.c'; then $(CYGPATH_W) 'lib1518.c'; else $(CYGPATH_W) '$(srcdir)/lib1518.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-lib1518.Tpo $(DEPDIR)/lib1543-lib1518.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1518.c' object='lib1543-lib1518.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-lib1518.obj `if test -f 'lib1518.c'; then $(CYGPATH_W) 'lib1518.c'; else $(CYGPATH_W) '$(srcdir)/lib1518.c'; fi`
+
+../../lib/lib1543-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1543-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1543-timediff.Tpo -c -o ../../lib/lib1543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1543-timediff.Tpo ../../lib/$(DEPDIR)/lib1543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1543-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1543-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1543-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1543-timediff.Tpo -c -o ../../lib/lib1543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1543-timediff.Tpo ../../lib/$(DEPDIR)/lib1543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1543-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1543-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-first.o -MD -MP -MF $(DEPDIR)/lib1543-first.Tpo -c -o lib1543-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-first.Tpo $(DEPDIR)/lib1543-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1543-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1543-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1543-first.obj -MD -MP -MF $(DEPDIR)/lib1543-first.Tpo -c -o lib1543-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1543-first.Tpo $(DEPDIR)/lib1543-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1543-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1543-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
 lib1550-lib1550.o: lib1550.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1550-lib1550.o -MD -MP -MF $(DEPDIR)/lib1550-lib1550.Tpo -c -o lib1550-lib1550.o `test -f 'lib1550.c' || echo '$(srcdir)/'`lib1550.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1550-lib1550.Tpo $(DEPDIR)/lib1550-lib1550.Po
@@ -6706,6 +8461,20 @@ lib1550-lib1550.obj: lib1550.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1550-lib1550.obj `if test -f 'lib1550.c'; then $(CYGPATH_W) 'lib1550.c'; else $(CYGPATH_W) '$(srcdir)/lib1550.c'; fi`
 
+../../lib/lib1550-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1550-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1550-timediff.Tpo -c -o ../../lib/lib1550-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1550-timediff.Tpo ../../lib/$(DEPDIR)/lib1550-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1550-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1550-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1550-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1550-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1550-timediff.Tpo -c -o ../../lib/lib1550-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1550-timediff.Tpo ../../lib/$(DEPDIR)/lib1550-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1550-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1550-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1550-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1550_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1550-first.o -MD -MP -MF $(DEPDIR)/lib1550-first.Tpo -c -o lib1550-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1550-first.Tpo $(DEPDIR)/lib1550-first.Po
@@ -6734,6 +8503,20 @@ lib1551-lib1551.obj: lib1551.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1551-lib1551.obj `if test -f 'lib1551.c'; then $(CYGPATH_W) 'lib1551.c'; else $(CYGPATH_W) '$(srcdir)/lib1551.c'; fi`
 
+../../lib/lib1551-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1551-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1551-timediff.Tpo -c -o ../../lib/lib1551-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1551-timediff.Tpo ../../lib/$(DEPDIR)/lib1551-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1551-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1551-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1551-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1551-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1551-timediff.Tpo -c -o ../../lib/lib1551-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1551-timediff.Tpo ../../lib/$(DEPDIR)/lib1551-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1551-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1551-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1551-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1551_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1551-first.o -MD -MP -MF $(DEPDIR)/lib1551-first.Tpo -c -o lib1551-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1551-first.Tpo $(DEPDIR)/lib1551-first.Po
@@ -6762,6 +8545,20 @@ lib1552-lib1552.obj: lib1552.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1552-lib1552.obj `if test -f 'lib1552.c'; then $(CYGPATH_W) 'lib1552.c'; else $(CYGPATH_W) '$(srcdir)/lib1552.c'; fi`
 
+../../lib/lib1552-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1552-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1552-timediff.Tpo -c -o ../../lib/lib1552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1552-timediff.Tpo ../../lib/$(DEPDIR)/lib1552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1552-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1552-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1552-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1552-timediff.Tpo -c -o ../../lib/lib1552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1552-timediff.Tpo ../../lib/$(DEPDIR)/lib1552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1552-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1552-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1552-first.o -MD -MP -MF $(DEPDIR)/lib1552-first.Tpo -c -o lib1552-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1552-first.Tpo $(DEPDIR)/lib1552-first.Po
@@ -6804,6 +8601,20 @@ lib1553-lib1553.obj: lib1553.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1553-lib1553.obj `if test -f 'lib1553.c'; then $(CYGPATH_W) 'lib1553.c'; else $(CYGPATH_W) '$(srcdir)/lib1553.c'; fi`
 
+../../lib/lib1553-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1553-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1553-timediff.Tpo -c -o ../../lib/lib1553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1553-timediff.Tpo ../../lib/$(DEPDIR)/lib1553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1553-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1553-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1553-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1553-timediff.Tpo -c -o ../../lib/lib1553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1553-timediff.Tpo ../../lib/$(DEPDIR)/lib1553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1553-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1553-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1553-first.o -MD -MP -MF $(DEPDIR)/lib1553-first.Tpo -c -o lib1553-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1553-first.Tpo $(DEPDIR)/lib1553-first.Po
@@ -6846,6 +8657,20 @@ lib1554-lib1554.obj: lib1554.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1554-lib1554.obj `if test -f 'lib1554.c'; then $(CYGPATH_W) 'lib1554.c'; else $(CYGPATH_W) '$(srcdir)/lib1554.c'; fi`
 
+../../lib/lib1554-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1554-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1554-timediff.Tpo -c -o ../../lib/lib1554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1554-timediff.Tpo ../../lib/$(DEPDIR)/lib1554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1554-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1554-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1554-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1554-timediff.Tpo -c -o ../../lib/lib1554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1554-timediff.Tpo ../../lib/$(DEPDIR)/lib1554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1554-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1554-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1554-first.o -MD -MP -MF $(DEPDIR)/lib1554-first.Tpo -c -o lib1554-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1554-first.Tpo $(DEPDIR)/lib1554-first.Po
@@ -6874,6 +8699,20 @@ lib1555-lib1555.obj: lib1555.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1555-lib1555.obj `if test -f 'lib1555.c'; then $(CYGPATH_W) 'lib1555.c'; else $(CYGPATH_W) '$(srcdir)/lib1555.c'; fi`
 
+../../lib/lib1555-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1555-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1555-timediff.Tpo -c -o ../../lib/lib1555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1555-timediff.Tpo ../../lib/$(DEPDIR)/lib1555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1555-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1555-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1555-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1555-timediff.Tpo -c -o ../../lib/lib1555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1555-timediff.Tpo ../../lib/$(DEPDIR)/lib1555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1555-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1555-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1555-first.o -MD -MP -MF $(DEPDIR)/lib1555-first.Tpo -c -o lib1555-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1555-first.Tpo $(DEPDIR)/lib1555-first.Po
@@ -6930,6 +8769,20 @@ lib1556-lib1556.obj: lib1556.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1556-lib1556.obj `if test -f 'lib1556.c'; then $(CYGPATH_W) 'lib1556.c'; else $(CYGPATH_W) '$(srcdir)/lib1556.c'; fi`
 
+../../lib/lib1556-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1556-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1556-timediff.Tpo -c -o ../../lib/lib1556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1556-timediff.Tpo ../../lib/$(DEPDIR)/lib1556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1556-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1556-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1556-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1556-timediff.Tpo -c -o ../../lib/lib1556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1556-timediff.Tpo ../../lib/$(DEPDIR)/lib1556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1556-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1556-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1556-first.o -MD -MP -MF $(DEPDIR)/lib1556-first.Tpo -c -o lib1556-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1556-first.Tpo $(DEPDIR)/lib1556-first.Po
@@ -6986,6 +8839,20 @@ lib1557-lib1557.obj: lib1557.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1557-lib1557.obj `if test -f 'lib1557.c'; then $(CYGPATH_W) 'lib1557.c'; else $(CYGPATH_W) '$(srcdir)/lib1557.c'; fi`
 
+../../lib/lib1557-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1557-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1557-timediff.Tpo -c -o ../../lib/lib1557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1557-timediff.Tpo ../../lib/$(DEPDIR)/lib1557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1557-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1557-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1557-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1557-timediff.Tpo -c -o ../../lib/lib1557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1557-timediff.Tpo ../../lib/$(DEPDIR)/lib1557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1557-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1557-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1557-first.o -MD -MP -MF $(DEPDIR)/lib1557-first.Tpo -c -o lib1557-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1557-first.Tpo $(DEPDIR)/lib1557-first.Po
@@ -7042,6 +8909,20 @@ lib1564-lib1564.obj: lib1564.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1564-lib1564.obj `if test -f 'lib1564.c'; then $(CYGPATH_W) 'lib1564.c'; else $(CYGPATH_W) '$(srcdir)/lib1564.c'; fi`
 
+../../lib/lib1564-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1564-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1564-timediff.Tpo -c -o ../../lib/lib1564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1564-timediff.Tpo ../../lib/$(DEPDIR)/lib1564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1564-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1564-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1564-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1564-timediff.Tpo -c -o ../../lib/lib1564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1564-timediff.Tpo ../../lib/$(DEPDIR)/lib1564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1564-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1564-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1564-first.o -MD -MP -MF $(DEPDIR)/lib1564-first.Tpo -c -o lib1564-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1564-first.Tpo $(DEPDIR)/lib1564-first.Po
@@ -7098,6 +8979,20 @@ lib1565-lib1565.obj: lib1565.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1565-lib1565.obj `if test -f 'lib1565.c'; then $(CYGPATH_W) 'lib1565.c'; else $(CYGPATH_W) '$(srcdir)/lib1565.c'; fi`
 
+../../lib/lib1565-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1565-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1565-timediff.Tpo -c -o ../../lib/lib1565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1565-timediff.Tpo ../../lib/$(DEPDIR)/lib1565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1565-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1565-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1565-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1565-timediff.Tpo -c -o ../../lib/lib1565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1565-timediff.Tpo ../../lib/$(DEPDIR)/lib1565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1565-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1565-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1565-first.o -MD -MP -MF $(DEPDIR)/lib1565-first.Tpo -c -o lib1565-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1565-first.Tpo $(DEPDIR)/lib1565-first.Po
@@ -7154,6 +9049,20 @@ lib1567-lib1567.obj: lib1567.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1567-lib1567.obj `if test -f 'lib1567.c'; then $(CYGPATH_W) 'lib1567.c'; else $(CYGPATH_W) '$(srcdir)/lib1567.c'; fi`
 
+../../lib/lib1567-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1567-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1567-timediff.Tpo -c -o ../../lib/lib1567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1567-timediff.Tpo ../../lib/$(DEPDIR)/lib1567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1567-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1567-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1567-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1567-timediff.Tpo -c -o ../../lib/lib1567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1567-timediff.Tpo ../../lib/$(DEPDIR)/lib1567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1567-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1567-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1567-first.o -MD -MP -MF $(DEPDIR)/lib1567-first.Tpo -c -o lib1567-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1567-first.Tpo $(DEPDIR)/lib1567-first.Po
@@ -7182,6 +9091,20 @@ lib1568-lib1568.obj: lib1568.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1568-lib1568.obj `if test -f 'lib1568.c'; then $(CYGPATH_W) 'lib1568.c'; else $(CYGPATH_W) '$(srcdir)/lib1568.c'; fi`
 
+../../lib/lib1568-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1568-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1568-timediff.Tpo -c -o ../../lib/lib1568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1568-timediff.Tpo ../../lib/$(DEPDIR)/lib1568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1568-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1568-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1568-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1568-timediff.Tpo -c -o ../../lib/lib1568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1568-timediff.Tpo ../../lib/$(DEPDIR)/lib1568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1568-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1568-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1568-first.o -MD -MP -MF $(DEPDIR)/lib1568-first.Tpo -c -o lib1568-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1568-first.Tpo $(DEPDIR)/lib1568-first.Po
@@ -7210,6 +9133,20 @@ lib1569-lib1569.obj: lib1569.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1569-lib1569.obj `if test -f 'lib1569.c'; then $(CYGPATH_W) 'lib1569.c'; else $(CYGPATH_W) '$(srcdir)/lib1569.c'; fi`
 
+../../lib/lib1569-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1569-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1569-timediff.Tpo -c -o ../../lib/lib1569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1569-timediff.Tpo ../../lib/$(DEPDIR)/lib1569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1569-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1569-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1569-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1569-timediff.Tpo -c -o ../../lib/lib1569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1569-timediff.Tpo ../../lib/$(DEPDIR)/lib1569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1569-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1569-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1569-first.o -MD -MP -MF $(DEPDIR)/lib1569-first.Tpo -c -o lib1569-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1569-first.Tpo $(DEPDIR)/lib1569-first.Po
@@ -7238,6 +9175,20 @@ lib1591-lib1591.obj: lib1591.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1591-lib1591.obj `if test -f 'lib1591.c'; then $(CYGPATH_W) 'lib1591.c'; else $(CYGPATH_W) '$(srcdir)/lib1591.c'; fi`
 
+../../lib/lib1591-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1591-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1591-timediff.Tpo -c -o ../../lib/lib1591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1591-timediff.Tpo ../../lib/$(DEPDIR)/lib1591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1591-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1591-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1591-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1591-timediff.Tpo -c -o ../../lib/lib1591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1591-timediff.Tpo ../../lib/$(DEPDIR)/lib1591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1591-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1591-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1591-first.o -MD -MP -MF $(DEPDIR)/lib1591-first.Tpo -c -o lib1591-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1591-first.Tpo $(DEPDIR)/lib1591-first.Po
@@ -7294,8 +9245,22 @@ lib1592-lib1592.obj: lib1592.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1592-lib1592.obj `if test -f 'lib1592.c'; then $(CYGPATH_W) 'lib1592.c'; else $(CYGPATH_W) '$(srcdir)/lib1592.c'; fi`
 
-lib1592-first.o: first.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1592-first.o -MD -MP -MF $(DEPDIR)/lib1592-first.Tpo -c -o lib1592-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+../../lib/lib1592-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1592-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1592-timediff.Tpo -c -o ../../lib/lib1592-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1592-timediff.Tpo ../../lib/$(DEPDIR)/lib1592-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1592-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1592-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1592-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1592-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1592-timediff.Tpo -c -o ../../lib/lib1592-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1592-timediff.Tpo ../../lib/$(DEPDIR)/lib1592-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1592-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1592-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1592-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1592_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1592-first.o -MD -MP -MF $(DEPDIR)/lib1592-first.Tpo -c -o lib1592-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1592-first.Tpo $(DEPDIR)/lib1592-first.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1592-first.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@@ -7350,6 +9315,20 @@ lib1596-lib1594.obj: lib1594.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1596-lib1594.obj `if test -f 'lib1594.c'; then $(CYGPATH_W) 'lib1594.c'; else $(CYGPATH_W) '$(srcdir)/lib1594.c'; fi`
 
+../../lib/lib1596-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1596-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1596-timediff.Tpo -c -o ../../lib/lib1596-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1596-timediff.Tpo ../../lib/$(DEPDIR)/lib1596-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1596-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1596-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1596-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1596-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1596-timediff.Tpo -c -o ../../lib/lib1596-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1596-timediff.Tpo ../../lib/$(DEPDIR)/lib1596-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1596-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1596-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1596-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1596_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1596-first.o -MD -MP -MF $(DEPDIR)/lib1596-first.Tpo -c -o lib1596-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1596-first.Tpo $(DEPDIR)/lib1596-first.Po
@@ -7406,6 +9385,20 @@ lib1905-lib1905.obj: lib1905.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1905-lib1905.obj `if test -f 'lib1905.c'; then $(CYGPATH_W) 'lib1905.c'; else $(CYGPATH_W) '$(srcdir)/lib1905.c'; fi`
 
+../../lib/lib1905-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1905-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1905-timediff.Tpo -c -o ../../lib/lib1905-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1905-timediff.Tpo ../../lib/$(DEPDIR)/lib1905-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1905-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1905-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1905-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1905-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1905-timediff.Tpo -c -o ../../lib/lib1905-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1905-timediff.Tpo ../../lib/$(DEPDIR)/lib1905-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1905-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1905-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1905-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1905_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1905-first.o -MD -MP -MF $(DEPDIR)/lib1905-first.Tpo -c -o lib1905-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1905-first.Tpo $(DEPDIR)/lib1905-first.Po
@@ -7462,6 +9455,20 @@ lib1906-lib1906.obj: lib1906.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1906-lib1906.obj `if test -f 'lib1906.c'; then $(CYGPATH_W) 'lib1906.c'; else $(CYGPATH_W) '$(srcdir)/lib1906.c'; fi`
 
+../../lib/lib1906-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-timediff.Tpo -c -o ../../lib/lib1906-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-timediff.Tpo ../../lib/$(DEPDIR)/lib1906-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1906-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1906-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1906-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1906-timediff.Tpo -c -o ../../lib/lib1906-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1906-timediff.Tpo ../../lib/$(DEPDIR)/lib1906-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1906-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1906-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1906-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1906_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1906-first.o -MD -MP -MF $(DEPDIR)/lib1906-first.Tpo -c -o lib1906-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1906-first.Tpo $(DEPDIR)/lib1906-first.Po
@@ -7518,6 +9525,20 @@ lib1907-lib1907.obj: lib1907.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1907-lib1907.obj `if test -f 'lib1907.c'; then $(CYGPATH_W) 'lib1907.c'; else $(CYGPATH_W) '$(srcdir)/lib1907.c'; fi`
 
+../../lib/lib1907-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1907-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1907-timediff.Tpo -c -o ../../lib/lib1907-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1907-timediff.Tpo ../../lib/$(DEPDIR)/lib1907-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1907-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1907-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1907-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1907-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1907-timediff.Tpo -c -o ../../lib/lib1907-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1907-timediff.Tpo ../../lib/$(DEPDIR)/lib1907-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1907-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1907-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1907-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1907_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1907-first.o -MD -MP -MF $(DEPDIR)/lib1907-first.Tpo -c -o lib1907-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1907-first.Tpo $(DEPDIR)/lib1907-first.Po
@@ -7574,6 +9595,20 @@ lib1908-lib1908.obj: lib1908.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1908-lib1908.obj `if test -f 'lib1908.c'; then $(CYGPATH_W) 'lib1908.c'; else $(CYGPATH_W) '$(srcdir)/lib1908.c'; fi`
 
+../../lib/lib1908-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1908-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1908-timediff.Tpo -c -o ../../lib/lib1908-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1908-timediff.Tpo ../../lib/$(DEPDIR)/lib1908-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1908-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1908-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1908-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1908-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1908-timediff.Tpo -c -o ../../lib/lib1908-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1908-timediff.Tpo ../../lib/$(DEPDIR)/lib1908-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1908-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1908-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1908-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1908_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1908-first.o -MD -MP -MF $(DEPDIR)/lib1908-first.Tpo -c -o lib1908-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1908-first.Tpo $(DEPDIR)/lib1908-first.Po
@@ -7630,6 +9665,20 @@ lib1910-lib1910.obj: lib1910.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1910-lib1910.obj `if test -f 'lib1910.c'; then $(CYGPATH_W) 'lib1910.c'; else $(CYGPATH_W) '$(srcdir)/lib1910.c'; fi`
 
+../../lib/lib1910-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1910-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1910-timediff.Tpo -c -o ../../lib/lib1910-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1910-timediff.Tpo ../../lib/$(DEPDIR)/lib1910-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1910-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1910-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1910-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1910-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1910-timediff.Tpo -c -o ../../lib/lib1910-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1910-timediff.Tpo ../../lib/$(DEPDIR)/lib1910-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1910-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1910-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1910-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1910_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1910-first.o -MD -MP -MF $(DEPDIR)/lib1910-first.Tpo -c -o lib1910-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1910-first.Tpo $(DEPDIR)/lib1910-first.Po
@@ -7686,6 +9735,20 @@ lib1911-lib1911.obj: lib1911.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1911-lib1911.obj `if test -f 'lib1911.c'; then $(CYGPATH_W) 'lib1911.c'; else $(CYGPATH_W) '$(srcdir)/lib1911.c'; fi`
 
+../../lib/lib1911-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1911-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1911-timediff.Tpo -c -o ../../lib/lib1911-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1911-timediff.Tpo ../../lib/$(DEPDIR)/lib1911-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1911-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1911-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1911-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1911-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1911-timediff.Tpo -c -o ../../lib/lib1911-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1911-timediff.Tpo ../../lib/$(DEPDIR)/lib1911-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1911-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1911-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1911-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1911_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1911-first.o -MD -MP -MF $(DEPDIR)/lib1911-first.Tpo -c -o lib1911-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1911-first.Tpo $(DEPDIR)/lib1911-first.Po
@@ -7742,6 +9805,20 @@ lib1912-lib1912.obj: lib1912.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1912-lib1912.obj `if test -f 'lib1912.c'; then $(CYGPATH_W) 'lib1912.c'; else $(CYGPATH_W) '$(srcdir)/lib1912.c'; fi`
 
+../../lib/lib1912-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1912-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1912-timediff.Tpo -c -o ../../lib/lib1912-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1912-timediff.Tpo ../../lib/$(DEPDIR)/lib1912-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1912-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1912-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1912-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1912-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1912-timediff.Tpo -c -o ../../lib/lib1912-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1912-timediff.Tpo ../../lib/$(DEPDIR)/lib1912-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1912-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1912-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1912-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1912_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1912-first.o -MD -MP -MF $(DEPDIR)/lib1912-first.Tpo -c -o lib1912-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1912-first.Tpo $(DEPDIR)/lib1912-first.Po
@@ -7798,6 +9875,20 @@ lib1913-lib1913.obj: lib1913.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1913-lib1913.obj `if test -f 'lib1913.c'; then $(CYGPATH_W) 'lib1913.c'; else $(CYGPATH_W) '$(srcdir)/lib1913.c'; fi`
 
+../../lib/lib1913-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1913-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1913-timediff.Tpo -c -o ../../lib/lib1913-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1913-timediff.Tpo ../../lib/$(DEPDIR)/lib1913-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1913-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1913-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1913-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1913-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1913-timediff.Tpo -c -o ../../lib/lib1913-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1913-timediff.Tpo ../../lib/$(DEPDIR)/lib1913-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1913-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1913-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1913-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1913_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1913-first.o -MD -MP -MF $(DEPDIR)/lib1913-first.Tpo -c -o lib1913-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1913-first.Tpo $(DEPDIR)/lib1913-first.Po
@@ -7854,6 +9945,20 @@ lib1915-lib1915.obj: lib1915.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1915-lib1915.obj `if test -f 'lib1915.c'; then $(CYGPATH_W) 'lib1915.c'; else $(CYGPATH_W) '$(srcdir)/lib1915.c'; fi`
 
+../../lib/lib1915-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1915-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1915-timediff.Tpo -c -o ../../lib/lib1915-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1915-timediff.Tpo ../../lib/$(DEPDIR)/lib1915-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1915-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1915-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1915-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1915-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1915-timediff.Tpo -c -o ../../lib/lib1915-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1915-timediff.Tpo ../../lib/$(DEPDIR)/lib1915-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1915-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1915-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1915-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1915_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1915-first.o -MD -MP -MF $(DEPDIR)/lib1915-first.Tpo -c -o lib1915-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1915-first.Tpo $(DEPDIR)/lib1915-first.Po
@@ -7910,6 +10015,20 @@ lib1916-lib1916.obj: lib1916.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1916-lib1916.obj `if test -f 'lib1916.c'; then $(CYGPATH_W) 'lib1916.c'; else $(CYGPATH_W) '$(srcdir)/lib1916.c'; fi`
 
+../../lib/lib1916-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1916-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1916-timediff.Tpo -c -o ../../lib/lib1916-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1916-timediff.Tpo ../../lib/$(DEPDIR)/lib1916-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1916-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1916-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1916-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1916-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1916-timediff.Tpo -c -o ../../lib/lib1916-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1916-timediff.Tpo ../../lib/$(DEPDIR)/lib1916-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1916-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1916-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1916-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1916_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1916-first.o -MD -MP -MF $(DEPDIR)/lib1916-first.Tpo -c -o lib1916-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1916-first.Tpo $(DEPDIR)/lib1916-first.Po
@@ -7952,6 +10071,20 @@ lib1917-lib1916.obj: lib1916.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1917-lib1916.obj `if test -f 'lib1916.c'; then $(CYGPATH_W) 'lib1916.c'; else $(CYGPATH_W) '$(srcdir)/lib1916.c'; fi`
 
+../../lib/lib1917-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1917-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1917-timediff.Tpo -c -o ../../lib/lib1917-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1917-timediff.Tpo ../../lib/$(DEPDIR)/lib1917-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1917-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1917-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1917-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1917-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1917-timediff.Tpo -c -o ../../lib/lib1917-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1917-timediff.Tpo ../../lib/$(DEPDIR)/lib1917-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1917-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1917-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1917-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1917_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1917-first.o -MD -MP -MF $(DEPDIR)/lib1917-first.Tpo -c -o lib1917-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1917-first.Tpo $(DEPDIR)/lib1917-first.Po
@@ -7994,6 +10127,20 @@ lib1918-lib1918.obj: lib1918.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1918-lib1918.obj `if test -f 'lib1918.c'; then $(CYGPATH_W) 'lib1918.c'; else $(CYGPATH_W) '$(srcdir)/lib1918.c'; fi`
 
+../../lib/lib1918-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1918-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1918-timediff.Tpo -c -o ../../lib/lib1918-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1918-timediff.Tpo ../../lib/$(DEPDIR)/lib1918-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1918-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1918-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1918-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1918-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1918-timediff.Tpo -c -o ../../lib/lib1918-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1918-timediff.Tpo ../../lib/$(DEPDIR)/lib1918-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1918-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1918-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1918-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1918-first.o -MD -MP -MF $(DEPDIR)/lib1918-first.Tpo -c -o lib1918-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1918-first.Tpo $(DEPDIR)/lib1918-first.Po
@@ -8022,6 +10169,62 @@ lib1918-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1918_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1918-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
+lib1919-lib1919.o: lib1919.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-lib1919.o -MD -MP -MF $(DEPDIR)/lib1919-lib1919.Tpo -c -o lib1919-lib1919.o `test -f 'lib1919.c' || echo '$(srcdir)/'`lib1919.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-lib1919.Tpo $(DEPDIR)/lib1919-lib1919.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1919.c' object='lib1919-lib1919.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-lib1919.o `test -f 'lib1919.c' || echo '$(srcdir)/'`lib1919.c
+
+lib1919-lib1919.obj: lib1919.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-lib1919.obj -MD -MP -MF $(DEPDIR)/lib1919-lib1919.Tpo -c -o lib1919-lib1919.obj `if test -f 'lib1919.c'; then $(CYGPATH_W) 'lib1919.c'; else $(CYGPATH_W) '$(srcdir)/lib1919.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-lib1919.Tpo $(DEPDIR)/lib1919-lib1919.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1919.c' object='lib1919-lib1919.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-lib1919.obj `if test -f 'lib1919.c'; then $(CYGPATH_W) 'lib1919.c'; else $(CYGPATH_W) '$(srcdir)/lib1919.c'; fi`
+
+../../lib/lib1919-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-timediff.Tpo -c -o ../../lib/lib1919-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-timediff.Tpo ../../lib/$(DEPDIR)/lib1919-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1919-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1919-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-timediff.Tpo -c -o ../../lib/lib1919-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-timediff.Tpo ../../lib/$(DEPDIR)/lib1919-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1919-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1919-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-first.o -MD -MP -MF $(DEPDIR)/lib1919-first.Tpo -c -o lib1919-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-first.Tpo $(DEPDIR)/lib1919-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1919-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1919-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1919-first.obj -MD -MP -MF $(DEPDIR)/lib1919-first.Tpo -c -o lib1919-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1919-first.Tpo $(DEPDIR)/lib1919-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1919-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1919-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+../../lib/lib1919-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-warnless.Tpo -c -o ../../lib/lib1919-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-warnless.Tpo ../../lib/$(DEPDIR)/lib1919-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1919-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1919-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1919-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1919-warnless.Tpo -c -o ../../lib/lib1919-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1919-warnless.Tpo ../../lib/$(DEPDIR)/lib1919-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1919-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1919_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1919-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
 lib1933-lib1933.o: lib1933.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1933-lib1933.o -MD -MP -MF $(DEPDIR)/lib1933-lib1933.Tpo -c -o lib1933-lib1933.o `test -f 'lib1933.c' || echo '$(srcdir)/'`lib1933.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1933-lib1933.Tpo $(DEPDIR)/lib1933-lib1933.Po
@@ -8036,6 +10239,20 @@ lib1933-lib1933.obj: lib1933.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1933-lib1933.obj `if test -f 'lib1933.c'; then $(CYGPATH_W) 'lib1933.c'; else $(CYGPATH_W) '$(srcdir)/lib1933.c'; fi`
 
+../../lib/lib1933-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1933-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1933-timediff.Tpo -c -o ../../lib/lib1933-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1933-timediff.Tpo ../../lib/$(DEPDIR)/lib1933-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1933-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1933-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1933-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1933-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1933-timediff.Tpo -c -o ../../lib/lib1933-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1933-timediff.Tpo ../../lib/$(DEPDIR)/lib1933-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1933-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1933-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1933-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1933_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1933-first.o -MD -MP -MF $(DEPDIR)/lib1933-first.Tpo -c -o lib1933-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1933-first.Tpo $(DEPDIR)/lib1933-first.Po
@@ -8092,6 +10309,20 @@ lib1934-lib1934.obj: lib1934.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1934-lib1934.obj `if test -f 'lib1934.c'; then $(CYGPATH_W) 'lib1934.c'; else $(CYGPATH_W) '$(srcdir)/lib1934.c'; fi`
 
+../../lib/lib1934-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1934-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1934-timediff.Tpo -c -o ../../lib/lib1934-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1934-timediff.Tpo ../../lib/$(DEPDIR)/lib1934-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1934-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1934-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1934-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1934-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1934-timediff.Tpo -c -o ../../lib/lib1934-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1934-timediff.Tpo ../../lib/$(DEPDIR)/lib1934-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1934-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1934-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1934-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1934_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1934-first.o -MD -MP -MF $(DEPDIR)/lib1934-first.Tpo -c -o lib1934-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1934-first.Tpo $(DEPDIR)/lib1934-first.Po
@@ -8148,6 +10379,20 @@ lib1935-lib1935.obj: lib1935.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1935-lib1935.obj `if test -f 'lib1935.c'; then $(CYGPATH_W) 'lib1935.c'; else $(CYGPATH_W) '$(srcdir)/lib1935.c'; fi`
 
+../../lib/lib1935-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1935-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1935-timediff.Tpo -c -o ../../lib/lib1935-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1935-timediff.Tpo ../../lib/$(DEPDIR)/lib1935-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1935-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1935-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1935-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1935-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1935-timediff.Tpo -c -o ../../lib/lib1935-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1935-timediff.Tpo ../../lib/$(DEPDIR)/lib1935-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1935-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1935-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1935-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1935_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1935-first.o -MD -MP -MF $(DEPDIR)/lib1935-first.Tpo -c -o lib1935-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1935-first.Tpo $(DEPDIR)/lib1935-first.Po
@@ -8204,6 +10449,20 @@ lib1936-lib1936.obj: lib1936.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1936-lib1936.obj `if test -f 'lib1936.c'; then $(CYGPATH_W) 'lib1936.c'; else $(CYGPATH_W) '$(srcdir)/lib1936.c'; fi`
 
+../../lib/lib1936-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1936-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1936-timediff.Tpo -c -o ../../lib/lib1936-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1936-timediff.Tpo ../../lib/$(DEPDIR)/lib1936-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1936-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1936-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1936-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1936-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1936-timediff.Tpo -c -o ../../lib/lib1936-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1936-timediff.Tpo ../../lib/$(DEPDIR)/lib1936-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1936-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1936-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1936-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1936_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1936-first.o -MD -MP -MF $(DEPDIR)/lib1936-first.Tpo -c -o lib1936-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1936-first.Tpo $(DEPDIR)/lib1936-first.Po
@@ -8260,6 +10519,20 @@ lib1937-lib1937.obj: lib1937.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1937-lib1937.obj `if test -f 'lib1937.c'; then $(CYGPATH_W) 'lib1937.c'; else $(CYGPATH_W) '$(srcdir)/lib1937.c'; fi`
 
+../../lib/lib1937-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1937-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1937-timediff.Tpo -c -o ../../lib/lib1937-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1937-timediff.Tpo ../../lib/$(DEPDIR)/lib1937-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1937-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1937-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1937-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1937-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1937-timediff.Tpo -c -o ../../lib/lib1937-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1937-timediff.Tpo ../../lib/$(DEPDIR)/lib1937-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1937-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1937-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1937-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1937_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1937-first.o -MD -MP -MF $(DEPDIR)/lib1937-first.Tpo -c -o lib1937-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1937-first.Tpo $(DEPDIR)/lib1937-first.Po
@@ -8288,6 +10561,20 @@ lib1938-lib1938.obj: lib1938.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1938-lib1938.obj `if test -f 'lib1938.c'; then $(CYGPATH_W) 'lib1938.c'; else $(CYGPATH_W) '$(srcdir)/lib1938.c'; fi`
 
+../../lib/lib1938-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1938-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1938-timediff.Tpo -c -o ../../lib/lib1938-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1938-timediff.Tpo ../../lib/$(DEPDIR)/lib1938-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1938-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1938-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1938-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1938-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1938-timediff.Tpo -c -o ../../lib/lib1938-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1938-timediff.Tpo ../../lib/$(DEPDIR)/lib1938-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1938-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1938-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1938-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1938_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1938-first.o -MD -MP -MF $(DEPDIR)/lib1938-first.Tpo -c -o lib1938-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1938-first.Tpo $(DEPDIR)/lib1938-first.Po
@@ -8316,6 +10603,20 @@ lib1939-lib1939.obj: lib1939.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1939-lib1939.obj `if test -f 'lib1939.c'; then $(CYGPATH_W) 'lib1939.c'; else $(CYGPATH_W) '$(srcdir)/lib1939.c'; fi`
 
+../../lib/lib1939-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1939-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1939-timediff.Tpo -c -o ../../lib/lib1939-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1939-timediff.Tpo ../../lib/$(DEPDIR)/lib1939-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1939-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1939-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1939-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1939-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1939-timediff.Tpo -c -o ../../lib/lib1939-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1939-timediff.Tpo ../../lib/$(DEPDIR)/lib1939-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1939-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1939-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib1939-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1939-first.o -MD -MP -MF $(DEPDIR)/lib1939-first.Tpo -c -o lib1939-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1939-first.Tpo $(DEPDIR)/lib1939-first.Po
@@ -8330,6 +10631,286 @@ lib1939-first.obj: first.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1939_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1939-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
 
+lib1940-lib1940.o: lib1940.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-lib1940.o -MD -MP -MF $(DEPDIR)/lib1940-lib1940.Tpo -c -o lib1940-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-lib1940.Tpo $(DEPDIR)/lib1940-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1940.c' object='lib1940-lib1940.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+
+lib1940-lib1940.obj: lib1940.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-lib1940.obj -MD -MP -MF $(DEPDIR)/lib1940-lib1940.Tpo -c -o lib1940-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-lib1940.Tpo $(DEPDIR)/lib1940-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1940.c' object='lib1940-lib1940.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+
+../../lib/lib1940-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1940-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1940-timediff.Tpo -c -o ../../lib/lib1940-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1940-timediff.Tpo ../../lib/$(DEPDIR)/lib1940-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1940-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1940-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1940-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1940-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1940-timediff.Tpo -c -o ../../lib/lib1940-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1940-timediff.Tpo ../../lib/$(DEPDIR)/lib1940-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1940-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1940-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1940-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-first.o -MD -MP -MF $(DEPDIR)/lib1940-first.Tpo -c -o lib1940-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-first.Tpo $(DEPDIR)/lib1940-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1940-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1940-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1940-first.obj -MD -MP -MF $(DEPDIR)/lib1940-first.Tpo -c -o lib1940-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1940-first.Tpo $(DEPDIR)/lib1940-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1940-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1940_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1940-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1945-lib1945.o: lib1945.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-lib1945.o -MD -MP -MF $(DEPDIR)/lib1945-lib1945.Tpo -c -o lib1945-lib1945.o `test -f 'lib1945.c' || echo '$(srcdir)/'`lib1945.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-lib1945.Tpo $(DEPDIR)/lib1945-lib1945.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1945.c' object='lib1945-lib1945.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-lib1945.o `test -f 'lib1945.c' || echo '$(srcdir)/'`lib1945.c
+
+lib1945-lib1945.obj: lib1945.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-lib1945.obj -MD -MP -MF $(DEPDIR)/lib1945-lib1945.Tpo -c -o lib1945-lib1945.obj `if test -f 'lib1945.c'; then $(CYGPATH_W) 'lib1945.c'; else $(CYGPATH_W) '$(srcdir)/lib1945.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-lib1945.Tpo $(DEPDIR)/lib1945-lib1945.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1945.c' object='lib1945-lib1945.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-lib1945.obj `if test -f 'lib1945.c'; then $(CYGPATH_W) 'lib1945.c'; else $(CYGPATH_W) '$(srcdir)/lib1945.c'; fi`
+
+../../lib/lib1945-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1945-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1945-timediff.Tpo -c -o ../../lib/lib1945-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1945-timediff.Tpo ../../lib/$(DEPDIR)/lib1945-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1945-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1945-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1945-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1945-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1945-timediff.Tpo -c -o ../../lib/lib1945-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1945-timediff.Tpo ../../lib/$(DEPDIR)/lib1945-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1945-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1945-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1945-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-first.o -MD -MP -MF $(DEPDIR)/lib1945-first.Tpo -c -o lib1945-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-first.Tpo $(DEPDIR)/lib1945-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1945-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1945-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1945-first.obj -MD -MP -MF $(DEPDIR)/lib1945-first.Tpo -c -o lib1945-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1945-first.Tpo $(DEPDIR)/lib1945-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1945-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1945_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1945-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1946-lib1940.o: lib1940.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-lib1940.o -MD -MP -MF $(DEPDIR)/lib1946-lib1940.Tpo -c -o lib1946-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-lib1940.Tpo $(DEPDIR)/lib1946-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1940.c' object='lib1946-lib1940.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-lib1940.o `test -f 'lib1940.c' || echo '$(srcdir)/'`lib1940.c
+
+lib1946-lib1940.obj: lib1940.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-lib1940.obj -MD -MP -MF $(DEPDIR)/lib1946-lib1940.Tpo -c -o lib1946-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-lib1940.Tpo $(DEPDIR)/lib1946-lib1940.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1940.c' object='lib1946-lib1940.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-lib1940.obj `if test -f 'lib1940.c'; then $(CYGPATH_W) 'lib1940.c'; else $(CYGPATH_W) '$(srcdir)/lib1940.c'; fi`
+
+../../lib/lib1946-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1946-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1946-timediff.Tpo -c -o ../../lib/lib1946-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1946-timediff.Tpo ../../lib/$(DEPDIR)/lib1946-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1946-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1946-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1946-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1946-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1946-timediff.Tpo -c -o ../../lib/lib1946-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1946-timediff.Tpo ../../lib/$(DEPDIR)/lib1946-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1946-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1946-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1946-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-first.o -MD -MP -MF $(DEPDIR)/lib1946-first.Tpo -c -o lib1946-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-first.Tpo $(DEPDIR)/lib1946-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1946-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1946-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1946-first.obj -MD -MP -MF $(DEPDIR)/lib1946-first.Tpo -c -o lib1946-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1946-first.Tpo $(DEPDIR)/lib1946-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1946-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1946_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1946-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1947-lib1947.o: lib1947.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-lib1947.o -MD -MP -MF $(DEPDIR)/lib1947-lib1947.Tpo -c -o lib1947-lib1947.o `test -f 'lib1947.c' || echo '$(srcdir)/'`lib1947.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-lib1947.Tpo $(DEPDIR)/lib1947-lib1947.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1947.c' object='lib1947-lib1947.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-lib1947.o `test -f 'lib1947.c' || echo '$(srcdir)/'`lib1947.c
+
+lib1947-lib1947.obj: lib1947.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-lib1947.obj -MD -MP -MF $(DEPDIR)/lib1947-lib1947.Tpo -c -o lib1947-lib1947.obj `if test -f 'lib1947.c'; then $(CYGPATH_W) 'lib1947.c'; else $(CYGPATH_W) '$(srcdir)/lib1947.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-lib1947.Tpo $(DEPDIR)/lib1947-lib1947.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1947.c' object='lib1947-lib1947.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-lib1947.obj `if test -f 'lib1947.c'; then $(CYGPATH_W) 'lib1947.c'; else $(CYGPATH_W) '$(srcdir)/lib1947.c'; fi`
+
+../../lib/lib1947-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1947-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1947-timediff.Tpo -c -o ../../lib/lib1947-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1947-timediff.Tpo ../../lib/$(DEPDIR)/lib1947-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1947-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1947-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1947-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1947-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1947-timediff.Tpo -c -o ../../lib/lib1947-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1947-timediff.Tpo ../../lib/$(DEPDIR)/lib1947-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1947-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1947-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1947-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-first.o -MD -MP -MF $(DEPDIR)/lib1947-first.Tpo -c -o lib1947-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-first.Tpo $(DEPDIR)/lib1947-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1947-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1947-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1947-first.obj -MD -MP -MF $(DEPDIR)/lib1947-first.Tpo -c -o lib1947-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1947-first.Tpo $(DEPDIR)/lib1947-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1947-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1947_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1947-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1948-lib1948.o: lib1948.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-lib1948.o -MD -MP -MF $(DEPDIR)/lib1948-lib1948.Tpo -c -o lib1948-lib1948.o `test -f 'lib1948.c' || echo '$(srcdir)/'`lib1948.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-lib1948.Tpo $(DEPDIR)/lib1948-lib1948.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1948.c' object='lib1948-lib1948.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-lib1948.o `test -f 'lib1948.c' || echo '$(srcdir)/'`lib1948.c
+
+lib1948-lib1948.obj: lib1948.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-lib1948.obj -MD -MP -MF $(DEPDIR)/lib1948-lib1948.Tpo -c -o lib1948-lib1948.obj `if test -f 'lib1948.c'; then $(CYGPATH_W) 'lib1948.c'; else $(CYGPATH_W) '$(srcdir)/lib1948.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-lib1948.Tpo $(DEPDIR)/lib1948-lib1948.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1948.c' object='lib1948-lib1948.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-lib1948.obj `if test -f 'lib1948.c'; then $(CYGPATH_W) 'lib1948.c'; else $(CYGPATH_W) '$(srcdir)/lib1948.c'; fi`
+
+../../lib/lib1948-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1948-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1948-timediff.Tpo -c -o ../../lib/lib1948-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1948-timediff.Tpo ../../lib/$(DEPDIR)/lib1948-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1948-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1948-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1948-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1948-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1948-timediff.Tpo -c -o ../../lib/lib1948-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1948-timediff.Tpo ../../lib/$(DEPDIR)/lib1948-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1948-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1948-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1948-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-first.o -MD -MP -MF $(DEPDIR)/lib1948-first.Tpo -c -o lib1948-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-first.Tpo $(DEPDIR)/lib1948-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1948-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1948-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1948-first.obj -MD -MP -MF $(DEPDIR)/lib1948-first.Tpo -c -o lib1948-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1948-first.Tpo $(DEPDIR)/lib1948-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1948-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1948_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1948-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1955-lib1955.o: lib1955.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-lib1955.o -MD -MP -MF $(DEPDIR)/lib1955-lib1955.Tpo -c -o lib1955-lib1955.o `test -f 'lib1955.c' || echo '$(srcdir)/'`lib1955.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-lib1955.Tpo $(DEPDIR)/lib1955-lib1955.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1955.c' object='lib1955-lib1955.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-lib1955.o `test -f 'lib1955.c' || echo '$(srcdir)/'`lib1955.c
+
+lib1955-lib1955.obj: lib1955.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-lib1955.obj -MD -MP -MF $(DEPDIR)/lib1955-lib1955.Tpo -c -o lib1955-lib1955.obj `if test -f 'lib1955.c'; then $(CYGPATH_W) 'lib1955.c'; else $(CYGPATH_W) '$(srcdir)/lib1955.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-lib1955.Tpo $(DEPDIR)/lib1955-lib1955.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib1955.c' object='lib1955-lib1955.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-lib1955.obj `if test -f 'lib1955.c'; then $(CYGPATH_W) 'lib1955.c'; else $(CYGPATH_W) '$(srcdir)/lib1955.c'; fi`
+
+../../lib/lib1955-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-timediff.Tpo -c -o ../../lib/lib1955-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-timediff.Tpo ../../lib/$(DEPDIR)/lib1955-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1955-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib1955-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-timediff.Tpo -c -o ../../lib/lib1955-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-timediff.Tpo ../../lib/$(DEPDIR)/lib1955-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib1955-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib1955-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-first.o -MD -MP -MF $(DEPDIR)/lib1955-first.Tpo -c -o lib1955-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-first.Tpo $(DEPDIR)/lib1955-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1955-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib1955-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-first.obj -MD -MP -MF $(DEPDIR)/lib1955-first.Tpo -c -o lib1955-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-first.Tpo $(DEPDIR)/lib1955-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib1955-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib1955-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-testutil.o -MD -MP -MF $(DEPDIR)/lib1955-testutil.Tpo -c -o lib1955-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-testutil.Tpo $(DEPDIR)/lib1955-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1955-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib1955-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib1955-testutil.obj -MD -MP -MF $(DEPDIR)/lib1955-testutil.Tpo -c -o lib1955-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib1955-testutil.Tpo $(DEPDIR)/lib1955-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib1955-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib1955-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib1955-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-warnless.Tpo -c -o ../../lib/lib1955-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-warnless.Tpo ../../lib/$(DEPDIR)/lib1955-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1955-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib1955-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib1955-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib1955-warnless.Tpo -c -o ../../lib/lib1955-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib1955-warnless.Tpo ../../lib/$(DEPDIR)/lib1955-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib1955-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib1955_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib1955-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
 lib3010-lib3010.o: lib3010.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3010-lib3010.o -MD -MP -MF $(DEPDIR)/lib3010-lib3010.Tpo -c -o lib3010-lib3010.o `test -f 'lib3010.c' || echo '$(srcdir)/'`lib3010.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3010-lib3010.Tpo $(DEPDIR)/lib3010-lib3010.Po
@@ -8344,6 +10925,20 @@ lib3010-lib3010.obj: lib3010.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3010-lib3010.obj `if test -f 'lib3010.c'; then $(CYGPATH_W) 'lib3010.c'; else $(CYGPATH_W) '$(srcdir)/lib3010.c'; fi`
 
+../../lib/lib3010-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3010-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3010-timediff.Tpo -c -o ../../lib/lib3010-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3010-timediff.Tpo ../../lib/$(DEPDIR)/lib3010-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3010-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3010-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3010-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3010-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3010-timediff.Tpo -c -o ../../lib/lib3010-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3010-timediff.Tpo ../../lib/$(DEPDIR)/lib3010-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3010-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3010-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib3010-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3010_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3010-first.o -MD -MP -MF $(DEPDIR)/lib3010-first.Tpo -c -o lib3010-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3010-first.Tpo $(DEPDIR)/lib3010-first.Po
@@ -8400,6 +10995,20 @@ lib3025-lib3025.obj: lib3025.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3025-lib3025.obj `if test -f 'lib3025.c'; then $(CYGPATH_W) 'lib3025.c'; else $(CYGPATH_W) '$(srcdir)/lib3025.c'; fi`
 
+../../lib/lib3025-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3025-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3025-timediff.Tpo -c -o ../../lib/lib3025-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3025-timediff.Tpo ../../lib/$(DEPDIR)/lib3025-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3025-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3025-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3025-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3025-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3025-timediff.Tpo -c -o ../../lib/lib3025-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3025-timediff.Tpo ../../lib/$(DEPDIR)/lib3025-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3025-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3025-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib3025-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3025-first.o -MD -MP -MF $(DEPDIR)/lib3025-first.Tpo -c -o lib3025-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3025-first.Tpo $(DEPDIR)/lib3025-first.Po
@@ -8442,6 +11051,146 @@ lib3025-testutil.obj: testutil.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3025_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3025-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
+lib3026-lib3026.o: lib3026.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-lib3026.o -MD -MP -MF $(DEPDIR)/lib3026-lib3026.Tpo -c -o lib3026-lib3026.o `test -f 'lib3026.c' || echo '$(srcdir)/'`lib3026.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-lib3026.Tpo $(DEPDIR)/lib3026-lib3026.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib3026.c' object='lib3026-lib3026.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-lib3026.o `test -f 'lib3026.c' || echo '$(srcdir)/'`lib3026.c
+
+lib3026-lib3026.obj: lib3026.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-lib3026.obj -MD -MP -MF $(DEPDIR)/lib3026-lib3026.Tpo -c -o lib3026-lib3026.obj `if test -f 'lib3026.c'; then $(CYGPATH_W) 'lib3026.c'; else $(CYGPATH_W) '$(srcdir)/lib3026.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-lib3026.Tpo $(DEPDIR)/lib3026-lib3026.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib3026.c' object='lib3026-lib3026.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-lib3026.obj `if test -f 'lib3026.c'; then $(CYGPATH_W) 'lib3026.c'; else $(CYGPATH_W) '$(srcdir)/lib3026.c'; fi`
+
+../../lib/lib3026-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-timediff.Tpo -c -o ../../lib/lib3026-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-timediff.Tpo ../../lib/$(DEPDIR)/lib3026-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3026-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3026-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-timediff.Tpo -c -o ../../lib/lib3026-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-timediff.Tpo ../../lib/$(DEPDIR)/lib3026-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3026-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib3026-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-first.o -MD -MP -MF $(DEPDIR)/lib3026-first.Tpo -c -o lib3026-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-first.Tpo $(DEPDIR)/lib3026-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib3026-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib3026-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-first.obj -MD -MP -MF $(DEPDIR)/lib3026-first.Tpo -c -o lib3026-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-first.Tpo $(DEPDIR)/lib3026-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib3026-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib3026-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-testutil.o -MD -MP -MF $(DEPDIR)/lib3026-testutil.Tpo -c -o lib3026-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-testutil.Tpo $(DEPDIR)/lib3026-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib3026-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib3026-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3026-testutil.obj -MD -MP -MF $(DEPDIR)/lib3026-testutil.Tpo -c -o lib3026-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3026-testutil.Tpo $(DEPDIR)/lib3026-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib3026-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3026-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib3026-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-warnless.Tpo -c -o ../../lib/lib3026-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-warnless.Tpo ../../lib/$(DEPDIR)/lib3026-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3026-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib3026-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3026-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3026-warnless.Tpo -c -o ../../lib/lib3026-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3026-warnless.Tpo ../../lib/$(DEPDIR)/lib3026-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3026-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3026_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3026-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
+lib3027-lib3027.o: lib3027.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-lib3027.o -MD -MP -MF $(DEPDIR)/lib3027-lib3027.Tpo -c -o lib3027-lib3027.o `test -f 'lib3027.c' || echo '$(srcdir)/'`lib3027.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-lib3027.Tpo $(DEPDIR)/lib3027-lib3027.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib3027.c' object='lib3027-lib3027.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-lib3027.o `test -f 'lib3027.c' || echo '$(srcdir)/'`lib3027.c
+
+lib3027-lib3027.obj: lib3027.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-lib3027.obj -MD -MP -MF $(DEPDIR)/lib3027-lib3027.Tpo -c -o lib3027-lib3027.obj `if test -f 'lib3027.c'; then $(CYGPATH_W) 'lib3027.c'; else $(CYGPATH_W) '$(srcdir)/lib3027.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-lib3027.Tpo $(DEPDIR)/lib3027-lib3027.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='lib3027.c' object='lib3027-lib3027.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-lib3027.obj `if test -f 'lib3027.c'; then $(CYGPATH_W) 'lib3027.c'; else $(CYGPATH_W) '$(srcdir)/lib3027.c'; fi`
+
+../../lib/lib3027-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-timediff.Tpo -c -o ../../lib/lib3027-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-timediff.Tpo ../../lib/$(DEPDIR)/lib3027-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3027-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib3027-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-timediff.Tpo -c -o ../../lib/lib3027-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-timediff.Tpo ../../lib/$(DEPDIR)/lib3027-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib3027-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
+lib3027-first.o: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-first.o -MD -MP -MF $(DEPDIR)/lib3027-first.Tpo -c -o lib3027-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-first.Tpo $(DEPDIR)/lib3027-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib3027-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
+
+lib3027-first.obj: first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-first.obj -MD -MP -MF $(DEPDIR)/lib3027-first.Tpo -c -o lib3027-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-first.Tpo $(DEPDIR)/lib3027-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='first.c' object='lib3027-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-first.obj `if test -f 'first.c'; then $(CYGPATH_W) 'first.c'; else $(CYGPATH_W) '$(srcdir)/first.c'; fi`
+
+lib3027-testutil.o: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-testutil.o -MD -MP -MF $(DEPDIR)/lib3027-testutil.Tpo -c -o lib3027-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-testutil.Tpo $(DEPDIR)/lib3027-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib3027-testutil.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-testutil.o `test -f 'testutil.c' || echo '$(srcdir)/'`testutil.c
+
+lib3027-testutil.obj: testutil.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib3027-testutil.obj -MD -MP -MF $(DEPDIR)/lib3027-testutil.Tpo -c -o lib3027-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib3027-testutil.Tpo $(DEPDIR)/lib3027-testutil.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='testutil.c' object='lib3027-testutil.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib3027-testutil.obj `if test -f 'testutil.c'; then $(CYGPATH_W) 'testutil.c'; else $(CYGPATH_W) '$(srcdir)/testutil.c'; fi`
+
+../../lib/lib3027-warnless.o: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-warnless.o -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-warnless.Tpo -c -o ../../lib/lib3027-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-warnless.Tpo ../../lib/$(DEPDIR)/lib3027-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3027-warnless.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-warnless.o `test -f '../../lib/warnless.c' || echo '$(srcdir)/'`../../lib/warnless.c
+
+../../lib/lib3027-warnless.obj: ../../lib/warnless.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib3027-warnless.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib3027-warnless.Tpo -c -o ../../lib/lib3027-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib3027-warnless.Tpo ../../lib/$(DEPDIR)/lib3027-warnless.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/warnless.c' object='../../lib/lib3027-warnless.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib3027_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib3027-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
+
 lib500-lib500.o: lib500.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib500-lib500.o -MD -MP -MF $(DEPDIR)/lib500-lib500.Tpo -c -o lib500-lib500.o `test -f 'lib500.c' || echo '$(srcdir)/'`lib500.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib500-lib500.Tpo $(DEPDIR)/lib500-lib500.Po
@@ -8456,6 +11205,20 @@ lib500-lib500.obj: lib500.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib500-lib500.obj `if test -f 'lib500.c'; then $(CYGPATH_W) 'lib500.c'; else $(CYGPATH_W) '$(srcdir)/lib500.c'; fi`
 
+../../lib/lib500-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib500-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib500-timediff.Tpo -c -o ../../lib/lib500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib500-timediff.Tpo ../../lib/$(DEPDIR)/lib500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib500-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib500-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib500-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib500-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib500-timediff.Tpo -c -o ../../lib/lib500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib500-timediff.Tpo ../../lib/$(DEPDIR)/lib500-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib500-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib500-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib500-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib500_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib500-first.o -MD -MP -MF $(DEPDIR)/lib500-first.Tpo -c -o lib500-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib500-first.Tpo $(DEPDIR)/lib500-first.Po
@@ -8526,6 +11289,20 @@ lib501-lib501.obj: lib501.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib501-lib501.obj `if test -f 'lib501.c'; then $(CYGPATH_W) 'lib501.c'; else $(CYGPATH_W) '$(srcdir)/lib501.c'; fi`
 
+../../lib/lib501-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib501-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib501-timediff.Tpo -c -o ../../lib/lib501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib501-timediff.Tpo ../../lib/$(DEPDIR)/lib501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib501-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib501-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib501-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib501-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib501-timediff.Tpo -c -o ../../lib/lib501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib501-timediff.Tpo ../../lib/$(DEPDIR)/lib501-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib501-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib501-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib501-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib501_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib501-first.o -MD -MP -MF $(DEPDIR)/lib501-first.Tpo -c -o lib501-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib501-first.Tpo $(DEPDIR)/lib501-first.Po
@@ -8554,6 +11331,20 @@ lib502-lib502.obj: lib502.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib502-lib502.obj `if test -f 'lib502.c'; then $(CYGPATH_W) 'lib502.c'; else $(CYGPATH_W) '$(srcdir)/lib502.c'; fi`
 
+../../lib/lib502-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib502-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib502-timediff.Tpo -c -o ../../lib/lib502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib502-timediff.Tpo ../../lib/$(DEPDIR)/lib502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib502-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib502-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib502-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib502-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib502-timediff.Tpo -c -o ../../lib/lib502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib502-timediff.Tpo ../../lib/$(DEPDIR)/lib502-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib502-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib502-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib502-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib502_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib502-first.o -MD -MP -MF $(DEPDIR)/lib502-first.Tpo -c -o lib502-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib502-first.Tpo $(DEPDIR)/lib502-first.Po
@@ -8610,6 +11401,20 @@ lib503-lib503.obj: lib503.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib503-lib503.obj `if test -f 'lib503.c'; then $(CYGPATH_W) 'lib503.c'; else $(CYGPATH_W) '$(srcdir)/lib503.c'; fi`
 
+../../lib/lib503-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib503-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib503-timediff.Tpo -c -o ../../lib/lib503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib503-timediff.Tpo ../../lib/$(DEPDIR)/lib503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib503-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib503-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib503-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib503-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib503-timediff.Tpo -c -o ../../lib/lib503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib503-timediff.Tpo ../../lib/$(DEPDIR)/lib503-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib503-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib503-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib503-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib503_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib503-first.o -MD -MP -MF $(DEPDIR)/lib503-first.Tpo -c -o lib503-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib503-first.Tpo $(DEPDIR)/lib503-first.Po
@@ -8666,6 +11471,20 @@ lib504-lib504.obj: lib504.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib504-lib504.obj `if test -f 'lib504.c'; then $(CYGPATH_W) 'lib504.c'; else $(CYGPATH_W) '$(srcdir)/lib504.c'; fi`
 
+../../lib/lib504-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib504-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib504-timediff.Tpo -c -o ../../lib/lib504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib504-timediff.Tpo ../../lib/$(DEPDIR)/lib504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib504-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib504-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib504-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib504-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib504-timediff.Tpo -c -o ../../lib/lib504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib504-timediff.Tpo ../../lib/$(DEPDIR)/lib504-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib504-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib504-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib504-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib504_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib504-first.o -MD -MP -MF $(DEPDIR)/lib504-first.Tpo -c -o lib504-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib504-first.Tpo $(DEPDIR)/lib504-first.Po
@@ -8722,6 +11541,20 @@ lib505-lib505.obj: lib505.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib505-lib505.obj `if test -f 'lib505.c'; then $(CYGPATH_W) 'lib505.c'; else $(CYGPATH_W) '$(srcdir)/lib505.c'; fi`
 
+../../lib/lib505-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib505-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib505-timediff.Tpo -c -o ../../lib/lib505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib505-timediff.Tpo ../../lib/$(DEPDIR)/lib505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib505-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib505-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib505-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib505-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib505-timediff.Tpo -c -o ../../lib/lib505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib505-timediff.Tpo ../../lib/$(DEPDIR)/lib505-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib505-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib505-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib505-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib505_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib505-first.o -MD -MP -MF $(DEPDIR)/lib505-first.Tpo -c -o lib505-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib505-first.Tpo $(DEPDIR)/lib505-first.Po
@@ -8764,6 +11597,20 @@ lib506-lib506.obj: lib506.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib506-lib506.obj `if test -f 'lib506.c'; then $(CYGPATH_W) 'lib506.c'; else $(CYGPATH_W) '$(srcdir)/lib506.c'; fi`
 
+../../lib/lib506-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib506-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib506-timediff.Tpo -c -o ../../lib/lib506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib506-timediff.Tpo ../../lib/$(DEPDIR)/lib506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib506-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib506-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib506-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib506-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib506-timediff.Tpo -c -o ../../lib/lib506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib506-timediff.Tpo ../../lib/$(DEPDIR)/lib506-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib506-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib506-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib506-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib506_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib506-first.o -MD -MP -MF $(DEPDIR)/lib506-first.Tpo -c -o lib506-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib506-first.Tpo $(DEPDIR)/lib506-first.Po
@@ -8792,6 +11639,20 @@ lib507-lib507.obj: lib507.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib507-lib507.obj `if test -f 'lib507.c'; then $(CYGPATH_W) 'lib507.c'; else $(CYGPATH_W) '$(srcdir)/lib507.c'; fi`
 
+../../lib/lib507-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib507-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib507-timediff.Tpo -c -o ../../lib/lib507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib507-timediff.Tpo ../../lib/$(DEPDIR)/lib507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib507-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib507-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib507-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib507-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib507-timediff.Tpo -c -o ../../lib/lib507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib507-timediff.Tpo ../../lib/$(DEPDIR)/lib507-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib507-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib507-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib507-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib507_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib507-first.o -MD -MP -MF $(DEPDIR)/lib507-first.Tpo -c -o lib507-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib507-first.Tpo $(DEPDIR)/lib507-first.Po
@@ -8848,6 +11709,20 @@ lib508-lib508.obj: lib508.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib508-lib508.obj `if test -f 'lib508.c'; then $(CYGPATH_W) 'lib508.c'; else $(CYGPATH_W) '$(srcdir)/lib508.c'; fi`
 
+../../lib/lib508-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib508-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib508-timediff.Tpo -c -o ../../lib/lib508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib508-timediff.Tpo ../../lib/$(DEPDIR)/lib508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib508-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib508-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib508-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib508-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib508-timediff.Tpo -c -o ../../lib/lib508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib508-timediff.Tpo ../../lib/$(DEPDIR)/lib508-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib508-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib508-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib508-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib508_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib508-first.o -MD -MP -MF $(DEPDIR)/lib508-first.Tpo -c -o lib508-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib508-first.Tpo $(DEPDIR)/lib508-first.Po
@@ -8876,6 +11751,20 @@ lib509-lib509.obj: lib509.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib509-lib509.obj `if test -f 'lib509.c'; then $(CYGPATH_W) 'lib509.c'; else $(CYGPATH_W) '$(srcdir)/lib509.c'; fi`
 
+../../lib/lib509-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib509-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib509-timediff.Tpo -c -o ../../lib/lib509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib509-timediff.Tpo ../../lib/$(DEPDIR)/lib509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib509-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib509-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib509-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib509-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib509-timediff.Tpo -c -o ../../lib/lib509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib509-timediff.Tpo ../../lib/$(DEPDIR)/lib509-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib509-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib509-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib509-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib509_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib509-first.o -MD -MP -MF $(DEPDIR)/lib509-first.Tpo -c -o lib509-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib509-first.Tpo $(DEPDIR)/lib509-first.Po
@@ -8904,6 +11793,20 @@ lib510-lib510.obj: lib510.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib510-lib510.obj `if test -f 'lib510.c'; then $(CYGPATH_W) 'lib510.c'; else $(CYGPATH_W) '$(srcdir)/lib510.c'; fi`
 
+../../lib/lib510-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib510-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib510-timediff.Tpo -c -o ../../lib/lib510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib510-timediff.Tpo ../../lib/$(DEPDIR)/lib510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib510-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib510-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib510-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib510-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib510-timediff.Tpo -c -o ../../lib/lib510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib510-timediff.Tpo ../../lib/$(DEPDIR)/lib510-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib510-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib510-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib510-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib510_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib510-first.o -MD -MP -MF $(DEPDIR)/lib510-first.Tpo -c -o lib510-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib510-first.Tpo $(DEPDIR)/lib510-first.Po
@@ -8932,6 +11835,20 @@ lib511-lib511.obj: lib511.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib511-lib511.obj `if test -f 'lib511.c'; then $(CYGPATH_W) 'lib511.c'; else $(CYGPATH_W) '$(srcdir)/lib511.c'; fi`
 
+../../lib/lib511-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib511-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib511-timediff.Tpo -c -o ../../lib/lib511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib511-timediff.Tpo ../../lib/$(DEPDIR)/lib511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib511-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib511-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib511-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib511-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib511-timediff.Tpo -c -o ../../lib/lib511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib511-timediff.Tpo ../../lib/$(DEPDIR)/lib511-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib511-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib511-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib511-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib511_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib511-first.o -MD -MP -MF $(DEPDIR)/lib511-first.Tpo -c -o lib511-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib511-first.Tpo $(DEPDIR)/lib511-first.Po
@@ -8960,6 +11877,20 @@ lib512-lib512.obj: lib512.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib512-lib512.obj `if test -f 'lib512.c'; then $(CYGPATH_W) 'lib512.c'; else $(CYGPATH_W) '$(srcdir)/lib512.c'; fi`
 
+../../lib/lib512-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib512-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib512-timediff.Tpo -c -o ../../lib/lib512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib512-timediff.Tpo ../../lib/$(DEPDIR)/lib512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib512-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib512-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib512-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib512-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib512-timediff.Tpo -c -o ../../lib/lib512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib512-timediff.Tpo ../../lib/$(DEPDIR)/lib512-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib512-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib512-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib512-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib512_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib512-first.o -MD -MP -MF $(DEPDIR)/lib512-first.Tpo -c -o lib512-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib512-first.Tpo $(DEPDIR)/lib512-first.Po
@@ -8988,6 +11919,20 @@ lib513-lib513.obj: lib513.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib513-lib513.obj `if test -f 'lib513.c'; then $(CYGPATH_W) 'lib513.c'; else $(CYGPATH_W) '$(srcdir)/lib513.c'; fi`
 
+../../lib/lib513-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib513-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib513-timediff.Tpo -c -o ../../lib/lib513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib513-timediff.Tpo ../../lib/$(DEPDIR)/lib513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib513-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib513-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib513-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib513-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib513-timediff.Tpo -c -o ../../lib/lib513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib513-timediff.Tpo ../../lib/$(DEPDIR)/lib513-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib513-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib513-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib513-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib513_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib513-first.o -MD -MP -MF $(DEPDIR)/lib513-first.Tpo -c -o lib513-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib513-first.Tpo $(DEPDIR)/lib513-first.Po
@@ -9016,6 +11961,20 @@ lib514-lib514.obj: lib514.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib514-lib514.obj `if test -f 'lib514.c'; then $(CYGPATH_W) 'lib514.c'; else $(CYGPATH_W) '$(srcdir)/lib514.c'; fi`
 
+../../lib/lib514-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib514-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib514-timediff.Tpo -c -o ../../lib/lib514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib514-timediff.Tpo ../../lib/$(DEPDIR)/lib514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib514-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib514-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib514-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib514-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib514-timediff.Tpo -c -o ../../lib/lib514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib514-timediff.Tpo ../../lib/$(DEPDIR)/lib514-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib514-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib514-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib514-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib514_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib514-first.o -MD -MP -MF $(DEPDIR)/lib514-first.Tpo -c -o lib514-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib514-first.Tpo $(DEPDIR)/lib514-first.Po
@@ -9044,6 +12003,20 @@ lib515-lib515.obj: lib515.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib515-lib515.obj `if test -f 'lib515.c'; then $(CYGPATH_W) 'lib515.c'; else $(CYGPATH_W) '$(srcdir)/lib515.c'; fi`
 
+../../lib/lib515-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib515-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib515-timediff.Tpo -c -o ../../lib/lib515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib515-timediff.Tpo ../../lib/$(DEPDIR)/lib515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib515-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib515-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib515-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib515-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib515-timediff.Tpo -c -o ../../lib/lib515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib515-timediff.Tpo ../../lib/$(DEPDIR)/lib515-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib515-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib515-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib515-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib515_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib515-first.o -MD -MP -MF $(DEPDIR)/lib515-first.Tpo -c -o lib515-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib515-first.Tpo $(DEPDIR)/lib515-first.Po
@@ -9072,6 +12045,20 @@ lib516-lib516.obj: lib516.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib516-lib516.obj `if test -f 'lib516.c'; then $(CYGPATH_W) 'lib516.c'; else $(CYGPATH_W) '$(srcdir)/lib516.c'; fi`
 
+../../lib/lib516-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib516-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib516-timediff.Tpo -c -o ../../lib/lib516-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib516-timediff.Tpo ../../lib/$(DEPDIR)/lib516-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib516-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib516-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib516-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib516-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib516-timediff.Tpo -c -o ../../lib/lib516-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib516-timediff.Tpo ../../lib/$(DEPDIR)/lib516-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib516-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib516-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib516-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib516_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib516-first.o -MD -MP -MF $(DEPDIR)/lib516-first.Tpo -c -o lib516-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib516-first.Tpo $(DEPDIR)/lib516-first.Po
@@ -9100,6 +12087,20 @@ lib517-lib517.obj: lib517.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib517-lib517.obj `if test -f 'lib517.c'; then $(CYGPATH_W) 'lib517.c'; else $(CYGPATH_W) '$(srcdir)/lib517.c'; fi`
 
+../../lib/lib517-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib517-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib517-timediff.Tpo -c -o ../../lib/lib517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib517-timediff.Tpo ../../lib/$(DEPDIR)/lib517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib517-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib517-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib517-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib517-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib517-timediff.Tpo -c -o ../../lib/lib517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib517-timediff.Tpo ../../lib/$(DEPDIR)/lib517-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib517-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib517-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib517-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib517_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib517-first.o -MD -MP -MF $(DEPDIR)/lib517-first.Tpo -c -o lib517-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib517-first.Tpo $(DEPDIR)/lib517-first.Po
@@ -9128,6 +12129,20 @@ lib518-lib518.obj: lib518.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib518-lib518.obj `if test -f 'lib518.c'; then $(CYGPATH_W) 'lib518.c'; else $(CYGPATH_W) '$(srcdir)/lib518.c'; fi`
 
+../../lib/lib518-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib518-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib518-timediff.Tpo -c -o ../../lib/lib518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib518-timediff.Tpo ../../lib/$(DEPDIR)/lib518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib518-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib518-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib518-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib518-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib518-timediff.Tpo -c -o ../../lib/lib518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib518-timediff.Tpo ../../lib/$(DEPDIR)/lib518-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib518-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib518-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib518-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib518_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib518-first.o -MD -MP -MF $(DEPDIR)/lib518-first.Tpo -c -o lib518-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib518-first.Tpo $(DEPDIR)/lib518-first.Po
@@ -9184,6 +12199,20 @@ lib519-lib519.obj: lib519.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib519-lib519.obj `if test -f 'lib519.c'; then $(CYGPATH_W) 'lib519.c'; else $(CYGPATH_W) '$(srcdir)/lib519.c'; fi`
 
+../../lib/lib519-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib519-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib519-timediff.Tpo -c -o ../../lib/lib519-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib519-timediff.Tpo ../../lib/$(DEPDIR)/lib519-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib519-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib519-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib519-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib519-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib519-timediff.Tpo -c -o ../../lib/lib519-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib519-timediff.Tpo ../../lib/$(DEPDIR)/lib519-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib519-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib519-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib519-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib519_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib519-first.o -MD -MP -MF $(DEPDIR)/lib519-first.Tpo -c -o lib519-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib519-first.Tpo $(DEPDIR)/lib519-first.Po
@@ -9212,6 +12241,20 @@ lib520-lib520.obj: lib520.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib520-lib520.obj `if test -f 'lib520.c'; then $(CYGPATH_W) 'lib520.c'; else $(CYGPATH_W) '$(srcdir)/lib520.c'; fi`
 
+../../lib/lib520-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib520-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib520-timediff.Tpo -c -o ../../lib/lib520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib520-timediff.Tpo ../../lib/$(DEPDIR)/lib520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib520-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib520-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib520-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib520-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib520-timediff.Tpo -c -o ../../lib/lib520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib520-timediff.Tpo ../../lib/$(DEPDIR)/lib520-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib520-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib520-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib520-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib520_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib520-first.o -MD -MP -MF $(DEPDIR)/lib520-first.Tpo -c -o lib520-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib520-first.Tpo $(DEPDIR)/lib520-first.Po
@@ -9240,6 +12283,20 @@ lib521-lib521.obj: lib521.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib521-lib521.obj `if test -f 'lib521.c'; then $(CYGPATH_W) 'lib521.c'; else $(CYGPATH_W) '$(srcdir)/lib521.c'; fi`
 
+../../lib/lib521-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib521-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib521-timediff.Tpo -c -o ../../lib/lib521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib521-timediff.Tpo ../../lib/$(DEPDIR)/lib521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib521-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib521-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib521-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib521-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib521-timediff.Tpo -c -o ../../lib/lib521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib521-timediff.Tpo ../../lib/$(DEPDIR)/lib521-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib521-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib521-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib521-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib521_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib521-first.o -MD -MP -MF $(DEPDIR)/lib521-first.Tpo -c -o lib521-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib521-first.Tpo $(DEPDIR)/lib521-first.Po
@@ -9268,6 +12325,20 @@ lib523-lib523.obj: lib523.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib523-lib523.obj `if test -f 'lib523.c'; then $(CYGPATH_W) 'lib523.c'; else $(CYGPATH_W) '$(srcdir)/lib523.c'; fi`
 
+../../lib/lib523-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib523-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib523-timediff.Tpo -c -o ../../lib/lib523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib523-timediff.Tpo ../../lib/$(DEPDIR)/lib523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib523-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib523-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib523-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib523-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib523-timediff.Tpo -c -o ../../lib/lib523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib523-timediff.Tpo ../../lib/$(DEPDIR)/lib523-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib523-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib523-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib523-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib523_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib523-first.o -MD -MP -MF $(DEPDIR)/lib523-first.Tpo -c -o lib523-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib523-first.Tpo $(DEPDIR)/lib523-first.Po
@@ -9296,6 +12367,20 @@ lib524-lib524.obj: lib524.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib524-lib524.obj `if test -f 'lib524.c'; then $(CYGPATH_W) 'lib524.c'; else $(CYGPATH_W) '$(srcdir)/lib524.c'; fi`
 
+../../lib/lib524-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib524-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib524-timediff.Tpo -c -o ../../lib/lib524-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib524-timediff.Tpo ../../lib/$(DEPDIR)/lib524-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib524-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib524-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib524-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib524-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib524-timediff.Tpo -c -o ../../lib/lib524-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib524-timediff.Tpo ../../lib/$(DEPDIR)/lib524-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib524-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib524-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib524-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib524_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib524-first.o -MD -MP -MF $(DEPDIR)/lib524-first.Tpo -c -o lib524-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib524-first.Tpo $(DEPDIR)/lib524-first.Po
@@ -9324,6 +12409,20 @@ lib525-lib525.obj: lib525.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib525-lib525.obj `if test -f 'lib525.c'; then $(CYGPATH_W) 'lib525.c'; else $(CYGPATH_W) '$(srcdir)/lib525.c'; fi`
 
+../../lib/lib525-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib525-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib525-timediff.Tpo -c -o ../../lib/lib525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib525-timediff.Tpo ../../lib/$(DEPDIR)/lib525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib525-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib525-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib525-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib525-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib525-timediff.Tpo -c -o ../../lib/lib525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib525-timediff.Tpo ../../lib/$(DEPDIR)/lib525-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib525-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib525-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib525-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib525_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib525-first.o -MD -MP -MF $(DEPDIR)/lib525-first.Tpo -c -o lib525-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib525-first.Tpo $(DEPDIR)/lib525-first.Po
@@ -9394,6 +12493,20 @@ lib526-lib526.obj: lib526.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib526-lib526.obj `if test -f 'lib526.c'; then $(CYGPATH_W) 'lib526.c'; else $(CYGPATH_W) '$(srcdir)/lib526.c'; fi`
 
+../../lib/lib526-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib526-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib526-timediff.Tpo -c -o ../../lib/lib526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib526-timediff.Tpo ../../lib/$(DEPDIR)/lib526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib526-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib526-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib526-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib526-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib526-timediff.Tpo -c -o ../../lib/lib526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib526-timediff.Tpo ../../lib/$(DEPDIR)/lib526-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib526-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib526-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib526-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib526_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib526-first.o -MD -MP -MF $(DEPDIR)/lib526-first.Tpo -c -o lib526-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib526-first.Tpo $(DEPDIR)/lib526-first.Po
@@ -9450,6 +12563,20 @@ lib527-lib526.obj: lib526.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib527-lib526.obj `if test -f 'lib526.c'; then $(CYGPATH_W) 'lib526.c'; else $(CYGPATH_W) '$(srcdir)/lib526.c'; fi`
 
+../../lib/lib527-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib527-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib527-timediff.Tpo -c -o ../../lib/lib527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib527-timediff.Tpo ../../lib/$(DEPDIR)/lib527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib527-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib527-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib527-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib527-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib527-timediff.Tpo -c -o ../../lib/lib527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib527-timediff.Tpo ../../lib/$(DEPDIR)/lib527-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib527-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib527-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib527-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib527_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib527-first.o -MD -MP -MF $(DEPDIR)/lib527-first.Tpo -c -o lib527-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib527-first.Tpo $(DEPDIR)/lib527-first.Po
@@ -9506,6 +12633,20 @@ lib529-lib525.obj: lib525.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib529-lib525.obj `if test -f 'lib525.c'; then $(CYGPATH_W) 'lib525.c'; else $(CYGPATH_W) '$(srcdir)/lib525.c'; fi`
 
+../../lib/lib529-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib529-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib529-timediff.Tpo -c -o ../../lib/lib529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib529-timediff.Tpo ../../lib/$(DEPDIR)/lib529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib529-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib529-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib529-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib529-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib529-timediff.Tpo -c -o ../../lib/lib529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib529-timediff.Tpo ../../lib/$(DEPDIR)/lib529-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib529-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib529-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib529-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib529_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib529-first.o -MD -MP -MF $(DEPDIR)/lib529-first.Tpo -c -o lib529-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib529-first.Tpo $(DEPDIR)/lib529-first.Po
@@ -9576,6 +12717,20 @@ lib530-lib530.obj: lib530.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib530-lib530.obj `if test -f 'lib530.c'; then $(CYGPATH_W) 'lib530.c'; else $(CYGPATH_W) '$(srcdir)/lib530.c'; fi`
 
+../../lib/lib530-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib530-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib530-timediff.Tpo -c -o ../../lib/lib530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib530-timediff.Tpo ../../lib/$(DEPDIR)/lib530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib530-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib530-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib530-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib530-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib530-timediff.Tpo -c -o ../../lib/lib530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib530-timediff.Tpo ../../lib/$(DEPDIR)/lib530-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib530-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib530-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib530-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib530_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib530-first.o -MD -MP -MF $(DEPDIR)/lib530-first.Tpo -c -o lib530-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib530-first.Tpo $(DEPDIR)/lib530-first.Po
@@ -9632,6 +12787,20 @@ lib532-lib526.obj: lib526.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib532-lib526.obj `if test -f 'lib526.c'; then $(CYGPATH_W) 'lib526.c'; else $(CYGPATH_W) '$(srcdir)/lib526.c'; fi`
 
+../../lib/lib532-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib532-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib532-timediff.Tpo -c -o ../../lib/lib532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib532-timediff.Tpo ../../lib/$(DEPDIR)/lib532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib532-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib532-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib532-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib532-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib532-timediff.Tpo -c -o ../../lib/lib532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib532-timediff.Tpo ../../lib/$(DEPDIR)/lib532-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib532-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib532-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib532-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib532_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib532-first.o -MD -MP -MF $(DEPDIR)/lib532-first.Tpo -c -o lib532-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib532-first.Tpo $(DEPDIR)/lib532-first.Po
@@ -9688,6 +12857,20 @@ lib533-lib533.obj: lib533.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib533-lib533.obj `if test -f 'lib533.c'; then $(CYGPATH_W) 'lib533.c'; else $(CYGPATH_W) '$(srcdir)/lib533.c'; fi`
 
+../../lib/lib533-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib533-timediff.Tpo -c -o ../../lib/lib533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-timediff.Tpo ../../lib/$(DEPDIR)/lib533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib533-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib533-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib533-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib533-timediff.Tpo -c -o ../../lib/lib533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib533-timediff.Tpo ../../lib/$(DEPDIR)/lib533-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib533-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib533-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib533-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib533_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib533-first.o -MD -MP -MF $(DEPDIR)/lib533-first.Tpo -c -o lib533-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib533-first.Tpo $(DEPDIR)/lib533-first.Po
@@ -9744,6 +12927,20 @@ lib537-lib537.obj: lib537.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib537-lib537.obj `if test -f 'lib537.c'; then $(CYGPATH_W) 'lib537.c'; else $(CYGPATH_W) '$(srcdir)/lib537.c'; fi`
 
+../../lib/lib537-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib537-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib537-timediff.Tpo -c -o ../../lib/lib537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib537-timediff.Tpo ../../lib/$(DEPDIR)/lib537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib537-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib537-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib537-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib537-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib537-timediff.Tpo -c -o ../../lib/lib537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib537-timediff.Tpo ../../lib/$(DEPDIR)/lib537-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib537-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib537-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib537-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib537_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib537-first.o -MD -MP -MF $(DEPDIR)/lib537-first.Tpo -c -o lib537-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib537-first.Tpo $(DEPDIR)/lib537-first.Po
@@ -9800,6 +12997,20 @@ lib539-lib539.obj: lib539.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib539-lib539.obj `if test -f 'lib539.c'; then $(CYGPATH_W) 'lib539.c'; else $(CYGPATH_W) '$(srcdir)/lib539.c'; fi`
 
+../../lib/lib539-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib539-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib539-timediff.Tpo -c -o ../../lib/lib539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib539-timediff.Tpo ../../lib/$(DEPDIR)/lib539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib539-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib539-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib539-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib539-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib539-timediff.Tpo -c -o ../../lib/lib539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib539-timediff.Tpo ../../lib/$(DEPDIR)/lib539-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib539-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib539-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib539-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib539_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib539-first.o -MD -MP -MF $(DEPDIR)/lib539-first.Tpo -c -o lib539-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib539-first.Tpo $(DEPDIR)/lib539-first.Po
@@ -9828,6 +13039,20 @@ lib540-lib540.obj: lib540.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib540-lib540.obj `if test -f 'lib540.c'; then $(CYGPATH_W) 'lib540.c'; else $(CYGPATH_W) '$(srcdir)/lib540.c'; fi`
 
+../../lib/lib540-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib540-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib540-timediff.Tpo -c -o ../../lib/lib540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib540-timediff.Tpo ../../lib/$(DEPDIR)/lib540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib540-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib540-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib540-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib540-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib540-timediff.Tpo -c -o ../../lib/lib540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib540-timediff.Tpo ../../lib/$(DEPDIR)/lib540-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib540-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib540-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib540-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib540_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib540-first.o -MD -MP -MF $(DEPDIR)/lib540-first.Tpo -c -o lib540-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib540-first.Tpo $(DEPDIR)/lib540-first.Po
@@ -9884,6 +13109,20 @@ lib541-lib541.obj: lib541.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib541-lib541.obj `if test -f 'lib541.c'; then $(CYGPATH_W) 'lib541.c'; else $(CYGPATH_W) '$(srcdir)/lib541.c'; fi`
 
+../../lib/lib541-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib541-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib541-timediff.Tpo -c -o ../../lib/lib541-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib541-timediff.Tpo ../../lib/$(DEPDIR)/lib541-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib541-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib541-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib541-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib541-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib541-timediff.Tpo -c -o ../../lib/lib541-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib541-timediff.Tpo ../../lib/$(DEPDIR)/lib541-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib541-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib541-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib541-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib541_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib541-first.o -MD -MP -MF $(DEPDIR)/lib541-first.Tpo -c -o lib541-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib541-first.Tpo $(DEPDIR)/lib541-first.Po
@@ -9926,6 +13165,20 @@ lib542-lib542.obj: lib542.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib542-lib542.obj `if test -f 'lib542.c'; then $(CYGPATH_W) 'lib542.c'; else $(CYGPATH_W) '$(srcdir)/lib542.c'; fi`
 
+../../lib/lib542-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib542-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib542-timediff.Tpo -c -o ../../lib/lib542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib542-timediff.Tpo ../../lib/$(DEPDIR)/lib542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib542-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib542-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib542-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib542-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib542-timediff.Tpo -c -o ../../lib/lib542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib542-timediff.Tpo ../../lib/$(DEPDIR)/lib542-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib542-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib542-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib542-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib542_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib542-first.o -MD -MP -MF $(DEPDIR)/lib542-first.Tpo -c -o lib542-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib542-first.Tpo $(DEPDIR)/lib542-first.Po
@@ -9954,6 +13207,20 @@ lib543-lib543.obj: lib543.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib543-lib543.obj `if test -f 'lib543.c'; then $(CYGPATH_W) 'lib543.c'; else $(CYGPATH_W) '$(srcdir)/lib543.c'; fi`
 
+../../lib/lib543-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib543-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib543-timediff.Tpo -c -o ../../lib/lib543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib543-timediff.Tpo ../../lib/$(DEPDIR)/lib543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib543-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib543-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib543-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib543-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib543-timediff.Tpo -c -o ../../lib/lib543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib543-timediff.Tpo ../../lib/$(DEPDIR)/lib543-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib543-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib543-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib543-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib543_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib543-first.o -MD -MP -MF $(DEPDIR)/lib543-first.Tpo -c -o lib543-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib543-first.Tpo $(DEPDIR)/lib543-first.Po
@@ -9982,6 +13249,20 @@ lib544-lib544.obj: lib544.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib544-lib544.obj `if test -f 'lib544.c'; then $(CYGPATH_W) 'lib544.c'; else $(CYGPATH_W) '$(srcdir)/lib544.c'; fi`
 
+../../lib/lib544-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib544-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib544-timediff.Tpo -c -o ../../lib/lib544-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib544-timediff.Tpo ../../lib/$(DEPDIR)/lib544-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib544-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib544-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib544-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib544-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib544-timediff.Tpo -c -o ../../lib/lib544-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib544-timediff.Tpo ../../lib/$(DEPDIR)/lib544-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib544-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib544-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib544-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib544_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib544-first.o -MD -MP -MF $(DEPDIR)/lib544-first.Tpo -c -o lib544-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib544-first.Tpo $(DEPDIR)/lib544-first.Po
@@ -10010,6 +13291,20 @@ lib545-lib544.obj: lib544.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib545-lib544.obj `if test -f 'lib544.c'; then $(CYGPATH_W) 'lib544.c'; else $(CYGPATH_W) '$(srcdir)/lib544.c'; fi`
 
+../../lib/lib545-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib545-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib545-timediff.Tpo -c -o ../../lib/lib545-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib545-timediff.Tpo ../../lib/$(DEPDIR)/lib545-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib545-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib545-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib545-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib545-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib545-timediff.Tpo -c -o ../../lib/lib545-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib545-timediff.Tpo ../../lib/$(DEPDIR)/lib545-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib545-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib545-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib545-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib545_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib545-first.o -MD -MP -MF $(DEPDIR)/lib545-first.Tpo -c -o lib545-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib545-first.Tpo $(DEPDIR)/lib545-first.Po
@@ -10038,6 +13333,20 @@ lib547-lib547.obj: lib547.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib547-lib547.obj `if test -f 'lib547.c'; then $(CYGPATH_W) 'lib547.c'; else $(CYGPATH_W) '$(srcdir)/lib547.c'; fi`
 
+../../lib/lib547-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib547-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib547-timediff.Tpo -c -o ../../lib/lib547-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib547-timediff.Tpo ../../lib/$(DEPDIR)/lib547-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib547-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib547-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib547-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib547-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib547-timediff.Tpo -c -o ../../lib/lib547-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib547-timediff.Tpo ../../lib/$(DEPDIR)/lib547-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib547-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib547-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib547-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib547_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib547-first.o -MD -MP -MF $(DEPDIR)/lib547-first.Tpo -c -o lib547-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib547-first.Tpo $(DEPDIR)/lib547-first.Po
@@ -10066,6 +13375,20 @@ lib548-lib547.obj: lib547.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib548-lib547.obj `if test -f 'lib547.c'; then $(CYGPATH_W) 'lib547.c'; else $(CYGPATH_W) '$(srcdir)/lib547.c'; fi`
 
+../../lib/lib548-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib548-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib548-timediff.Tpo -c -o ../../lib/lib548-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib548-timediff.Tpo ../../lib/$(DEPDIR)/lib548-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib548-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib548-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib548-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib548-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib548-timediff.Tpo -c -o ../../lib/lib548-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib548-timediff.Tpo ../../lib/$(DEPDIR)/lib548-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib548-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib548-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib548-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib548_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib548-first.o -MD -MP -MF $(DEPDIR)/lib548-first.Tpo -c -o lib548-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib548-first.Tpo $(DEPDIR)/lib548-first.Po
@@ -10094,6 +13417,20 @@ lib549-lib549.obj: lib549.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib549-lib549.obj `if test -f 'lib549.c'; then $(CYGPATH_W) 'lib549.c'; else $(CYGPATH_W) '$(srcdir)/lib549.c'; fi`
 
+../../lib/lib549-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib549-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib549-timediff.Tpo -c -o ../../lib/lib549-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib549-timediff.Tpo ../../lib/$(DEPDIR)/lib549-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib549-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib549-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib549-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib549-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib549-timediff.Tpo -c -o ../../lib/lib549-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib549-timediff.Tpo ../../lib/$(DEPDIR)/lib549-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib549-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib549-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib549-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib549_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib549-first.o -MD -MP -MF $(DEPDIR)/lib549-first.Tpo -c -o lib549-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib549-first.Tpo $(DEPDIR)/lib549-first.Po
@@ -10122,6 +13459,20 @@ lib552-lib552.obj: lib552.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib552-lib552.obj `if test -f 'lib552.c'; then $(CYGPATH_W) 'lib552.c'; else $(CYGPATH_W) '$(srcdir)/lib552.c'; fi`
 
+../../lib/lib552-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib552-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib552-timediff.Tpo -c -o ../../lib/lib552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib552-timediff.Tpo ../../lib/$(DEPDIR)/lib552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib552-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib552-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib552-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib552-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib552-timediff.Tpo -c -o ../../lib/lib552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib552-timediff.Tpo ../../lib/$(DEPDIR)/lib552-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib552-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib552-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib552-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib552_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib552-first.o -MD -MP -MF $(DEPDIR)/lib552-first.Tpo -c -o lib552-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib552-first.Tpo $(DEPDIR)/lib552-first.Po
@@ -10164,6 +13515,20 @@ lib553-lib553.obj: lib553.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib553-lib553.obj `if test -f 'lib553.c'; then $(CYGPATH_W) 'lib553.c'; else $(CYGPATH_W) '$(srcdir)/lib553.c'; fi`
 
+../../lib/lib553-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib553-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib553-timediff.Tpo -c -o ../../lib/lib553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib553-timediff.Tpo ../../lib/$(DEPDIR)/lib553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib553-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib553-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib553-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib553-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib553-timediff.Tpo -c -o ../../lib/lib553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib553-timediff.Tpo ../../lib/$(DEPDIR)/lib553-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib553-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib553-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib553-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib553_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib553-first.o -MD -MP -MF $(DEPDIR)/lib553-first.Tpo -c -o lib553-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib553-first.Tpo $(DEPDIR)/lib553-first.Po
@@ -10192,6 +13557,20 @@ lib554-lib554.obj: lib554.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib554-lib554.obj `if test -f 'lib554.c'; then $(CYGPATH_W) 'lib554.c'; else $(CYGPATH_W) '$(srcdir)/lib554.c'; fi`
 
+../../lib/lib554-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib554-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib554-timediff.Tpo -c -o ../../lib/lib554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib554-timediff.Tpo ../../lib/$(DEPDIR)/lib554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib554-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib554-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib554-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib554-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib554-timediff.Tpo -c -o ../../lib/lib554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib554-timediff.Tpo ../../lib/$(DEPDIR)/lib554-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib554-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib554-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib554-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib554_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib554-first.o -MD -MP -MF $(DEPDIR)/lib554-first.Tpo -c -o lib554-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib554-first.Tpo $(DEPDIR)/lib554-first.Po
@@ -10220,6 +13599,20 @@ lib555-lib555.obj: lib555.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib555-lib555.obj `if test -f 'lib555.c'; then $(CYGPATH_W) 'lib555.c'; else $(CYGPATH_W) '$(srcdir)/lib555.c'; fi`
 
+../../lib/lib555-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib555-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib555-timediff.Tpo -c -o ../../lib/lib555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib555-timediff.Tpo ../../lib/$(DEPDIR)/lib555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib555-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib555-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib555-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib555-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib555-timediff.Tpo -c -o ../../lib/lib555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib555-timediff.Tpo ../../lib/$(DEPDIR)/lib555-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib555-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib555-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib555-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib555_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib555-first.o -MD -MP -MF $(DEPDIR)/lib555-first.Tpo -c -o lib555-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib555-first.Tpo $(DEPDIR)/lib555-first.Po
@@ -10276,6 +13669,20 @@ lib556-lib556.obj: lib556.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib556-lib556.obj `if test -f 'lib556.c'; then $(CYGPATH_W) 'lib556.c'; else $(CYGPATH_W) '$(srcdir)/lib556.c'; fi`
 
+../../lib/lib556-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib556-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib556-timediff.Tpo -c -o ../../lib/lib556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib556-timediff.Tpo ../../lib/$(DEPDIR)/lib556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib556-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib556-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib556-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib556-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib556-timediff.Tpo -c -o ../../lib/lib556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib556-timediff.Tpo ../../lib/$(DEPDIR)/lib556-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib556-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib556-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib556-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib556_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib556-first.o -MD -MP -MF $(DEPDIR)/lib556-first.Tpo -c -o lib556-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib556-first.Tpo $(DEPDIR)/lib556-first.Po
@@ -10318,6 +13725,20 @@ lib557-lib557.obj: lib557.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib557-lib557.obj `if test -f 'lib557.c'; then $(CYGPATH_W) 'lib557.c'; else $(CYGPATH_W) '$(srcdir)/lib557.c'; fi`
 
+../../lib/lib557-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib557-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib557-timediff.Tpo -c -o ../../lib/lib557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib557-timediff.Tpo ../../lib/$(DEPDIR)/lib557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib557-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib557-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib557-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib557-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib557-timediff.Tpo -c -o ../../lib/lib557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib557-timediff.Tpo ../../lib/$(DEPDIR)/lib557-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib557-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib557-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib557-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib557_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib557-first.o -MD -MP -MF $(DEPDIR)/lib557-first.Tpo -c -o lib557-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib557-first.Tpo $(DEPDIR)/lib557-first.Po
@@ -10346,6 +13767,20 @@ lib558-lib558.obj: lib558.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib558-lib558.obj `if test -f 'lib558.c'; then $(CYGPATH_W) 'lib558.c'; else $(CYGPATH_W) '$(srcdir)/lib558.c'; fi`
 
+../../lib/lib558-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib558-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib558-timediff.Tpo -c -o ../../lib/lib558-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib558-timediff.Tpo ../../lib/$(DEPDIR)/lib558-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib558-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib558-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib558-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib558-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib558-timediff.Tpo -c -o ../../lib/lib558-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib558-timediff.Tpo ../../lib/$(DEPDIR)/lib558-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib558-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib558-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib558-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib558_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib558-first.o -MD -MP -MF $(DEPDIR)/lib558-first.Tpo -c -o lib558-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib558-first.Tpo $(DEPDIR)/lib558-first.Po
@@ -10374,6 +13809,20 @@ lib559-lib559.obj: lib559.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib559-lib559.obj `if test -f 'lib559.c'; then $(CYGPATH_W) 'lib559.c'; else $(CYGPATH_W) '$(srcdir)/lib559.c'; fi`
 
+../../lib/lib559-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib559-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib559-timediff.Tpo -c -o ../../lib/lib559-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib559-timediff.Tpo ../../lib/$(DEPDIR)/lib559-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib559-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib559-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib559-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib559-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib559-timediff.Tpo -c -o ../../lib/lib559-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib559-timediff.Tpo ../../lib/$(DEPDIR)/lib559-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib559-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib559-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib559-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib559_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib559-first.o -MD -MP -MF $(DEPDIR)/lib559-first.Tpo -c -o lib559-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib559-first.Tpo $(DEPDIR)/lib559-first.Po
@@ -10402,6 +13851,20 @@ lib560-lib560.obj: lib560.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib560-lib560.obj `if test -f 'lib560.c'; then $(CYGPATH_W) 'lib560.c'; else $(CYGPATH_W) '$(srcdir)/lib560.c'; fi`
 
+../../lib/lib560-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib560-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib560-timediff.Tpo -c -o ../../lib/lib560-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib560-timediff.Tpo ../../lib/$(DEPDIR)/lib560-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib560-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib560-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib560-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib560-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib560-timediff.Tpo -c -o ../../lib/lib560-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib560-timediff.Tpo ../../lib/$(DEPDIR)/lib560-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib560-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib560-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib560-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib560_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib560-first.o -MD -MP -MF $(DEPDIR)/lib560-first.Tpo -c -o lib560-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib560-first.Tpo $(DEPDIR)/lib560-first.Po
@@ -10458,6 +13921,20 @@ lib562-lib562.obj: lib562.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib562-lib562.obj `if test -f 'lib562.c'; then $(CYGPATH_W) 'lib562.c'; else $(CYGPATH_W) '$(srcdir)/lib562.c'; fi`
 
+../../lib/lib562-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib562-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib562-timediff.Tpo -c -o ../../lib/lib562-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib562-timediff.Tpo ../../lib/$(DEPDIR)/lib562-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib562-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib562-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib562-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib562-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib562-timediff.Tpo -c -o ../../lib/lib562-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib562-timediff.Tpo ../../lib/$(DEPDIR)/lib562-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib562-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib562-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib562-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib562_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib562-first.o -MD -MP -MF $(DEPDIR)/lib562-first.Tpo -c -o lib562-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib562-first.Tpo $(DEPDIR)/lib562-first.Po
@@ -10486,6 +13963,20 @@ lib564-lib564.obj: lib564.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib564-lib564.obj `if test -f 'lib564.c'; then $(CYGPATH_W) 'lib564.c'; else $(CYGPATH_W) '$(srcdir)/lib564.c'; fi`
 
+../../lib/lib564-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib564-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib564-timediff.Tpo -c -o ../../lib/lib564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib564-timediff.Tpo ../../lib/$(DEPDIR)/lib564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib564-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib564-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib564-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib564-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib564-timediff.Tpo -c -o ../../lib/lib564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib564-timediff.Tpo ../../lib/$(DEPDIR)/lib564-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib564-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib564-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib564-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib564_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib564-first.o -MD -MP -MF $(DEPDIR)/lib564-first.Tpo -c -o lib564-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib564-first.Tpo $(DEPDIR)/lib564-first.Po
@@ -10542,6 +14033,20 @@ lib565-lib510.obj: lib510.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib565-lib510.obj `if test -f 'lib510.c'; then $(CYGPATH_W) 'lib510.c'; else $(CYGPATH_W) '$(srcdir)/lib510.c'; fi`
 
+../../lib/lib565-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib565-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib565-timediff.Tpo -c -o ../../lib/lib565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib565-timediff.Tpo ../../lib/$(DEPDIR)/lib565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib565-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib565-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib565-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib565-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib565-timediff.Tpo -c -o ../../lib/lib565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib565-timediff.Tpo ../../lib/$(DEPDIR)/lib565-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib565-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib565-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib565-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib565_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib565-first.o -MD -MP -MF $(DEPDIR)/lib565-first.Tpo -c -o lib565-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib565-first.Tpo $(DEPDIR)/lib565-first.Po
@@ -10570,6 +14075,20 @@ lib566-lib566.obj: lib566.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib566-lib566.obj `if test -f 'lib566.c'; then $(CYGPATH_W) 'lib566.c'; else $(CYGPATH_W) '$(srcdir)/lib566.c'; fi`
 
+../../lib/lib566-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib566-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib566-timediff.Tpo -c -o ../../lib/lib566-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib566-timediff.Tpo ../../lib/$(DEPDIR)/lib566-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib566-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib566-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib566-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib566-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib566-timediff.Tpo -c -o ../../lib/lib566-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib566-timediff.Tpo ../../lib/$(DEPDIR)/lib566-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib566-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib566-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib566-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib566_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib566-first.o -MD -MP -MF $(DEPDIR)/lib566-first.Tpo -c -o lib566-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib566-first.Tpo $(DEPDIR)/lib566-first.Po
@@ -10612,6 +14131,20 @@ lib567-lib567.obj: lib567.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib567-lib567.obj `if test -f 'lib567.c'; then $(CYGPATH_W) 'lib567.c'; else $(CYGPATH_W) '$(srcdir)/lib567.c'; fi`
 
+../../lib/lib567-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib567-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib567-timediff.Tpo -c -o ../../lib/lib567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib567-timediff.Tpo ../../lib/$(DEPDIR)/lib567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib567-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib567-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib567-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib567-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib567-timediff.Tpo -c -o ../../lib/lib567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib567-timediff.Tpo ../../lib/$(DEPDIR)/lib567-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib567-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib567-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib567-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib567_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib567-first.o -MD -MP -MF $(DEPDIR)/lib567-first.Tpo -c -o lib567-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib567-first.Tpo $(DEPDIR)/lib567-first.Po
@@ -10640,6 +14173,20 @@ lib568-lib568.obj: lib568.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib568-lib568.obj `if test -f 'lib568.c'; then $(CYGPATH_W) 'lib568.c'; else $(CYGPATH_W) '$(srcdir)/lib568.c'; fi`
 
+../../lib/lib568-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib568-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib568-timediff.Tpo -c -o ../../lib/lib568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib568-timediff.Tpo ../../lib/$(DEPDIR)/lib568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib568-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib568-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib568-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib568-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib568-timediff.Tpo -c -o ../../lib/lib568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib568-timediff.Tpo ../../lib/$(DEPDIR)/lib568-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib568-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib568-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib568-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib568_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib568-first.o -MD -MP -MF $(DEPDIR)/lib568-first.Tpo -c -o lib568-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib568-first.Tpo $(DEPDIR)/lib568-first.Po
@@ -10682,6 +14229,20 @@ lib569-lib569.obj: lib569.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib569-lib569.obj `if test -f 'lib569.c'; then $(CYGPATH_W) 'lib569.c'; else $(CYGPATH_W) '$(srcdir)/lib569.c'; fi`
 
+../../lib/lib569-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib569-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib569-timediff.Tpo -c -o ../../lib/lib569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib569-timediff.Tpo ../../lib/$(DEPDIR)/lib569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib569-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib569-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib569-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib569-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib569-timediff.Tpo -c -o ../../lib/lib569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib569-timediff.Tpo ../../lib/$(DEPDIR)/lib569-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib569-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib569-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib569-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib569_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib569-first.o -MD -MP -MF $(DEPDIR)/lib569-first.Tpo -c -o lib569-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib569-first.Tpo $(DEPDIR)/lib569-first.Po
@@ -10724,6 +14285,20 @@ lib570-lib570.obj: lib570.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib570-lib570.obj `if test -f 'lib570.c'; then $(CYGPATH_W) 'lib570.c'; else $(CYGPATH_W) '$(srcdir)/lib570.c'; fi`
 
+../../lib/lib570-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib570-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib570-timediff.Tpo -c -o ../../lib/lib570-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib570-timediff.Tpo ../../lib/$(DEPDIR)/lib570-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib570-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib570-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib570-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib570-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib570-timediff.Tpo -c -o ../../lib/lib570-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib570-timediff.Tpo ../../lib/$(DEPDIR)/lib570-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib570-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib570-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib570-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib570_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib570-first.o -MD -MP -MF $(DEPDIR)/lib570-first.Tpo -c -o lib570-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib570-first.Tpo $(DEPDIR)/lib570-first.Po
@@ -10752,6 +14327,20 @@ lib571-lib571.obj: lib571.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib571-lib571.obj `if test -f 'lib571.c'; then $(CYGPATH_W) 'lib571.c'; else $(CYGPATH_W) '$(srcdir)/lib571.c'; fi`
 
+../../lib/lib571-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib571-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib571-timediff.Tpo -c -o ../../lib/lib571-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib571-timediff.Tpo ../../lib/$(DEPDIR)/lib571-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib571-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib571-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib571-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib571-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib571-timediff.Tpo -c -o ../../lib/lib571-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib571-timediff.Tpo ../../lib/$(DEPDIR)/lib571-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib571-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib571-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib571-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib571_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib571-first.o -MD -MP -MF $(DEPDIR)/lib571-first.Tpo -c -o lib571-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib571-first.Tpo $(DEPDIR)/lib571-first.Po
@@ -10808,6 +14397,20 @@ lib572-lib572.obj: lib572.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib572-lib572.obj `if test -f 'lib572.c'; then $(CYGPATH_W) 'lib572.c'; else $(CYGPATH_W) '$(srcdir)/lib572.c'; fi`
 
+../../lib/lib572-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib572-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib572-timediff.Tpo -c -o ../../lib/lib572-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib572-timediff.Tpo ../../lib/$(DEPDIR)/lib572-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib572-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib572-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib572-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib572-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib572-timediff.Tpo -c -o ../../lib/lib572-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib572-timediff.Tpo ../../lib/$(DEPDIR)/lib572-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib572-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib572-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib572-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib572_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib572-first.o -MD -MP -MF $(DEPDIR)/lib572-first.Tpo -c -o lib572-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib572-first.Tpo $(DEPDIR)/lib572-first.Po
@@ -10850,6 +14453,20 @@ lib573-lib573.obj: lib573.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib573-lib573.obj `if test -f 'lib573.c'; then $(CYGPATH_W) 'lib573.c'; else $(CYGPATH_W) '$(srcdir)/lib573.c'; fi`
 
+../../lib/lib573-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib573-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib573-timediff.Tpo -c -o ../../lib/lib573-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib573-timediff.Tpo ../../lib/$(DEPDIR)/lib573-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib573-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib573-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib573-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib573-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib573-timediff.Tpo -c -o ../../lib/lib573-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib573-timediff.Tpo ../../lib/$(DEPDIR)/lib573-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib573-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib573-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib573-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib573_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib573-first.o -MD -MP -MF $(DEPDIR)/lib573-first.Tpo -c -o lib573-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib573-first.Tpo $(DEPDIR)/lib573-first.Po
@@ -10920,6 +14537,20 @@ lib574-lib574.obj: lib574.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib574-lib574.obj `if test -f 'lib574.c'; then $(CYGPATH_W) 'lib574.c'; else $(CYGPATH_W) '$(srcdir)/lib574.c'; fi`
 
+../../lib/lib574-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib574-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib574-timediff.Tpo -c -o ../../lib/lib574-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib574-timediff.Tpo ../../lib/$(DEPDIR)/lib574-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib574-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib574-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib574-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib574-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib574-timediff.Tpo -c -o ../../lib/lib574-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib574-timediff.Tpo ../../lib/$(DEPDIR)/lib574-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib574-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib574-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib574-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib574_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib574-first.o -MD -MP -MF $(DEPDIR)/lib574-first.Tpo -c -o lib574-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib574-first.Tpo $(DEPDIR)/lib574-first.Po
@@ -10948,6 +14579,20 @@ lib575-lib575.obj: lib575.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib575-lib575.obj `if test -f 'lib575.c'; then $(CYGPATH_W) 'lib575.c'; else $(CYGPATH_W) '$(srcdir)/lib575.c'; fi`
 
+../../lib/lib575-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib575-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib575-timediff.Tpo -c -o ../../lib/lib575-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib575-timediff.Tpo ../../lib/$(DEPDIR)/lib575-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib575-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib575-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib575-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib575-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib575-timediff.Tpo -c -o ../../lib/lib575-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib575-timediff.Tpo ../../lib/$(DEPDIR)/lib575-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib575-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib575-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib575-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib575_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib575-first.o -MD -MP -MF $(DEPDIR)/lib575-first.Tpo -c -o lib575-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib575-first.Tpo $(DEPDIR)/lib575-first.Po
@@ -11004,6 +14649,20 @@ lib576-lib576.obj: lib576.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib576-lib576.obj `if test -f 'lib576.c'; then $(CYGPATH_W) 'lib576.c'; else $(CYGPATH_W) '$(srcdir)/lib576.c'; fi`
 
+../../lib/lib576-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib576-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib576-timediff.Tpo -c -o ../../lib/lib576-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib576-timediff.Tpo ../../lib/$(DEPDIR)/lib576-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib576-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib576-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib576-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib576-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib576-timediff.Tpo -c -o ../../lib/lib576-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib576-timediff.Tpo ../../lib/$(DEPDIR)/lib576-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib576-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib576-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib576-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib576_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib576-first.o -MD -MP -MF $(DEPDIR)/lib576-first.Tpo -c -o lib576-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib576-first.Tpo $(DEPDIR)/lib576-first.Po
@@ -11032,6 +14691,20 @@ lib578-lib578.obj: lib578.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib578-lib578.obj `if test -f 'lib578.c'; then $(CYGPATH_W) 'lib578.c'; else $(CYGPATH_W) '$(srcdir)/lib578.c'; fi`
 
+../../lib/lib578-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib578-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib578-timediff.Tpo -c -o ../../lib/lib578-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib578-timediff.Tpo ../../lib/$(DEPDIR)/lib578-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib578-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib578-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib578-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib578-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib578-timediff.Tpo -c -o ../../lib/lib578-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib578-timediff.Tpo ../../lib/$(DEPDIR)/lib578-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib578-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib578-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib578-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib578_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib578-first.o -MD -MP -MF $(DEPDIR)/lib578-first.Tpo -c -o lib578-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib578-first.Tpo $(DEPDIR)/lib578-first.Po
@@ -11074,6 +14747,20 @@ lib579-lib579.obj: lib579.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib579-lib579.obj `if test -f 'lib579.c'; then $(CYGPATH_W) 'lib579.c'; else $(CYGPATH_W) '$(srcdir)/lib579.c'; fi`
 
+../../lib/lib579-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib579-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib579-timediff.Tpo -c -o ../../lib/lib579-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib579-timediff.Tpo ../../lib/$(DEPDIR)/lib579-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib579-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib579-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib579-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib579-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib579-timediff.Tpo -c -o ../../lib/lib579-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib579-timediff.Tpo ../../lib/$(DEPDIR)/lib579-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib579-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib579-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib579-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib579_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib579-first.o -MD -MP -MF $(DEPDIR)/lib579-first.Tpo -c -o lib579-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib579-first.Tpo $(DEPDIR)/lib579-first.Po
@@ -11116,6 +14803,20 @@ lib582-lib582.obj: lib582.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib582-lib582.obj `if test -f 'lib582.c'; then $(CYGPATH_W) 'lib582.c'; else $(CYGPATH_W) '$(srcdir)/lib582.c'; fi`
 
+../../lib/lib582-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib582-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib582-timediff.Tpo -c -o ../../lib/lib582-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib582-timediff.Tpo ../../lib/$(DEPDIR)/lib582-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib582-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib582-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib582-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib582-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib582-timediff.Tpo -c -o ../../lib/lib582-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib582-timediff.Tpo ../../lib/$(DEPDIR)/lib582-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib582-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib582-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib582-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib582_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib582-first.o -MD -MP -MF $(DEPDIR)/lib582-first.Tpo -c -o lib582-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib582-first.Tpo $(DEPDIR)/lib582-first.Po
@@ -11186,6 +14887,20 @@ lib583-lib583.obj: lib583.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib583-lib583.obj `if test -f 'lib583.c'; then $(CYGPATH_W) 'lib583.c'; else $(CYGPATH_W) '$(srcdir)/lib583.c'; fi`
 
+../../lib/lib583-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib583-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib583-timediff.Tpo -c -o ../../lib/lib583-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib583-timediff.Tpo ../../lib/$(DEPDIR)/lib583-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib583-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib583-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib583-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib583-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib583-timediff.Tpo -c -o ../../lib/lib583-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib583-timediff.Tpo ../../lib/$(DEPDIR)/lib583-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib583-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib583-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib583-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib583_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib583-first.o -MD -MP -MF $(DEPDIR)/lib583-first.Tpo -c -o lib583-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib583-first.Tpo $(DEPDIR)/lib583-first.Po
@@ -11214,6 +14929,20 @@ lib584-lib589.obj: lib589.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib584-lib589.obj `if test -f 'lib589.c'; then $(CYGPATH_W) 'lib589.c'; else $(CYGPATH_W) '$(srcdir)/lib589.c'; fi`
 
+../../lib/lib584-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib584-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib584-timediff.Tpo -c -o ../../lib/lib584-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib584-timediff.Tpo ../../lib/$(DEPDIR)/lib584-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib584-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib584-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib584-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib584-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib584-timediff.Tpo -c -o ../../lib/lib584-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib584-timediff.Tpo ../../lib/$(DEPDIR)/lib584-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib584-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib584-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib584-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib584_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib584-first.o -MD -MP -MF $(DEPDIR)/lib584-first.Tpo -c -o lib584-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib584-first.Tpo $(DEPDIR)/lib584-first.Po
@@ -11242,6 +14971,20 @@ lib585-lib500.obj: lib500.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib585-lib500.obj `if test -f 'lib500.c'; then $(CYGPATH_W) 'lib500.c'; else $(CYGPATH_W) '$(srcdir)/lib500.c'; fi`
 
+../../lib/lib585-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib585-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib585-timediff.Tpo -c -o ../../lib/lib585-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib585-timediff.Tpo ../../lib/$(DEPDIR)/lib585-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib585-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib585-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib585-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib585-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib585-timediff.Tpo -c -o ../../lib/lib585-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib585-timediff.Tpo ../../lib/$(DEPDIR)/lib585-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib585-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib585-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib585-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib585_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib585-first.o -MD -MP -MF $(DEPDIR)/lib585-first.Tpo -c -o lib585-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib585-first.Tpo $(DEPDIR)/lib585-first.Po
@@ -11312,6 +15055,20 @@ lib586-lib586.obj: lib586.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib586-lib586.obj `if test -f 'lib586.c'; then $(CYGPATH_W) 'lib586.c'; else $(CYGPATH_W) '$(srcdir)/lib586.c'; fi`
 
+../../lib/lib586-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib586-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib586-timediff.Tpo -c -o ../../lib/lib586-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib586-timediff.Tpo ../../lib/$(DEPDIR)/lib586-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib586-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib586-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib586-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib586-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib586-timediff.Tpo -c -o ../../lib/lib586-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib586-timediff.Tpo ../../lib/$(DEPDIR)/lib586-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib586-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib586-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib586-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib586_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib586-first.o -MD -MP -MF $(DEPDIR)/lib586-first.Tpo -c -o lib586-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib586-first.Tpo $(DEPDIR)/lib586-first.Po
@@ -11340,6 +15097,20 @@ lib587-lib554.obj: lib554.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib587-lib554.obj `if test -f 'lib554.c'; then $(CYGPATH_W) 'lib554.c'; else $(CYGPATH_W) '$(srcdir)/lib554.c'; fi`
 
+../../lib/lib587-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib587-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib587-timediff.Tpo -c -o ../../lib/lib587-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib587-timediff.Tpo ../../lib/$(DEPDIR)/lib587-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib587-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib587-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib587-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib587-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib587-timediff.Tpo -c -o ../../lib/lib587-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib587-timediff.Tpo ../../lib/$(DEPDIR)/lib587-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib587-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib587-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib587-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib587_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib587-first.o -MD -MP -MF $(DEPDIR)/lib587-first.Tpo -c -o lib587-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib587-first.Tpo $(DEPDIR)/lib587-first.Po
@@ -11368,6 +15139,20 @@ lib589-lib589.obj: lib589.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib589-lib589.obj `if test -f 'lib589.c'; then $(CYGPATH_W) 'lib589.c'; else $(CYGPATH_W) '$(srcdir)/lib589.c'; fi`
 
+../../lib/lib589-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib589-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib589-timediff.Tpo -c -o ../../lib/lib589-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib589-timediff.Tpo ../../lib/$(DEPDIR)/lib589-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib589-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib589-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib589-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib589-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib589-timediff.Tpo -c -o ../../lib/lib589-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib589-timediff.Tpo ../../lib/$(DEPDIR)/lib589-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib589-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib589-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib589-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib589_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib589-first.o -MD -MP -MF $(DEPDIR)/lib589-first.Tpo -c -o lib589-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib589-first.Tpo $(DEPDIR)/lib589-first.Po
@@ -11396,6 +15181,20 @@ lib590-lib590.obj: lib590.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib590-lib590.obj `if test -f 'lib590.c'; then $(CYGPATH_W) 'lib590.c'; else $(CYGPATH_W) '$(srcdir)/lib590.c'; fi`
 
+../../lib/lib590-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib590-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib590-timediff.Tpo -c -o ../../lib/lib590-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib590-timediff.Tpo ../../lib/$(DEPDIR)/lib590-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib590-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib590-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib590-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib590-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib590-timediff.Tpo -c -o ../../lib/lib590-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib590-timediff.Tpo ../../lib/$(DEPDIR)/lib590-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib590-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib590-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib590-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib590_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib590-first.o -MD -MP -MF $(DEPDIR)/lib590-first.Tpo -c -o lib590-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib590-first.Tpo $(DEPDIR)/lib590-first.Po
@@ -11424,6 +15223,20 @@ lib591-lib591.obj: lib591.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib591-lib591.obj `if test -f 'lib591.c'; then $(CYGPATH_W) 'lib591.c'; else $(CYGPATH_W) '$(srcdir)/lib591.c'; fi`
 
+../../lib/lib591-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib591-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib591-timediff.Tpo -c -o ../../lib/lib591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib591-timediff.Tpo ../../lib/$(DEPDIR)/lib591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib591-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib591-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib591-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib591-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib591-timediff.Tpo -c -o ../../lib/lib591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib591-timediff.Tpo ../../lib/$(DEPDIR)/lib591-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib591-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib591-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib591-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib591_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib591-first.o -MD -MP -MF $(DEPDIR)/lib591-first.Tpo -c -o lib591-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib591-first.Tpo $(DEPDIR)/lib591-first.Po
@@ -11494,6 +15307,20 @@ lib597-lib597.obj: lib597.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib597-lib597.obj `if test -f 'lib597.c'; then $(CYGPATH_W) 'lib597.c'; else $(CYGPATH_W) '$(srcdir)/lib597.c'; fi`
 
+../../lib/lib597-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib597-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib597-timediff.Tpo -c -o ../../lib/lib597-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib597-timediff.Tpo ../../lib/$(DEPDIR)/lib597-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib597-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib597-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib597-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib597-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib597-timediff.Tpo -c -o ../../lib/lib597-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib597-timediff.Tpo ../../lib/$(DEPDIR)/lib597-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib597-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib597-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib597-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib597_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib597-first.o -MD -MP -MF $(DEPDIR)/lib597-first.Tpo -c -o lib597-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib597-first.Tpo $(DEPDIR)/lib597-first.Po
@@ -11550,6 +15377,20 @@ lib598-lib598.obj: lib598.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib598-lib598.obj `if test -f 'lib598.c'; then $(CYGPATH_W) 'lib598.c'; else $(CYGPATH_W) '$(srcdir)/lib598.c'; fi`
 
+../../lib/lib598-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib598-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib598-timediff.Tpo -c -o ../../lib/lib598-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib598-timediff.Tpo ../../lib/$(DEPDIR)/lib598-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib598-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib598-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib598-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib598-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib598-timediff.Tpo -c -o ../../lib/lib598-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib598-timediff.Tpo ../../lib/$(DEPDIR)/lib598-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib598-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib598-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib598-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib598_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib598-first.o -MD -MP -MF $(DEPDIR)/lib598-first.Tpo -c -o lib598-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib598-first.Tpo $(DEPDIR)/lib598-first.Po
@@ -11578,6 +15419,20 @@ lib599-lib599.obj: lib599.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib599-lib599.obj `if test -f 'lib599.c'; then $(CYGPATH_W) 'lib599.c'; else $(CYGPATH_W) '$(srcdir)/lib599.c'; fi`
 
+../../lib/lib599-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib599-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib599-timediff.Tpo -c -o ../../lib/lib599-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib599-timediff.Tpo ../../lib/$(DEPDIR)/lib599-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib599-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib599-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib599-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib599-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib599-timediff.Tpo -c -o ../../lib/lib599-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib599-timediff.Tpo ../../lib/$(DEPDIR)/lib599-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib599-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib599-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib599-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib599_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib599-first.o -MD -MP -MF $(DEPDIR)/lib599-first.Tpo -c -o lib599-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib599-first.Tpo $(DEPDIR)/lib599-first.Po
@@ -11620,6 +15475,20 @@ lib643-lib643.obj: lib643.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib643-lib643.obj `if test -f 'lib643.c'; then $(CYGPATH_W) 'lib643.c'; else $(CYGPATH_W) '$(srcdir)/lib643.c'; fi`
 
+../../lib/lib643-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib643-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib643-timediff.Tpo -c -o ../../lib/lib643-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib643-timediff.Tpo ../../lib/$(DEPDIR)/lib643-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib643-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib643-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib643-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib643-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib643-timediff.Tpo -c -o ../../lib/lib643-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib643-timediff.Tpo ../../lib/$(DEPDIR)/lib643-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib643-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib643-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib643-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib643_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib643-first.o -MD -MP -MF $(DEPDIR)/lib643-first.Tpo -c -o lib643-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib643-first.Tpo $(DEPDIR)/lib643-first.Po
@@ -11648,6 +15517,20 @@ lib645-lib643.obj: lib643.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib645-lib643.obj `if test -f 'lib643.c'; then $(CYGPATH_W) 'lib643.c'; else $(CYGPATH_W) '$(srcdir)/lib643.c'; fi`
 
+../../lib/lib645-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib645-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib645-timediff.Tpo -c -o ../../lib/lib645-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib645-timediff.Tpo ../../lib/$(DEPDIR)/lib645-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib645-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib645-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib645-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib645-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib645-timediff.Tpo -c -o ../../lib/lib645-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib645-timediff.Tpo ../../lib/$(DEPDIR)/lib645-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib645-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib645-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib645-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib645_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib645-first.o -MD -MP -MF $(DEPDIR)/lib645-first.Tpo -c -o lib645-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib645-first.Tpo $(DEPDIR)/lib645-first.Po
@@ -11676,6 +15559,20 @@ lib650-lib650.obj: lib650.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib650-lib650.obj `if test -f 'lib650.c'; then $(CYGPATH_W) 'lib650.c'; else $(CYGPATH_W) '$(srcdir)/lib650.c'; fi`
 
+../../lib/lib650-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib650-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib650-timediff.Tpo -c -o ../../lib/lib650-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib650-timediff.Tpo ../../lib/$(DEPDIR)/lib650-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib650-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib650-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib650-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib650-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib650-timediff.Tpo -c -o ../../lib/lib650-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib650-timediff.Tpo ../../lib/$(DEPDIR)/lib650-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib650-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib650-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib650-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib650_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib650-first.o -MD -MP -MF $(DEPDIR)/lib650-first.Tpo -c -o lib650-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib650-first.Tpo $(DEPDIR)/lib650-first.Po
@@ -11704,6 +15601,20 @@ lib651-lib651.obj: lib651.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib651-lib651.obj `if test -f 'lib651.c'; then $(CYGPATH_W) 'lib651.c'; else $(CYGPATH_W) '$(srcdir)/lib651.c'; fi`
 
+../../lib/lib651-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib651-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib651-timediff.Tpo -c -o ../../lib/lib651-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib651-timediff.Tpo ../../lib/$(DEPDIR)/lib651-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib651-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib651-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib651-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib651-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib651-timediff.Tpo -c -o ../../lib/lib651-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib651-timediff.Tpo ../../lib/$(DEPDIR)/lib651-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib651-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib651-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib651-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib651_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib651-first.o -MD -MP -MF $(DEPDIR)/lib651-first.Tpo -c -o lib651-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib651-first.Tpo $(DEPDIR)/lib651-first.Po
@@ -11732,6 +15643,20 @@ lib652-lib652.obj: lib652.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib652-lib652.obj `if test -f 'lib652.c'; then $(CYGPATH_W) 'lib652.c'; else $(CYGPATH_W) '$(srcdir)/lib652.c'; fi`
 
+../../lib/lib652-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib652-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib652-timediff.Tpo -c -o ../../lib/lib652-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib652-timediff.Tpo ../../lib/$(DEPDIR)/lib652-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib652-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib652-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib652-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib652-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib652-timediff.Tpo -c -o ../../lib/lib652-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib652-timediff.Tpo ../../lib/$(DEPDIR)/lib652-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib652-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib652-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib652-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib652_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib652-first.o -MD -MP -MF $(DEPDIR)/lib652-first.Tpo -c -o lib652-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib652-first.Tpo $(DEPDIR)/lib652-first.Po
@@ -11760,6 +15685,20 @@ lib653-lib653.obj: lib653.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib653-lib653.obj `if test -f 'lib653.c'; then $(CYGPATH_W) 'lib653.c'; else $(CYGPATH_W) '$(srcdir)/lib653.c'; fi`
 
+../../lib/lib653-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib653-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib653-timediff.Tpo -c -o ../../lib/lib653-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib653-timediff.Tpo ../../lib/$(DEPDIR)/lib653-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib653-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib653-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib653-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib653-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib653-timediff.Tpo -c -o ../../lib/lib653-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib653-timediff.Tpo ../../lib/$(DEPDIR)/lib653-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib653-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib653-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib653-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib653_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib653-first.o -MD -MP -MF $(DEPDIR)/lib653-first.Tpo -c -o lib653-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib653-first.Tpo $(DEPDIR)/lib653-first.Po
@@ -11788,6 +15727,20 @@ lib654-lib654.obj: lib654.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib654-lib654.obj `if test -f 'lib654.c'; then $(CYGPATH_W) 'lib654.c'; else $(CYGPATH_W) '$(srcdir)/lib654.c'; fi`
 
+../../lib/lib654-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib654-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib654-timediff.Tpo -c -o ../../lib/lib654-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib654-timediff.Tpo ../../lib/$(DEPDIR)/lib654-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib654-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib654-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib654-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib654-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib654-timediff.Tpo -c -o ../../lib/lib654-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib654-timediff.Tpo ../../lib/$(DEPDIR)/lib654-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib654-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib654-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib654-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib654_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib654-first.o -MD -MP -MF $(DEPDIR)/lib654-first.Tpo -c -o lib654-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib654-first.Tpo $(DEPDIR)/lib654-first.Po
@@ -11816,6 +15769,20 @@ lib655-lib655.obj: lib655.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib655-lib655.obj `if test -f 'lib655.c'; then $(CYGPATH_W) 'lib655.c'; else $(CYGPATH_W) '$(srcdir)/lib655.c'; fi`
 
+../../lib/lib655-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib655-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib655-timediff.Tpo -c -o ../../lib/lib655-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib655-timediff.Tpo ../../lib/$(DEPDIR)/lib655-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib655-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib655-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib655-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib655-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib655-timediff.Tpo -c -o ../../lib/lib655-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib655-timediff.Tpo ../../lib/$(DEPDIR)/lib655-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib655-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib655-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib655-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib655_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib655-first.o -MD -MP -MF $(DEPDIR)/lib655-first.Tpo -c -o lib655-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib655-first.Tpo $(DEPDIR)/lib655-first.Po
@@ -11844,6 +15811,20 @@ lib658-lib658.obj: lib658.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib658-lib658.obj `if test -f 'lib658.c'; then $(CYGPATH_W) 'lib658.c'; else $(CYGPATH_W) '$(srcdir)/lib658.c'; fi`
 
+../../lib/lib658-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib658-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib658-timediff.Tpo -c -o ../../lib/lib658-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib658-timediff.Tpo ../../lib/$(DEPDIR)/lib658-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib658-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib658-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib658-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib658-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib658-timediff.Tpo -c -o ../../lib/lib658-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib658-timediff.Tpo ../../lib/$(DEPDIR)/lib658-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib658-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib658-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib658-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib658_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib658-first.o -MD -MP -MF $(DEPDIR)/lib658-first.Tpo -c -o lib658-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib658-first.Tpo $(DEPDIR)/lib658-first.Po
@@ -11900,6 +15881,20 @@ lib659-lib659.obj: lib659.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib659-lib659.obj `if test -f 'lib659.c'; then $(CYGPATH_W) 'lib659.c'; else $(CYGPATH_W) '$(srcdir)/lib659.c'; fi`
 
+../../lib/lib659-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib659-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib659-timediff.Tpo -c -o ../../lib/lib659-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib659-timediff.Tpo ../../lib/$(DEPDIR)/lib659-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib659-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib659-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib659-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib659-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib659-timediff.Tpo -c -o ../../lib/lib659-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib659-timediff.Tpo ../../lib/$(DEPDIR)/lib659-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib659-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib659-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib659-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib659_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib659-first.o -MD -MP -MF $(DEPDIR)/lib659-first.Tpo -c -o lib659-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib659-first.Tpo $(DEPDIR)/lib659-first.Po
@@ -11956,6 +15951,20 @@ lib661-lib661.obj: lib661.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib661-lib661.obj `if test -f 'lib661.c'; then $(CYGPATH_W) 'lib661.c'; else $(CYGPATH_W) '$(srcdir)/lib661.c'; fi`
 
+../../lib/lib661-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib661-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib661-timediff.Tpo -c -o ../../lib/lib661-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib661-timediff.Tpo ../../lib/$(DEPDIR)/lib661-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib661-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib661-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib661-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib661-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib661-timediff.Tpo -c -o ../../lib/lib661-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib661-timediff.Tpo ../../lib/$(DEPDIR)/lib661-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib661-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib661-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib661-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib661_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib661-first.o -MD -MP -MF $(DEPDIR)/lib661-first.Tpo -c -o lib661-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib661-first.Tpo $(DEPDIR)/lib661-first.Po
@@ -11984,6 +15993,20 @@ lib666-lib666.obj: lib666.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib666-lib666.obj `if test -f 'lib666.c'; then $(CYGPATH_W) 'lib666.c'; else $(CYGPATH_W) '$(srcdir)/lib666.c'; fi`
 
+../../lib/lib666-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib666-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib666-timediff.Tpo -c -o ../../lib/lib666-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib666-timediff.Tpo ../../lib/$(DEPDIR)/lib666-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib666-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib666-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib666-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib666-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib666-timediff.Tpo -c -o ../../lib/lib666-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib666-timediff.Tpo ../../lib/$(DEPDIR)/lib666-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib666-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib666-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib666-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib666_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib666-first.o -MD -MP -MF $(DEPDIR)/lib666-first.Tpo -c -o lib666-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib666-first.Tpo $(DEPDIR)/lib666-first.Po
@@ -12012,6 +16035,20 @@ lib667-lib667.obj: lib667.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib667-lib667.obj `if test -f 'lib667.c'; then $(CYGPATH_W) 'lib667.c'; else $(CYGPATH_W) '$(srcdir)/lib667.c'; fi`
 
+../../lib/lib667-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib667-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib667-timediff.Tpo -c -o ../../lib/lib667-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib667-timediff.Tpo ../../lib/$(DEPDIR)/lib667-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib667-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib667-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib667-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib667-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib667-timediff.Tpo -c -o ../../lib/lib667-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib667-timediff.Tpo ../../lib/$(DEPDIR)/lib667-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib667-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib667-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib667-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib667_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib667-first.o -MD -MP -MF $(DEPDIR)/lib667-first.Tpo -c -o lib667-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib667-first.Tpo $(DEPDIR)/lib667-first.Po
@@ -12068,6 +16105,20 @@ lib668-lib668.obj: lib668.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib668-lib668.obj `if test -f 'lib668.c'; then $(CYGPATH_W) 'lib668.c'; else $(CYGPATH_W) '$(srcdir)/lib668.c'; fi`
 
+../../lib/lib668-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib668-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib668-timediff.Tpo -c -o ../../lib/lib668-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib668-timediff.Tpo ../../lib/$(DEPDIR)/lib668-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib668-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib668-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib668-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib668-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib668-timediff.Tpo -c -o ../../lib/lib668-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib668-timediff.Tpo ../../lib/$(DEPDIR)/lib668-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib668-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib668-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib668-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib668_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib668-first.o -MD -MP -MF $(DEPDIR)/lib668-first.Tpo -c -o lib668-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib668-first.Tpo $(DEPDIR)/lib668-first.Po
@@ -12124,6 +16175,20 @@ lib670-lib670.obj: lib670.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib670-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
 
+../../lib/lib670-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib670-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib670-timediff.Tpo -c -o ../../lib/lib670-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib670-timediff.Tpo ../../lib/$(DEPDIR)/lib670-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib670-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib670-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib670-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib670-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib670-timediff.Tpo -c -o ../../lib/lib670-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib670-timediff.Tpo ../../lib/$(DEPDIR)/lib670-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib670-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib670-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib670-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib670_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib670-first.o -MD -MP -MF $(DEPDIR)/lib670-first.Tpo -c -o lib670-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib670-first.Tpo $(DEPDIR)/lib670-first.Po
@@ -12180,6 +16245,20 @@ lib671-lib670.obj: lib670.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib671-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
 
+../../lib/lib671-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib671-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib671-timediff.Tpo -c -o ../../lib/lib671-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib671-timediff.Tpo ../../lib/$(DEPDIR)/lib671-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib671-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib671-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib671-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib671-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib671-timediff.Tpo -c -o ../../lib/lib671-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib671-timediff.Tpo ../../lib/$(DEPDIR)/lib671-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib671-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib671-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib671-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib671_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib671-first.o -MD -MP -MF $(DEPDIR)/lib671-first.Tpo -c -o lib671-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib671-first.Tpo $(DEPDIR)/lib671-first.Po
@@ -12236,6 +16315,20 @@ lib672-lib670.obj: lib670.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib672-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
 
+../../lib/lib672-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib672-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib672-timediff.Tpo -c -o ../../lib/lib672-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib672-timediff.Tpo ../../lib/$(DEPDIR)/lib672-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib672-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib672-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib672-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib672-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib672-timediff.Tpo -c -o ../../lib/lib672-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib672-timediff.Tpo ../../lib/$(DEPDIR)/lib672-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib672-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib672-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib672-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib672_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib672-first.o -MD -MP -MF $(DEPDIR)/lib672-first.Tpo -c -o lib672-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib672-first.Tpo $(DEPDIR)/lib672-first.Po
@@ -12292,6 +16385,20 @@ lib673-lib670.obj: lib670.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib673-lib670.obj `if test -f 'lib670.c'; then $(CYGPATH_W) 'lib670.c'; else $(CYGPATH_W) '$(srcdir)/lib670.c'; fi`
 
+../../lib/lib673-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib673-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib673-timediff.Tpo -c -o ../../lib/lib673-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib673-timediff.Tpo ../../lib/$(DEPDIR)/lib673-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib673-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib673-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib673-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib673-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib673-timediff.Tpo -c -o ../../lib/lib673-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib673-timediff.Tpo ../../lib/$(DEPDIR)/lib673-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib673-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib673-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib673-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib673_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib673-first.o -MD -MP -MF $(DEPDIR)/lib673-first.Tpo -c -o lib673-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib673-first.Tpo $(DEPDIR)/lib673-first.Po
@@ -12348,6 +16455,20 @@ lib674-lib674.obj: lib674.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib674-lib674.obj `if test -f 'lib674.c'; then $(CYGPATH_W) 'lib674.c'; else $(CYGPATH_W) '$(srcdir)/lib674.c'; fi`
 
+../../lib/lib674-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib674-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib674-timediff.Tpo -c -o ../../lib/lib674-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib674-timediff.Tpo ../../lib/$(DEPDIR)/lib674-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib674-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib674-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib674-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib674-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib674-timediff.Tpo -c -o ../../lib/lib674-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib674-timediff.Tpo ../../lib/$(DEPDIR)/lib674-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib674-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib674-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib674-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib674_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib674-first.o -MD -MP -MF $(DEPDIR)/lib674-first.Tpo -c -o lib674-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib674-first.Tpo $(DEPDIR)/lib674-first.Po
@@ -12404,6 +16525,20 @@ lib676-lib676.obj: lib676.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib676-lib676.obj `if test -f 'lib676.c'; then $(CYGPATH_W) 'lib676.c'; else $(CYGPATH_W) '$(srcdir)/lib676.c'; fi`
 
+../../lib/lib676-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib676-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib676-timediff.Tpo -c -o ../../lib/lib676-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib676-timediff.Tpo ../../lib/$(DEPDIR)/lib676-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib676-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib676-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib676-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib676-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib676-timediff.Tpo -c -o ../../lib/lib676-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib676-timediff.Tpo ../../lib/$(DEPDIR)/lib676-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib676-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib676-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib676-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib676_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib676-first.o -MD -MP -MF $(DEPDIR)/lib676-first.Tpo -c -o lib676-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib676-first.Tpo $(DEPDIR)/lib676-first.Po
@@ -12460,6 +16595,20 @@ lib677-lib677.obj: lib677.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib677-lib677.obj `if test -f 'lib677.c'; then $(CYGPATH_W) 'lib677.c'; else $(CYGPATH_W) '$(srcdir)/lib677.c'; fi`
 
+../../lib/lib677-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib677-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib677-timediff.Tpo -c -o ../../lib/lib677-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib677-timediff.Tpo ../../lib/$(DEPDIR)/lib677-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib677-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib677-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib677-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib677-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib677-timediff.Tpo -c -o ../../lib/lib677-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib677-timediff.Tpo ../../lib/$(DEPDIR)/lib677-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib677-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib677-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib677-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib677_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib677-first.o -MD -MP -MF $(DEPDIR)/lib677-first.Tpo -c -o lib677-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib677-first.Tpo $(DEPDIR)/lib677-first.Po
@@ -12530,6 +16679,20 @@ lib678-lib678.obj: lib678.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib678-lib678.obj `if test -f 'lib678.c'; then $(CYGPATH_W) 'lib678.c'; else $(CYGPATH_W) '$(srcdir)/lib678.c'; fi`
 
+../../lib/lib678-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib678-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/lib678-timediff.Tpo -c -o ../../lib/lib678-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib678-timediff.Tpo ../../lib/$(DEPDIR)/lib678-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib678-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib678-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/lib678-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/lib678-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/lib678-timediff.Tpo -c -o ../../lib/lib678-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/lib678-timediff.Tpo ../../lib/$(DEPDIR)/lib678-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/lib678-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/lib678-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 lib678-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib678_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib678-first.o -MD -MP -MF $(DEPDIR)/lib678-first.Tpo -c -o lib678-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/lib678-first.Tpo $(DEPDIR)/lib678-first.Po
@@ -12600,6 +16763,20 @@ libauthretry-libauthretry.obj: libauthretry.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libauthretry-libauthretry.obj `if test -f 'libauthretry.c'; then $(CYGPATH_W) 'libauthretry.c'; else $(CYGPATH_W) '$(srcdir)/libauthretry.c'; fi`
 
+../../lib/libauthretry-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libauthretry-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo -c -o ../../lib/libauthretry-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libauthretry-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libauthretry-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/libauthretry-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libauthretry-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo -c -o ../../lib/libauthretry-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libauthretry-timediff.Tpo ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libauthretry-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libauthretry-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 libauthretry-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libauthretry_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libauthretry-first.o -MD -MP -MF $(DEPDIR)/libauthretry-first.Tpo -c -o libauthretry-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libauthretry-first.Tpo $(DEPDIR)/libauthretry-first.Po
@@ -12628,6 +16805,20 @@ libntlmconnect-libntlmconnect.obj: libntlmconnect.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libntlmconnect-libntlmconnect.obj `if test -f 'libntlmconnect.c'; then $(CYGPATH_W) 'libntlmconnect.c'; else $(CYGPATH_W) '$(srcdir)/libntlmconnect.c'; fi`
 
+../../lib/libntlmconnect-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libntlmconnect-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo -c -o ../../lib/libntlmconnect-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libntlmconnect-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libntlmconnect-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/libntlmconnect-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libntlmconnect-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo -c -o ../../lib/libntlmconnect-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libntlmconnect-timediff.Tpo ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libntlmconnect-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libntlmconnect-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 libntlmconnect-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libntlmconnect_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libntlmconnect-first.o -MD -MP -MF $(DEPDIR)/libntlmconnect-first.Tpo -c -o libntlmconnect-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libntlmconnect-first.Tpo $(DEPDIR)/libntlmconnect-first.Po
@@ -12684,6 +16875,20 @@ libprereq-libprereq.obj: libprereq.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libprereq-libprereq.obj `if test -f 'libprereq.c'; then $(CYGPATH_W) 'libprereq.c'; else $(CYGPATH_W) '$(srcdir)/libprereq.c'; fi`
 
+../../lib/libprereq-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libprereq-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/libprereq-timediff.Tpo -c -o ../../lib/libprereq-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libprereq-timediff.Tpo ../../lib/$(DEPDIR)/libprereq-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libprereq-timediff.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libprereq-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+
+../../lib/libprereq-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../../lib/libprereq-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/libprereq-timediff.Tpo -c -o ../../lib/libprereq-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/libprereq-timediff.Tpo ../../lib/$(DEPDIR)/libprereq-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/libprereq-timediff.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../../lib/libprereq-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+
 libprereq-first.o: first.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libprereq_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libprereq-first.o -MD -MP -MF $(DEPDIR)/libprereq-first.Tpo -c -o libprereq-first.o `test -f 'first.c' || echo '$(srcdir)/'`first.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/libprereq-first.Tpo $(DEPDIR)/libprereq-first.Po
@@ -12860,129 +17065,324 @@ clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
        clean-noinstPROGRAMS mostlyclean-am
 
 distclean: distclean-am
-               -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
-       -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
+               -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po
        -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1156-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1156-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1500-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1501-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1501-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1502-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1502-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1503-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1503-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1504-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1504-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1505-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1505-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1506-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1506-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1507-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1507-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1508-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1508-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1509-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1509-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1510-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1510-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1511-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1511-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1512-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1512-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1513-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1513-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1514-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1514-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1515-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1515-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1517-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1518-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1520-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1521-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1522-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1523-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1525-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1525-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1526-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1526-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1527-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1527-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1528-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1528-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1529-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1529-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1530-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1530-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1531-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1531-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1532-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1532-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1533-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1533-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1534-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1534-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1535-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1535-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1536-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1536-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1537-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1538-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1539-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1539-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1540-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1542-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1542-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1543-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1550-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1551-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1552-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1553-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1554-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1555-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1556-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1557-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1564-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1564-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1565-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1565-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1567-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1568-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1569-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1591-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1592-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1596-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1905-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1906-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1907-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1908-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1908-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1910-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1910-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1911-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1911-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1912-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1912-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1913-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1913-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1915-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1915-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1916-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1916-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1917-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1917-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1918-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1918-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1919-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1919-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1933-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1933-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1934-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1934-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1935-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1935-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1936-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1936-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1937-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1938-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1939-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1940-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1945-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1946-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1947-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1948-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1955-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1955-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3010-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib3010-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3025-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib3025-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3026-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3026-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3027-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3027-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib500-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib500-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib501-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib502-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib503-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib504-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib505-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib505-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib506-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib507-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib508-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib509-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib510-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib511-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib512-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib513-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib514-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib515-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib516-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib517-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib518-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib518-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib519-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib520-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib521-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib523-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib524-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib525-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib525-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib526-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib527-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib529-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib529-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib530-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib532-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib533-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib537-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib537-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib537-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib539-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib540-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib540-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib541-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib541-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib542-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib543-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib544-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib545-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib547-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib548-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib549-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib552-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib552-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib553-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib554-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib555-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib555-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib556-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib556-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib557-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib558-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib559-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib560-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib560-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib562-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib564-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib564-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib565-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib566-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib566-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib567-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib568-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib568-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib569-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib569-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib570-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib571-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib571-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib571-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib572-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib572-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib573-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib573-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib574-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib575-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib575-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib576-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib578-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib578-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib579-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib579-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib582-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib582-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib582-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib583-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib584-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib585-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib585-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib586-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib587-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib589-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib590-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib591-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib591-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib591-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib597-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib597-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib598-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib599-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib599-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib643-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib645-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib650-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib651-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib652-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib653-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib654-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib655-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib658-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib658-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib659-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib659-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib661-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib666-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib667-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib667-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib668-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib668-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib670-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib670-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib671-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib671-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib672-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib672-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib673-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib673-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib674-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib674-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib676-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib676-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib677-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib677-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib677-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib678-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib678-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib678-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/libprereq-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/libprereq-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/timediff.Po
        -rm -f ../../lib/$(DEPDIR)/warnless.Po
        -rm -f ./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po
        -rm -f ./$(DEPDIR)/chkhostname-chkhostname.Po
@@ -13104,6 +17504,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lib1542-lib1542.Po
        -rm -f ./$(DEPDIR)/lib1542-testtrace.Po
        -rm -f ./$(DEPDIR)/lib1542-testutil.Po
+       -rm -f ./$(DEPDIR)/lib1543-first.Po
+       -rm -f ./$(DEPDIR)/lib1543-lib1518.Po
        -rm -f ./$(DEPDIR)/lib1550-first.Po
        -rm -f ./$(DEPDIR)/lib1550-lib1550.Po
        -rm -f ./$(DEPDIR)/lib1551-first.Po
@@ -13151,6 +17553,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lib1596-first.Po
        -rm -f ./$(DEPDIR)/lib1596-lib1594.Po
        -rm -f ./$(DEPDIR)/lib1596-testutil.Po
+       -rm -f ./$(DEPDIR)/lib1597.Po
        -rm -f ./$(DEPDIR)/lib1905-first.Po
        -rm -f ./$(DEPDIR)/lib1905-lib1905.Po
        -rm -f ./$(DEPDIR)/lib1905-testutil.Po
@@ -13184,6 +17587,8 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lib1917-lib1916.Po
        -rm -f ./$(DEPDIR)/lib1918-first.Po
        -rm -f ./$(DEPDIR)/lib1918-lib1918.Po
+       -rm -f ./$(DEPDIR)/lib1919-first.Po
+       -rm -f ./$(DEPDIR)/lib1919-lib1919.Po
        -rm -f ./$(DEPDIR)/lib1933-first.Po
        -rm -f ./$(DEPDIR)/lib1933-lib1933.Po
        -rm -f ./$(DEPDIR)/lib1933-testutil.Po
@@ -13202,12 +17607,33 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/lib1938-lib1938.Po
        -rm -f ./$(DEPDIR)/lib1939-first.Po
        -rm -f ./$(DEPDIR)/lib1939-lib1939.Po
+       -rm -f ./$(DEPDIR)/lib1940-first.Po
+       -rm -f ./$(DEPDIR)/lib1940-lib1940.Po
+       -rm -f ./$(DEPDIR)/lib1945-first.Po
+       -rm -f ./$(DEPDIR)/lib1945-lib1945.Po
+       -rm -f ./$(DEPDIR)/lib1946-first.Po
+       -rm -f ./$(DEPDIR)/lib1946-lib1940.Po
+       -rm -f ./$(DEPDIR)/lib1947-first.Po
+       -rm -f ./$(DEPDIR)/lib1947-lib1947.Po
+       -rm -f ./$(DEPDIR)/lib1948-first.Po
+       -rm -f ./$(DEPDIR)/lib1948-lib1948.Po
+       -rm -f ./$(DEPDIR)/lib1955-first.Po
+       -rm -f ./$(DEPDIR)/lib1955-lib1955.Po
+       -rm -f ./$(DEPDIR)/lib1955-testutil.Po
+       -rm -f ./$(DEPDIR)/lib2301.Po
+       -rm -f ./$(DEPDIR)/lib2302.Po
        -rm -f ./$(DEPDIR)/lib3010-first.Po
        -rm -f ./$(DEPDIR)/lib3010-lib3010.Po
        -rm -f ./$(DEPDIR)/lib3010-testutil.Po
        -rm -f ./$(DEPDIR)/lib3025-first.Po
        -rm -f ./$(DEPDIR)/lib3025-lib3025.Po
        -rm -f ./$(DEPDIR)/lib3025-testutil.Po
+       -rm -f ./$(DEPDIR)/lib3026-first.Po
+       -rm -f ./$(DEPDIR)/lib3026-lib3026.Po
+       -rm -f ./$(DEPDIR)/lib3026-testutil.Po
+       -rm -f ./$(DEPDIR)/lib3027-first.Po
+       -rm -f ./$(DEPDIR)/lib3027-lib3027.Po
+       -rm -f ./$(DEPDIR)/lib3027-testutil.Po
        -rm -f ./$(DEPDIR)/lib500-first.Po
        -rm -f ./$(DEPDIR)/lib500-lib500.Po
        -rm -f ./$(DEPDIR)/lib500-testtrace.Po
@@ -13503,129 +17929,324 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-               -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-curl_ctype.Po
-       -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
+               -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-mprintf.Po
        -rm -f ../../lib/$(DEPDIR)/chkdecimalpoint-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/chkhostname-curl_gethostname.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1156-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1156-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1500-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1501-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1501-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1502-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1502-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1503-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1503-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1504-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1504-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1505-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1505-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1506-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1506-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1507-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1507-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1508-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1508-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1509-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1509-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1510-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1510-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1511-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1511-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1512-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1512-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1513-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1513-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1514-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1514-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1515-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1515-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1517-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1518-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1520-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1521-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1522-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1523-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1525-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1525-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1526-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1526-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1527-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1527-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1528-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1528-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1529-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1529-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1530-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1530-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1531-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1531-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1532-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1532-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1533-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1533-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1534-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1534-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1535-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1535-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1536-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1536-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1537-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1537-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1538-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1538-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1539-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1539-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1540-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1540-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1542-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1542-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1543-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1550-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1551-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1552-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1553-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1554-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1555-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1555-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1556-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1556-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1557-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1557-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1564-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1564-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1565-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1565-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1567-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1568-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1569-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1591-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1591-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1592-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1592-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1596-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1596-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1905-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1905-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1906-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1906-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1907-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1907-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1908-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1908-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1910-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1910-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1911-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1911-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1912-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1912-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1913-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1913-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1915-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1915-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1916-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1916-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1917-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1917-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1918-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1918-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1919-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1919-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1933-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1933-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1934-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1934-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1935-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1935-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1936-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib1936-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1937-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1938-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1939-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1940-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1945-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1946-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1947-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1948-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1955-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib1955-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3010-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib3010-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3025-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib3025-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3026-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3026-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3027-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib3027-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib500-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib500-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib501-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib502-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib502-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib503-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib503-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib504-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib504-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib505-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib505-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib506-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib507-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib507-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib508-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib509-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib510-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib511-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib512-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib513-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib514-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib515-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib516-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib517-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib518-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib518-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib518-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib519-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib520-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib521-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib523-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib524-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib525-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib525-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib525-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib526-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib526-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib527-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib527-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib529-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib529-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib529-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib530-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib530-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib532-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib532-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib533-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib533-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib537-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib537-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib537-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib539-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib540-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib540-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib541-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib541-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib542-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib543-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib544-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib545-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib547-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib548-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib549-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib552-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib552-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib553-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib554-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib555-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib555-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib556-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib556-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib557-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib558-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib559-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib560-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib560-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib562-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib564-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib564-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib565-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib566-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib566-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib567-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib568-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib568-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib569-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib569-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib570-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib571-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib571-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib571-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib572-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib572-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib573-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib573-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib574-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib575-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib575-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib576-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib578-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib578-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib579-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib579-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib582-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib582-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib582-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib583-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib584-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib585-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib585-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib586-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib587-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib589-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib590-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib591-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib591-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib591-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib597-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib597-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib598-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib599-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib599-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib643-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib645-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib650-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib651-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib652-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib653-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib654-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib655-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib658-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib658-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib659-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib659-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib661-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib666-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/lib667-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib667-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib668-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib668-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib670-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib670-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib671-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib671-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib672-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib672-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib673-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib673-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib674-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib674-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/lib676-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib676-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib677-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib677-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib677-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/lib678-curl_multibyte.Po
+       -rm -f ../../lib/$(DEPDIR)/lib678-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/lib678-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/libauthretry-timediff.Po
+       -rm -f ../../lib/$(DEPDIR)/libntlmconnect-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/libntlmconnect-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/libprereq-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/libprereq-warnless.Po
+       -rm -f ../../lib/$(DEPDIR)/timediff.Po
        -rm -f ../../lib/$(DEPDIR)/warnless.Po
        -rm -f ./$(DEPDIR)/chkdecimalpoint-chkdecimalpoint.Po
        -rm -f ./$(DEPDIR)/chkhostname-chkhostname.Po
@@ -13747,6 +18368,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lib1542-lib1542.Po
        -rm -f ./$(DEPDIR)/lib1542-testtrace.Po
        -rm -f ./$(DEPDIR)/lib1542-testutil.Po
+       -rm -f ./$(DEPDIR)/lib1543-first.Po
+       -rm -f ./$(DEPDIR)/lib1543-lib1518.Po
        -rm -f ./$(DEPDIR)/lib1550-first.Po
        -rm -f ./$(DEPDIR)/lib1550-lib1550.Po
        -rm -f ./$(DEPDIR)/lib1551-first.Po
@@ -13794,6 +18417,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lib1596-first.Po
        -rm -f ./$(DEPDIR)/lib1596-lib1594.Po
        -rm -f ./$(DEPDIR)/lib1596-testutil.Po
+       -rm -f ./$(DEPDIR)/lib1597.Po
        -rm -f ./$(DEPDIR)/lib1905-first.Po
        -rm -f ./$(DEPDIR)/lib1905-lib1905.Po
        -rm -f ./$(DEPDIR)/lib1905-testutil.Po
@@ -13827,6 +18451,8 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lib1917-lib1916.Po
        -rm -f ./$(DEPDIR)/lib1918-first.Po
        -rm -f ./$(DEPDIR)/lib1918-lib1918.Po
+       -rm -f ./$(DEPDIR)/lib1919-first.Po
+       -rm -f ./$(DEPDIR)/lib1919-lib1919.Po
        -rm -f ./$(DEPDIR)/lib1933-first.Po
        -rm -f ./$(DEPDIR)/lib1933-lib1933.Po
        -rm -f ./$(DEPDIR)/lib1933-testutil.Po
@@ -13845,12 +18471,33 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/lib1938-lib1938.Po
        -rm -f ./$(DEPDIR)/lib1939-first.Po
        -rm -f ./$(DEPDIR)/lib1939-lib1939.Po
+       -rm -f ./$(DEPDIR)/lib1940-first.Po
+       -rm -f ./$(DEPDIR)/lib1940-lib1940.Po
+       -rm -f ./$(DEPDIR)/lib1945-first.Po
+       -rm -f ./$(DEPDIR)/lib1945-lib1945.Po
+       -rm -f ./$(DEPDIR)/lib1946-first.Po
+       -rm -f ./$(DEPDIR)/lib1946-lib1940.Po
+       -rm -f ./$(DEPDIR)/lib1947-first.Po
+       -rm -f ./$(DEPDIR)/lib1947-lib1947.Po
+       -rm -f ./$(DEPDIR)/lib1948-first.Po
+       -rm -f ./$(DEPDIR)/lib1948-lib1948.Po
+       -rm -f ./$(DEPDIR)/lib1955-first.Po
+       -rm -f ./$(DEPDIR)/lib1955-lib1955.Po
+       -rm -f ./$(DEPDIR)/lib1955-testutil.Po
+       -rm -f ./$(DEPDIR)/lib2301.Po
+       -rm -f ./$(DEPDIR)/lib2302.Po
        -rm -f ./$(DEPDIR)/lib3010-first.Po
        -rm -f ./$(DEPDIR)/lib3010-lib3010.Po
        -rm -f ./$(DEPDIR)/lib3010-testutil.Po
        -rm -f ./$(DEPDIR)/lib3025-first.Po
        -rm -f ./$(DEPDIR)/lib3025-lib3025.Po
        -rm -f ./$(DEPDIR)/lib3025-testutil.Po
+       -rm -f ./$(DEPDIR)/lib3026-first.Po
+       -rm -f ./$(DEPDIR)/lib3026-lib3026.Po
+       -rm -f ./$(DEPDIR)/lib3026-testutil.Po
+       -rm -f ./$(DEPDIR)/lib3027-first.Po
+       -rm -f ./$(DEPDIR)/lib3027-lib3027.Po
+       -rm -f ./$(DEPDIR)/lib3027-testutil.Po
        -rm -f ./$(DEPDIR)/lib500-first.Po
        -rm -f ./$(DEPDIR)/lib500-lib500.Po
        -rm -f ./$(DEPDIR)/lib500-testtrace.Po
@@ -14143,7 +18790,7 @@ lib1521.c: $(top_srcdir)/tests/libtest/mk-lib1521.pl $(top_srcdir)/include/curl/
        @PERL@ $(top_srcdir)/tests/libtest/mk-lib1521.pl < $(top_srcdir)/include/curl/curl.h > lib1521.c
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl -D$(srcdir) $(srcdir)/*.[ch]
 
 # for debug builds, we scan the sources on all regular make invokes
 @CURLDEBUG_TRUE@all-local: checksrc
index 8721d550c1e06944ff98b4eeabaf97a664f3386b..484ac178c7bab7c17c939f3f9f2f1df64d79a84c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # files used only in some libcurl test programs
 TESTUTIL = testutil.c testutil.h
@@ -32,7 +34,7 @@ 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 = first.c test.h
+SUPPORTFILES = ../../lib/timediff.c ../../lib/timediff.h first.c test.h
 
 # These are all libcurl test programs
 noinst_PROGRAMS = chkhostname libauthretry libntlmconnect                \
@@ -55,17 +57,19 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect                \
  lib1518         lib1520 lib1521 lib1522 lib1523 \
  lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
  lib1534 lib1535 lib1536 lib1537 lib1538 lib1539 \
- lib1540         lib1542 \
+ lib1540         lib1542 lib1543 \
  lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
  lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 lib1568 lib1569 \
- lib1591 lib1592 lib1593 lib1594 lib1596 \
+ lib1591 lib1592 lib1593 lib1594 lib1596 lib1597 \
          lib1905 lib1906 lib1907 lib1908 lib1910 lib1911 lib1912 lib1913 \
-         lib1915 lib1916 lib1917 lib1918 lib1933 lib1934 lib1935 lib1936 \
- lib1937 lib1938 lib1939 \
- lib3010 lib3025
+         lib1915 lib1916 lib1917 lib1918 lib1919 \
+ lib1933 lib1934 lib1935 lib1936 lib1937 lib1938 lib1939 lib1940 \
+ lib1945 lib1946 lib1947 lib1948 lib1955 \
+ lib2301 lib2302 \
+ lib3010 lib3025 lib3026 lib3027
 
 chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
- ../../lib/curl_ctype.c  ../../lib/dynbuf.c ../../lib/strdup.c
+ ../../lib/dynbuf.c ../../lib/strdup.c
 chkdecimalpoint_LDADD =
 chkdecimalpoint_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB \
  -DCURLX_NO_MEMORY_CALLBACKS -DBUILDING_LIBCURL
@@ -578,6 +582,9 @@ lib1542_SOURCES = lib1542.c $(SUPPORTFILES) $(TESTUTIL) $(TSTTRACE) $(WARNLESS)
 lib1542_LDADD = $(TESTUTIL_LIBS)
 lib1542_CPPFLAGS = $(AM_CPPFLAGS)
 
+lib1543_SOURCES = lib1518.c $(SUPPORTFILES)
+lib1543_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1543
+
 lib1550_SOURCES = lib1550.c $(SUPPORTFILES)
 lib1550_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1517
 
@@ -651,6 +658,9 @@ lib1596_SOURCES = lib1594.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1596_LDADD = $(TESTUTIL_LIBS)
 lib1596_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1596
 
+lib1597_SOURCES = lib1597.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1597_LDADD = $(TESTUTIL_LIBS)
+
 lib1905_SOURCES = lib1905.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1905_LDADD = $(TESTUTIL_LIBS)
 lib1905_CPPFLAGS = $(AM_CPPFLAGS)
@@ -696,6 +706,9 @@ lib1917_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1917
 lib1918_SOURCES = lib1918.c $(SUPPORTFILES) $(WARNLESS)
 lib1918_CPPFLAGS = $(AM_CPPFLAGS)
 
+lib1919_SOURCES = lib1919.c $(SUPPORTFILES) $(WARNLESS)
+lib1919_CPPFLAGS = $(AM_CPPFLAGS)
+
 lib1933_SOURCES = lib1933.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1933_LDADD = $(TESTUTIL_LIBS)
 lib1933_CPPFLAGS = $(AM_CPPFLAGS)
@@ -724,6 +737,36 @@ lib1939_SOURCES = lib1939.c $(SUPPORTFILES)
 lib1939_LDADD = $(TESTUTIL_LIBS)
 lib1939_CPPFLAGS = $(AM_CPPFLAGS)
 
+lib1940_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1940_LDADD = $(TESTUTIL_LIBS)
+lib1940_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1945_SOURCES = lib1945.c $(SUPPORTFILES)
+lib1945_LDADD = $(TESTUTIL_LIBS)
+lib1945_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1946_SOURCES = lib1940.c $(SUPPORTFILES)
+lib1946_LDADD = $(TESTUTIL_LIBS)
+lib1946_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1946
+
+lib1947_SOURCES = lib1947.c $(SUPPORTFILES)
+lib1947_LDADD = $(TESTUTIL_LIBS)
+lib1947_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1948_SOURCES = lib1948.c $(SUPPORTFILES)
+lib1948_LDADD = $(TESTUTIL_LIBS)
+lib1948_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib1955_SOURCES = lib1955.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1955_LDADD = $(TESTUTIL_LIBS)
+lib1955_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib2301_SOURCES = lib2301.c $(SUPPORTFILES)
+lib2301_LDADD = $(TESTUTIL_LIBS)
+
+lib2302_SOURCES = lib2302.c $(SUPPORTFILES)
+lib2302_LDADD = $(TESTUTIL_LIBS)
+
 lib3010_SOURCES = lib3010.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib3010_LDADD = $(TESTUTIL_LIBS)
 lib3010_CPPFLAGS = $(AM_CPPFLAGS)
@@ -731,3 +774,11 @@ lib3010_CPPFLAGS = $(AM_CPPFLAGS)
 lib3025_SOURCES = lib3025.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib3025_LDADD = $(TESTUTIL_LIBS)
 lib3025_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib3026_SOURCES = lib3026.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3026_LDADD = $(TESTUTIL_LIBS)
+lib3026_CPPFLAGS = $(AM_CPPFLAGS)
+
+lib3027_SOURCES = lib3027.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib3027_LDADD = $(TESTUTIL_LIBS)
+lib3027_CPPFLAGS = $(AM_CPPFLAGS)
index 4ab98cf4d45887bb81c5aacf2bab8732b3e87f9d..0ff0b7d6d38ff7b3a45fc49c1ccdc276285fa6a1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include "curl_printf.h"
index d36e8375dcb4f9205c779edc9868179fcd905db8..04716f93bcba88fa72deaa1459d43825314101cd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index ffb211fd47d03456b7113d2d0dd5152d00090678..5edb49bd20408ea8ab056900583d08acfd6852a8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -42,6 +44,8 @@
 #  include "memdebug.h"
 #endif
 
+#include "timediff.h"
+
 int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
                    struct timeval *tv)
 {
@@ -56,7 +60,7 @@ int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
    * select() can not be used to sleep without a single fd_set.
    */
   if(!nfds) {
-    Sleep((1000*tv->tv_sec) + (DWORD)(((double)tv->tv_usec)/1000.0));
+    Sleep((DWORD)curlx_tvtoms(tv));
     return 0;
   }
 #endif
@@ -65,11 +69,13 @@ int select_wrapper(int nfds, fd_set *rd, fd_set *wr, fd_set *exc,
 
 void wait_ms(int ms)
 {
+#ifdef USE_WINSOCK
+  Sleep(ms);
+#else
   struct timeval t;
-  t.tv_sec = ms/1000;
-  ms -= (int)t.tv_sec * 1000;
-  t.tv_usec = ms * 1000;
+  curlx_mstotv(&t, ms);
   select_wrapper(0, NULL, NULL, NULL, &t);
+#endif
 }
 
 char *libtest_arg2 = NULL;
@@ -179,5 +185,10 @@ int main(int argc, char **argv)
     PR_Cleanup();
 #endif
 
+#ifdef WIN32
+  /* flush buffers of all streams regardless of mode */
+  _flushall();
+#endif
+
   return result;
 }
index 21d4e870411f821ed81102b6ba492be3c6d01f87..23e3d941ff7138a0e3b2fc2503c9071f01813239 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index ed944a26bfd1957fdb33bdacd94dcdbce63dbb4e..9e009a3e7721174dd5534a653362d6aa7c0fa727 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a847c70d6dc83f51d4b2ec5afd699090fc5a312f..1deb2fdeff3de20d59d907e2f17b8c1129277d7d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 32d4cb2c07f2cc4bcda2982f79d2ebf4f1f2d6fe..2b5ba9e2e112dbd7a640e4bfbc2aca0f46e1a7e4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * This source code is used for lib1502, lib1503, lib1504 and lib1505 with
index a49e5b4ab45e93b0c0a757f34182de6f7bfffe43..1acb7bc6234f02271669b82386f7ea3154b8e573 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index dd83fc021895401f5738c60176113c9769cd6340..0783486c6493d5f5faea671218d0d292aa200c5d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "timediff.h"
 #include "warnless.h"
 #include "memdebug.h"
 
@@ -102,11 +105,11 @@ int test(char *URL)
 
     curl_multi_timeout(mcurl, &curl_timeo);
     if(curl_timeo >= 0) {
-      timeout.tv_sec = curl_timeo / 1000;
-      if(timeout.tv_sec > 1)
+      curlx_mstotv(&timeout, curl_timeo);
+      if(timeout.tv_sec > 1) {
         timeout.tv_sec = 1;
-      else
-        timeout.tv_usec = (curl_timeo % 1000) * 1000;
+        timeout.tv_usec = 0;
+      }
     }
 
     /* get file descriptors from the transfers */
index bbd200b6e8b97e00ddc6a137c5e8a5fc0838209c..732e10d2bc9b4ed0e00ad25695b0048fa2493671 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 02e84f56a23d2fe93ccef90d56c222f4918bbaa0..e64f3a37af5a235d5dc15b9ebc4b5a313cd4dbfd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index af01c4d82d246eaebfbe3de1f7bafec93e7f637a..130400a781149c263df019c26f33333a03f162d7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 82cb62974c84927e1aae4bc7e36873b4220afb95..26d308438f17bdb6fe96c71e6152db7284e75a3c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 6879c4d43b11d8d30d937ef44ba8cf1dfc959574..d88dd1c007098777892e5eb9df6e33d49e79511e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index f75ca08669a30fd8f21d5c4030100307708aad73..04e1ecc9005616838fa57daf1cbc700e3e3ba17f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * Test case converted from bug report #1318 by Petr Novak.
index 51302ad55e9dae19eb50e04c7df6765d933d53fd..a2350030e091efcc3bc9d4ac6800304e787d1782 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * Make sure libcurl does not send a `Content-Length: -1` header when HTTP POST
index 4aede606d63ba4922f3cfd45c5a62cf98dfddb3e..6690af4c0bbeb4728807dc46d985ec7a0de7da48 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index c3a4986c2623f0b57043afd655662d16f3b278a3..85e027a93cf8cb69aeda1d91d083350baecdfcee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -79,11 +81,6 @@ int test(char *URL)
   /* Now specify we want to POST data */
   test_setopt(curl, CURLOPT_POST, 1L);
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
   /* Set the expected POST size */
   test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)pooh.sizeleft);
 
index 8c4687885f870e22b95512b13d5ad77f198fd5de..42a6db730b083dacad7dbd6e634a9cfee62cdeb8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
 
 /* Test inspired by github issue 3340 */
 
+static size_t writecb(char *buffer, size_t size, size_t nitems,
+                      void *outstream)
+{
+  (void)buffer;
+  (void)size;
+  (void)nitems;
+  (void)outstream;
+  return 0;
+}
+
 int test(char *URL)
 {
   CURL *curl;
@@ -33,17 +45,34 @@ int test(char *URL)
   long curlRedirectCount;
   char *effectiveUrl = NULL;
   char *redirectUrl = NULL;
-
+#ifdef LIB1543
+  CURLU *urlu = NULL;
+#endif
   curl = curl_easy_init();
   if(!curl) {
     fprintf(stderr, "curl_easy_init() failed\n");
     curl_global_cleanup();
     return TEST_ERR_MAJOR_BAD;
   }
-
+#ifdef LIB1543
+  /* set CURLOPT_URLU */
+  {
+    CURLUcode rc = CURLUE_OK;
+    urlu = curl_url();
+    if(urlu)
+      rc = curl_url_set(urlu, CURLUPART_URL, URL, CURLU_ALLOW_SPACE);
+    if(!urlu || rc) {
+      goto test_cleanup;
+    }
+    test_setopt(curl, CURLOPT_CURLU, urlu);
+  }
+  test_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+#else
   test_setopt(curl, CURLOPT_URL, URL);
   /* just to make it explicit and visible in this test: */
   test_setopt(curl, CURLOPT_FOLLOWLOCATION, 0L);
+#endif
+
 
   /* Perform the request, res will get the return code */
   res = curl_easy_perform(curl);
@@ -52,6 +81,7 @@ int test(char *URL)
   curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &curlRedirectCount);
   curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effectiveUrl);
   curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &redirectUrl);
+  res = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
 
   printf("res %d\n"
          "status %d\n"
@@ -62,13 +92,15 @@ int test(char *URL)
          (int)curlResponseCode,
          (int)curlRedirectCount,
          effectiveUrl,
-         redirectUrl);
+         redirectUrl ? redirectUrl : "blank");
 
 test_cleanup:
 
   /* always cleanup */
   curl_easy_cleanup(curl);
   curl_global_cleanup();
-
+#ifdef LIB1543
+  curl_url_cleanup(urlu);
+#endif
   return res;
 }
index b0ff08a5442c0a0c3e7dc6db93f36f2eb5c35e5c..248620b2369cc52bb4adba40f798169d98676165 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2014 - 2020, Steve Holme, <steve_holme@hotmail.com>.
+ * Copyright (C) 2014 - 2022, Steve Holme, <steve_holme@hotmail.com>.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
 
index 2532a6ca22bd869125618b13d9315817a0f8aab5..fa4c0c8e6a6c9fcc796f5391f313bd2e24e1b71d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index bd45b8471df16c399ced42c60576ba2af9c52b06..d63a58fe96b6fcc54f60629991a16071ee4d0cd7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -75,7 +77,7 @@ int test(char *URL)
   if(ret != CURLE_OPERATION_TIMEDOUT)
     fprintf(stderr, "error %d: %s\n", ret, buffer);
   else
-    ret = 0;
+    ret = CURLE_OK;
 
   printf("End: %d\n", time(NULL));
   curl_easy_cleanup(hnd);
index a2a4db2268c4dd98c38226c6ba8ade89696788bb..44c52ff5845e0644bd7fdbe71af3b324bd15cc12 100644 (file)
@@ -5,8 +5,8 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
- * Copyright (C) 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ * Copyright (C) 1998 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998, Vijay Panghal, <vpanghal@maginatics.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
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 37abc61113283cd03e3efd8b02ed9709ba5ec09e..d9f11f54e173fdabba8f764fac92de6c6eaa2a48 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ * Copyright (C) 1998 - 2022, Vijay Panghal, <vpanghal@maginatics.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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 9e0e452a0ba02b68b1b8672a70594898ddb2703e..6f4d7fec412e42d9c19441b4b4162324f505acad 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Vijay Panghal, <vpanghal@maginatics.com>, et al.
+ * Copyright (C) 1998 - 2022, Vijay Panghal, <vpanghal@maginatics.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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 98a332c5b7fc87e85715643cde1a0630e6a86e00..3401f6580c30a1170eb381b75ac7c7ff574c9564 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 006355233def15b91612e4e96a9ef9e515a803a3..b2fa29a16ff23c4b031334d9663ec80d225254ad 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 778dd38f5a2dc2237109659b5d72dbe8d3772b49..39b2042c5f2392834b34dee225789d2dfa7dce70 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index 6d7ea6aa903c7e479203b51db5778bc126bbcec7..c5cc5485723e57a035f66c51a86e742134d64b54 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "timediff.h"
 #include "warnless.h"
 #include "memdebug.h"
 
@@ -85,11 +88,11 @@ int test(char *URL)
 
     curl_multi_timeout(multi_handle, &curl_timeo);
     if(curl_timeo >= 0) {
-      timeout.tv_sec = curl_timeo / 1000;
-      if(timeout.tv_sec > 1)
+      curlx_mstotv(&timeout, curl_timeo);
+      if(timeout.tv_sec > 1) {
         timeout.tv_sec = 1;
-      else
-        timeout.tv_usec = (curl_timeo % 1000) * 1000;
+        timeout.tv_usec = 0;
+      }
     }
 
     /* get file descriptors from the transfers */
index 39573212236c3e2df9d7071f86a5ae5110640b14..01ce4b445b4d1928445de67664fa518ffed1479a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -29,7 +31,7 @@ int test(char *URL)
 {
   CURL *curl;
   long httpcode;
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
 
@@ -76,5 +78,5 @@ int test(char *URL)
 test_cleanup:
   curl_easy_cleanup(curl);
   curl_global_cleanup();
-  return res;
+  return (int)res;
 }
index 7d978b154d67e8eba81a8caed3d9254fa6e377ba..b36f3a2085b6498838ceabf3206ea9d6f8f29c22 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -129,7 +131,7 @@ int test(char *URL)
 {
   struct cb_data data;
   CURL *curl = NULL;
-  CURLcode res = CURLE_FAILED_INIT;
+  int res = TEST_ERR_FAILURE;
 
   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
     fprintf(stderr, "curl_global_init() failed\n");
index 738d5dd6303b3f37900d63c2c4e88ea8eb457347..7fc731dc98e34d8c88a4bef501aa3ce24ebad499 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -29,7 +31,7 @@ int test(char *URL)
 {
   CURL *curl, *dupe = NULL;
   long filetime;
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
 
@@ -125,5 +127,5 @@ test_cleanup:
   curl_easy_cleanup(curl);
   curl_easy_cleanup(dupe);
   curl_global_cleanup();
-  return res;
+  return (int)res;
 }
index 2a64242ebca6b99e489aca44813cd42d69d113f0..e8cf67f9cd2ac6eeadab644901e7e0725e2ec8ae 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -29,7 +31,7 @@ int test(char *URL)
 {
   CURL *curl, *dupe = NULL;
   long protocol;
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
 
@@ -124,5 +126,5 @@ test_cleanup:
   curl_easy_cleanup(curl);
   curl_easy_cleanup(dupe);
   curl_global_cleanup();
-  return res;
+  return (int)res;
 }
index 1875c5b61157a0e641d6eb3495130113a0be3131..018c6cff46abe981ada62a237908b154ad14be0e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -29,7 +31,7 @@ int test(char *URL)
 {
   CURL *curl, *dupe = NULL;
   char *scheme;
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
 
@@ -125,5 +127,5 @@ test_cleanup:
   curl_easy_cleanup(curl);
   curl_easy_cleanup(dupe);
   curl_global_cleanup();
-  return res;
+  return (int)res;
 }
index cfed3392b72e092b724fdf097341b1a11db77c38..30f7be2430583551fcc6203878a82c01ddc334ac 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a1d1ace99ff21f89b46c66772b6b1cd031063869..494a4e956f7765f862a3223e3a2c2b37f8389b1c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 8c4304ea06a2a5ffa927225a52f9e043837b223d..0f74931db5cffc6cb5c414c1fe113be1a657160e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 4e17d9d36a50ce9088bdd7419cd3582683067034..19c46b59b72246a5afed3eb97f6bdc6802d0084c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 0139cf2a5dbe04886369ae7bfe7673d3176448a3..c35e293cd9cf50af6628d078ad71366e94a1f5f1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 58305ae3265bf7f3bbede02489e96f01a6cfea7d..aabb92a963b9fa6c2b039bded07f64236ca00d62 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index ce783d7f4ef997c40f79b8b48b68ad419d61757c..acab9cde1544c140c4cc9060eea66b38686de7de 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 65292a7e543f7e79aab49b32c77bcfe62fb82904..01003c5ed327d14a74c7b417c1effdbe658b06e4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a18d548b06c7e1148894e0050b4f833b6d10cf1e..021cdc9c8fa074a4eedff645f81d241cef34b0a0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 "memdebug.h"
index 0c00574a9462c16e74f2423f7f966d8eb2654bd4..eb39e96e64b5b8cc2d2f5b8e9244e6c4cca72e44 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * Verify that some API functions are locked from being called inside callback
@@ -35,7 +37,7 @@ static int progressCallback(void *arg,
                             double ultotal,
                             double ulnow)
 {
-  CURLcode res = 0;
+  CURLcode res = CURLE_OK;
   char buffer[256];
   size_t n = 0;
   (void)arg;
index bd8508134c746adeedcd78e36dad1dbbe4475899..b59a0db60a699b47e0ad73e2c23977c730e1013a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 1f0ceedf395962e3f2d307383a486ce65e514117..6828d78666d6be53a226032d7e9700f17682e5a0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 610339b638ba494985bce01265644f4f03608dd3..8c95b060bba9b8e8d6499fec0767c24a9f97c5e0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -27,7 +29,7 @@
 
 int test(char *URL)
 {
-  CURLcode res = 0;
+  CURLcode res = CURLE_OK;
   CURL *curl = NULL;
   long protocol = 0;
 
index f099a23bb83759fe2e259ea426d53a845bdc0901..c941ac25201aeb631f159451b722acb9fac29eb6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -28,7 +30,7 @@
 #define EXCESSIVE 10*1000*1000
 int test(char *URL)
 {
-  CURLcode res = 0;
+  CURLcode res = CURLE_OK;
   CURL *curl = NULL;
   char *longurl = malloc(EXCESSIVE);
   CURLU *u;
index 76148499d4d756774a2867df463d3f5acab62b85..42300cfd7d622814ddb8a78a271ef46e3526e464 100644 (file)
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -58,7 +60,7 @@ static int checkparts(CURLU *u, const char *in, const char *wanted,
     {CURLUPART_PATH, "path"},
     {CURLUPART_QUERY, "query"},
     {CURLUPART_FRAGMENT, "fragment"},
-    {0, NULL}
+    {CURLUPART_URL, NULL}
   };
   memset(buf, 0, sizeof(buf));
 
@@ -128,7 +130,63 @@ struct querycase {
   CURLUcode ucode;
 };
 
+struct clearurlcase {
+  CURLUPart part;
+  const char *in;
+  const char *out;
+  CURLUcode ucode;
+};
+
 static const struct testcase get_parts_list[] ={
+  {"https://user@example.net?he l lo",
+   "https | user | [12] | [13] | example.net | [15] | / | he+l+lo | [17]",
+   CURLU_ALLOW_SPACE, CURLU_URLENCODE, CURLUE_OK},
+  {"https://user@example.net?he l lo",
+   "https | user | [12] | [13] | example.net | [15] | / | he l lo | [17]",
+   CURLU_ALLOW_SPACE, 0, CURLUE_OK},
+  {"https://exam{}[]ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam{ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam}ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam]ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam\\ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam$ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam'ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam\"ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam^ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam`ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam*ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam<ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam>ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam=ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://exam;ple.net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://example,net", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"https://example.net/}",
+   "https | [11] | [12] | [13] | example.net | [15] | /} | [16] | [17]",
+   0, 0, CURLUE_OK},
+
+  /* blank user is blank */
+  {"https://:password@example.net",
+   "https |  | password | [13] | example.net | [15] | / | [16] | [17]",
+   0, 0, CURLUE_OK},
+  /* blank user + blank password */
+  {"https://:@example.net",
+   "https |  |  | [13] | example.net | [15] | / | [16] | [17]",
+   0, 0, CURLUE_OK},
+  /* user-only (no password) */
+  {"https://user@example.net",
+   "https | user | [12] | [13] | example.net | [15] | / | [16] | [17]",
+   0, 0, CURLUE_OK},
+#ifdef USE_WEBSOCKETS
+  {"ws://example.com/color/?green",
+   "ws | [11] | [12] | [13] | example.com | [15] | /color/ | green |"
+   " [17]",
+   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
+  {"wss://example.com/color/?green",
+   "wss | [11] | [12] | [13] | example.com | [15] | /color/ | green |"
+   " [17]",
+   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK },
+#endif
+
   {"https://user:password@example.net/get?this=and#but frag then", "",
    CURLU_DEFAULT_SCHEME, 0, CURLUE_BAD_FRAGMENT},
   {"https://user:password@example.net/get?this=and what", "",
@@ -228,7 +286,7 @@ static const struct testcase get_parts_list[] ={
    CURLU_DEFAULT_SCHEME, 0, CURLUE_NO_HOST},
   {"boing:80",
    "https | [11] | [12] | [13] | boing | 80 | / | [16] | [17]",
-   CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
+   CURLU_DEFAULT_SCHEME|CURLU_GUESS_SCHEME, 0, CURLUE_OK},
   {"http://[fd00:a41::50]:8080",
    "http | [11] | [12] | [13] | [fd00:a41::50] | 8080 | / | [16] | [17]",
    CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
@@ -373,7 +431,23 @@ static const struct testcase get_parts_list[] ={
 };
 
 static const struct urltestcase get_url_list[] = {
+  /* unsupported schemes with no guessing enabled */
+  {"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIEhUTUw+PG1ldGEgY",
+   "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+  {"d:anything-really", "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+  {"about:config", "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+  {"example://foo", "", 0, 0, CURLUE_UNSUPPORTED_SCHEME},
+  {"mailto:infobot@example.com?body=send%20current-issue", "", 0, 0,
+   CURLUE_UNSUPPORTED_SCHEME},
+  {"about:80", "https://about:80/", CURLU_DEFAULT_SCHEME, 0, CURLUE_OK},
   /* percent encoded host names */
+  {"http://example.com%40127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"http://example.com%21127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"http://example.com%3f127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"http://example.com%23127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"http://example.com%3a127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"http://example.com%09127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
+  {"http://example.com%2F127.0.0.1/", "", 0, 0, CURLUE_BAD_HOSTNAME},
   {"https://%this", "https://%25this/", 0, 0, CURLUE_OK},
   {"https://h%c", "https://h%25c/", 0, 0, CURLUE_OK},
   {"https://%%%%%%", "https://%25%25%25%25%25%25/", 0, 0, CURLUE_OK},
@@ -492,7 +566,7 @@ static const struct urltestcase get_url_list[] = {
    "",
    CURLU_DISALLOW_USER, 0, CURLUE_USER_NOT_ALLOWED},
   {"http:/@example.com:123",
-   "http://example.com:123/",
+   "http://@example.com:123/",
    0, 0, CURLUE_OK},
   {"http:/:password@example.com",
    "http://:password@example.com/",
@@ -542,7 +616,7 @@ static const struct urltestcase get_url_list[] = {
   {"custom-scheme://host?expected=test-still-good",
    "custom-scheme://host/?expected=test-still-good",
    CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY, 0, CURLUE_OK},
-  {NULL, NULL, 0, 0, 0}
+  {NULL, NULL, 0, 0, CURLUE_OK}
 };
 
 static int checkurl(const char *url, const char *out)
@@ -706,7 +780,7 @@ static const struct setcase set_parts_list[] = {
    CURLU_NON_SUPPORT_SCHEME, CURLU_NON_SUPPORT_SCHEME | CURLU_NO_AUTHORITY,
    CURLUE_OK, CURLUE_OK},
 
-  {NULL, NULL, NULL, 0, 0, 0, 0}
+  {NULL, NULL, NULL, 0, 0, CURLUE_OK, CURLUE_OK}
 };
 
 static CURLUPart part2id(char *part)
@@ -781,35 +855,47 @@ static CURLUcode updateurl(CURLU *u, const char *cmd, unsigned int setflags)
 }
 
 static const struct redircase set_url_list[] = {
+  {"http://example.com/please/../gimme/%TESTNUMBER?foobar#hello",
+   "http://example.net/there/it/is/../../tes t case=/%TESTNUMBER0002? yes no",
+   "http://example.net/there/tes%20t%20case=/%TESTNUMBER0002?+yes+no",
+   0, CURLU_URLENCODE|CURLU_ALLOW_SPACE, CURLUE_OK},
+  {"http://local.test?redirect=http://local.test:80?-321",
+   "http://local.test:80?-123",
+   "http://local.test:80/?-123",
+   0, CURLU_URLENCODE|CURLU_ALLOW_SPACE, CURLUE_OK},
+  {"http://local.test?redirect=http://local.test:80?-321",
+   "http://local.test:80?-123",
+   "http://local.test:80/?-123",
+   0, 0, CURLUE_OK},
   {"http://example.org/static/favicon/wikipedia.ico",
    "//fake.example.com/licenses/by-sa/3.0/",
    "http://fake.example.com/licenses/by-sa/3.0/",
-   0, 0, 0},
+   0, 0, CURLUE_OK},
   {"https://example.org/static/favicon/wikipedia.ico",
    "//fake.example.com/licenses/by-sa/3.0/",
    "https://fake.example.com/licenses/by-sa/3.0/",
-   0, 0, 0},
+   0, 0, CURLUE_OK},
   {"file://localhost/path?query#frag",
    "foo#another",
    "file:///foo#another",
-   0, 0, 0},
+   0, 0, CURLUE_OK},
   {"http://example.com/path?query#frag",
    "https://two.example.com/bradnew",
    "https://two.example.com/bradnew",
-   0, 0, 0},
+   0, 0, CURLUE_OK},
   {"http://example.com/path?query#frag",
    "../../newpage#foo",
    "http://example.com/newpage#foo",
-   0, 0, 0},
+   0, 0, CURLUE_OK},
   {"http://user:foo@example.com/path?query#frag",
    "../../newpage",
    "http://user:foo@example.com/newpage",
-   0, 0, 0},
+   0, 0, CURLUE_OK},
   {"http://user:foo@example.com/path?query#frag",
    "../newpage",
    "http://user:foo@example.com/newpage",
-   0, 0, 0},
-  {NULL, NULL, NULL, 0, 0, 0}
+   0, 0, CURLUE_OK},
+  {NULL, NULL, NULL, 0, 0, CURLUE_OK}
 };
 
 static int set_url(void)
@@ -996,7 +1082,7 @@ static const struct querycase append_list[] = {
    0, 0, CURLUE_OK},
   {"HTTP://test/?size=2#f", "name=joe", "http://test/?size=2&name=joe#f",
    0, 0, CURLUE_OK},
-  {NULL, NULL, NULL, 0, 0, 0}
+  {NULL, NULL, NULL, 0, 0, CURLUE_OK}
 };
 
 static int append(void)
@@ -1217,7 +1303,7 @@ static int get_nothing(void)
       fprintf(stderr, "unexpected return code line %u\n", __LINE__);
 
     rc = curl_url_get(u, CURLUPART_ZONEID, &p, 0);
-    if(rc != CURLUE_OK)
+    if(rc != CURLUE_NO_ZONEID)
       fprintf(stderr, "unexpected return code %u on line %u\n", (int)rc,
               __LINE__);
 
@@ -1226,6 +1312,54 @@ static int get_nothing(void)
   return 0;
 }
 
+static const struct clearurlcase clear_url_list[] ={
+  {CURLUPART_SCHEME, "http", NULL, CURLUE_NO_SCHEME},
+  {CURLUPART_USER, "user", NULL, CURLUE_NO_USER},
+  {CURLUPART_PASSWORD, "password", NULL, CURLUE_NO_PASSWORD},
+  {CURLUPART_OPTIONS, "options", NULL, CURLUE_NO_OPTIONS},
+  {CURLUPART_HOST, "host", NULL, CURLUE_NO_HOST},
+  {CURLUPART_ZONEID, "eth0", NULL, CURLUE_NO_ZONEID},
+  {CURLUPART_PORT, "1234", NULL, CURLUE_NO_PORT},
+  {CURLUPART_PATH, "/hello", "/", CURLUE_OK},
+  {CURLUPART_QUERY, "a=b", NULL, CURLUE_NO_QUERY},
+  {CURLUPART_FRAGMENT, "anchor", NULL, CURLUE_NO_FRAGMENT},
+  {CURLUPART_URL, NULL, NULL, CURLUE_OK},
+};
+
+static int clear_url(void)
+{
+  CURLU *u = curl_url();
+  int i, error = 0;
+  if(u) {
+    char *p = NULL;
+    CURLUcode rc;
+
+    for(i = 0; clear_url_list[i].in && !error; i++) {
+      rc = curl_url_set(u, clear_url_list[i].part, clear_url_list[i].in, 0);
+      if(rc != CURLUE_OK)
+        fprintf(stderr, "unexpected return code line %u\n", __LINE__);
+
+      rc = curl_url_set(u, CURLUPART_URL, NULL, 0);
+      if(rc != CURLUE_OK)
+        fprintf(stderr, "unexpected return code line %u\n", __LINE__);
+
+      rc = curl_url_get(u, clear_url_list[i].part, &p, 0);
+      if(rc != clear_url_list[i].ucode || (clear_url_list[i].out &&
+         0 != strcmp(p, clear_url_list[i].out))) {
+
+        fprintf(stderr, "unexpected return code line %u\n", __LINE__);
+        error++;
+      }
+      if(rc == CURLUE_OK)
+        curl_free(p);
+    }
+  }
+
+  curl_url_cleanup(u);
+
+  return error;
+}
+
 int test(char *URL)
 {
   (void)URL; /* not used */
@@ -1251,6 +1385,9 @@ int test(char *URL)
   if(get_parts())
     return 4;
 
+  if(clear_url())
+    return 8;
+
   printf("success\n");
   return 0;
 }
index ee19b912e20e88320be610d8c7000048e176faf5..d03ffa97d3c13a902bbb2f7b133f6e5380ef58cd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index e4d1820cd7d4827d0e31e45eba1fa0c86c83a7c3..f21ec09299f526a89b7a96a6498243c775c089df 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a1c4a2477630039ac2b52da8bd6297f628b62337..ecf5c9e4371196e84dd5a25fc81e93f21250ce86 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 87251d96f16d117fc512285112bcfd30773cc4b4..7e68b5f495cc5af14a30d9d57a25af813f04c380 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -48,4 +50,3 @@ int test(char *URL)
   curl_global_cleanup();
   return (int)ret;
 }
-
index 0aaba397374e901da8c8932703c2ac851715cdef..b7da426eb44305af013a3076f98fbb2020746389 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2021 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 8349b1db53f9c9118cb9be8dda3114dc65a4670d..1a6f7c29ffae298758a0356c5d9c34946d0c0845 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
index 808aff6e128d98bf7aab64f8fe90b3e59a533087..3e839412d0ceda9481ba12fb1b2a4b4ee37302a1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * See https://github.com/curl/curl/issues/3371
index e3b838e47ea9377a7e1217dd96d0c3625058abac..01a7e2e5628c0cc268f2bdceb9c8a47605c6043d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Test suppressing the If-Modified-Since header */
index 102e0a7d74ebab43894142f5ec56b0bbabe3d77e..9411f05c17b8a0c72fb111c4582e1b0c9bfcaf10 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Testing Retry-After header parser */
diff --git a/tests/libtest/lib1597.c b/tests/libtest/lib1597.c
new file mode 100644 (file)
index 0000000..cf2effa
--- /dev/null
@@ -0,0 +1,115 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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
+ *
+ ***************************************************************************/
+
+/* Testing CURLOPT_PROTOCOLS_STR */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+struct pair {
+  const char *in;
+  CURLcode *exp;
+};
+
+int test(char *URL)
+{
+  CURL *curl = NULL;
+  int res = 0;
+  CURLcode result = CURLE_OK;
+  curl_version_info_data *curlinfo;
+  const char *const *proto;
+  int n;
+  int i;
+  static CURLcode ok = CURLE_OK;
+  static CURLcode bad = CURLE_BAD_FUNCTION_ARGUMENT;
+  static CURLcode unsup = CURLE_UNSUPPORTED_PROTOCOL;
+  static CURLcode httpcode = CURLE_UNSUPPORTED_PROTOCOL;
+  static CURLcode httpscode = CURLE_UNSUPPORTED_PROTOCOL;
+  static char protolist[1024];
+
+  static const struct pair prots[] = {
+    {"goobar", &unsup},
+    {"http ", &unsup},
+    {" http", &unsup},
+    {"http", &httpcode},
+    {"http,", &httpcode},
+    {"https,", &httpscode},
+    {"https,http", &httpscode},
+    {"http,http", &httpcode},
+    {"HTTP,HTTP", &httpcode},
+    {",HTTP,HTTP", &httpcode},
+    {"http,http,ft", &unsup},
+    {"", &bad},
+    {",,", &bad},
+    {protolist, &ok},
+    {"all", &ok},
+    {NULL, NULL},
+  };
+  (void)URL;
+
+  global_init(CURL_GLOBAL_ALL);
+
+  easy_init(curl);
+
+  /* Get enabled protocols.*/
+  curlinfo = curl_version_info(CURLVERSION_NOW);
+  if(!curlinfo) {
+    fputs("curl_version_info failed\n", stderr);
+    res = (int) TEST_ERR_FAILURE;
+    goto test_cleanup;
+  }
+
+  n = 0;
+  for(proto = curlinfo->protocols; *proto; proto++) {
+    if((size_t) n >= sizeof(protolist)) {
+      puts("protolist buffer too small\n");
+      res = (int) TEST_ERR_FAILURE;
+      goto test_cleanup;
+    }
+    n += msnprintf(protolist + n, sizeof(protolist) - n, ",%s", *proto);
+    if(curl_strequal(*proto, "http"))
+      httpcode = CURLE_OK;
+    if(curl_strequal(*proto, "https"))
+      httpscode = CURLE_OK;
+  }
+
+  /* Run the tests. */
+  for(i = 0; prots[i].in; i++) {
+    result = curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR, prots[i].in);
+    if(result != *prots[i].exp) {
+      printf("unexpectedly '%s' returned %u\n",
+             prots[i].in, result);
+      break;
+    }
+  }
+  printf("Tested %u strings\n", i);
+  res = (int)result;
+
+  test_cleanup:
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return (int)result;
+}
index bc1acf84649addabdae3cb75a5b25999c342da91..162dea2687bf200492a0f22cad6a8bd6adbd4130 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
  * 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 "timediff.h"
 #include "warnless.h"
 #include "memdebug.h"
 
@@ -73,8 +76,7 @@ int test(char *URL)
     curl_multi_timeout(cm, &max_tout);
 
     if(max_tout > 0) {
-      timeout.tv_sec = max_tout / 1000;
-      timeout.tv_usec = (max_tout % 1000) * 1000;
+      curlx_mstotv(&timeout, max_tout);
     }
     else {
       timeout.tv_sec = 0;
index fdcc86d48ee04c4f63b2d9d6831a89211b5a3901..3e237e2d4f6c3c11bb885da1c6861fcd51569f2a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -37,7 +39,7 @@ int test(char *URL)
   curl_easy_setopt(curl, CURLOPT_CURLU, curlu);
   curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);
   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
-  /* set a port number that makes this reqeuest fail */
+  /* set a port number that makes this request fail */
   curl_easy_setopt(curl, CURLOPT_PORT, 1L);
   curl_code = curl_easy_perform(curl);
   if(!curl_code)
index c4f8ff07c69719435e0103da8383f37331bf9d1a..f0d035a955d0a54b5898b8ffe99008ca502611eb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 81267ac664cecc45600ccc97e47973c97bf319cf..17d0e3f6ac5bf754ebd5e94e6e1ef0c2f4a4b95e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 7f2e29917548bc97e2c51fc16b5b42b828fc2ec9..8bb319d968fb918c90c282019498573825582dab 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2013 - 2020, Linus Nielsen Feltzing, <linus@haxx.se>
+ * Copyright (C) 2013 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 09757fba89eb6fe7b4509cc0b99a5ebdf89b49a5..a346bb0f71b98022864aee5423723b868f52d578 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -45,7 +47,7 @@ int test(char *URL)
     return 1;
   }
 
-  /* make it a zero terminated C string with just As */
+  /* make it a null-terminated C string with just As */
   memset(buffer, 'A', MAX_INPUT_LENGTH + 1);
   buffer[MAX_INPUT_LENGTH + 1] = 0;
 
@@ -62,6 +64,8 @@ int test(char *URL)
       switch(o->id) {
       case CURLOPT_PROXY_TLSAUTH_TYPE:
       case CURLOPT_TLSAUTH_TYPE:
+      case CURLOPT_RANDOM_FILE:
+      case CURLOPT_EGDSOCKET:
         continue;
       default:
         /* check this */
@@ -75,6 +79,7 @@ int test(char *URL)
       case CURLE_BAD_FUNCTION_ARGUMENT: /* the most normal */
       case CURLE_UNKNOWN_OPTION: /* left out from the build */
       case CURLE_NOT_BUILT_IN: /* not supported */
+      case CURLE_UNSUPPORTED_PROTOCOL: /* detected by protocol2num() */
         break;
       default:
         /* all other return codes are unexpected */
index 32e5a30935b2f41970af5877a69f43c313410ab8..d42f80fe31c085601b6caaf6db1d4e6d40c157e5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 043a5329dadcd0fada386fd21873ad7b7587c3a0..3662f9835418d72ff3c01782b361c2bbe0b8d8fb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index b419ef2912b589f4af2ef0285d3761e0185fac24..5e5aace13c61c6d912f3497c73c03d270447c97a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 0d5fa78c8cf5f8410f87faf4413497f25c66a474..7a251bf126be0078abad24493f7eb0eeddce6375 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 189c3710ddc5c9cf3cb24322db87957ff7cf4e54..209eef58fe82fd3b9bc596e95b1b4fe36ed1a9b1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
diff --git a/tests/libtest/lib1919.c b/tests/libtest/lib1919.c
new file mode 100644 (file)
index 0000000..fce4cb0
--- /dev/null
@@ -0,0 +1,53 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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 "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+int test(char *URL)
+{
+  CURL *curl;
+  curl_global_init(CURL_GLOBAL_ALL);
+
+  curl = curl_easy_init();
+  if(curl) {
+    int i;
+    curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BEARER);
+    curl_easy_setopt(curl, CURLOPT_XOAUTH2_BEARER,
+                     "c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca1");
+    curl_easy_setopt(curl, CURLOPT_SASL_AUTHZID,
+                     "c4e448d652a961fda0ab64f882c8c161d5985f805d45d80c9ddca2");
+    curl_easy_setopt(curl, CURLOPT_URL, URL);
+
+    for(i = 0; i < 2; i++)
+      /* the second request needs to do connection reuse */
+      curl_easy_perform(curl);
+
+    curl_easy_cleanup(curl);
+  }
+  curl_global_cleanup();
+  return 0;
+}
index c489879b18e80491b834565555701ff86362bb81..39459d001c442ca3383c825cb81e6015207b364d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -27,6 +29,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *connect_to = NULL;
   struct curl_slist *list = NULL;
 
   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -45,6 +48,10 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_AWS_SIGV4, "xxx");
   test_setopt(curl, CURLOPT_HEADER, 0L);
   test_setopt(curl, CURLOPT_URL, URL);
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
   list = curl_slist_append(list, "Content-Type: application/json");
   test_setopt(curl, CURLOPT_HTTPHEADER, list);
 
@@ -52,6 +59,7 @@ int test(char *URL)
 
 test_cleanup:
 
+  curl_slist_free_all(connect_to);
   curl_slist_free_all(list);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index f4e9eec676dab51b69a88e749818ca3e3d019ebd..917f6e681dfe61d99d908d7ec00910a57f4730b2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -27,6 +29,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *connect_to = NULL;
   struct curl_slist *list = NULL;
 
   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -46,6 +49,10 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
   test_setopt(curl, CURLOPT_HEADER, 0L);
   test_setopt(curl, CURLOPT_URL, URL);
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
   list = curl_slist_append(list, "Content-Type: application/json");
   test_setopt(curl, CURLOPT_HTTPHEADER, list);
 
@@ -53,6 +60,7 @@ int test(char *URL)
 
 test_cleanup:
 
+  curl_slist_free_all(connect_to);
   curl_slist_free_all(list);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index 1ef4372d9c3e1cf3188fd1b988fed7f5f2d46c1a..459ead3935b14183ac8e2ffae270279debffd9c4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -27,6 +29,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *connect_to = NULL;
   struct curl_slist *list = NULL;
 
   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -46,6 +49,10 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
   test_setopt(curl, CURLOPT_HEADER, 0L);
   test_setopt(curl, CURLOPT_URL, URL);
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
   list = curl_slist_append(list, "Content-Type: application/json");
   test_setopt(curl, CURLOPT_HTTPHEADER, list);
 
@@ -53,6 +60,7 @@ int test(char *URL)
 
 test_cleanup:
 
+  curl_slist_free_all(connect_to);
   curl_slist_free_all(list);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index 75d92a77071e69db93db7dc336a687c219a8a775..e522e3817b80688a0f3b9a087e2b9ed206df3daf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -27,6 +29,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *connect_to = NULL;
   struct curl_slist *list = NULL;
 
   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -46,6 +49,10 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
   test_setopt(curl, CURLOPT_HEADER, 0L);
   test_setopt(curl, CURLOPT_URL, URL);
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
   list = curl_slist_append(list, "Content-Type: application/json");
   test_setopt(curl, CURLOPT_HTTPHEADER, list);
 
@@ -53,6 +60,7 @@ int test(char *URL)
 
 test_cleanup:
 
+  curl_slist_free_all(connect_to);
   curl_slist_free_all(list);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index d544de04b6e5a50ef6cd071bced882af92e7d0b0..14b9687436f3b19cc80b472e764f65219bf3231b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -28,6 +30,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *connect_to = NULL;
   struct curl_slist *list = NULL;
 
   if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
@@ -48,6 +51,10 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_USERPWD, "keyId:SecretKey");
   test_setopt(curl, CURLOPT_HEADER, 0L);
   test_setopt(curl, CURLOPT_URL, URL);
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
   list = curl_slist_append(list, "Content-Type: application/json");
   test_setopt(curl, CURLOPT_HTTPHEADER, list);
   test_setopt(curl, CURLOPT_POSTFIELDS, "postData");
@@ -56,6 +63,7 @@ int test(char *URL)
 
 test_cleanup:
 
+  curl_slist_free_all(connect_to);
   curl_slist_free_all(list);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index 3ddd35c74bfac68b795b3e79075599b649dc6af4..79dc6cc0ec8a2ea29ea615037f627057c878fbc8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
@@ -28,6 +30,7 @@ int test(char *URL)
 {
   CURL *curl;
   CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *connect_to = NULL;
   struct curl_slist *list = NULL;
   unsigned char data[] = {0x70, 0x6f, 0x73, 0x74, 0, 0x44, 0x61, 0x74, 0x61};
 
@@ -49,6 +52,10 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_USERPWD, "keyId:SecretKey");
   test_setopt(curl, CURLOPT_HEADER, 0L);
   test_setopt(curl, CURLOPT_URL, URL);
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
   list = curl_slist_append(list, "Content-Type: application/json");
   test_setopt(curl, CURLOPT_HTTPHEADER, list);
   test_setopt(curl, CURLOPT_POSTFIELDS, data);
@@ -58,6 +65,7 @@ int test(char *URL)
 
 test_cleanup:
 
+  curl_slist_free_all(connect_to);
   curl_slist_free_all(list);
   curl_easy_cleanup(curl);
   curl_global_cleanup();
index 510215dbd2d6b44fd5328ce882563ffda3849d75..1c88f68a85060362c568b60abbb0096d347b062e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
diff --git a/tests/libtest/lib1940.c b/tests/libtest/lib1940.c
new file mode 100644 (file)
index 0000000..c2c91b5
--- /dev/null
@@ -0,0 +1,119 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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.haxx.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 "memdebug.h"
+
+static const char *show[]={
+  "daTE",
+  "Server",
+  "content-type",
+  "content-length",
+  "location",
+  "set-cookie",
+  "silly-thing",
+  "fold",
+  NULL
+};
+
+#ifdef LIB1946
+#define HEADER_REQUEST 0
+#else
+#define HEADER_REQUEST -1
+#endif
+
+static void showem(CURL *easy, unsigned int type)
+{
+  int i;
+  struct curl_header *header;
+  for(i = 0; show[i]; i++) {
+    if(CURLHE_OK == curl_easy_header(easy, show[i], 0, type, HEADER_REQUEST,
+                                     &header)) {
+      if(header->amount > 1) {
+        /* more than one, iterate over them */
+        size_t index = 0;
+        size_t amount = header->amount;
+        do {
+          printf("- %s == %s (%u/%u)\n", header->name, header->value,
+                 (int)index, (int)amount);
+
+          if(++index == amount)
+            break;
+          if(CURLHE_OK != curl_easy_header(easy, show[i], index, type,
+                                           HEADER_REQUEST, &header))
+            break;
+        } while(1);
+      }
+      else {
+        /* only one of this */
+        printf(" %s == %s\n", header->name, header->value);
+      }
+    }
+  }
+}
+
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
+{
+  /* take care of the data here, ignored in this example */
+  (void)data;
+  (void)userp;
+  return n*l;
+}
+int test(char *URL)
+{
+  CURL *easy;
+
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  easy = curl_easy_init();
+  if(easy) {
+    CURLcode res;
+    curl_easy_setopt(easy, CURLOPT_URL, URL);
+    curl_easy_setopt(easy, CURLOPT_VERBOSE, 1L);
+    curl_easy_setopt(easy, CURLOPT_FOLLOWLOCATION, 1L);
+    /* ignores any content */
+    curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, write_cb);
+
+    /* if there's a proxy set, use it */
+    if(libtest_arg2 && *libtest_arg2) {
+      curl_easy_setopt(easy, CURLOPT_PROXY, libtest_arg2);
+      curl_easy_setopt(easy, CURLOPT_HTTPPROXYTUNNEL, 1L);
+    }
+    res = curl_easy_perform(easy);
+    if(res) {
+      printf("badness: %d\n", (int)res);
+    }
+    showem(easy, CURLH_HEADER);
+    if(libtest_arg2 && *libtest_arg2) {
+      /* now show connect headers only */
+      showem(easy, CURLH_CONNECT);
+    }
+    showem(easy, CURLH_1XX);
+    showem(easy, CURLH_TRAILER);
+    curl_easy_cleanup(easy);
+  }
+  curl_global_cleanup();
+  return 0;
+}
diff --git a/tests/libtest/lib1945.c b/tests/libtest/lib1945.c
new file mode 100644 (file)
index 0000000..fad99ba
--- /dev/null
@@ -0,0 +1,81 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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.haxx.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 "memdebug.h"
+
+#ifdef _MSC_VER
+/* warning C4706: assignment within conditional expression */
+#pragma warning(disable:4706)
+#endif
+static void showem(CURL *easy, unsigned int type)
+{
+  struct curl_header *header = NULL;
+  struct curl_header *prev = NULL;
+
+  while((header = curl_easy_nextheader(easy, type, 0, prev))) {
+    printf(" %s == %s (%u/%u)\n", header->name, header->value,
+           (int)header->index, (int)header->amount);
+    prev = header;
+  }
+}
+
+static size_t write_cb(char *data, size_t n, size_t l, void *userp)
+{
+  /* take care of the data here, ignored in this example */
+  (void)data;
+  (void)userp;
+  return n*l;
+}
+int test(char *URL)
+{
+  CURL *easy;
+
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  easy = curl_easy_init();
+  if(easy) {
+    CURLcode res;
+    curl_easy_setopt(easy, CURLOPT_URL, URL);
+    curl_easy_setopt(easy, CURLOPT_VERBOSE, 1L);
+    curl_easy_setopt(easy, CURLOPT_FOLLOWLOCATION, 1L);
+    /* ignores any content */
+    curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, write_cb);
+
+    /* if there's a proxy set, use it */
+    if(libtest_arg2 && *libtest_arg2) {
+      curl_easy_setopt(easy, CURLOPT_PROXY, libtest_arg2);
+      curl_easy_setopt(easy, CURLOPT_HTTPPROXYTUNNEL, 1L);
+    }
+    res = curl_easy_perform(easy);
+    if(res) {
+      printf("badness: %d\n", (int)res);
+    }
+    showem(easy, CURLH_CONNECT|CURLH_HEADER|CURLH_TRAILER|CURLH_1XX);
+    curl_easy_cleanup(easy);
+  }
+  curl_global_cleanup();
+  return 0;
+}
diff --git a/tests/libtest/lib1947.c b/tests/libtest/lib1947.c
new file mode 100644 (file)
index 0000000..f7bd91f
--- /dev/null
@@ -0,0 +1,89 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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.haxx.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 "memdebug.h"
+
+static size_t writecb(char *data, size_t n, size_t l, void *userp)
+{
+  /* ignore the data */
+  (void)data;
+  (void)userp;
+  return n*l;
+}
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode res;
+
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  curl = curl_easy_init();
+  if(curl) {
+    struct curl_header *h;
+    int count = 0;
+    int origins;
+
+    /* perform a request that involves redirection */
+    curl_easy_setopt(curl, CURLOPT_URL, URL);
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+    res = curl_easy_perform(curl);
+    if(res)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* count the number of requests by reading the first header of each
+       request. */
+    origins = (CURLH_HEADER|CURLH_TRAILER|CURLH_CONNECT|
+               CURLH_1XX|CURLH_PSEUDO);
+    do {
+      h = curl_easy_nextheader(curl, origins, count, NULL);
+      if(h)
+        count++;
+    } while(h);
+    printf("count = %u\n", count);
+
+    /* perform another request - without redirect */
+    curl_easy_setopt(curl, CURLOPT_URL, libtest_arg2);
+    res = curl_easy_perform(curl);
+    if(res)
+      fprintf(stderr, "curl_easy_perform() failed: %s\n",
+              curl_easy_strerror(res));
+
+    /* count the number of requests again. */
+    count = 0;
+    do {
+      h = curl_easy_nextheader(curl, origins, count, NULL);
+      if(h)
+        count++;
+    } while(h);
+    printf("count = %u\n", count);
+    curl_easy_cleanup(curl);
+  }
+
+  curl_global_cleanup();
+  return 0;
+}
diff --git a/tests/libtest/lib1948.c b/tests/libtest/lib1948.c
new file mode 100644 (file)
index 0000000..7c891a2
--- /dev/null
@@ -0,0 +1,79 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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.haxx.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"
+
+typedef struct
+{
+  char *buf;
+  size_t len;
+} put_buffer;
+
+static size_t put_callback(char *ptr, size_t size, size_t nmemb, void *stream)
+{
+  put_buffer *putdata = (put_buffer *)stream;
+  size_t totalsize = size * nmemb;
+  size_t tocopy = (putdata->len < totalsize) ? putdata->len : totalsize;
+  memcpy(ptr, putdata->buf, tocopy);
+  putdata->len -= tocopy;
+  putdata->buf += tocopy;
+  return tocopy;
+}
+
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OUT_OF_MEMORY;
+
+  curl_global_init(CURL_GLOBAL_DEFAULT);
+
+  curl = curl_easy_init();
+  if(curl) {
+    const char *testput = "This is test PUT data\n";
+    put_buffer pbuf;
+
+    /* PUT */
+    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+    curl_easy_setopt(curl, CURLOPT_HEADER, 1L);
+    curl_easy_setopt(curl, CURLOPT_READFUNCTION, put_callback);
+    pbuf.buf = (char *)testput;
+    pbuf.len = strlen(testput);
+    curl_easy_setopt(curl, CURLOPT_READDATA, &pbuf);
+    curl_easy_setopt(curl, CURLOPT_INFILESIZE, (long)strlen(testput));
+    res = curl_easy_setopt(curl, CURLOPT_URL, URL);
+    if(!res)
+      res = curl_easy_perform(curl);
+    if(!res) {
+      /* POST */
+      curl_easy_setopt(curl, CURLOPT_POST, 1L);
+      curl_easy_setopt(curl, CURLOPT_POSTFIELDS, testput);
+      curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(testput));
+      res = curl_easy_perform(curl);
+    }
+    curl_easy_cleanup(curl);
+  }
+
+  curl_global_cleanup();
+  return (int)res;
+}
diff --git a/tests/libtest/lib1955.c b/tests/libtest/lib1955.c
new file mode 100644 (file)
index 0000000..053c3e1
--- /dev/null
@@ -0,0 +1,76 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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.haxx.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 "memdebug.h"
+
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode res = TEST_ERR_MAJOR_BAD;
+  struct curl_slist *list = NULL;
+  struct curl_slist *connect_to = NULL;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  curl = curl_easy_init();
+  if(!curl) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    curl_global_cleanup();
+    return TEST_ERR_MAJOR_BAD;
+  }
+
+  test_setopt(curl, CURLOPT_VERBOSE, 1L);
+  test_setopt(curl, CURLOPT_AWS_SIGV4, "xxx");
+  test_setopt(curl, CURLOPT_USERPWD, "xxx");
+  test_setopt(curl, CURLOPT_HEADER, 0L);
+  test_setopt(curl, CURLOPT_URL, URL);
+  list = curl_slist_append(list, "test2: 1234");
+  if(!list)
+    goto test_cleanup;
+  if(libtest_arg2) {
+    connect_to = curl_slist_append(connect_to, libtest_arg2);
+  }
+  test_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
+  curl_slist_append(list, "Content-Type: application/json");
+  curl_slist_append(list, "test1:");
+  curl_slist_append(list, "test0");
+  curl_slist_append(list, "test_space: t\ts  m\t   end    ");
+  curl_slist_append(list, "tesMixCase: MixCase");
+  test_setopt(curl, CURLOPT_HTTPHEADER, list);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  curl_slist_free_all(connect_to);
+  curl_slist_free_all(list);
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return res;
+}
diff --git a/tests/libtest/lib2301.c b/tests/libtest/lib2301.c
new file mode 100644 (file)
index 0000000..90f240e
--- /dev/null
@@ -0,0 +1,154 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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 "test.h"
+
+#ifdef USE_WEBSOCKETS
+#if 0
+
+static int ping(CURL *curl, const char *send_payload)
+{
+  size_t sent;
+  CURLcode result =
+    curl_ws_send(curl, send_payload, strlen(send_payload), &sent, CURLWS_PING);
+  fprintf(stderr,
+          "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+
+  return (int)result;
+}
+
+static int recv_pong(CURL *curl, const char *exected_payload)
+{
+  size_t rlen;
+  unsigned int rflags;
+  char buffer[256];
+  CURLcode result =
+    curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &rflags);
+  if(rflags & 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, rflags);
+  }
+  fprintf(stderr, "ws: curl_ws_recv returned %u, received %u\n", (int)result,
+         rlen);
+  return (int)result;
+}
+
+/* just close the connection */
+static void websocket_close(CURL *curl)
+{
+  size_t sent;
+  CURLcode result =
+    curl_ws_send(curl, "", 0, &sent, CURLWS_CLOSE);
+  fprintf(stderr,
+          "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+}
+
+static void websocket(CURL *curl)
+{
+  int i = 0;
+  fprintf(stderr, "ws: websocket() starts\n");
+  do {
+    if(ping(curl, "foobar"))
+      return;
+    if(recv_pong(curl, "foobar"))
+      return;
+    sleep(2);
+  } while(i++ < 10);
+  websocket_close(curl);
+}
+
+#endif
+
+static size_t writecb(char *b, size_t size, size_t nitems, void *p)
+{
+  CURL *easy = p;
+  unsigned char *buffer = (unsigned char *)b;
+  size_t i;
+  size_t sent;
+  unsigned char pong[] = {
+    0x8a, 0x0
+  };
+  size_t incoming = nitems;
+  fprintf(stderr, "Called CURLOPT_WRITEFUNCTION with %u bytes: ",
+          (int)nitems);
+  for(i = 0; i < nitems; i++)
+    fprintf(stderr, "%02x ", (unsigned char)buffer[i]);
+  fprintf(stderr, "\n");
+  (void)size;
+  if(buffer[0] == 0x89) {
+    CURLcode result;
+    fprintf(stderr, "send back a simple PONG\n");
+    result = curl_ws_send(easy, pong, 2, &sent, 0, 0);
+    if(result)
+      nitems = 0;
+  }
+  if(nitems != incoming)
+    fprintf(stderr, "returns error from callback\n");
+  return nitems;
+}
+
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  global_init(CURL_GLOBAL_ALL);
+
+  curl = curl_easy_init();
+  if(curl) {
+    curl_easy_setopt(curl, CURLOPT_URL, URL);
+
+    /* use the callback style */
+    curl_easy_setopt(curl, CURLOPT_USERAGENT, "webbie-sox/3");
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+    curl_easy_setopt(curl, CURLOPT_WS_OPTIONS, CURLWS_RAW_MODE);
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+    curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl);
+    res = curl_easy_perform(curl);
+    fprintf(stderr, "curl_easy_perform() returned %u\n", (int)res);
+#if 0
+    if(res == CURLE_OK)
+      websocket(curl);
+#endif
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+  }
+  curl_global_cleanup();
+  return (int)res;
+}
+
+#else /* no websockets */
+NO_SUPPORT_BUILT_IN
+#endif
diff --git a/tests/libtest/lib2302.c b/tests/libtest/lib2302.c
new file mode 100644 (file)
index 0000000..cb4ac35
--- /dev/null
@@ -0,0 +1,157 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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 "test.h"
+
+#ifdef USE_WEBSOCKETS
+
+#if 0
+
+static int ping(CURL *curl, const char *send_payload)
+{
+  size_t sent;
+  CURLcode result =
+    curl_ws_send(curl, send_payload, strlen(send_payload), &sent, CURLWS_PING);
+  fprintf(stderr,
+          "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+
+  return (int)result;
+}
+
+static int recv_pong(CURL *curl, const char *exected_payload)
+{
+  size_t rlen;
+  unsigned int rflags;
+  char buffer[256];
+  CURLcode result =
+    curl_ws_recv(curl, buffer, sizeof(buffer), &rlen, &rflags);
+  if(rflags & 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, rflags);
+  }
+  fprintf(stderr, "ws: curl_ws_recv returned %u, received %u\n", (int)result,
+         rlen);
+  return (int)result;
+}
+
+/* just close the connection */
+static void websocket_close(CURL *curl)
+{
+  size_t sent;
+  CURLcode result =
+    curl_ws_send(curl, "", 0, &sent, CURLWS_CLOSE);
+  fprintf(stderr,
+          "ws: curl_ws_send returned %u, sent %u\n", (int)result, (int)sent);
+}
+
+static void websocket(CURL *curl)
+{
+  int i = 0;
+  fprintf(stderr, "ws: websocket() starts\n");
+  do {
+    if(ping(curl, "foobar"))
+      return;
+    if(recv_pong(curl, "foobar"))
+      return;
+    sleep(2);
+  } while(i++ < 10);
+  websocket_close(curl);
+}
+
+#endif
+
+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;
+  (void)size;
+  for(i = 0; i < nitems; i++)
+    printf("%02x ", (unsigned char)buffer[i]);
+  printf("\n");
+
+  meta = curl_ws_meta(easy);
+  if(meta)
+    printf("RECFLAGS: %x\n", meta->flags);
+  else
+    fprintf(stderr, "RECFLAGS: NULL\n");
+
+  /* this assumes we get a simple TEXT frame first */
+  {
+    CURLcode result = CURLE_OK;
+    fprintf(stderr, "send back a TEXT\n");
+    (void)easy;
+    /*result = curl_ws_send(easy, pong, 2, &sent, 0);*/
+    if(result)
+      nitems = 0;
+  }
+  if(nitems != incoming)
+    fprintf(stderr, "returns error from callback\n");
+  return nitems;
+}
+
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  global_init(CURL_GLOBAL_ALL);
+
+  curl = curl_easy_init();
+  if(curl) {
+    curl_easy_setopt(curl, CURLOPT_URL, URL);
+
+    /* use the callback style */
+    curl_easy_setopt(curl, CURLOPT_USERAGENT, "webbie-sox/3");
+    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writecb);
+    curl_easy_setopt(curl, CURLOPT_WRITEDATA, curl);
+    res = curl_easy_perform(curl);
+    fprintf(stderr, "curl_easy_perform() returned %u\n", (int)res);
+#if 0
+    if(res == CURLE_OK)
+      websocket(curl);
+#endif
+    /* always cleanup */
+    curl_easy_cleanup(curl);
+  }
+  curl_global_cleanup();
+  return (int)res;
+}
+
+#else
+NO_SUPPORT_BUILT_IN
+#endif
index 199d53ca99818189185ba8dd1979e185200fa93f..aa5ef2a2506c0cca5dac7fbb57853d76d708b8fe 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Nicolas Sterchele, <nicolas@sterchelen.net>
+ * Copyright (C) 2020 - 2022, Nicolas Sterchele, <nicolas@sterchelen.net>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
 
index cbae39ec31860afecc1e949bb52dd60067483b3a..0e1b3df60851d7258c12b30f9da1b8a72059cfc8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
diff --git a/tests/libtest/lib3026.c b/tests/libtest/lib3026.c
new file mode 100644 (file)
index 0000000..8ad7e94
--- /dev/null
@@ -0,0 +1,179 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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 "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+
+#define NUM_THREADS 100
+
+#ifdef WIN32
+#ifdef _WIN32_WCE
+static DWORD WINAPI run_thread(LPVOID ptr)
+#else
+#include <process.h>
+static unsigned int WINAPI run_thread(void *ptr)
+#endif
+{
+  CURLcode *result = ptr;
+
+  *result = curl_global_init(CURL_GLOBAL_ALL);
+  if(*result == CURLE_OK)
+    curl_global_cleanup();
+
+  return 0;
+}
+
+int test(char *URL)
+{
+#ifdef _WIN32_WCE
+  typedef HANDLE curl_win_thread_handle_t;
+#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+  typedef unsigned long curl_win_thread_handle_t;
+#else
+  typedef uintptr_t curl_win_thread_handle_t;
+#endif
+  CURLcode results[NUM_THREADS];
+  curl_win_thread_handle_t ths[NUM_THREADS];
+  unsigned tid_count = NUM_THREADS, i;
+  int test_failure = 0;
+  curl_version_info_data *ver;
+  (void) URL;
+
+  ver = curl_version_info(CURLVERSION_NOW);
+  if((ver->features & CURL_VERSION_THREADSAFE) == 0) {
+    fprintf(stderr, "%s:%d On Windows but the "
+            "CURL_VERSION_THREADSAFE feature flag is not set\n",
+            __FILE__, __LINE__);
+    return -1;
+  }
+
+  for(i = 0; i < tid_count; i++) {
+    curl_win_thread_handle_t th;
+    results[i] = CURL_LAST; /* initialize with invalid value */
+#ifdef _WIN32_WCE
+    th = CreateThread(NULL, 0, run_thread, &results[i], 0, NULL);
+#else
+    th = _beginthreadex(NULL, 0, run_thread, &results[i], 0, NULL);
+#endif
+    if(!th) {
+      fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
+              __FILE__, __LINE__, GetLastError());
+      tid_count = i;
+      test_failure = -1;
+      goto cleanup;
+    }
+    ths[i] = th;
+  }
+
+cleanup:
+  for(i = 0; i < tid_count; i++) {
+    WaitForSingleObject((HANDLE)ths[i], INFINITE);
+    CloseHandle((HANDLE)ths[i]);
+    if(results[i] != CURLE_OK) {
+      fprintf(stderr, "%s:%d thread[%u]: curl_global_init() failed,"
+              "with code %d (%s)\n", __FILE__, __LINE__,
+              i, (int) results[i], curl_easy_strerror(results[i]));
+      test_failure = -1;
+    }
+  }
+
+  return test_failure;
+}
+
+#elif defined(HAVE_PTHREAD_H)
+#include <pthread.h>
+#include <unistd.h>
+
+static void *run_thread(void *ptr)
+{
+  CURLcode *result = ptr;
+
+  *result = curl_global_init(CURL_GLOBAL_ALL);
+  if(*result == CURLE_OK)
+    curl_global_cleanup();
+
+  return NULL;
+}
+
+int test(char *URL)
+{
+  CURLcode results[NUM_THREADS];
+  pthread_t tids[NUM_THREADS];
+  unsigned tid_count = NUM_THREADS, i;
+  int test_failure = 0;
+  curl_version_info_data *ver;
+  (void) URL;
+
+  ver = curl_version_info(CURLVERSION_NOW);
+  if((ver->features & CURL_VERSION_THREADSAFE) == 0) {
+    fprintf(stderr, "%s:%d Have pthread but the "
+            "CURL_VERSION_THREADSAFE feature flag is not set\n",
+            __FILE__, __LINE__);
+    return -1;
+  }
+
+  for(i = 0; i < tid_count; i++) {
+    int res;
+    results[i] = CURL_LAST; /* initialize with invalid value */
+    res = pthread_create(&tids[i], NULL, run_thread, &results[i]);
+    if(res) {
+      fprintf(stderr, "%s:%d Couldn't create thread, errno %d\n",
+              __FILE__, __LINE__, res);
+      tid_count = i;
+      test_failure = -1;
+      goto cleanup;
+    }
+  }
+
+cleanup:
+  for(i = 0; i < tid_count; i++) {
+    pthread_join(tids[i], NULL);
+    if(results[i] != CURLE_OK) {
+      fprintf(stderr, "%s:%d thread[%u]: curl_global_init() failed,"
+              "with code %d (%s)\n", __FILE__, __LINE__,
+              i, (int) results[i], curl_easy_strerror(results[i]));
+      test_failure = -1;
+    }
+  }
+
+  return test_failure;
+}
+
+#else /* without pthread or Windows, this test doesn't work */
+int test(char *URL)
+{
+  curl_version_info_data *ver;
+  (void)URL;
+
+  ver = curl_version_info(CURLVERSION_NOW);
+  if((ver->features & CURL_VERSION_THREADSAFE) != 0) {
+    fprintf(stderr, "%s:%d No pthread but the "
+            "CURL_VERSION_THREADSAFE feature flag is set\n",
+            __FILE__, __LINE__);
+    return -1;
+  }
+  return 0;
+}
+#endif
diff --git a/tests/libtest/lib3027.c b/tests/libtest/lib3027.c
new file mode 100644 (file)
index 0000000..2b1d8dc
--- /dev/null
@@ -0,0 +1,56 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2020 - 2022, 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 "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+int test(char *URL)
+{
+  CURLcode ret = CURLE_OK;
+  CURL *hnd;
+  start_test_timing();
+
+  curl_global_init(CURL_GLOBAL_ALL);
+
+  hnd = curl_easy_init();
+  if(hnd) {
+    curl_easy_setopt(hnd, CURLOPT_URL, URL);
+    curl_easy_setopt(hnd, CURLOPT_FILETIME, 1L);
+    ret = curl_easy_perform(hnd);
+    if(CURLE_OK == ret) {
+      long filetime;
+      ret = curl_easy_getinfo(hnd, CURLINFO_FILETIME, &filetime);
+      /* MTDM fails with 550, so filetime should be -1 */
+      if((CURLE_OK == ret) && (filetime != -1)) {
+        /* we just need to return something which is not CURLE_OK */
+        ret = CURLE_UNSUPPORTED_PROTOCOL;
+      }
+    }
+    curl_easy_cleanup(hnd);
+  }
+  curl_global_cleanup();
+  return (int)ret;
+}
index 5bb0cff44b17146cce6bd67822ad46cb29b12b41..37cd4b24a15f3db1d3dfe638c00af7d9165cb1f0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 798ff61a206fcde3dc392db5f78d47a28885913b..544be2b8114434c8050344f65992333b6ba473c2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index e62b260b03c419589186b7a8f56ce3f03262c57c..4509d1a01962f7f6b824004b98f69882ce88a6bb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 4cb930cf8d6b94f2d306a1540902edcab586cb89..86dce97ccf3122d0379fe725bf95d0c36985ec29 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index efac42cec5780c2a5085c6e130388a988aaaf634..a4bfe35894165f8dbc237237617898daab503ccb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index b22027a77ea332965e2b787e8250ad00b21dfff5..afa8950ed7c42be1259c0f03e7479a78becc05c0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 559e7315dc3a3e7db357461605cfea7b7464bb46..b44a275b9ca86b9702d94973898d2843c444e35d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 "memdebug.h"
index 25b4e6e172fd4bc38b4dab1cbcda8a66d699ff0f..c57a612b0d6d7be50a0f30405ffdfd4a80919d1e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index b5391fb8eaa5580fd6780615cfb55ca07604f8ae..f16e2d7a496da4f00ff8f209705dc76334d7c1e4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -75,11 +77,6 @@ int test(char *URL)
   /* Now specify we want to POST data */
   test_setopt(curl, CURLOPT_POST, 1L);
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
   /* Set the expected POST size */
   test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)pooh.sizeleft);
 
index 20cadda7761c4c363ef968093c0fed8590b7b51f..63fb12fbcb9e0c4c899e46fc41a9eff07b3fd929 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index b3dd0ab843b9c90f6f62b8f0ed04030c61957605..068cdd7a8ed03a3c5608efc6b21e3de26e1153bf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -93,11 +95,6 @@ int test(char *URL)
   /* Now specify we want to POST data */
   test_setopt(curl, CURLOPT_POST, 1L);
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
   /* we want to use our own read function */
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
index 55d8fd254ac9d90399d0456d753d90aa54c335d4..1262a6b2e921f2e334f23abfef0286c59c7371e8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 7b2af615afb0f3c35ddd6bfbf1cbdfa0342370df..309d0ac59c4fb40dbb23811dbd5ecffa28941736 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 80fc57b9b81055da7ce1030c2f6bd9b76260c695..f757bac6d573a52afbe0ead1b2c944bc6dfcde7f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a1c58f77bfea6d7d1dc4289abb2b8d5877483d52..138bd69dfffc49597e3950d93c23353cba4649ea 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index ae30d5ecb3392ef2e0d8354d6036cf46e544a004..661bf6f0fefc35d638c9484c19d8b07b2b6b9196 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index e54c541662546da788604e121e2d1770c4856da0..b7c9349d07216732cec87f7923fa4e2f79ed4cdb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index f0a3c83994620244103a7967f34ff96dc7bb08b5..3726efdfdb35c4396876d363c65cf5c63ec49f5c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -124,7 +126,7 @@ static const struct dcheck dates[] = {
   {"Thu, 31-Dec-1969 23:59:58 GMT", -2 },
   {"Thu, 31-Dec-1969 23:59:59 GMT", 0 }, /* avoids -1 ! */
 #if SIZEOF_TIME_T > 4
-  {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 },
+  {"Sun, 06 Nov 2044 08:49:37 GMT", (time_t) CURL_OFF_TU_C(2362034977) },
   {"Sun, 06 Nov 3144 08:49:37 GMT", 37074617377 },
 #ifndef HAVE_TIME_T_UNSIGNED
 #if 0
index bf7fe8ebfd0ae847fa9a742ed320d4e188f2a73b..22f727a5ad46e566b7c7706b23a9bd0cdb2b1447 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -378,9 +380,7 @@ static int rlimit(int keep_open)
   msnprintf(strbuff, sizeof(strbuff), fmt, num_open.rlim_max);
   fprintf(stderr, "%s file descriptors open\n", strbuff);
 
-#if !defined(HAVE_POLL_FINE)    && \
-    !defined(USE_WINSOCK)       && \
-    !defined(TPF)
+#if !defined(HAVE_POLL_FINE) && !defined(USE_WINSOCK)
 
   /*
    * when using select() instead of poll() we cannot test
index 8ed8d5c9327ec15ebad33531ac030508215dd990..fecaa9844cdb4e13fe419fac418f2c048c784ea2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index bf26ec5b761741afb1b875ebf0e5693502690733..ef7c59442a725910aded87842d2d2e1a6524a9dd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 43156b2d468129917bbb018b6dd4c4f8e614fb91..8385da6d85f8d3c84766f813300adb76c436cf65 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 441fcec159cef3a2558a8501eed83b2f14bf31d7..04285bbee24fa281a0b881cd4c7c6768e068d918 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index bb74402104cd5281416f580ad0ae8724d44d024d..af1d5cc708313f76f527675f0c9d05741f00951b 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 1400b9248fcf7ef4b3db80643c33814952ebb499..51ed6581c27a8c4fd3dd850dd02686970ed1bcfc 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a015699c5645b1047207491a8c49e4ab46214635..0153d984fcb480edbe5a7c376851ef67e1dd17ac 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * This code sets up multiple easy handles that transfer a single file from
index d9d10de7795442837ea5fe393ff29890403f555a..22577275cda7ad6ed25bab8d455d409c6c69b0e2 100644 (file)
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -90,14 +92,12 @@ static int addFd(struct Sockets *sockets, curl_socket_t fd, const char *what)
     sockets->max_count = 20;
   }
   else if(sockets->count + 1 > sockets->max_count) {
-    curl_socket_t *oldptr = sockets->sockets;
-    sockets->sockets = realloc(oldptr, sizeof(curl_socket_t) *
-                               (sockets->max_count + 20));
-    if(!sockets->sockets) {
+    curl_socket_t *ptr = realloc(sockets->sockets, sizeof(curl_socket_t) *
+                                 (sockets->max_count + 20));
+    if(!ptr)
       /* cleanup in test_cleanup */
-      sockets->sockets = oldptr;
       return 1;
-    }
+    sockets->sockets = ptr;
     sockets->max_count += 20;
   }
   /*
@@ -247,7 +247,7 @@ static int checkFdSet(CURLM *curl,
                       int evBitmask, const char *name)
 {
   int i;
-  CURLMcode result = CURLM_OK;
+  int result = 0;
   for(i = 0; i < sockets->count; ++i) {
     if(FD_ISSET(sockets->sockets[i], fdset)) {
       result = socket_action(curl, sockets->sockets[i], evBitmask, name);
@@ -255,7 +255,7 @@ static int checkFdSet(CURLM *curl,
         break;
     }
   }
-  return (int)result;
+  return result;
 }
 
 static int testone(char *URL, int timercb, int socketcb)
@@ -359,7 +359,6 @@ test_cleanup:
   /* free local memory */
   free(sockets.read.sockets);
   free(sockets.write.sockets);
-
   return res;
 }
 
index c6c014a95f9024f9de5fb2039b7501bc261b5f3b..ddc96f762b84d1e33942a878c2b6341006cc9c8c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* used for test case 533, 534 and 535 */
 
index fd852b6b912e1c30a0243f9785d146a383321f6b..dbced98dced9bb4a689246938f65bbc6fcc7d866 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -34,7 +36,6 @@
 
 #if !defined(HAVE_POLL_FINE)    && \
     !defined(USE_WINSOCK)       && \
-    !defined(TPF)               && \
     !defined(FD_SETSIZE)
 #error "this test requires FD_SETSIZE"
 #endif
@@ -382,9 +383,7 @@ static int rlimit(int keep_open)
   msnprintf(strbuff, sizeof(strbuff), fmt, num_open.rlim_max);
   fprintf(stderr, "%s file descriptors open\n", strbuff);
 
-#if !defined(HAVE_POLL_FINE)    && \
-    !defined(USE_WINSOCK)       && \
-    !defined(TPF)
+#if !defined(HAVE_POLL_FINE) && !defined(USE_WINSOCK)
 
   /*
    * when using select() instead of poll() we cannot test
index 0b2e97f4ec13978de6df9d5686b9483ba12c4ed0..9450963dcfa84f5558e36db0e03658f77fcf47c0 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index d34029d849f36c79fc3f3a7a3ed33654c9fe0cdf..d8b7a0d8472c4990614a44688fa194dbb3150532 100644 (file)
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* This is the 'proxyauth.c' test app posted by Shmulik Regev on the libcurl
  * mailing list on 10 Jul 2007, converted to a test case.
index 9a8d199386383680697ff7a60b8bb08e5a3c5774..20d11e2ddc69df5f0a9d0a38312dd16f5e27f002 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 9b54bcfbe5f4c972df7fc6bd00f77e31366f8675..d762b13c2070b0303a7100294ba4aced0204c7c2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index c79295d2c1379d7953ec95c6fac895309e9479de..cea6dc9a5cb3525d3a4597cf8f27602020914035 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* Based on Alex Fishman's bug report on September 30, 2007 */
 
index 5b571122335c714e98dbe597ae56e0c60e3e41c4..42710e1b988d21bda2c41d6634f1cdf734c91b6e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
 static char teststring[] =
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-{ '\x54', '\x68', '\x69', '\x73', '\x00', '\x20', '\x69', '\x73', '\x20',
-  '\x74', '\x65', '\x73', '\x74', '\x20', '\x62', '\x69', '\x6e', '\x61',
-  '\x72', '\x79', '\x20', '\x64', '\x61', '\x74', '\x61', '\x20', '\x77',
-  '\x69', '\x74', '\x68', '\x20', '\x61', '\x6e', '\x20', '\x65', '\x6d',
-  '\x62', '\x65', '\x64', '\x64', '\x65', '\x64', '\x20', '\x4e', '\x55',
-  '\x4c'};
-#else
 {   'T', 'h', 'i', 's', '\0', ' ', 'i', 's', ' ', 't', 'e', 's', 't', ' ',
     'b', 'i', 'n', 'a', 'r', 'y', ' ', 'd', 'a', 't', 'a', ' ',
     'w', 'i', 't', 'h', ' ', 'a', 'n', ' ',
     'e', 'm', 'b', 'e', 'd', 'd', 'e', 'd', ' ', 'N', 'U', 'L'};
-#endif
-
 
 int test(char *URL)
 {
index 57a9d84dc959bf117319f136afeb609e42a1be1c..647afc63def0c04ce6ea389d083e3c541cd6ea85 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* argv1 = URL
  * argv2 = proxy
 
 #include "memdebug.h"
 
-#ifdef CURL_DOES_CONVERSIONS
-   /* ASCII representation with escape sequences for non-ASCII platforms */
-#  define UPLOADTHIS "\x74\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x62" \
-                     "\x6c\x75\x72\x62\x20\x77\x65\x20\x77\x61\x6e\x74\x20" \
-                     "\x74\x6f\x20\x75\x70\x6c\x6f\x61\x64\x0a"
-#else
-#  define UPLOADTHIS "this is the blurb we want to upload\n"
-#endif
+#define UPLOADTHIS "this is the blurb we want to upload\n"
 
 #ifndef LIB548
 static size_t readcallback(char  *ptr,
index f593f2defaf0a314cbf0522d84d69440d64a5ab9..d4861d88591989f6cad60118817523bfd0a8acd5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* argv1 = URL
  * argv2 = proxy
index 7e56ae7eb0b73e7d0cbe094cc435a46fb4a52fd4..764e861fb360fab914514627b96b75e388d4159e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* argv1 = URL
  * argv2 = proxy with embedded user+password
@@ -190,11 +192,6 @@ int test(char *URL)
   /* Post */
   test_setopt(curl, CURLOPT_POST, 1L);
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
   /* Setup read callback */
   test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) sizeof(databuf));
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
index 31b2bdba69a882c1ccf58880c150037293767542..0ab0e3e500c5e967f68234f590dc19f0c7b8ad82 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* This test case and code is based on the bug recipe Joe Malicki provided for
@@ -92,10 +94,6 @@ int test(char *URL)
   test_setopt(curl, CURLOPT_URL, URL);
   test_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
   test_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
   test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)POSTLEN);
   test_setopt(curl, CURLOPT_VERBOSE, 1L);
   test_setopt(curl, CURLOPT_HEADER, 1L);
index aebbb1b555ffb133892a1a2da175dafb54afee05..3e6f511a2163ce94f33316175346646289b5ea49 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
 static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x74\x68\x69\x73\x20\x69\x73\x20\x77\x68\x61\x74\x20\x77\x65\x20\x70"
-  "\x6f\x73\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x69\x6c\x6c\x79\x20"
-  "\x77\x65\x62\x20\x73\x65\x72\x76\x65\x72\x0a";
-#else
   "this is what we post to the silly web server\n";
-#endif
 
 struct WriteThis {
   char *readptr;
@@ -123,14 +118,7 @@ static int once(char *URL, bool oldstyle)
   formrc = curl_formadd(&formpost,
                         &lastptr,
                         CURLFORM_COPYNAME, "filename",
-#ifdef CURL_DOES_CONVERSIONS
-                        /* ASCII representation with escape
-                           sequences for non-ASCII platforms */
-                        CURLFORM_COPYCONTENTS,
-                           "\x70\x6f\x73\x74\x69\x74\x32\x2e\x63",
-#else
                         CURLFORM_COPYCONTENTS, "postit2.c",
-#endif
                         CURLFORM_END);
 
   if(formrc)
@@ -140,13 +128,7 @@ static int once(char *URL, bool oldstyle)
   formrc = curl_formadd(&formpost,
                         &lastptr,
                         CURLFORM_COPYNAME, "submit",
-#ifdef CURL_DOES_CONVERSIONS
-                        /* ASCII representation with escape
-                           sequences for non-ASCII platforms */
-                        CURLFORM_COPYCONTENTS, "\x73\x65\x6e\x64",
-#else
                         CURLFORM_COPYCONTENTS, "send",
-#endif
                         CURLFORM_CONTENTTYPE, "text/plain",
                         CURLFORM_END);
 
index 5b38530d148fd505ee78b223f1f60823d86332a9..29e43f8f06b097e8d7494f228b694eef71a081b1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* This test case is supposed to be identical to 547 except that this uses the
 #define TEST_HANG_TIMEOUT 60 * 1000
 
 static const char uploadthis[] =
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x74\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x62\x6c\x75\x72"
-  "\x62\x20\x77\x65\x20\x77\x61\x6e\x74\x20\x74\x6f\x20\x75\x70\x6c"
-  "\x6f\x61\x64\x0a";
-#else
   "this is the blurb we want to upload\n";
-#endif
 
 static size_t readcallback(char  *ptr,
                            size_t size,
@@ -130,10 +125,6 @@ int test(char *URL)
 
     abort_on_test_timeout();
 
-#ifdef TPF
-    sleep(1); /* avoid ctl-10 dump */
-#endif
-
     if(!running)
       break; /* done */
 
index 3a9a7955c84a98d736b5fd9f854fa94d9cc5821b..a391d5a0018fa67a66b848ca7e2926ef81f7d08f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -61,15 +63,8 @@ int test(char *URL)
   if(!res) {
     /* we are connected, now get a HTTP document the raw way */
     const char *request =
-#ifdef CURL_DOES_CONVERSIONS
-      /* ASCII representation with escape sequences for non-ASCII platforms */
-      "\x47\x45\x54\x20\x2f\x35\x35\x36\x20\x48\x54\x54\x50\x2f\x31\x2e"
-      "\x31\x0d\x0a\x48\x6f\x73\x74\x3a\x20\x6e\x69\x6e\x6a\x61\x0d\x0a"
-      "\x0d\x0a";
-#else
       "GET /556 HTTP/1.1\r\n"
       "Host: ninja\r\n\r\n";
-#endif
     size_t iolen = 0;
 
     res = curl_easy_send(curl, request, strlen(request), &iolen);
@@ -82,10 +77,6 @@ int test(char *URL)
         /* busy-read like crazy */
         res = curl_easy_recv(curl, buf, sizeof(buf), &iolen);
 
-#ifdef TPF
-        sleep(1); /* avoid ctl-10 dump */
-#endif
-
         if(iolen) {
           /* send received stuff to stdout */
           if(!write(STDOUT_FILENO, buf, iolen))
index c17fab276294f455b2f657e373c3fcd9fd61b868..578ab713b3ddb2b648247f211ca1668eda23fee6 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -125,25 +127,6 @@ static int test_unsigned_short_formatting(void)
   int num_ushort_tests = 0;
   int failed = 0;
 
-#if (SIZEOF_SHORT == 1)
-
-  i = 1; us_test[i].num = 0xFFU; us_test[i].expected = "256";
-  i++; us_test[i].num = 0xF0U; us_test[i].expected = "240";
-  i++; us_test[i].num = 0x0FU; us_test[i].expected = "15";
-
-  i++; us_test[i].num = 0xE0U; us_test[i].expected = "224";
-  i++; us_test[i].num = 0x0EU; us_test[i].expected = "14";
-
-  i++; us_test[i].num = 0xC0U; us_test[i].expected = "192";
-  i++; us_test[i].num = 0x0CU; us_test[i].expected = "12";
-
-  i++; us_test[i].num = 0x01U; us_test[i].expected = "1";
-  i++; us_test[i].num = 0x00U; us_test[i].expected = "0";
-
-  num_ushort_tests = i;
-
-#elif (SIZEOF_SHORT == 2)
-
   i = 1; us_test[i].num = 0xFFFFU; us_test[i].expected = "65535";
   i++; us_test[i].num = 0xFF00U; us_test[i].expected = "65280";
   i++; us_test[i].num = 0x00FFU; us_test[i].expected = "255";
@@ -163,42 +146,6 @@ static int test_unsigned_short_formatting(void)
 
   num_ushort_tests = i;
 
-#elif (SIZEOF_SHORT == 4)
-
-  i = 1; us_test[i].num = 0xFFFFFFFFU; us_test[i].expected = "4294967295";
-  i++; us_test[i].num = 0xFFFF0000U; us_test[i].expected = "4294901760";
-  i++; us_test[i].num = 0x0000FFFFU; us_test[i].expected = "65535";
-
-  i++; us_test[i].num = 0xFF000000U; us_test[i].expected = "4278190080";
-  i++; us_test[i].num = 0x00FF0000U; us_test[i].expected = "16711680";
-  i++; us_test[i].num = 0x0000FF00U; us_test[i].expected = "65280";
-  i++; us_test[i].num = 0x000000FFU; us_test[i].expected = "255";
-
-  i++; us_test[i].num = 0xF0000000U; us_test[i].expected = "4026531840";
-  i++; us_test[i].num = 0x0F000000U; us_test[i].expected = "251658240";
-  i++; us_test[i].num = 0x00F00000U; us_test[i].expected = "15728640";
-  i++; us_test[i].num = 0x000F0000U; us_test[i].expected = "983040";
-  i++; us_test[i].num = 0x0000F000U; us_test[i].expected = "61440";
-  i++; us_test[i].num = 0x00000F00U; us_test[i].expected = "3840";
-  i++; us_test[i].num = 0x000000F0U; us_test[i].expected = "240";
-  i++; us_test[i].num = 0x0000000FU; us_test[i].expected = "15";
-
-  i++; us_test[i].num = 0xC0000000U; us_test[i].expected = "3221225472";
-  i++; us_test[i].num = 0x0C000000U; us_test[i].expected = "201326592";
-  i++; us_test[i].num = 0x00C00000U; us_test[i].expected = "12582912";
-  i++; us_test[i].num = 0x000C0000U; us_test[i].expected = "786432";
-  i++; us_test[i].num = 0x0000C000U; us_test[i].expected = "49152";
-  i++; us_test[i].num = 0x00000C00U; us_test[i].expected = "3072";
-  i++; us_test[i].num = 0x000000C0U; us_test[i].expected = "192";
-  i++; us_test[i].num = 0x0000000CU; us_test[i].expected = "12";
-
-  i++; us_test[i].num = 0x00000001U; us_test[i].expected = "1";
-  i++; us_test[i].num = 0x00000000U; us_test[i].expected = "0";
-
-  num_ushort_tests = i;
-
-#endif
-
   for(i = 1; i <= num_ushort_tests; i++) {
 
     for(j = 0; j<BUFSZ; j++)
@@ -232,33 +179,6 @@ static int test_signed_short_formatting(void)
   int num_sshort_tests = 0;
   int failed = 0;
 
-#if (SIZEOF_SHORT == 1)
-
-  i = 1; ss_test[i].num = 0x7F; ss_test[i].expected = "127";
-
-  i++; ss_test[i].num = 0x70; ss_test[i].expected = "112";
-  i++; ss_test[i].num = 0x07; ss_test[i].expected = "7";
-
-  i++; ss_test[i].num = 0x50; ss_test[i].expected = "80";
-  i++; ss_test[i].num = 0x05; ss_test[i].expected = "5";
-
-  i++; ss_test[i].num = 0x01; ss_test[i].expected = "1";
-  i++; ss_test[i].num = 0x00; ss_test[i].expected = "0";
-
-  i++; ss_test[i].num = -0x7F -1; ss_test[i].expected = "-128";
-
-  i++; ss_test[i].num = -0x70 -1; ss_test[i].expected = "-113";
-  i++; ss_test[i].num = -0x07 -1; ss_test[i].expected = "-8";
-
-  i++; ss_test[i].num = -0x50 -1; ss_test[i].expected = "-81";
-  i++; ss_test[i].num = -0x05 -1; ss_test[i].expected = "-6";
-
-  i++; ss_test[i].num =  0x00 -1; ss_test[i].expected = "-1";
-
-  num_sshort_tests = i;
-
-#elif (SIZEOF_SHORT == 2)
-
   i = 1; ss_test[i].num = 0x7FFF; ss_test[i].expected = "32767";
   i++; ss_test[i].num = 0x7FFE; ss_test[i].expected = "32766";
   i++; ss_test[i].num = 0x7FFD; ss_test[i].expected = "32765";
@@ -300,75 +220,6 @@ static int test_signed_short_formatting(void)
 
   num_sshort_tests = i;
 
-#elif (SIZEOF_SHORT == 4)
-
-  i = 1; ss_test[i].num = 0x7FFFFFFF; ss_test[i].expected = "2147483647";
-  i++; ss_test[i].num = 0x7FFFFFFE; ss_test[i].expected = "2147483646";
-  i++; ss_test[i].num = 0x7FFFFFFD; ss_test[i].expected = "2147483645";
-  i++; ss_test[i].num = 0x7FFF0000; ss_test[i].expected = "2147418112";
-  i++; ss_test[i].num = 0x00007FFF; ss_test[i].expected = "32767";
-
-  i++; ss_test[i].num = 0x7F000000; ss_test[i].expected = "2130706432";
-  i++; ss_test[i].num = 0x007F0000; ss_test[i].expected = "8323072";
-  i++; ss_test[i].num = 0x00007F00; ss_test[i].expected = "32512";
-  i++; ss_test[i].num = 0x0000007F; ss_test[i].expected = "127";
-
-  i++; ss_test[i].num = 0x70000000; ss_test[i].expected = "1879048192";
-  i++; ss_test[i].num = 0x07000000; ss_test[i].expected = "117440512";
-  i++; ss_test[i].num = 0x00700000; ss_test[i].expected = "7340032";
-  i++; ss_test[i].num = 0x00070000; ss_test[i].expected = "458752";
-  i++; ss_test[i].num = 0x00007000; ss_test[i].expected = "28672";
-  i++; ss_test[i].num = 0x00000700; ss_test[i].expected = "1792";
-  i++; ss_test[i].num = 0x00000070; ss_test[i].expected = "112";
-  i++; ss_test[i].num = 0x00000007; ss_test[i].expected = "7";
-
-  i++; ss_test[i].num = 0x50000000; ss_test[i].expected = "1342177280";
-  i++; ss_test[i].num = 0x05000000; ss_test[i].expected = "83886080";
-  i++; ss_test[i].num = 0x00500000; ss_test[i].expected = "5242880";
-  i++; ss_test[i].num = 0x00050000; ss_test[i].expected = "327680";
-  i++; ss_test[i].num = 0x00005000; ss_test[i].expected = "20480";
-  i++; ss_test[i].num = 0x00000500; ss_test[i].expected = "1280";
-  i++; ss_test[i].num = 0x00000050; ss_test[i].expected = "80";
-  i++; ss_test[i].num = 0x00000005; ss_test[i].expected = "5";
-
-  i++; ss_test[i].num = 0x00000001; ss_test[i].expected = "1";
-  i++; ss_test[i].num = 0x00000000; ss_test[i].expected = "0";
-
-  i++; ss_test[i].num = -0x7FFFFFFF -1; ss_test[i].expected = "-2147483648";
-  i++; ss_test[i].num = -0x7FFFFFFE -1; ss_test[i].expected = "-2147483647";
-  i++; ss_test[i].num = -0x7FFFFFFD -1; ss_test[i].expected = "-2147483646";
-  i++; ss_test[i].num = -0x7FFF0000 -1; ss_test[i].expected = "-2147418113";
-  i++; ss_test[i].num = -0x00007FFF -1; ss_test[i].expected = "-32768";
-
-  i++; ss_test[i].num = -0x7F000000 -1; ss_test[i].expected = "-2130706433";
-  i++; ss_test[i].num = -0x007F0000 -1; ss_test[i].expected = "-8323073";
-  i++; ss_test[i].num = -0x00007F00 -1; ss_test[i].expected = "-32513";
-  i++; ss_test[i].num = -0x0000007F -1; ss_test[i].expected = "-128";
-
-  i++; ss_test[i].num = -0x70000000 -1; ss_test[i].expected = "-1879048193";
-  i++; ss_test[i].num = -0x07000000 -1; ss_test[i].expected = "-117440513";
-  i++; ss_test[i].num = -0x00700000 -1; ss_test[i].expected = "-7340033";
-  i++; ss_test[i].num = -0x00070000 -1; ss_test[i].expected = "-458753";
-  i++; ss_test[i].num = -0x00007000 -1; ss_test[i].expected = "-28673";
-  i++; ss_test[i].num = -0x00000700 -1; ss_test[i].expected = "-1793";
-  i++; ss_test[i].num = -0x00000070 -1; ss_test[i].expected = "-113";
-  i++; ss_test[i].num = -0x00000007 -1; ss_test[i].expected = "-8";
-
-  i++; ss_test[i].num = -0x50000000 -1; ss_test[i].expected = "-1342177281";
-  i++; ss_test[i].num = -0x05000000 -1; ss_test[i].expected = "-83886081";
-  i++; ss_test[i].num = -0x00500000 -1; ss_test[i].expected = "-5242881";
-  i++; ss_test[i].num = -0x00050000 -1; ss_test[i].expected = "-327681";
-  i++; ss_test[i].num = -0x00005000 -1; ss_test[i].expected = "-20481";
-  i++; ss_test[i].num = -0x00000500 -1; ss_test[i].expected = "-1281";
-  i++; ss_test[i].num = -0x00000050 -1; ss_test[i].expected = "-81";
-  i++; ss_test[i].num = -0x00000005 -1; ss_test[i].expected = "-6";
-
-  i++; ss_test[i].num =  0x00000000 -1; ss_test[i].expected = "-1";
-
-  num_sshort_tests = i;
-
-#endif
-
   for(i = 1; i <= num_sshort_tests; i++) {
 
     for(j = 0; j<BUFSZ; j++)
@@ -1530,8 +1381,8 @@ static int test_weird_arguments(void)
                       0, 1, 2, 3, 4, 5, 6, 7, 8, 9, /* 10 11 */
                       0, 1, 2, 3, 4, 5, 6, 7, 8);   /* 9 */
 
-  if(rc != -1) {
-    printf("curl_mprintf() returned %d and not -1!\n", rc);
+  if(rc) {
+    printf("curl_mprintf() returned %d and not 0\n", rc);
     errors++;
   }
 
index 1134a4d72baf790c7ab77e6c152247d0af0473a9..30792c99d4ddd3ccdc7bbb6eca2e9f34f3f427f2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index bcc9a8fae92ea2cdd08e501b909092b7305f9545..89dbc2d26df612759cff993c2160e4b2e3248dbe 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 74a25cd5f6927ec5d75fef433014da26776f18d5..7dd48e4b55765b424657fcd2c17413176b672fbd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 000fa302ce930c3ff3672ec31aa2e9301f1507eb..d99010820b3ff71de9a3dfd1d850159aae3e944d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 9c2b27144a5126fae49938d7a6215a0da119b4f8..9516a2575ebb210282a2046a76f85cf30a976e8e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a619be7f122a182d94beb0361440627e6984e844..ea3ec42ae301f7a91223b1034ab3b0950d5a8eab 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a0ebead879e1817eb66d3786e6dab25de16582de..de03f5ef29f627dc807d702a8ee44169ca1855ee 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 59e9dec24443411a17692ca13417601725a8f232..271738b0c9750ce355271a6dcb3efffbb66674f9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index e5605d3eb6e7cbd7188a30809e1c02dd7197ba66..7daea8470e57ec76e64bb23db46dc39868a0c3b4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 "memdebug.h"
index 5d2f5b5b55e214ad66cd648b77176b1747344852..ccd152b8da1f83ae285d5e916bacc543e42c9a2f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 "memdebug.h"
index ec9dce9fa365c6b0e56bf93c04441d47c2f500af..8027c90d5aa9ec5cf04177f906535631cf4193c4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a9cf34133ad04b8f28f60e71ca91db45a0e7b309..0cc56eed4c7e82bc3a7276a9307574a5c4340b29 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 7126dfa734359e2aa903a01ac2e53845da55f644..02b0aa74c1ef670910fb965674eee8c24c89bc4f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index d27f1519c65b2c60faf5d14550beac0233e096bf..dbe5c945871a913fb473c7ecd2035f8c5799b673 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index f511835c55b035e64c15af1fed549e39bab95e6a..1c0475075600a1d3fe5402aa74ea5ded161cc9e1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index fa75e78133aebdecb5efdfa88ea908faa0fb552b..34677b1c528626fe520f949add3c28ea884ea892 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index ec3bc01e9eebff143d05e5c2c84997321c71cce0..89c5bf7c625ef370f2c8305d9b79151d3b503e79 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -71,11 +73,6 @@ int test(char *URL)
   /* Now specify we want to POST data */
   test_setopt(curl, CURLOPT_POST, 1L);
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
   /* Set the expected POST size */
   test_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)data_size);
   test_setopt(curl, CURLOPT_POSTFIELDS, data);
index 46894fa9a52a8b25bbeeb8a7abf96bcff713b31f..f8f1ae31d21400f55905d2b6e0e5c2fbf3ed8010 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -117,11 +119,6 @@ int test(char *URL)
   /* Now specify we want to POST data */
   test_setopt(curl, CURLOPT_POST, 1L);
 
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII */
-  test_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
-
   /* we want to use our own read function */
   test_setopt(curl, CURLOPT_READFUNCTION, read_callback);
 
index 135aa1ad08e4a1236bbf22a352d6325c78d57fec..3af6e73aeea5a0c1a7c666ffc21b44f668ad2c7e 100644 (file)
@@ -18,6 +18,8 @@
  * 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"
 
index 0ff0c09dce1ddba05a74b620f167f1e4175e7f7a..65a2fc48c75819dacf5839c9b477442a2318b406 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /*
  * This test case is based on the sample code provided by Saqib Ali
index da63e7cb8eeced723d9d9440c8863db02a9d78c8..8f14869e2b3dd133b852ce6f251500d2f74dbdd5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 "memdebug.h"
index 06cc375f95d2590654688cc11318454a36c5830f..017b7dfd74aaba913361225fddb83f022d5926ac 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 4414ae7cd458d81aac29f384480a2a170ca6cf46..1a885406d8c58f7d16a57b14f6e7ff68a873c2cb 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 318cc071e8f16e1c98b03c75f86e2b7855d82c02..93e30be7586283e9d65927cbacd03a0e0b180199 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 3f996472304d17ed4ce79a3be53634c4b333d28a..4dcf2639d744bf953fea70a746363c77a6431be4 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 8c1c3e04c677075cf7258fef546c2595cce290f9..e75cad06c806c8fc4c392f178e89d1ef4d49a0df 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 3f2b61c397cb63209aa67078057111dff150ebee..5b35cca03f8967d192d88e74d6fc4674ca01763a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 3c75108e29a51cc61ae4f2f3dbfe90ffd3b25330..5326d6d4bf06b3b81ede8eeb84129449353086ff 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
 static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x64\x75\x6d\x6d\x79\x0a";
-#else
   "dummy\n";
-#endif
 
 struct WriteThis {
   char *readptr;
@@ -178,15 +175,8 @@ static int once(char *URL, bool oldstyle)
   /* Fill in the filename field */
   res = curl_mime_name(part, "filename");
   if(!res)
-    res = curl_mime_data(part,
-#ifdef CURL_DOES_CONVERSIONS
-                         /* ASCII representation with escape
-                            sequences for non-ASCII platforms */
-                         "\x70\x6f\x73\x74\x69\x74\x32\x2e\x63",
-#else
-                          "postit2.c",
-#endif
-                          CURL_ZERO_TERMINATED);
+    res = curl_mime_data(part, "postit2.c",
+                         CURL_ZERO_TERMINATED);
 
   if(res)
     printf("curl_mime_xxx(3) = %s\n", curl_easy_strerror(res));
@@ -202,15 +192,8 @@ static int once(char *URL, bool oldstyle)
   }
   res = curl_mime_name(part, "submit");
   if(!res)
-    res = curl_mime_data(part,
-#ifdef CURL_DOES_CONVERSIONS
-                         /* ASCII representation with escape
-                            sequences for non-ASCII platforms */
-                         "\x73\x65\x6e\x64",
-#else
-                          "send",
-#endif
-                          CURL_ZERO_TERMINATED);
+    res = curl_mime_data(part, "send",
+                         CURL_ZERO_TERMINATED);
 
   if(res)
     printf("curl_mime_xxx(4) = %s\n", curl_easy_strerror(res));
index f0e6b81cd3ca25d41b82acd798d6b900d0d10c59..cc2c0edd36054ae6210e5c3231a96cbee560dbd1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
 static char data[] =
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x74\x68\x69\x73\x20\x69\x73\x20\x77\x68\x61\x74\x20\x77\x65\x20\x70"
-  "\x6f\x73\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x73\x69\x6c\x6c\x79\x20"
-  "\x77\x65\x62\x20\x73\x65\x72\x76\x65\x72";
-#else
   "this is what we post to the silly web server";
-#endif
 
 static const char name[] = "fieldname";
 
index 489331a29951859214ed21b104bb7603fe72fe9a..8b2d23b4731d6fd67584c1cd140e188d5ffec133 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 4e23dfa33bcb71a634a9b58c17c5416a4179f7eb..ff5cb3fbfa6dcf41844937049b91126287d5a4bf 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 878ed7725ee9da3b5ed0dcb1fca95d681ad87330..46348ae380e6120f2a00d6e73e4d308cb1ebbb9f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index e7e957c46a9ba9c4faa6c7b0471bbf0ec59a6c61..0d99dd66f06cf51aeea1ef66a90aac8e9cc70e75 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
 static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x64\x75\x6d\x6d\x79\x0a";
-#else
   "dummy\n";
-#endif
 
 struct WriteThis {
   char *readptr;
index 751eccdf89f1c9b65c73dcf7a72e4fff374ab9f1..7f4053bd1a84ca0da047839bc879366eefbb4944 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 1d10c6d33434a3d999e4b0bfd67b297c6c43e949..d6b9935ddae22061e067827d71f1a47a13df1d09 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -32,9 +34,9 @@
 int test(char *URL)
 {
   CURL *handle = NULL;
-  CURLcode res = 0;
+  CURLcode res = CURLE_OK;
   CURLU *urlp = NULL;
-  CURLUcode uc = 0;
+  CURLUcode uc = CURLUE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   easy_init(handle);
index d06986c3954fe6c03bb21a19466cedc5b7fd9154..0b6dddff1daa5db244144eff60057520ebfa8de5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -32,7 +34,7 @@
 int test(char *URL)
 {
   CURL *handle = NULL;
-  CURLcode res = 0;
+  CURLcode res = CURLE_OK;
   CURLU *urlp = NULL;
 
   global_init(CURL_GLOBAL_ALL);
index 7d2b69c0ca7f3c162d1f5cf1ecea2d92a214237e..f12a98068a493c2f76372b4734ac5b4ac973381f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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 "memdebug.h"
index 3c9cfe0a6eb974967f6b9958bbcd2251428f05ee..29ddb50a4506473a8f4af8960e2531fd4d505d81 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index d30b9534e5fb6960f47499893dc73ccb5136854c..d8c14da9e35e50b055c29747ac18f00ee0e47172 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
 static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x64\x75\x6d\x6d\x79";
-#else
   "dummy";
-#endif
 
 struct WriteThis {
   char *readptr;
index bd8ae3b3a92a500b0b97c3f085bffc20ad424ede..e58f49de93f3df14a069b4d55c8690ed299c9102 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * 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 "memdebug.h"
 
-static char data[]=
-#ifdef CURL_DOES_CONVERSIONS
-  /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x64\x75\x6d\x6d\x79";
-#else
-  "dummy";
-#endif
+static char data[]= "dummy";
 
 struct WriteThis {
   char *readptr;
index e00a139230321d7f2e868493a07d44cab3966e5d..0e6d52500515b60b1350cbd5b1f00824ee2dd4df 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #include <time.h>
@@ -140,10 +142,6 @@ int test(char *URL)
   mime = curl_mime_init(pooh.easy);
   part = curl_mime_addpart(mime);
   result = curl_mime_name(part, name);
-  if(!result)
-    res = curl_mime_data_cb(part, (curl_off_t) 2, read_callback,
-                            NULL, NULL, &pooh);
-
   if(result) {
     fprintf(stderr,
             "Something went wrong when building the mime structure: %d\n",
@@ -151,6 +149,9 @@ int test(char *URL)
     goto test_cleanup;
   }
 
+  res = curl_mime_data_cb(part, (curl_off_t) 2, read_callback,
+                          NULL, NULL, &pooh);
+
   /* Bind mime data to its easy handle. */
   if(!res)
     test_setopt(pooh.easy, CURLOPT_MIMEPOST, mime);
index 1b8d28710175cdf2d35cf36b4701ed74b2679839..454d5c023306e39a4ff3d073070c3ed67ad33f10 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
@@ -33,9 +35,9 @@ int test(char *URL)
 {
   CURL *handle = NULL;
   CURL *handle2;
-  CURLcode res = 0;
+  CURLcode res = CURLE_OK;
   CURLU *urlp = NULL;
-  CURLUcode uc = 0;
+  CURLUcode uc = CURLUE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   easy_init(handle);
index 2d0b31c5c1abb75e01247057a9c61c65ee988f08..aac034a05ce8b37365a2c65920113f031d8ad1c7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a4ec667f2fc0f00c08cbf1d845dab6d875b65f70..4102677c54ae7809e83654964d3f4d15afddbf91 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 89ceb8573e4a279fa63348ceca774e7a531a4bcd..23c7f4d4dcb44f54b8e78c688a23c1f9eb5df719 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index a1980108093ddfea936046b43ff8ed1642adaf6a..3de5b3f1d5b87b38d0eb09e88f69470ced46f15e 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 /* argv1 = URL
  * argv2 = main auth type
index 11da56f41dc3f17f125cf29b94241e11d1ade6cc..18b1443abe9f1ee79d78e8d137a9b4571206d0b5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 11eb18c06384b934f7c3c7e53ba9537e3e1dd1f9..3aa475c5e5102bc931e5103a00556711c98e42f7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2021, Max Dymond, <max.dymond@microsoft.com>
+ * Copyright (C) 2021 - 2022, Max Dymond, <max.dymond@microsoft.com>
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
  * 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"
 
@@ -95,4 +97,3 @@ test_cleanup:
 
   return ret;
 }
-
index 0122fc3751333befeff62fc4d8ca0e97b9bb3789..1e00be834f40c347ad24f14cf9dd8d1e1a4422e4 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # Usage:
@@ -51,6 +53,8 @@ print <<HEADER
  * 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 "memdebug.h"
@@ -128,6 +132,7 @@ static curl_sockopt_callback sockoptcb;
 static curl_opensocket_callback opensocketcb;
 static curl_seek_callback seekcb;
 static curl_sshkeycallback ssh_keycb;
+static curl_sshhostkeycallback ssh_hostkeycb;
 static curl_chunk_bgn_callback chunk_bgn_cb;
 static curl_chunk_end_callback chunk_end_cb;
 static curl_fnmatch_callback fnmatch_cb;
index 8f09598e87b54b80026312fc86259d068434e83d..e4c13b748ed28aa3bdf6d6531fd816d9f14b22ce 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Check that given arguments do not exist on filesystem.
 my $code = 0;
index 1a1fdfd673f2ca149b588846cda1591563fdf389..3ab1241a9c35bb206ed8703979131c5dea0e7956 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index 7b2f2ed132a8b7eef1411c66d9cc6dc3b58785ce..a0bbc14d5d97e2995c88038c79971bf6b7aef7c1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #ifdef CURL_STATICLIB
index 6cc1697cdf6b05d07eed2060badb457eb45b699c..1e9c800817a7b179040905bc24061bfbaf18f0b9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2017 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2017 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Only provides the bare minimum to link with libcurl */
index 5a89102d004f95278bc34d8296bb0263a30a5d7d..36460e90c5fdc8aa75eaec3e1051e320f720b10b 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2017 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2017 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Roughly based on Heimdal's gssapi.h */
index e3bad1748ac65666c921b62e847713b3cc9aa89c..badad1d109dfeeafe8a23ecc46da9194ec13b15f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /* Now include the curl_setup.h file from libcurl's private libdir (the source
 #include <unistd.h>
 #endif
 
-#ifdef TPF
-#  include "select.h"
-#endif
-
 #include "curl_printf.h"
 
 #define test_setopt(A,B,C)                                      \
@@ -487,4 +485,12 @@ extern int unitfail;
 #define global_init(A) \
   chk_global_init((A), (__FILE__), (__LINE__))
 
+#define NO_SUPPORT_BUILT_IN                     \
+  int test(char *URL)                           \
+  {                                             \
+    (void)URL;                                  \
+    fprintf(stderr, "Missing support\n");       \
+    return 1;                                   \
+  }
+
 /* ---------------------------------------------------------------- */
index 58f7c9623f1e2870498086f37ebbaff009d677c7..37f798fb60ba069f89bc011466db4c350dcc2c84 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Determine if curl-config --protocols/--features matches the
 # curl --version protocols/features
index 573834baf6a326596641ee8d64858c27f7258571..7339bb4ed6081c93a3965e6dbcff4c7c47a32682 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Determine if curl-config --version matches the curl --version
 if ( $#ARGV != 2 )
index b5da4ffaa01ba6668159d07cbabb853101ff34e3..688d934467b505e6a17054fcfc4322f037b9df52 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Determine if the given curl executable supports the 'openssl' SSL engine
 if ( $#ARGV != 0 )
index a3ac8c6eaef2de8b913eb69075f616945719ec91..86c95b8901d73684254336902cfb84a921b54cde 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Perform simple file and directory manipulation in a portable way
 if ( $#ARGV <= 0 )
index 368d7beb21edb3020876307aba90e8999433596f..8d97ed9f7f6e814d03e2b921094c518fcdb1c67a 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 # Prepare a directory with known files and clean up afterwards
 use Time::Local;
index d17136548e1c8bc04ceb1c9572de0a4e4aa655ff..6f0ae4ade31e5cf87e1b47eef3df6dd0494ee459 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
index f715ef540a8db71b15c924d3f749c04348a69ec0..b0773dc8dac24e66031f87e0ed1128703c7c8c20 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 struct libtest_trace_cfg {
index a37a1b1b895c71d8fb85e5bf098fb035605ae8bc..a46e0f9fc1340081b47cf7958094c0d4935ec526 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 #include <curl/curl.h>
index e766ad4a0e6df304a7f583ba4068e30341db03f0..94550fc01499ca4ef3b3dd40b74c7ecd48d1df23 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * 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"
 
index 219c4a46324596ff7b84f3bd85f55520644c38b5..040d5177ed978c797e67d76d98e71fa53d6cadf8 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2016 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # Scan symbols-in-version (which is verified to be correct by test 1119), then
@@ -146,6 +148,7 @@ my %opts = (
     '--no-sessionid' => 1,
     '--no-keepalive' => 1,
     '--no-progress-meter' => 1,
+    '--no-clobber' => 1,
 
     # pretend these options without -no exist in curl.1 and tool_listhelp.c
     '--alpn' => 6,
@@ -156,8 +159,9 @@ my %opts = (
     '-N, --buffer' => 6,
     '--sessionid' => 6,
     '--progress-meter' => 6,
+    '--clobber' => 6,
 
-    # deprecated options do not need to be in tool_listhelp.c nor curl.1
+    # deprecated options do not need to be in tool_help.c nor curl.1
     '--krb4' => 6,
     '--ftp-ssl' => 6,
     '--ftp-ssl-reqd' => 6,
index 22d93e5d199271d4d260336f4988f074d0bd1c52..a83223d94d8563bd6af7b1d0c5d6046c905fc835 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2019 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # Scan man page(s) and detect some simple and yet common formatting mistakes.
@@ -60,12 +62,29 @@ my @funcorder = (
 my %shline; # section => line number
 
 my %symbol;
+
+# some CURLINFO_ symbols are not actual options for curl_easy_getinfo,
+# mark them as "deprecated" to hide them from link-warnings
+my %deprecated = (
+    CURLINFO_TEXT => 1,
+    CURLINFO_HEADER_IN => 1,
+    CURLINFO_HEADER_OUT => 1,
+    CURLINFO_DATA_IN => 1,
+    CURLINFO_DATA_OUT => 1,
+    CURLINFO_SSL_DATA_IN => 1,
+    CURLINFO_SSL_DATA_OUT => 1,
+    );
 sub allsymbols {
     open(F, "<$symbolsinversions") ||
         die "$symbolsinversions: $|";
     while(<F>) {
-        if($_ =~ /^([^ ]*)/) {
-            $symbol{$1}=$1;
+        if($_ =~ /^([^ ]*) +(.*)/) {
+            my ($name, $info) = ($1, $2);
+            $symbol{$name}=$name;
+
+            if($info =~ /([0-9.]+) +([0-9.]+)/) {
+                $deprecated{$name}=$info;
+            }
         }
     }
     close(F);
@@ -81,6 +100,7 @@ sub scanmanpage {
     my $shc = 0;
     my $optpage = 0; # option or function
     my @sh;
+    my $SH="";
 
     open(M, "<$file") || die "no such file: $file";
     if($file =~ /[\/\\](CURL|curl_)[^\/\\]*.3/) {
@@ -129,6 +149,7 @@ sub scanmanpage {
             $n =~ s/\"(.*)\"\z/$1/;
             push @sh, $n;
             $shline{$n} = $line;
+            $SH = $n;
         }
 
         if($_ =~ /^\'/) {
@@ -142,6 +163,27 @@ sub scanmanpage {
                 $errors++;
             }
         }
+        if($_ =~ /(.*)\\f([^BIP])/) {
+            my ($pre, $format) = ($1, $2);
+            if($pre !~ /\\\z/) {
+                # only if there wasn't another backslash before the \f
+                print STDERR "$file:$line suspicious \\f format!\n";
+                $errors++;
+            }
+        }
+        if($optpage && $SH && ($SH !~ /^(SYNOPSIS|EXAMPLE|NAME|SEE ALSO)/i) &&
+           ($_ =~ /(.*)(CURL(OPT_|MOPT_|INFO_)[A-Z0-9_]*)/)) {
+            # an option with its own man page, check that it is tagged
+            # for linking
+            my ($pref, $symbol) = ($1, $2);
+            if($deprecated{$symbol}) {
+                # let it be
+            }
+            elsif($pref !~ /\\fI\z/) {
+                print STDERR "$file:$line option $symbol missing \\fI tagging\n";
+                $errors++;
+            }
+        }
         if($_ =~ /[ \t]+$/) {
             print STDERR "$file:$line trailing whitespace\n";
             $errors++;
diff --git a/tests/markdown-uppercase.pl b/tests/markdown-uppercase.pl
new file mode 100644 (file)
index 0000000..fe298d4
--- /dev/null
@@ -0,0 +1,100 @@
+#!/usr/bin/env perl
+#***************************************************************************
+#                                  _   _ ____  _
+#  Project                     ___| | | |  _ \| |
+#                             / __| | | | |_) | |
+#                            | (__| |_| |  _ <| |___
+#                             \___|\___/|_| \_\_____|
+#
+# Copyright (C) 2016 - 2022, 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
+#
+###########################################################################
+
+my $root=$ARGV[0] || "..";
+
+my @m = `git ls-files -- $root`;
+
+my $errors;
+
+my %accepted=('curl' => 1,
+              'libcurl' => 1);
+
+sub checkfile {
+    my ($f) = @_;
+    chomp $f;
+    if($f !~ /\.md\z/) {
+        return;
+    }
+    open(F, "<$f");
+    my $l = 1;
+    my $prevl;
+    my $ignore = 0;
+    while(<F>) {
+        my $line = $_;
+        chomp $line;
+        if($line =~ /^(\`\`\`|\~\~\~)/) {
+            # start or stop ignore-mode
+            $ignore ^= 1;
+        }
+        if(!$ignore) {
+            if(($prevl =~ /\.\z/) && ($line =~ /^( *)([a-z]+)/)) {
+                my ($prefix, $word) = ($1, $2);
+                if(!$accepted{$word}) {
+                    my $c = length($prefix);
+                    print STDERR
+                        "$f:$l:$c:error: lowercase $word after period\n";
+                    print STDERR "$line\n";
+                    print STDERR ' ' x $c;
+                    print STDERR "^\n";
+                    $errors++;
+                }
+            }
+            elsif($line =~ /^(.*)\. +([a-z]+)/) {
+                my ($prefix, $word) = ($1, $2);
+
+                if(($prefix =~ /\.\.\z/) ||
+                   ($prefix =~ /[0-9]\z/) ||
+                   ($prefix =~ /e.g\z/) ||
+                   ($prefix =~ /i.e\z/) ||
+                   ($prefix =~ /etc\z/) ||
+                   $accepted{$word}) {
+                }
+                else {
+                    my $c = length($prefix) + 2;
+                    print STDERR
+                        "$f:$l:$c:error: lowercase $word after period\n";
+                    print STDERR "$line\n";
+                    print STDERR ' ' x $c;
+                    print STDERR "^\n";
+                    $errors++;
+                }
+            }
+        }
+        $prevl = $line;
+        $l++;
+    }
+    close(F);
+}
+
+
+for my $f (@m) {
+    checkfile($f);
+}
+
+if($errors) {
+    exit 1;
+}
+print "ok\n";
index 44c261b9cc73a1122e99bc7879c924d45c264a35..52b8155dcc201e8f221f000929923eed45914ef6 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # This script scans C source files. If they seem to use memory functions,
index 714594a17333f1bba25031861e847ffdef0d7a27..ee344f73310ad59733cfeaf1399d5da4704d1180 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # Example input:
@@ -56,7 +58,8 @@ while(1) {
     }
 }
 
-my $maxmem;
+my $memsum; # the total number of memory allocated over the lifetime
+my $maxmem; # the high water mark
 
 sub newtotal {
     my ($newtot)=@_;
@@ -150,6 +153,7 @@ while(<FILE>) {
 
             $sizeataddr{$addr}=$size;
             $totalmem += $size;
+            $memsum += $size;
 
             if($trace) {
                 print "MALLOC: malloc($size) at $source:$linenum",
@@ -175,6 +179,7 @@ while(<FILE>) {
 
             $sizeataddr{$addr}=$size;
             $totalmem += $size;
+            $memsum += $size;
 
             if($trace) {
                 print "CALLOC: calloc($arg1,$arg2) at $source:$linenum",
@@ -196,6 +201,7 @@ while(<FILE>) {
             $sizeataddr{$oldaddr}=0;
 
             $totalmem += $newsize;
+            $memsum += $size;
             $sizeataddr{$newaddr}=$newsize;
 
             if($trace) {
@@ -218,6 +224,7 @@ while(<FILE>) {
             $sizeataddr{$addr}=$size;
 
             $totalmem += $size;
+            $memsum += $size;
 
             if($trace) {
                 printf("STRDUP: $size bytes at %s, makes totally: %d bytes\n",
@@ -237,6 +244,7 @@ while(<FILE>) {
             $sizeataddr{$addr}=$size;
 
             $totalmem += $size;
+            $memsum += $size;
 
             if($trace) {
                 printf("WCSDUP: $size bytes at %s, makes totally: %d bytes\n",
@@ -422,4 +430,5 @@ if($verbose) {
         "Operations: ".($mallocs + $callocs + $reallocs + $strdups + $wcsdups + $sends + $recvs + $sockets)."\n";
 
     print "Maximum allocated: $maxmem\n";
+    print "Total allocated: $memsum\n";
 }
index 4f80e3dd7c753964b9564ac1a9c36d5437ffba88..2b748aff3d9fbae59a800f5df489337f37ab2706 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 """ A telnet server which negotiates"""
 
 from __future__ import (absolute_import, division, print_function,
index 1112783fbe2ba39043b1fbe6cfb3498f21cba694..161721ffa11c39c9d17eea18582bdeaeef21221e 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2016 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2016 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # scan nroff pages to find basic syntactic problems such as unbalanced \f
index 1a644a77e5922b8dd44964b6257f95fcc178c081..de8412307f8b5f40aef7c9e05db54dae88f69413 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 #
index e1908d0b3fb3a851e124beb3b474110c0b438db6..2c659470559f54e3920dfc739e067a9aff5be994 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2016 - 2021, Evgeny Grin (Karlson2k), <k2k@narod.ru>.
+# Copyright (C) 2016 - 2022, Evgeny Grin (Karlson2k), <k2k@narod.ru>.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # This Perl package helps with path transforming when running curl tests on
index da75ccca16aabb3522c70fd7b4dd21bace769b72..40b1bc779d6696b187f4af8293af161a39c5c534 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 BEGIN {
index 5b0694551a614e6781653586cec511525b83df2e..8ab67245b4df218ecf4776fb9739723e9a8fc0bf 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH runtests.pl 1 "June 02, 2021" "Curl 7.81.0" "runtests"
+.TH runtests.pl 1 "September 02, 2022" "Curl 7.86.0" "runtests"
 
 .SH NAME
 runtests.pl \- run one or more test cases
@@ -87,7 +89,7 @@ Keep output and log files in log/ after a test run, even if no error was
 detected. Useful for debugging.
 .IP "-L <file>"
 Load and execute the specified file which should contain perl code.
-This option allows to change \fIruntests.pl\fP behaviour by overwriting
+This option allows one to change \fIruntests.pl\fP behaviour by overwriting
 functions and variables and is useful when testing external proxies
 using curl's regression test suite.
 .IP "-l"
@@ -100,7 +102,7 @@ Useful to change variables that didn't get a dedicated flag to change them.
 Check the source to see which variables are available.
 .IP "-P <proxy>"
 Use the specified HTTP proxy when executing tests, even if the tests
-themselves don't specify a proxy. This option allows to test external
+themselves don't specify a proxy. This option allows one to test external
 proxies using curl's regression test suite.
 .IP "-p"
 Prints out all files in "log/" to stdout when a test case fails. Very
index 7ac22035b00d9e85dbe771fb596086dfb2d2d1bd..3f6197249a350b5b12ad0db83331e1c4b33795db 100755 (executable)
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # Experimental hooks are available to run tests remotely on machines that
@@ -162,6 +164,7 @@ my $SMBPORT=$noport;     # SMB server port
 my $SMBSPORT=$noport;    # SMBS server port
 my $TELNETPORT=$noport;  # TELNET server port with negotiation
 my $HTTPUNIXPATH;        # HTTP server Unix domain socket path
+my $SOCKSUNIXPATH;       # socks server Unix domain socket path
 
 my $use_external_proxy = 0;
 my $proxy_address;
@@ -172,10 +175,12 @@ my $SSHSRVSHA256 = "[uninitialized]"; # SHA256 of ssh server public key
 my $VERSION="";          # curl's reported version number
 
 my $srcdir = $ENV{'srcdir'} || '.';
-my $CURL="../src/curl".exe_ext('TOOL'); # what curl executable to run on the tests
+my $CURL="../src/curl".exe_ext('TOOL'); # what curl binary to run on the tests
 my $VCURL=$CURL;   # what curl binary to use to verify the servers with
                    # VCURL is handy to set to the system one when the one you
                    # just built hangs or crashes and thus prevent verification
+my $ACURL=$VCURL;  # what curl binary to use to talk to APIs (relevant for CI)
+                   # ACURL is handy to set to the system one for reliability
 my $DBGCURL=$CURL; #"../src/.libs/curl";  # alternative for debugging
 my $LOGDIR="log";
 my $TESTDIR="$srcdir/data";
@@ -256,6 +261,7 @@ my $has_spnego;     # set if libcurl is built with SPNEGO support
 my $has_charconv;   # set if libcurl is built with CharConv support
 my $has_tls_srp;    # set if libcurl is built with TLS-SRP support
 my $has_http2;      # set if libcurl is built with HTTP2 support
+my $has_h2c;        # set if libcurl is built with h2c support
 my $has_httpsproxy; # set if libcurl is built with HTTPS-proxy support
 my $has_crypto;     # set if libcurl is built with cryptographic support
 my $has_cares;      # set if built with c-ares
@@ -271,22 +277,25 @@ my $has_mingw;      # set if built with MinGW (as opposed to MinGW-w64)
 my $has_hyper = 0;  # set if built with Hyper
 my $has_libssh2;    # set if built with libssh2
 my $has_libssh;     # set if built with libssh
+my $has_oldlibssh;  # set if built with libssh < 0.9.4
 my $has_wolfssh;    # set if built with wolfssh
 my $has_unicode;    # set if libcurl is built with Unicode support
+my $has_threadsafe; # set if libcurl is built with thread-safety support
 
 # this version is decided by the particular nghttp2 library that is being used
 my $h2cver = "h2c";
 
+my $has_rustls;     # built with rustls
 my $has_openssl;    # built with a lib using an OpenSSL-like API
 my $has_gnutls;     # built with GnuTLS
 my $has_nss;        # built with NSS
 my $has_wolfssl;    # built with wolfSSL
+my $has_bearssl;    # built with BearSSL
 my $has_schannel;   # built with Schannel
 my $has_sectransp;  # built with Secure Transport
 my $has_boringssl;  # built with BoringSSL
 my $has_libressl;   # built with libressl
 my $has_mbedtls;    # built with mbedTLS
-my $has_mesalink;   # built with MesaLink
 
 my $has_sslpinning; # built with a TLS backend that supports pinning
 
@@ -426,6 +435,7 @@ foreach $protocol (('ftp', 'http', 'ftps', 'https', 'no', 'all')) {
 
 delete $ENV{'SSL_CERT_DIR'} if($ENV{'SSL_CERT_DIR'});
 delete $ENV{'SSL_CERT_PATH'} if($ENV{'SSL_CERT_PATH'});
+delete $ENV{'DEBUGINFOD_URLS'} if($ENV{'DEBUGINFOD_URLS'});
 delete $ENV{'CURL_CA_BUNDLE'} if($ENV{'CURL_CA_BUNDLE'});
 
 #######################################################################
@@ -585,9 +595,11 @@ sub checkcmd {
 #######################################################################
 # Get the list of tests that the tests/data/Makefile.am knows about!
 #
-my $disttests;
+my $disttests = "";
 sub get_disttests {
-    open(D, "<$TESTDIR/Makefile.inc");
+    # If a non-default $TESTDIR is being used there may not be any
+    # Makefile.inc in which case there's nothing to do.
+    open(D, "<$TESTDIR/Makefile.inc") or return;
     while(<D>) {
         chomp $_;
         if(($_ =~ /^#/) ||($_ !~ /test/)) {
@@ -665,7 +677,7 @@ sub torture {
     my @ttests = (1 .. $count);
     if($shallow && ($shallow < $count)) {
         my $discard = scalar(@ttests) - $shallow;
-        my $percent = sprintf("%.2f%%", $shallow * 100 / scalar(@ttests));;
+        my $percent = sprintf("%.2f%%", $shallow * 100 / scalar(@ttests));
         logmsg " $count functions found, but only fail $shallow ($percent)\n";
         while($discard) {
             my $rm;
@@ -1429,6 +1441,7 @@ my %protofunc = ('http' => \&verifyhttp,
                  'tftp' => \&verifyftp,
                  'ssh' => \&verifyssh,
                  'socks' => \&verifysocks,
+                 'socks5unix' => \&verifysocks,
                  'gopher' => \&verifyhttp,
                  'httptls' => \&verifyhttptls,
                  'dict' => \&verifyftp,
@@ -2185,6 +2198,11 @@ sub runsshserver {
     my $logfile;
     my $port = 20000; # no lower port
 
+    if(!$USER) {
+        logmsg "Can't start ssh server due to lack of USER name";
+        return (0,0,0);
+    }
+
     $server = servername_id($proto, $ipvnum, $idnum);
 
     $pidfile = $serverpidfile{$server};
@@ -2373,7 +2391,7 @@ sub runmqttserver {
 # Start the socks server
 #
 sub runsocksserver {
-    my ($id, $verbose, $ipv6) = @_;
+    my ($id, $verbose, $ipv6, $is_unix) = @_;
     my $ip=$HOSTIP;
     my $proto = 'socks';
     my $ipvnum = 4;
@@ -2405,12 +2423,21 @@ sub runsocksserver {
     $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum);
 
     # start our socks server, get commands from the FTP cmd file
-    my $cmd="server/socksd".exe_ext('SRV').
-        " --port 0 ".
-        " --pidfile $pidfile".
-        " --portfile $portfile".
-        " --backend $HOSTIP".
-        " --config $FTPDCMD";
+    my $cmd="";
+    if($is_unix) {
+        $cmd="server/socksd".exe_ext('SRV').
+            " --pidfile $pidfile".
+            " --unix-socket $SOCKSUNIXPATH".
+            " --backend $HOSTIP".
+            " --config $FTPDCMD";
+    } else {
+        $cmd="server/socksd".exe_ext('SRV').
+            " --port 0 ".
+            " --pidfile $pidfile".
+            " --portfile $portfile".
+            " --backend $HOSTIP".
+            " --config $FTPDCMD";
+    }
     my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0);
 
     if($sockspid <= 0 || !pidexists($sockspid)) {
@@ -2860,35 +2887,38 @@ sub compare {
 }
 
 sub setupfeatures {
-    $feature{"hyper"} = $has_hyper;
-    $feature{"c-ares"} = $has_cares;
     $feature{"alt-svc"} = $has_altsvc;
-    $feature{"HSTS"} = $has_hsts;
+    $feature{"bearssl"} = $has_bearssl;
     $feature{"brotli"} = $has_brotli;
+    $feature{"c-ares"} = $has_cares;
     $feature{"crypto"} = $has_crypto;
     $feature{"debug"} = $debug_build;
     $feature{"getrlimit"} = $has_getrlimit;
     $feature{"GnuTLS"} = $has_gnutls;
     $feature{"GSS-API"} = $has_gssapi;
+    $feature{"h2c"} = $has_h2c;
+    $feature{"HSTS"} = $has_hsts;
     $feature{"http/2"} = $has_http2;
     $feature{"https-proxy"} = $has_httpsproxy;
+    $feature{"hyper"} = $has_hyper;
     $feature{"idn"} = $has_idn;
     $feature{"ipv6"} = $has_ipv6;
     $feature{"Kerberos"} = $has_kerberos;
     $feature{"large_file"} = $has_largefile;
     $feature{"ld_preload"} = ($has_ldpreload && !$debug_build);
-    $feature{"libz"} = $has_libz;
-    $feature{"libssh2"} = $has_libssh2;
     $feature{"libssh"} = $has_libssh;
-    $feature{"wolfssh"} = $has_wolfssh;
+    $feature{"libssh2"} = $has_libssh2;
+    $feature{"libz"} = $has_libz;
     $feature{"manual"} = $has_manual;
     $feature{"MinGW"} = $has_mingw;
     $feature{"MultiSSL"} = $has_multissl;
     $feature{"NSS"} = $has_nss;
     $feature{"NTLM"} = $has_ntlm;
     $feature{"NTLM_WB"} = $has_ntlm_wb;
+    $feature{"oldlibssh"} = $has_oldlibssh;
     $feature{"OpenSSL"} = $has_openssl || $has_libressl || $has_boringssl;
     $feature{"PSL"} = $has_psl;
+    $feature{"rustls"} = $has_rustls;
     $feature{"Schannel"} = $has_schannel;
     $feature{"sectransp"} = $has_sectransp;
     $feature{"SPNEGO"} = $has_spnego;
@@ -2896,12 +2926,15 @@ sub setupfeatures {
     $feature{"SSLpinning"} = $has_sslpinning;
     $feature{"SSPI"} = $has_sspi;
     $feature{"threaded-resolver"} = $has_threadedres;
+    $feature{"threadsafe"} = $has_threadsafe;
     $feature{"TLS-SRP"} = $has_tls_srp;
     $feature{"TrackMemory"} = $has_memory_tracking;
     $feature{"Unicode"} = $has_unicode;
     $feature{"unittest"} = $debug_build;
     $feature{"unix-sockets"} = $has_unix;
     $feature{"win32"} = $has_win32;
+    $feature{"wolfssh"} = $has_wolfssh;
+    $feature{"wolfssl"} = $has_wolfssl;
     $feature{"zstd"} = $has_zstd;
 
     # make each protocol an enabled "feature"
@@ -2924,7 +2957,8 @@ sub setupfeatures {
     $feature{"typecheck"} = 1;
     $feature{"verbose-strings"} = 1;
     $feature{"wakeup"} = 1;
-
+    $feature{"headers-api"} = 1;
+    $feature{"xattr"} = 1;
 }
 
 #######################################################################
@@ -2999,6 +3033,9 @@ sub checksystem {
                $has_gnutls=1;
                $has_sslpinning=1;
            }
+           elsif ($libcurl =~ /rustls-ffi/i) {
+               $has_rustls=1;
+           }
            elsif ($libcurl =~ /nss/i) {
                $has_nss=1;
                $has_sslpinning=1;
@@ -3007,6 +3044,9 @@ sub checksystem {
                $has_wolfssl=1;
                $has_sslpinning=1;
            }
+           elsif ($libcurl =~ /bearssl/i) {
+               $has_bearssl=1;
+           }
            elsif ($libcurl =~ /securetransport/i) {
                $has_sectransp=1;
                $has_sslpinning=1;
@@ -3027,17 +3067,25 @@ sub checksystem {
                $has_cares=1;
                $resolver="c-ares";
            }
-           if ($libcurl =~ /mesalink/i) {
-               $has_mesalink=1;
-           }
            if ($libcurl =~ /Hyper/i) {
                $has_hyper=1;
            }
+            if ($libcurl =~ /nghttp2/i) {
+                # nghttp2 supports h2c, hyper does not
+                $has_h2c=1;
+            }
             if ($libcurl =~ /libssh2/i) {
                 $has_libssh2=1;
             }
-            if ($libcurl =~ /libssh\//i) {
+            if ($libcurl =~ /libssh\/([0-9.]*)\//i) {
                 $has_libssh=1;
+                if($1 =~ /(\d+)\.(\d+).(\d+)/) {
+                    my $v = $1 * 100 + $2 * 10 + $3;
+                    if($v < 94) {
+                        # before 0.9.4
+                        $has_oldlibssh = 1;
+                    }
+                }
             }
             if ($libcurl =~ /wolfssh/i) {
                 $has_wolfssh=1;
@@ -3174,6 +3222,9 @@ sub checksystem {
             if($feat =~ /Unicode/i) {
                 $has_unicode = 1;
             }
+            if($feat =~ /threadsafe/i) {
+                $has_threadsafe = 1;
+            }
         }
         #
         # Test harness currently uses a non-stunnel server in order to
@@ -3311,6 +3362,7 @@ sub checksystem {
             logmsg "* Unix socket paths:\n";
             if($http_unix) {
                 logmsg sprintf("*   HTTP-Unix:%s\n", $HTTPUNIXPATH);
+                logmsg sprintf("*   Socks-Unix:%s\n", $SOCKSUNIXPATH);
             }
         }
     }
@@ -3371,6 +3423,7 @@ sub subVariables {
 
     # server Unix domain socket paths
     $$thing =~ s/${prefix}HTTPUNIXPATH/$HTTPUNIXPATH/g;
+    $$thing =~ s/${prefix}SOCKSUNIXPATH/$SOCKSUNIXPATH/g;
 
     # client IP addresses
     $$thing =~ s/${prefix}CLIENT6IP/$CLIENT6IP/g;
@@ -3738,10 +3791,10 @@ sub singletest {
 
     # create test result in CI services
     if(azure_check_environment() && $AZURE_RUN_ID) {
-        $AZURE_RESULT_ID = azure_create_test_result($VCURL, $AZURE_RUN_ID, $testnum, $testname);
+        $AZURE_RESULT_ID = azure_create_test_result($ACURL, $AZURE_RUN_ID, $testnum, $testname);
     }
     elsif(appveyor_check_environment()) {
-        appveyor_create_test_result($VCURL, $testnum, $testname);
+        appveyor_create_test_result($ACURL, $testnum, $testname);
     }
 
     # remove test server commands file before servers are started/verified
@@ -3763,7 +3816,9 @@ sub singletest {
 
     # save the new version
     open(D, ">$otest");
-    print D @entiretest;
+    foreach my $bytes (@entiretest) {
+        print D pack('a*', $bytes) or die "Failed to print '$bytes': $!";
+    }
     close(D);
 
     # in case the process changed the file, reload it
@@ -3881,6 +3936,13 @@ sub singletest {
     else {
         # check against the data section
         @reply = getpart("reply", "data");
+        if(@reply) {
+            my %hash = getpartattr("reply", "data");
+            if($hash{'nonewline'}) {
+                # cut off the final newline from the final line of the data
+                chomp($reply[$#reply]);
+            }
+        }
         # get the mode attribute
         my $filemode=$replyattr{'mode'};
         if($filemode && ($filemode eq "text") && $has_textaware) {
@@ -3974,6 +4036,20 @@ sub singletest {
                 return -1;
             }
             my $fileContent = join('', @inputfile);
+
+            # make directories if needed
+            my $path = $filename;
+            # cut off the file name part
+            $path =~ s/^(.*)\/[^\/]*/$1/;
+            my @parts = split(/\//, $path);
+            if($parts[0] eq "log") {
+                # the file is in log/
+                my $d = shift @parts;
+                for(@parts) {
+                    $d .= "/$_";
+                    mkdir $d; # 0777
+                }
+            }
             open(OUTFILE, ">$filename");
             binmode OUTFILE; # for crapage systems, use binary
             if($fileattr{'nonewline'}) {
@@ -4079,6 +4155,12 @@ sub singletest {
         $DBGCURL=$CMDLINE;
     }
 
+    if($fail_due_event_based) {
+        logmsg "This test cannot run event based\n";
+        timestampskippedevents($testnum);
+        return -1;
+    }
+
     if($gdbthis) {
         # gdb is incompatible with valgrind, so disable it when debugging
         # Perhaps a better approach would be to run it under valgrind anyway
@@ -4086,11 +4168,6 @@ sub singletest {
         $disablevalgrind=1;
     }
 
-    if($fail_due_event_based) {
-        logmsg "This test cannot run event based\n";
-        return -1;
-    }
-
     my @stdintest = getpart("client", "stdin");
 
     if(@stdintest) {
@@ -5224,6 +5301,16 @@ sub startservers {
                 $run{'socks'}="$pid $pid2";
             }
         }
+        elsif($what eq "socks5unix") {
+            if(!$run{'socks5unix'}) {
+                ($pid, $pid2) = runsocksserver("2", $verbose, "", "unix");
+                if($pid <= 0) {
+                    return "failed starting socks5unix server";
+                }
+                printf ("* pid socks5unix => %d %d\n", $pid, $pid2) if($verbose);
+                $run{'socks5unix'}="$pid $pid2";
+            }
+        }
         elsif($what eq "mqtt" ) {
             if(!$run{'mqtt'}) {
                 ($pid, $pid2) = runmqttserver("", $verbose);
@@ -5513,6 +5600,11 @@ while(@ARGV) {
         $VCURL="\"$ARGV[1]\"";
         shift @ARGV;
     }
+    elsif ($ARGV[0] eq "-ac") {
+        # use this curl only to talk to APIs (currently only CI test APIs)
+        $ACURL="\"$ARGV[1]\"";
+        shift @ARGV;
+    }
     elsif ($ARGV[0] eq "-d") {
         # have the servers display protocol output
         $debugprotocol=1;
@@ -5671,6 +5763,7 @@ while(@ARGV) {
         print <<EOHELP
 Usage: runtests.pl [options] [test selection(s)]
   -a       continue even if a test fails
+  -ac path use this curl only to talk to APIs (currently only CI test APIs)
   -am      automake style output PASS/FAIL: [number] [name]
   -c path  use this curl executable
   -d       display server debug info
@@ -5691,6 +5784,7 @@ Usage: runtests.pl [options] [test selection(s)]
   -r       run time statistics
   -rf      full run time statistics
   -rm      force removal of files by killing locking processes (Windows only)
+  --repeat=[num] run the given tests this many times
   -s       short output
   --seed=[num] set the random seed to a fixed number
   --shallow=[num] randomly makes the torture tests "thinner"
@@ -5818,6 +5912,7 @@ if ($gdbthis) {
 }
 
 $HTTPUNIXPATH    = "http$$.sock"; # HTTP server Unix domain socket path
+$SOCKSUNIXPATH    = $pwd."/socks$$.sock"; # HTTP server Unix domain socket path, absolute path
 
 #######################################################################
 # clear and create logging directory:
@@ -6053,7 +6148,7 @@ sub displaylogs {
 #
 
 if(azure_check_environment()) {
-    $AZURE_RUN_ID = azure_create_test_run($VCURL);
+    $AZURE_RUN_ID = azure_create_test_run($ACURL);
     logmsg "Azure Run ID: $AZURE_RUN_ID\n" if ($verbose);
 }
 
@@ -6082,11 +6177,11 @@ foreach $testnum (@at) {
 
     # update test result in CI services
     if(azure_check_environment() && $AZURE_RUN_ID && $AZURE_RESULT_ID) {
-        $AZURE_RESULT_ID = azure_update_test_result($VCURL, $AZURE_RUN_ID, $AZURE_RESULT_ID, $testnum, $error,
+        $AZURE_RESULT_ID = azure_update_test_result($ACURL, $AZURE_RUN_ID, $AZURE_RESULT_ID, $testnum, $error,
                                                     $timeprepini{$testnum}, $timevrfyend{$testnum});
     }
     elsif(appveyor_check_environment()) {
-        appveyor_update_test_result($VCURL, $testnum, $error, $timeprepini{$testnum}, $timevrfyend{$testnum});
+        appveyor_update_test_result($ACURL, $testnum, $error, $timeprepini{$testnum}, $timevrfyend{$testnum});
     }
 
     if($error < 0) {
@@ -6131,7 +6226,7 @@ my $sofar = time() - $start;
 #
 
 if(azure_check_environment() && $AZURE_RUN_ID) {
-    $AZURE_RUN_ID = azure_update_test_run($VCURL, $AZURE_RUN_ID);
+    $AZURE_RUN_ID = azure_update_test_run($ACURL, $AZURE_RUN_ID);
 }
 
 # Tests done, stop the servers
@@ -6149,7 +6244,7 @@ if($all) {
 if($skipped && !$short) {
     my $s=0;
     # Temporary hash to print the restraints sorted by the number
-    # of their occurences
+    # of their occurrences
     my %restraints;
     logmsg "TESTINFO: $skipped tests were skipped due to these restraints:\n";
 
@@ -6191,7 +6286,7 @@ if($total) {
     logmsg sprintf("TESTDONE: $ok tests out of $total reported OK: %d%%\n",
                    $ok/$total*100);
 
-    if($ok != $total) {
+    if($failed && ($ok != $total)) {
         logmsg "\nTESTFAIL: These test cases failed: $failed\n\n";
     }
 }
index 90a9a973393ae8fdb938a4764da07f26d1cfbd98..3d2ab1531cf6a0d0a995d0a5d92e656bbfac49fc 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # This is the HTTPS, FTPS, POP3S, IMAPS, SMTPS, server used for curl test
index 8e4806b5dae41af6c20b7d8ee4e924b910474884..bad6edf4df2f2d031626ea119ed0b02c174d4e06 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 set(TARGET_LABEL_PREFIX "Test server ")
 
@@ -34,6 +36,7 @@ function(SETUP_EXECUTABLE TEST_NAME)    # ARGN are the files in the test
     ${CURL_SOURCE_DIR}/lib      # To be able to reach "curl_setup_once.h"
     ${CURL_BINARY_DIR}/lib      # To be able to reach "curl_config.h"
     ${CURL_BINARY_DIR}/include  # To be able to reach "curl/curl.h"
+    ${CURL_SOURCE_DIR}/src      # To be able to reach "tool_xattr.h"
     )
   if(USE_ARES)
     include_directories(${CARES_INCLUDE_DIR})
index 944cd02958af1bc6d5ac64b16b0665b2b6fcc11f..45ccf231d8ba2f7aa5395b577950b5cbbee9bd42 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
@@ -29,20 +31,13 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
 
-if USE_EMBEDDED_ARES
-AM_CPPFLAGS = -I$(top_srcdir)/include        \
-              -I$(top_builddir)/lib          \
-              -I$(top_srcdir)/lib            \
-              -I$(top_builddir)/ares         \
-              -I$(top_srcdir)/ares
-else
 AM_CPPFLAGS = -I$(top_srcdir)/include        \
               -I$(top_builddir)/lib          \
               -I$(top_srcdir)/lib
-endif
+
+disabled_CPPFLAGS = $(AM_CPPFLAGS) \
+              -I$(top_srcdir)/src
 
 # Prevent LIBS from being used for all link targets
 LIBS = $(BLANK_AT_MAKETIME)
@@ -62,7 +57,7 @@ CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
 
 if CURLDEBUG
 # for debug builds, we scan the sources on all regular make invokes
index 71831852038e09670e2d2cbf0d743c05da3debf6..c51dcea9d82d81247add4faa12fdec59562dd2c8 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 VPATH = @srcdir@
@@ -117,15 +119,13 @@ noinst_PROGRAMS = getpart$(EXEEXT) resolve$(EXEEXT) rtspd$(EXEEXT) \
        mqttd$(EXEEXT)
 subdir = tests/server
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -153,7 +153,7 @@ CONFIG_HEADER = $(top_builddir)/lib/curl_config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-am_disabled_OBJECTS = disabled.$(OBJEXT)
+am_disabled_OBJECTS = disabled-disabled.$(OBJEXT)
 disabled_OBJECTS = $(am_disabled_OBJECTS)
 disabled_LDADD = $(LDADD)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -165,7 +165,7 @@ am__objects_1 = ../../lib/fake_ntlm-mprintf.$(OBJEXT) \
        ../../lib/fake_ntlm-nonblock.$(OBJEXT) \
        ../../lib/fake_ntlm-strtoofft.$(OBJEXT) \
        ../../lib/fake_ntlm-warnless.$(OBJEXT) \
-       ../../lib/fake_ntlm-curl_ctype.$(OBJEXT) \
+       ../../lib/fake_ntlm-timediff.$(OBJEXT) \
        ../../lib/fake_ntlm-dynbuf.$(OBJEXT) \
        ../../lib/fake_ntlm-strdup.$(OBJEXT) \
        ../../lib/fake_ntlm-curl_multibyte.$(OBJEXT)
@@ -186,7 +186,7 @@ am__objects_5 = ../../lib/getpart-mprintf.$(OBJEXT) \
        ../../lib/getpart-nonblock.$(OBJEXT) \
        ../../lib/getpart-strtoofft.$(OBJEXT) \
        ../../lib/getpart-warnless.$(OBJEXT) \
-       ../../lib/getpart-curl_ctype.$(OBJEXT) \
+       ../../lib/getpart-timediff.$(OBJEXT) \
        ../../lib/getpart-dynbuf.$(OBJEXT) \
        ../../lib/getpart-strdup.$(OBJEXT) \
        ../../lib/getpart-curl_multibyte.$(OBJEXT)
@@ -204,7 +204,7 @@ am__objects_7 = ../../lib/mqttd-mprintf.$(OBJEXT) \
        ../../lib/mqttd-nonblock.$(OBJEXT) \
        ../../lib/mqttd-strtoofft.$(OBJEXT) \
        ../../lib/mqttd-warnless.$(OBJEXT) \
-       ../../lib/mqttd-curl_ctype.$(OBJEXT) \
+       ../../lib/mqttd-timediff.$(OBJEXT) \
        ../../lib/mqttd-dynbuf.$(OBJEXT) \
        ../../lib/mqttd-strdup.$(OBJEXT) \
        ../../lib/mqttd-curl_multibyte.$(OBJEXT)
@@ -224,7 +224,7 @@ am__objects_10 = ../../lib/resolve-mprintf.$(OBJEXT) \
        ../../lib/resolve-nonblock.$(OBJEXT) \
        ../../lib/resolve-strtoofft.$(OBJEXT) \
        ../../lib/resolve-warnless.$(OBJEXT) \
-       ../../lib/resolve-curl_ctype.$(OBJEXT) \
+       ../../lib/resolve-timediff.$(OBJEXT) \
        ../../lib/resolve-dynbuf.$(OBJEXT) \
        ../../lib/resolve-strdup.$(OBJEXT) \
        ../../lib/resolve-curl_multibyte.$(OBJEXT)
@@ -243,7 +243,7 @@ am__objects_13 = ../../lib/rtspd-mprintf.$(OBJEXT) \
        ../../lib/rtspd-nonblock.$(OBJEXT) \
        ../../lib/rtspd-strtoofft.$(OBJEXT) \
        ../../lib/rtspd-warnless.$(OBJEXT) \
-       ../../lib/rtspd-curl_ctype.$(OBJEXT) \
+       ../../lib/rtspd-timediff.$(OBJEXT) \
        ../../lib/rtspd-dynbuf.$(OBJEXT) \
        ../../lib/rtspd-strdup.$(OBJEXT) \
        ../../lib/rtspd-curl_multibyte.$(OBJEXT)
@@ -262,7 +262,7 @@ am__objects_16 = ../../lib/sockfilt-mprintf.$(OBJEXT) \
        ../../lib/sockfilt-nonblock.$(OBJEXT) \
        ../../lib/sockfilt-strtoofft.$(OBJEXT) \
        ../../lib/sockfilt-warnless.$(OBJEXT) \
-       ../../lib/sockfilt-curl_ctype.$(OBJEXT) \
+       ../../lib/sockfilt-timediff.$(OBJEXT) \
        ../../lib/sockfilt-dynbuf.$(OBJEXT) \
        ../../lib/sockfilt-strdup.$(OBJEXT) \
        ../../lib/sockfilt-curl_multibyte.$(OBJEXT)
@@ -283,7 +283,7 @@ am__objects_19 = ../../lib/socksd-mprintf.$(OBJEXT) \
        ../../lib/socksd-nonblock.$(OBJEXT) \
        ../../lib/socksd-strtoofft.$(OBJEXT) \
        ../../lib/socksd-warnless.$(OBJEXT) \
-       ../../lib/socksd-curl_ctype.$(OBJEXT) \
+       ../../lib/socksd-timediff.$(OBJEXT) \
        ../../lib/socksd-dynbuf.$(OBJEXT) \
        ../../lib/socksd-strdup.$(OBJEXT) \
        ../../lib/socksd-curl_multibyte.$(OBJEXT)
@@ -303,7 +303,7 @@ am__objects_22 = ../../lib/sws-mprintf.$(OBJEXT) \
        ../../lib/sws-nonblock.$(OBJEXT) \
        ../../lib/sws-strtoofft.$(OBJEXT) \
        ../../lib/sws-warnless.$(OBJEXT) \
-       ../../lib/sws-curl_ctype.$(OBJEXT) \
+       ../../lib/sws-timediff.$(OBJEXT) \
        ../../lib/sws-dynbuf.$(OBJEXT) ../../lib/sws-strdup.$(OBJEXT) \
        ../../lib/sws-curl_multibyte.$(OBJEXT)
 am__objects_23 = sws-getpart.$(OBJEXT) ../../lib/sws-base64.$(OBJEXT) \
@@ -321,7 +321,7 @@ am__objects_25 = ../../lib/tftpd-mprintf.$(OBJEXT) \
        ../../lib/tftpd-nonblock.$(OBJEXT) \
        ../../lib/tftpd-strtoofft.$(OBJEXT) \
        ../../lib/tftpd-warnless.$(OBJEXT) \
-       ../../lib/tftpd-curl_ctype.$(OBJEXT) \
+       ../../lib/tftpd-timediff.$(OBJEXT) \
        ../../lib/tftpd-dynbuf.$(OBJEXT) \
        ../../lib/tftpd-strdup.$(OBJEXT) \
        ../../lib/tftpd-curl_multibyte.$(OBJEXT)
@@ -352,7 +352,6 @@ DEFAULT_INCLUDES =
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__maybe_remake_depfiles = depfiles
 am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
-       ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po \
@@ -360,9 +359,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-strdup.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po \
+       ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po \
        ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po \
        ../../lib/$(DEPDIR)/getpart-base64.Po \
-       ../../lib/$(DEPDIR)/getpart-curl_ctype.Po \
        ../../lib/$(DEPDIR)/getpart-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/getpart-dynbuf.Po \
        ../../lib/$(DEPDIR)/getpart-memdebug.Po \
@@ -370,9 +369,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/getpart-nonblock.Po \
        ../../lib/$(DEPDIR)/getpart-strdup.Po \
        ../../lib/$(DEPDIR)/getpart-strtoofft.Po \
+       ../../lib/$(DEPDIR)/getpart-timediff.Po \
        ../../lib/$(DEPDIR)/getpart-warnless.Po \
        ../../lib/$(DEPDIR)/mqttd-base64.Po \
-       ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po \
        ../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/mqttd-dynbuf.Po \
        ../../lib/$(DEPDIR)/mqttd-inet_pton.Po \
@@ -381,9 +380,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/mqttd-nonblock.Po \
        ../../lib/$(DEPDIR)/mqttd-strdup.Po \
        ../../lib/$(DEPDIR)/mqttd-strtoofft.Po \
+       ../../lib/$(DEPDIR)/mqttd-timediff.Po \
        ../../lib/$(DEPDIR)/mqttd-warnless.Po \
        ../../lib/$(DEPDIR)/resolve-base64.Po \
-       ../../lib/$(DEPDIR)/resolve-curl_ctype.Po \
        ../../lib/$(DEPDIR)/resolve-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/resolve-dynbuf.Po \
        ../../lib/$(DEPDIR)/resolve-memdebug.Po \
@@ -391,9 +390,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/resolve-nonblock.Po \
        ../../lib/$(DEPDIR)/resolve-strdup.Po \
        ../../lib/$(DEPDIR)/resolve-strtoofft.Po \
+       ../../lib/$(DEPDIR)/resolve-timediff.Po \
        ../../lib/$(DEPDIR)/resolve-warnless.Po \
        ../../lib/$(DEPDIR)/rtspd-base64.Po \
-       ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po \
        ../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/rtspd-dynbuf.Po \
        ../../lib/$(DEPDIR)/rtspd-memdebug.Po \
@@ -401,9 +400,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/rtspd-nonblock.Po \
        ../../lib/$(DEPDIR)/rtspd-strdup.Po \
        ../../lib/$(DEPDIR)/rtspd-strtoofft.Po \
+       ../../lib/$(DEPDIR)/rtspd-timediff.Po \
        ../../lib/$(DEPDIR)/rtspd-warnless.Po \
        ../../lib/$(DEPDIR)/sockfilt-base64.Po \
-       ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po \
        ../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/sockfilt-dynbuf.Po \
        ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po \
@@ -412,9 +411,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/sockfilt-nonblock.Po \
        ../../lib/$(DEPDIR)/sockfilt-strdup.Po \
        ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po \
+       ../../lib/$(DEPDIR)/sockfilt-timediff.Po \
        ../../lib/$(DEPDIR)/sockfilt-warnless.Po \
        ../../lib/$(DEPDIR)/socksd-base64.Po \
-       ../../lib/$(DEPDIR)/socksd-curl_ctype.Po \
        ../../lib/$(DEPDIR)/socksd-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/socksd-dynbuf.Po \
        ../../lib/$(DEPDIR)/socksd-inet_pton.Po \
@@ -423,9 +422,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/socksd-nonblock.Po \
        ../../lib/$(DEPDIR)/socksd-strdup.Po \
        ../../lib/$(DEPDIR)/socksd-strtoofft.Po \
+       ../../lib/$(DEPDIR)/socksd-timediff.Po \
        ../../lib/$(DEPDIR)/socksd-warnless.Po \
        ../../lib/$(DEPDIR)/sws-base64.Po \
-       ../../lib/$(DEPDIR)/sws-curl_ctype.Po \
        ../../lib/$(DEPDIR)/sws-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/sws-dynbuf.Po \
        ../../lib/$(DEPDIR)/sws-inet_pton.Po \
@@ -434,9 +433,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/sws-nonblock.Po \
        ../../lib/$(DEPDIR)/sws-strdup.Po \
        ../../lib/$(DEPDIR)/sws-strtoofft.Po \
+       ../../lib/$(DEPDIR)/sws-timediff.Po \
        ../../lib/$(DEPDIR)/sws-warnless.Po \
        ../../lib/$(DEPDIR)/tftpd-base64.Po \
-       ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po \
        ../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po \
        ../../lib/$(DEPDIR)/tftpd-dynbuf.Po \
        ../../lib/$(DEPDIR)/tftpd-memdebug.Po \
@@ -444,7 +443,9 @@ am__depfiles_remade = ../../lib/$(DEPDIR)/fake_ntlm-base64.Po \
        ../../lib/$(DEPDIR)/tftpd-nonblock.Po \
        ../../lib/$(DEPDIR)/tftpd-strdup.Po \
        ../../lib/$(DEPDIR)/tftpd-strtoofft.Po \
-       ../../lib/$(DEPDIR)/tftpd-warnless.Po ./$(DEPDIR)/disabled.Po \
+       ../../lib/$(DEPDIR)/tftpd-timediff.Po \
+       ../../lib/$(DEPDIR)/tftpd-warnless.Po \
+       ./$(DEPDIR)/disabled-disabled.Po \
        ./$(DEPDIR)/fake_ntlm-fake_ntlm.Po \
        ./$(DEPDIR)/fake_ntlm-getpart.Po ./$(DEPDIR)/fake_ntlm-util.Po \
        ./$(DEPDIR)/getpart-getpart.Po ./$(DEPDIR)/getpart-testpart.Po \
@@ -554,6 +555,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -571,6 +573,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -630,6 +633,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -648,12 +652,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -720,7 +725,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -734,7 +738,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -747,11 +751,10 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/lib $(am__append_1)
 
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
@@ -761,19 +764,17 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/ares \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/ares $(am__append_1)
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+       -I$(top_srcdir)/lib $(am__append_1)
+disabled_CPPFLAGS = $(AM_CPPFLAGS) \
+              -I$(top_srcdir)/src
+
 CURLX_SRCS = \
  ../../lib/mprintf.c \
  ../../lib/nonblock.c \
  ../../lib/strtoofft.c \
  ../../lib/warnless.c \
- ../../lib/curl_ctype.c \
+ ../../lib/timediff.c \
  ../../lib/dynbuf.c \
  ../../lib/strdup.c \
  ../../lib/curl_multibyte.c
@@ -783,6 +784,7 @@ CURLX_HDRS = \
  ../../lib/nonblock.h \
  ../../lib/strtoofft.h \
  ../../lib/warnless.h \
+ ../../lib/timediff.h \
  ../../lib/curl_ctype.h \
  ../../lib/dynbuf.h \
  ../../lib/strdup.h \
@@ -924,7 +926,7 @@ disabled$(EXEEXT): $(disabled_OBJECTS) $(disabled_DEPENDENCIES) $(EXTRA_disabled
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/fake_ntlm-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/fake_ntlm-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/fake_ntlm-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/fake_ntlm-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -948,7 +950,7 @@ fake_ntlm$(EXEEXT): $(fake_ntlm_OBJECTS) $(fake_ntlm_DEPENDENCIES) $(EXTRA_fake_
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/getpart-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/getpart-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/getpart-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/getpart-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -972,7 +974,7 @@ getpart$(EXEEXT): $(getpart_OBJECTS) $(getpart_DEPENDENCIES) $(EXTRA_getpart_DEP
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/mqttd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/mqttd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/mqttd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/mqttd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -998,7 +1000,7 @@ mqttd$(EXEEXT): $(mqttd_OBJECTS) $(mqttd_DEPENDENCIES) $(EXTRA_mqttd_DEPENDENCIE
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/resolve-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/resolve-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/resolve-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/resolve-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1022,7 +1024,7 @@ resolve$(EXEEXT): $(resolve_OBJECTS) $(resolve_DEPENDENCIES) $(EXTRA_resolve_DEP
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/rtspd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/rtspd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/rtspd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/rtspd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1046,7 +1048,7 @@ rtspd$(EXEEXT): $(rtspd_OBJECTS) $(rtspd_DEPENDENCIES) $(EXTRA_rtspd_DEPENDENCIE
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/sockfilt-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/sockfilt-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/sockfilt-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/sockfilt-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1072,7 +1074,7 @@ sockfilt$(EXEEXT): $(sockfilt_OBJECTS) $(sockfilt_DEPENDENCIES) $(EXTRA_sockfilt
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/socksd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/socksd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/socksd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/socksd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1098,7 +1100,7 @@ socksd$(EXEEXT): $(socksd_OBJECTS) $(socksd_DEPENDENCIES) $(EXTRA_socksd_DEPENDE
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/sws-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/sws-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/sws-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/sws-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1124,7 +1126,7 @@ sws$(EXEEXT): $(sws_OBJECTS) $(sws_DEPENDENCIES) $(EXTRA_sws_DEPENDENCIES)
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/tftpd-warnless.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
-../../lib/tftpd-curl_ctype.$(OBJEXT): ../../lib/$(am__dirstamp) \
+../../lib/tftpd-timediff.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
 ../../lib/tftpd-dynbuf.$(OBJEXT): ../../lib/$(am__dirstamp) \
        ../../lib/$(DEPDIR)/$(am__dirstamp)
@@ -1149,7 +1151,6 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po@am__quote@ # am--include-marker
@@ -1157,9 +1158,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/fake_ntlm-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-memdebug.Po@am__quote@ # am--include-marker
@@ -1167,9 +1168,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/getpart-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-inet_pton.Po@am__quote@ # am--include-marker
@@ -1178,9 +1179,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/mqttd-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-memdebug.Po@am__quote@ # am--include-marker
@@ -1188,9 +1189,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/resolve-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-memdebug.Po@am__quote@ # am--include-marker
@@ -1198,9 +1199,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/rtspd-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-inet_pton.Po@am__quote@ # am--include-marker
@@ -1209,9 +1210,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sockfilt-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-inet_pton.Po@am__quote@ # am--include-marker
@@ -1220,9 +1221,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/socksd-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-inet_pton.Po@am__quote@ # am--include-marker
@@ -1231,9 +1232,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/sws-warnless.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-base64.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-curl_ctype.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-dynbuf.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-memdebug.Po@am__quote@ # am--include-marker
@@ -1241,8 +1242,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-nonblock.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-strdup.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-strtoofft.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-timediff.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/tftpd-warnless.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disabled.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/disabled-disabled.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-fake_ntlm.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-getpart.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fake_ntlm-util.Po@am__quote@ # am--include-marker
@@ -1300,6 +1302,20 @@ am--depfiles: $(am__depfiles_remade)
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
+disabled-disabled.o: disabled.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT disabled-disabled.o -MD -MP -MF $(DEPDIR)/disabled-disabled.Tpo -c -o disabled-disabled.o `test -f 'disabled.c' || echo '$(srcdir)/'`disabled.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/disabled-disabled.Tpo $(DEPDIR)/disabled-disabled.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='disabled.c' object='disabled-disabled.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o disabled-disabled.o `test -f 'disabled.c' || echo '$(srcdir)/'`disabled.c
+
+disabled-disabled.obj: disabled.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT disabled-disabled.obj -MD -MP -MF $(DEPDIR)/disabled-disabled.Tpo -c -o disabled-disabled.obj `if test -f 'disabled.c'; then $(CYGPATH_W) 'disabled.c'; else $(CYGPATH_W) '$(srcdir)/disabled.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/disabled-disabled.Tpo $(DEPDIR)/disabled-disabled.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='disabled.c' object='disabled-disabled.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disabled_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o disabled-disabled.obj `if test -f 'disabled.c'; then $(CYGPATH_W) 'disabled.c'; else $(CYGPATH_W) '$(srcdir)/disabled.c'; fi`
+
 ../../lib/fake_ntlm-mprintf.o: ../../lib/mprintf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-mprintf.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Tpo -c -o ../../lib/fake_ntlm-mprintf.o `test -f '../../lib/mprintf.c' || echo '$(srcdir)/'`../../lib/mprintf.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Tpo ../../lib/$(DEPDIR)/fake_ntlm-mprintf.Po
@@ -1356,19 +1372,19 @@ am--depfiles: $(am__depfiles_remade)
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/fake_ntlm-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo -c -o ../../lib/fake_ntlm-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/fake_ntlm-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo -c -o ../../lib/fake_ntlm-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/fake_ntlm-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/fake_ntlm-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo -c -o ../../lib/fake_ntlm-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Tpo ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/fake_ntlm-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/fake_ntlm-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo -c -o ../../lib/fake_ntlm-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/fake_ntlm-timediff.Tpo ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/fake_ntlm-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -c -o ../../lib/fake_ntlm-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/fake_ntlm-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fake_ntlm_CFLAGS) $(CFLAGS) -MT ../../lib/fake_ntlm-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Tpo -c -o ../../lib/fake_ntlm-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -1538,19 +1554,19 @@ fake_ntlm-fake_ntlm.obj: fake_ntlm.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/getpart-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo -c -o ../../lib/getpart-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/getpart-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-timediff.Tpo -c -o ../../lib/getpart-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-timediff.Tpo ../../lib/$(DEPDIR)/getpart-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/getpart-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/getpart-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo -c -o ../../lib/getpart-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-curl_ctype.Tpo ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/getpart-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/getpart-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/getpart-timediff.Tpo -c -o ../../lib/getpart-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/getpart-timediff.Tpo ../../lib/$(DEPDIR)/getpart-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/getpart-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -c -o ../../lib/getpart-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/getpart-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(getpart_CFLAGS) $(CFLAGS) -MT ../../lib/getpart-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/getpart-dynbuf.Tpo -c -o ../../lib/getpart-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -1706,19 +1722,19 @@ getpart-testpart.obj: testpart.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/mqttd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo -c -o ../../lib/mqttd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/mqttd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/mqttd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-timediff.Tpo -c -o ../../lib/mqttd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-timediff.Tpo ../../lib/$(DEPDIR)/mqttd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/mqttd-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/mqttd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo -c -o ../../lib/mqttd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-curl_ctype.Tpo ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/mqttd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/mqttd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-timediff.Tpo -c -o ../../lib/mqttd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/mqttd-timediff.Tpo ../../lib/$(DEPDIR)/mqttd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/mqttd-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -c -o ../../lib/mqttd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/mqttd-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mqttd_CFLAGS) $(CFLAGS) -MT ../../lib/mqttd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/mqttd-dynbuf.Tpo -c -o ../../lib/mqttd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -1902,19 +1918,19 @@ mqttd-mqttd.obj: mqttd.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/resolve-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo -c -o ../../lib/resolve-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/resolve-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-timediff.Tpo -c -o ../../lib/resolve-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-timediff.Tpo ../../lib/$(DEPDIR)/resolve-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/resolve-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/resolve-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo -c -o ../../lib/resolve-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-curl_ctype.Tpo ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/resolve-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/resolve-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/resolve-timediff.Tpo -c -o ../../lib/resolve-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/resolve-timediff.Tpo ../../lib/$(DEPDIR)/resolve-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/resolve-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -c -o ../../lib/resolve-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/resolve-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(resolve_CFLAGS) $(CFLAGS) -MT ../../lib/resolve-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/resolve-dynbuf.Tpo -c -o ../../lib/resolve-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2084,19 +2100,19 @@ resolve-resolve.obj: resolve.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/rtspd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo -c -o ../../lib/rtspd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/rtspd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-timediff.Tpo -c -o ../../lib/rtspd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-timediff.Tpo ../../lib/$(DEPDIR)/rtspd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/rtspd-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/rtspd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo -c -o ../../lib/rtspd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-curl_ctype.Tpo ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/rtspd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/rtspd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-timediff.Tpo -c -o ../../lib/rtspd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/rtspd-timediff.Tpo ../../lib/$(DEPDIR)/rtspd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/rtspd-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -c -o ../../lib/rtspd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/rtspd-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rtspd_CFLAGS) $(CFLAGS) -MT ../../lib/rtspd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/rtspd-dynbuf.Tpo -c -o ../../lib/rtspd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2266,19 +2282,19 @@ rtspd-rtspd.obj: rtspd.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/sockfilt-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo -c -o ../../lib/sockfilt-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sockfilt-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo -c -o ../../lib/sockfilt-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo ../../lib/$(DEPDIR)/sockfilt-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sockfilt-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/sockfilt-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo -c -o ../../lib/sockfilt-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Tpo ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sockfilt-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sockfilt-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo -c -o ../../lib/sockfilt-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sockfilt-timediff.Tpo ../../lib/$(DEPDIR)/sockfilt-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sockfilt-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -c -o ../../lib/sockfilt-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/sockfilt-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sockfilt_CFLAGS) $(CFLAGS) -MT ../../lib/sockfilt-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/sockfilt-dynbuf.Tpo -c -o ../../lib/sockfilt-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2462,19 +2478,19 @@ sockfilt-sockfilt.obj: sockfilt.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/socksd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo -c -o ../../lib/socksd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/socksd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/socksd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-timediff.Tpo -c -o ../../lib/socksd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-timediff.Tpo ../../lib/$(DEPDIR)/socksd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/socksd-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/socksd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo -c -o ../../lib/socksd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-curl_ctype.Tpo ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/socksd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/socksd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/socksd-timediff.Tpo -c -o ../../lib/socksd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/socksd-timediff.Tpo ../../lib/$(DEPDIR)/socksd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/socksd-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -c -o ../../lib/socksd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/socksd-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(socksd_CFLAGS) $(CFLAGS) -MT ../../lib/socksd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/socksd-dynbuf.Tpo -c -o ../../lib/socksd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2658,19 +2674,19 @@ socksd-socksd.obj: socksd.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/sws-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo -c -o ../../lib/sws-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo ../../lib/$(DEPDIR)/sws-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sws-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-timediff.Tpo -c -o ../../lib/sws-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-timediff.Tpo ../../lib/$(DEPDIR)/sws-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sws-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/sws-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo -c -o ../../lib/sws-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-curl_ctype.Tpo ../../lib/$(DEPDIR)/sws-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/sws-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/sws-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/sws-timediff.Tpo -c -o ../../lib/sws-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/sws-timediff.Tpo ../../lib/$(DEPDIR)/sws-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/sws-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -c -o ../../lib/sws-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/sws-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(sws_CFLAGS) $(CFLAGS) -MT ../../lib/sws-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/sws-dynbuf.Tpo -c -o ../../lib/sws-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -2854,19 +2870,19 @@ sws-sws.obj: sws.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-warnless.obj `if test -f '../../lib/warnless.c'; then $(CYGPATH_W) '../../lib/warnless.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/warnless.c'; fi`
 
-../../lib/tftpd-curl_ctype.o: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-curl_ctype.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo -c -o ../../lib/tftpd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/tftpd-curl_ctype.o' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-timediff.o: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-timediff.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-timediff.Tpo -c -o ../../lib/tftpd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-timediff.Tpo ../../lib/$(DEPDIR)/tftpd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/tftpd-timediff.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-curl_ctype.o `test -f '../../lib/curl_ctype.c' || echo '$(srcdir)/'`../../lib/curl_ctype.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-timediff.o `test -f '../../lib/timediff.c' || echo '$(srcdir)/'`../../lib/timediff.c
 
-../../lib/tftpd-curl_ctype.obj: ../../lib/curl_ctype.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-curl_ctype.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo -c -o ../../lib/tftpd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-curl_ctype.Tpo ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/curl_ctype.c' object='../../lib/tftpd-curl_ctype.obj' libtool=no @AMDEPBACKSLASH@
+../../lib/tftpd-timediff.obj: ../../lib/timediff.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-timediff.obj -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-timediff.Tpo -c -o ../../lib/tftpd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/tftpd-timediff.Tpo ../../lib/$(DEPDIR)/tftpd-timediff.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../../lib/timediff.c' object='../../lib/tftpd-timediff.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-curl_ctype.obj `if test -f '../../lib/curl_ctype.c'; then $(CYGPATH_W) '../../lib/curl_ctype.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/curl_ctype.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -c -o ../../lib/tftpd-timediff.obj `if test -f '../../lib/timediff.c'; then $(CYGPATH_W) '../../lib/timediff.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/timediff.c'; fi`
 
 ../../lib/tftpd-dynbuf.o: ../../lib/dynbuf.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tftpd_CFLAGS) $(CFLAGS) -MT ../../lib/tftpd-dynbuf.o -MD -MP -MF ../../lib/$(DEPDIR)/tftpd-dynbuf.Tpo -c -o ../../lib/tftpd-dynbuf.o `test -f '../../lib/dynbuf.c' || echo '$(srcdir)/'`../../lib/dynbuf.c
@@ -3114,7 +3130,6 @@ clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
 
 distclean: distclean-am
                -rm -f ../../lib/$(DEPDIR)/fake_ntlm-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po
@@ -3122,9 +3137,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-memdebug.Po
@@ -3132,9 +3147,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/getpart-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/getpart-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-inet_pton.Po
@@ -3143,9 +3158,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/mqttd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/mqttd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-memdebug.Po
@@ -3153,9 +3168,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/resolve-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/resolve-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-memdebug.Po
@@ -3163,9 +3178,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/rtspd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/rtspd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po
@@ -3174,9 +3189,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/sockfilt-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-inet_pton.Po
@@ -3185,9 +3200,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/socksd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/socksd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/sws-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/sws-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/sws-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po
@@ -3196,9 +3211,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/sws-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/sws-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/sws-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-memdebug.Po
@@ -3206,8 +3221,9 @@ distclean: distclean-am
        -rm -f ../../lib/$(DEPDIR)/tftpd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/tftpd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-warnless.Po
-       -rm -f ./$(DEPDIR)/disabled.Po
+       -rm -f ./$(DEPDIR)/disabled-disabled.Po
        -rm -f ./$(DEPDIR)/fake_ntlm-fake_ntlm.Po
        -rm -f ./$(DEPDIR)/fake_ntlm-getpart.Po
        -rm -f ./$(DEPDIR)/fake_ntlm-util.Po
@@ -3280,7 +3296,6 @@ installcheck-am:
 
 maintainer-clean: maintainer-clean-am
                -rm -f ../../lib/$(DEPDIR)/fake_ntlm-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-memdebug.Po
@@ -3288,9 +3303,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/fake_ntlm-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/fake_ntlm-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/getpart-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-memdebug.Po
@@ -3298,9 +3313,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/getpart-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/getpart-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/getpart-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/mqttd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-inet_pton.Po
@@ -3309,9 +3324,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/mqttd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/mqttd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/mqttd-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/resolve-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-memdebug.Po
@@ -3319,9 +3334,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/resolve-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/resolve-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/resolve-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/rtspd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-memdebug.Po
@@ -3329,9 +3344,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/rtspd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/rtspd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/rtspd-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-inet_pton.Po
@@ -3340,9 +3355,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/sockfilt-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/sockfilt-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/sockfilt-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/socksd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-inet_pton.Po
@@ -3351,9 +3366,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/socksd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/socksd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/socksd-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/sws-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/sws-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/sws-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/sws-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/sws-inet_pton.Po
@@ -3362,9 +3377,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/sws-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/sws-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/sws-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/sws-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/sws-warnless.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-base64.Po
-       -rm -f ../../lib/$(DEPDIR)/tftpd-curl_ctype.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-curl_multibyte.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-dynbuf.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-memdebug.Po
@@ -3372,8 +3387,9 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../../lib/$(DEPDIR)/tftpd-nonblock.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-strdup.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-strtoofft.Po
+       -rm -f ../../lib/$(DEPDIR)/tftpd-timediff.Po
        -rm -f ../../lib/$(DEPDIR)/tftpd-warnless.Po
-       -rm -f ./$(DEPDIR)/disabled.Po
+       -rm -f ./$(DEPDIR)/disabled-disabled.Po
        -rm -f ./$(DEPDIR)/fake_ntlm-fake_ntlm.Po
        -rm -f ./$(DEPDIR)/fake_ntlm-getpart.Po
        -rm -f ./$(DEPDIR)/fake_ntlm-util.Po
@@ -3438,7 +3454,7 @@ uninstall-am:
 
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
 
 # for debug builds, we scan the sources on all regular make invokes
 @CURLDEBUG_TRUE@all-local: checksrc
index 35d4dbaa1ac43bc48253987e0d8c1d692ab35684..ccc65d2b80d2ad76e297e2a93c27fb756d60513c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2009 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 noinst_PROGRAMS = getpart resolve rtspd sockfilt sws tftpd fake_ntlm    \
@@ -28,7 +30,7 @@ CURLX_SRCS = \
  ../../lib/nonblock.c \
  ../../lib/strtoofft.c \
  ../../lib/warnless.c \
- ../../lib/curl_ctype.c \
+ ../../lib/timediff.c \
  ../../lib/dynbuf.c \
  ../../lib/strdup.c \
  ../../lib/curl_multibyte.c
@@ -38,6 +40,7 @@ CURLX_HDRS = \
  ../../lib/nonblock.h \
  ../../lib/strtoofft.h \
  ../../lib/warnless.h \
+ ../../lib/timediff.h \
  ../../lib/curl_ctype.h \
  ../../lib/dynbuf.h \
  ../../lib/strdup.h \
index e1b88cf58f34b66820c7c8434140991c051b65a0..b0252551e041bd8fd64e8588c93ff435d89eb02b 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2004 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2004 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 use MIME::Base64 qw(encode_base64);
index 6f7c10f18033b41ccfc048dbeed3c7dc06c4c81f..8a4a17ce5eb0eb2b88c8475da8e0fcd7b43ec339 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 /*
@@ -31,6 +33,7 @@
 
 #include "curl_setup.h"
 #include "multihandle.h" /* for ENABLE_WAKEUP */
+#include "tool_xattr.h" /* for USE_XATTR */
 #include <stdio.h>
 
 static const char *disabled[]={
@@ -69,6 +72,12 @@ static const char *disabled[]={
 #endif
 #ifndef ENABLE_WAKEUP
   "wakeup",
+#endif
+#ifdef CURL_DISABLE_HEADERS_API
+  "headers-api",
+#endif
+#ifndef USE_XATTR
+  "xattr",
 #endif
   NULL
 };
index ae281ca1c2e91b98fb9b72313ffa6906d90333b8..976096a9ca20b0687bb058b00e97801181b46add 100644 (file)
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, Mandy Wu, <mandy.wu@intel.com>
- * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2022, 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
@@ -19,6 +19,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index 32b55bc6190a594fcf85cc557bf61e2965c0d72f..fb54bfe8bc3ebf1858fff84b116634aef1756007 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
@@ -95,6 +97,33 @@ CURLcode Curl_convert_clone(struct Curl_easy *data,
   return CURLE_OK;
 }
 
+/*
+ * line_length()
+ *
+ * Counts the number of characters in a line including a new line.
+ * Unlike strlen() it does not stop at nul bytes.
+ *
+ */
+static size_t line_length(const char *buffer, int bytestocheck)
+{
+  size_t length = 1;
+
+  while(*buffer != '\n' && --bytestocheck) {
+    length++;
+    buffer++;
+  }
+  if(*buffer != '\n') {
+    /*
+     * We didn't find a new line so the last byte must be a
+     * '\0' character inserted by fgets() which we should not
+     * count.
+     */
+    length--;
+  }
+
+  return length;
+}
+
 /*
  * readline()
  *
@@ -113,7 +142,8 @@ CURLcode Curl_convert_clone(struct Curl_easy *data,
  *   GPE_OK
  */
 
-static int readline(char **buffer, size_t *bufsize, FILE *stream)
+static int readline(char **buffer, size_t *bufsize, size_t *length,
+                    FILE *stream)
 {
   size_t offset = 0;
   char *newptr;
@@ -126,17 +156,16 @@ static int readline(char **buffer, size_t *bufsize, FILE *stream)
   }
 
   for(;;) {
-    size_t length;
     int bytestoread = curlx_uztosi(*bufsize - offset);
 
     if(!fgets(*buffer + offset, bytestoread, stream))
       return (offset != 0) ? GPE_OK : GPE_END_OF_FILE;
 
-    length = offset + strlen(*buffer + offset);
-    if(*(*buffer + length - 1) == '\n')
+    *length = offset + line_length(*buffer + offset, bytestoread);
+    if(*(*buffer + *length - 1) == '\n')
       break;
-    offset = length;
-    if(length < *bufsize - 1)
+    offset = *length;
+    if(*length < *bufsize - 1)
       continue;
 
     newptr = realloc(*buffer, *bufsize * 2);
@@ -179,10 +208,10 @@ static int appenddata(char  **dst_buf,   /* dest buffer */
                       size_t *dst_len,   /* dest buffer data length */
                       size_t *dst_alloc, /* dest buffer allocated size */
                       char   *src_buf,   /* source buffer */
+                      size_t  src_len,   /* source buffer length */
                       int     src_b64)   /* != 0 if source is base64 encoded */
 {
   size_t need_alloc = 0;
-  size_t src_len = strlen(src_buf);
 
   if(!src_len)
     return GPE_OK;
@@ -293,8 +322,10 @@ int getpart(char **outbuf, size_t *outlen,
   } len;
   size_t bufsize = 0;
   size_t outalloc = 256;
+  size_t datalen;
   int in_wanted_part = 0;
   int base64 = 0;
+  int nonewline = 0;
   int error;
 
   enum {
@@ -313,7 +344,7 @@ int getpart(char **outbuf, size_t *outlen,
 
   couter[0] = cmain[0] = csub[0] = ptag[0] = patt[0] = '\0';
 
-  while((error = readline(&buffer, &bufsize, stream)) == GPE_OK) {
+  while((error = readline(&buffer, &bufsize, &datalen, stream)) == GPE_OK) {
 
     ptr = buffer;
     EAT_SPACE(ptr);
@@ -321,7 +352,8 @@ int getpart(char **outbuf, size_t *outlen,
     if('<' != *ptr) {
       if(in_wanted_part) {
         show(("=> %s", buffer));
-        error = appenddata(outbuf, outlen, &outalloc, buffer, base64);
+        error = appenddata(outbuf, outlen, &outalloc, buffer, datalen,
+                           base64);
         if(error)
           break;
       }
@@ -360,6 +392,8 @@ int getpart(char **outbuf, size_t *outlen,
             if(error)
               return error;
           }
+          if(nonewline)
+            (*outlen)--;
           break;
         }
       }
@@ -377,6 +411,8 @@ int getpart(char **outbuf, size_t *outlen,
             if(error)
               return error;
           }
+          if(nonewline)
+            (*outlen)--;
           break;
         }
       }
@@ -451,6 +487,10 @@ int getpart(char **outbuf, size_t *outlen,
               /* bit rough test, but "mostly" functional, */
               /* treat wanted part data as base64 encoded */
               base64 = 1;
+          if(strstr(patt, "nonewline=")) {
+            show(("* setting nonewline\n"));
+            nonewline = 1;
+          }
         }
         continue;
       }
@@ -459,7 +499,7 @@ int getpart(char **outbuf, size_t *outlen,
 
     if(in_wanted_part) {
       show(("=> %s", buffer));
-      error = appenddata(outbuf, outlen, &outalloc, buffer, base64);
+      error = appenddata(outbuf, outlen, &outalloc, buffer, datalen, base64);
       if(error)
         break;
     }
index 2111392051a15908b7e711e7e4e02fb5b38f9124..bb71c2d2d9cc90dd1edd34c6e303cc9f8677be41 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index 600497ba0e7db6107fc1139292c783e7762915bf..d653917ef1833c584b28443f6ccd85a5db153ed8 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 #include <stdlib.h>
index 6905b7e788558f688a038725b6b1264a6f79b6d4..492ffdeefaa6196acf6a0472badacd4b549a8e42 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index 88f96a08f23dda9ab8e6344319aade5a62fad36b..32ab0afb0593f498506c945554de0b44e6709d86 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index e406a3d83d6c57de758331141288f2423f4e4899..8c642e5d893c4eb180d0ccd1f76ca5c84b190ea7 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 
 #define CURL_NO_OLDIES
index e72531179d6e2604c77aa0a63477e462c4ad0ea8..024cf70dd905f4afc4002ef36673050ed5f001c9 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index ccd9c4782814bf463813afe32bdc6d03e0309607..39cca069f8db2f2cbdba9fb529cdabaf6f1b178a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
 #include "inet_pton.h"
 #include "util.h"
 #include "server_sockaddr.h"
+#include "timediff.h"
 #include "warnless.h"
 
 /* include memdebug.h last */
@@ -401,13 +404,17 @@ static void lograw(unsigned char *buffer, ssize_t len)
 struct select_ws_wait_data {
   HANDLE handle; /* actual handle to wait for during select */
   HANDLE signal; /* internal event to signal handle trigger */
-  HANDLE abort;  /* internal event to abort waiting thread */
-  HANDLE mutex;  /* mutex to prevent event race-condition */
+  HANDLE abort;  /* internal event to abort waiting threads */
 };
+#ifdef _WIN32_WCE
 static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
+#else
+#include <process.h>
+static unsigned int WINAPI select_ws_wait_thread(void *lpParameter)
+#endif
 {
   struct select_ws_wait_data *data;
-  HANDLE mutex, signal, handle, handles[2];
+  HANDLE signal, handle, handles[2];
   INPUT_RECORD inputrecord;
   LARGE_INTEGER size, pos;
   DWORD type, length, ret;
@@ -419,7 +426,6 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
     handles[0] = data->abort;
     handles[1] = handle;
     signal = data->signal;
-    mutex = data->mutex;
     free(data);
   }
   else
@@ -439,41 +445,29 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
         */
       while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
             == WAIT_TIMEOUT) {
-        ret = WaitForSingleObjectEx(mutex, 0, FALSE);
-        if(ret == WAIT_OBJECT_0) {
-          /* get total size of file */
-          length = 0;
-          size.QuadPart = 0;
-          size.LowPart = GetFileSize(handle, &length);
-          if((size.LowPart != INVALID_FILE_SIZE) ||
-             (GetLastError() == NO_ERROR)) {
-            size.HighPart = length;
-            /* get the current position within the file */
-            pos.QuadPart = 0;
-            pos.LowPart = SetFilePointer(handle, 0, &pos.HighPart,
-                                        FILE_CURRENT);
-            if((pos.LowPart != INVALID_SET_FILE_POINTER) ||
-               (GetLastError() == NO_ERROR)) {
-              /* compare position with size, abort if not equal */
-              if(size.QuadPart == pos.QuadPart) {
-                /* sleep and continue waiting */
-                SleepEx(0, FALSE);
-                ReleaseMutex(mutex);
-                continue;
-              }
+        /* get total size of file */
+        length = 0;
+        size.QuadPart = 0;
+        size.LowPart = GetFileSize(handle, &length);
+        if((size.LowPart != INVALID_FILE_SIZE) ||
+            (GetLastError() == NO_ERROR)) {
+          size.HighPart = length;
+          /* get the current position within the file */
+          pos.QuadPart = 0;
+          pos.LowPart = SetFilePointer(handle, 0, &pos.HighPart, FILE_CURRENT);
+          if((pos.LowPart != INVALID_SET_FILE_POINTER) ||
+              (GetLastError() == NO_ERROR)) {
+            /* compare position with size, abort if not equal */
+            if(size.QuadPart == pos.QuadPart) {
+              /* sleep and continue waiting */
+              SleepEx(0, FALSE);
+              continue;
             }
           }
-          /* there is some data available, stop waiting */
-          logmsg("[select_ws_wait_thread] data available, DISK: %p", handle);
-          SetEvent(signal);
-          ReleaseMutex(mutex);
-          break;
-        }
-        else if(ret == WAIT_ABANDONED) {
-          /* we are not allowed to process this event, because select_ws
-             is post-processing the signalled events and we must exit. */
-          break;
         }
+        /* there is some data available, stop waiting */
+        logmsg("[select_ws_wait_thread] data available, DISK: %p", handle);
+        SetEvent(signal);
       }
       break;
 
@@ -487,33 +481,22 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
         */
       while(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
             == WAIT_OBJECT_0 + 1) {
-        ret = WaitForSingleObjectEx(mutex, 0, FALSE);
-        if(ret == WAIT_OBJECT_0) {
-          /* check if this is an actual console handle */
-          if(GetConsoleMode(handle, &ret)) {
-            /* retrieve an event from the console buffer */
-            length = 0;
-            if(PeekConsoleInput(handle, &inputrecord, 1, &length)) {
-              /* check if the event is not an actual key-event */
-              if(length == 1 && inputrecord.EventType != KEY_EVENT) {
-                /* purge the non-key-event and continue waiting */
-                ReadConsoleInput(handle, &inputrecord, 1, &length);
-                ReleaseMutex(mutex);
-                continue;
-              }
+        /* check if this is an actual console handle */
+        if(GetConsoleMode(handle, &ret)) {
+          /* retrieve an event from the console buffer */
+          length = 0;
+          if(PeekConsoleInput(handle, &inputrecord, 1, &length)) {
+            /* check if the event is not an actual key-event */
+            if(length == 1 && inputrecord.EventType != KEY_EVENT) {
+              /* purge the non-key-event and continue waiting */
+              ReadConsoleInput(handle, &inputrecord, 1, &length);
+              continue;
             }
           }
-          /* there is some data available, stop waiting */
-          logmsg("[select_ws_wait_thread] data available, CHAR: %p", handle);
-          SetEvent(signal);
-          ReleaseMutex(mutex);
-          break;
-        }
-        else if(ret == WAIT_ABANDONED) {
-          /* we are not allowed to process this event, because select_ws
-             is post-processing the signalled events and we must exit. */
-          break;
         }
+        /* there is some data available, stop waiting */
+        logmsg("[select_ws_wait_thread] data available, CHAR: %p", handle);
+        SetEvent(signal);
       }
       break;
 
@@ -527,45 +510,33 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
         */
       while(WaitForMultipleObjectsEx(1, handles, FALSE, 0, FALSE)
             == WAIT_TIMEOUT) {
-        ret = WaitForSingleObjectEx(mutex, 0, FALSE);
-        if(ret == WAIT_OBJECT_0) {
-          /* peek into the pipe and retrieve the amount of data available */
-          length = 0;
-          if(PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
-            /* if there is no data available, sleep and continue waiting */
-            if(length == 0) {
-              SleepEx(0, FALSE);
-              ReleaseMutex(mutex);
-              continue;
-            }
-            else {
-              logmsg("[select_ws_wait_thread] PeekNamedPipe len: %d", length);
-            }
+        /* peek into the pipe and retrieve the amount of data available */
+        length = 0;
+        if(PeekNamedPipe(handle, NULL, 0, NULL, &length, NULL)) {
+          /* if there is no data available, sleep and continue waiting */
+          if(length == 0) {
+            SleepEx(0, FALSE);
+            continue;
           }
           else {
-            /* if the pipe has NOT been closed, sleep and continue waiting */
-            ret = GetLastError();
-            if(ret != ERROR_BROKEN_PIPE) {
-              logmsg("[select_ws_wait_thread] PeekNamedPipe error: %d", ret);
-              SleepEx(0, FALSE);
-              ReleaseMutex(mutex);
-              continue;
-            }
-            else {
-              logmsg("[select_ws_wait_thread] pipe closed, PIPE: %p", handle);
-            }
+            logmsg("[select_ws_wait_thread] PeekNamedPipe len: %d", length);
           }
-          /* there is some data available, stop waiting */
-          logmsg("[select_ws_wait_thread] data available, PIPE: %p", handle);
-          SetEvent(signal);
-          ReleaseMutex(mutex);
-          break;
         }
-        else if(ret == WAIT_ABANDONED) {
-          /* we are not allowed to process this event, because select_ws
-             is post-processing the signalled events and we must exit. */
-          break;
+        else {
+          /* if the pipe has NOT been closed, sleep and continue waiting */
+          ret = GetLastError();
+          if(ret != ERROR_BROKEN_PIPE) {
+            logmsg("[select_ws_wait_thread] PeekNamedPipe error: %d", ret);
+            SleepEx(0, FALSE);
+            continue;
+          }
+          else {
+            logmsg("[select_ws_wait_thread] pipe closed, PIPE: %p", handle);
+          }
         }
+        /* there is some data available, stop waiting */
+        logmsg("[select_ws_wait_thread] data available, PIPE: %p", handle);
+        SetEvent(signal);
       }
       break;
 
@@ -573,22 +544,25 @@ static DWORD WINAPI select_ws_wait_thread(LPVOID lpParameter)
       /* The handle has an unknown type, try to wait on it */
       if(WaitForMultipleObjectsEx(2, handles, FALSE, INFINITE, FALSE)
          == WAIT_OBJECT_0 + 1) {
-        if(WaitForSingleObjectEx(mutex, 0, FALSE) == WAIT_OBJECT_0) {
-          logmsg("[select_ws_wait_thread] data available, HANDLE: %p", handle);
-          SetEvent(signal);
-          ReleaseMutex(mutex);
-        }
+        logmsg("[select_ws_wait_thread] data available, HANDLE: %p", handle);
+        SetEvent(signal);
       }
       break;
   }
 
   return 0;
 }
-static HANDLE select_ws_wait(HANDLE handle, HANDLE signal,
-                             HANDLE abort, HANDLE mutex)
+static HANDLE select_ws_wait(HANDLE handle, HANDLE signal, HANDLE abort)
 {
+#ifdef _WIN32_WCE
+  typedef HANDLE curl_win_thread_handle_t;
+#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+  typedef unsigned long curl_win_thread_handle_t;
+#else
+  typedef uintptr_t curl_win_thread_handle_t;
+#endif
   struct select_ws_wait_data *data;
-  HANDLE thread = NULL;
+  curl_win_thread_handle_t thread;
 
   /* allocate internal waiting data structure */
   data = malloc(sizeof(struct select_ws_wait_data));
@@ -596,20 +570,21 @@ static HANDLE select_ws_wait(HANDLE handle, HANDLE signal,
     data->handle = handle;
     data->signal = signal;
     data->abort = abort;
-    data->mutex = mutex;
 
     /* launch waiting thread */
-    thread = CreateThread(NULL, 0,
-                          &select_ws_wait_thread,
-                          data, 0, NULL);
+#ifdef _WIN32_WCE
+    thread = CreateThread(NULL, 0,  &select_ws_wait_thread, data, 0, NULL);
+#else
+    thread = _beginthreadex(NULL, 0, &select_ws_wait_thread, data, 0, NULL);
+#endif
 
     /* free data if thread failed to launch */
     if(!thread) {
       free(data);
     }
+    return (HANDLE)thread;
   }
-
-  return thread;
+  return NULL;
 }
 struct select_ws_data {
   int fd;                /* provided file descriptor  (indexed by nfd) */
@@ -622,8 +597,8 @@ struct select_ws_data {
 static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
                      fd_set *exceptfds, struct timeval *tv)
 {
-  HANDLE abort, mutex, signal, handle, *handles;
   DWORD timeout_ms, wait, nfd, nth, nws, i;
+  HANDLE abort, signal, handle, *handles;
   fd_set readsock, writesock, exceptsock;
   struct select_ws_data *data;
   WSANETWORKEVENTS wsaevents;
@@ -639,7 +614,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
 
   /* convert struct timeval to milliseconds */
   if(tv) {
-    timeout_ms = (tv->tv_sec*1000) + (DWORD)(((double)tv->tv_usec)/1000.0);
+    timeout_ms = (DWORD)curlx_tvtoms(tv);
   }
   else {
     timeout_ms = INFINITE;
@@ -658,19 +633,10 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
     return -1;
   }
 
-  /* create internal mutex to lock event handling in threads */
-  mutex = CreateMutex(NULL, FALSE, NULL);
-  if(!mutex) {
-    CloseHandle(abort);
-    errno = ENOMEM;
-    return -1;
-  }
-
   /* allocate internal array for the internal data */
   data = calloc(nfds, sizeof(struct select_ws_data));
   if(!data) {
     CloseHandle(abort);
-    CloseHandle(mutex);
     errno = ENOMEM;
     return -1;
   }
@@ -679,7 +645,6 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
   handles = calloc(nfds + 1, sizeof(HANDLE));
   if(!handles) {
     CloseHandle(abort);
-    CloseHandle(mutex);
     free(data);
     errno = ENOMEM;
     return -1;
@@ -720,7 +685,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
         signal = CreateEvent(NULL, TRUE, FALSE, NULL);
         if(signal) {
           handle = GetStdHandle(STD_INPUT_HANDLE);
-          handle = select_ws_wait(handle, signal, abort, mutex);
+          handle = select_ws_wait(handle, signal, abort);
           if(handle) {
             handles[nfd] = signal;
             data[nth].signal = signal;
@@ -774,7 +739,7 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
             signal = CreateEvent(NULL, TRUE, FALSE, NULL);
             if(signal) {
               handle = (HANDLE)wsasock;
-              handle = select_ws_wait(handle, signal, abort, mutex);
+              handle = select_ws_wait(handle, signal, abort);
               if(handle) {
                 handles[nfd] = signal;
                 data[nth].signal = signal;
@@ -805,8 +770,12 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
   /* wait for one of the internal handles to trigger */
   wait = WaitForMultipleObjectsEx(wait, handles, FALSE, timeout_ms, FALSE);
 
-  /* wait for internal mutex to lock event handling in threads */
-  WaitForSingleObjectEx(mutex, INFINITE, FALSE);
+  /* signal the abort event handle and join the other waiting threads */
+  SetEvent(abort);
+  for(i = 0; i < nth; i++) {
+    WaitForSingleObjectEx(data[i].thread, INFINITE, FALSE);
+    CloseHandle(data[i].thread);
+  }
 
   /* loop over the internal handles returned in the descriptors */
   ret = 0; /* number of ready file descriptors */
@@ -865,9 +834,6 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
     }
   }
 
-  /* signal the event handle for the other waiting threads */
-  SetEvent(abort);
-
   for(fd = 0; fd < nfds; fd++) {
     if(FD_ISSET(fd, readfds))
       logmsg("[select_ws] %d is readable", fd);
@@ -883,13 +849,9 @@ static int select_ws(int nfds, fd_set *readfds, fd_set *writefds,
   }
 
   for(i = 0; i < nth; i++) {
-    WaitForSingleObjectEx(data[i].thread, INFINITE, FALSE);
-    CloseHandle(data[i].thread);
     CloseHandle(data[i].signal);
   }
-
   CloseHandle(abort);
-  CloseHandle(mutex);
 
   free(handles);
   free(data);
index 6867141e3dda9ad203009ff28a71aa3a0a672fb7..d49efcf80286f24979b4f4085dab07236733c1fc 100644 (file)
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 #include <stdlib.h>
@@ -140,13 +142,10 @@ struct configurable {
 static struct configurable config;
 
 const char *serverlogfile = DEFAULT_LOGFILE;
-const char *reqlogfile = DEFAULT_REQFILE;
+static const char *reqlogfile = DEFAULT_REQFILE;
 static const char *configfile = DEFAULT_CONFIG;
 
-#ifdef ENABLE_IPV6
-static bool use_ipv6 = FALSE;
-#endif
-static const char *ipv_inuse = "IPv4";
+static const char *socket_type = "IPv4";
 static unsigned short port = DEFAULT_PORT;
 
 static void resetdefaults(void)
@@ -177,6 +176,16 @@ static unsigned short shortval(char *value)
   return num & 0xffff;
 }
 
+static enum {
+  socket_domain_inet = AF_INET
+#ifdef ENABLE_IPV6
+  , socket_domain_inet6 = AF_INET6
+#endif
+#ifdef USE_UNIX_SOCKETS
+  , socket_domain_unix = AF_UNIX
+#endif
+} socket_domain = AF_INET;
+
 static void getconfig(void)
 {
   FILE *fp = fopen(configfile, FOPEN_READTEXT);
@@ -777,7 +786,11 @@ static bool incoming(curl_socket_t listenfd)
 }
 
 static curl_socket_t sockdaemon(curl_socket_t sock,
-                                unsigned short *listenport)
+                                unsigned short *listenport
+#ifdef USE_UNIX_SOCKETS
+        , const char *unix_socket
+#endif
+        )
 {
   /* passive daemon style */
   srvr_sockaddr_union_t listener;
@@ -828,24 +841,29 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
   /* When the specified listener port is zero, it is actually a
      request to let the system choose a non-zero available port. */
 
+  switch(socket_domain) {
+    case AF_INET:
+      memset(&listener.sa4, 0, sizeof(listener.sa4));
+      listener.sa4.sin_family = AF_INET;
+      listener.sa4.sin_addr.s_addr = INADDR_ANY;
+      listener.sa4.sin_port = htons(*listenport);
+      rc = bind(sock, &listener.sa, sizeof(listener.sa4));
+      break;
 #ifdef ENABLE_IPV6
-  if(!use_ipv6) {
+    case AF_INET6:
+      memset(&listener.sa6, 0, sizeof(listener.sa6));
+      listener.sa6.sin6_family = AF_INET6;
+      listener.sa6.sin6_addr = in6addr_any;
+      listener.sa6.sin6_port = htons(*listenport);
+      rc = bind(sock, &listener.sa, sizeof(listener.sa6));
+      break;
+#endif /* ENABLE_IPV6 */
+#ifdef USE_UNIX_SOCKETS
+    case AF_UNIX:
+    rc = bind_unix_socket(sock, unix_socket, &listener.sau);
 #endif
-    memset(&listener.sa4, 0, sizeof(listener.sa4));
-    listener.sa4.sin_family = AF_INET;
-    listener.sa4.sin_addr.s_addr = INADDR_ANY;
-    listener.sa4.sin_port = htons(*listenport);
-    rc = bind(sock, &listener.sa, sizeof(listener.sa4));
-#ifdef ENABLE_IPV6
-  }
-  else {
-    memset(&listener.sa6, 0, sizeof(listener.sa6));
-    listener.sa6.sin6_family = AF_INET6;
-    listener.sa6.sin6_addr = in6addr_any;
-    listener.sa6.sin6_port = htons(*listenport);
-    rc = bind(sock, &listener.sa, sizeof(listener.sa6));
   }
-#endif /* ENABLE_IPV6 */
+
   if(rc) {
     error = SOCKERRNO;
     logmsg("Error binding socket on port %hu: (%d) %s",
@@ -854,19 +872,21 @@ static curl_socket_t sockdaemon(curl_socket_t sock,
     return CURL_SOCKET_BAD;
   }
 
-  if(!*listenport) {
+  if(!*listenport
+#ifdef USE_UNIX_SOCKETS
+          && !unix_socket
+#endif
+    ) {
     /* The system was supposed to choose a port number, figure out which
        port we actually got and update the listener port value with it. */
     curl_socklen_t la_size;
     srvr_sockaddr_union_t localaddr;
 #ifdef ENABLE_IPV6
-    if(!use_ipv6)
-#endif
-      la_size = sizeof(localaddr.sa4);
-#ifdef ENABLE_IPV6
-    else
+    if(socket_domain == AF_INET6)
       la_size = sizeof(localaddr.sa6);
+    else
 #endif
+      la_size = sizeof(localaddr.sa4);
     memset(&localaddr.sa, 0, (size_t)la_size);
     if(getsockname(sock, &localaddr.sa, &la_size) < 0) {
       error = SOCKERRNO;
@@ -924,6 +944,11 @@ int main(int argc, char *argv[])
   int error;
   int arg = 1;
 
+#ifdef USE_UNIX_SOCKETS
+  const char *unix_socket = NULL;
+  bool unlink_socket = false;
+#endif
+
   while(argc>arg) {
     if(!strcmp("--version", argv[arg])) {
       printf("socksd IPv4%s\n",
@@ -972,19 +997,36 @@ int main(int argc, char *argv[])
     }
     else if(!strcmp("--ipv6", argv[arg])) {
 #ifdef ENABLE_IPV6
-      ipv_inuse = "IPv6";
-      use_ipv6 = TRUE;
+      socket_domain = AF_INET6;
+      socket_type = "IPv6";
 #endif
       arg++;
     }
     else if(!strcmp("--ipv4", argv[arg])) {
       /* for completeness, we support this option as well */
 #ifdef ENABLE_IPV6
-      ipv_inuse = "IPv4";
-      use_ipv6 = FALSE;
+      socket_type = "IPv4";
 #endif
       arg++;
     }
+    else if(!strcmp("--unix-socket", argv[arg])) {
+      arg++;
+      if(argc>arg) {
+#ifdef USE_UNIX_SOCKETS
+        struct sockaddr_un sau;
+        unix_socket = argv[arg];
+        if(strlen(unix_socket) >= sizeof(sau.sun_path)) {
+          fprintf(stderr,
+                  "socksd: socket path must be shorter than %zu chars\n",
+              sizeof(sau.sun_path));
+          return 0;
+        }
+        socket_domain = AF_UNIX;
+        socket_type = "unix";
+#endif
+        arg++;
+      }
+    }
     else if(!strcmp("--port", argv[arg])) {
       arg++;
       if(argc>arg) {
@@ -1006,6 +1048,7 @@ int main(int argc, char *argv[])
            " --reqfile [file]\n"
            " --ipv4\n"
            " --ipv6\n"
+           " --unix-socket [file]\n"
            " --bindonly\n"
            " --port [port]\n");
       return 0;
@@ -1023,14 +1066,7 @@ int main(int argc, char *argv[])
 
   install_signal_handlers(false);
 
-#ifdef ENABLE_IPV6
-  if(!use_ipv6)
-#endif
-    sock = socket(AF_INET, SOCK_STREAM, 0);
-#ifdef ENABLE_IPV6
-  else
-    sock = socket(AF_INET6, SOCK_STREAM, 0);
-#endif
+  sock = socket(socket_domain, SOCK_STREAM, 0);
 
   if(CURL_SOCKET_BAD == sock) {
     error = SOCKERRNO;
@@ -1041,14 +1077,27 @@ int main(int argc, char *argv[])
 
   {
     /* passive daemon style */
-    sock = sockdaemon(sock, &port);
+    sock = sockdaemon(sock, &port
+#ifdef USE_UNIX_SOCKETS
+            , unix_socket
+#endif
+            );
     if(CURL_SOCKET_BAD == sock) {
       goto socks5_cleanup;
     }
+#ifdef USE_UNIX_SOCKETS
+    unlink_socket = true;
+#endif
     msgsock = CURL_SOCKET_BAD; /* no stream socket yet */
   }
 
-  logmsg("Running %s version", ipv_inuse);
+  logmsg("Running %s version", socket_type);
+
+#ifdef USE_UNIX_SOCKETS
+  if(socket_domain == AF_UNIX)
+      logmsg("Listening on unix socket %s", unix_socket);
+  else
+#endif
   logmsg("Listening on port %hu", port);
 
   wrotepidfile = write_pidfile(pidname);
@@ -1075,6 +1124,13 @@ socks5_cleanup:
   if(sock != CURL_SOCKET_BAD)
     sclose(sock);
 
+#ifdef USE_UNIX_SOCKETS
+  if(unlink_socket && socket_domain == AF_UNIX) {
+    error = unlink(unix_socket);
+    logmsg("unlink(%s) = %d (%s)", unix_socket, error, strerror(error));
+  }
+#endif
+
   if(wrotepidfile)
     unlink(pidname);
   if(wroteportfile)
index 6ce0d3b9fcadcc46f5c63a92f0c4c5bd33697832..55c1c1d601d8c5f5582873cb5c6d690facd34c13 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
@@ -83,6 +85,8 @@ static bool is_proxy = FALSE;
 
 #define REQBUFSIZ (2*1024*1024)
 
+#define MAX_SLEEP_TIME_MS 250
+
 static long prevtestno = -1;    /* previous test number we served */
 static long prevpartno = -1;    /* previous part number we served */
 static bool prevbounce = FALSE; /* instructs the server to increase the part
@@ -108,7 +112,7 @@ struct httprequest {
   size_t cl;      /* Content-Length of the incoming request */
   bool digest;    /* Authorization digest header found */
   bool ntlm;      /* Authorization ntlm header found */
-  int writedelay; /* if non-zero, delay this number of seconds between
+  int writedelay; /* if non-zero, delay this number of milliseconds between
                      writes in the response */
   int skip;       /* if non-zero, the server is instructed to not read this
                      many bytes from a PUT/POST request. Ie the client sends N
@@ -120,7 +124,7 @@ struct httprequest {
   bool skipall;   /* skip all incoming data */
   bool noexpect;  /* refuse Expect: (don't read the body) */
   bool connmon;   /* monitor the state of the connection, log disconnects */
-  bool upgrade;   /* test case allows upgrade to http2 */
+  bool upgrade;   /* test case allows upgrade */
   bool upgrade_request; /* upgrade request found and allowed */
   bool close;     /* similar to swsclose in response: close connection after
                      response is sent */
@@ -178,7 +182,7 @@ const char *cmdfile = DEFAULT_CMDFILE;
    proper point - like with NTLM */
 #define CMD_CONNECTIONMONITOR "connection-monitor"
 
-/* upgrade to http2 */
+/* upgrade to http2/websocket/xxxx */
 #define CMD_UPGRADE "upgrade"
 
 /* close connection */
@@ -307,7 +311,7 @@ static int parse_servercmd(struct httprequest *req)
         req->connmon = TRUE;
       }
       else if(!strncmp(CMD_UPGRADE, cmd, strlen(CMD_UPGRADE))) {
-        logmsg("enabled upgrade to http2");
+        logmsg("enabled upgrade");
         req->upgrade = TRUE;
       }
       else if(!strncmp(CMD_SWSCLOSE, cmd, strlen(CMD_SWSCLOSE))) {
@@ -323,7 +327,7 @@ static int parse_servercmd(struct httprequest *req)
         req->noexpect = TRUE;
       }
       else if(1 == sscanf(cmd, "writedelay: %d", &num)) {
-        logmsg("instructed to delay %d secs between packets", num);
+        logmsg("instructed to delay %d msecs between packets", num);
         req->writedelay = num;
       }
       else {
@@ -358,9 +362,9 @@ static int ProcessRequest(struct httprequest *req)
   char *line = &req->reqbuf[req->checkindex];
   bool chunked = FALSE;
   static char request[REQUEST_KEYWORD_SIZE];
-  static char doc[MAXDOCNAMELEN];
   char logbuf[456];
-  int prot_major, prot_minor;
+  int prot_major = 0;
+  int prot_minor = 0;
   char *end = strstr(line, end_of_headers);
 
   req->callcount++;
@@ -379,175 +383,168 @@ static int ProcessRequest(struct httprequest *req)
     return 1; /* done */
   }
 
-  else if((req->testno == DOCNUMBER_NOTHING) &&
-     sscanf(line,
-            "%" REQUEST_KEYWORD_SIZE_TXT"s %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d",
-            request,
-            doc,
-            &prot_major,
-            &prot_minor) == 4) {
-    char *ptr;
-
-    req->prot_version = prot_major*10 + prot_minor;
-
-    /* find the last slash */
-    ptr = strrchr(doc, '/');
+  else if(req->testno == DOCNUMBER_NOTHING) {
+    char *http;
+    bool fine = FALSE;
+    char *httppath = NULL;
+    size_t npath = 0; /* httppath length */
 
-    /* get the number after it */
-    if(ptr) {
-      if((strlen(doc) + strlen(request)) < 400)
-        msnprintf(logbuf, sizeof(logbuf), "Got request: %s %s HTTP/%d.%d",
-                  request, doc, prot_major, prot_minor);
-      else
-        msnprintf(logbuf, sizeof(logbuf), "Got a *HUGE* request HTTP/%d.%d",
-                  prot_major, prot_minor);
-      logmsg("%s", logbuf);
+    if(sscanf(line,
+              "%" REQUEST_KEYWORD_SIZE_TXT"s ", request)) {
+      http = strstr(line + strlen(request), "HTTP/");
 
-      if(!strncmp("/verifiedserver", ptr, 15)) {
-        logmsg("Are-we-friendly question received");
-        req->testno = DOCNUMBER_WERULEZ;
-        return 1; /* done */
-      }
+      if(http && sscanf(http, "HTTP/%d.%d",
+                        &prot_major,
+                        &prot_minor) == 2) {
+        /* between the request keyword and HTTP/ there's a path */
+        httppath = line + strlen(request);
+        npath = http - httppath;
 
-      if(!strncmp("/quit", ptr, 5)) {
-        logmsg("Request-to-quit received");
-        req->testno = DOCNUMBER_QUIT;
-        return 1; /* done */
+        /* trim leading spaces */
+        while(npath && ISSPACE(*httppath)) {
+          httppath++;
+          npath--;
+        }
+        /* trim ending spaces */
+        while(npath && ISSPACE(httppath[npath - 1])) {
+          npath--;
+        }
+        if(npath)
+          fine = TRUE;
       }
+    }
 
-      ptr++; /* skip the slash */
-
-      /* skip all non-numericals following the slash */
-      while(*ptr && !ISDIGIT(*ptr))
-        ptr++;
+    if(fine) {
+      char *ptr;
 
-      req->testno = strtol(ptr, &ptr, 10);
+      req->prot_version = prot_major*10 + prot_minor;
 
-      if(req->testno > 10000) {
-        req->partno = req->testno % 10000;
-        req->testno /= 10000;
+      /* find the last slash */
+      ptr = &httppath[npath];
+      while(ptr >= httppath) {
+        if(*ptr == '/')
+          break;
+        ptr--;
       }
-      else
-        req->partno = 0;
-
-      if(req->testno) {
 
-        msnprintf(logbuf, sizeof(logbuf), "Requested test number %ld part %ld",
-                  req->testno, req->partno);
+      /* get the number after it */
+      if(*ptr == '/') {
+        if((npath + strlen(request)) < 400)
+          msnprintf(logbuf, sizeof(logbuf), "Got request: %s %.*s HTTP/%d.%d",
+                    request, npath, httppath, prot_major, prot_minor);
+        else
+          msnprintf(logbuf, sizeof(logbuf), "Got a *HUGE* request HTTP/%d.%d",
+                    prot_major, prot_minor);
         logmsg("%s", logbuf);
-      }
-      else {
-        logmsg("No test number");
-        req->testno = DOCNUMBER_NOTHING;
-      }
 
-    }
+        if(!strncmp("/verifiedserver", ptr, 15)) {
+          logmsg("Are-we-friendly question received");
+          req->testno = DOCNUMBER_WERULEZ;
+          return 1; /* done */
+        }
 
-    if(req->testno == DOCNUMBER_NOTHING) {
-      /* didn't find any in the first scan, try alternative test case
-         number placements */
+        if(!strncmp("/quit", ptr, 5)) {
+          logmsg("Request-to-quit received");
+          req->testno = DOCNUMBER_QUIT;
+          return 1; /* done */
+        }
 
-      if(sscanf(req->reqbuf, "CONNECT %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d",
-                doc, &prot_major, &prot_minor) == 3) {
-        char *portp = NULL;
+        ptr++; /* skip the slash */
 
-        msnprintf(logbuf, sizeof(logbuf),
-                  "Received a CONNECT %s HTTP/%d.%d request",
-                  doc, prot_major, prot_minor);
-        logmsg("%s", logbuf);
+        req->testno = strtol(ptr, &ptr, 10);
 
-        req->connect_request = TRUE;
-
-        if(req->prot_version == 10)
-          req->open = FALSE; /* HTTP 1.0 closes connection by default */
-
-        if(doc[0] == '[') {
-          char *p = &doc[1];
-          unsigned long part = 0;
-          /* scan through the hexgroups and store the value of the last group
-             in the 'part' variable and use as test case number!! */
-          while(*p && (ISXDIGIT(*p) || (*p == ':') || (*p == '.'))) {
-            char *endp;
-            part = strtoul(p, &endp, 16);
-            if(ISXDIGIT(*p))
-              p = endp;
-            else
-              p++;
-          }
-          if(*p != ']')
-            logmsg("Invalid CONNECT IPv6 address format");
-          else if(*(p + 1) != ':')
-            logmsg("Invalid CONNECT IPv6 port format");
-          else
-            portp = p + 1;
-
-          req->testno = part;
+        if(req->testno > 10000) {
+          req->partno = req->testno % 10000;
+          req->testno /= 10000;
         }
         else
-          portp = strchr(doc, ':');
+          req->partno = 0;
 
-        if(portp && (*(portp + 1) != '\0') && ISDIGIT(*(portp + 1))) {
-          unsigned long ulnum = strtoul(portp + 1, NULL, 10);
-          if(!ulnum || (ulnum > 65535UL))
-            logmsg("Invalid CONNECT port received");
-          else
-            req->connect_port = curlx_ultous(ulnum);
+        if(req->testno) {
 
+          msnprintf(logbuf, sizeof(logbuf), "Serve test number %ld part %ld",
+                    req->testno, req->partno);
+          logmsg("%s", logbuf);
+        }
+        else {
+          logmsg("No test number in path");
+          req->testno = DOCNUMBER_NOTHING;
         }
-        logmsg("Port number: %d, test case number: %ld",
-               req->connect_port, req->testno);
-      }
-    }
-
-    if(req->testno == DOCNUMBER_NOTHING) {
-      /* Still no test case number. Try to get the number off the last dot
-         instead, IE we consider the TLD to be the test number. Test 123 can
-         then be written as "example.com.123". */
-
-      /* find the last dot */
-      ptr = strrchr(doc, '.');
-
-      /* get the number after it */
-      if(ptr) {
-        long num;
-        ptr++; /* skip the dot */
-
-        num = strtol(ptr, &ptr, 10);
 
-        if(num) {
-          req->testno = num;
-          if(req->testno > 10000) {
-            req->partno = req->testno % 10000;
-            req->testno /= 10000;
+      }
 
-            logmsg("found test %d in requested host name", req->testno);
+      if(req->testno == DOCNUMBER_NOTHING) {
+        /* didn't find any in the first scan, try alternative test case
+           number placements */
+        static char doc[MAXDOCNAMELEN];
+        if(sscanf(req->reqbuf, "CONNECT %" MAXDOCNAMELEN_TXT "s HTTP/%d.%d",
+                  doc, &prot_major, &prot_minor) == 3) {
+          char *portp = NULL;
+
+          msnprintf(logbuf, sizeof(logbuf),
+                    "Received a CONNECT %s HTTP/%d.%d request",
+                    doc, prot_major, prot_minor);
+          logmsg("%s", logbuf);
+
+          req->connect_request = TRUE;
+
+          if(req->prot_version == 10)
+            req->open = FALSE; /* HTTP 1.0 closes connection by default */
+
+          if(doc[0] == '[') {
+            char *p = &doc[1];
+            unsigned long part = 0;
+            /* scan through the hexgroups and store the value of the last group
+               in the 'part' variable and use as test case number!! */
+            while(*p && (ISXDIGIT(*p) || (*p == ':') || (*p == '.'))) {
+              char *endp;
+              part = strtoul(p, &endp, 16);
+              if(ISXDIGIT(*p))
+                p = endp;
+              else
+                p++;
+            }
+            if(*p != ']')
+              logmsg("Invalid CONNECT IPv6 address format");
+            else if(*(p + 1) != ':')
+              logmsg("Invalid CONNECT IPv6 port format");
+            else
+              portp = p + 1;
 
+            req->testno = part;
           }
           else
-            req->partno = 0;
-        }
+            portp = strchr(doc, ':');
 
-        if(req->testno != DOCNUMBER_NOTHING) {
-          logmsg("Requested test number %ld part %ld (from host name)",
-                 req->testno, req->partno);
+          if(portp && (*(portp + 1) != '\0') && ISDIGIT(*(portp + 1))) {
+            unsigned long ulnum = strtoul(portp + 1, NULL, 10);
+            if(!ulnum || (ulnum > 65535UL))
+              logmsg("Invalid CONNECT port received");
+            else
+              req->connect_port = curlx_ultous(ulnum);
+
+          }
+          logmsg("Port number: %d, test case number: %ld",
+                 req->connect_port, req->testno);
         }
       }
-    }
 
-    if(req->testno == DOCNUMBER_NOTHING)
-      /* might get the test number */
-      parse_cmdfile(req);
+      if(req->testno == DOCNUMBER_NOTHING)
+        /* might get the test number */
+        parse_cmdfile(req);
 
-    if(req->testno == DOCNUMBER_NOTHING) {
-      logmsg("Did not find test number in PATH");
-      req->testno = DOCNUMBER_404;
+      if(req->testno == DOCNUMBER_NOTHING) {
+        logmsg("Did not find test number in PATH");
+        req->testno = DOCNUMBER_404;
+      }
+      else
+        parse_servercmd(req);
+    }
+    else if((req->offset >= 3)) {
+      unsigned char *l = (unsigned char *)line;
+      logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
+             l[0], l[1], l[2], l[0], l[1], l[2]);
     }
-    else
-      parse_servercmd(req);
-  }
-  else if((req->offset >= 3) && (req->testno == DOCNUMBER_NOTHING)) {
-    logmsg("** Unusual request. Starts with %02x %02x %02x (%c%c%c)",
-           line[0], line[1], line[2], line[0], line[1], line[2]);
   }
 
   if(!end) {
@@ -767,8 +764,9 @@ static int ProcessRequest(struct httprequest *req)
 
   if(req->upgrade && strstr(req->reqbuf, "Upgrade:")) {
     /* we allow upgrade and there was one! */
-    logmsg("Found Upgrade: in request and allows it");
+    logmsg("Found Upgrade: in request and allow it");
     req->upgrade_request = TRUE;
+    return 0; /* not done */
   }
 
   if(req->cl > 0) {
@@ -861,6 +859,8 @@ static void init_httprequest(struct httprequest *req)
   req->upgrade_request = 0;
 }
 
+static int send_doc(curl_socket_t sock, struct httprequest *req);
+
 /* returns 1 if the connection should be serviced again immediately, 0 if there
    is no data waiting, or < 0 if it should be closed */
 static int get_request(curl_socket_t sock, struct httprequest *req)
@@ -870,6 +870,56 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
   ssize_t got = 0;
   int overflow = 0;
 
+  if(req->upgrade_request) {
+    /* upgraded connection, work it differently until end of connection */
+    logmsg("Upgraded connection, this is a no longer HTTP/1");
+    send_doc(sock, req);
+
+    /* dump the request received so far to the external file */
+    reqbuf[req->offset] = '\0';
+    storerequest(reqbuf, req->offset);
+    req->offset = 0;
+
+    /* read websocket traffic */
+    do {
+
+      got = sread(sock, reqbuf + req->offset, REQBUFSIZ - req->offset);
+      if(got > 0)
+        req->offset += got;
+      logmsg("Got: %d", (int)got);
+
+      if((got == -1) && ((EAGAIN == errno) || (EWOULDBLOCK == errno))) {
+        int rc;
+        fd_set input;
+        fd_set output;
+        struct timeval timeout = {1, 0}; /* 1000 ms */
+
+        FD_ZERO(&input);
+        FD_ZERO(&output);
+        got = 0;
+        FD_SET(sock, &input);
+        do {
+          logmsg("Wait until readable");
+          rc = select((int)sock + 1, &input, &output, NULL, &timeout);
+        } while(rc < 0 && errno == EINTR && !got_exit_signal);
+        logmsg("readable %d", rc);
+        if(rc)
+          got = 1;
+      }
+    } while(got > 0);
+
+    if(req->offset) {
+      logmsg("log the websocket traffic");
+      /* dump the incoming websocket traffic to the external file */
+      reqbuf[req->offset] = '\0';
+      storerequest(reqbuf, req->offset);
+      req->offset = 0;
+    }
+    init_httprequest(req);
+
+    return -1;
+  }
+
   if(req->offset >= REQBUFSIZ-1) {
     /* buffer is already full; do nothing */
     overflow = 1;
@@ -877,7 +927,7 @@ static int get_request(curl_socket_t sock, struct httprequest *req)
   else {
     if(req->skip)
       /* we are instructed to not read the entire thing, so we make sure to
-         only read what we're supposed to and NOT read the enire thing the
+         only read what we're supposed to and NOT read the entire thing the
          client wants to send! */
       got = sread(sock, reqbuf + req->offset, req->cl);
     else
@@ -1126,11 +1176,18 @@ static int send_doc(curl_socket_t sock, struct httprequest *req)
     buffer += written;
 
     if(req->writedelay) {
-      int quarters = req->writedelay * 4;
-      logmsg("Pausing %d seconds", req->writedelay);
-      while((quarters > 0) && !got_exit_signal) {
-        quarters--;
-        wait_ms(250);
+      int msecs_left = req->writedelay;
+      int intervals = msecs_left / MAX_SLEEP_TIME_MS;
+      if(msecs_left%MAX_SLEEP_TIME_MS)
+        intervals++;
+      logmsg("Pausing %d milliseconds after writing %d bytes",
+         msecs_left, written);
+      while((intervals > 0) && !got_exit_signal) {
+        int sleep_time = msecs_left > MAX_SLEEP_TIME_MS ?
+          MAX_SLEEP_TIME_MS : msecs_left;
+        intervals--;
+        wait_ms(sleep_time);
+        msecs_left -= sleep_time;
       }
     }
   } while((count > 0) && !got_exit_signal);
@@ -1705,10 +1762,10 @@ http_connect_cleanup:
   *infdp = CURL_SOCKET_BAD;
 }
 
-static void http2(struct httprequest *req)
+static void http_upgrade(struct httprequest *req)
 {
   (void)req;
-  logmsg("switched to http2");
+  logmsg("Upgraded to ... %u", req->upgrade_request);
   /* left to implement */
 }
 
@@ -1849,9 +1906,9 @@ static int service_connection(curl_socket_t msgsock, struct httprequest *req,
   }
 
   if(req->upgrade_request) {
-    /* an upgrade request, switch to http2 here */
-    http2(req);
-    return -1;
+    /* an upgrade request, switch to another protocol here */
+    http_upgrade(req);
+    return 1;
   }
 
   /* if we got a CONNECT, loop and get another request as well! */
@@ -2066,59 +2123,7 @@ int main(int argc, char *argv[])
 #endif /* ENABLE_IPV6 */
 #ifdef USE_UNIX_SOCKETS
   case AF_UNIX:
-    memset(&me.sau, 0, sizeof(me.sau));
-    me.sau.sun_family = AF_UNIX;
-    strncpy(me.sau.sun_path, unix_socket, sizeof(me.sau.sun_path) - 1);
-    rc = bind(sock, &me.sa, sizeof(me.sau));
-    if(0 != rc && errno == 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));
-        goto sws_cleanup;
-      }
-      /* check whether the server is alive */
-      rc = connect(unixfd, &me.sa, sizeof(me.sau));
-      error = errno;
-      sclose(unixfd);
-      if(ECONNREFUSED != error) {
-        logmsg("Error binding socket, failed to connect to %s: (%d) %s",
-               unix_socket, error, strerror(error));
-        goto sws_cleanup;
-      }
-      /* socket server is not alive, now check if it was actually a socket. */
-#ifdef WIN32
-      /* Windows does not have lstat function. */
-      rc = curlx_win32_stat(unix_socket, &statbuf);
-#else
-      rc = lstat(unix_socket, &statbuf);
-#endif
-      if(0 != rc) {
-        logmsg("Error binding socket, failed to stat %s: (%d) %s",
-               unix_socket, errno, strerror(errno));
-        goto sws_cleanup;
-      }
-#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));
-        goto sws_cleanup;
-      }
-#endif
-      /* dead socket, cleanup and retry bind */
-      rc = unlink(unix_socket);
-      if(0 != rc) {
-        logmsg("Error binding socket, failed to unlink %s: (%d) %s",
-               unix_socket, errno, strerror(errno));
-        goto sws_cleanup;
-      }
-      /* stale socket is gone, retry bind */
-      rc = bind(sock, &me.sa, sizeof(me.sau));
-    }
-    break;
+    rc = bind_unix_socket(sock, unix_socket, &me.sau);
 #endif /* USE_UNIX_SOCKETS */
   }
   if(0 != rc) {
@@ -2322,7 +2327,7 @@ int main(int argc, char *argv[])
           }
 
           /* Reset the request, unless we're still in the middle of reading */
-          if(rc)
+          if(rc && !req->upgrade_request)
             init_httprequest(req);
         } while(rc > 0);
       }
index 1ea9c20046a0a6233041ebd677b51cf251f3977a..f54c71281a73008fa1bb9edad83ca499671dfd14 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index 569967222d61ae3f89e097124517111af7f94884..d8328dcf40b31c5dc9e93d3dfab0f3b73643d5f6 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
index 4c1585497682563696e3783e0af5d9585c6377e3..c97c5a71fb722895a61079ca7eaa6a9241d91be3 100644 (file)
@@ -15,7 +15,7 @@
  */
 
 /*
- * Copyright (C) 2005 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2005 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (c) 1983, Regents of the University of California.
  * All rights reserved.
  *
@@ -46,6 +46,8 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ * SPDX-License-Identifier: BSD-4-Clause-UC
  */
 
 #include "server_setup.h"
@@ -86,6 +88,8 @@
 #include <pwd.h>
 #endif
 
+#include <ctype.h>
+
 #define ENABLE_CURLX_PRINTF
 /* make the curlx header define all printf() functions to use the curlx_*
    versions instead */
index 81e705c1525d2e91d11c27cc4f2f0bf9ec99f6b8..d2214ee6e495cb3a6703e270240603e9196d0e66 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
@@ -159,11 +161,10 @@ void win32_perror(const char *msg)
     fprintf(stderr, "%s: ", msg);
   fprintf(stderr, "%s\n", buf);
 }
-#endif  /* WIN32 */
 
-#ifdef USE_WINSOCK
 void win32_init(void)
 {
+#ifdef USE_WINSOCK
   WORD wVersionRequested;
   WSADATA wsaData;
   int err;
@@ -184,14 +185,20 @@ void win32_init(void)
     logmsg("No suitable winsock.dll found -- aborting");
     exit(1);
   }
+#endif  /* USE_WINSOCK */
 }
 
 void win32_cleanup(void)
 {
+#ifdef USE_WINSOCK
   WSACleanup();
-}
 #endif  /* USE_WINSOCK */
 
+  /* flush buffers of all streams regardless of their mode */
+  _flushall();
+}
+#endif  /* WIN32 */
+
 /* set by the main code to point to where the test dir is */
 const char *path = ".";
 
@@ -364,66 +371,8 @@ void clear_advisor_read_lock(const char *filename)
    its behavior is altered by the current locale. */
 static char raw_toupper(char in)
 {
-#if !defined(CURL_DOES_CONVERSIONS)
   if(in >= 'a' && in <= 'z')
     return (char)('A' + in - 'a');
-#else
-  switch(in) {
-  case 'a':
-    return 'A';
-  case 'b':
-    return 'B';
-  case 'c':
-    return 'C';
-  case 'd':
-    return 'D';
-  case 'e':
-    return 'E';
-  case 'f':
-    return 'F';
-  case 'g':
-    return 'G';
-  case 'h':
-    return 'H';
-  case 'i':
-    return 'I';
-  case 'j':
-    return 'J';
-  case 'k':
-    return 'K';
-  case 'l':
-    return 'L';
-  case 'm':
-    return 'M';
-  case 'n':
-    return 'N';
-  case 'o':
-    return 'O';
-  case 'p':
-    return 'P';
-  case 'q':
-    return 'Q';
-  case 'r':
-    return 'R';
-  case 's':
-    return 'S';
-  case 't':
-    return 'T';
-  case 'u':
-    return 'U';
-  case 'v':
-    return 'V';
-  case 'w':
-    return 'W';
-  case 'x':
-    return 'X';
-  case 'y':
-    return 'Y';
-  case 'z':
-    return 'Z';
-  }
-#endif
-
   return in;
 }
 
@@ -572,7 +521,11 @@ static SIGHANDLER_T old_sigbreak_handler = SIG_ERR;
 #endif
 
 #ifdef WIN32
+#ifdef _WIN32_WCE
 static DWORD thread_main_id = 0;
+#else
+static unsigned int thread_main_id = 0;
+#endif
 static HANDLE thread_main_window = NULL;
 static HWND hidden_main_window = NULL;
 #endif
@@ -675,7 +628,12 @@ static LRESULT CALLBACK main_window_proc(HWND hwnd, UINT uMsg,
 }
 /* Window message queue loop for hidden main window, details see above.
  */
+#ifdef _WIN32_WCE
 static DWORD WINAPI main_window_loop(LPVOID lpParameter)
+#else
+#include <process.h>
+static unsigned int WINAPI main_window_loop(void *lpParameter)
+#endif
 {
   WNDCLASS wc;
   BOOL ret;
@@ -756,6 +714,14 @@ static SIGHANDLER_T set_signal(int signum, SIGHANDLER_T handler,
 void install_signal_handlers(bool keep_sigalrm)
 {
 #ifdef WIN32
+#ifdef _WIN32_WCE
+  typedef HANDLE curl_win_thread_handle_t;
+#elif defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+  typedef unsigned long curl_win_thread_handle_t;
+#else
+  typedef uintptr_t curl_win_thread_handle_t;
+#endif
+  curl_win_thread_handle_t thread;
   /* setup windows exit event before any signal can trigger */
   exit_event = CreateEvent(NULL, TRUE, FALSE, NULL);
   if(!exit_event)
@@ -804,10 +770,14 @@ void install_signal_handlers(bool keep_sigalrm)
 #ifdef WIN32
   if(!SetConsoleCtrlHandler(ctrl_event_handler, TRUE))
     logmsg("cannot install CTRL event handler");
-  thread_main_window = CreateThread(NULL, 0,
-                                    &main_window_loop,
-                                    (LPVOID)GetModuleHandle(NULL),
-                                    0, &thread_main_id);
+#ifdef _WIN32_WCE
+  thread = CreateThread(NULL, 0, &main_window_loop,
+                        (LPVOID)GetModuleHandle(NULL), 0, &thread_main_id);
+#else
+  thread = _beginthreadex(NULL, 0, &main_window_loop,
+                          (void *)GetModuleHandle(NULL), 0, &thread_main_id);
+#endif
+  thread_main_window = (HANDLE)thread;
   if(!thread_main_window || !thread_main_id)
     logmsg("cannot start main window loop");
 #endif
@@ -862,3 +832,66 @@ void restore_signal_handlers(bool keep_sigalrm)
   }
 #endif
 }
+
+#ifdef USE_UNIX_SOCKETS
+
+int bind_unix_socket(curl_socket_t sock, const char *unix_socket,
+        struct sockaddr_un *sau) {
+    int error;
+    int rc;
+
+    memset(sau, 0, sizeof(struct sockaddr_un));
+    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) {
+      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;
+      }
+      /* check whether the server is alive */
+      rc = connect(unixfd, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
+      error = errno;
+      sclose(unixfd);
+      if(ECONNREFUSED != error) {
+        logmsg("Error binding socket, failed to connect to %s: (%d) %s",
+               unix_socket, error, strerror(error));
+        return rc;
+      }
+      /* socket server is not alive, now check if it was actually a socket. */
+#ifdef WIN32
+      /* Windows does not have lstat function. */
+      rc = curlx_win32_stat(unix_socket, &statbuf);
+#else
+      rc = lstat(unix_socket, &statbuf);
+#endif
+      if(0 != rc) {
+        logmsg("Error binding socket, failed to stat %s: (%d) %s",
+               unix_socket, errno, strerror(errno));
+        return rc;
+      }
+#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;
+      }
+#endif
+      /* dead socket, cleanup and retry bind */
+      rc = unlink(unix_socket);
+      if(0 != rc) {
+        logmsg("Error binding socket, failed to unlink %s: (%d) %s",
+               unix_socket, errno, strerror(errno));
+        return rc;
+      }
+      /* stale socket is gone, retry bind */
+      rc = bind(sock, (struct sockaddr*)sau, sizeof(struct sockaddr_un));
+    }
+    return rc;
+}
+#endif
index 140e349f38c841155c6f459900ed9a52c4b31ef9..76ca37140d4d261c112cbc70e44b8cc4f1941002 100644 (file)
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -20,6 +20,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "server_setup.h"
 
@@ -40,7 +42,7 @@ extern const char *serverlogfile;
 
 extern const char *cmdfile;
 
-#if defined(WIN32) || defined(_WIN32)
+#ifdef WIN32
 #include <process.h>
 #include <fcntl.h>
 
@@ -49,12 +51,10 @@ extern const char *cmdfile;
 #undef perror
 #define perror(m) win32_perror(m)
 void win32_perror(const char *msg);
-#endif  /* WIN32 or _WIN32 */
 
-#ifdef USE_WINSOCK
 void win32_init(void);
 void win32_cleanup(void);
-#endif  /* USE_WINSOCK */
+#endif  /* WIN32 */
 
 /* fopens the test case file */
 FILE *test2fopen(long testno);
@@ -81,4 +81,16 @@ extern HANDLE exit_event;
 void install_signal_handlers(bool keep_sigalrm);
 void restore_signal_handlers(bool keep_sigalrm);
 
+#ifdef USE_UNIX_SOCKETS
+
+#include <curl/curl.h> /* for curl_socket_t */
+
+#ifdef HAVE_SYS_UN_H
+#include <sys/un.h> /* for sockaddr_un */
+#endif /* HAVE_SYS_UN_H */
+
+int bind_unix_socket(curl_socket_t sock, const char *unix_socket,
+        struct sockaddr_un *sau);
+#endif  /* USE_UNIX_SOCKETS */
+
 #endif  /* HEADER_CURL_SERVER_UTIL_H */
index 77eceec1ac0b9eb51cfbf2909e4d0715ece0bf1e..7d312cc032a1324033ae4069a7c7aa0e3c1f8288 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 package serverhelp;
index 3c4b96ed2dd4bf8b355482659d2293a8b3e9fa8a..62f2d7a0fd44666ac2803b63268ded0fbd18a669 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 """Server for testing SMB"""
 
 from __future__ import (absolute_import, division, print_function,
index dd881422495e1573d37b4cab03d62170525204e2..2d419c184962e9ec2a1af07d519ab037e6112cd3 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 package sshhelp;
index 526ed099f374fb00ea71d65533991b8f89f38d81..576b70635f8eaff92d5f4a9a57213c999053444a 100644 (file)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 # Starts sshd for use in the SCP and SFTP curl test harness tests.
index d3058b190244b3f076c9ab275f5bbe44ca9e4177..8efa307915664cdcaf60df8178531aa6acd8f5c5 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # This script grew out of help from Przemyslaw Iskra and Balint Szilakszi
@@ -51,48 +53,95 @@ my $root=$ARGV[0] || ".";
 # need an include directory when building out-of-tree
 my $i = ($ARGV[1]) ? "-I$ARGV[1] " : '';
 
-my $h = "$root/include/curl/curl.h";
-my $mh = "$root/include/curl/multi.h";
-my $ua = "$root/include/curl/urlapi.h";
-
 my $verbose=0;
 my $summary=0;
 my $misses=0;
 
+my @manrefs;
 my @syms;
 my %doc;
 my %rem;
 
-open H_IN, "-|", "$Cpreprocessor $i$h" || die "Cannot preprocess curl.h";
-while ( <H_IN> ) {
-    if ( /enum\s+(\S+\s+)?{/ .. /}/ ) {
-        s/^\s+//;
-        next unless /^CURL/;
-        chomp;
-        s/[,\s].*//;
-        push @syms, $_;
+# scanenum runs the preprocessor on curl.h so it will process all enums
+# included by it, which *should* be all headers
+sub scanenum {
+    my ($file) = @_;
+    open H_IN, "-|", "$Cpreprocessor $i$file" || die "Cannot preprocess $file";
+    while ( <H_IN> ) {
+        if ( /enum\s+(\S+\s+)?{/ .. /}/ ) {
+            s/^\s+//;
+            next unless /^CURL/;
+            chomp;
+            s/[,\s].*//;
+            push @syms, $_;
+        }
     }
+    close H_IN || die "Error preprocessing $file";
 }
-close H_IN || die "Error preprocessing curl.h";
 
 sub scanheader {
     my ($f)=@_;
     open H, "<$f";
     while(<H>) {
-        if (/^#define (CURL[A-Za-z0-9_]*)/) {
+        if (/^#define ((LIB|)CURL[A-Za-z0-9_]*)/) {
             push @syms, $1;
         }
     }
     close H;
 }
 
-scanheader($h);
-scanheader($mh);
-scanheader($ua);
+sub scanallheaders {
+    my $d = "$root/include/curl";
+    opendir(my $dh, $d) ||
+        die "Can't opendir: $!";
+    my @headers = grep { /.h\z/ } readdir($dh);
+    closedir $dh;
+    foreach my $h (@headers) {
+        scanenum("$d/$h");
+        scanheader("$d/$h");
+    }
+}
+
+sub checkmanpage {
+    my ($m) = @_;
+
+    open(M, "<$m");
+    my $line = 1;
+    while(<M>) {
+        # strip off formatting
+        $_ =~ s/\\f[BPRI]//;
+        # detect global-looking 'CURL[BLABLA]_*' symbols
+        while(s/\W(CURL(AUTH|E|H|MOPT|OPT|SHOPT|UE|M|SSH|SSLBACKEND|HEADER|FORM|FTP|PIPE|MIMEOPT|GSSAPI|ALTSVC|PROTO|PROXY|UPART|USESSL|_READFUNC|_WRITEFUNC|_CSELECT|_FORMADD|_IPRESOLVE|_REDIR|_RTSPREQ|_TIMECOND|_VERSION)_[a-zA-Z0-9_]+)//) {
+            my $s = $1;
+            # skip two "special" ones
+            if($s !~ /^(CURLE_OBSOLETE|CURLOPT_TEMPLATE)/) {
+                push @manrefs, "$1:$m:$line";
+            }
+        }
+        $line++;
+    }
+    close(M);
+}
+
+sub scanman3dir {
+    my ($d) = @_;
+    opendir(my $dh, $d) ||
+        die "Can't opendir: $!";
+    my @mans = grep { /.3\z/ } readdir($dh);
+    closedir $dh;
+    for my $m (@mans) {
+        checkmanpage("$d/$m");
+    }
+}
+
+
+scanallheaders();
+scanman3dir("$root/docs/libcurl");
+scanman3dir("$root/docs/libcurl/opts");
 
 open S, "<$root/docs/libcurl/symbols-in-versions";
 while(<S>) {
-    if(/(^CURL[^ \n]*) *(.*)/) {
+    if(/(^[^ \n]+) +(.*)/) {
         my ($sym, $rest)=($1, $2);
         if($doc{$sym}) {
             print "Detected duplicate symbol: $sym\n";
@@ -165,6 +214,17 @@ for my $e (sort keys %doc) {
     }
 }
 
+my %warned;
+for my $r (@manrefs) {
+    if($r =~ /^([^:]+):(.*)/) {
+        my ($sym, $file)=($1, $2);
+        if(!$doc{$sym} && !$warned{$sym, $file}) {
+            print "$file: $sym is not a public symbol\n";
+            $warned{$sym, $file} = 1;
+        }
+    }
+}
+
 if($summary) {
     print "Summary:\n";
     printf "%d symbols in headers (out of which %d are ignored)\n", scalar(@syms),
index c06e4f1a9c5d720c88909fe115e9bc3c99b23768..75374447bc398ec1ddc92546bcdd3a2305a90e92 100644 (file)
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2022, 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
 .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 .\" * KIND, either express or implied.
 .\" *
+.\" * SPDX-License-Identifier: curl
+.\" *
 .\" **************************************************************************
 .\"
-.TH testcurl.pl 1 "November 05, 2020" "Curl 7.81.0" "testcurl"
+.TH testcurl.pl 1 "May 17, 2022" "Curl 7.86.0" "testcurl"
 
 .SH NAME
 testcurl.pl \- (automatically) test curl
@@ -76,7 +78,7 @@ store the info in a 'setup' file, which it will look for on each invoke. Use
 \fI--name\fP, \fI--email\fP, \fI--configure\fP and \fI--desc\fP instead.
 .IP "--target=[your os]"
 Specify your target environment. Recognized strings include 'vc', 'mingw32',
-\&'borland' and 'netware'.
+and \&'borland'.
 .SH "INITIAL SETUP"
 First you make a checkout from git (or you write a script that downloads daily
 snapshots automatically, find inspiration in
index 541ff9d8c4b669b00aac68074c1a4b9aaa38c96c..acf2c6b06d820c8c4c0af5546a95d687252fa52f 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 ###########################
@@ -151,7 +153,7 @@ if ($^O eq 'MSWin32' || $targetos) {
     # If no target defined on Win32 lets assume vc
     $targetos = 'vc';
   }
-  if ($targetos =~ /vc/ || $targetos =~ /borland/ || $targetos =~ /watcom/) {
+  if ($targetos =~ /vc/ || $targetos =~ /borland/) {
     $binext = '.exe';
     $libext = '.lib';
   }
@@ -161,21 +163,11 @@ if ($^O eq 'MSWin32' || $targetos) {
       $libext = '.a';
     }
   }
-  elsif ($targetos =~ /netware/) {
-    $configurebuild = 0;
-    $binext = '.nlm';
-    if ($^O eq 'MSWin32') {
-      $libext = '.lib';
-    }
-    else {
-      $libext = '.a';
-    }
-  }
 }
 
 if (($^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'msys') &&
     ($targetos =~ /vc/ || $targetos =~ /mingw32/ ||
-     $targetos =~ /borland/ || $targetos =~ /watcom/)) {
+     $targetos =~ /borland/)) {
 
   # Set these things only when building ON Windows and for Win32 platform.
   # FOR Windows since we might be cross-compiling on another system. Non-
@@ -476,8 +468,8 @@ if ($git) {
     unlink "autom4te.cache";
 
     # generate the build files
-    logit "invoke buildconf";
-    open(F, "./buildconf 2>&1 |") or die;
+    logit "invoke autoreconf";
+    open(F, "autoreconf -fi 2>&1 |") or die;
     open(LOG, ">$buildlog") or die;
     while (<F>) {
       my $ll = $_;
@@ -546,8 +538,6 @@ if(!$make) {
 }
 # force to 'nmake' for VC builds
 $make = "nmake" if ($targetos =~ /vc/);
-# force to 'wmake' for Watcom builds
-$make = "wmake" if ($targetos =~ /watcom/);
 logit "going with $make as make";
 
 # change to build dir
@@ -564,19 +554,10 @@ if ($configurebuild) {
   }
 } else {
   logit "copying files to build dir ...";
-  if (($^O eq 'MSWin32') && ($targetos !~ /netware/)) {
+  if ($^O eq 'MSWin32') {
     system("xcopy /s /q \"$CURLDIR\" .");
     system("buildconf.bat");
   }
-  elsif ($targetos =~ /netware/) {
-    system("cp -afr $CURLDIR/* .");
-    system("cp -af $CURLDIR/Makefile.dist Makefile");
-    system("$make -i -C lib -f Makefile.netware prebuild");
-    system("$make -i -C src -f Makefile.netware prebuild");
-    if (-d "$CURLDIR/ares") {
-      system("$make -i -C ares -f Makefile.netware prebuild");
-    }
-  }
   elsif ($^O eq 'linux') {
     system("cp -afr $CURLDIR/* .");
     system("cp -af $CURLDIR/Makefile.dist Makefile");
index 9486539b8b26544689b2598979dac6a71855e52d..9db73433096107a15991d2d1a94ee506911fbfc5 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 BEGIN {
index cc4b7bf4659bd820de074b88671205412e982e17..8798165c84db9036476da4ce6657a0a3a8650491 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # TODO build a special libcurlu library for unittests.
index e2fdd8760d7c155c49481476c4c8598a53450162..a0d7a94959af903362ebb836be7ce770215e5104 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
 
@@ -29,24 +31,12 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
 
-if USE_EMBEDDED_ARES
-AM_CPPFLAGS = -I$(top_srcdir)/include        \
-              -I$(top_builddir)/lib          \
-              -I$(top_srcdir)/lib            \
-              -I$(top_srcdir)/src            \
-              -I$(top_srcdir)/tests/libtest  \
-              -I$(top_builddir)/ares         \
-              -I$(top_srcdir)/ares
-else
 AM_CPPFLAGS = -I$(top_srcdir)/include        \
               -I$(top_builddir)/lib          \
               -I$(top_srcdir)/lib            \
               -I$(top_srcdir)/src            \
               -I$(top_srcdir)/tests/libtest
-endif
 
 EXTRA_DIST = Makefile.inc CMakeLists.txt README.md
 
@@ -57,7 +47,7 @@ LIBS = $(BLANK_AT_MAKETIME)
 
 LDADD = $(top_builddir)/src/libcurltool.la   \
         $(top_builddir)/lib/libcurlu.la      \
-        @LDFLAGS@ @LIBCURL_LIBS@
+        @LDFLAGS@ @LIBCURL_LIBS@ @NSS_LIBS@
 
 AM_CPPFLAGS += -DCURL_STATICLIB -DUNITTESTS
 
@@ -70,7 +60,7 @@ CS_1 =
 CS_ = $(CS_0)
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
 
 if BUILD_UNITTESTS
 noinst_PROGRAMS = $(UNITPROGS)
index ed7f410475ba28565f30a387e206c0cba72fbf1e..30ab92a3bba716204c9b2d4f5fa641a16e25db1e 100644 (file)
@@ -21,7 +21,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -34,6 +34,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # these files are used in every single unit test program
@@ -115,15 +117,13 @@ host_triplet = @host@
 @BUILD_UNITTESTS_TRUE@noinst_PROGRAMS = $(am__EXEEXT_1)
 subdir = tests/unit
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compile_check_sizeof.m4 \
-       $(top_srcdir)/m4/curl-amissl.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \
        $(top_srcdir)/m4/curl-bearssl.m4 \
        $(top_srcdir)/m4/curl-compilers.m4 \
        $(top_srcdir)/m4/curl-confopts.m4 \
        $(top_srcdir)/m4/curl-functions.m4 \
        $(top_srcdir)/m4/curl-gnutls.m4 \
-       $(top_srcdir)/m4/curl-mbedtls.m4 \
-       $(top_srcdir)/m4/curl-mesalink.m4 $(top_srcdir)/m4/curl-nss.m4 \
+       $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \
        $(top_srcdir)/m4/curl-openssl.m4 \
        $(top_srcdir)/m4/curl-override.m4 \
        $(top_srcdir)/m4/curl-reentrant.m4 \
@@ -160,10 +160,10 @@ am__EXEEXT_1 = unit1300$(EXEEXT) unit1301$(EXEEXT) unit1302$(EXEEXT) \
        unit1604$(EXEEXT) unit1605$(EXEEXT) unit1606$(EXEEXT) \
        unit1607$(EXEEXT) unit1608$(EXEEXT) unit1609$(EXEEXT) \
        unit1610$(EXEEXT) unit1611$(EXEEXT) unit1612$(EXEEXT) \
-       unit1620$(EXEEXT) unit1621$(EXEEXT) unit1650$(EXEEXT) \
-       unit1651$(EXEEXT) unit1652$(EXEEXT) unit1653$(EXEEXT) \
-       unit1654$(EXEEXT) unit1655$(EXEEXT) unit1660$(EXEEXT) \
-       unit1661$(EXEEXT)
+       unit1614$(EXEEXT) unit1620$(EXEEXT) unit1621$(EXEEXT) \
+       unit1650$(EXEEXT) unit1651$(EXEEXT) unit1652$(EXEEXT) \
+       unit1653$(EXEEXT) unit1654$(EXEEXT) unit1655$(EXEEXT) \
+       unit1660$(EXEEXT) unit1661$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
 am__dirstamp = $(am__leading_dot)dirstamp
 am__objects_1 = ../libtest/unit1300-first.$(OBJEXT)
@@ -351,61 +351,67 @@ unit1612_OBJECTS = $(am_unit1612_OBJECTS)
 unit1612_LDADD = $(LDADD)
 unit1612_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_31 = ../libtest/unit1620-first.$(OBJEXT)
-am_unit1620_OBJECTS = unit1620-unit1620.$(OBJEXT) $(am__objects_31)
+am__objects_31 = ../libtest/unit1614-first.$(OBJEXT)
+am_unit1614_OBJECTS = unit1614-unit1614.$(OBJEXT) $(am__objects_31)
+unit1614_OBJECTS = $(am_unit1614_OBJECTS)
+unit1614_LDADD = $(LDADD)
+unit1614_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
+       $(top_builddir)/lib/libcurlu.la
+am__objects_32 = ../libtest/unit1620-first.$(OBJEXT)
+am_unit1620_OBJECTS = unit1620-unit1620.$(OBJEXT) $(am__objects_32)
 unit1620_OBJECTS = $(am_unit1620_OBJECTS)
 unit1620_LDADD = $(LDADD)
 unit1620_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_32 = ../libtest/unit1621-first.$(OBJEXT)
-am_unit1621_OBJECTS = unit1621-unit1621.$(OBJEXT) $(am__objects_32)
+am__objects_33 = ../libtest/unit1621-first.$(OBJEXT)
+am_unit1621_OBJECTS = unit1621-unit1621.$(OBJEXT) $(am__objects_33)
 unit1621_OBJECTS = $(am_unit1621_OBJECTS)
 unit1621_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurl.la
-am__objects_33 = ../libtest/unit1650-first.$(OBJEXT)
-am_unit1650_OBJECTS = unit1650-unit1650.$(OBJEXT) $(am__objects_33)
+am__objects_34 = ../libtest/unit1650-first.$(OBJEXT)
+am_unit1650_OBJECTS = unit1650-unit1650.$(OBJEXT) $(am__objects_34)
 unit1650_OBJECTS = $(am_unit1650_OBJECTS)
 unit1650_LDADD = $(LDADD)
 unit1650_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_34 = ../libtest/unit1651-first.$(OBJEXT)
-am_unit1651_OBJECTS = unit1651-unit1651.$(OBJEXT) $(am__objects_34)
+am__objects_35 = ../libtest/unit1651-first.$(OBJEXT)
+am_unit1651_OBJECTS = unit1651-unit1651.$(OBJEXT) $(am__objects_35)
 unit1651_OBJECTS = $(am_unit1651_OBJECTS)
 unit1651_LDADD = $(LDADD)
 unit1651_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_35 = ../libtest/unit1652-first.$(OBJEXT)
-am_unit1652_OBJECTS = unit1652-unit1652.$(OBJEXT) $(am__objects_35)
+am__objects_36 = ../libtest/unit1652-first.$(OBJEXT)
+am_unit1652_OBJECTS = unit1652-unit1652.$(OBJEXT) $(am__objects_36)
 unit1652_OBJECTS = $(am_unit1652_OBJECTS)
 unit1652_LDADD = $(LDADD)
 unit1652_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_36 = ../libtest/unit1653-first.$(OBJEXT)
-am_unit1653_OBJECTS = unit1653-unit1653.$(OBJEXT) $(am__objects_36)
+am__objects_37 = ../libtest/unit1653-first.$(OBJEXT)
+am_unit1653_OBJECTS = unit1653-unit1653.$(OBJEXT) $(am__objects_37)
 unit1653_OBJECTS = $(am_unit1653_OBJECTS)
 unit1653_LDADD = $(LDADD)
 unit1653_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_37 = ../libtest/unit1654-first.$(OBJEXT)
-am_unit1654_OBJECTS = unit1654-unit1654.$(OBJEXT) $(am__objects_37)
+am__objects_38 = ../libtest/unit1654-first.$(OBJEXT)
+am_unit1654_OBJECTS = unit1654-unit1654.$(OBJEXT) $(am__objects_38)
 unit1654_OBJECTS = $(am_unit1654_OBJECTS)
 unit1654_LDADD = $(LDADD)
 unit1654_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_38 = ../libtest/unit1655-first.$(OBJEXT)
-am_unit1655_OBJECTS = unit1655-unit1655.$(OBJEXT) $(am__objects_38)
+am__objects_39 = ../libtest/unit1655-first.$(OBJEXT)
+am_unit1655_OBJECTS = unit1655-unit1655.$(OBJEXT) $(am__objects_39)
 unit1655_OBJECTS = $(am_unit1655_OBJECTS)
 unit1655_LDADD = $(LDADD)
 unit1655_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_39 = ../libtest/unit1660-first.$(OBJEXT)
-am_unit1660_OBJECTS = unit1660-unit1660.$(OBJEXT) $(am__objects_39)
+am__objects_40 = ../libtest/unit1660-first.$(OBJEXT)
+am_unit1660_OBJECTS = unit1660-unit1660.$(OBJEXT) $(am__objects_40)
 unit1660_OBJECTS = $(am_unit1660_OBJECTS)
 unit1660_LDADD = $(LDADD)
 unit1660_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
        $(top_builddir)/lib/libcurlu.la
-am__objects_40 = ../libtest/unit1661-first.$(OBJEXT)
-am_unit1661_OBJECTS = unit1661-unit1661.$(OBJEXT) $(am__objects_40)
+am__objects_41 = ../libtest/unit1661-first.$(OBJEXT)
+am_unit1661_OBJECTS = unit1661-unit1661.$(OBJEXT) $(am__objects_41)
 unit1661_OBJECTS = $(am_unit1661_OBJECTS)
 unit1661_LDADD = $(LDADD)
 unit1661_DEPENDENCIES = $(top_builddir)/src/libcurltool.la \
@@ -455,6 +461,7 @@ am__depfiles_remade = ../libtest/$(DEPDIR)/unit1300-first.Po \
        ../libtest/$(DEPDIR)/unit1610-first.Po \
        ../libtest/$(DEPDIR)/unit1611-first.Po \
        ../libtest/$(DEPDIR)/unit1612-first.Po \
+       ../libtest/$(DEPDIR)/unit1614-first.Po \
        ../libtest/$(DEPDIR)/unit1620-first.Po \
        ../libtest/$(DEPDIR)/unit1621-first.Po \
        ../libtest/$(DEPDIR)/unit1650-first.Po \
@@ -495,6 +502,7 @@ am__depfiles_remade = ../libtest/$(DEPDIR)/unit1300-first.Po \
        ./$(DEPDIR)/unit1610-unit1610.Po \
        ./$(DEPDIR)/unit1611-unit1611.Po \
        ./$(DEPDIR)/unit1612-unit1612.Po \
+       ./$(DEPDIR)/unit1614-unit1614.Po \
        ./$(DEPDIR)/unit1620-unit1620.Po \
        ./$(DEPDIR)/unit1621-unit1621.Po \
        ./$(DEPDIR)/unit1650-unit1650.Po \
@@ -534,10 +542,10 @@ SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) $(unit1302_SOURCES) \
        $(unit1604_SOURCES) $(unit1605_SOURCES) $(unit1606_SOURCES) \
        $(unit1607_SOURCES) $(unit1608_SOURCES) $(unit1609_SOURCES) \
        $(unit1610_SOURCES) $(unit1611_SOURCES) $(unit1612_SOURCES) \
-       $(unit1620_SOURCES) $(unit1621_SOURCES) $(unit1650_SOURCES) \
-       $(unit1651_SOURCES) $(unit1652_SOURCES) $(unit1653_SOURCES) \
-       $(unit1654_SOURCES) $(unit1655_SOURCES) $(unit1660_SOURCES) \
-       $(unit1661_SOURCES)
+       $(unit1614_SOURCES) $(unit1620_SOURCES) $(unit1621_SOURCES) \
+       $(unit1650_SOURCES) $(unit1651_SOURCES) $(unit1652_SOURCES) \
+       $(unit1653_SOURCES) $(unit1654_SOURCES) $(unit1655_SOURCES) \
+       $(unit1660_SOURCES) $(unit1661_SOURCES)
 DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
        $(unit1302_SOURCES) $(unit1303_SOURCES) $(unit1304_SOURCES) \
        $(unit1305_SOURCES) $(unit1307_SOURCES) $(unit1308_SOURCES) \
@@ -548,10 +556,10 @@ DIST_SOURCES = $(unit1300_SOURCES) $(unit1301_SOURCES) \
        $(unit1603_SOURCES) $(unit1604_SOURCES) $(unit1605_SOURCES) \
        $(unit1606_SOURCES) $(unit1607_SOURCES) $(unit1608_SOURCES) \
        $(unit1609_SOURCES) $(unit1610_SOURCES) $(unit1611_SOURCES) \
-       $(unit1612_SOURCES) $(unit1620_SOURCES) $(unit1621_SOURCES) \
-       $(unit1650_SOURCES) $(unit1651_SOURCES) $(unit1652_SOURCES) \
-       $(unit1653_SOURCES) $(unit1654_SOURCES) $(unit1655_SOURCES) \
-       $(unit1660_SOURCES) $(unit1661_SOURCES)
+       $(unit1612_SOURCES) $(unit1614_SOURCES) $(unit1620_SOURCES) \
+       $(unit1621_SOURCES) $(unit1650_SOURCES) $(unit1651_SOURCES) \
+       $(unit1652_SOURCES) $(unit1653_SOURCES) $(unit1654_SOURCES) \
+       $(unit1655_SOURCES) $(unit1660_SOURCES) $(unit1661_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -620,6 +628,7 @@ CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@
 CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@
 CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@
 CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@
+CURL_PLIST_VERSION = @CURL_PLIST_VERSION@
 CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@
 CYGPATH_W = @CYGPATH_W@
 DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@
@@ -637,6 +646,7 @@ ENABLE_STATIC = @ENABLE_STATIC@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
+FILECMD = @FILECMD@
 FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@
 GCOV = @GCOV@
 GREP = @GREP@
@@ -696,6 +706,7 @@ PKGADD_VENDOR = @PKGADD_VENDOR@
 PKGCONFIG = @PKGCONFIG@
 RANDOM_FILE = @RANDOM_FILE@
 RANLIB = @RANLIB@
+RC = @RC@
 REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
@@ -714,12 +725,13 @@ USE_LIBRTMP = @USE_LIBRTMP@
 USE_LIBSSH = @USE_LIBSSH@
 USE_LIBSSH2 = @USE_LIBSSH2@
 USE_MBEDTLS = @USE_MBEDTLS@
-USE_MESALINK = @USE_MESALINK@
+USE_MSH3 = @USE_MSH3@
 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_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@
 USE_NSS = @USE_NSS@
 USE_OPENLDAP = @USE_OPENLDAP@
 USE_QUICHE = @USE_QUICHE@
@@ -786,7 +798,6 @@ runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
-subdirs = @subdirs@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
@@ -800,7 +811,7 @@ top_srcdir = @top_srcdir@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -813,14 +824,10 @@ top_srcdir = @top_srcdir@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 AUTOMAKE_OPTIONS = foreign nostdinc
-@USE_EMBEDDED_ARES_FALSE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/src \
-@USE_EMBEDDED_ARES_FALSE@      -I$(top_srcdir)/tests/libtest \
-@USE_EMBEDDED_ARES_FALSE@      -DCURL_STATICLIB -DUNITTESTS
 
 # Specify our include paths here, and do it relative to $(top_srcdir) and
 # $(top_builddir), to ensure that these paths which belong to the library
@@ -830,20 +837,13 @@ AUTOMAKE_OPTIONS = foreign nostdinc
 # $(top_srcdir)/include is for libcurl's external include files
 # $(top_builddir)/lib is for libcurl's generated lib/curl_config.h file
 # $(top_srcdir)/lib for libcurl's lib/curl_setup.h and other "borrowed" files
-# $(top_builddir)/ares is for in-tree c-ares's generated ares_build.h file
-# $(top_srcdir)/ares is for in-tree c-ares's external include files
-@USE_EMBEDDED_ARES_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/include \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/lib \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/src \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/tests/libtest \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_builddir)/ares \
-@USE_EMBEDDED_ARES_TRUE@       -I$(top_srcdir)/ares -DCURL_STATICLIB \
-@USE_EMBEDDED_ARES_TRUE@       -DUNITTESTS
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/lib \
+       -I$(top_srcdir)/lib -I$(top_srcdir)/src \
+       -I$(top_srcdir)/tests/libtest -DCURL_STATICLIB -DUNITTESTS
 EXTRA_DIST = Makefile.inc CMakeLists.txt README.md
 LDADD = $(top_builddir)/src/libcurltool.la   \
         $(top_builddir)/lib/libcurlu.la      \
-        @LDFLAGS@ @LIBCURL_LIBS@
+        @LDFLAGS@ @LIBCURL_LIBS@ @NSS_LIBS@
 
 UNITFILES = curlcheck.h \
  ../libtest/test.h \
@@ -856,7 +856,7 @@ UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
  unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
  unit1399 \
  unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
- unit1608 unit1609 unit1610 unit1611 unit1612 \
+ unit1608 unit1609 unit1610 unit1611 unit1612 unit1614 \
  unit1620 unit1621 \
  unit1650 unit1651 unit1652 unit1653 unit1654 unit1655 \
  unit1660 unit1661
@@ -924,11 +924,13 @@ unit1611_SOURCES = unit1611.c $(UNITFILES)
 unit1611_CPPFLAGS = $(AM_CPPFLAGS)
 unit1612_SOURCES = unit1612.c $(UNITFILES)
 unit1612_CPPFLAGS = $(AM_CPPFLAGS)
+unit1614_SOURCES = unit1614.c $(UNITFILES)
+unit1614_CPPFLAGS = $(AM_CPPFLAGS)
 unit1620_SOURCES = unit1620.c $(UNITFILES)
 unit1620_CPPFLAGS = $(AM_CPPFLAGS)
 unit1621_SOURCES = unit1621.c $(UNITFILES)
 unit1621_CPPFLAGS = $(AM_CPPFLAGS)
-unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la
+unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la @NSS_LIBS@
 unit1650_SOURCES = unit1650.c $(UNITFILES)
 unit1650_CPPFLAGS = $(AM_CPPFLAGS)
 unit1651_SOURCES = unit1651.c $(UNITFILES)
@@ -1180,6 +1182,12 @@ unit1611$(EXEEXT): $(unit1611_OBJECTS) $(unit1611_DEPENDENCIES) $(EXTRA_unit1611
 unit1612$(EXEEXT): $(unit1612_OBJECTS) $(unit1612_DEPENDENCIES) $(EXTRA_unit1612_DEPENDENCIES) 
        @rm -f unit1612$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(unit1612_OBJECTS) $(unit1612_LDADD) $(LIBS)
+../libtest/unit1614-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
+       ../libtest/$(DEPDIR)/$(am__dirstamp)
+
+unit1614$(EXEEXT): $(unit1614_OBJECTS) $(unit1614_DEPENDENCIES) $(EXTRA_unit1614_DEPENDENCIES) 
+       @rm -f unit1614$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(unit1614_OBJECTS) $(unit1614_LDADD) $(LIBS)
 ../libtest/unit1620-first.$(OBJEXT): ../libtest/$(am__dirstamp) \
        ../libtest/$(DEPDIR)/$(am__dirstamp)
 
@@ -1278,6 +1286,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1610-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1611-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1612-first.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1614-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1620-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1621-first.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@../libtest/$(DEPDIR)/unit1650-first.Po@am__quote@ # am--include-marker
@@ -1318,6 +1327,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1610-unit1610.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1611-unit1611.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1612-unit1612.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1614-unit1614.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1620-unit1620.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1621-unit1621.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unit1650-unit1650.Po@am__quote@ # am--include-marker
@@ -2199,6 +2209,34 @@ unit1612-unit1612.obj: unit1612.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1612_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1612-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
 
+unit1614-unit1614.o: unit1614.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1614-unit1614.o -MD -MP -MF $(DEPDIR)/unit1614-unit1614.Tpo -c -o unit1614-unit1614.o `test -f 'unit1614.c' || echo '$(srcdir)/'`unit1614.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1614-unit1614.Tpo $(DEPDIR)/unit1614-unit1614.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1614.c' object='unit1614-unit1614.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1614-unit1614.o `test -f 'unit1614.c' || echo '$(srcdir)/'`unit1614.c
+
+unit1614-unit1614.obj: unit1614.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1614-unit1614.obj -MD -MP -MF $(DEPDIR)/unit1614-unit1614.Tpo -c -o unit1614-unit1614.obj `if test -f 'unit1614.c'; then $(CYGPATH_W) 'unit1614.c'; else $(CYGPATH_W) '$(srcdir)/unit1614.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1614-unit1614.Tpo $(DEPDIR)/unit1614-unit1614.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='unit1614.c' object='unit1614-unit1614.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unit1614-unit1614.obj `if test -f 'unit1614.c'; then $(CYGPATH_W) 'unit1614.c'; else $(CYGPATH_W) '$(srcdir)/unit1614.c'; fi`
+
+../libtest/unit1614-first.o: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1614-first.o -MD -MP -MF ../libtest/$(DEPDIR)/unit1614-first.Tpo -c -o ../libtest/unit1614-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1614-first.Tpo ../libtest/$(DEPDIR)/unit1614-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1614-first.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1614-first.o `test -f '../libtest/first.c' || echo '$(srcdir)/'`../libtest/first.c
+
+../libtest/unit1614-first.obj: ../libtest/first.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ../libtest/unit1614-first.obj -MD -MP -MF ../libtest/$(DEPDIR)/unit1614-first.Tpo -c -o ../libtest/unit1614-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) ../libtest/$(DEPDIR)/unit1614-first.Tpo ../libtest/$(DEPDIR)/unit1614-first.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='../libtest/first.c' object='../libtest/unit1614-first.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1614_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ../libtest/unit1614-first.obj `if test -f '../libtest/first.c'; then $(CYGPATH_W) '../libtest/first.c'; else $(CYGPATH_W) '$(srcdir)/../libtest/first.c'; fi`
+
 unit1620-unit1620.o: unit1620.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit1620_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unit1620-unit1620.o -MD -MP -MF $(DEPDIR)/unit1620-unit1620.Tpo -c -o unit1620-unit1620.o `test -f 'unit1620.c' || echo '$(srcdir)/'`unit1620.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/unit1620-unit1620.Tpo $(DEPDIR)/unit1620-unit1620.Po
@@ -2641,6 +2679,7 @@ distclean: distclean-am
        -rm -f ../libtest/$(DEPDIR)/unit1610-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1611-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1612-first.Po
+       -rm -f ../libtest/$(DEPDIR)/unit1614-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
@@ -2681,6 +2720,7 @@ distclean: distclean-am
        -rm -f ./$(DEPDIR)/unit1610-unit1610.Po
        -rm -f ./$(DEPDIR)/unit1611-unit1611.Po
        -rm -f ./$(DEPDIR)/unit1612-unit1612.Po
+       -rm -f ./$(DEPDIR)/unit1614-unit1614.Po
        -rm -f ./$(DEPDIR)/unit1620-unit1620.Po
        -rm -f ./$(DEPDIR)/unit1621-unit1621.Po
        -rm -f ./$(DEPDIR)/unit1650-unit1650.Po
@@ -2766,6 +2806,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ../libtest/$(DEPDIR)/unit1610-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1611-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1612-first.Po
+       -rm -f ../libtest/$(DEPDIR)/unit1614-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1620-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1621-first.Po
        -rm -f ../libtest/$(DEPDIR)/unit1650-first.Po
@@ -2806,6 +2847,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f ./$(DEPDIR)/unit1610-unit1610.Po
        -rm -f ./$(DEPDIR)/unit1611-unit1611.Po
        -rm -f ./$(DEPDIR)/unit1612-unit1612.Po
+       -rm -f ./$(DEPDIR)/unit1614-unit1614.Po
        -rm -f ./$(DEPDIR)/unit1620-unit1620.Po
        -rm -f ./$(DEPDIR)/unit1621-unit1621.Po
        -rm -f ./$(DEPDIR)/unit1650-unit1650.Po
@@ -2854,7 +2896,7 @@ uninstall-am:
 
 
 checksrc:
-       $(CHECKSRC)@PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.[ch]
+       $(CHECKSRC)@PERL@ $(top_srcdir)/scripts/checksrc.pl $(srcdir)/*.[ch]
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 3354f454d42dfd9861ff3ffda66b39036d3df268..831a82033c4caa95a2f87f8c58b094a90197065c 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 # these files are used in every single unit test program
@@ -32,7 +34,7 @@ UNITPROGS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1305 unit1307 \
  unit1330 unit1394 unit1395 unit1396 unit1397 unit1398 \
  unit1399 \
  unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
- unit1608 unit1609 unit1610 unit1611 unit1612 \
+ unit1608 unit1609 unit1610 unit1611 unit1612 unit1614 \
  unit1620 unit1621 \
  unit1650 unit1651 unit1652 unit1653 unit1654 unit1655 \
  unit1660 unit1661
@@ -130,12 +132,15 @@ unit1611_CPPFLAGS = $(AM_CPPFLAGS)
 unit1612_SOURCES = unit1612.c $(UNITFILES)
 unit1612_CPPFLAGS = $(AM_CPPFLAGS)
 
+unit1614_SOURCES = unit1614.c $(UNITFILES)
+unit1614_CPPFLAGS = $(AM_CPPFLAGS)
+
 unit1620_SOURCES = unit1620.c $(UNITFILES)
 unit1620_CPPFLAGS = $(AM_CPPFLAGS)
 
 unit1621_SOURCES = unit1621.c $(UNITFILES)
 unit1621_CPPFLAGS = $(AM_CPPFLAGS)
-unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la
+unit1621_LDADD = $(top_builddir)/src/libcurltool.la $(top_builddir)/lib/libcurl.la @NSS_LIBS@
 
 unit1650_SOURCES = unit1650.c $(UNITFILES)
 unit1650_CPPFLAGS = $(AM_CPPFLAGS)
index 2880d1979a702b1a1d8c8838633e786350e25b82..d17b249a0ec5e3a18038c190cf1a319bd618a306 100644 (file)
@@ -1,3 +1,9 @@
+<!--
+Copyright (C) 1998 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.
+
+SPDX-License-Identifier: curl
+-->
+
 # Unit tests
 
 The goal is to add tests for *all* functions in libcurl. If functions are too
@@ -27,40 +33,41 @@ start up gdb and run the same case using that.
 ## Write Unit Tests
 
 We put tests that focus on an area or a specific function into a single C
-source file. The source file should be named 'unitNNNN.c' where NNNN is a
+source file. The source file should be named `unitNNNN.c` where `NNNN` is a
 previously unused number.
 
-Add your test to `tests/unit/Makefile.inc` (if it is a unit test).  Add your
+Add your test to `tests/unit/Makefile.inc` (if it is a unit test). Add your
 test data file name to `tests/data/Makefile.inc`
 
 You also need a separate file called `tests/data/testNNNN` (using the same
 number) that describes your test case. See the test1300 file for inspiration
 and the `tests/FILEFORMAT.md` documentation.
 
-For the actual C file, here's a very simple example:
+For the actual C file, here's a simple example:
 ~~~c
-#include "curlcheck.h"
 
-#include "a libcurl header.h" /* from the lib dir */
+    #include "curlcheck.h"
+
+    #include "a libcurl header.h" /* from the lib dir */
 
-static CURLcode unit_setup( void )
-{
-  /* whatever you want done first */
-  return CURLE_OK;
-}
+    static CURLcode unit_setup( void )
+    {
+      /* whatever you want done first */
+      return CURLE_OK;
+    }
 
-static void unit_stop( void )
-{
-  /* done before shutting down and exiting */
-}
+    static void unit_stop( void )
+    {
+      /* done before shutting down and exiting */
+    }
 
-UNITTEST_START
+    UNITTEST_START
 
-  /* here you start doing things and checking that the results are good */
+      /* here you start doing things and checking that the results are good */
 
-  fail_unless( size == 0 , "initial size should be zero" );
-  fail_if( head == NULL , "head should not be initiated to NULL" );
+      fail_unless( size == 0 , "initial size should be zero" );
+      fail_if( head == NULL , "head should not be initiated to NULL" );
 
-  /* you end the test code like this: */
+      /* you end the test code like this: */
 
-UNITTEST_STOP
+    UNITTEST_STOP
index 3651551b3f8f1fc3e2c895e0c2216dae2d45f6f1..1e8ca0e8e86dad4b17ffa72b4caf35e3b51d3d64 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * 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"
 
index aba068a0022578cb9232a03152038f524ca922f5..493a2f11ad5f97487d1b8edf94ffc0a305f4e759 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index ec578740525c3e31c8662b1cc67618fec5848934..17b2700ba861762baf407afb19f168b2740d29d5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index af337cedffb814dbe0f51f69795aadf90aaad236..afc5716626307570d6bebf28a7cc65aae4e76e47 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -30,7 +32,7 @@ static struct Curl_easy *data;
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   data = curl_easy_init();
@@ -55,55 +57,67 @@ size_t size = 0;
 unsigned char anychar = 'x';
 CURLcode rc;
 
-rc = Curl_base64_encode(data, "i", 1, &output, &size);
+rc = Curl_base64_encode("i", 1, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 4, "size should be 4");
 verify_memory(output, "aQ==", 4);
 Curl_safefree(output);
 
-rc = Curl_base64_encode(data, "ii", 2, &output, &size);
+rc = Curl_base64_encode("ii", 2, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 4, "size should be 4");
 verify_memory(output, "aWk=", 4);
 Curl_safefree(output);
 
-rc = Curl_base64_encode(data, "iii", 3, &output, &size);
+rc = Curl_base64_encode("iii", 3, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 4, "size should be 4");
 verify_memory(output, "aWlp", 4);
 Curl_safefree(output);
 
-rc = Curl_base64_encode(data, "iiii", 4, &output, &size);
+rc = Curl_base64_encode("iiii", 4, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 8, "size should be 8");
 verify_memory(output, "aWlpaQ==", 8);
 Curl_safefree(output);
 
-rc = Curl_base64_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
+rc = Curl_base64_encode("\xff\x01\xfe\x02", 4, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 8, "size should be 8");
 verify_memory(output, "/wH+Ag==", 8);
 Curl_safefree(output);
 
-rc = Curl_base64url_encode(data, "\xff\x01\xfe\x02", 4, &output, &size);
+rc = Curl_base64url_encode("\xff\x01\xfe\x02", 4, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
-fail_unless(size == 8, "size should be 8");
-verify_memory(output, "_wH-Ag==", 8);
+fail_unless(size == 6, "size should be 6");
+verify_memory(output, "_wH-Ag", 6);
 Curl_safefree(output);
 
-rc = Curl_base64url_encode(data, "iiii", 4, &output, &size);
+rc = Curl_base64url_encode("iiii", 4, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
-fail_unless(size == 8, "size should be 8");
-verify_memory(output, "aWlpaQ==", 8);
+fail_unless(size == 6, "size should be 6");
+verify_memory(output, "aWlpaQ", 6);
 Curl_safefree(output);
 
 /* 0 length makes it do strlen() */
-rc = Curl_base64_encode(data, "iiii", 0, &output, &size);
+rc = Curl_base64_encode("iiii", 0, &output, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 8, "size should be 8");
 verify_memory(output, "aWlpaQ==", 8);
 Curl_safefree(output);
 
+rc = Curl_base64_encode("", 0, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 0, "size should be 0");
+fail_unless(output && !output[0], "output should be a zero-length string");
+Curl_safefree(output);
+
+rc = Curl_base64url_encode("", 0, &output, &size);
+fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
+fail_unless(size == 0, "size should be 0");
+fail_unless(output && !output[0], "output should be a zero-length string");
+Curl_safefree(output);
+
 rc = Curl_base64_decode("aWlpaQ==", &decoded, &size);
 fail_unless(rc == CURLE_OK, "return code should be CURLE_OK");
 fail_unless(size == 4, "size should be 4");
index 4c25fb963344a46e047c929cf40055edc4576362..acc3ed7bf37d85fbdf65eb46c7d553d11aec6716 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -29,7 +31,7 @@ static struct Curl_easy *data;
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   data = curl_easy_init();
@@ -99,10 +101,10 @@ UNITTEST_START
   {BASE + 12, 0,     10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},
 
   /* no connect timeout set, connecting */
-  {BASE + 4, 0,      10000, 0, FALSE, 6000, "6 seconds should be left"},
-  {BASE + 4, 990000, 10000, 0, FALSE, 5010, "5010 ms should be left"},
-  {BASE + 10, 0,     10000, 0, FALSE, -1,   "timeout is -1, expired"},
-  {BASE + 12, 0,     10000, 0, FALSE, -2000, "-2000, overdue 2 seconds"},
+  {BASE + 4, 0,      10000, 0, TRUE, 6000, "6 seconds should be left"},
+  {BASE + 4, 990000, 10000, 0, TRUE, 5010, "5010 ms should be left"},
+  {BASE + 10, 0,     10000, 0, TRUE, -1,   "timeout is -1, expired"},
+  {BASE + 12, 0,     10000, 0, TRUE, -2000, "-2000, overdue 2 seconds"},
 
   /* only connect timeout set, not connecting */
   {BASE + 4, 0,      0, 10000, FALSE, 0, "no timeout active"},
index a6dc64d6c6abab9e7cb8c4258be9b44835e0dc37..3fab94b8525d68a351e209e96ad6a2d568605d7a 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 #include "netrc.h"
@@ -47,8 +49,6 @@ static void unit_stop(void)
 
 UNITTEST_START
   int result;
-  bool login_changed;
-  bool password_changed;
 
   static const char * const filename1 = "log/netrc1304";
   memcpy(filename, filename1, strlen(filename1));
@@ -57,7 +57,7 @@ UNITTEST_START
    * Test a non existent host in our netrc file.
    */
   result = Curl_parsenetrc("test.example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 1, "Host not found should return 1");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
@@ -71,15 +71,13 @@ UNITTEST_START
   login = strdup("me");
   abort_unless(login != NULL, "returned NULL!");
   result = Curl_parsenetrc("example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
-  fail_unless(!password_changed, "password should not have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "me", 2) == 0,
               "login should not have been changed");
-  fail_unless(!login_changed, "login should not have been changed");
 
   /*
    * Test a non existent login and host in our netrc file.
@@ -88,7 +86,7 @@ UNITTEST_START
   login = strdup("me");
   abort_unless(login != NULL, "returned NULL!");
   result = Curl_parsenetrc("test.example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 1, "Host not found should return 1");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
@@ -104,15 +102,13 @@ UNITTEST_START
   login = strdup("admi");
   abort_unless(login != NULL, "returned NULL!");
   result = Curl_parsenetrc("example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
-  fail_unless(!password_changed, "password should not have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "admi", 4) == 0,
               "login should not have been changed");
-  fail_unless(!login_changed, "login should not have been changed");
 
   /*
    * Test a non existent login (superstring of an existing one)
@@ -122,15 +118,13 @@ UNITTEST_START
   login = strdup("adminn");
   abort_unless(login != NULL, "returned NULL!");
   result = Curl_parsenetrc("example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(password[0] == 0, "password should not have been changed");
-  fail_unless(!password_changed, "password should not have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "adminn", 6) == 0,
               "login should not have been changed");
-  fail_unless(!login_changed, "login should not have been changed");
 
   /*
    * Test for the first existing host in our netrc file
@@ -140,15 +134,13 @@ UNITTEST_START
   login = strdup("");
   abort_unless(login != NULL, "returned NULL!");
   result = Curl_parsenetrc("example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "passwd", 6) == 0,
               "password should be 'passwd'");
-  fail_unless(password_changed, "password should have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
-  fail_unless(login_changed, "login should have been changed");
 
   /*
    * Test for the first existing host in our netrc file
@@ -157,16 +149,13 @@ UNITTEST_START
   free(password);
   password = strdup("");
   abort_unless(password != NULL, "returned NULL!");
-  result = Curl_parsenetrc("example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+  result = Curl_parsenetrc("example.com", &login, &password, filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "passwd", 6) == 0,
               "password should be 'passwd'");
-  fail_unless(password_changed, "password should have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
-  fail_unless(!login_changed, "login should not have been changed");
 
   /*
    * Test for the second existing host in our netrc file
@@ -179,15 +168,13 @@ UNITTEST_START
   login = strdup("");
   abort_unless(login != NULL, "returned NULL!");
   result = Curl_parsenetrc("curl.example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "none", 4) == 0,
               "password should be 'none'");
-  fail_unless(password_changed, "password should have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
-  fail_unless(login_changed, "login should have been changed");
 
   /*
    * Test for the second existing host in our netrc file
@@ -197,14 +184,12 @@ UNITTEST_START
   password = strdup("");
   abort_unless(password != NULL, "returned NULL!");
   result = Curl_parsenetrc("curl.example.com", &login, &password,
-             &login_changed, &password_changed, filename);
+                           filename);
   fail_unless(result == 0, "Host should have been found");
   abort_unless(password != NULL, "returned NULL!");
   fail_unless(strncmp(password, "none", 4) == 0,
               "password should be 'none'");
-  fail_unless(password_changed, "password should have been changed");
   abort_unless(login != NULL, "returned NULL!");
   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
-  fail_unless(!login_changed, "login should not have been changed");
 
 UNITTEST_STOP
index 8e551c79074dfca001984c995e9a7a2aa8611c4a..a4f70d1d52d6c708cde5839426f4e486e9511315 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -52,7 +54,7 @@ static CURLcode unit_setup(void)
     return CURLE_OUT_OF_MEMORY;
   }
 
-  Curl_init_dnscache(&hp);
+  Curl_init_dnscache(&hp, 7);
   return CURLE_OK;
 }
 
@@ -73,7 +75,7 @@ static struct Curl_addrinfo *fake_ai(void)
 {
   static struct Curl_addrinfo *ai;
   static const char dummy[]="dummy";
-  size_t namelen = sizeof(dummy); /* including the zero terminator */
+  size_t namelen = sizeof(dummy); /* including the null-terminator */
 
   ai = calloc(1, sizeof(struct Curl_addrinfo) + sizeof(struct sockaddr_in) +
               namelen);
index a657b61cf408e26860788b0fed0b0b721a801552..d8fcb8016ab405fe5a3ef831223515674b11618d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index b19555bc0eb4339c4c4edb657ee5d710f60b2764..2a866e78a51eb7c6655ce5f9f3b2ffc0e8e0f6d7 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 6d6a3274ff45f725b19643c9085a40aec5bc62ca..121dfedec514f19d14b4d063e41f1d89c1ab1377 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 165825323216de9ef2bec8148d51dd820e644e6a..b089282f3d68d114c465f29a98380a3a02def02c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index b365798b81b75c1578efa01f990cabd942d1e33d..ea6f9969936b634c1be2f6fd4050b9a1beb14bb9 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 035ccf58463dba07744c1aa4789ddce42bd3b302..f4f05a06c6d7315c2c111e388adf5ad868ec679d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index c362cc3becea41ce7ef9c11d68cbcc38fc1b19fa..c37f942d355a831ae8ec1271f0d6fe89be4c245d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
-#include "dotdot.h"
+/* copied from urlapi.c */
+extern char *dedotdotify(const char *input, size_t clen);
 
 #include "memdebug.h"
 
@@ -75,7 +78,7 @@ UNITTEST_START
   };
 
   for(i = 0; i < sizeof(pairs)/sizeof(pairs[0]); i++) {
-    char *out = Curl_dedotdotify(pairs[i].input);
+    char *out = dedotdotify(pairs[i].input, strlen(pairs[i].input));
     abort_unless(out != NULL, "returned NULL!");
 
     if(strcmp(out, pairs[i].output)) {
index 66f8fc1561ab9160e993e3bfa2a261d6839611d2..05b3323da007708f8c607d3c69d8f1fb6502aec3 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -25,7 +27,7 @@ static CURL *hnd;
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   return res;
index 508f41af906bb4ebe79f2b02de9c6acc6f3d6b4e..90ec31c68195e688f34313e5279f6cdbf9e9356f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
-#include "hostcheck.h" /* from the lib dir */
+#include "vtls/hostcheck.h" /* from the lib dir */
 
 static CURLcode unit_setup(void)
 {
@@ -40,36 +42,49 @@ UNITTEST_START
 
   /* here you start doing things and checking that the results are good */
 
-fail_unless(Curl_cert_hostcheck("www.example.com", "www.example.com"),
-            "good 1");
-fail_unless(Curl_cert_hostcheck("*.example.com", "www.example.com"),
+fail_unless(Curl_cert_hostcheck(STRCONST("www.example.com"),
+                                STRCONST("www.example.com")), "good 1");
+fail_unless(Curl_cert_hostcheck(STRCONST("*.example.com"),
+                                STRCONST("www.example.com")),
             "good 2");
-fail_unless(Curl_cert_hostcheck("xxx*.example.com", "xxxwww.example.com"),
-            "good 3");
-fail_unless(Curl_cert_hostcheck("f*.example.com", "foo.example.com"),
-            "good 4");
-fail_unless(Curl_cert_hostcheck("192.168.0.0", "192.168.0.0"),
-            "good 5");
+fail_unless(Curl_cert_hostcheck(STRCONST("xxx*.example.com"),
+                                STRCONST("xxxwww.example.com")), "good 3");
+fail_unless(Curl_cert_hostcheck(STRCONST("f*.example.com"),
+                                STRCONST("foo.example.com")), "good 4");
+fail_unless(Curl_cert_hostcheck(STRCONST("192.168.0.0"),
+                                STRCONST("192.168.0.0")), "good 5");
 
-fail_if(Curl_cert_hostcheck("xxx.example.com", "www.example.com"), "bad 1");
-fail_if(Curl_cert_hostcheck("*", "www.example.com"), "bad 2");
-fail_if(Curl_cert_hostcheck("*.*.com", "www.example.com"), "bad 3");
-fail_if(Curl_cert_hostcheck("*.example.com", "baa.foo.example.com"), "bad 4");
-fail_if(Curl_cert_hostcheck("f*.example.com", "baa.example.com"), "bad 5");
-fail_if(Curl_cert_hostcheck("*.com", "example.com"), "bad 6");
-fail_if(Curl_cert_hostcheck("*fail.com", "example.com"), "bad 7");
-fail_if(Curl_cert_hostcheck("*.example.", "www.example."), "bad 8");
-fail_if(Curl_cert_hostcheck("*.example.", "www.example"), "bad 9");
-fail_if(Curl_cert_hostcheck("", "www"), "bad 10");
-fail_if(Curl_cert_hostcheck("*", "www"), "bad 11");
-fail_if(Curl_cert_hostcheck("*.168.0.0", "192.168.0.0"), "bad 12");
-fail_if(Curl_cert_hostcheck("www.example.com", "192.168.0.0"), "bad 13");
+fail_if(Curl_cert_hostcheck(STRCONST("xxx.example.com"),
+                            STRCONST("www.example.com")), "bad 1");
+fail_if(Curl_cert_hostcheck(STRCONST("*"),
+                            STRCONST("www.example.com")),"bad 2");
+fail_if(Curl_cert_hostcheck(STRCONST("*.*.com"),
+                            STRCONST("www.example.com")), "bad 3");
+fail_if(Curl_cert_hostcheck(STRCONST("*.example.com"),
+                            STRCONST("baa.foo.example.com")), "bad 4");
+fail_if(Curl_cert_hostcheck(STRCONST("f*.example.com"),
+                            STRCONST("baa.example.com")), "bad 5");
+fail_if(Curl_cert_hostcheck(STRCONST("*.com"),
+                            STRCONST("example.com")), "bad 6");
+fail_if(Curl_cert_hostcheck(STRCONST("*fail.com"),
+                            STRCONST("example.com")), "bad 7");
+fail_if(Curl_cert_hostcheck(STRCONST("*.example."),
+                            STRCONST("www.example.")), "bad 8");
+fail_if(Curl_cert_hostcheck(STRCONST("*.example."),
+                            STRCONST("www.example")), "bad 9");
+fail_if(Curl_cert_hostcheck(STRCONST(""), STRCONST("www")), "bad 10");
+fail_if(Curl_cert_hostcheck(STRCONST("*"), STRCONST("www")), "bad 11");
+fail_if(Curl_cert_hostcheck(STRCONST("*.168.0.0"),
+                            STRCONST("192.168.0.0")), "bad 12");
+fail_if(Curl_cert_hostcheck(STRCONST("www.example.com"),
+                            STRCONST("192.168.0.0")), "bad 13");
 
 #ifdef ENABLE_IPV6
-fail_if(Curl_cert_hostcheck("*::3285:a9ff:fe46:b619",
-                            "fe80::3285:a9ff:fe46:b619"), "bad 14");
-fail_unless(Curl_cert_hostcheck("fe80::3285:a9ff:fe46:b619",
-                                "fe80::3285:a9ff:fe46:b619"), "good 6");
+fail_if(Curl_cert_hostcheck(STRCONST("*::3285:a9ff:fe46:b619"),
+                            STRCONST("fe80::3285:a9ff:fe46:b619")), "bad 14");
+fail_unless(Curl_cert_hostcheck(STRCONST("fe80::3285:a9ff:fe46:b619"),
+                                STRCONST("fe80::3285:a9ff:fe46:b619")),
+            "good 6");
 #endif
 
 #endif
index e73ce24b0cf851b420ba55a27a261c79f4c8e9ab..662e3bdbc257aadd4e5a79de42cfe8a9c201a119 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -87,4 +89,8 @@ rc = curl_msnprintf(output, 16, "%8d%8d", 1234, 5678);
 fail_unless(rc == 15, "return code should be 15");
 fail_unless(!strcmp(output, "    1234    567"), "wrong output");
 
+/* double precision */
+rc = curl_msnprintf(output, 24, "%.*1$.99d", 3, 5678);
+fail_unless(rc == 0, "return code should be 0");
+
 UNITTEST_STOP
index 261e0b115857276e55cb7a11f5c8465f533d8d7d..c364650fcdfeb4985b91d5e8654d88a001f67cfa 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 506a120b2b004cd92b78799c417c1aa1f405b239..544744840c4343c40757531b16d7686704f63fda 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -28,7 +30,7 @@ static CURL *easy;
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   easy = curl_easy_init();
@@ -51,20 +53,20 @@ UNITTEST_START
                           defined(USE_WIN32_CRYPTO))
   unsigned char output[21];
   unsigned char *testp = output;
-  Curl_ntlm_core_mk_nt_hash(easy, "1", output);
+  Curl_ntlm_core_mk_nt_hash("1", output);
 
   verify_memory(testp,
               "\x69\x94\x3c\x5e\x63\xb4\xd2\xc1\x04\xdb"
               "\xbc\xc1\x51\x38\xb7\x2b\x00\x00\x00\x00\x00", 21);
 
-  Curl_ntlm_core_mk_nt_hash(easy, "hello-you-fool", output);
+  Curl_ntlm_core_mk_nt_hash("hello-you-fool", output);
 
   verify_memory(testp,
               "\x39\xaf\x87\xa6\x75\x0a\x7a\x00\xba\xa0"
               "\xd3\x4f\x04\x9e\xc1\xd0\x00\x00\x00\x00\x00", 21);
 
 /* !checksrc! disable LONGLINE 2 */
-  Curl_ntlm_core_mk_nt_hash(easy, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
+  Curl_ntlm_core_mk_nt_hash("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", output);
 
   verify_memory(testp,
                 "\x36\x9d\xae\x06\x84\x7e\xe1\xc1\x4a\x94\x39\xea\x6f\x44\x8c\x65\x00\x00\x00\x00\x00", 21);
index 4bee3f078931917a2879a68778a779b6cf01e997..c598c0cf73b9141c4a0cadb8a9d47dac9ade26fd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index bb6e504c4ed1669aacfce1b0647880b5c5ddd88b..aa2b463aa12a5a4837cec6382e6b11a3e9954978 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 86641d61f567f4819472c8e0af497e348f4bfd4e..e8640a76040cec3ff0e4a3885d38afb9def7fca1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2015 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2015 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index d811858df3832c7e6f04c8813231c0957c170037..f7f8cee3dec9c135d15b88da562c2df74041eb03 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 26115a83496368a446f3649a9c479d1791d3e9a0..34a3690fab7af3b0a00c5548b836f11a548bf65c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -27,7 +29,7 @@ static CURL *easy;
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   easy = curl_easy_init();
index 8dee3b46e3e9e533d30e9d57660dcbe200487593..0519b7c8955f7875c7289d097ad52d39c5e30910 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -28,7 +30,7 @@ static CURL *easy;
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   easy = curl_easy_init();
index 8da06f1d0cf7178ac806640841c7b50ebcfdef2c..7295f1883e8d357c5b97535ba5e6bf503987ab8f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -34,7 +36,7 @@ static void unit_stop(void)
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
 
index 45ca7a3a85a6676a233ac4a3f9a8cf705f77e43b..64ef90fe89f18983736e5d1119bea63d06c45d26 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index a8458329aa40605a51aee7035f357dba2aa3341a..cab8383d092a8132ba23cf6807592be0f9af40e1 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -34,7 +36,7 @@ static void unit_stop(void)
 
 static CURLcode unit_setup(void)
 {
-  int res = CURLE_OK;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
 
index 2a18f5c5f4644255bf1b83abf238ac17b35e9e59..78d415c188e99c473d9d17d20c5854022f67e655 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
 
 static CURLcode unit_setup(void)
 {
-  return CURLE_OK;
+  CURLcode res = CURLE_OK;
+  global_init(CURL_GLOBAL_ALL);
+  return res;
 }
 
 static void unit_stop(void)
 {
-
+  curl_global_cleanup();
 }
 
 UNITTEST_START
index 948484b53719e1ec573180659b148b96a1594e74..46f9aa85a420d150bd5f98fee648b59d86093bc5 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index caddd02a04d1a7d788a8551042c4b817915f0331..d0e221cbdb9cf798f3fa46a20de039411ded34bd 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
diff --git a/tests/unit/unit1614.c b/tests/unit/unit1614.c
new file mode 100644 (file)
index 0000000..6028545
--- /dev/null
@@ -0,0 +1,133 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2022, 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 "curlcheck.h"
+
+#include "noproxy.h"
+
+static CURLcode unit_setup(void)
+{
+  return CURLE_OK;
+}
+
+static void unit_stop(void)
+{
+
+}
+
+struct check {
+  const char *a;
+  const char *n;
+  unsigned int bits;
+  bool match;
+};
+
+struct noproxy {
+  const char *a;
+  const char *n;
+  bool match;
+};
+
+UNITTEST_START
+#if defined(DEBUGBUILD) && !defined(CURL_DISABLE_PROXY)
+{
+  int i;
+  int err = 0;
+  struct check list4[]= {
+    { "192.160.0.1", "192.160.0.1", 33, FALSE},
+    { "192.160.0.1", "192.160.0.1", 32, TRUE},
+    { "192.160.0.1", "192.160.0.1", 0, TRUE},
+    { "192.160.0.1", "192.160.0.1", 24, TRUE},
+    { "192.160.0.1", "192.160.0.1", 26, TRUE},
+    { "192.160.0.1", "192.160.0.1", 20, TRUE},
+    { "192.160.0.1", "192.160.0.1", 18, TRUE},
+    { "192.160.0.1", "192.160.0.1", 12, TRUE},
+    { "192.160.0.1", "192.160.0.1", 8, TRUE},
+    { "192.160.0.1", "10.0.0.1", 8, FALSE},
+    { "192.160.0.1", "10.0.0.1", 32, FALSE},
+    { "192.160.0.1", "10.0.0.1", 0, FALSE},
+    { NULL, NULL, 0, FALSE} /* end marker */
+  };
+  struct check list6[]= {
+    { "::1", "::1", 0, TRUE},
+    { "::1", "::1", 128, TRUE},
+    { "::1", "0:0::1", 128, TRUE},
+    { "::1", "0:0::1", 129, FALSE},
+    { "fe80::ab47:4396:55c9:8474", "fe80::ab47:4396:55c9:8474", 64, TRUE},
+    { NULL, NULL, 0, FALSE} /* end marker */
+  };
+  struct noproxy list[]= {
+    { "foobar", "barfoo", FALSE},
+    { "foobar", "foobar", TRUE},
+    { "192.168.0.1", "foobar", FALSE},
+    { "192.168.0.1", "192.168.0.0/16", TRUE},
+    { "192.168.0.1", "192.168.0.0/24", TRUE},
+    { "192.168.0.1", "192.168.0.0/32", FALSE},
+    { "192.168.0.1", "192.168.0.0", FALSE},
+    { "192.168.1.1", "192.168.0.0/24", FALSE},
+    { "192.168.1.1", "foo, bar, 192.168.0.0/24", FALSE},
+    { "192.168.1.1", "foo, bar, 192.168.0.0/16", TRUE},
+    { "[::1]", "foo, bar, 192.168.0.0/16", FALSE},
+    { "[::1]", "foo, bar, ::1/64", TRUE},
+    { "bar", "foo, bar, ::1/64", TRUE},
+    { "BAr", "foo, bar, ::1/64", TRUE},
+    { "BAr", "foo,,,,,              bar, ::1/64", TRUE},
+    { "www.example.com", "foo, .example.com", TRUE},
+    { "www.example.com", "www2.example.com, .example.net", FALSE},
+    { "example.com", ".example.com, .example.net", TRUE},
+    { "nonexample.com", ".example.com, .example.net", FALSE},
+    { NULL, NULL, FALSE}
+  };
+  for(i = 0; list4[i].a; i++) {
+    bool match = Curl_cidr4_match(list4[i].a, list4[i].n, list4[i].bits);
+    if(match != list4[i].match) {
+      fprintf(stderr, "%s in %s/%u should %smatch\n",
+              list4[i].a, list4[i].n, list4[i].bits,
+              list4[i].match ? "": "not ");
+      err++;
+    }
+  }
+  for(i = 0; list6[i].a; i++) {
+    bool match = Curl_cidr6_match(list6[i].a, list6[i].n, list6[i].bits);
+    if(match != list6[i].match) {
+      fprintf(stderr, "%s in %s/%u should %smatch\n",
+              list6[i].a, list6[i].n, list6[i].bits,
+              list6[i].match ? "": "not ");
+      err++;
+    }
+  }
+  for(i = 0; list[i].a; i++) {
+    bool match = Curl_check_noproxy(list[i].a, list[i].n);
+    if(match != list[i].match) {
+      fprintf(stderr, "%s in %s should %smatch\n",
+              list[i].a, list[i].n,
+              list[i].match ? "": "not ");
+      err++;
+    }
+  }
+  return err;
+}
+#else
+return 0;
+#endif
+UNITTEST_STOP
index 4f1aaaf0aaba7050e372526982ba7bae7ffa5cf6..cd4623d6b4b93d09536bc4f516868cd21202f608 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
 
 static CURLcode unit_setup(void)
 {
-  return CURLE_OK;
+  CURLcode res = CURLE_OK;
+  global_init(CURL_GLOBAL_ALL);
+  return res;
 }
 
 static void unit_stop(void)
 {
+  curl_global_cleanup();
 }
 
 UNITTEST_START
index 87550d1376247ab45ec700f10b777498ab7e1f0e..9147d4070d5c8a75ba353b7b665d5ba2bad19b80 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -45,7 +47,7 @@ UNITTEST_START
 UNITTEST_STOP
 #else
 
-bool stripcredentials(char **url);
+char *stripcredentials(const char *url);
 
 struct checkthis {
   const char *input;
@@ -65,25 +67,22 @@ static const struct checkthis tests[] = {
 
 UNITTEST_START
 {
-  bool cleanup;
-  char *url;
   int i;
   int rc = 0;
 
   for(i = 0; tests[i].input; i++) {
-    url = (char *)tests[i].input;
-    cleanup = stripcredentials(&url);
+    const char *url = tests[i].input;
+    char *stripped = stripcredentials(url);
     printf("Test %u got input \"%s\", output: \"%s\"\n",
-           i, tests[i].input, url);
+           i, tests[i].input, stripped);
 
-    if(strcmp(tests[i].output, url)) {
+    if(stripped && strcmp(tests[i].output, stripped)) {
       fprintf(stderr, "Test %u got input \"%s\", expected output \"%s\"\n"
               " Actual output: \"%s\"\n", i, tests[i].input, tests[i].output,
-              url);
+              stripped);
       rc++;
     }
-    if(cleanup)
-      curl_free(url);
+    curl_free(stripped);
   }
   return rc;
 }
index 0e74845c387df87922ac14d1a3312969e9135bc9..ae748a971717a13198625d0597099b116766ce16 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 9de583930e59b7948c89536054c557e218b7a4a2..3f92f820c4eb2107dfa525f23b025db7f53c1f2d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2018 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2018 - 2022, 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
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
-#include "x509asn1.h"
+#include "vtls/x509asn1.h"
 
 static CURLcode unit_setup(void)
 {
@@ -32,8 +34,8 @@ static void unit_stop(void)
 {
 
 }
-#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) || \
-    defined(USE_WOLFSSL) || defined(USE_SCHANNEL)
+#if defined(USE_GSKIT) || defined(USE_NSS) || defined(USE_GNUTLS) ||    \
+  defined(USE_SCHANNEL) || defined(USE_SECTRANSP)
 
 /* cert captured from gdb when connecting to curl.se on October 26
    2018 */
index 56dad0c3419fdeff2b126eafb5444d3cf64805ec..761bf8c64d328a31b2dfb06858333b0d69576366 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -59,7 +61,7 @@ debugf_cb(CURL *handle, curl_infotype type, char *buf, size_t size,
 static CURLcode
 unit_setup(void)
 {
-  int res = 0;
+  CURLcode res = CURLE_OK;
 
   global_init(CURL_GLOBAL_ALL);
   data = curl_easy_init();
@@ -69,7 +71,7 @@ unit_setup(void)
   }
   curl_easy_setopt(data, CURLOPT_DEBUGFUNCTION, debugf_cb);
   curl_easy_setopt(data, CURLOPT_VERBOSE, 1L);
-  return CURLE_OK;
+  return res;
 }
 
 static void
index 7d02ae6de1e2db56b8caf9774f091f0826cce943..40a21dd066baaab648a552acb670029064353bff 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -42,6 +44,19 @@ unit_stop(void)
 
 #define free_and_clear(x) free(x); x = NULL
 
+static CURLUcode parse_port(CURLU *url,
+                           char *h, bool has_scheme)
+{
+  struct dynbuf host;
+  CURLUcode ret;
+  Curl_dyn_init(&host, 10000);
+  if(Curl_dyn_add(&host, h))
+    return CURLUE_OUT_OF_MEMORY;
+  ret = Curl_parse_port(url, &host, has_scheme);
+  Curl_dyn_free(&host);
+  return ret;
+}
+
 UNITTEST_START
 {
   CURLUcode ret;
@@ -55,8 +70,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15]");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret == CURLUE_OK, "parse_port returned error");
   ret = curl_url_get(u, CURLUPART_PORT, &portnum, CURLU_NO_DEFAULT_PORT);
   fail_unless(ret != CURLUE_OK, "curl_url_get portnum returned something");
   free_and_clear(ipv6port);
@@ -69,8 +84,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15|");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret != CURLUE_OK, "parse_port true on error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -80,8 +95,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff;fea7:da15]:80");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret != CURLUE_OK, "parse_port true on error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -92,8 +107,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15%25eth3]:80");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret == CURLUE_OK, "parse_port returned error");
   ret = curl_url_get(u, CURLUPART_PORT, &portnum, 0);
   fail_unless(ret == CURLUE_OK, "curl_url_get portnum returned error");
   fail_unless(portnum && !strcmp(portnum, "80"), "Check portnumber");
@@ -108,8 +123,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15%25eth3]");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret == CURLUE_OK, "parse_port returned error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -120,8 +135,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15]:81");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret == CURLUE_OK, "parse_port returned error");
   ret = curl_url_get(u, CURLUPART_PORT, &portnum, 0);
   fail_unless(ret == CURLUE_OK, "curl_url_get portnum returned error");
   fail_unless(portnum && !strcmp(portnum, "81"), "Check portnumber");
@@ -136,8 +151,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15];81");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret != CURLUE_OK, "parse_port true on error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -147,8 +162,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15]80");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret != CURLUE_OK, "Curl_parse_port true on error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret != CURLUE_OK, "parse_port true on error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -160,8 +175,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15]:");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, TRUE);
-  fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+  ret = parse_port(u, ipv6port, TRUE);
+  fail_unless(ret == CURLUE_OK, "parse_port returned error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -172,8 +187,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15!25eth3]:80");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret != CURLUE_OK, "Curl_parse_port returned non-error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret != CURLUE_OK, "parse_port returned non-error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -184,8 +199,8 @@ UNITTEST_START
   ipv6port = strdup("[fe80::250:56ff:fea7:da15%eth3]:80");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret == CURLUE_OK, "Curl_parse_port returned error");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret == CURLUE_OK, "parse_port returned error");
   free_and_clear(ipv6port);
   curl_url_cleanup(u);
 
@@ -198,8 +213,8 @@ UNITTEST_START
                     "aaaaaaaaaaaaaaaaaaaaaa:");
   if(!ipv6port)
     goto fail;
-  ret = Curl_parse_port(u, ipv6port, FALSE);
-  fail_unless(ret == CURLUE_BAD_PORT_NUMBER, "Curl_parse_port did wrong");
+  ret = parse_port(u, ipv6port, FALSE);
+  fail_unless(ret == CURLUE_BAD_PORT_NUMBER, "parse_port did wrong");
   fail:
   free(ipv6port);
   curl_url_cleanup(u);
index acd2cd62f7a15bef631670afbf335c6111a5d42e..1e4a53550777062cd77b6c8c2742ba231ccb4d0d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 1d7880d58923146f6c064f5ac6ad1ef2f0f4ce77..b5c9a36725ef9e2740b0b05bd112f89d56b080f2 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2019 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -45,7 +47,7 @@ UNITTEST_START
  * Prove detection of other invalid input.
  */
 do {
-  const char *max =
+  static const char max[] =
     /* ..|....1.........2.........3.........4.........5.........6... */
     /* 3456789012345678901234567890123456789012345678901234567890123 */
     "this.is.a.maximum-length.hostname."                  /* 34:  34 */
@@ -57,7 +59,7 @@ do {
     "that.is.two-hundred.and.fifty-six."                  /* 34: 231 */
     "including.the.last.null."                            /* 24: 255 */
     "";
-  const char *toolong =
+  static const char toolong[] =
     /* ..|....1.........2.........3.........4.........5.........6... */
     /* 3456789012345678901234567890123456789012345678901234567890123 */
     "here.is.a.hostname.which.is.just.barely.too.long."   /* 49:  49 */
@@ -68,10 +70,10 @@ do {
     "a.trailing.dot.may.have.up.to."                      /* 30: 230 */
     "255.characters.never.more."                          /* 26: 256 */
     "";
-  const char *emptylabel =
+  static const char emptylabel[] =
     "this.is.an.otherwise-valid.hostname."
     ".with.an.empty.label.";
-  const char *outsizelabel =
+  static const char outsizelabel[] =
     "this.is.an.otherwise-valid.hostname."
     "with-a-label-of-greater-length-than-the-sixty-three-characters-"
     "specified.in.the.RFCs.";
@@ -103,7 +105,7 @@ do {
     struct demo victim;
     DOHcode d;
 
-    victim.canary1 = 87; /* magic numbers, arbritrarily picked */
+    victim.canary1 = 87; /* magic numbers, arbitrarily picked */
     victim.canary2 = 35;
     victim.canary3 = 41;
     d = doh_encode(name, DNS_TYPE_A, victim.dohbuffer,
index 43efa24b38a17f0ab6dd070ca9897a9c5f927da9..4ef7faa732f92c7a384af2d5a997e68dc058d214 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2020 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2020 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
@@ -101,7 +103,7 @@ static const struct testit headers[] = {
 
   /* make this live for 7 seconds */
   { "expire.example", NULL, "max-age=\"7\"\r\n", CURLE_OK },
-  { NULL, NULL, NULL, 0 }
+  { NULL, NULL, NULL, CURLE_OK }
 };
 
 static void showsts(struct stsentry *e, const char *chost)
index c32d6f16401da7fb6499a70ee455eb73b969215d..59cc5a9ec021e449c41030f6b4feb40a0b30c81c 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  * KIND, either express or implied.
  *
+ * SPDX-License-Identifier: curl
+ *
  ***************************************************************************/
 #include "curlcheck.h"
 
index 3c2fb6b7c3e395dc0bbb212c2d7c6b25b9f834b3..b8c4ebd536023f7aa504786cca895b7b612dde47 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2017 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2017 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 """Module for extracting test data from the test data folder and other utils"""
 
 from __future__ import (absolute_import, division, print_function,
index 6d457259de41e6703adbaa91e4ddb5b221ed7caf..8916b59255e9a9903d879e363280e689ee2a289e 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 
 use File::Basename;
index 566436556a4ba533debb8e903466d2afce9cba2d..b52459d0ac2db9fff8abcd1c8e642ea318b9fd09 100755 (executable)
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2010 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2010 - 2022, 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
@@ -19,6 +19,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 ###########################################################################
 #
 # Verify that curl_version_info.3 documents all the CURL_VERSION_ bits
index 098561333fadda017cb56ca1613c0dde6765921d..594b16fcc25b369c04ee7304c0811234425724cf 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1999 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1999 - 2022, 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
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 # KIND, either express or implied.
 #
+# SPDX-License-Identifier: curl
+#
 #***************************************************************************
 
 !IF "$(MODE)"=="static"
@@ -149,6 +151,23 @@ NGHTTP2     = static
 USE_NGHTTP2 = false
 !ENDIF
 
+!IF "$(ENABLE_MSH3)"=="yes"
+# compatibility bit, WITH_MSH3 is the correct flag
+WITH_MSH3    = dll
+USE_MSH3     = true
+MSH3         = dll
+!ELSEIF "$(WITH_MSH3)"=="dll"
+USE_MSH3     = true
+MSH3         = dll
+!ELSEIF "$(WITH_MSH3)"=="static"
+USE_MSH3     = true
+MSH3         = static
+!ENDIF
+
+!IFNDEF USE_MSH3
+USE_MSH3 = false
+!ENDIF
+
 !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"
 USE_MBEDTLS = true
 MBEDTLS     = $(WITH_MBEDTLS)
@@ -178,6 +197,14 @@ USE_SSH2 = true
 SSH2     = static
 !ENDIF
 
+!IF "$(WITH_SSH)"=="dll"
+USE_SSH = true
+SSH     = dll
+!ELSEIF "$(WITH_SSH)"=="static"
+USE_SSH = true
+SSH     = static
+!ENDIF
+
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-vc$(VC)-$(MACHINE)
 
 !IF "$(DEBUG)"=="yes"
@@ -212,6 +239,10 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-zlib-$(ZLIB)
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh2-$(SSH2)
 !ENDIF
 
+!IF "$(USE_SSH)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ssh-$(SSH)
+!ENDIF
+
 !IF "$(USE_IPV6)"=="true"
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-ipv6
 !ENDIF
@@ -228,6 +259,10 @@ CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-schannel
 CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-nghttp2-$(NGHTTP2)
 !ENDIF
 
+!IF "$(USE_MSH3)"=="true"
+CONFIG_NAME_LIB = $(CONFIG_NAME_LIB)-msh3
+!ENDIF
+
 !MESSAGE configuration name: $(CONFIG_NAME_LIB)
 
 BUILD_DIR=../builds/$(CONFIG_NAME_LIB)
@@ -249,6 +284,7 @@ $(MODE):
        @SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
        @SET MACHINE=$(MACHINE)
        @SET USE_NGHTTP2=$(USE_NGHTTP2)
+       @SET USE_MSH3=$(USE_MSH3)
        @SET USE_IDN=$(USE_IDN)
        @SET USE_IPV6=$(USE_IPV6)
        @SET USE_SSPI=$(USE_SSPI)
index fa26d7f1678d13d9dc77782c1d2a7577d9e9889e..727ef085075f786218dce1125709494e4fc53b5f 100644 (file)
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___\r
 #                             \___|\___/|_| \_\_____|\r
 #\r
-# Copyright (C) 1999 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+# Copyright (C) 1999 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 #\r
 # This software is licensed as described in the file COPYING, which\r
 # you should have received as part of this distribution. The terms\r
@@ -18,6 +18,8 @@
 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 # KIND, either express or implied.\r
 #\r
+# SPDX-License-Identifier: curl\r
+#\r
 #***************************************************************************\r
 \r
 ###########################################################################\r
@@ -164,6 +166,26 @@ NGHTTP2_LIBS     = nghttp2.lib
 !ENDIF\r
 !ENDIF\r
 \r
+!IFDEF MSH3_PATH\r
+MSH3_INC_DIR     = $(MSH3_PATH)\include\r
+MSH3_LIB_DIR     = $(MSH3_PATH)\lib\r
+MSH3_LFLAGS      = $(MSH3_LFLAGS) "/LIBPATH:$(MSH3_LIB_DIR)"\r
+!ELSE\r
+MSH3_INC_DIR     = $(DEVEL_INCLUDE)\r
+MSH3_LIB_DIR     = $(DEVEL_LIB)\r
+!ENDIF\r
+\r
+!IF "$(WITH_MSH3)"=="dll"\r
+MSH3_CFLAGS      = /DUSE_MSH3 /I"$(MSH3_INC_DIR)"\r
+MSH3_LIBS        = msh3.lib\r
+!ELSEIF "$(WITH_MSH3)"=="static"\r
+MSH3_CFLAGS      = /DUSE_MSH3 /DMSH3_STATICLIB /I"$(MSH3_INC_DIR)"\r
+!IF EXISTS("$(NGHTTP2_LIB_DIR)\msh3_static.lib")\r
+MSH3_LIBS        = msh3_static.lib\r
+!ELSE\r
+MSH3_LIBS        = msh3.lib\r
+!ENDIF\r
+!ENDIF\r
 \r
 !IFDEF MBEDTLS_PATH\r
 MBEDTLS_INC_DIR  = $(MBEDTLS_PATH)\include\r
@@ -253,7 +275,7 @@ ZLIB        = static
 !ENDIF\r
 \r
 !IFDEF USE_ZLIB\r
-ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"\r
+ZLIB_CFLAGS = /DHAVE_LIBZ $(ADDITIONAL_ZLIB_CFLAGS) /I"$(ZLIB_INC_DIR)"\r
 !ENDIF\r
 \r
 \r
@@ -283,8 +305,29 @@ SSH2        = static
 !ENDIF\r
 \r
 !IFDEF USE_SSH2\r
-SSH2_CFLAGS = /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /DUSE_LIBSSH2\r
-SSH2_CFLAGS = $(SSH2_CFLAGS) /I$(SSH2_INC_DIR)\r
+SSH2_CFLAGS = /DUSE_LIBSSH2\r
+SSH2_CFLAGS = $(SSH2_CFLAGS) /I"$(SSH2_INC_DIR)"\r
+!ENDIF\r
+\r
+\r
+!IFDEF SSH_PATH\r
+SSH_INC_DIR= $(SSH_PATH)\include\r
+SSH_LIB_DIR= $(SSH_PATH)\lib\r
+SSH_LFLAGS = $(SSH_LFLAGS) "/LIBPATH:$(SSH_LIB_DIR)"\r
+!ELSE\r
+SSH_LIB_DIR= $(DEVEL_LIB)\r
+SSH_INC_DIR= $(DEVEL_INCLUDE)\r
+!ENDIF\r
+\r
+!IF "$(WITH_SSH)"=="dll" || "$(WITH_SSH)"=="static"\r
+SSH_LIBS   = ssh.lib\r
+USE_SSH    = true\r
+SSH        = $(WITH_SSH)\r
+!ENDIF\r
+\r
+!IFDEF USE_SSH\r
+SSH_CFLAGS = /DUSE_LIBSSH\r
+SSH_CFLAGS = $(SSH_CFLAGS) /I"$(SSH_INC_DIR)"\r
 !ENDIF\r
 \r
 \r
@@ -449,6 +492,11 @@ CFLAGS = $(CFLAGS) $(SSH2_CFLAGS)
 LFLAGS = $(LFLAGS) $(SSH2_LFLAGS) $(SSH2_LIBS)\r
 !ENDIF\r
 \r
+!IF "$(USE_SSH)"=="true"\r
+CFLAGS = $(CFLAGS) $(SSH_CFLAGS)\r
+LFLAGS = $(LFLAGS) $(SSH_LFLAGS) $(SSH_LIBS)\r
+!ENDIF\r
+\r
 !IF "$(USE_IDN)"=="true"\r
 CFLAGS = $(CFLAGS) $(IDN_CFLAGS)\r
 !ENDIF\r
@@ -466,6 +514,11 @@ CFLAGS = $(CFLAGS) $(NGHTTP2_CFLAGS)
 LFLAGS = $(LFLAGS) $(NGHTTP2_LFLAGS) $(NGHTTP2_LIBS)\r
 !ENDIF\r
 \r
+!IF "$(USE_MSH3)"=="true"\r
+CFLAGS = $(CFLAGS) $(MSH3_CFLAGS)\r
+LFLAGS = $(LFLAGS) $(MSH3_LFLAGS) $(MSH3_LIBS)\r
+!ENDIF\r
+\r
 !IF "$(GEN_PDB)"=="true"\r
 CFLAGS = $(CFLAGS) $(CFLAGS_PDB) /Fd"$(LIB_DIROBJ)\$(PDB)"\r
 LFLAGS = $(LFLAGS) $(LFLAGS_PDB)\r
@@ -519,8 +572,10 @@ package: $(TARGET)
 $(TARGET): $(LIB_OBJS) $(LIB_DIROBJ) $(DIRDIST)\r
        @echo Using SSL: $(USE_SSL)\r
        @echo Using NGHTTP2: $(USE_NGHTTP2)\r
+       @echo Using MSH3: $(USE_MSH3)\r
        @echo Using c-ares: $(USE_CARES)\r
        @echo Using SSH2: $(USE_SSH2)\r
+       @echo Using SSH: $(USE_SSH)\r
        @echo Using ZLIB: $(USE_ZLIB)\r
        @echo Using IDN:  $(USE_IDN)\r
        @echo Using IPv6: $(USE_IPV6)\r
@@ -566,20 +621,20 @@ $(CURL_DIROBJ):
 \r
 .SUFFIXES: .c .obj .res\r
 \r
-{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj:\r
-       $(CURL_CC) $(CFLAGS) /Fo"$@"  $<\r
+{$(LIBCURL_SRC_DIR)\}.c{$(LIB_DIROBJ)\}.obj::\r
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\\"  $<\r
 \r
-{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj:\r
-       $(CURL_CC) $(CFLAGS) /Fo"$@"  $<\r
+{$(LIBCURL_SRC_DIR)\vauth\}.c{$(LIB_DIROBJ)\vauth\}.obj::\r
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vauth\\"  $<\r
 \r
-{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj:\r
-       $(CURL_CC) $(CFLAGS) /Fo"$@"  $<\r
+{$(LIBCURL_SRC_DIR)\vtls\}.c{$(LIB_DIROBJ)\vtls\}.obj::\r
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vtls\\"  $<\r
 \r
-{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj:\r
-       $(CURL_CC) $(CFLAGS) /Fo"$@"  $<\r
+{$(LIBCURL_SRC_DIR)\vssh\}.c{$(LIB_DIROBJ)\vssh\}.obj::\r
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vssh\\"  $<\r
 \r
-{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj:\r
-       $(CURL_CC) $(CFLAGS) /Fo"$@"  $<\r
+{$(LIBCURL_SRC_DIR)\vquic\}.c{$(LIB_DIROBJ)\vquic\}.obj::\r
+       $(CURL_CC) $(CFLAGS) /Fo"$(LIB_DIROBJ)\vquic\\"  $<\r
 \r
 $(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc\r
        $(RC) $(RC_FLAGS)\r
@@ -607,7 +662,6 @@ CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \
  $(CURL_DIROBJ)\nonblock.obj \\r
  $(CURL_DIROBJ)\strtoofft.obj \\r
  $(CURL_DIROBJ)\warnless.obj \\r
- $(CURL_DIROBJ)\curl_ctype.obj \\r
  $(CURL_DIROBJ)\curl_multibyte.obj \\r
  $(CURL_DIROBJ)\version_win32.obj \\r
  $(CURL_DIROBJ)\dynbuf.obj\r
@@ -616,8 +670,8 @@ $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)
        $(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)\r
        $(MANIFESTTOOL)\r
 \r
-{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj:\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@"  $<\r
+{$(CURL_SRC_DIR)\}.c{$(CURL_DIROBJ)\}.obj::\r
+       $(CURL_CC) $(CURL_CFLAGS) /Fo"$(CURL_DIROBJ)\\"  $<\r
 \r
 $(CURL_DIROBJ)\tool_hugehelp.obj: $(CURL_SRC_DIR)\tool_hugehelp.c\r
        $(CURL_CC) $(CURL_CFLAGS) /Zm200 /Fo"$@" $(CURL_SRC_DIR)\tool_hugehelp.c\r
@@ -627,8 +681,6 @@ $(CURL_DIROBJ)\strtoofft.obj: ../lib/strtoofft.c
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c\r
 $(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c\r
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c\r
-$(CURL_DIROBJ)\curl_ctype.obj: ../lib/curl_ctype.c\r
-       $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_ctype.c\r
 $(CURL_DIROBJ)\curl_multibyte.obj: ../lib/curl_multibyte.c\r
        $(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_multibyte.c\r
 $(CURL_DIROBJ)\version_win32.obj: ../lib/version_win32.c\r
index 3684a382deb52e9f6c83e91107a996e00c4ce02c..fe35a21459b3d30185f274185f018e0ec58f9415 100644 (file)
@@ -1,3 +1,9 @@
+<!--\r
+Copyright (C) 2000 - 2022 Daniel Stenberg, <daniel@haxx.se>, et al.\r
+\r
+SPDX-License-Identifier: curl\r
+-->\r
+\r
 # Building curl with Visual C++\r
 \r
  This document describes how to compile, build and install curl and libcurl\r
@@ -15,8 +21,8 @@
 \r
 ## Prerequisites\r
 \r
- If you wish to support zlib, openssl, c-ares, ssh2, you will have to download\r
- them separately and copy them to the deps directory as shown below:\r
+ If you wish to support zlib, OpenSSL, c-ares, ssh2, you will have to download\r
+ them separately and copy them to the `deps` directory as shown below:\r
 \r
     somedirectory\\r
      |_curl-src\r
@@ -27,8 +33,8 @@
        |_ include\r
        |_ bin\r
 \r
- It is also possible to create the deps directory in some other random places\r
- and tell the Makefile its location using the WITH_DEVEL option.\r
+ It is also possible to create the `deps` directory in some other random places\r
+ and tell the `Makefile` its location using the `WITH_DEVEL` option.\r
 \r
 ## Building straight from git\r
 \r
@@ -53,10 +59,10 @@ Open a Visual Studio Command prompt:
 \r
  Using the **'VS [version] [platform] [type] Command Prompt'** menu entry:\r
  where [version] is the Visual Studio version, [platform] is e.g. x64 and\r
- [type] Native of Cross platform build.  This type of command prompt may not\r
+ [type] Native of Cross platform build. This type of command prompt may not\r
  exist in all Visual Studio versions.\r
 \r
- See also: [Set the Path and Environment Variables for Command-Line Builds](https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx)\r
+ See also: [Set the Path and Environment Variables for Command-Line Builds](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line)\r
 \r
 ## Build in the console\r
 \r
@@ -75,14 +81,14 @@ where `<options>` is one or many of:
 \r
  - `VC=<num>`                    - VC version. 6 or later.\r
  - `WITH_DEVEL=<path>`           - Paths for the development files (SSL, zlib, etc.)\r
-                                   Defaults to sibbling directory deps: ../deps\r
-                                   Libraries can be fetched at https://windows.php.net/downloads/php-sdk/deps/\r
-                                   Uncompress them into the deps folder.\r
+                                   Defaults to sibling directory: `../deps`\r
  - `WITH_SSL=<dll/static>`       - Enable OpenSSL support, DLL or static\r
  - `WITH_NGHTTP2=<dll/static>`   - Enable HTTP/2 support, DLL or static\r
+ - `WITH_MSH3=<dll/static>`      - Enable (experimental) HTTP/3 support, DLL or static\r
  - `WITH_MBEDTLS=<dll/static>`   - Enable mbedTLS support, DLL or static\r
  - `WITH_CARES=<dll/static>`     - Enable c-ares support, DLL or static\r
  - `WITH_ZLIB=<dll/static>`      - Enable zlib support, DLL or static\r
+ - `WITH_SSH=<dll/static>`       - Enable libSSH support, DLL or static\r
  - `WITH_SSH2=<dll/static>`      - Enable libSSH2 support, DLL or static\r
  - `WITH_PREFIX=<dir>`           - Where to install the build\r
  - `ENABLE_SSPI=<yes/no>`        - Enable SSPI support, defaults to yes\r
@@ -102,27 +108,87 @@ where `<options>` is one or many of:
  - `CARES_PATH=<path>`           - Custom path for c-ares\r
  - `MBEDTLS_PATH=<path>`         - Custom path for mbedTLS\r
  - `NGHTTP2_PATH=<path>`         - Custom path for nghttp2\r
+ - `MSH3_PATH=<path>`            - Custom path for msh3\r
  - `SSH2_PATH=<path>`            - Custom path for libSSH2\r
  - `SSL_PATH=<path>`             - Custom path for OpenSSL\r
  - `ZLIB_PATH=<path>`            - Custom path for zlib\r
 \r
-## Static linking of Microsoft's C RunTime (CRT):\r
+## Static linking of Microsoft's C runtime (CRT):\r
 \r
  If you are using mode=static nmake will create and link to the static build\r
  of libcurl but *not* the static CRT. If you must you can force nmake to link\r
- in the static CRT by passing RTLIBCFG=static. Typically you shouldn't use\r
- that option, and nmake will default to the DLL CRT. RTLIBCFG is rarely used\r
- and therefore rarely tested. When passing RTLIBCFG for a configuration that\r
+ in the static CRT by passing `RTLIBCFG=static`. Typically you shouldn't use\r
+ that option, and nmake will default to the DLL CRT. `RTLIBCFG` is rarely used\r
+ and therefore rarely tested. When passing `RTLIBCFG` for a configuration that\r
  was already built but not with that option, or if the option was specified\r
  differently, you must destroy the build directory containing the\r
  configuration so that nmake can build it from scratch.\r
 \r
+ This option is not recommended unless you have enough development experience\r
+ to know how to match the runtime library for linking (that is, the CRT). If\r
+ `RTLIBCFG=static` then release builds use `/MT` and debug builds use `/MTd`.\r
+\r
+## Building your own application with libcurl (Visual Studio example)\r
+\r
+ When you build curl and libcurl, nmake will show the relative path where the\r
+ output directory is. The output directory is named from the options nmake used\r
+ when building. You may also see temp directories of the same name but with\r
+ suffixes -obj-curl and -obj-lib.\r
+\r
+ For example let's say you've built curl.exe and libcurl.dll from the Visual\r
+ Studio 2010 x64 Win64 Command Prompt:\r
+\r
+    nmake /f Makefile.vc mode=dll VC=10\r
+\r
+ The output directory will have a name similar to\r
+ `..\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel`.\r
+\r
+ The output directory contains subdirectories bin, lib and include. Those are\r
+ the directories to set in your Visual Studio project. You can either copy the\r
+ output directory to your project or leave it in place. Following the example,\r
+ let's assume you leave it in place and your curl top source directory is\r
+ `C:\curl-7.82.0`. You would set these options for configurations using the\r
+ x64 platform:\r
+\r
+~~~\r
+ - Configuration Properties > Debugging > Environment\r
+    PATH=C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\bin;%PATH%\r
+\r
+ - C/C++ > General > Additional Include Directories\r
+    C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\include;\r
+\r
+ - Linker > General > Additional Library Directories\r
+    C:\curl-7.82.0\builds\libcurl-vc10-x64-release-dll-ipv6-sspi-schannel\lib;\r
+\r
+ - Linker > Input > Additional Dependencies\r
+    libcurl.lib;\r
+~~~\r
+\r
+ For configurations using the x86 platform (aka Win32 platform) you would\r
+ need to make a separate x86 build of libcurl.\r
+\r
+ If you build libcurl static (`mode=static`) or debug (`DEBUG=yes`) then the\r
+ library name will vary and separate builds may be necessary for separate\r
+ configurations of your project within the same platform. This is discussed in\r
+ the next section.\r
+\r
 ## Building your own application with a static libcurl\r
 \r
  When building an application that uses the static libcurl library on Windows,\r
- you must define CURL_STATICLIB. Otherwise the linker will look for dynamic\r
+ you must define `CURL_STATICLIB`. Otherwise the linker will look for dynamic\r
  import symbols.\r
 \r
+ The static library name has an `_a` suffix in the basename and the debug\r
+ library name has a `_debug` suffix in the basename. For example,\r
+ `libcurl_a_debug.lib` is a static debug build of libcurl.\r
+\r
+ You may need a separate build of libcurl for each VC configuration combination\r
+ (for example: Debug|Win32, Debug|x64, Release|Win32, Release|x64).\r
+\r
+ You must specify any additional dependencies needed by your build of static\r
+ libcurl (for example:\r
+ `advapi32.lib;crypt32.lib;normaliz.lib;ws2_32.lib;wldap32.lib`).\r
+\r
 ## Legacy Windows and SSL\r
 \r
  When you build curl using the build files in this directory the default SSL\r
index 77f30bc3c4b73a19dc8a2fc3b973e0e65f18dc24..f8fe5625f9f456c8ea41dda27394d55f5c75f9d3 100755 (executable)
@@ -6,7 +6,7 @@ rem *                             / __| | | | |_) | |
 rem *                            | (__| |_| |  _ <| |___\r
 rem *                             \___|\___/|_| \_\_____|\r
 rem *\r
-rem * Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+rem * Copyright (C) 2011 - 2022, Daniel Stenberg, <daniel@haxx.se>, et al.\r
 rem *\r
 rem * This software is licensed as described in the file COPYING, which\r
 rem * you should have received as part of this distribution. The terms\r
@@ -18,6 +18,8 @@ rem * furnished to do so, under the terms of the COPYING file.
 rem *\r
 rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
 rem * KIND, either express or implied.\r
+rem * \r
+rem * SPDX-License-Identifier: curl\r
 rem *\r
 rem ***************************************************************************\r
 \r